From 5e92dac4ac94d55c57002cd9aab80ad86234725d Mon Sep 17 00:00:00 2001 From: devon-mar Date: Thu, 16 May 2024 20:58:12 -0700 Subject: [PATCH 01/67] Fix pagination when `pagination.per_page` is `""` --- netbox/utilities/paginator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netbox/utilities/paginator.py b/netbox/utilities/paginator.py index ebf7a6257..1db815446 100644 --- a/netbox/utilities/paginator.py +++ b/netbox/utilities/paginator.py @@ -87,7 +87,7 @@ def get_paginate_count(request): pass if request.user.is_authenticated: - per_page = request.user.config.get('pagination.per_page', config.PAGINATE_COUNT) + per_page = request.user.config.get('pagination.per_page') or config.PAGINATE_COUNT return _max_allowed(per_page) return _max_allowed(config.PAGINATE_COUNT) From 233b9029e1c4d514ba07181687614d50bc773ee9 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 20 May 2024 11:36:35 -0400 Subject: [PATCH 02/67] Remove start date restriction from stale check for incomplete issues --- .github/workflows/close-incomplete-issues.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/close-incomplete-issues.yml b/.github/workflows/close-incomplete-issues.yml index 890970783..4d31d735e 100644 --- a/.github/workflows/close-incomplete-issues.yml +++ b/.github/workflows/close-incomplete-issues.yml @@ -30,4 +30,3 @@ jobs: This is a reminder that additional information is needed in order to further triage this issue. If the requested details are not provided, the issue will soon be closed automatically. - start-date: 2024-05-14 From 17799df72efc38c6856a6c0c4c1d48c3d13eb394 Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 20 May 2024 14:48:42 -0700 Subject: [PATCH 03/67] 13764 Add contacts to IP views --- netbox/ipam/models/ip.py | 9 +++++---- netbox/ipam/views.py | 21 +++++++++++++++++++++ 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/netbox/ipam/models/ip.py b/netbox/ipam/models/ip.py index 2ae380d63..0b8e3a8df 100644 --- a/netbox/ipam/models/ip.py +++ b/netbox/ipam/models/ip.py @@ -18,6 +18,7 @@ from ipam.querysets import PrefixQuerySet from ipam.validators import DNSValidator from netbox.config import get_config from netbox.models import OrganizationalModel, PrimaryModel +from netbox.models.features import ContactsMixin __all__ = ( 'Aggregate', @@ -74,7 +75,7 @@ class RIR(OrganizationalModel): return reverse('ipam:rir', args=[self.pk]) -class Aggregate(GetAvailablePrefixesMixin, PrimaryModel): +class Aggregate(ContactsMixin, GetAvailablePrefixesMixin, PrimaryModel): """ An aggregate exists at the root level of the IP address space hierarchy in NetBox. Aggregates are used to organize the hierarchy and track the overall utilization of available address space. Each Aggregate is assigned to a RIR. @@ -206,7 +207,7 @@ class Role(OrganizationalModel): return reverse('ipam:role', args=[self.pk]) -class Prefix(GetAvailablePrefixesMixin, PrimaryModel): +class Prefix(ContactsMixin, GetAvailablePrefixesMixin, PrimaryModel): """ A Prefix represents an IPv4 or IPv6 network, including mask length. Prefixes can optionally be assigned to Sites and VRFs. A Prefix must be assigned a status and may optionally be assigned a used-define Role. A Prefix can also be @@ -486,7 +487,7 @@ class Prefix(GetAvailablePrefixesMixin, PrimaryModel): return min(utilization, 100) -class IPRange(PrimaryModel): +class IPRange(ContactsMixin, PrimaryModel): """ A range of IP addresses, defined by start and end addresses. """ @@ -695,7 +696,7 @@ class IPRange(PrimaryModel): return min(float(child_count) / self.size * 100, 100) -class IPAddress(PrimaryModel): +class IPAddress(ContactsMixin, PrimaryModel): """ An IPAddress represents an individual IPv4 or IPv6 address and its mask. The mask length should match what is configured in the real world. (Typically, only loopback interfaces are configured with /32 or /128 masks.) Like diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py index 2c00c318b..cab9058d8 100644 --- a/netbox/ipam/views.py +++ b/netbox/ipam/views.py @@ -9,6 +9,7 @@ from circuits.models import Provider from dcim.filtersets import InterfaceFilterSet from dcim.models import Interface, Site from netbox.views import generic +from tenancy.views import ObjectContactsView from utilities.query import count_related from utilities.tables import get_table_ordering from utilities.views import ViewTab, register_model_view @@ -405,6 +406,11 @@ class AggregateBulkDeleteView(generic.BulkDeleteView): table = tables.AggregateTable +@register_model_view(Aggregate, 'contacts') +class AggregateContactsView(ObjectContactsView): + queryset = Aggregate.objects.all() + + # # Prefix/VLAN roles # @@ -643,6 +649,11 @@ class PrefixBulkDeleteView(generic.BulkDeleteView): table = tables.PrefixTable +@register_model_view(Prefix, 'contacts') +class PrefixContactsView(ObjectContactsView): + queryset = Prefix.objects.all() + + # # IP Ranges # @@ -726,6 +737,11 @@ class IPRangeBulkDeleteView(generic.BulkDeleteView): table = tables.IPRangeTable +@register_model_view(IPRange, 'contacts') +class IPRangeContactsView(ObjectContactsView): + queryset = IPRange.objects.all() + + # # IP addresses # @@ -893,6 +909,11 @@ class IPAddressRelatedIPsView(generic.ObjectChildrenView): return parent.get_related_ips().restrict(request.user, 'view') +@register_model_view(IPAddress, 'contacts') +class IPAddressContactsView(ObjectContactsView): + queryset = IPAddress.objects.all() + + # # VLAN groups # From 85ca750ad72cb3bce5af0cb07a958804d21ae7cb Mon Sep 17 00:00:00 2001 From: Julio-Oliveira-Encora Date: Mon, 20 May 2024 11:16:14 -0300 Subject: [PATCH 04/67] Changed "clean_extra_choices" in "CustomFieldChoiceSetForm" to strip the space for value and label. --- netbox/extras/forms/model_forms.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netbox/extras/forms/model_forms.py b/netbox/extras/forms/model_forms.py index 1d7b69ac3..ebd6e6c08 100644 --- a/netbox/extras/forms/model_forms.py +++ b/netbox/extras/forms/model_forms.py @@ -122,7 +122,7 @@ class CustomFieldChoiceSetForm(forms.ModelForm): label = label.replace('\\:', ':') except ValueError: value, label = line, line - data.append((value, label)) + data.append((value.strip(), label.strip())) return data From b0520b9e60be66ebceed043271fdab4cf91f17a3 Mon Sep 17 00:00:00 2001 From: Julio Oliveira at Encora <149191228+Julio-Oliveira-Encora@users.noreply.github.com> Date: Tue, 21 May 2024 11:02:09 -0300 Subject: [PATCH 05/67] Fixes #15603 - Added 5G to Cellular choices in dcim/choices.py. (#15677) * Added 5G to Cellular choices in dcim/choices.py. * Added 4G for Cellular choices. --- netbox/dcim/choices.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/netbox/dcim/choices.py b/netbox/dcim/choices.py index 7f79829e2..c8ef33a5d 100644 --- a/netbox/dcim/choices.py +++ b/netbox/dcim/choices.py @@ -892,6 +892,8 @@ class InterfaceTypeChoices(ChoiceSet): TYPE_GSM = 'gsm' TYPE_CDMA = 'cdma' TYPE_LTE = 'lte' + TYPE_4G = '4g' + TYPE_5G = '5g' # SONET TYPE_SONET_OC3 = 'sonet-oc3' @@ -1060,6 +1062,8 @@ class InterfaceTypeChoices(ChoiceSet): (TYPE_GSM, 'GSM'), (TYPE_CDMA, 'CDMA'), (TYPE_LTE, 'LTE'), + (TYPE_4G, '4G'), + (TYPE_5G, '5G'), ) ), ( From ade6d2e11b12514920c680bda7695f9fc7cd14b1 Mon Sep 17 00:00:00 2001 From: Julio Oliveira at Encora <149191228+Julio-Oliveira-Encora@users.noreply.github.com> Date: Tue, 21 May 2024 11:07:58 -0300 Subject: [PATCH 06/67] 16117 - Allow filtering by VLAN in Prefixes (#16204) * Updated clean method on DynamicModelMultipleChoiceField to return the name. * Updated VLAN section name --- netbox/ipam/forms/filtersets.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/netbox/ipam/forms/filtersets.py b/netbox/ipam/forms/filtersets.py index 807205aef..80fb04226 100644 --- a/netbox/ipam/forms/filtersets.py +++ b/netbox/ipam/forms/filtersets.py @@ -168,6 +168,7 @@ class PrefixFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm): 'within_include', 'family', 'status', 'role_id', 'mask_length', 'is_pool', 'mark_utilized', name=_('Addressing') ), + FieldSet('vlan_id', name=_('VLAN Assignment')), FieldSet('vrf_id', 'present_in_vrf_id', name=_('VRF')), FieldSet('region_id', 'site_group_id', 'site_id', name=_('Location')), FieldSet('tenant_group_id', 'tenant_id', name=_('Tenant')), @@ -249,6 +250,12 @@ class PrefixFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm): choices=BOOLEAN_WITH_BLANK_CHOICES ) ) + vlan_id = DynamicModelMultipleChoiceField( + queryset=VLAN.objects.all(), + required=False, + label=_('VLAN'), + ) + tag = TagFilterField(model) From 88461f9d7ab5b161c5d2fee83bd72e2c1905a440 Mon Sep 17 00:00:00 2001 From: Arthur Hanson Date: Tue, 21 May 2024 07:08:54 -0700 Subject: [PATCH 07/67] 14250 add BPON to interface types (#16208) * 14250 add BPON to interface types * 14250 remove huwai specific from PON * Reorder choices & fix typo --------- Co-authored-by: Jeremy Stretch --- netbox/dcim/choices.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/netbox/dcim/choices.py b/netbox/dcim/choices.py index c8ef33a5d..e8a7194fc 100644 --- a/netbox/dcim/choices.py +++ b/netbox/dcim/choices.py @@ -941,12 +941,15 @@ class InterfaceTypeChoices(ChoiceSet): TYPE_DOCSIS = 'docsis' # PON + TYPE_BPON = 'bpon' + TYPE_EPON = 'epon' + TYPE_10G_EPON = '10g-epon' TYPE_GPON = 'gpon' TYPE_XG_PON = 'xg-pon' TYPE_XGS_PON = 'xgs-pon' TYPE_NG_PON2 = 'ng-pon2' - TYPE_EPON = 'epon' - TYPE_10G_EPON = '10g-epon' + TYPE_25G_PON = '25g-pon' + TYPE_50G_PON = '50g-pon' # Stacking TYPE_STACKWISE = 'cisco-stackwise' @@ -1132,12 +1135,15 @@ class InterfaceTypeChoices(ChoiceSet): ( 'PON', ( - (TYPE_GPON, 'GPON (2.5 Gbps / 1.25 Gps)'), + (TYPE_BPON, 'BPON (622 Mbps / 155 Mbps)'), + (TYPE_EPON, 'EPON (1 Gbps)'), + (TYPE_10G_EPON, '10G-EPON (10 Gbps)'), + (TYPE_GPON, 'GPON (2.5 Gbps / 1.25 Gbps)'), (TYPE_XG_PON, 'XG-PON (10 Gbps / 2.5 Gbps)'), (TYPE_XGS_PON, 'XGS-PON (10 Gbps)'), (TYPE_NG_PON2, 'NG-PON2 (TWDM-PON) (4x10 Gbps)'), - (TYPE_EPON, 'EPON (1 Gbps)'), - (TYPE_10G_EPON, '10G-EPON (10 Gbps)'), + (TYPE_25G_PON, '25G-PON (25 Gbps)'), + (TYPE_50G_PON, '50G-PON (50 Gbps)'), ) ), ( From 44771d1221f617cc8175397bf75bd0c4c7797f9b Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Tue, 21 May 2024 08:33:07 -0400 Subject: [PATCH 08/67] Fixes #16139: Ensure input buttons use standard font family --- netbox/project-static/dist/netbox.css | Bin 551659 -> 551636 bytes netbox/project-static/styles/_variables.scss | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/netbox/project-static/dist/netbox.css b/netbox/project-static/dist/netbox.css index 10e9f7d59b62e7f14bb83b2c7b51946f9fc24cf8..a1179a319c22f53f751e9e2ecc1ed918e85e8585 100644 GIT binary patch delta 109 zcmaETRq@JI#SN=@IFvl|N>YoItfxDaGK)@@=iNT})hCt7ma@Flf3q?QHnZ@xv+yx) zXW?U76Fl9flv!Z%uTMPN*$bGs7`GotVshk#3$_CVftVSHS%8=oh}nP&*`NFZ0Dl1` A?f?J) delta 184 zcmca|Rq^#z#SN=@;&c-W3UX3)iz|yuQgd|_oN_YrvV9YigTZ{a{Jat!h2X?I1-GKa zyyVQ{ynKpS7 z&slaQ&%Bb93KrY`KA(x3ak^|86UX-1Nlcc!5aD*9Fc32X QF$)m00x=s Date: Tue, 21 May 2024 10:52:23 -0400 Subject: [PATCH 09/67] Define separate stale & close timers for PRs --- .github/workflows/close-stale-issues.yml | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/.github/workflows/close-stale-issues.yml b/.github/workflows/close-stale-issues.yml index 7a29c8f08..1ac1ea687 100644 --- a/.github/workflows/close-stale-issues.yml +++ b/.github/workflows/close-stale-issues.yml @@ -17,18 +17,19 @@ jobs: steps: - uses: actions/stale@v9 with: + # General parameters + operations-per-run: 100 + remove-stale-when-updated: false + + # Issue parameters close-issue-message: > This issue has been automatically closed due to lack of activity. In an effort to reduce noise, please do not comment any further. Note that the core maintainers may elect to reopen this issue at a later date if deemed necessary. - close-pr-message: > - This PR has been automatically closed due to lack of activity. - days-before-stale: 90 - days-before-close: 30 + days-before-issue-stale: 90 + days-before-issue-close: 30 exempt-issue-labels: 'status: accepted,status: blocked,status: needs milestone' - operations-per-run: 100 - remove-stale-when-updated: false stale-issue-label: 'pending closure' stale-issue-message: > This issue has been automatically marked as stale because it has not had @@ -38,6 +39,12 @@ jobs: process by "bumping" the issue; doing so will result in its immediate closure and you may be barred from participating in any future discussions. Please see our [contributing guide](https://github.com/netbox-community/netbox/blob/develop/CONTRIBUTING.md). + + # Pull request parameters + close-pr-message: > + This PR has been automatically closed due to lack of activity. + days-before-pr-stale: 15 + days-before-pr-close: 15 stale-pr-label: 'pending closure' stale-pr-message: > This PR has been automatically marked as stale because it has not had From 09c122871272f2bee9c8c67abd0c6caaf0fcb022 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Tue, 21 May 2024 08:17:12 -0400 Subject: [PATCH 10/67] Fixes #16216: Fix validation of JournalEntry when referenced by a custom field --- netbox/extras/api/serializers_/journaling.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/netbox/extras/api/serializers_/journaling.py b/netbox/extras/api/serializers_/journaling.py index 46ab0477b..1a44e7e2e 100644 --- a/netbox/extras/api/serializers_/journaling.py +++ b/netbox/extras/api/serializers_/journaling.py @@ -43,7 +43,7 @@ class JournalEntrySerializer(NetBoxModelSerializer): def validate(self, data): # Validate that the parent object exists - if 'assigned_object_type' in data and 'assigned_object_id' in data: + if not self.nested and 'assigned_object_type' in data and 'assigned_object_id' in data: try: data['assigned_object_type'].get_object_for_this_type(id=data['assigned_object_id']) except ObjectDoesNotExist: @@ -51,10 +51,7 @@ class JournalEntrySerializer(NetBoxModelSerializer): f"Invalid assigned_object: {data['assigned_object_type']} ID {data['assigned_object_id']}" ) - # Enforce model validation - super().validate(data) - - return data + return super().validate(data) @extend_schema_field(serializers.JSONField(allow_null=True)) def get_assigned_object(self, instance): From 902c61bf47ca553eea8c98d63e7ae491318c3dfe Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Tue, 21 May 2024 15:22:40 -0400 Subject: [PATCH 11/67] Rename environment variable controlling public docs build --- docs/_theme/main.html | 4 ++-- mkdocs.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/_theme/main.html b/docs/_theme/main.html index 4dfc4e14e..99907bf42 100644 --- a/docs/_theme/main.html +++ b/docs/_theme/main.html @@ -2,8 +2,8 @@ {% block site_meta %} {{ super() }} - {# Disable search indexing unless we're building for ReadTheDocs #} - {% if not config.extra.readthedocs %} + {# Disable search indexing unless we're building for public consumption #} + {% if not config.extra.build_public %} {% endif %} {% endblock %} diff --git a/mkdocs.yml b/mkdocs.yml index 6f7ea7045..cf1e66cea 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -42,7 +42,7 @@ plugins: show_root_toc_entry: false show_source: false extra: - readthedocs: !ENV READTHEDOCS + build_public: !ENV BUILD_PUBLIC social: - icon: fontawesome/brands/github link: https://github.com/netbox-community/netbox From a3b34c7a788b48e0835112bff78e861042acf260 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Tue, 21 May 2024 16:21:56 -0400 Subject: [PATCH 12/67] Fixes #16228: Fix permissions enforcement for GraphQL queries of users & groups --- netbox/users/graphql/types.py | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/netbox/users/graphql/types.py b/netbox/users/graphql/types.py index a3dc38660..a638c558f 100644 --- a/netbox/users/graphql/types.py +++ b/netbox/users/graphql/types.py @@ -1,13 +1,10 @@ from typing import List -import strawberry import strawberry_django from django.contrib.auth import get_user_model -from django.contrib.auth.models import Group -from strawberry import auto -from users import filtersets + +from netbox.graphql.types import BaseObjectType from users.models import Group -from utilities.querysets import RestrictedQuerySet from .filters import * __all__ = ( @@ -21,17 +18,16 @@ __all__ = ( fields=['id', 'name'], filters=GroupFilter ) -class GroupType: +class GroupType(BaseObjectType): pass @strawberry_django.type( get_user_model(), fields=[ - 'id', 'username', 'password', 'first_name', 'last_name', 'email', 'is_staff', - 'is_active', 'date_joined', 'groups', + 'id', 'username', 'first_name', 'last_name', 'email', 'is_staff', 'is_active', 'date_joined', 'groups', ], filters=UserFilter ) -class UserType: +class UserType(BaseObjectType): groups: List[GroupType] From 5b83d7040fe1a3255dfd0608d0314125e246754f Mon Sep 17 00:00:00 2001 From: Arthur Hanson Date: Tue, 21 May 2024 13:40:35 -0700 Subject: [PATCH 13/67] 14653 Add Inventory Item column to all Device components tables (#16210) * 14653 Add Inventory Item column to all Device components tables * 14653 add inventory_items to base class --- netbox/dcim/tables/devices.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/netbox/dcim/tables/devices.py b/netbox/dcim/tables/devices.py index 169631506..4925fb517 100644 --- a/netbox/dcim/tables/devices.py +++ b/netbox/dcim/tables/devices.py @@ -313,6 +313,10 @@ class ModularDeviceComponentTable(DeviceComponentTable): verbose_name=_('Module'), linkify=True ) + inventory_items = columns.ManyToManyColumn( + linkify_item=True, + verbose_name=_('Inventory Items'), + ) class CableTerminationTable(NetBoxTable): @@ -366,7 +370,7 @@ class ConsolePortTable(ModularDeviceComponentTable, PathEndpointTable): model = models.ConsolePort fields = ( 'pk', 'id', 'name', 'device', 'module_bay', 'module', 'label', 'type', 'speed', 'description', - 'mark_connected', 'cable', 'cable_color', 'link_peer', 'connection', 'tags', 'created', 'last_updated', + 'mark_connected', 'cable', 'cable_color', 'link_peer', 'connection', 'inventory_items', 'tags', 'created', 'last_updated', ) default_columns = ('pk', 'name', 'device', 'label', 'type', 'speed', 'description') @@ -410,7 +414,7 @@ class ConsoleServerPortTable(ModularDeviceComponentTable, PathEndpointTable): model = models.ConsoleServerPort fields = ( 'pk', 'id', 'name', 'device', 'module_bay', 'module', 'label', 'type', 'speed', 'description', - 'mark_connected', 'cable', 'cable_color', 'link_peer', 'connection', 'tags', 'created', 'last_updated', + 'mark_connected', 'cable', 'cable_color', 'link_peer', 'connection', 'inventory_items', 'tags', 'created', 'last_updated', ) default_columns = ('pk', 'name', 'device', 'label', 'type', 'speed', 'description') @@ -461,8 +465,8 @@ class PowerPortTable(ModularDeviceComponentTable, PathEndpointTable): model = models.PowerPort fields = ( 'pk', 'id', 'name', 'device', 'module_bay', 'module', 'label', 'type', 'description', 'mark_connected', - 'maximum_draw', 'allocated_draw', 'cable', 'cable_color', 'link_peer', 'connection', 'tags', 'created', - 'last_updated', + 'maximum_draw', 'allocated_draw', 'cable', 'cable_color', 'link_peer', 'connection', 'inventory_items', + 'tags', 'created', 'last_updated', ) default_columns = ('pk', 'name', 'device', 'label', 'type', 'maximum_draw', 'allocated_draw', 'description') @@ -513,8 +517,8 @@ class PowerOutletTable(ModularDeviceComponentTable, PathEndpointTable): model = models.PowerOutlet fields = ( 'pk', 'id', 'name', 'device', 'module_bay', 'module', 'label', 'type', 'description', 'power_port', - 'feed_leg', 'mark_connected', 'cable', 'cable_color', 'link_peer', 'connection', 'tags', 'created', - 'last_updated', + 'feed_leg', 'mark_connected', 'cable', 'cable_color', 'link_peer', 'connection', 'inventory_items', + 'tags', 'created', 'last_updated', ) default_columns = ('pk', 'name', 'device', 'label', 'type', 'power_port', 'feed_leg', 'description') @@ -618,10 +622,6 @@ class InterfaceTable(ModularDeviceComponentTable, BaseInterfaceTable, PathEndpoi verbose_name=_('VRF'), linkify=True ) - inventory_items = columns.ManyToManyColumn( - linkify_item=True, - verbose_name=_('Inventory Items'), - ) tags = columns.TagColumn( url_name='dcim:interface_list' ) @@ -713,8 +713,8 @@ class FrontPortTable(ModularDeviceComponentTable, CableTerminationTable): model = models.FrontPort fields = ( 'pk', 'id', 'name', 'device', 'module_bay', 'module', 'label', 'type', 'color', 'rear_port', - 'rear_port_position', 'description', 'mark_connected', 'cable', 'cable_color', 'link_peer', 'tags', - 'created', 'last_updated', + 'rear_port_position', 'description', 'mark_connected', 'cable', 'cable_color', 'link_peer', + 'inventory_items', 'tags', 'created', 'last_updated', ) default_columns = ( 'pk', 'name', 'device', 'label', 'type', 'color', 'rear_port', 'rear_port_position', 'description', @@ -766,7 +766,7 @@ class RearPortTable(ModularDeviceComponentTable, CableTerminationTable): model = models.RearPort fields = ( 'pk', 'id', 'name', 'device', 'module_bay', 'module', 'label', 'type', 'color', 'positions', 'description', - 'mark_connected', 'cable', 'cable_color', 'link_peer', 'tags', 'created', 'last_updated', + 'mark_connected', 'cable', 'cable_color', 'link_peer', 'inventory_items', 'tags', 'created', 'last_updated', ) default_columns = ('pk', 'name', 'device', 'label', 'type', 'color', 'description') From 60f5dd7b516b03d4fa8df610d428538404991648 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20NICOLE?= Date: Tue, 21 May 2024 20:51:28 +0000 Subject: [PATCH 14/67] Support Redis Unix sockets (#16227) * Fixes #15962: support Redis Unix sockets * Clean up language & remove obsolete note --------- Co-authored-by: Jeremy Stretch --- docs/configuration/required-parameters.md | 20 +++++++++++++++----- netbox/netbox/settings.py | 9 ++++++++- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/docs/configuration/required-parameters.md b/docs/configuration/required-parameters.md index bda365995..90eb8c0cf 100644 --- a/docs/configuration/required-parameters.md +++ b/docs/configuration/required-parameters.md @@ -94,15 +94,25 @@ REDIS = { } ``` -!!! note - If you are upgrading from a NetBox release older than v2.7.0, please note that the Redis connection configuration - settings have changed. Manual modification to bring the `REDIS` section inline with the above specification is - necessary - !!! warning It is highly recommended to keep the task and cache databases separate. Using the same database number on the same Redis instance for both may result in queued background tasks being lost during cache flushing events. +### UNIX Socket Support + +Redis may alternatively be configured by specifying a complete URL instead of individual components. This approach supports the use of a UNIX socket connection. For example: + +```python +REDIS = { + 'tasks': { + 'URL': 'unix:///run/redis-netbox/redis.sock?db=0' + }, + 'caching': { + 'URL': 'unix:///run/redis-netbox/redis.sock?db=1' + }, +} +``` + ### Using Redis Sentinel If you are using [Redis Sentinel](https://redis.io/topics/sentinel) for high-availability purposes, there is minimal diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index 9be6ac686..fdae4e2c5 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -242,6 +242,7 @@ if 'tasks' not in REDIS: TASKS_REDIS = REDIS['tasks'] TASKS_REDIS_HOST = TASKS_REDIS.get('HOST', 'localhost') TASKS_REDIS_PORT = TASKS_REDIS.get('PORT', 6379) +TASKS_REDIS_URL = TASKS_REDIS.get('URL') TASKS_REDIS_SENTINELS = TASKS_REDIS.get('SENTINELS', []) TASKS_REDIS_USING_SENTINEL = all([ isinstance(TASKS_REDIS_SENTINELS, (list, tuple)), @@ -270,7 +271,7 @@ CACHING_REDIS_SENTINEL_SERVICE = REDIS['caching'].get('SENTINEL_SERVICE', 'defau CACHING_REDIS_PROTO = 'rediss' if REDIS['caching'].get('SSL', False) else 'redis' CACHING_REDIS_SKIP_TLS_VERIFY = REDIS['caching'].get('INSECURE_SKIP_TLS_VERIFY', False) CACHING_REDIS_CA_CERT_PATH = REDIS['caching'].get('CA_CERT_PATH', False) -CACHING_REDIS_URL = f'{CACHING_REDIS_PROTO}://{CACHING_REDIS_USERNAME_HOST}:{CACHING_REDIS_PORT}/{CACHING_REDIS_DATABASE}' +CACHING_REDIS_URL = REDIS['caching'].get('URL', f'{CACHING_REDIS_PROTO}://{CACHING_REDIS_USERNAME_HOST}:{CACHING_REDIS_PORT}/{CACHING_REDIS_DATABASE}') # Configure Django's default cache to use Redis CACHES = { @@ -678,6 +679,12 @@ if TASKS_REDIS_USING_SENTINEL: 'socket_connect_timeout': TASKS_REDIS_SENTINEL_TIMEOUT }, } +elif TASKS_REDIS_URL: + RQ_PARAMS = { + 'URL': TASKS_REDIS_URL, + 'SSL': TASKS_REDIS_SSL, + 'SSL_CERT_REQS': None if TASKS_REDIS_SKIP_TLS_VERIFY else 'required', + } else: RQ_PARAMS = { 'HOST': TASKS_REDIS_HOST, From 97f8f94ebbc17667114121bb83429f341d09383c Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Tue, 21 May 2024 16:53:17 -0400 Subject: [PATCH 15/67] Changelog for #13764, #14653, #15082, #15603, #15962, #16164, #16173, #16228 --- docs/release-notes/version-4.0.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/release-notes/version-4.0.md b/docs/release-notes/version-4.0.md index 8bde153ba..05ade6705 100644 --- a/docs/release-notes/version-4.0.md +++ b/docs/release-notes/version-4.0.md @@ -5,18 +5,26 @@ ### Enhancements * [#12984](https://github.com/netbox-community/netbox/issues/12984) - Add Molex Micro-Fit power port & outlet types +* [#13764](https://github.com/netbox-community/netbox/issues/13764) - Enable contact assignments for aggregates, prefixes, IP ranges, and IP addresses * [#14639](https://github.com/netbox-community/netbox/issues/14639) - Add Ukrainian translation support +* [#14653](https://github.com/netbox-community/netbox/issues/14653) - Add an inventory items table column for all device components * [#14686](https://github.com/netbox-community/netbox/issues/14686) - Add German translation support * [#14855](https://github.com/netbox-community/netbox/issues/14855) - Add Chinese translation support * [#15353](https://github.com/netbox-community/netbox/issues/15353) - Improve error reporting when custom scripts fail to load * [#15496](https://github.com/netbox-community/netbox/issues/15496) - Implement dedicated views for management of circuit terminations +* [#15603](https://github.com/netbox-community/netbox/issues/15603) - Add 4G & 5G cellular interface types +* [#15962](https://github.com/netbox-community/netbox/issues/15962) - Enable UNIX socket connections for Redis ### Bug Fixes * [#13293](https://github.com/netbox-community/netbox/issues/13293) - Limit interface selector for IP address to current device/VM * [#14953](https://github.com/netbox-community/netbox/issues/14953) - Ensure annotated count fields are present in REST API response data when creating new objects * [#14982](https://github.com/netbox-community/netbox/issues/14982) - Fix OpenAPI schema definition for SerializedPKRelatedFields +* [#15082](https://github.com/netbox-community/netbox/issues/15082) - Strip whitespace from choice values & labels when creating a custom field choice set * [#16138](https://github.com/netbox-community/netbox/issues/16138) - Fix support for referencing users & groups in object permissions +* [#16164](https://github.com/netbox-community/netbox/issues/16164) - Correct display of selected values in UI when filtering object list by a null value +* [#16173](https://github.com/netbox-community/netbox/issues/16173) - Fix TypeError exception when viewing object list with no pagination preference defined +* [#16228](https://github.com/netbox-community/netbox/issues/16228) - Fix permissions enforcement for GraphQL queries of users & groups --- From 83d3de276bf9e90946fe43766ecb25696064356c Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 22 May 2024 08:28:38 -0400 Subject: [PATCH 16/67] Fixes #16232: Fix inclusion of bulk action checkboxes on dynamic tables --- netbox/netbox/tables/tables.py | 6 ++++-- netbox/netbox/views/generic/bulk_views.py | 2 +- netbox/utilities/templates/builtins/htmx_table.html | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/netbox/netbox/tables/tables.py b/netbox/netbox/tables/tables.py index 2697c4bc0..b191896fa 100644 --- a/netbox/netbox/tables/tables.py +++ b/netbox/netbox/tables/tables.py @@ -1,4 +1,5 @@ from copy import deepcopy +from functools import cached_property import django_tables2 as tables from django.contrib.auth.models import AnonymousUser @@ -189,6 +190,7 @@ class NetBoxTable(BaseTable): actions = columns.ActionsColumn() exempt_columns = ('pk', 'actions') + embedded = False class Meta(BaseTable.Meta): pass @@ -218,12 +220,12 @@ class NetBoxTable(BaseTable): super().__init__(*args, extra_columns=extra_columns, **kwargs) - @property + @cached_property def htmx_url(self): """ Return the base HTML request URL for embedded tables. """ - if getattr(self, 'embedded', False): + if self.embedded: viewname = get_viewname(self._meta.model, action='list') try: return reverse(viewname) diff --git a/netbox/netbox/views/generic/bulk_views.py b/netbox/netbox/views/generic/bulk_views.py index be574204c..87e352710 100644 --- a/netbox/netbox/views/generic/bulk_views.py +++ b/netbox/netbox/views/generic/bulk_views.py @@ -163,7 +163,7 @@ class ObjectListView(BaseMultiObjectView, ActionsMixin, TableMixin): # If this is an HTMX request, return only the rendered table HTML if htmx_partial(request): - if not request.htmx.target: + if request.GET.get('embedded', False): table.embedded = True # Hide selection checkboxes if 'pk' in table.base_columns: diff --git a/netbox/utilities/templates/builtins/htmx_table.html b/netbox/utilities/templates/builtins/htmx_table.html index b3ceed2c7..8b7e6af16 100644 --- a/netbox/utilities/templates/builtins/htmx_table.html +++ b/netbox/utilities/templates/builtins/htmx_table.html @@ -1,5 +1,5 @@
From 8e4466812d14afa376ca568d1eb6f33bd4004b0e Mon Sep 17 00:00:00 2001 From: Arthur Hanson Date: Wed, 22 May 2024 07:42:36 -0700 Subject: [PATCH 17/67] 16145 Use module.ScriptName to call Script API instead of PK (#16170) * 16145 script api use module.script name instead of pk * 16145 fix test * 16145 allow both pk and script name * 16145 update doc string * Simplify retrieval logic --------- Co-authored-by: Jeremy Stretch --- netbox/extras/api/views.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/netbox/extras/api/views.py b/netbox/extras/api/views.py index 1f76467b5..05087b2d5 100644 --- a/netbox/extras/api/views.py +++ b/netbox/extras/api/views.py @@ -1,3 +1,4 @@ +from django.http import Http404 from django.shortcuts import get_object_or_404 from django_rq.queues import get_connection from rest_framework import status @@ -215,21 +216,32 @@ class ScriptViewSet(ModelViewSet): _ignore_model_permissions = True lookup_value_regex = '[^/]+' # Allow dots + def _get_script(self, pk): + # If pk is numeric, retrieve script by ID + if pk.isnumeric(): + return get_object_or_404(self.queryset, pk=pk) + + # Default to retrieval by module & name + try: + module_name, script_name = pk.split('.', maxsplit=1) + except ValueError: + raise Http404 + return get_object_or_404(self.queryset, module__file_path=f'{module_name}.py', name=script_name) + def retrieve(self, request, pk): - script = get_object_or_404(self.queryset, pk=pk) + script = self._get_script(pk) serializer = serializers.ScriptDetailSerializer(script, context={'request': request}) return Response(serializer.data) def post(self, request, pk): """ - Run a Script identified by the id and return the pending Job as the result + Run a Script identified by its numeric PK or module & name and return the pending Job as the result """ - if not request.user.has_perm('extras.run_script'): raise PermissionDenied("This user does not have permission to run scripts.") - script = get_object_or_404(self.queryset, pk=pk) + script = self._get_script(pk) input_serializer = serializers.ScriptInputSerializer( data=request.data, context={'script': script} From 753c4021eb526b7cf7dcb641215db5f3934510e6 Mon Sep 17 00:00:00 2001 From: Arthur Hanson Date: Wed, 22 May 2024 08:51:15 -0700 Subject: [PATCH 18/67] 14948 add has_virtual_device_contexts filter to device (#16209) * 14948 add has_virtual_device_cnotexts filter to device * 14948 make singular * 14948 add test --- netbox/dcim/filtersets.py | 10 ++++++++++ netbox/dcim/forms/filtersets.py | 8 ++++++++ netbox/dcim/tests/test_filtersets.py | 9 +++++++++ 3 files changed, 27 insertions(+) diff --git a/netbox/dcim/filtersets.py b/netbox/dcim/filtersets.py index ad1e29f26..2fb1e9949 100644 --- a/netbox/dcim/filtersets.py +++ b/netbox/dcim/filtersets.py @@ -1100,6 +1100,10 @@ class DeviceFilterSet( queryset=IPAddress.objects.all(), label=_('OOB IP (ID)'), ) + has_virtual_device_context = django_filters.BooleanFilter( + method='_has_virtual_device_context', + label=_('Has virtual device context'), + ) class Meta: model = Device @@ -1176,6 +1180,12 @@ class DeviceFilterSet( def _device_bays(self, queryset, name, value): return queryset.exclude(devicebays__isnull=value) + def _has_virtual_device_context(self, queryset, name, value): + params = Q(vdcs__isnull=False) + if value: + return queryset.filter(params).distinct() + return queryset.exclude(params) + class VirtualDeviceContextFilterSet(NetBoxModelFilterSet, TenancyFilterSet, PrimaryIPFilterSet): device_id = django_filters.ModelMultipleChoiceFilter( diff --git a/netbox/dcim/forms/filtersets.py b/netbox/dcim/forms/filtersets.py index 21854b53f..0a28a4ec4 100644 --- a/netbox/dcim/forms/filtersets.py +++ b/netbox/dcim/forms/filtersets.py @@ -657,6 +657,7 @@ class DeviceFilterForm( ), FieldSet( 'has_primary_ip', 'has_oob_ip', 'virtual_chassis_member', 'config_template_id', 'local_context_data', + 'has_virtual_device_context', name=_('Miscellaneous') ) ) @@ -813,6 +814,13 @@ class DeviceFilterForm( choices=BOOLEAN_WITH_BLANK_CHOICES ) ) + has_virtual_device_context = forms.NullBooleanField( + required=False, + label=_('Has virtual device contexts'), + widget=forms.Select( + choices=BOOLEAN_WITH_BLANK_CHOICES + ) + ) tag = TagFilterField(model) diff --git a/netbox/dcim/tests/test_filtersets.py b/netbox/dcim/tests/test_filtersets.py index 96ea020b3..0a22f5a82 100644 --- a/netbox/dcim/tests/test_filtersets.py +++ b/netbox/dcim/tests/test_filtersets.py @@ -2103,6 +2103,9 @@ class DeviceTestCase(TestCase, ChangeLoggedFilterSetTests): Device.objects.filter(pk=devices[0].pk).update(virtual_chassis=virtual_chassis, vc_position=1, vc_priority=1) Device.objects.filter(pk=devices[1].pk).update(virtual_chassis=virtual_chassis, vc_position=2, vc_priority=2) + # VirtualDeviceContext assignment for filtering + VirtualDeviceContext.objects.create(device=devices[0], name="VDC 1", identifier=1, status='active') + def test_q(self): params = {'q': 'foobar1'} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) @@ -2336,6 +2339,12 @@ class DeviceTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'tenant_group': [tenant_groups[0].slug, tenant_groups[1].slug]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_has_virtual_device_context(self): + params = {'has_virtual_device_context': 'true'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + params = {'has_virtual_device_context': 'false'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + class ModuleTestCase(TestCase, ChangeLoggedFilterSetTests): queryset = Module.objects.all() From cd3dea7ca93200c77f00a9c787d5fe710d5a5e3e Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 22 May 2024 13:42:22 -0400 Subject: [PATCH 19/67] Update origin strings for translation --- netbox/translations/en/LC_MESSAGES/django.po | 1342 +++++++++--------- 1 file changed, 700 insertions(+), 642 deletions(-) diff --git a/netbox/translations/en/LC_MESSAGES/django.po b/netbox/translations/en/LC_MESSAGES/django.po index 83c690869..be10d5686 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-05-14 13:22+0000\n" +"POT-Creation-Date: 2024-05-22 17:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -60,19 +60,19 @@ msgid "Your preferences have been updated." msgstr "" #: circuits/choices.py:21 dcim/choices.py:20 dcim/choices.py:102 -#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1429 -#: dcim/choices.py:1505 dcim/choices.py:1555 virtualization/choices.py:20 +#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1457 +#: dcim/choices.py:1533 dcim/choices.py:1583 virtualization/choices.py:20 #: virtualization/choices.py:45 vpn/choices.py:18 msgid "Planned" msgstr "" -#: circuits/choices.py:22 netbox/navigation/menu.py:289 +#: circuits/choices.py:22 netbox/navigation/menu.py:290 msgid "Provisioning" msgstr "" #: circuits/choices.py:23 core/tables/tasks.py:22 dcim/choices.py:22 #: dcim/choices.py:103 dcim/choices.py:173 dcim/choices.py:219 -#: dcim/choices.py:1504 dcim/choices.py:1554 extras/tables/tables.py:385 +#: dcim/choices.py:1532 dcim/choices.py:1582 extras/tables/tables.py:385 #: 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 @@ -81,7 +81,7 @@ msgid "Active" msgstr "" #: circuits/choices.py:24 dcim/choices.py:172 dcim/choices.py:218 -#: dcim/choices.py:1503 dcim/choices.py:1556 virtualization/choices.py:24 +#: dcim/choices.py:1531 dcim/choices.py:1584 virtualization/choices.py:24 #: virtualization/choices.py:43 msgid "Offline" msgstr "" @@ -96,8 +96,8 @@ msgstr "" #: circuits/filtersets.py:29 circuits/filtersets.py:196 dcim/filtersets.py:97 #: dcim/filtersets.py:151 dcim/filtersets.py:211 dcim/filtersets.py:297 -#: dcim/filtersets.py:406 dcim/filtersets.py:969 dcim/filtersets.py:1295 -#: dcim/filtersets.py:1822 dcim/filtersets.py:2065 dcim/filtersets.py:2123 +#: dcim/filtersets.py:406 dcim/filtersets.py:969 dcim/filtersets.py:1305 +#: dcim/filtersets.py:1832 dcim/filtersets.py:2075 dcim/filtersets.py:2133 #: ipam/filtersets.py:339 ipam/filtersets.py:945 #: virtualization/filtersets.py:45 virtualization/filtersets.py:173 #: vpn/filtersets.py:377 @@ -106,8 +106,8 @@ msgstr "" #: circuits/filtersets.py:36 circuits/filtersets.py:203 dcim/filtersets.py:104 #: dcim/filtersets.py:157 dcim/filtersets.py:218 dcim/filtersets.py:304 -#: dcim/filtersets.py:413 dcim/filtersets.py:976 dcim/filtersets.py:1302 -#: dcim/filtersets.py:1829 dcim/filtersets.py:2072 dcim/filtersets.py:2130 +#: dcim/filtersets.py:413 dcim/filtersets.py:976 dcim/filtersets.py:1312 +#: dcim/filtersets.py:1839 dcim/filtersets.py:2082 dcim/filtersets.py:2140 #: extras/filtersets.py:461 ipam/filtersets.py:346 ipam/filtersets.py:952 #: virtualization/filtersets.py:52 virtualization/filtersets.py:180 #: vpn/filtersets.py:372 @@ -116,8 +116,8 @@ msgstr "" #: circuits/filtersets.py:42 circuits/filtersets.py:209 dcim/filtersets.py:127 #: dcim/filtersets.py:224 dcim/filtersets.py:310 dcim/filtersets.py:419 -#: dcim/filtersets.py:982 dcim/filtersets.py:1308 dcim/filtersets.py:1835 -#: dcim/filtersets.py:2078 dcim/filtersets.py:2136 ipam/filtersets.py:352 +#: dcim/filtersets.py:982 dcim/filtersets.py:1318 dcim/filtersets.py:1845 +#: dcim/filtersets.py:2088 dcim/filtersets.py:2146 ipam/filtersets.py:352 #: ipam/filtersets.py:958 virtualization/filtersets.py:58 #: virtualization/filtersets.py:186 msgid "Site group (ID)" @@ -125,16 +125,18 @@ msgstr "" #: circuits/filtersets.py:49 circuits/filtersets.py:216 dcim/filtersets.py:134 #: dcim/filtersets.py:231 dcim/filtersets.py:317 dcim/filtersets.py:426 -#: dcim/filtersets.py:989 dcim/filtersets.py:1315 dcim/filtersets.py:1842 -#: dcim/filtersets.py:2085 dcim/filtersets.py:2143 extras/filtersets.py:467 +#: dcim/filtersets.py:989 dcim/filtersets.py:1325 dcim/filtersets.py:1852 +#: dcim/filtersets.py:2095 dcim/filtersets.py:2153 extras/filtersets.py:467 #: ipam/filtersets.py:359 ipam/filtersets.py:965 #: virtualization/filtersets.py:65 virtualization/filtersets.py:193 msgid "Site group (slug)" msgstr "" -#: circuits/filtersets.py:54 circuits/forms/bulk_import.py:116 -#: circuits/forms/filtersets.py:48 circuits/forms/filtersets.py:168 -#: circuits/forms/model_forms.py:136 circuits/forms/model_forms.py:152 +#: circuits/filtersets.py:54 circuits/forms/bulk_edit.py:186 +#: circuits/forms/bulk_edit.py:214 circuits/forms/bulk_import.py:126 +#: circuits/forms/filtersets.py:49 circuits/forms/filtersets.py:169 +#: circuits/forms/filtersets.py:207 circuits/forms/model_forms.py:136 +#: circuits/forms/model_forms.py:152 circuits/tables/circuits.py:105 #: dcim/forms/bulk_edit.py:167 dcim/forms/bulk_edit.py:239 #: dcim/forms/bulk_edit.py:575 dcim/forms/bulk_edit.py:771 #: dcim/forms/bulk_import.py:130 dcim/forms/bulk_import.py:184 @@ -142,10 +144,10 @@ msgstr "" #: dcim/forms/bulk_import.py:1262 dcim/forms/bulk_import.py:1290 #: dcim/forms/filtersets.py:85 dcim/forms/filtersets.py:218 #: dcim/forms/filtersets.py:265 dcim/forms/filtersets.py:374 -#: dcim/forms/filtersets.py:681 dcim/forms/filtersets.py:908 -#: dcim/forms/filtersets.py:932 dcim/forms/filtersets.py:1022 -#: dcim/forms/filtersets.py:1060 dcim/forms/filtersets.py:1468 -#: dcim/forms/filtersets.py:1492 dcim/forms/filtersets.py:1516 +#: dcim/forms/filtersets.py:682 dcim/forms/filtersets.py:916 +#: dcim/forms/filtersets.py:940 dcim/forms/filtersets.py:1030 +#: dcim/forms/filtersets.py:1068 dcim/forms/filtersets.py:1476 +#: dcim/forms/filtersets.py:1500 dcim/forms/filtersets.py:1524 #: dcim/forms/model_forms.py:136 dcim/forms/model_forms.py:164 #: dcim/forms/model_forms.py:206 dcim/forms/model_forms.py:406 #: dcim/forms/model_forms.py:668 dcim/forms/object_create.py:391 @@ -155,11 +157,11 @@ msgstr "" #: ipam/forms/bulk_edit.py:270 ipam/forms/bulk_edit.py:448 #: ipam/forms/bulk_edit.py:522 ipam/forms/bulk_import.py:170 #: ipam/forms/bulk_import.py:437 ipam/forms/filtersets.py:153 -#: ipam/forms/filtersets.py:230 ipam/forms/filtersets.py:425 -#: ipam/forms/filtersets.py:489 ipam/forms/model_forms.py:203 -#: ipam/forms/model_forms.py:578 ipam/forms/model_forms.py:673 +#: ipam/forms/filtersets.py:231 ipam/forms/filtersets.py:432 +#: ipam/forms/filtersets.py:496 ipam/forms/model_forms.py:203 +#: ipam/forms/model_forms.py:587 ipam/forms/model_forms.py:682 #: ipam/tables/ip.py:244 ipam/tables/vlans.py:114 ipam/tables/vlans.py:216 -#: templates/circuits/inc/circuit_termination.html:32 +#: templates/circuits/inc/circuit_termination_fields.html:6 #: templates/dcim/device.html:21 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:22 @@ -192,19 +194,19 @@ msgstr "" msgid "ASN (ID)" msgstr "" -#: circuits/filtersets.py:71 circuits/forms/filtersets.py:28 +#: circuits/filtersets.py:71 circuits/forms/filtersets.py:29 #: ipam/forms/model_forms.py:157 ipam/models/asns.py:108 #: ipam/models/asns.py:125 ipam/tables/asn.py:41 templates/ipam/asn.html:20 msgid "ASN" msgstr "" #: circuits/filtersets.py:93 circuits/filtersets.py:120 -#: circuits/filtersets.py:154 ipam/filtersets.py:243 +#: circuits/filtersets.py:154 circuits/filtersets.py:281 ipam/filtersets.py:243 msgid "Provider (ID)" msgstr "" #: circuits/filtersets.py:99 circuits/filtersets.py:126 -#: circuits/filtersets.py:160 ipam/filtersets.py:249 +#: circuits/filtersets.py:160 circuits/filtersets.py:287 ipam/filtersets.py:249 msgid "Provider (slug)" msgstr "" @@ -230,8 +232,8 @@ msgstr "" #: circuits/filtersets.py:221 circuits/filtersets.py:266 dcim/filtersets.py:235 #: dcim/filtersets.py:321 dcim/filtersets.py:394 dcim/filtersets.py:993 -#: dcim/filtersets.py:1320 dcim/filtersets.py:1847 dcim/filtersets.py:2089 -#: dcim/filtersets.py:2148 ipam/filtersets.py:232 ipam/filtersets.py:363 +#: dcim/filtersets.py:1330 dcim/filtersets.py:1857 dcim/filtersets.py:2099 +#: dcim/filtersets.py:2158 ipam/filtersets.py:232 ipam/filtersets.py:363 #: ipam/filtersets.py:969 virtualization/filtersets.py:69 #: virtualization/filtersets.py:197 vpn/filtersets.py:387 msgid "Site (ID)" @@ -242,13 +244,13 @@ msgid "Termination A (ID)" msgstr "" #: circuits/filtersets.py:258 core/filtersets.py:73 core/filtersets.py:132 -#: dcim/filtersets.py:693 dcim/filtersets.py:1289 dcim/filtersets.py:2196 +#: dcim/filtersets.py:693 dcim/filtersets.py:1299 dcim/filtersets.py:2206 #: extras/filtersets.py:41 extras/filtersets.py:63 extras/filtersets.py:92 #: extras/filtersets.py:127 extras/filtersets.py:176 extras/filtersets.py:204 #: extras/filtersets.py:234 extras/filtersets.py:271 extras/filtersets.py:343 #: extras/filtersets.py:390 extras/filtersets.py:450 extras/filtersets.py:613 #: extras/filtersets.py:655 extras/filtersets.py:696 -#: ipam/forms/model_forms.py:438 netbox/filtersets.py:275 +#: ipam/forms/model_forms.py:447 netbox/filtersets.py:275 #: netbox/forms/__init__.py:22 netbox/forms/base.py:165 #: templates/htmx/object_selector.html:28 templates/inc/filter_list.html:45 #: templates/ipam/ipaddress_assign.html:29 templates/search.html:7 @@ -258,9 +260,12 @@ msgstr "" msgid "Search" msgstr "" -#: circuits/filtersets.py:262 circuits/forms/bulk_edit.py:168 -#: circuits/forms/model_forms.py:109 circuits/forms/model_forms.py:131 +#: circuits/filtersets.py:262 circuits/forms/bulk_edit.py:170 +#: circuits/forms/bulk_import.py:117 circuits/forms/filtersets.py:196 +#: circuits/forms/filtersets.py:212 circuits/forms/model_forms.py:109 +#: circuits/forms/model_forms.py:131 circuits/tables/circuits.py:96 #: dcim/forms/connections.py:71 templates/circuits/circuit.html:15 +#: templates/circuits/circuittermination.html:19 #: templates/dcim/inc/cable_termination.html:55 #: templates/dcim/trace/circuit.html:4 msgid "Circuit" @@ -270,48 +275,48 @@ msgstr "" msgid "ProviderNetwork (ID)" msgstr "" -#: circuits/forms/bulk_edit.py:26 circuits/forms/filtersets.py:53 +#: circuits/forms/bulk_edit.py:28 circuits/forms/filtersets.py:54 #: circuits/forms/model_forms.py:27 circuits/tables/providers.py:33 #: dcim/forms/bulk_edit.py:127 dcim/forms/filtersets.py:188 #: dcim/forms/model_forms.py:122 dcim/tables/sites.py:94 -#: ipam/models/asns.py:126 ipam/tables/asn.py:27 ipam/views.py:218 +#: ipam/models/asns.py:126 ipam/tables/asn.py:27 ipam/views.py:219 #: netbox/navigation/menu.py:159 netbox/navigation/menu.py:162 #: templates/circuits/provider.html:23 msgid "ASNs" msgstr "" -#: circuits/forms/bulk_edit.py:30 circuits/forms/bulk_edit.py:52 -#: circuits/forms/bulk_edit.py:79 circuits/forms/bulk_edit.py:100 -#: circuits/forms/bulk_edit.py:160 core/forms/bulk_edit.py:28 -#: core/tables/plugins.py:29 dcim/forms/bulk_create.py:35 -#: dcim/forms/bulk_edit.py:72 dcim/forms/bulk_edit.py:91 -#: dcim/forms/bulk_edit.py:150 dcim/forms/bulk_edit.py:191 -#: dcim/forms/bulk_edit.py:209 dcim/forms/bulk_edit.py:337 -#: dcim/forms/bulk_edit.py:373 dcim/forms/bulk_edit.py:388 -#: dcim/forms/bulk_edit.py:447 dcim/forms/bulk_edit.py:486 -#: dcim/forms/bulk_edit.py:516 dcim/forms/bulk_edit.py:540 -#: dcim/forms/bulk_edit.py:613 dcim/forms/bulk_edit.py:665 -#: dcim/forms/bulk_edit.py:717 dcim/forms/bulk_edit.py:740 -#: dcim/forms/bulk_edit.py:788 dcim/forms/bulk_edit.py:858 -#: dcim/forms/bulk_edit.py:911 dcim/forms/bulk_edit.py:946 -#: dcim/forms/bulk_edit.py:986 dcim/forms/bulk_edit.py:1030 -#: dcim/forms/bulk_edit.py:1075 dcim/forms/bulk_edit.py:1102 -#: dcim/forms/bulk_edit.py:1120 dcim/forms/bulk_edit.py:1138 -#: dcim/forms/bulk_edit.py:1156 dcim/forms/bulk_edit.py:1575 -#: extras/forms/bulk_edit.py:36 extras/forms/bulk_edit.py:124 -#: extras/forms/bulk_edit.py:153 extras/forms/bulk_edit.py:183 -#: extras/forms/bulk_edit.py:264 extras/forms/bulk_edit.py:288 -#: extras/forms/bulk_edit.py:302 extras/tables/tables.py:58 -#: ipam/forms/bulk_edit.py:51 ipam/forms/bulk_edit.py:71 -#: ipam/forms/bulk_edit.py:91 ipam/forms/bulk_edit.py:115 -#: ipam/forms/bulk_edit.py:144 ipam/forms/bulk_edit.py:173 -#: ipam/forms/bulk_edit.py:192 ipam/forms/bulk_edit.py:261 -#: ipam/forms/bulk_edit.py:305 ipam/forms/bulk_edit.py:353 -#: ipam/forms/bulk_edit.py:396 ipam/forms/bulk_edit.py:424 -#: ipam/forms/bulk_edit.py:554 ipam/forms/bulk_edit.py:585 -#: templates/account/token.html:35 templates/circuits/circuit.html:59 -#: templates/circuits/circuittype.html:26 -#: templates/circuits/inc/circuit_termination.html:114 +#: circuits/forms/bulk_edit.py:32 circuits/forms/bulk_edit.py:54 +#: circuits/forms/bulk_edit.py:81 circuits/forms/bulk_edit.py:102 +#: circuits/forms/bulk_edit.py:162 circuits/forms/bulk_edit.py:181 +#: core/forms/bulk_edit.py:28 core/tables/plugins.py:29 +#: dcim/forms/bulk_create.py:35 dcim/forms/bulk_edit.py:72 +#: dcim/forms/bulk_edit.py:91 dcim/forms/bulk_edit.py:150 +#: dcim/forms/bulk_edit.py:191 dcim/forms/bulk_edit.py:209 +#: dcim/forms/bulk_edit.py:337 dcim/forms/bulk_edit.py:373 +#: dcim/forms/bulk_edit.py:388 dcim/forms/bulk_edit.py:447 +#: dcim/forms/bulk_edit.py:486 dcim/forms/bulk_edit.py:516 +#: dcim/forms/bulk_edit.py:540 dcim/forms/bulk_edit.py:613 +#: dcim/forms/bulk_edit.py:665 dcim/forms/bulk_edit.py:717 +#: dcim/forms/bulk_edit.py:740 dcim/forms/bulk_edit.py:788 +#: dcim/forms/bulk_edit.py:858 dcim/forms/bulk_edit.py:911 +#: dcim/forms/bulk_edit.py:946 dcim/forms/bulk_edit.py:986 +#: dcim/forms/bulk_edit.py:1030 dcim/forms/bulk_edit.py:1075 +#: dcim/forms/bulk_edit.py:1102 dcim/forms/bulk_edit.py:1120 +#: dcim/forms/bulk_edit.py:1138 dcim/forms/bulk_edit.py:1156 +#: dcim/forms/bulk_edit.py:1575 extras/forms/bulk_edit.py:36 +#: extras/forms/bulk_edit.py:124 extras/forms/bulk_edit.py:153 +#: extras/forms/bulk_edit.py:183 extras/forms/bulk_edit.py:264 +#: extras/forms/bulk_edit.py:288 extras/forms/bulk_edit.py:302 +#: extras/tables/tables.py:58 ipam/forms/bulk_edit.py:51 +#: ipam/forms/bulk_edit.py:71 ipam/forms/bulk_edit.py:91 +#: ipam/forms/bulk_edit.py:115 ipam/forms/bulk_edit.py:144 +#: ipam/forms/bulk_edit.py:173 ipam/forms/bulk_edit.py:192 +#: ipam/forms/bulk_edit.py:261 ipam/forms/bulk_edit.py:305 +#: ipam/forms/bulk_edit.py:353 ipam/forms/bulk_edit.py:396 +#: ipam/forms/bulk_edit.py:424 ipam/forms/bulk_edit.py:554 +#: ipam/forms/bulk_edit.py:585 templates/account/token.html:35 +#: templates/circuits/circuit.html:59 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/dcim/cable.html:36 templates/dcim/consoleport.html:44 @@ -373,32 +378,35 @@ msgstr "" msgid "Description" msgstr "" -#: circuits/forms/bulk_edit.py:47 circuits/forms/bulk_edit.py:69 -#: circuits/forms/bulk_edit.py:119 circuits/forms/bulk_import.py:34 -#: circuits/forms/bulk_import.py:49 circuits/forms/bulk_import.py:75 -#: circuits/forms/filtersets.py:67 circuits/forms/filtersets.py:85 -#: circuits/forms/filtersets.py:113 circuits/forms/filtersets.py:128 +#: circuits/forms/bulk_edit.py:49 circuits/forms/bulk_edit.py:71 +#: circuits/forms/bulk_edit.py:121 circuits/forms/bulk_import.py:35 +#: circuits/forms/bulk_import.py:50 circuits/forms/bulk_import.py:76 +#: circuits/forms/filtersets.py:68 circuits/forms/filtersets.py:86 +#: circuits/forms/filtersets.py:114 circuits/forms/filtersets.py:129 +#: circuits/forms/filtersets.py:197 circuits/forms/filtersets.py:230 #: circuits/forms/model_forms.py:45 circuits/forms/model_forms.py:59 -#: circuits/forms/model_forms.py:91 circuits/tables/circuits.py:55 -#: circuits/tables/providers.py:72 circuits/tables/providers.py:103 -#: templates/circuits/circuit.html:18 templates/circuits/provider.html:20 +#: circuits/forms/model_forms.py:91 circuits/tables/circuits.py:56 +#: circuits/tables/circuits.py:100 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 msgid "Provider" msgstr "" -#: circuits/forms/bulk_edit.py:76 circuits/forms/filtersets.py:88 +#: circuits/forms/bulk_edit.py:78 circuits/forms/filtersets.py:89 #: templates/circuits/providernetwork.html:28 msgid "Service ID" msgstr "" -#: circuits/forms/bulk_edit.py:96 circuits/forms/filtersets.py:104 +#: circuits/forms/bulk_edit.py:98 circuits/forms/filtersets.py:105 #: dcim/forms/bulk_edit.py:205 dcim/forms/bulk_edit.py:502 #: dcim/forms/bulk_edit.py:702 dcim/forms/bulk_edit.py:1071 #: dcim/forms/bulk_edit.py:1098 dcim/forms/bulk_edit.py:1571 -#: dcim/forms/filtersets.py:975 dcim/forms/filtersets.py:1351 -#: dcim/forms/filtersets.py:1372 dcim/tables/devices.py:699 +#: dcim/forms/filtersets.py:983 dcim/forms/filtersets.py:1359 +#: dcim/forms/filtersets.py:1380 dcim/tables/devices.py:699 #: dcim/tables/devices.py:759 dcim/tables/devices.py:986 #: dcim/tables/devicetypes.py:245 dcim/tables/devicetypes.py:260 #: dcim/tables/racks.py:32 extras/forms/bulk_edit.py:260 @@ -410,8 +418,8 @@ msgstr "" msgid "Color" msgstr "" -#: circuits/forms/bulk_edit.py:114 circuits/forms/bulk_import.py:88 -#: circuits/forms/filtersets.py:123 core/forms/bulk_edit.py:18 +#: circuits/forms/bulk_edit.py:116 circuits/forms/bulk_import.py:89 +#: circuits/forms/filtersets.py:124 core/forms/bulk_edit.py:18 #: core/forms/filtersets.py:30 core/tables/data.py:20 core/tables/jobs.py:18 #: dcim/forms/bulk_edit.py:282 dcim/forms/bulk_edit.py:680 #: dcim/forms/bulk_edit.py:819 dcim/forms/bulk_edit.py:887 @@ -423,18 +431,18 @@ msgstr "" #: dcim/forms/bulk_import.py:725 dcim/forms/bulk_import.py:808 #: dcim/forms/bulk_import.py:902 dcim/forms/bulk_import.py:944 #: dcim/forms/bulk_import.py:1161 dcim/forms/bulk_import.py:1327 -#: dcim/forms/filtersets.py:287 dcim/forms/filtersets.py:866 -#: dcim/forms/filtersets.py:965 dcim/forms/filtersets.py:1086 -#: dcim/forms/filtersets.py:1156 dcim/forms/filtersets.py:1178 -#: dcim/forms/filtersets.py:1200 dcim/forms/filtersets.py:1217 -#: dcim/forms/filtersets.py:1251 dcim/forms/filtersets.py:1346 -#: dcim/forms/filtersets.py:1367 dcim/forms/model_forms.py:643 +#: dcim/forms/filtersets.py:287 dcim/forms/filtersets.py:874 +#: dcim/forms/filtersets.py:973 dcim/forms/filtersets.py:1094 +#: dcim/forms/filtersets.py:1164 dcim/forms/filtersets.py:1186 +#: dcim/forms/filtersets.py:1208 dcim/forms/filtersets.py:1225 +#: dcim/forms/filtersets.py:1259 dcim/forms/filtersets.py:1354 +#: dcim/forms/filtersets.py:1375 dcim/forms/model_forms.py:643 #: dcim/forms/model_forms.py:649 dcim/forms/object_import.py:84 #: dcim/forms/object_import.py:113 dcim/forms/object_import.py:145 #: dcim/tables/devices.py:183 dcim/tables/devices.py:815 #: dcim/tables/power.py:77 extras/forms/bulk_import.py:39 #: extras/tables/tables.py:283 extras/tables/tables.py:355 -#: extras/tables/tables.py:473 netbox/tables/tables.py:237 +#: extras/tables/tables.py:473 netbox/tables/tables.py:239 #: 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 @@ -455,13 +463,13 @@ msgstr "" msgid "Type" msgstr "" -#: circuits/forms/bulk_edit.py:124 circuits/forms/bulk_import.py:81 -#: circuits/forms/filtersets.py:136 circuits/forms/model_forms.py:96 +#: circuits/forms/bulk_edit.py:126 circuits/forms/bulk_import.py:82 +#: circuits/forms/filtersets.py:137 circuits/forms/model_forms.py:96 msgid "Provider account" msgstr "" -#: circuits/forms/bulk_edit.py:132 circuits/forms/bulk_import.py:94 -#: circuits/forms/filtersets.py:147 core/forms/filtersets.py:35 +#: circuits/forms/bulk_edit.py:134 circuits/forms/bulk_import.py:95 +#: circuits/forms/filtersets.py:148 core/forms/filtersets.py:35 #: core/forms/filtersets.py:76 core/tables/data.py:23 core/tables/jobs.py:26 #: core/tables/tasks.py:88 dcim/forms/bulk_edit.py:105 #: dcim/forms/bulk_edit.py:180 dcim/forms/bulk_edit.py:261 @@ -473,18 +481,18 @@ msgstr "" #: dcim/forms/bulk_import.py:1155 dcim/forms/bulk_import.py:1322 #: dcim/forms/bulk_import.py:1386 dcim/forms/filtersets.py:171 #: dcim/forms/filtersets.py:230 dcim/forms/filtersets.py:282 -#: dcim/forms/filtersets.py:727 dcim/forms/filtersets.py:835 -#: dcim/forms/filtersets.py:869 dcim/forms/filtersets.py:970 -#: dcim/forms/filtersets.py:1081 dcim/tables/devices.py:145 +#: dcim/forms/filtersets.py:728 dcim/forms/filtersets.py:843 +#: dcim/forms/filtersets.py:877 dcim/forms/filtersets.py:978 +#: dcim/forms/filtersets.py:1089 dcim/tables/devices.py:145 #: dcim/tables/devices.py:818 dcim/tables/devices.py:1046 #: dcim/tables/modules.py:69 dcim/tables/power.py:74 dcim/tables/racks.py:66 #: dcim/tables/sites.py:82 dcim/tables/sites.py:133 ipam/forms/bulk_edit.py:241 #: ipam/forms/bulk_edit.py:290 ipam/forms/bulk_edit.py:338 #: ipam/forms/bulk_edit.py:544 ipam/forms/bulk_import.py:191 #: ipam/forms/bulk_import.py:256 ipam/forms/bulk_import.py:292 -#: ipam/forms/bulk_import.py:458 ipam/forms/filtersets.py:209 -#: ipam/forms/filtersets.py:274 ipam/forms/filtersets.py:348 -#: ipam/forms/filtersets.py:501 ipam/forms/model_forms.py:457 +#: ipam/forms/bulk_import.py:458 ipam/forms/filtersets.py:210 +#: ipam/forms/filtersets.py:281 ipam/forms/filtersets.py:355 +#: ipam/forms/filtersets.py:508 ipam/forms/model_forms.py:466 #: ipam/tables/ip.py:236 ipam/tables/ip.py:309 ipam/tables/ip.py:359 #: ipam/tables/ip.py:421 ipam/tables/ip.py:448 ipam/tables/vlans.py:122 #: ipam/tables/vlans.py:227 templates/circuits/circuit.html:34 @@ -514,8 +522,8 @@ msgstr "" msgid "Status" msgstr "" -#: circuits/forms/bulk_edit.py:138 circuits/forms/bulk_import.py:99 -#: circuits/forms/filtersets.py:116 dcim/forms/bulk_edit.py:121 +#: circuits/forms/bulk_edit.py:140 circuits/forms/bulk_import.py:100 +#: circuits/forms/filtersets.py:117 dcim/forms/bulk_edit.py:121 #: dcim/forms/bulk_edit.py:186 dcim/forms/bulk_edit.py:256 #: dcim/forms/bulk_edit.py:368 dcim/forms/bulk_edit.py:588 #: dcim/forms/bulk_edit.py:692 dcim/forms/bulk_edit.py:1599 @@ -525,9 +533,9 @@ msgstr "" #: dcim/forms/bulk_import.py:1379 dcim/forms/filtersets.py:166 #: dcim/forms/filtersets.py:198 dcim/forms/filtersets.py:249 #: dcim/forms/filtersets.py:334 dcim/forms/filtersets.py:355 -#: dcim/forms/filtersets.py:652 dcim/forms/filtersets.py:827 -#: dcim/forms/filtersets.py:889 dcim/forms/filtersets.py:919 -#: dcim/forms/filtersets.py:1041 dcim/tables/power.py:88 +#: dcim/forms/filtersets.py:652 dcim/forms/filtersets.py:835 +#: dcim/forms/filtersets.py:897 dcim/forms/filtersets.py:927 +#: dcim/forms/filtersets.py:1049 dcim/tables/power.py:88 #: extras/filtersets.py:564 extras/forms/filtersets.py:332 #: extras/forms/filtersets.py:405 ipam/forms/bulk_edit.py:41 #: ipam/forms/bulk_edit.py:66 ipam/forms/bulk_edit.py:110 @@ -541,8 +549,8 @@ msgstr "" #: ipam/forms/bulk_import.py:451 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:173 ipam/forms/filtersets.py:260 -#: ipam/forms/filtersets.py:303 ipam/forms/filtersets.py:469 +#: ipam/forms/filtersets.py:174 ipam/forms/filtersets.py:267 +#: ipam/forms/filtersets.py:310 ipam/forms/filtersets.py:476 #: ipam/tables/ip.py:451 ipam/tables/vlans.py:224 #: templates/circuits/circuit.html:38 templates/dcim/cable.html:23 #: templates/dcim/device.html:78 templates/dcim/location.html:49 @@ -571,23 +579,23 @@ msgstr "" msgid "Tenant" msgstr "" -#: circuits/forms/bulk_edit.py:143 circuits/forms/filtersets.py:171 +#: circuits/forms/bulk_edit.py:145 circuits/forms/filtersets.py:172 msgid "Install date" msgstr "" -#: circuits/forms/bulk_edit.py:148 circuits/forms/filtersets.py:176 +#: circuits/forms/bulk_edit.py:150 circuits/forms/filtersets.py:177 msgid "Termination date" msgstr "" -#: circuits/forms/bulk_edit.py:154 circuits/forms/filtersets.py:183 +#: circuits/forms/bulk_edit.py:156 circuits/forms/filtersets.py:184 msgid "Commit rate (Kbps)" msgstr "" -#: circuits/forms/bulk_edit.py:169 circuits/forms/model_forms.py:110 +#: circuits/forms/bulk_edit.py:171 circuits/forms/model_forms.py:110 msgid "Service Parameters" msgstr "" -#: circuits/forms/bulk_edit.py:170 circuits/forms/model_forms.py:111 +#: circuits/forms/bulk_edit.py:172 circuits/forms/model_forms.py:111 #: dcim/forms/model_forms.py:138 dcim/forms/model_forms.py:180 #: dcim/forms/model_forms.py:228 dcim/forms/model_forms.py:267 #: dcim/forms/model_forms.py:713 dcim/forms/model_forms.py:1636 @@ -606,26 +614,60 @@ msgstr "" msgid "Tenancy" msgstr "" -#: circuits/forms/bulk_import.py:37 circuits/forms/bulk_import.py:52 -#: circuits/forms/bulk_import.py:78 +#: circuits/forms/bulk_edit.py:191 circuits/forms/bulk_edit.py:215 +#: circuits/forms/model_forms.py:153 circuits/tables/circuits.py:109 +#: templates/circuits/inc/circuit_termination_fields.html:62 +#: templates/circuits/providernetwork.html:17 +msgid "Provider Network" +msgstr "" + +#: circuits/forms/bulk_edit.py:197 +msgid "Port speed (Kbps)" +msgstr "" + +#: circuits/forms/bulk_edit.py:201 +msgid "Upstream speed (Kbps)" +msgstr "" + +#: circuits/forms/bulk_edit.py:204 dcim/forms/bulk_edit.py:849 +#: dcim/forms/bulk_edit.py:1208 dcim/forms/bulk_edit.py:1225 +#: dcim/forms/bulk_edit.py:1242 dcim/forms/bulk_edit.py:1260 +#: dcim/forms/bulk_edit.py:1348 dcim/forms/bulk_edit.py:1487 +#: dcim/forms/bulk_edit.py:1504 +msgid "Mark connected" +msgstr "" + +#: circuits/forms/bulk_edit.py:217 circuits/forms/model_forms.py:155 +#: templates/circuits/inc/circuit_termination_fields.html:54 +#: templates/dcim/frontport.html:121 templates/dcim/interface.html:193 +#: templates/dcim/rearport.html:111 +msgid "Circuit Termination" +msgstr "" + +#: circuits/forms/bulk_edit.py:219 circuits/forms/model_forms.py:157 +msgid "Termination Details" +msgstr "" + +#: circuits/forms/bulk_import.py:38 circuits/forms/bulk_import.py:53 +#: circuits/forms/bulk_import.py:79 msgid "Assigned provider" msgstr "" -#: circuits/forms/bulk_import.py:69 dcim/forms/bulk_import.py:178 +#: circuits/forms/bulk_import.py:70 dcim/forms/bulk_import.py:178 #: dcim/forms/bulk_import.py:388 dcim/forms/bulk_import.py:1108 #: dcim/forms/bulk_import.py:1187 extras/forms/bulk_import.py:232 msgid "RGB color in hexadecimal. Example:" msgstr "" -#: circuits/forms/bulk_import.py:84 +#: circuits/forms/bulk_import.py:85 msgid "Assigned provider account" msgstr "" -#: circuits/forms/bulk_import.py:91 +#: circuits/forms/bulk_import.py:92 msgid "Type of circuit" msgstr "" -#: circuits/forms/bulk_import.py:96 dcim/forms/bulk_import.py:89 +#: circuits/forms/bulk_import.py:97 dcim/forms/bulk_import.py:89 #: dcim/forms/bulk_import.py:148 dcim/forms/bulk_import.py:204 #: dcim/forms/bulk_import.py:452 dcim/forms/bulk_import.py:606 #: dcim/forms/bulk_import.py:1324 ipam/forms/bulk_import.py:193 @@ -636,7 +678,7 @@ msgstr "" msgid "Operational status" msgstr "" -#: circuits/forms/bulk_import.py:103 dcim/forms/bulk_import.py:110 +#: circuits/forms/bulk_import.py:104 dcim/forms/bulk_import.py:110 #: dcim/forms/bulk_import.py:155 dcim/forms/bulk_import.py:286 #: dcim/forms/bulk_import.py:428 dcim/forms/bulk_import.py:1171 #: dcim/forms/bulk_import.py:1319 dcim/forms/bulk_import.py:1383 @@ -650,37 +692,46 @@ msgstr "" msgid "Assigned tenant" msgstr "" -#: circuits/forms/bulk_import.py:122 circuits/forms/filtersets.py:144 -#: circuits/forms/model_forms.py:142 +#: circuits/forms/bulk_import.py:122 +#: 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 +msgid "Termination" +msgstr "" + +#: circuits/forms/bulk_import.py:132 circuits/forms/filtersets.py:145 +#: circuits/forms/filtersets.py:225 circuits/forms/model_forms.py:142 msgid "Provider network" msgstr "" -#: circuits/forms/filtersets.py:27 circuits/forms/filtersets.py:115 -#: dcim/forms/bulk_edit.py:248 dcim/forms/bulk_edit.py:346 -#: dcim/forms/bulk_edit.py:580 dcim/forms/bulk_edit.py:627 -#: dcim/forms/bulk_edit.py:780 dcim/forms/bulk_import.py:189 -#: dcim/forms/bulk_import.py:263 dcim/forms/bulk_import.py:491 -#: dcim/forms/bulk_import.py:1268 dcim/forms/bulk_import.py:1302 -#: dcim/forms/filtersets.py:93 dcim/forms/filtersets.py:246 -#: dcim/forms/filtersets.py:279 dcim/forms/filtersets.py:331 -#: dcim/forms/filtersets.py:382 dcim/forms/filtersets.py:649 -#: dcim/forms/filtersets.py:690 dcim/forms/filtersets.py:888 -#: dcim/forms/filtersets.py:917 dcim/forms/filtersets.py:937 -#: dcim/forms/filtersets.py:1001 dcim/forms/filtersets.py:1031 -#: dcim/forms/filtersets.py:1040 dcim/forms/filtersets.py:1151 -#: dcim/forms/filtersets.py:1173 dcim/forms/filtersets.py:1195 -#: dcim/forms/filtersets.py:1212 dcim/forms/filtersets.py:1232 -#: dcim/forms/filtersets.py:1340 dcim/forms/filtersets.py:1362 -#: dcim/forms/filtersets.py:1383 dcim/forms/filtersets.py:1398 -#: dcim/forms/filtersets.py:1412 dcim/forms/model_forms.py:179 -#: dcim/forms/model_forms.py:211 dcim/forms/model_forms.py:411 -#: dcim/forms/model_forms.py:673 dcim/tables/devices.py:162 -#: dcim/tables/power.py:30 dcim/tables/racks.py:58 dcim/tables/racks.py:143 -#: extras/filtersets.py:488 extras/forms/filtersets.py:329 -#: ipam/forms/bulk_edit.py:457 ipam/forms/filtersets.py:172 -#: ipam/forms/filtersets.py:407 ipam/forms/filtersets.py:430 -#: ipam/forms/filtersets.py:467 ipam/forms/model_forms.py:590 -#: templates/dcim/device.html:25 templates/dcim/device_edit.html:30 +#: circuits/forms/filtersets.py:28 circuits/forms/filtersets.py:116 +#: circuits/forms/filtersets.py:198 dcim/forms/bulk_edit.py:248 +#: dcim/forms/bulk_edit.py:346 dcim/forms/bulk_edit.py:580 +#: dcim/forms/bulk_edit.py:627 dcim/forms/bulk_edit.py:780 +#: dcim/forms/bulk_import.py:189 dcim/forms/bulk_import.py:263 +#: dcim/forms/bulk_import.py:491 dcim/forms/bulk_import.py:1268 +#: dcim/forms/bulk_import.py:1302 dcim/forms/filtersets.py:93 +#: dcim/forms/filtersets.py:246 dcim/forms/filtersets.py:279 +#: dcim/forms/filtersets.py:331 dcim/forms/filtersets.py:382 +#: dcim/forms/filtersets.py:649 dcim/forms/filtersets.py:691 +#: dcim/forms/filtersets.py:896 dcim/forms/filtersets.py:925 +#: dcim/forms/filtersets.py:945 dcim/forms/filtersets.py:1009 +#: dcim/forms/filtersets.py:1039 dcim/forms/filtersets.py:1048 +#: dcim/forms/filtersets.py:1159 dcim/forms/filtersets.py:1181 +#: dcim/forms/filtersets.py:1203 dcim/forms/filtersets.py:1220 +#: dcim/forms/filtersets.py:1240 dcim/forms/filtersets.py:1348 +#: dcim/forms/filtersets.py:1370 dcim/forms/filtersets.py:1391 +#: dcim/forms/filtersets.py:1406 dcim/forms/filtersets.py:1420 +#: dcim/forms/model_forms.py:179 dcim/forms/model_forms.py:211 +#: dcim/forms/model_forms.py:411 dcim/forms/model_forms.py:673 +#: dcim/tables/devices.py:162 dcim/tables/power.py:30 dcim/tables/racks.py:58 +#: dcim/tables/racks.py:143 extras/filtersets.py:488 +#: extras/forms/filtersets.py:329 ipam/forms/bulk_edit.py:457 +#: ipam/forms/filtersets.py:173 ipam/forms/filtersets.py:414 +#: ipam/forms/filtersets.py:437 ipam/forms/filtersets.py:474 +#: ipam/forms/model_forms.py:599 templates/dcim/device.html:25 +#: 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:26 #: templates/dcim/rackreservation.html:32 virtualization/forms/filtersets.py:46 @@ -689,12 +740,12 @@ msgstr "" msgid "Location" msgstr "" -#: circuits/forms/filtersets.py:29 circuits/forms/filtersets.py:117 +#: circuits/forms/filtersets.py:30 circuits/forms/filtersets.py:118 #: dcim/forms/filtersets.py:137 dcim/forms/filtersets.py:151 #: dcim/forms/filtersets.py:167 dcim/forms/filtersets.py:199 #: dcim/forms/filtersets.py:250 dcim/forms/filtersets.py:335 #: dcim/forms/filtersets.py:406 dcim/forms/filtersets.py:653 -#: dcim/forms/filtersets.py:1002 netbox/navigation/menu.py:44 +#: dcim/forms/filtersets.py:1010 netbox/navigation/menu.py:44 #: netbox/navigation/menu.py:46 tenancy/forms/filtersets.py:42 #: tenancy/tables/columns.py:70 tenancy/tables/contacts.py:25 #: tenancy/views.py:19 virtualization/forms/filtersets.py:37 @@ -702,21 +753,21 @@ msgstr "" msgid "Contacts" msgstr "" -#: circuits/forms/filtersets.py:34 circuits/forms/filtersets.py:154 +#: circuits/forms/filtersets.py:35 circuits/forms/filtersets.py:155 #: dcim/forms/bulk_edit.py:111 dcim/forms/bulk_edit.py:223 #: dcim/forms/bulk_edit.py:755 dcim/forms/bulk_import.py:92 #: dcim/forms/filtersets.py:71 dcim/forms/filtersets.py:178 #: dcim/forms/filtersets.py:204 dcim/forms/filtersets.py:257 -#: dcim/forms/filtersets.py:360 dcim/forms/filtersets.py:667 -#: dcim/forms/filtersets.py:894 dcim/forms/filtersets.py:924 -#: dcim/forms/filtersets.py:1008 dcim/forms/filtersets.py:1047 -#: dcim/forms/filtersets.py:1460 dcim/forms/filtersets.py:1484 -#: dcim/forms/filtersets.py:1508 dcim/forms/model_forms.py:111 +#: dcim/forms/filtersets.py:360 dcim/forms/filtersets.py:668 +#: dcim/forms/filtersets.py:902 dcim/forms/filtersets.py:932 +#: dcim/forms/filtersets.py:1016 dcim/forms/filtersets.py:1055 +#: dcim/forms/filtersets.py:1468 dcim/forms/filtersets.py:1492 +#: dcim/forms/filtersets.py:1516 dcim/forms/model_forms.py:111 #: dcim/forms/object_create.py:375 dcim/tables/devices.py:148 #: dcim/tables/sites.py:85 extras/filtersets.py:455 ipam/forms/bulk_edit.py:206 #: ipam/forms/bulk_edit.py:438 ipam/forms/bulk_edit.py:512 -#: ipam/forms/filtersets.py:216 ipam/forms/filtersets.py:415 -#: ipam/forms/filtersets.py:475 ipam/forms/model_forms.py:562 +#: ipam/forms/filtersets.py:217 ipam/forms/filtersets.py:422 +#: ipam/forms/filtersets.py:482 ipam/forms/model_forms.py:571 #: templates/dcim/device.html:17 templates/dcim/rack.html:16 #: templates/dcim/rackreservation.html:22 templates/dcim/region.html:26 #: templates/dcim/site.html:30 templates/ipam/prefix.html:49 @@ -726,42 +777,42 @@ msgstr "" msgid "Region" msgstr "" -#: circuits/forms/filtersets.py:39 circuits/forms/filtersets.py:159 +#: circuits/forms/filtersets.py:40 circuits/forms/filtersets.py:160 #: dcim/forms/bulk_edit.py:231 dcim/forms/bulk_edit.py:763 #: dcim/forms/filtersets.py:76 dcim/forms/filtersets.py:183 #: dcim/forms/filtersets.py:209 dcim/forms/filtersets.py:270 -#: dcim/forms/filtersets.py:365 dcim/forms/filtersets.py:672 -#: dcim/forms/filtersets.py:899 dcim/forms/filtersets.py:1013 -#: dcim/forms/filtersets.py:1052 dcim/forms/object_create.py:383 +#: dcim/forms/filtersets.py:365 dcim/forms/filtersets.py:673 +#: dcim/forms/filtersets.py:907 dcim/forms/filtersets.py:1021 +#: dcim/forms/filtersets.py:1060 dcim/forms/object_create.py:383 #: extras/filtersets.py:472 ipam/forms/bulk_edit.py:211 #: ipam/forms/bulk_edit.py:445 ipam/forms/bulk_edit.py:517 -#: ipam/forms/filtersets.py:221 ipam/forms/filtersets.py:420 -#: ipam/forms/filtersets.py:480 ipam/forms/model_forms.py:575 +#: ipam/forms/filtersets.py:222 ipam/forms/filtersets.py:427 +#: ipam/forms/filtersets.py:487 ipam/forms/model_forms.py:584 #: virtualization/forms/bulk_edit.py:86 virtualization/forms/filtersets.py:69 #: virtualization/forms/filtersets.py:138 #: virtualization/forms/model_forms.py:98 msgid "Site group" msgstr "" -#: circuits/forms/filtersets.py:62 circuits/forms/filtersets.py:80 -#: circuits/forms/filtersets.py:99 circuits/forms/filtersets.py:114 +#: circuits/forms/filtersets.py:63 circuits/forms/filtersets.py:81 +#: circuits/forms/filtersets.py:100 circuits/forms/filtersets.py:115 #: core/forms/filtersets.py:64 dcim/forms/bulk_edit.py:726 #: dcim/forms/filtersets.py:165 dcim/forms/filtersets.py:197 -#: dcim/forms/filtersets.py:826 dcim/forms/filtersets.py:918 -#: dcim/forms/filtersets.py:1042 dcim/forms/filtersets.py:1150 -#: dcim/forms/filtersets.py:1172 dcim/forms/filtersets.py:1194 -#: dcim/forms/filtersets.py:1211 dcim/forms/filtersets.py:1228 -#: dcim/forms/filtersets.py:1339 dcim/forms/filtersets.py:1361 -#: dcim/forms/filtersets.py:1382 dcim/forms/filtersets.py:1397 -#: dcim/forms/filtersets.py:1410 extras/forms/filtersets.py:43 +#: dcim/forms/filtersets.py:834 dcim/forms/filtersets.py:926 +#: dcim/forms/filtersets.py:1050 dcim/forms/filtersets.py:1158 +#: dcim/forms/filtersets.py:1180 dcim/forms/filtersets.py:1202 +#: dcim/forms/filtersets.py:1219 dcim/forms/filtersets.py:1236 +#: dcim/forms/filtersets.py:1347 dcim/forms/filtersets.py:1369 +#: dcim/forms/filtersets.py:1390 dcim/forms/filtersets.py:1405 +#: dcim/forms/filtersets.py:1418 extras/forms/filtersets.py:43 #: extras/forms/filtersets.py:112 extras/forms/filtersets.py:143 #: extras/forms/filtersets.py:183 extras/forms/filtersets.py:199 #: extras/forms/filtersets.py:230 extras/forms/filtersets.py:254 #: extras/forms/filtersets.py:450 extras/forms/filtersets.py:488 -#: ipam/forms/filtersets.py:99 ipam/forms/filtersets.py:259 -#: ipam/forms/filtersets.py:300 ipam/forms/filtersets.py:375 -#: ipam/forms/filtersets.py:468 ipam/forms/filtersets.py:527 -#: ipam/forms/filtersets.py:545 netbox/tables/tables.py:253 +#: ipam/forms/filtersets.py:99 ipam/forms/filtersets.py:266 +#: ipam/forms/filtersets.py:307 ipam/forms/filtersets.py:382 +#: ipam/forms/filtersets.py:475 ipam/forms/filtersets.py:534 +#: ipam/forms/filtersets.py:552 netbox/tables/tables.py:255 #: virtualization/forms/filtersets.py:45 virtualization/forms/filtersets.py:103 #: virtualization/forms/filtersets.py:194 #: virtualization/forms/filtersets.py:239 vpn/forms/filtersets.py:213 @@ -769,27 +820,14 @@ msgstr "" msgid "Attributes" msgstr "" -#: circuits/forms/filtersets.py:70 circuits/tables/circuits.py:60 +#: circuits/forms/filtersets.py:71 circuits/tables/circuits.py:61 #: circuits/tables/providers.py:66 templates/circuits/circuit.html:22 #: templates/circuits/provideraccount.html:24 msgid "Account" msgstr "" -#: circuits/forms/model_forms.py:153 -#: templates/circuits/inc/circuit_termination.html:88 -#: templates/circuits/providernetwork.html:17 -msgid "Provider Network" -msgstr "" - -#: circuits/forms/model_forms.py:155 -#: templates/circuits/inc/circuit_termination.html:80 -#: templates/dcim/frontport.html:121 templates/dcim/interface.html:193 -#: templates/dcim/rearport.html:111 -msgid "Circuit Termination" -msgstr "" - -#: circuits/forms/model_forms.py:157 -msgid "Termination Details" +#: circuits/forms/filtersets.py:215 +msgid "Term Side" msgstr "" #: circuits/models/circuits.py:25 dcim/models/cables.py:67 @@ -821,8 +859,8 @@ msgstr "" #: dcim/models/cables.py:49 dcim/models/devices.py:643 #: dcim/models/devices.py:1155 dcim/models/devices.py:1364 #: dcim/models/power.py:96 dcim/models/racks.py:98 dcim/models/sites.py:154 -#: dcim/models/sites.py:266 ipam/models/ip.py:252 ipam/models/ip.py:521 -#: ipam/models/ip.py:729 ipam/models/vlans.py:175 +#: dcim/models/sites.py:266 ipam/models/ip.py:253 ipam/models/ip.py:522 +#: ipam/models/ip.py:730 ipam/models/vlans.py:175 #: virtualization/models/clusters.py:74 #: virtualization/models/virtualmachines.py:84 vpn/models/tunnels.py:40 #: wireless/models.py:94 wireless/models.py:158 @@ -991,15 +1029,15 @@ msgstr "" msgid "provider networks" msgstr "" -#: circuits/tables/circuits.py:29 circuits/tables/providers.py:18 +#: circuits/tables/circuits.py:30 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:13 #: core/tables/tasks.py:11 core/tables/tasks.py:115 dcim/forms/filtersets.py:61 #: dcim/forms/object_create.py:43 dcim/tables/devices.py:60 #: dcim/tables/devices.py:97 dcim/tables/devices.py:139 -#: dcim/tables/devices.py:294 dcim/tables/devices.py:376 -#: dcim/tables/devices.py:420 dcim/tables/devices.py:472 -#: dcim/tables/devices.py:524 dcim/tables/devices.py:644 +#: dcim/tables/devices.py:294 dcim/tables/devices.py:380 +#: dcim/tables/devices.py:424 dcim/tables/devices.py:476 +#: dcim/tables/devices.py:528 dcim/tables/devices.py:644 #: dcim/tables/devices.py:726 dcim/tables/devices.py:776 #: dcim/tables/devices.py:842 dcim/tables/devices.py:957 #: dcim/tables/devices.py:977 dcim/tables/devices.py:1006 @@ -1013,7 +1051,7 @@ msgstr "" #: extras/tables/tables.py:256 extras/tables/tables.py:279 #: extras/tables/tables.py:329 extras/tables/tables.py:381 #: extras/tables/tables.py:404 ipam/forms/bulk_edit.py:391 -#: ipam/forms/filtersets.py:379 ipam/tables/asn.py:16 ipam/tables/ip.py:85 +#: ipam/forms/filtersets.py:386 ipam/tables/asn.py:16 ipam/tables/ip.py:85 #: ipam/tables/ip.py:159 ipam/tables/services.py:15 ipam/tables/services.py:40 #: ipam/tables/vlans.py:64 ipam/tables/vlans.py:110 ipam/tables/vrfs.py:26 #: ipam/tables/vrfs.py:67 templates/circuits/circuittype.html:22 @@ -1075,7 +1113,7 @@ msgstr "" msgid "Name" msgstr "" -#: circuits/tables/circuits.py:38 circuits/tables/providers.py:45 +#: circuits/tables/circuits.py:39 circuits/tables/providers.py:45 #: circuits/tables/providers.py:79 netbox/navigation/menu.py:253 #: netbox/navigation/menu.py:257 netbox/navigation/menu.py:259 #: templates/circuits/provider.html:57 @@ -1084,23 +1122,23 @@ msgstr "" msgid "Circuits" msgstr "" -#: circuits/tables/circuits.py:52 templates/circuits/circuit.html:26 +#: circuits/tables/circuits.py:53 templates/circuits/circuit.html:26 msgid "Circuit ID" msgstr "" -#: circuits/tables/circuits.py:65 wireless/forms/model_forms.py:160 +#: circuits/tables/circuits.py:66 wireless/forms/model_forms.py:160 msgid "Side A" msgstr "" -#: circuits/tables/circuits.py:69 +#: circuits/tables/circuits.py:70 msgid "Side Z" msgstr "" -#: circuits/tables/circuits.py:72 templates/circuits/circuit.html:55 +#: circuits/tables/circuits.py:73 templates/circuits/circuit.html:55 msgid "Commit Rate" msgstr "" -#: circuits/tables/circuits.py:75 circuits/tables/providers.py:48 +#: circuits/tables/circuits.py:76 circuits/tables/providers.py:48 #: circuits/tables/providers.py:82 circuits/tables/providers.py:107 #: dcim/tables/devices.py:1019 dcim/tables/devicetypes.py:92 #: dcim/tables/modules.py:29 dcim/tables/modules.py:72 dcim/tables/power.py:39 @@ -1156,12 +1194,12 @@ msgstr "" #: core/choices.py:22 core/choices.py:59 core/constants.py:20 #: core/tables/tasks.py:34 dcim/choices.py:176 dcim/choices.py:222 -#: dcim/choices.py:1506 extras/choices.py:226 virtualization/choices.py:47 +#: dcim/choices.py:1534 extras/choices.py:226 virtualization/choices.py:47 msgid "Failed" msgstr "" -#: core/choices.py:35 netbox/navigation/menu.py:319 -#: netbox/navigation/menu.py:323 templates/extras/script/base.html:14 +#: core/choices.py:35 netbox/navigation/menu.py:320 +#: netbox/navigation/menu.py:324 templates/extras/script/base.html:14 #: templates/extras/script_list.html:7 templates/extras/script_list.html:12 #: templates/extras/script_result.html:17 msgid "Scripts" @@ -1256,8 +1294,8 @@ msgstr "" #: core/forms/bulk_edit.py:25 core/forms/filtersets.py:40 #: core/tables/data.py:26 dcim/forms/bulk_edit.py:1020 -#: dcim/forms/bulk_edit.py:1293 dcim/forms/filtersets.py:1268 -#: dcim/tables/devices.py:549 dcim/tables/devicetypes.py:221 +#: dcim/forms/bulk_edit.py:1293 dcim/forms/filtersets.py:1276 +#: dcim/tables/devices.py:553 dcim/tables/devicetypes.py:221 #: extras/forms/bulk_edit.py:98 extras/forms/bulk_edit.py:162 #: extras/forms/bulk_edit.py:221 extras/forms/filtersets.py:120 #: extras/forms/filtersets.py:207 extras/forms/filtersets.py:268 @@ -1392,10 +1430,10 @@ msgstr "" msgid "Rack Elevations" msgstr "" -#: core/forms/model_forms.py:157 dcim/choices.py:1417 +#: core/forms/model_forms.py:157 dcim/choices.py:1445 #: dcim/forms/bulk_edit.py:867 dcim/forms/bulk_edit.py:1250 #: dcim/forms/bulk_edit.py:1268 dcim/tables/racks.py:89 -#: netbox/navigation/menu.py:275 netbox/navigation/menu.py:279 +#: netbox/navigation/menu.py:276 netbox/navigation/menu.py:280 msgid "Power" msgstr "" @@ -1428,7 +1466,7 @@ msgstr "" msgid "User Preferences" msgstr "" -#: core/forms/model_forms.py:167 dcim/forms/filtersets.py:660 +#: core/forms/model_forms.py:167 dcim/forms/filtersets.py:661 #: templates/core/inc/config_data.html:127 users/forms/model_forms.py:65 msgid "Miscellaneous" msgstr "" @@ -1566,7 +1604,7 @@ msgstr "" msgid "File path relative to the data source's root" msgstr "" -#: core/models/data.py:303 ipam/models/ip.py:502 +#: core/models/data.py:303 ipam/models/ip.py:503 msgid "size" msgstr "" @@ -1683,7 +1721,7 @@ msgstr "" #: core/tables/jobs.py:10 core/tables/tasks.py:76 #: dcim/tables/devicetypes.py:161 extras/tables/tables.py:179 -#: extras/tables/tables.py:350 netbox/tables/tables.py:187 +#: extras/tables/tables.py:350 netbox/tables/tables.py:188 #: templates/dcim/virtualchassis_edit.html:52 utilities/forms/forms.py:73 #: wireless/tables/wirelesslink.py:16 msgid "ID" @@ -1692,7 +1730,7 @@ msgstr "" #: core/tables/jobs.py:21 extras/choices.py:41 extras/tables/tables.py:241 #: extras/tables/tables.py:287 extras/tables/tables.py:360 #: extras/tables/tables.py:478 extras/tables/tables.py:509 -#: extras/tables/tables.py:574 netbox/tables/tables.py:241 +#: extras/tables/tables.py:574 netbox/tables/tables.py:243 #: templates/extras/eventrule.html:84 templates/extras/journalentry.html:18 #: templates/extras/objectchange.html:57 tenancy/tables/contacts.py:93 #: vpn/tables/l2vpn.py:64 @@ -1737,7 +1775,7 @@ msgstr "" msgid "Host" msgstr "" -#: core/tables/tasks.py:50 ipam/forms/filtersets.py:535 +#: core/tables/tasks.py:50 ipam/forms/filtersets.py:542 msgid "Port" msgstr "" @@ -1804,7 +1842,7 @@ msgid "Staging" msgstr "" #: dcim/choices.py:23 dcim/choices.py:178 dcim/choices.py:223 -#: dcim/choices.py:1430 virtualization/choices.py:23 +#: dcim/choices.py:1458 virtualization/choices.py:23 #: virtualization/choices.py:48 msgid "Decommissioning" msgstr "" @@ -1864,7 +1902,7 @@ msgstr "" msgid "Millimeters" msgstr "" -#: dcim/choices.py:115 dcim/choices.py:1452 +#: dcim/choices.py:115 dcim/choices.py:1480 msgid "Inches" msgstr "" @@ -1938,7 +1976,7 @@ msgstr "" msgid "Side to rear" msgstr "" -#: dcim/choices.py:198 dcim/choices.py:1225 +#: dcim/choices.py:198 dcim/choices.py:1253 msgid "Passive" msgstr "" @@ -1946,56 +1984,56 @@ msgstr "" msgid "Mixed" msgstr "" -#: dcim/choices.py:443 dcim/choices.py:680 +#: dcim/choices.py:447 dcim/choices.py:693 msgid "NEMA (Non-locking)" msgstr "" -#: dcim/choices.py:465 dcim/choices.py:702 +#: dcim/choices.py:469 dcim/choices.py:715 msgid "NEMA (Locking)" msgstr "" -#: dcim/choices.py:488 dcim/choices.py:725 +#: dcim/choices.py:492 dcim/choices.py:738 msgid "California Style" msgstr "" -#: dcim/choices.py:496 +#: dcim/choices.py:500 msgid "International/ITA" msgstr "" -#: dcim/choices.py:526 dcim/choices.py:755 +#: dcim/choices.py:535 dcim/choices.py:773 msgid "Proprietary" msgstr "" -#: dcim/choices.py:534 dcim/choices.py:764 dcim/choices.py:1141 -#: dcim/choices.py:1143 dcim/choices.py:1348 dcim/choices.py:1350 +#: dcim/choices.py:543 dcim/choices.py:782 dcim/choices.py:1169 +#: dcim/choices.py:1171 dcim/choices.py:1376 dcim/choices.py:1378 #: netbox/navigation/menu.py:187 msgid "Other" msgstr "" -#: dcim/choices.py:733 +#: dcim/choices.py:746 msgid "ITA/International" msgstr "" -#: dcim/choices.py:794 +#: dcim/choices.py:812 msgid "Physical" msgstr "" -#: dcim/choices.py:795 dcim/choices.py:954 +#: dcim/choices.py:813 dcim/choices.py:977 msgid "Virtual" msgstr "" -#: dcim/choices.py:796 dcim/choices.py:1026 dcim/forms/bulk_edit.py:1408 -#: dcim/forms/filtersets.py:1231 dcim/forms/model_forms.py:933 +#: dcim/choices.py:814 dcim/choices.py:1049 dcim/forms/bulk_edit.py:1408 +#: dcim/forms/filtersets.py:1239 dcim/forms/model_forms.py:933 #: dcim/forms/model_forms.py:1341 netbox/navigation/menu.py:127 #: netbox/navigation/menu.py:131 templates/dcim/interface.html:210 msgid "Wireless" msgstr "" -#: dcim/choices.py:952 +#: dcim/choices.py:975 msgid "Virtual interfaces" msgstr "" -#: dcim/choices.py:955 dcim/forms/bulk_edit.py:1303 +#: dcim/choices.py:978 dcim/forms/bulk_edit.py:1303 #: dcim/forms/bulk_import.py:785 dcim/forms/model_forms.py:919 #: dcim/tables/devices.py:656 templates/dcim/interface.html:106 #: templates/virtualization/vminterface.html:43 @@ -2005,152 +2043,152 @@ msgstr "" msgid "Bridge" msgstr "" -#: dcim/choices.py:956 +#: dcim/choices.py:979 msgid "Link Aggregation Group (LAG)" msgstr "" -#: dcim/choices.py:960 +#: dcim/choices.py:983 msgid "Ethernet (fixed)" msgstr "" -#: dcim/choices.py:974 +#: dcim/choices.py:997 msgid "Ethernet (modular)" msgstr "" -#: dcim/choices.py:1010 +#: dcim/choices.py:1033 msgid "Ethernet (backplane)" msgstr "" -#: dcim/choices.py:1040 +#: dcim/choices.py:1063 msgid "Cellular" msgstr "" -#: dcim/choices.py:1090 dcim/forms/filtersets.py:303 -#: dcim/forms/filtersets.py:737 dcim/forms/filtersets.py:874 -#: dcim/forms/filtersets.py:1426 templates/dcim/inventoryitem.html:52 +#: dcim/choices.py:1115 dcim/forms/filtersets.py:303 +#: dcim/forms/filtersets.py:738 dcim/forms/filtersets.py:882 +#: dcim/forms/filtersets.py:1434 templates/dcim/inventoryitem.html:52 #: templates/dcim/virtualchassis_edit.html:54 msgid "Serial" msgstr "" -#: dcim/choices.py:1105 +#: dcim/choices.py:1130 msgid "Coaxial" msgstr "" -#: dcim/choices.py:1122 +#: dcim/choices.py:1150 msgid "Stacking" msgstr "" -#: dcim/choices.py:1172 +#: dcim/choices.py:1200 msgid "Half" msgstr "" -#: dcim/choices.py:1173 +#: dcim/choices.py:1201 msgid "Full" msgstr "" -#: dcim/choices.py:1174 netbox/preferences.py:31 wireless/choices.py:480 +#: dcim/choices.py:1202 netbox/preferences.py:31 wireless/choices.py:480 msgid "Auto" msgstr "" -#: dcim/choices.py:1185 +#: dcim/choices.py:1213 msgid "Access" msgstr "" -#: dcim/choices.py:1186 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 +#: dcim/choices.py:1214 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 #: templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "" -#: dcim/choices.py:1187 +#: dcim/choices.py:1215 msgid "Tagged (All)" msgstr "" -#: dcim/choices.py:1216 +#: dcim/choices.py:1244 msgid "IEEE Standard" msgstr "" -#: dcim/choices.py:1227 +#: dcim/choices.py:1255 msgid "Passive 24V (2-pair)" msgstr "" -#: dcim/choices.py:1228 +#: dcim/choices.py:1256 msgid "Passive 24V (4-pair)" msgstr "" -#: dcim/choices.py:1229 +#: dcim/choices.py:1257 msgid "Passive 48V (2-pair)" msgstr "" -#: dcim/choices.py:1230 +#: dcim/choices.py:1258 msgid "Passive 48V (4-pair)" msgstr "" -#: dcim/choices.py:1292 dcim/choices.py:1388 +#: dcim/choices.py:1320 dcim/choices.py:1416 msgid "Copper" msgstr "" -#: dcim/choices.py:1315 +#: dcim/choices.py:1343 msgid "Fiber Optic" msgstr "" -#: dcim/choices.py:1404 +#: dcim/choices.py:1432 msgid "Fiber" msgstr "" -#: dcim/choices.py:1428 dcim/forms/filtersets.py:1138 +#: dcim/choices.py:1456 dcim/forms/filtersets.py:1146 msgid "Connected" msgstr "" -#: dcim/choices.py:1447 +#: dcim/choices.py:1475 msgid "Kilometers" msgstr "" -#: dcim/choices.py:1448 templates/dcim/cable_trace.html:65 +#: dcim/choices.py:1476 templates/dcim/cable_trace.html:65 msgid "Meters" msgstr "" -#: dcim/choices.py:1449 +#: dcim/choices.py:1477 msgid "Centimeters" msgstr "" -#: dcim/choices.py:1450 +#: dcim/choices.py:1478 msgid "Miles" msgstr "" -#: dcim/choices.py:1451 templates/dcim/cable_trace.html:66 +#: dcim/choices.py:1479 templates/dcim/cable_trace.html:66 msgid "Feet" msgstr "" -#: dcim/choices.py:1467 templates/dcim/device.html:319 +#: dcim/choices.py:1495 templates/dcim/device.html:319 #: templates/dcim/rack.html:152 msgid "Kilograms" msgstr "" -#: dcim/choices.py:1468 +#: dcim/choices.py:1496 msgid "Grams" msgstr "" -#: dcim/choices.py:1469 templates/dcim/rack.html:153 +#: dcim/choices.py:1497 templates/dcim/rack.html:153 msgid "Pounds" msgstr "" -#: dcim/choices.py:1470 +#: dcim/choices.py:1498 msgid "Ounces" msgstr "" -#: dcim/choices.py:1516 tenancy/choices.py:17 +#: dcim/choices.py:1544 tenancy/choices.py:17 msgid "Primary" msgstr "" -#: dcim/choices.py:1517 +#: dcim/choices.py:1545 msgid "Redundant" msgstr "" -#: dcim/choices.py:1538 +#: dcim/choices.py:1566 msgid "Single phase" msgstr "" -#: dcim/choices.py:1539 +#: dcim/choices.py:1567 msgid "Three-phase" msgstr "" @@ -2201,30 +2239,30 @@ msgid "Parent location (slug)" msgstr "" #: dcim/filtersets.py:257 dcim/filtersets.py:333 dcim/filtersets.py:432 -#: dcim/filtersets.py:1005 dcim/filtersets.py:1331 dcim/filtersets.py:2101 +#: dcim/filtersets.py:1005 dcim/filtersets.py:1341 dcim/filtersets.py:2111 msgid "Location (ID)" msgstr "" #: dcim/filtersets.py:264 dcim/filtersets.py:340 dcim/filtersets.py:439 -#: dcim/filtersets.py:1337 extras/filtersets.py:494 +#: dcim/filtersets.py:1347 extras/filtersets.py:494 msgid "Location (slug)" msgstr "" #: dcim/filtersets.py:354 dcim/filtersets.py:840 dcim/filtersets.py:942 -#: dcim/filtersets.py:1769 ipam/filtersets.py:381 ipam/filtersets.py:493 +#: dcim/filtersets.py:1779 ipam/filtersets.py:381 ipam/filtersets.py:493 #: ipam/filtersets.py:989 virtualization/filtersets.py:210 msgid "Role (ID)" msgstr "" #: dcim/filtersets.py:360 dcim/filtersets.py:846 dcim/filtersets.py:948 -#: dcim/filtersets.py:1775 extras/filtersets.py:510 ipam/filtersets.py:387 +#: dcim/filtersets.py:1785 extras/filtersets.py:510 ipam/filtersets.py:387 #: ipam/filtersets.py:499 ipam/filtersets.py:995 #: virtualization/filtersets.py:216 msgid "Role (slug)" msgstr "" -#: dcim/filtersets.py:389 dcim/filtersets.py:1010 dcim/filtersets.py:1342 -#: dcim/filtersets.py:2163 +#: dcim/filtersets.py:389 dcim/filtersets.py:1010 dcim/filtersets.py:1352 +#: dcim/filtersets.py:2173 msgid "Rack (ID)" msgstr "" @@ -2239,14 +2277,14 @@ msgid "User (name)" msgstr "" #: dcim/filtersets.py:481 dcim/filtersets.py:620 dcim/filtersets.py:830 -#: dcim/filtersets.py:881 dcim/filtersets.py:921 dcim/filtersets.py:1233 -#: dcim/filtersets.py:1759 +#: dcim/filtersets.py:881 dcim/filtersets.py:921 dcim/filtersets.py:1243 +#: dcim/filtersets.py:1769 msgid "Manufacturer (ID)" msgstr "" #: dcim/filtersets.py:487 dcim/filtersets.py:626 dcim/filtersets.py:836 -#: dcim/filtersets.py:887 dcim/filtersets.py:927 dcim/filtersets.py:1239 -#: dcim/filtersets.py:1765 +#: dcim/filtersets.py:887 dcim/filtersets.py:927 dcim/filtersets.py:1249 +#: dcim/filtersets.py:1775 msgid "Manufacturer (slug)" msgstr "" @@ -2268,37 +2306,37 @@ msgstr "" #: dcim/filtersets.py:509 dcim/filtersets.py:630 dcim/filtersets.py:1068 #: dcim/forms/filtersets.py:466 dcim/forms/filtersets.py:562 -#: dcim/forms/filtersets.py:776 +#: dcim/forms/filtersets.py:777 msgid "Has console ports" msgstr "" #: dcim/filtersets.py:513 dcim/filtersets.py:634 dcim/filtersets.py:1072 #: dcim/forms/filtersets.py:473 dcim/forms/filtersets.py:569 -#: dcim/forms/filtersets.py:783 +#: dcim/forms/filtersets.py:784 msgid "Has console server ports" msgstr "" #: dcim/filtersets.py:517 dcim/filtersets.py:638 dcim/filtersets.py:1076 #: dcim/forms/filtersets.py:480 dcim/forms/filtersets.py:576 -#: dcim/forms/filtersets.py:790 +#: dcim/forms/filtersets.py:791 msgid "Has power ports" msgstr "" #: dcim/filtersets.py:521 dcim/filtersets.py:642 dcim/filtersets.py:1080 #: dcim/forms/filtersets.py:487 dcim/forms/filtersets.py:583 -#: dcim/forms/filtersets.py:797 +#: dcim/forms/filtersets.py:798 msgid "Has power outlets" msgstr "" #: dcim/filtersets.py:525 dcim/filtersets.py:646 dcim/filtersets.py:1084 #: dcim/forms/filtersets.py:494 dcim/forms/filtersets.py:590 -#: dcim/forms/filtersets.py:804 +#: dcim/forms/filtersets.py:805 msgid "Has interfaces" msgstr "" #: dcim/filtersets.py:529 dcim/filtersets.py:650 dcim/filtersets.py:1088 #: dcim/forms/filtersets.py:501 dcim/forms/filtersets.py:597 -#: dcim/forms/filtersets.py:811 +#: dcim/forms/filtersets.py:812 msgid "Has pass-through ports" msgstr "" @@ -2314,19 +2352,19 @@ msgstr "" msgid "Has inventory items" msgstr "" -#: dcim/filtersets.py:698 dcim/filtersets.py:937 dcim/filtersets.py:1363 +#: dcim/filtersets.py:698 dcim/filtersets.py:937 dcim/filtersets.py:1373 msgid "Device type (ID)" msgstr "" -#: dcim/filtersets.py:717 dcim/filtersets.py:1244 +#: dcim/filtersets.py:717 dcim/filtersets.py:1254 msgid "Module type (ID)" msgstr "" -#: dcim/filtersets.py:752 dcim/filtersets.py:1514 +#: dcim/filtersets.py:752 dcim/filtersets.py:1524 msgid "Power port (ID)" msgstr "" -#: dcim/filtersets.py:826 dcim/filtersets.py:1755 +#: dcim/filtersets.py:826 dcim/filtersets.py:1765 msgid "Parent inventory item (ID)" msgstr "" @@ -2352,8 +2390,8 @@ msgstr "" msgid "Platform (slug)" msgstr "" -#: dcim/filtersets.py:999 dcim/filtersets.py:1326 dcim/filtersets.py:1853 -#: dcim/filtersets.py:2095 dcim/filtersets.py:2154 +#: dcim/filtersets.py:999 dcim/filtersets.py:1336 dcim/filtersets.py:1863 +#: dcim/filtersets.py:2105 dcim/filtersets.py:2164 msgid "Site name (slug)" msgstr "" @@ -2373,16 +2411,16 @@ msgstr "" msgid "Is full depth" msgstr "" -#: dcim/filtersets.py:1040 dcim/forms/common.py:18 dcim/forms/filtersets.py:746 -#: dcim/forms/filtersets.py:1283 dcim/models/device_components.py:519 +#: dcim/filtersets.py:1040 dcim/forms/common.py:18 dcim/forms/filtersets.py:747 +#: dcim/forms/filtersets.py:1291 dcim/models/device_components.py:519 #: virtualization/filtersets.py:230 virtualization/filtersets.py:297 #: virtualization/forms/filtersets.py:172 #: virtualization/forms/filtersets.py:219 msgid "MAC address" msgstr "" -#: dcim/filtersets.py:1047 dcim/filtersets.py:1201 dcim/forms/filtersets.py:755 -#: dcim/forms/filtersets.py:841 virtualization/filtersets.py:234 +#: dcim/filtersets.py:1047 dcim/filtersets.py:1211 dcim/forms/filtersets.py:756 +#: dcim/forms/filtersets.py:849 virtualization/filtersets.py:234 #: virtualization/forms/filtersets.py:176 msgid "Has a primary IP" msgstr "" @@ -2403,59 +2441,63 @@ msgstr "" msgid "OOB IP (ID)" msgstr "" -#: dcim/filtersets.py:1184 +#: dcim/filtersets.py:1105 +msgid "Has virtual device context" +msgstr "" + +#: dcim/filtersets.py:1194 msgid "VDC (ID)" msgstr "" -#: dcim/filtersets.py:1189 +#: dcim/filtersets.py:1199 msgid "Device model" msgstr "" -#: dcim/filtersets.py:1194 ipam/filtersets.py:632 vpn/filtersets.py:102 +#: dcim/filtersets.py:1204 ipam/filtersets.py:632 vpn/filtersets.py:102 #: vpn/filtersets.py:420 msgid "Interface (ID)" msgstr "" -#: dcim/filtersets.py:1250 +#: dcim/filtersets.py:1260 msgid "Module type (model)" msgstr "" -#: dcim/filtersets.py:1256 +#: dcim/filtersets.py:1266 msgid "Module Bay (ID)" msgstr "" -#: dcim/filtersets.py:1260 dcim/filtersets.py:1352 ipam/filtersets.py:611 +#: dcim/filtersets.py:1270 dcim/filtersets.py:1362 ipam/filtersets.py:611 #: ipam/filtersets.py:851 ipam/filtersets.py:1075 #: virtualization/filtersets.py:161 vpn/filtersets.py:398 msgid "Device (ID)" msgstr "" -#: dcim/filtersets.py:1348 +#: dcim/filtersets.py:1358 msgid "Rack (name)" msgstr "" -#: dcim/filtersets.py:1358 ipam/filtersets.py:606 ipam/filtersets.py:846 +#: dcim/filtersets.py:1368 ipam/filtersets.py:606 ipam/filtersets.py:846 #: ipam/filtersets.py:1081 vpn/filtersets.py:393 msgid "Device (name)" msgstr "" -#: dcim/filtersets.py:1369 +#: dcim/filtersets.py:1379 msgid "Device type (model)" msgstr "" -#: dcim/filtersets.py:1374 +#: dcim/filtersets.py:1384 msgid "Device role (ID)" msgstr "" -#: dcim/filtersets.py:1380 +#: dcim/filtersets.py:1390 msgid "Device role (slug)" msgstr "" -#: dcim/filtersets.py:1385 +#: dcim/filtersets.py:1395 msgid "Virtual Chassis (ID)" msgstr "" -#: dcim/filtersets.py:1391 dcim/forms/filtersets.py:107 +#: dcim/filtersets.py:1401 dcim/forms/filtersets.py:107 #: dcim/tables/devices.py:211 netbox/navigation/menu.py:66 #: templates/dcim/device.html:119 templates/dcim/device_edit.html:93 #: templates/dcim/virtualchassis.html:20 @@ -2464,37 +2506,37 @@ msgstr "" msgid "Virtual Chassis" msgstr "" -#: dcim/filtersets.py:1411 +#: dcim/filtersets.py:1421 msgid "Module (ID)" msgstr "" -#: dcim/filtersets.py:1418 +#: dcim/filtersets.py:1428 msgid "Cable (ID)" msgstr "" -#: dcim/filtersets.py:1527 ipam/forms/bulk_import.py:188 +#: dcim/filtersets.py:1537 ipam/forms/bulk_import.py:188 #: vpn/forms/bulk_import.py:308 msgid "Assigned VLAN" msgstr "" -#: dcim/filtersets.py:1531 +#: dcim/filtersets.py:1541 msgid "Assigned VID" msgstr "" -#: dcim/filtersets.py:1536 dcim/forms/bulk_edit.py:1382 -#: dcim/forms/bulk_import.py:836 dcim/forms/filtersets.py:1326 +#: dcim/filtersets.py:1546 dcim/forms/bulk_edit.py:1382 +#: dcim/forms/bulk_import.py:836 dcim/forms/filtersets.py:1334 #: dcim/forms/model_forms.py:1322 dcim/models/device_components.py:712 -#: dcim/tables/devices.py:618 ipam/filtersets.py:316 ipam/filtersets.py:327 +#: dcim/tables/devices.py:622 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:227 ipam/forms/bulk_edit.py:282 #: ipam/forms/bulk_edit.py:324 ipam/forms/bulk_import.py:156 #: ipam/forms/bulk_import.py:242 ipam/forms/bulk_import.py:278 -#: ipam/forms/filtersets.py:67 ipam/forms/filtersets.py:171 -#: ipam/forms/filtersets.py:302 ipam/forms/model_forms.py:60 +#: ipam/forms/filtersets.py:67 ipam/forms/filtersets.py:172 +#: ipam/forms/filtersets.py:309 ipam/forms/model_forms.py:60 #: ipam/forms/model_forms.py:200 ipam/forms/model_forms.py:245 -#: ipam/forms/model_forms.py:298 ipam/forms/model_forms.py:420 -#: ipam/forms/model_forms.py:434 ipam/forms/model_forms.py:448 -#: ipam/models/ip.py:232 ipam/models/ip.py:511 ipam/models/ip.py:719 +#: ipam/forms/model_forms.py:298 ipam/forms/model_forms.py:429 +#: ipam/forms/model_forms.py:443 ipam/forms/model_forms.py:457 +#: ipam/models/ip.py:233 ipam/models/ip.py:512 ipam/models/ip.py:720 #: ipam/models/vrfs.py:62 ipam/tables/ip.py:241 ipam/tables/ip.py:306 #: ipam/tables/ip.py:356 ipam/tables/ip.py:445 #: templates/dcim/interface.html:133 templates/ipam/ipaddress.html:18 @@ -2510,18 +2552,18 @@ msgstr "" msgid "VRF" msgstr "" -#: dcim/filtersets.py:1542 ipam/filtersets.py:322 ipam/filtersets.py:333 +#: dcim/filtersets.py:1552 ipam/filtersets.py:322 ipam/filtersets.py:333 #: ipam/filtersets.py:489 ipam/filtersets.py:590 ipam/filtersets.py:601 msgid "VRF (RD)" msgstr "" -#: dcim/filtersets.py:1547 ipam/filtersets.py:1016 vpn/filtersets.py:361 +#: dcim/filtersets.py:1557 ipam/filtersets.py:1016 vpn/filtersets.py:361 msgid "L2VPN (ID)" msgstr "" -#: dcim/filtersets.py:1553 dcim/forms/filtersets.py:1331 -#: dcim/tables/devices.py:566 ipam/filtersets.py:1022 -#: ipam/forms/filtersets.py:518 ipam/tables/vlans.py:133 +#: dcim/filtersets.py:1563 dcim/forms/filtersets.py:1339 +#: dcim/tables/devices.py:570 ipam/filtersets.py:1022 +#: ipam/forms/filtersets.py:525 ipam/tables/vlans.py:133 #: templates/dcim/interface.html:93 templates/ipam/vlan.html:66 #: templates/vpn/l2vpntermination.html:12 #: virtualization/forms/filtersets.py:229 vpn/forms/bulk_import.py:280 @@ -2530,82 +2572,82 @@ msgstr "" msgid "L2VPN" msgstr "" -#: dcim/filtersets.py:1585 +#: dcim/filtersets.py:1595 msgid "Virtual Chassis Interfaces for Device" msgstr "" -#: dcim/filtersets.py:1590 +#: dcim/filtersets.py:1600 msgid "Virtual Chassis Interfaces for Device (ID)" msgstr "" -#: dcim/filtersets.py:1594 +#: dcim/filtersets.py:1604 msgid "Kind of interface" msgstr "" -#: dcim/filtersets.py:1599 virtualization/filtersets.py:289 +#: dcim/filtersets.py:1609 virtualization/filtersets.py:289 msgid "Parent interface (ID)" msgstr "" -#: dcim/filtersets.py:1604 virtualization/filtersets.py:294 +#: dcim/filtersets.py:1614 virtualization/filtersets.py:294 msgid "Bridged interface (ID)" msgstr "" -#: dcim/filtersets.py:1609 +#: dcim/filtersets.py:1619 msgid "LAG interface (ID)" msgstr "" -#: dcim/filtersets.py:1636 dcim/filtersets.py:1648 -#: dcim/forms/filtersets.py:1243 dcim/forms/model_forms.py:1634 +#: dcim/filtersets.py:1646 dcim/filtersets.py:1658 +#: dcim/forms/filtersets.py:1251 dcim/forms/model_forms.py:1634 #: templates/dcim/virtualdevicecontext.html:15 msgid "Virtual Device Context" msgstr "" -#: dcim/filtersets.py:1642 +#: dcim/filtersets.py:1652 msgid "Virtual Device Context (Identifier)" msgstr "" -#: dcim/filtersets.py:1653 templates/wireless/wirelesslan.html:11 +#: dcim/filtersets.py:1663 templates/wireless/wirelesslan.html:11 #: wireless/forms/model_forms.py:53 msgid "Wireless LAN" msgstr "" -#: dcim/filtersets.py:1657 dcim/tables/devices.py:605 +#: dcim/filtersets.py:1667 dcim/tables/devices.py:609 msgid "Wireless link" msgstr "" -#: dcim/filtersets.py:1727 +#: dcim/filtersets.py:1737 msgid "Installed module (ID)" msgstr "" -#: dcim/filtersets.py:1738 +#: dcim/filtersets.py:1748 msgid "Installed device (ID)" msgstr "" -#: dcim/filtersets.py:1744 +#: dcim/filtersets.py:1754 msgid "Installed device (name)" msgstr "" -#: dcim/filtersets.py:1810 +#: dcim/filtersets.py:1820 msgid "Master (ID)" msgstr "" -#: dcim/filtersets.py:1816 +#: dcim/filtersets.py:1826 msgid "Master (name)" msgstr "" -#: dcim/filtersets.py:1858 tenancy/filtersets.py:246 +#: dcim/filtersets.py:1868 tenancy/filtersets.py:246 msgid "Tenant (ID)" msgstr "" -#: dcim/filtersets.py:1864 extras/filtersets.py:570 tenancy/filtersets.py:252 +#: dcim/filtersets.py:1874 extras/filtersets.py:570 tenancy/filtersets.py:252 msgid "Tenant (slug)" msgstr "" -#: dcim/filtersets.py:1900 dcim/forms/filtersets.py:988 +#: dcim/filtersets.py:1910 dcim/forms/filtersets.py:996 msgid "Unterminated" msgstr "" -#: dcim/filtersets.py:2158 +#: dcim/filtersets.py:2168 msgid "Power panel (ID)" msgstr "" @@ -2613,13 +2655,13 @@ msgstr "" #: extras/forms/model_forms.py:443 extras/forms/model_forms.py:495 #: netbox/forms/base.py:84 netbox/forms/mixins.py:81 #: netbox/tables/columns.py:458 -#: templates/circuits/inc/circuit_termination.html:118 +#: 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 msgid "Tags" msgstr "" -#: dcim/forms/bulk_create.py:112 dcim/forms/filtersets.py:1388 +#: dcim/forms/bulk_create.py:112 dcim/forms/filtersets.py:1396 #: dcim/forms/model_forms.py:431 dcim/forms/model_forms.py:486 #: dcim/forms/object_create.py:197 dcim/forms/object_create.py:353 #: dcim/tables/devices.py:170 dcim/tables/devices.py:702 @@ -2639,7 +2681,7 @@ msgstr "" #: dcim/forms/bulk_edit.py:116 dcim/forms/bulk_import.py:99 #: dcim/forms/model_forms.py:116 dcim/tables/sites.py:89 ipam/filtersets.py:985 #: ipam/forms/bulk_edit.py:531 ipam/forms/bulk_import.py:444 -#: ipam/forms/model_forms.py:517 ipam/tables/fhrp.py:67 +#: ipam/forms/model_forms.py:526 ipam/tables/fhrp.py:67 #: ipam/tables/vlans.py:118 ipam/tables/vlans.py:221 #: templates/dcim/interface.html:284 templates/dcim/site.html:36 #: templates/ipam/inc/panels/fhrp_groups.html:23 templates/ipam/vlan.html:27 @@ -2686,7 +2728,7 @@ msgstr "" #: dcim/forms/bulk_edit.py:267 dcim/forms/bulk_edit.py:1160 #: dcim/forms/bulk_edit.py:1548 dcim/forms/bulk_import.py:207 #: dcim/forms/bulk_import.py:1021 dcim/forms/filtersets.py:300 -#: dcim/forms/filtersets.py:705 dcim/forms/filtersets.py:1418 +#: dcim/forms/filtersets.py:706 dcim/forms/filtersets.py:1426 #: dcim/forms/model_forms.py:219 dcim/forms/model_forms.py:1015 #: dcim/forms/model_forms.py:1454 dcim/forms/object_import.py:181 #: dcim/tables/devices.py:174 dcim/tables/devices.py:810 @@ -2695,11 +2737,11 @@ msgstr "" #: ipam/forms/bulk_edit.py:295 ipam/forms/bulk_edit.py:343 #: ipam/forms/bulk_edit.py:549 ipam/forms/bulk_import.py:196 #: ipam/forms/bulk_import.py:261 ipam/forms/bulk_import.py:297 -#: ipam/forms/bulk_import.py:463 ipam/forms/filtersets.py:236 -#: ipam/forms/filtersets.py:282 ipam/forms/filtersets.py:353 -#: ipam/forms/filtersets.py:509 ipam/forms/model_forms.py:186 +#: ipam/forms/bulk_import.py:463 ipam/forms/filtersets.py:237 +#: ipam/forms/filtersets.py:289 ipam/forms/filtersets.py:360 +#: ipam/forms/filtersets.py:516 ipam/forms/model_forms.py:186 #: ipam/forms/model_forms.py:219 ipam/forms/model_forms.py:248 -#: ipam/forms/model_forms.py:680 ipam/tables/ip.py:257 ipam/tables/ip.py:313 +#: ipam/forms/model_forms.py:689 ipam/tables/ip.py:257 ipam/tables/ip.py:313 #: ipam/tables/ip.py:363 ipam/tables/vlans.py:126 ipam/tables/vlans.py:230 #: templates/dcim/device.html:179 #: templates/dcim/inc/panels/inventory_items.html:20 @@ -2731,8 +2773,8 @@ msgid "Serial Number" msgstr "" #: dcim/forms/bulk_edit.py:277 dcim/forms/filtersets.py:307 -#: dcim/forms/filtersets.py:741 dcim/forms/filtersets.py:878 -#: dcim/forms/filtersets.py:1430 +#: dcim/forms/filtersets.py:742 dcim/forms/filtersets.py:886 +#: dcim/forms/filtersets.py:1438 msgid "Asset tag" msgstr "" @@ -2803,13 +2845,13 @@ msgstr "" #: dcim/forms/bulk_import.py:498 dcim/forms/bulk_import.py:1309 #: dcim/forms/bulk_import.py:1313 dcim/forms/filtersets.py:102 #: dcim/forms/filtersets.py:340 dcim/forms/filtersets.py:354 -#: dcim/forms/filtersets.py:392 dcim/forms/filtersets.py:700 -#: dcim/forms/filtersets.py:946 dcim/forms/filtersets.py:1078 +#: dcim/forms/filtersets.py:392 dcim/forms/filtersets.py:701 +#: dcim/forms/filtersets.py:954 dcim/forms/filtersets.py:1086 #: dcim/forms/model_forms.py:226 dcim/forms/model_forms.py:248 #: dcim/forms/model_forms.py:422 dcim/forms/model_forms.py:700 #: dcim/forms/object_create.py:400 dcim/tables/devices.py:166 #: dcim/tables/power.py:70 dcim/tables/racks.py:148 ipam/forms/bulk_edit.py:465 -#: ipam/forms/filtersets.py:435 ipam/forms/model_forms.py:601 +#: ipam/forms/filtersets.py:442 ipam/forms/model_forms.py:610 #: templates/dcim/device.html:29 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 @@ -2821,7 +2863,7 @@ msgstr "" #: dcim/forms/bulk_edit.py:349 dcim/forms/bulk_edit.py:628 #: dcim/forms/filtersets.py:248 dcim/forms/filtersets.py:333 #: dcim/forms/filtersets.py:416 dcim/forms/filtersets.py:543 -#: dcim/forms/filtersets.py:651 dcim/forms/filtersets.py:853 +#: dcim/forms/filtersets.py:651 dcim/forms/filtersets.py:861 #: dcim/forms/model_forms.py:610 dcim/forms/model_forms.py:1524 #: templates/dcim/device_edit.html:20 msgid "Hardware" @@ -2834,8 +2876,8 @@ msgstr "" #: dcim/forms/bulk_import.py:353 dcim/forms/bulk_import.py:395 #: dcim/forms/bulk_import.py:431 dcim/forms/bulk_import.py:1027 #: dcim/forms/filtersets.py:429 dcim/forms/filtersets.py:554 -#: dcim/forms/filtersets.py:630 dcim/forms/filtersets.py:710 -#: dcim/forms/filtersets.py:858 dcim/forms/filtersets.py:1423 +#: dcim/forms/filtersets.py:630 dcim/forms/filtersets.py:711 +#: dcim/forms/filtersets.py:866 dcim/forms/filtersets.py:1431 #: dcim/forms/model_forms.py:281 dcim/forms/model_forms.py:293 #: dcim/forms/model_forms.py:339 dcim/forms/model_forms.py:379 #: dcim/forms/model_forms.py:1020 dcim/forms/model_forms.py:1459 @@ -2869,7 +2911,7 @@ msgstr "" #: dcim/forms/bulk_edit.py:431 dcim/forms/bulk_edit.py:603 #: dcim/forms/bulk_import.py:525 dcim/forms/filtersets.py:446 -#: dcim/forms/filtersets.py:732 templates/dcim/device.html:97 +#: dcim/forms/filtersets.py:733 templates/dcim/device.html:97 #: templates/dcim/devicetype.html:65 msgid "Airflow" msgstr "" @@ -2896,7 +2938,7 @@ msgstr "" #: dcim/forms/bulk_import.py:380 dcim/forms/bulk_import.py:402 #: dcim/forms/bulk_import.py:406 dcim/forms/bulk_import.py:531 #: dcim/forms/bulk_import.py:535 dcim/forms/filtersets.py:619 -#: dcim/forms/filtersets.py:635 dcim/forms/filtersets.py:751 +#: dcim/forms/filtersets.py:635 dcim/forms/filtersets.py:752 #: dcim/forms/model_forms.py:358 dcim/forms/model_forms.py:384 #: dcim/forms/model_forms.py:495 virtualization/forms/bulk_import.py:132 #: virtualization/forms/bulk_import.py:133 @@ -2918,7 +2960,7 @@ msgid "Device role" msgstr "" #: dcim/forms/bulk_edit.py:593 dcim/forms/bulk_import.py:443 -#: dcim/forms/filtersets.py:724 dcim/forms/model_forms.py:394 +#: dcim/forms/filtersets.py:725 dcim/forms/model_forms.py:394 #: dcim/forms/model_forms.py:456 dcim/tables/devices.py:187 #: extras/filtersets.py:515 templates/dcim/device.html:183 #: templates/dcim/platform.html:26 @@ -2940,28 +2982,28 @@ msgstr "" #: dcim/forms/bulk_import.py:956 dcim/forms/bulk_import.py:968 #: dcim/forms/bulk_import.py:1016 dcim/forms/bulk_import.py:1373 #: dcim/forms/connections.py:24 dcim/forms/filtersets.py:129 -#: dcim/forms/filtersets.py:832 dcim/forms/filtersets.py:962 -#: dcim/forms/filtersets.py:1152 dcim/forms/filtersets.py:1174 -#: dcim/forms/filtersets.py:1196 dcim/forms/filtersets.py:1213 -#: dcim/forms/filtersets.py:1233 dcim/forms/filtersets.py:1341 -#: dcim/forms/filtersets.py:1363 dcim/forms/filtersets.py:1384 -#: dcim/forms/filtersets.py:1399 dcim/forms/filtersets.py:1413 -#: dcim/forms/filtersets.py:1476 dcim/forms/filtersets.py:1500 -#: dcim/forms/filtersets.py:1524 dcim/forms/model_forms.py:573 +#: dcim/forms/filtersets.py:840 dcim/forms/filtersets.py:970 +#: dcim/forms/filtersets.py:1160 dcim/forms/filtersets.py:1182 +#: dcim/forms/filtersets.py:1204 dcim/forms/filtersets.py:1221 +#: dcim/forms/filtersets.py:1241 dcim/forms/filtersets.py:1349 +#: dcim/forms/filtersets.py:1371 dcim/forms/filtersets.py:1392 +#: dcim/forms/filtersets.py:1407 dcim/forms/filtersets.py:1421 +#: dcim/forms/filtersets.py:1484 dcim/forms/filtersets.py:1508 +#: dcim/forms/filtersets.py:1532 dcim/forms/model_forms.py:573 #: dcim/forms/model_forms.py:794 dcim/forms/model_forms.py:1153 #: dcim/forms/model_forms.py:1608 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:290 -#: dcim/tables/devices.py:355 dcim/tables/devices.py:399 -#: dcim/tables/devices.py:444 dcim/tables/devices.py:498 -#: dcim/tables/devices.py:590 dcim/tables/devices.py:692 +#: dcim/tables/devices.py:359 dcim/tables/devices.py:403 +#: dcim/tables/devices.py:448 dcim/tables/devices.py:502 +#: dcim/tables/devices.py:594 dcim/tables/devices.py:692 #: dcim/tables/devices.py:752 dcim/tables/devices.py:802 #: dcim/tables/devices.py:862 dcim/tables/devices.py:914 #: dcim/tables/devices.py:1040 dcim/tables/modules.py:52 #: extras/forms/filtersets.py:330 ipam/forms/bulk_import.py:303 -#: ipam/forms/bulk_import.py:489 ipam/forms/filtersets.py:551 -#: ipam/forms/model_forms.py:317 ipam/forms/model_forms.py:716 -#: ipam/forms/model_forms.py:749 ipam/forms/model_forms.py:775 +#: ipam/forms/bulk_import.py:489 ipam/forms/filtersets.py:558 +#: ipam/forms/model_forms.py:317 ipam/forms/model_forms.py:725 +#: ipam/forms/model_forms.py:758 ipam/forms/model_forms.py:784 #: ipam/tables/vlans.py:176 templates/dcim/consoleport.html:20 #: templates/dcim/consoleserverport.html:20 templates/dcim/device.html:14 #: templates/dcim/device.html:128 templates/dcim/device_edit.html:10 @@ -3016,13 +3058,13 @@ msgstr "" msgid "Label" msgstr "" -#: dcim/forms/bulk_edit.py:706 dcim/forms/filtersets.py:979 +#: dcim/forms/bulk_edit.py:706 dcim/forms/filtersets.py:987 #: templates/dcim/cable.html:50 msgid "Length" msgstr "" #: dcim/forms/bulk_edit.py:711 dcim/forms/bulk_import.py:1174 -#: dcim/forms/bulk_import.py:1177 dcim/forms/filtersets.py:983 +#: dcim/forms/bulk_import.py:1177 dcim/forms/filtersets.py:991 msgid "Length unit" msgstr "" @@ -3031,41 +3073,34 @@ msgid "Domain" msgstr "" #: dcim/forms/bulk_edit.py:803 dcim/forms/bulk_import.py:1296 -#: dcim/forms/filtersets.py:1069 dcim/forms/model_forms.py:695 +#: dcim/forms/filtersets.py:1077 dcim/forms/model_forms.py:695 msgid "Power panel" msgstr "" #: dcim/forms/bulk_edit.py:825 dcim/forms/bulk_import.py:1332 -#: dcim/forms/filtersets.py:1091 templates/dcim/powerfeed.html:83 +#: dcim/forms/filtersets.py:1099 templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "" #: dcim/forms/bulk_edit.py:831 dcim/forms/bulk_import.py:1337 -#: dcim/forms/filtersets.py:1096 templates/dcim/powerfeed.html:95 +#: dcim/forms/filtersets.py:1104 templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "" -#: dcim/forms/bulk_edit.py:837 dcim/forms/filtersets.py:1101 +#: dcim/forms/bulk_edit.py:837 dcim/forms/filtersets.py:1109 #: templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "" -#: dcim/forms/bulk_edit.py:841 dcim/forms/filtersets.py:1105 +#: dcim/forms/bulk_edit.py:841 dcim/forms/filtersets.py:1113 #: templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "" -#: dcim/forms/bulk_edit.py:845 dcim/forms/filtersets.py:1109 +#: dcim/forms/bulk_edit.py:845 dcim/forms/filtersets.py:1117 msgid "Max utilization" msgstr "" -#: dcim/forms/bulk_edit.py:849 dcim/forms/bulk_edit.py:1208 -#: dcim/forms/bulk_edit.py:1225 dcim/forms/bulk_edit.py:1242 -#: dcim/forms/bulk_edit.py:1260 dcim/forms/bulk_edit.py:1348 -#: dcim/forms/bulk_edit.py:1487 dcim/forms/bulk_edit.py:1504 -msgid "Mark connected" -msgstr "" - #: dcim/forms/bulk_edit.py:934 msgid "Maximum draw" msgstr "" @@ -3099,20 +3134,20 @@ msgid "Management only" msgstr "" #: dcim/forms/bulk_edit.py:1037 dcim/forms/bulk_edit.py:1339 -#: dcim/forms/bulk_import.py:821 dcim/forms/filtersets.py:1292 +#: dcim/forms/bulk_import.py:821 dcim/forms/filtersets.py:1300 #: dcim/forms/object_import.py:90 dcim/models/device_component_templates.py:411 #: dcim/models/device_components.py:671 msgid "PoE mode" msgstr "" #: dcim/forms/bulk_edit.py:1043 dcim/forms/bulk_edit.py:1345 -#: dcim/forms/bulk_import.py:827 dcim/forms/filtersets.py:1297 +#: dcim/forms/bulk_import.py:827 dcim/forms/filtersets.py:1305 #: dcim/forms/object_import.py:95 dcim/models/device_component_templates.py:417 #: dcim/models/device_components.py:677 msgid "PoE type" msgstr "" -#: dcim/forms/bulk_edit.py:1049 dcim/forms/filtersets.py:1302 +#: dcim/forms/bulk_edit.py:1049 dcim/forms/filtersets.py:1310 #: dcim/forms/object_import.py:100 msgid "Wireless role" msgstr "" @@ -3137,10 +3172,10 @@ msgid "Virtual device contexts" msgstr "" #: dcim/forms/bulk_edit.py:1324 dcim/forms/bulk_import.py:659 -#: dcim/forms/bulk_import.py:685 dcim/forms/filtersets.py:1161 -#: dcim/forms/filtersets.py:1183 dcim/forms/filtersets.py:1256 -#: dcim/tables/devices.py:602 -#: templates/circuits/inc/circuit_termination.html:93 +#: dcim/forms/bulk_import.py:685 dcim/forms/filtersets.py:1169 +#: dcim/forms/filtersets.py:1191 dcim/forms/filtersets.py:1264 +#: dcim/tables/devices.py:606 +#: templates/circuits/inc/circuit_termination_fields.html:67 #: templates/dcim/consoleport.html:40 templates/dcim/consoleserverport.html:40 msgid "Speed" msgstr "" @@ -3157,20 +3192,20 @@ msgid "Mode" msgstr "" #: dcim/forms/bulk_edit.py:1361 dcim/forms/model_forms.py:1299 -#: ipam/forms/bulk_import.py:177 ipam/forms/filtersets.py:498 +#: ipam/forms/bulk_import.py:177 ipam/forms/filtersets.py:505 #: ipam/models/vlans.py:84 virtualization/forms/bulk_edit.py:240 #: virtualization/forms/model_forms.py:321 msgid "VLAN group" msgstr "" #: dcim/forms/bulk_edit.py:1369 dcim/forms/model_forms.py:1304 -#: dcim/tables/devices.py:575 virtualization/forms/bulk_edit.py:248 +#: dcim/tables/devices.py:579 virtualization/forms/bulk_edit.py:248 #: virtualization/forms/model_forms.py:326 msgid "Untagged VLAN" msgstr "" #: dcim/forms/bulk_edit.py:1377 dcim/forms/model_forms.py:1313 -#: dcim/tables/devices.py:581 virtualization/forms/bulk_edit.py:256 +#: dcim/tables/devices.py:585 virtualization/forms/bulk_edit.py:256 #: virtualization/forms/model_forms.py:335 msgid "Tagged VLANs" msgstr "" @@ -3180,12 +3215,12 @@ msgid "Wireless LAN group" msgstr "" #: dcim/forms/bulk_edit.py:1392 dcim/forms/model_forms.py:1291 -#: dcim/tables/devices.py:611 netbox/navigation/menu.py:133 +#: dcim/tables/devices.py:615 netbox/navigation/menu.py:133 #: templates/dcim/interface.html:280 wireless/tables/wirelesslan.py:24 msgid "Wireless LANs" msgstr "" -#: dcim/forms/bulk_edit.py:1401 dcim/forms/filtersets.py:1229 +#: dcim/forms/bulk_edit.py:1401 dcim/forms/filtersets.py:1237 #: dcim/forms/model_forms.py:1334 ipam/forms/bulk_edit.py:271 #: ipam/forms/bulk_edit.py:362 ipam/forms/filtersets.py:169 #: templates/dcim/interface.html:122 templates/ipam/prefix.html:95 @@ -3198,7 +3233,7 @@ msgstr "" msgid "Operation" msgstr "" -#: dcim/forms/bulk_edit.py:1403 dcim/forms/filtersets.py:1230 +#: dcim/forms/bulk_edit.py:1403 dcim/forms/filtersets.py:1238 #: dcim/forms/model_forms.py:932 dcim/forms/model_forms.py:1337 msgid "PoE" msgstr "" @@ -3354,8 +3389,8 @@ msgstr "" #: dcim/forms/bulk_import.py:462 dcim/forms/model_forms.py:465 #: dcim/tables/devices.py:207 extras/filtersets.py:548 #: extras/forms/filtersets.py:331 ipam/forms/bulk_edit.py:479 -#: ipam/forms/filtersets.py:408 ipam/forms/filtersets.py:452 -#: ipam/forms/model_forms.py:618 templates/dcim/device.html:231 +#: ipam/forms/filtersets.py:415 ipam/forms/filtersets.py:459 +#: ipam/forms/model_forms.py:627 templates/dcim/device.html:231 #: templates/virtualization/cluster.html:10 #: templates/virtualization/virtualmachine.html:88 #: templates/virtualization/virtualmachine.html:97 @@ -3492,7 +3527,7 @@ msgstr "" msgid "Physical medium" msgstr "" -#: dcim/forms/bulk_import.py:813 dcim/forms/filtersets.py:1263 +#: dcim/forms/bulk_import.py:813 dcim/forms/filtersets.py:1271 msgid "Duplex" msgstr "" @@ -3510,8 +3545,8 @@ msgstr "" #: dcim/forms/bulk_import.py:840 ipam/forms/bulk_import.py:160 #: ipam/forms/bulk_import.py:246 ipam/forms/bulk_import.py:282 -#: ipam/forms/filtersets.py:200 ipam/forms/filtersets.py:270 -#: ipam/forms/filtersets.py:329 virtualization/forms/bulk_import.py:175 +#: ipam/forms/filtersets.py:201 ipam/forms/filtersets.py:277 +#: ipam/forms/filtersets.py:336 virtualization/forms/bulk_import.py:175 msgid "Assigned VRF" msgstr "" @@ -3734,29 +3769,33 @@ msgstr "" msgid "Subdevice role" msgstr "" -#: dcim/forms/filtersets.py:718 +#: dcim/forms/filtersets.py:719 msgid "Model" msgstr "" -#: dcim/forms/filtersets.py:762 +#: dcim/forms/filtersets.py:763 msgid "Has an OOB IP" msgstr "" -#: dcim/forms/filtersets.py:769 +#: dcim/forms/filtersets.py:770 msgid "Virtual chassis member" msgstr "" -#: dcim/forms/filtersets.py:1121 +#: dcim/forms/filtersets.py:819 +msgid "Has virtual device contexts" +msgstr "" + +#: dcim/forms/filtersets.py:1129 msgid "Cabled" msgstr "" -#: dcim/forms/filtersets.py:1128 +#: dcim/forms/filtersets.py:1136 msgid "Occupied" msgstr "" -#: dcim/forms/filtersets.py:1153 dcim/forms/filtersets.py:1175 -#: dcim/forms/filtersets.py:1197 dcim/forms/filtersets.py:1214 -#: dcim/forms/filtersets.py:1234 dcim/tables/devices.py:348 +#: dcim/forms/filtersets.py:1161 dcim/forms/filtersets.py:1183 +#: dcim/forms/filtersets.py:1205 dcim/forms/filtersets.py:1222 +#: dcim/forms/filtersets.py:1242 dcim/tables/devices.py:352 #: 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 @@ -3764,40 +3803,40 @@ msgstr "" msgid "Connection" msgstr "" -#: dcim/forms/filtersets.py:1246 extras/forms/bulk_edit.py:316 +#: dcim/forms/filtersets.py:1254 extras/forms/bulk_edit.py:316 #: extras/forms/bulk_import.py:242 extras/forms/filtersets.py:476 #: extras/forms/model_forms.py:551 extras/tables/tables.py:512 #: templates/extras/journalentry.html:30 msgid "Kind" msgstr "" -#: dcim/forms/filtersets.py:1275 +#: dcim/forms/filtersets.py:1283 msgid "Mgmt only" msgstr "" -#: dcim/forms/filtersets.py:1287 dcim/forms/model_forms.py:1327 +#: dcim/forms/filtersets.py:1295 dcim/forms/model_forms.py:1327 #: dcim/models/device_components.py:630 templates/dcim/interface.html:129 msgid "WWN" msgstr "" -#: dcim/forms/filtersets.py:1307 +#: dcim/forms/filtersets.py:1315 msgid "Wireless channel" msgstr "" -#: dcim/forms/filtersets.py:1311 +#: dcim/forms/filtersets.py:1319 msgid "Channel frequency (MHz)" msgstr "" -#: dcim/forms/filtersets.py:1315 +#: dcim/forms/filtersets.py:1323 msgid "Channel width (MHz)" msgstr "" -#: dcim/forms/filtersets.py:1319 templates/dcim/interface.html:85 +#: dcim/forms/filtersets.py:1327 templates/dcim/interface.html:85 msgid "Transmit power (dBm)" msgstr "" -#: dcim/forms/filtersets.py:1342 dcim/forms/filtersets.py:1364 -#: dcim/tables/devices.py:320 templates/dcim/cable.html:12 +#: dcim/forms/filtersets.py:1350 dcim/forms/filtersets.py:1372 +#: dcim/tables/devices.py:324 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 @@ -3805,7 +3844,7 @@ msgstr "" msgid "Cable" msgstr "" -#: dcim/forms/filtersets.py:1434 dcim/tables/devices.py:933 +#: dcim/forms/filtersets.py:1442 dcim/tables/devices.py:933 msgid "Discovered" msgstr "" @@ -3923,7 +3962,7 @@ msgstr "" #: dcim/tables/connections.py:65 ipam/forms/bulk_import.py:317 #: ipam/forms/model_forms.py:278 ipam/forms/model_forms.py:287 #: ipam/tables/fhrp.py:64 ipam/tables/ip.py:368 ipam/tables/vlans.py:165 -#: templates/circuits/inc/circuit_termination.html:77 +#: 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 @@ -3951,7 +3990,7 @@ msgid "Console Server Port" msgstr "" #: dcim/forms/model_forms.py:1092 dcim/forms/model_forms.py:1530 -#: templates/circuits/inc/circuit_termination.html:78 +#: 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 @@ -3960,7 +3999,7 @@ msgstr "" #: dcim/forms/model_forms.py:1093 dcim/forms/model_forms.py:1531 #: dcim/tables/devices.py:705 -#: templates/circuits/inc/circuit_termination.html:79 +#: 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 @@ -3969,7 +4008,7 @@ msgid "Rear Port" msgstr "" #: dcim/forms/model_forms.py:1094 dcim/forms/model_forms.py:1532 -#: dcim/tables/connections.py:46 dcim/tables/devices.py:505 +#: dcim/tables/connections.py:46 dcim/tables/devices.py:509 #: templates/dcim/poweroutlet.html:44 templates/dcim/powerport.html:17 msgid "Power Port" msgstr "" @@ -5165,7 +5204,7 @@ msgstr "" #: dcim/models/mixins.py:15 extras/models/configs.py:41 #: extras/models/models.py:341 extras/models/models.py:550 -#: extras/models/search.py:48 ipam/models/ip.py:193 +#: extras/models/search.py:48 ipam/models/ip.py:194 msgid "weight" msgstr "" @@ -5644,28 +5683,37 @@ msgstr "" msgid "Module Bay" msgstr "" -#: dcim/tables/devices.py:326 +#: dcim/tables/devices.py:318 dcim/tables/devicetypes.py:48 +#: dcim/tables/devicetypes.py:140 dcim/views.py:1081 dcim/views.py:2024 +#: netbox/navigation/menu.py:90 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 +msgid "Inventory Items" +msgstr "" + +#: dcim/tables/devices.py:330 msgid "Cable Color" msgstr "" -#: dcim/tables/devices.py:332 +#: dcim/tables/devices.py:336 msgid "Link Peers" msgstr "" -#: dcim/tables/devices.py:335 +#: dcim/tables/devices.py:339 msgid "Mark Connected" msgstr "" -#: dcim/tables/devices.py:451 +#: dcim/tables/devices.py:455 msgid "Maximum draw (W)" msgstr "" -#: dcim/tables/devices.py:454 +#: dcim/tables/devices.py:458 msgid "Allocated draw (W)" msgstr "" -#: dcim/tables/devices.py:554 ipam/forms/model_forms.py:738 -#: ipam/tables/fhrp.py:28 ipam/views.py:596 ipam/views.py:690 +#: dcim/tables/devices.py:558 ipam/forms/model_forms.py:747 +#: ipam/tables/fhrp.py:28 ipam/views.py:602 ipam/views.py:701 #: netbox/navigation/menu.py:145 netbox/navigation/menu.py:147 #: templates/dcim/interface.html:339 templates/ipam/ipaddress_bulk_add.html:15 #: templates/ipam/service.html:40 templates/virtualization/vminterface.html:85 @@ -5673,12 +5721,12 @@ msgstr "" msgid "IP Addresses" msgstr "" -#: dcim/tables/devices.py:560 netbox/navigation/menu.py:189 +#: dcim/tables/devices.py:564 netbox/navigation/menu.py:189 #: templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "" -#: dcim/tables/devices.py:572 templates/dcim/interface.html:89 +#: 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 @@ -5687,24 +5735,15 @@ msgstr "" msgid "Tunnel" msgstr "" -#: dcim/tables/devices.py:597 dcim/tables/devicetypes.py:224 +#: dcim/tables/devices.py:601 dcim/tables/devicetypes.py:224 #: templates/dcim/interface.html:65 msgid "Management Only" msgstr "" -#: dcim/tables/devices.py:615 +#: dcim/tables/devices.py:619 msgid "VDCs" msgstr "" -#: dcim/tables/devices.py:623 dcim/tables/devicetypes.py:48 -#: dcim/tables/devicetypes.py:140 dcim/views.py:1081 dcim/views.py:2024 -#: netbox/navigation/menu.py:90 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 -msgid "Inventory Items" -msgstr "" - #: dcim/tables/devices.py:870 templates/dcim/modulebay.html:49 msgid "Installed Module" msgstr "" @@ -5820,7 +5859,7 @@ msgstr "" msgid "Module Bays" msgstr "" -#: dcim/tables/power.py:36 netbox/navigation/menu.py:281 +#: dcim/tables/power.py:36 netbox/navigation/menu.py:282 #: templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "" @@ -6297,7 +6336,7 @@ msgid "Cluster type (slug)" msgstr "" #: extras/filtersets.py:537 ipam/forms/bulk_edit.py:476 -#: ipam/forms/filtersets.py:457 ipam/forms/model_forms.py:615 +#: ipam/forms/filtersets.py:464 ipam/forms/model_forms.py:624 #: virtualization/forms/filtersets.py:112 msgid "Cluster group" msgstr "" @@ -6781,7 +6820,7 @@ msgid "Tenants" msgstr "" #: extras/forms/model_forms.py:458 ipam/forms/filtersets.py:142 -#: ipam/forms/filtersets.py:546 ipam/forms/model_forms.py:321 +#: ipam/forms/filtersets.py:553 ipam/forms/model_forms.py:321 #: 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:311 @@ -7538,11 +7577,11 @@ msgstr "" msgid "scripts" msgstr "" -#: extras/models/scripts.py:110 +#: extras/models/scripts.py:111 msgid "script module" msgstr "" -#: extras/models/scripts.py:111 +#: extras/models/scripts.py:112 msgid "script modules" msgstr "" @@ -7803,7 +7842,7 @@ msgstr "" msgid "Error deleting widget: " msgstr "" -#: extras/views.py:1081 +#: extras/views.py:1101 msgid "Unable to run script: RQ worker process not running." msgstr "" @@ -7949,7 +7988,7 @@ msgid "Prefixes which contain this prefix or IP" msgstr "" #: ipam/filtersets.py:304 ipam/filtersets.py:572 ipam/forms/bulk_edit.py:327 -#: ipam/forms/filtersets.py:195 ipam/forms/filtersets.py:324 +#: ipam/forms/filtersets.py:196 ipam/forms/filtersets.py:331 msgid "Mask length" msgstr "" @@ -7962,7 +8001,7 @@ msgid "VLAN number (1-4094)" msgstr "" #: ipam/filtersets.py:471 ipam/filtersets.py:475 ipam/filtersets.py:567 -#: ipam/forms/model_forms.py:452 templates/tenancy/contact.html:53 +#: ipam/forms/model_forms.py:461 templates/tenancy/contact.html:53 #: tenancy/forms/bulk_edit.py:113 msgid "Address" msgstr "" @@ -8022,7 +8061,7 @@ msgstr "" msgid "IP address (ID)" msgstr "" -#: ipam/filtersets.py:1102 ipam/models/ip.py:787 +#: ipam/filtersets.py:1102 ipam/models/ip.py:788 msgid "IP address" msgstr "" @@ -8078,7 +8117,7 @@ msgstr "" #: ipam/forms/filtersets.py:148 ipam/forms/model_forms.py:94 #: ipam/forms/model_forms.py:107 ipam/forms/model_forms.py:129 #: ipam/forms/model_forms.py:147 ipam/models/asns.py:31 ipam/models/asns.py:103 -#: ipam/models/ip.py:70 ipam/models/ip.py:89 ipam/tables/asn.py:20 +#: 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 @@ -8093,36 +8132,36 @@ msgstr "" msgid "Prefix length" msgstr "" -#: ipam/forms/bulk_edit.py:253 ipam/forms/filtersets.py:240 +#: ipam/forms/bulk_edit.py:253 ipam/forms/filtersets.py:241 #: templates/ipam/prefix.html:85 msgid "Is a pool" msgstr "" #: ipam/forms/bulk_edit.py:258 ipam/forms/bulk_edit.py:302 -#: ipam/forms/filtersets.py:247 ipam/forms/filtersets.py:286 -#: ipam/models/ip.py:271 ipam/models/ip.py:538 +#: ipam/forms/filtersets.py:248 ipam/forms/filtersets.py:293 +#: ipam/models/ip.py:272 ipam/models/ip.py:539 msgid "Treat as fully utilized" msgstr "" -#: ipam/forms/bulk_edit.py:350 ipam/models/ip.py:771 +#: ipam/forms/bulk_edit.py:350 ipam/models/ip.py:772 msgid "DNS name" msgstr "" #: ipam/forms/bulk_edit.py:371 ipam/forms/bulk_edit.py:572 #: ipam/forms/bulk_import.py:393 ipam/forms/bulk_import.py:477 -#: ipam/forms/bulk_import.py:503 ipam/forms/filtersets.py:383 -#: ipam/forms/filtersets.py:530 templates/ipam/fhrpgroup.html:22 +#: ipam/forms/bulk_import.py:503 ipam/forms/filtersets.py:390 +#: ipam/forms/filtersets.py:537 templates/ipam/fhrpgroup.html:22 #: templates/ipam/inc/panels/fhrp_groups.html:24 templates/ipam/service.html:32 #: templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "" -#: ipam/forms/bulk_edit.py:378 ipam/forms/filtersets.py:390 +#: ipam/forms/bulk_edit.py:378 ipam/forms/filtersets.py:397 #: ipam/tables/fhrp.py:22 templates/ipam/fhrpgroup.html:26 msgid "Group ID" msgstr "" -#: ipam/forms/bulk_edit.py:383 ipam/forms/filtersets.py:395 +#: ipam/forms/bulk_edit.py:383 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 @@ -8130,12 +8169,12 @@ msgstr "" msgid "Authentication type" msgstr "" -#: ipam/forms/bulk_edit.py:388 ipam/forms/filtersets.py:399 +#: ipam/forms/bulk_edit.py:388 ipam/forms/filtersets.py:406 msgid "Authentication key" msgstr "" -#: ipam/forms/bulk_edit.py:405 ipam/forms/filtersets.py:376 -#: ipam/forms/model_forms.py:463 netbox/navigation/menu.py:369 +#: ipam/forms/bulk_edit.py:405 ipam/forms/filtersets.py:383 +#: ipam/forms/model_forms.py:472 netbox/navigation/menu.py:370 #: templates/ipam/fhrpgroup.html:49 #: templates/wireless/inc/authentication_attrs.html:5 #: wireless/forms/bulk_edit.py:91 wireless/forms/bulk_edit.py:138 @@ -8152,11 +8191,11 @@ msgstr "" msgid "Maximum child VLAN VID" msgstr "" -#: ipam/forms/bulk_edit.py:429 ipam/forms/model_forms.py:557 +#: ipam/forms/bulk_edit.py:429 ipam/forms/model_forms.py:566 msgid "Scope type" msgstr "" -#: ipam/forms/bulk_edit.py:491 ipam/forms/model_forms.py:632 +#: ipam/forms/bulk_edit.py:491 ipam/forms/model_forms.py:641 #: ipam/tables/vlans.py:71 templates/ipam/vlangroup.html:38 msgid "Scope" msgstr "" @@ -8165,8 +8204,8 @@ msgstr "" msgid "Site & Group" msgstr "" -#: ipam/forms/bulk_edit.py:577 ipam/forms/model_forms.py:696 -#: ipam/forms/model_forms.py:728 ipam/tables/services.py:19 +#: ipam/forms/bulk_edit.py:577 ipam/forms/model_forms.py:705 +#: ipam/forms/model_forms.py:737 ipam/tables/services.py:19 #: ipam/tables/services.py:49 templates/ipam/service.html:36 #: templates/ipam/servicetemplate.html:23 msgid "Ports" @@ -8189,14 +8228,15 @@ msgstr "" msgid "VLAN's group (if any)" msgstr "" -#: ipam/forms/bulk_import.py:184 ipam/forms/model_forms.py:216 -#: ipam/models/vlans.py:214 ipam/tables/ip.py:254 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:101 +#: ipam/forms/bulk_import.py:184 ipam/forms/filtersets.py:256 +#: ipam/forms/model_forms.py:216 ipam/models/vlans.py:214 ipam/tables/ip.py:254 +#: 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:101 msgid "VLAN" msgstr "" @@ -8205,7 +8245,7 @@ msgid "Parent device of assigned interface (if any)" msgstr "" #: ipam/forms/bulk_import.py:310 ipam/forms/bulk_import.py:496 -#: ipam/forms/model_forms.py:722 virtualization/filtersets.py:284 +#: ipam/forms/model_forms.py:731 virtualization/filtersets.py:284 #: virtualization/filtersets.py:323 virtualization/forms/bulk_edit.py:200 #: virtualization/forms/bulk_edit.py:326 #: virtualization/forms/bulk_import.py:146 @@ -8307,8 +8347,8 @@ msgstr "" msgid "Private" msgstr "" -#: ipam/forms/filtersets.py:105 ipam/forms/filtersets.py:190 -#: ipam/forms/filtersets.py:265 ipam/forms/filtersets.py:319 +#: ipam/forms/filtersets.py:105 ipam/forms/filtersets.py:191 +#: ipam/forms/filtersets.py:272 ipam/forms/filtersets.py:326 msgid "Address family" msgstr "" @@ -8324,53 +8364,57 @@ msgstr "" msgid "End" msgstr "" -#: ipam/forms/filtersets.py:185 +#: ipam/forms/filtersets.py:171 +msgid "VLAN Assignment" +msgstr "" + +#: ipam/forms/filtersets.py:186 msgid "Search within" msgstr "" -#: ipam/forms/filtersets.py:206 ipam/forms/filtersets.py:335 +#: ipam/forms/filtersets.py:207 ipam/forms/filtersets.py:342 msgid "Present in VRF" msgstr "" -#: ipam/forms/filtersets.py:304 +#: ipam/forms/filtersets.py:311 msgid "Device/VM" msgstr "" -#: ipam/forms/filtersets.py:314 +#: ipam/forms/filtersets.py:321 msgid "Parent Prefix" msgstr "" -#: ipam/forms/filtersets.py:340 +#: ipam/forms/filtersets.py:347 msgid "Assigned Device" msgstr "" -#: ipam/forms/filtersets.py:345 +#: ipam/forms/filtersets.py:352 msgid "Assigned VM" msgstr "" -#: ipam/forms/filtersets.py:359 +#: ipam/forms/filtersets.py:366 msgid "Assigned to an interface" msgstr "" -#: ipam/forms/filtersets.py:366 templates/ipam/ipaddress.html:51 +#: ipam/forms/filtersets.py:373 templates/ipam/ipaddress.html:51 msgid "DNS Name" msgstr "" -#: ipam/forms/filtersets.py:409 ipam/forms/filtersets.py:513 +#: ipam/forms/filtersets.py:416 ipam/forms/filtersets.py:520 #: ipam/models/vlans.py:156 templates/ipam/vlan.html:31 msgid "VLAN ID" msgstr "" -#: ipam/forms/filtersets.py:441 +#: ipam/forms/filtersets.py:448 msgid "Minimum VID" msgstr "" -#: ipam/forms/filtersets.py:447 +#: ipam/forms/filtersets.py:454 msgid "Maximum VID" msgstr "" -#: ipam/forms/filtersets.py:556 ipam/forms/model_forms.py:318 -#: ipam/forms/model_forms.py:750 ipam/forms/model_forms.py:776 +#: ipam/forms/filtersets.py:563 ipam/forms/model_forms.py:318 +#: ipam/forms/model_forms.py:759 ipam/forms/model_forms.py:785 #: ipam/tables/vlans.py:191 templates/virtualization/virtualdisk.html:21 #: templates/virtualization/virtualmachine.html:12 #: templates/virtualization/vminterface.html:21 @@ -8408,7 +8452,7 @@ msgid "IP Range" msgstr "" #: ipam/forms/model_forms.py:293 ipam/forms/model_forms.py:319 -#: ipam/forms/model_forms.py:462 templates/ipam/fhrpgroup.html:19 +#: ipam/forms/model_forms.py:471 templates/ipam/fhrpgroup.html:19 msgid "FHRP Group" msgstr "" @@ -8420,71 +8464,71 @@ msgstr "" msgid "NAT IP (Inside)" msgstr "" -#: ipam/forms/model_forms.py:373 +#: ipam/forms/model_forms.py:382 msgid "An IP address can only be assigned to a single object." msgstr "" -#: ipam/forms/model_forms.py:379 ipam/models/ip.py:896 +#: ipam/forms/model_forms.py:388 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:389 +#: ipam/forms/model_forms.py:398 msgid "" "Only IP addresses assigned to an interface can be designated as primary IPs." msgstr "" -#: ipam/forms/model_forms.py:464 +#: ipam/forms/model_forms.py:473 msgid "Virtual IP Address" msgstr "" -#: ipam/forms/model_forms.py:549 +#: ipam/forms/model_forms.py:558 msgid "Assignment already exists" msgstr "" -#: ipam/forms/model_forms.py:628 ipam/forms/model_forms.py:670 +#: ipam/forms/model_forms.py:637 ipam/forms/model_forms.py:679 #: ipam/tables/ip.py:250 templates/ipam/vlan_edit.html:37 #: templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "" -#: ipam/forms/model_forms.py:629 +#: ipam/forms/model_forms.py:638 msgid "Child VLANs" msgstr "" -#: ipam/forms/model_forms.py:701 ipam/forms/model_forms.py:733 +#: ipam/forms/model_forms.py:710 ipam/forms/model_forms.py:742 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." msgstr "" -#: ipam/forms/model_forms.py:706 templates/ipam/servicetemplate.html:12 +#: ipam/forms/model_forms.py:715 templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "" -#: ipam/forms/model_forms.py:753 +#: ipam/forms/model_forms.py:762 msgid "Port(s)" msgstr "" -#: ipam/forms/model_forms.py:754 ipam/forms/model_forms.py:782 +#: ipam/forms/model_forms.py:763 ipam/forms/model_forms.py:791 #: templates/ipam/service.html:21 msgid "Service" msgstr "" -#: ipam/forms/model_forms.py:767 +#: ipam/forms/model_forms.py:776 msgid "Service template" msgstr "" -#: ipam/forms/model_forms.py:779 +#: ipam/forms/model_forms.py:788 msgid "From Template" msgstr "" -#: ipam/forms/model_forms.py:780 +#: ipam/forms/model_forms.py:789 msgid "Custom" msgstr "" -#: ipam/forms/model_forms.py:810 +#: ipam/forms/model_forms.py:819 msgid "" "Must specify name, protocol, and port(s) if not using a service template." msgstr "" @@ -8550,214 +8594,214 @@ msgstr "" msgid "FHRP group assignments" msgstr "" -#: ipam/models/ip.py:64 +#: ipam/models/ip.py:65 msgid "private" msgstr "" -#: ipam/models/ip.py:65 +#: ipam/models/ip.py:66 msgid "IP space managed by this RIR is considered private" msgstr "" -#: ipam/models/ip.py:71 netbox/navigation/menu.py:169 +#: ipam/models/ip.py:72 netbox/navigation/menu.py:169 msgid "RIRs" msgstr "" -#: ipam/models/ip.py:83 +#: ipam/models/ip.py:84 msgid "IPv4 or IPv6 network" msgstr "" -#: ipam/models/ip.py:90 +#: ipam/models/ip.py:91 msgid "Regional Internet Registry responsible for this IP space" msgstr "" -#: ipam/models/ip.py:100 +#: ipam/models/ip.py:101 msgid "date added" msgstr "" -#: ipam/models/ip.py:114 +#: ipam/models/ip.py:115 msgid "aggregate" msgstr "" -#: ipam/models/ip.py:115 +#: ipam/models/ip.py:116 msgid "aggregates" msgstr "" -#: ipam/models/ip.py:131 +#: ipam/models/ip.py:132 msgid "Cannot create aggregate with /0 mask." msgstr "" -#: ipam/models/ip.py:143 +#: 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:157 +#: ipam/models/ip.py:158 #, python-brace-format msgid "" "Prefixes cannot overlap aggregates. {prefix} covers an existing aggregate " "({aggregate})." msgstr "" -#: ipam/models/ip.py:199 ipam/models/ip.py:736 vpn/models/tunnels.py:114 +#: ipam/models/ip.py:200 ipam/models/ip.py:737 vpn/models/tunnels.py:114 msgid "role" msgstr "" -#: ipam/models/ip.py:200 +#: ipam/models/ip.py:201 msgid "roles" msgstr "" -#: ipam/models/ip.py:216 ipam/models/ip.py:292 +#: ipam/models/ip.py:217 ipam/models/ip.py:293 msgid "prefix" msgstr "" -#: ipam/models/ip.py:217 +#: ipam/models/ip.py:218 msgid "IPv4 or IPv6 network with mask" msgstr "" -#: ipam/models/ip.py:253 +#: ipam/models/ip.py:254 msgid "Operational status of this prefix" msgstr "" -#: ipam/models/ip.py:261 +#: ipam/models/ip.py:262 msgid "The primary function of this prefix" msgstr "" -#: ipam/models/ip.py:264 +#: ipam/models/ip.py:265 msgid "is a pool" msgstr "" -#: ipam/models/ip.py:266 +#: ipam/models/ip.py:267 msgid "All IP addresses within this prefix are considered usable" msgstr "" -#: ipam/models/ip.py:269 ipam/models/ip.py:536 +#: ipam/models/ip.py:270 ipam/models/ip.py:537 msgid "mark utilized" msgstr "" -#: ipam/models/ip.py:293 +#: ipam/models/ip.py:294 msgid "prefixes" msgstr "" -#: ipam/models/ip.py:316 +#: ipam/models/ip.py:317 msgid "Cannot create prefix with /0 mask." msgstr "" -#: ipam/models/ip.py:323 ipam/models/ip.py:873 +#: ipam/models/ip.py:324 ipam/models/ip.py:874 #, python-brace-format msgid "VRF {vrf}" msgstr "" -#: ipam/models/ip.py:323 ipam/models/ip.py:873 +#: ipam/models/ip.py:324 ipam/models/ip.py:874 msgid "global table" msgstr "" -#: ipam/models/ip.py:325 +#: ipam/models/ip.py:326 #, python-brace-format msgid "Duplicate prefix found in {table}: {prefix}" msgstr "" -#: ipam/models/ip.py:494 +#: ipam/models/ip.py:495 msgid "start address" msgstr "" -#: ipam/models/ip.py:495 ipam/models/ip.py:499 ipam/models/ip.py:711 +#: ipam/models/ip.py:496 ipam/models/ip.py:500 ipam/models/ip.py:712 msgid "IPv4 or IPv6 address (with mask)" msgstr "" -#: ipam/models/ip.py:498 +#: ipam/models/ip.py:499 msgid "end address" msgstr "" -#: ipam/models/ip.py:525 +#: ipam/models/ip.py:526 msgid "Operational status of this range" msgstr "" -#: ipam/models/ip.py:533 +#: ipam/models/ip.py:534 msgid "The primary function of this range" msgstr "" -#: ipam/models/ip.py:547 +#: ipam/models/ip.py:548 msgid "IP range" msgstr "" -#: ipam/models/ip.py:548 +#: ipam/models/ip.py:549 msgid "IP ranges" msgstr "" -#: ipam/models/ip.py:564 +#: ipam/models/ip.py:565 msgid "Starting and ending IP address versions must match" msgstr "" -#: ipam/models/ip.py:570 +#: ipam/models/ip.py:571 msgid "Starting and ending IP address masks must match" msgstr "" -#: ipam/models/ip.py:577 +#: 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:589 +#: ipam/models/ip.py:590 #, python-brace-format msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}" msgstr "" -#: ipam/models/ip.py:598 +#: ipam/models/ip.py:599 #, python-brace-format msgid "Defined range exceeds maximum supported size ({max_size})" msgstr "" -#: ipam/models/ip.py:710 tenancy/models/contacts.py:82 +#: ipam/models/ip.py:711 tenancy/models/contacts.py:82 msgid "address" msgstr "" -#: ipam/models/ip.py:733 +#: ipam/models/ip.py:734 msgid "The operational status of this IP" msgstr "" -#: ipam/models/ip.py:740 +#: ipam/models/ip.py:741 msgid "The functional role of this IP" msgstr "" -#: ipam/models/ip.py:764 templates/ipam/ipaddress.html:72 +#: ipam/models/ip.py:765 templates/ipam/ipaddress.html:72 msgid "NAT (inside)" msgstr "" -#: ipam/models/ip.py:765 +#: ipam/models/ip.py:766 msgid "The IP for which this address is the \"outside\" IP" msgstr "" -#: ipam/models/ip.py:772 +#: ipam/models/ip.py:773 msgid "Hostname or FQDN (not case-sensitive)" msgstr "" -#: ipam/models/ip.py:788 ipam/models/services.py:93 +#: ipam/models/ip.py:789 ipam/models/services.py:93 msgid "IP addresses" msgstr "" -#: ipam/models/ip.py:844 +#: ipam/models/ip.py:845 msgid "Cannot create IP address with /0 mask." msgstr "" -#: ipam/models/ip.py:850 +#: 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:861 +#: 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:875 +#: ipam/models/ip.py:876 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "" -#: ipam/models/ip.py:902 +#: ipam/models/ip.py:903 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "" @@ -8847,7 +8891,7 @@ msgid "The primary function of this VLAN" msgstr "" #: ipam/models/vlans.py:215 ipam/tables/ip.py:175 ipam/tables/vlans.py:78 -#: ipam/views.py:957 netbox/navigation/menu.py:180 +#: ipam/views.py:978 netbox/navigation/menu.py:180 #: netbox/navigation/menu.py:182 msgid "VLANs" msgstr "" @@ -8919,7 +8963,7 @@ msgid "Added" msgstr "" #: ipam/tables/ip.py:127 ipam/tables/ip.py:165 ipam/tables/vlans.py:138 -#: ipam/views.py:348 netbox/navigation/menu.py:152 +#: ipam/views.py:349 netbox/navigation/menu.py:152 #: netbox/navigation/menu.py:154 templates/ipam/vlan.html:84 msgid "Prefixes" msgstr "" @@ -9018,23 +9062,23 @@ msgid "" "are allowed in DNS names" msgstr "" -#: ipam/views.py:535 +#: ipam/views.py:541 msgid "Child Prefixes" msgstr "" -#: ipam/views.py:570 +#: ipam/views.py:576 msgid "Child Ranges" msgstr "" -#: ipam/views.py:886 +#: ipam/views.py:902 msgid "Related IPs" msgstr "" -#: ipam/views.py:1112 +#: ipam/views.py:1133 msgid "Device Interfaces" msgstr "" -#: ipam/views.py:1129 +#: ipam/views.py:1150 msgid "VM Interfaces" msgstr "" @@ -9586,39 +9630,43 @@ msgstr "" msgid "Circuit Types" msgstr "" -#: netbox/navigation/menu.py:264 netbox/navigation/menu.py:266 +#: netbox/navigation/menu.py:261 +msgid "Circuit Terminations" +msgstr "" + +#: netbox/navigation/menu.py:265 netbox/navigation/menu.py:267 msgid "Providers" msgstr "" -#: netbox/navigation/menu.py:267 templates/circuits/provider.html:51 +#: netbox/navigation/menu.py:268 templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "" -#: netbox/navigation/menu.py:268 +#: netbox/navigation/menu.py:269 msgid "Provider Networks" msgstr "" -#: netbox/navigation/menu.py:282 +#: netbox/navigation/menu.py:283 msgid "Power Panels" msgstr "" -#: netbox/navigation/menu.py:293 +#: netbox/navigation/menu.py:294 msgid "Configurations" msgstr "" -#: netbox/navigation/menu.py:295 +#: netbox/navigation/menu.py:296 msgid "Config Contexts" msgstr "" -#: netbox/navigation/menu.py:296 +#: netbox/navigation/menu.py:297 msgid "Config Templates" msgstr "" -#: netbox/navigation/menu.py:303 netbox/navigation/menu.py:307 +#: netbox/navigation/menu.py:304 netbox/navigation/menu.py:308 msgid "Customization" msgstr "" -#: netbox/navigation/menu.py:309 templates/dcim/device_edit.html:103 +#: netbox/navigation/menu.py:310 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 @@ -9628,107 +9676,107 @@ msgstr "" msgid "Custom Fields" msgstr "" -#: netbox/navigation/menu.py:310 +#: netbox/navigation/menu.py:311 msgid "Custom Field Choices" msgstr "" -#: netbox/navigation/menu.py:311 +#: netbox/navigation/menu.py:312 msgid "Custom Links" msgstr "" -#: netbox/navigation/menu.py:312 +#: netbox/navigation/menu.py:313 msgid "Export Templates" msgstr "" -#: netbox/navigation/menu.py:313 +#: netbox/navigation/menu.py:314 msgid "Saved Filters" msgstr "" -#: netbox/navigation/menu.py:315 +#: netbox/navigation/menu.py:316 msgid "Image Attachments" msgstr "" -#: netbox/navigation/menu.py:333 +#: netbox/navigation/menu.py:334 msgid "Operations" msgstr "" -#: netbox/navigation/menu.py:337 +#: netbox/navigation/menu.py:338 msgid "Integrations" msgstr "" -#: netbox/navigation/menu.py:339 +#: netbox/navigation/menu.py:340 msgid "Data Sources" msgstr "" -#: netbox/navigation/menu.py:340 +#: netbox/navigation/menu.py:341 msgid "Event Rules" msgstr "" -#: netbox/navigation/menu.py:341 +#: netbox/navigation/menu.py:342 msgid "Webhooks" msgstr "" -#: netbox/navigation/menu.py:345 netbox/navigation/menu.py:349 +#: netbox/navigation/menu.py:346 netbox/navigation/menu.py:350 #: netbox/views/generic/feature_views.py:151 #: templates/extras/report/base.html:37 templates/extras/script/base.html:36 msgid "Jobs" msgstr "" -#: netbox/navigation/menu.py:355 +#: netbox/navigation/menu.py:356 msgid "Logging" msgstr "" -#: netbox/navigation/menu.py:357 +#: netbox/navigation/menu.py:358 msgid "Journal Entries" msgstr "" -#: netbox/navigation/menu.py:358 templates/extras/objectchange.html:8 +#: netbox/navigation/menu.py:359 templates/extras/objectchange.html:8 #: templates/extras/objectchange_list.html:4 msgid "Change Log" msgstr "" -#: netbox/navigation/menu.py:365 templates/inc/user_menu.html:11 +#: netbox/navigation/menu.py:366 templates/inc/user_menu.html:11 msgid "Admin" msgstr "" -#: netbox/navigation/menu.py:373 templates/users/group.html:29 +#: netbox/navigation/menu.py:374 templates/users/group.html:29 #: users/forms/model_forms.py:233 users/forms/model_forms.py:245 #: users/forms/model_forms.py:297 users/tables.py:102 msgid "Users" msgstr "" -#: netbox/navigation/menu.py:393 users/forms/model_forms.py:182 +#: netbox/navigation/menu.py:394 users/forms/model_forms.py:182 #: users/forms/model_forms.py:194 users/forms/model_forms.py:302 #: users/tables.py:35 users/tables.py:106 msgid "Groups" msgstr "" -#: netbox/navigation/menu.py:413 templates/account/base.html:21 +#: netbox/navigation/menu.py:414 templates/account/base.html:21 #: templates/inc/user_menu.html:36 msgid "API Tokens" msgstr "" -#: netbox/navigation/menu.py:420 users/forms/model_forms.py:188 +#: netbox/navigation/menu.py:421 users/forms/model_forms.py:188 #: users/forms/model_forms.py:196 users/forms/model_forms.py:239 #: users/forms/model_forms.py:246 msgid "Permissions" msgstr "" -#: netbox/navigation/menu.py:428 netbox/navigation/menu.py:432 +#: netbox/navigation/menu.py:429 netbox/navigation/menu.py:433 #: templates/core/system.html:7 msgid "System" msgstr "" -#: netbox/navigation/menu.py:437 +#: netbox/navigation/menu.py:438 msgid "Configuration History" msgstr "" -#: netbox/navigation/menu.py:443 templates/core/rq_task.html:8 +#: netbox/navigation/menu.py:444 templates/core/rq_task.html:8 #: templates/core/rq_task_list.html:22 msgid "Background Tasks" msgstr "" -#: netbox/navigation/menu.py:482 templates/500.html:35 +#: netbox/navigation/menu.py:483 templates/500.html:35 #: templates/account/preferences.html:22 templates/core/system.html:80 msgid "Plugins" msgstr "" @@ -9857,34 +9905,46 @@ msgstr "" msgid "Cannot delete stores from registry" msgstr "" -#: netbox/settings.py:715 +#: netbox/settings.py:722 +msgid "German" +msgstr "" + +#: netbox/settings.py:723 msgid "English" msgstr "" -#: netbox/settings.py:716 +#: netbox/settings.py:724 msgid "Spanish" msgstr "" -#: netbox/settings.py:717 +#: netbox/settings.py:725 msgid "French" msgstr "" -#: netbox/settings.py:718 +#: netbox/settings.py:726 msgid "Japanese" msgstr "" -#: netbox/settings.py:719 +#: netbox/settings.py:727 msgid "Portuguese" msgstr "" -#: netbox/settings.py:720 +#: netbox/settings.py:728 msgid "Russian" msgstr "" -#: netbox/settings.py:721 +#: netbox/settings.py:729 msgid "Turkish" msgstr "" +#: netbox/settings.py:730 +msgid "Ukrainian" +msgstr "" + +#: netbox/settings.py:731 +msgid "Chinese" +msgstr "" + #: netbox/tables/columns.py:185 msgid "Toggle all" msgstr "" @@ -9897,16 +9957,16 @@ msgstr "" msgid "Error" msgstr "" -#: netbox/tables/tables.py:56 +#: netbox/tables/tables.py:57 #, python-brace-format msgid "No {model_name} found" msgstr "" -#: netbox/tables/tables.py:246 templates/generic/bulk_import.html:117 +#: netbox/tables/tables.py:248 templates/generic/bulk_import.html:117 msgid "Field" msgstr "" -#: netbox/tables/tables.py:249 +#: netbox/tables/tables.py:251 msgid "Value" msgstr "" @@ -10013,7 +10073,7 @@ msgstr "" #: 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:37 +#: 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 @@ -10106,7 +10166,8 @@ msgstr "" #: templates/account/profile.html:58 #: templates/circuits/circuit_terminations_swap.html:18 #: templates/circuits/circuit_terminations_swap.html:26 -#: templates/circuits/inc/circuit_termination.html:154 +#: templates/circuits/circuittermination.html:34 +#: templates/circuits/inc/circuit_termination.html:68 #: templates/dcim/devicebay.html:59 #: templates/dcim/inc/panels/inventory_items.html:45 #: templates/dcim/interface.html:296 templates/dcim/modulebay.html:76 @@ -10223,13 +10284,6 @@ msgstr "" msgid "Circuit Type" msgstr "" -#: templates/circuits/inc/circuit_termination.html:6 -#: templates/circuits/inc/circuit_termination.html:41 -#: templates/dcim/cable.html:68 templates/dcim/cable.html:72 -#: vpn/forms/bulk_import.py:100 vpn/forms/filtersets.py:77 -msgid "Termination" -msgstr "" - #: templates/circuits/inc/circuit_termination.html:10 #: templates/dcim/devicetype/component_templates.html:33 #: templates/dcim/manufacturer.html:11 @@ -10242,7 +10296,7 @@ msgid "Add" msgstr "" #: templates/circuits/inc/circuit_termination.html:15 -#: templates/circuits/inc/circuit_termination.html:62 +#: 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:32 @@ -10257,33 +10311,33 @@ msgstr "" msgid "Swap" msgstr "" -#: templates/circuits/inc/circuit_termination.html:45 +#: templates/circuits/inc/circuit_termination_fields.html:19 #: templates/dcim/consoleport.html:59 templates/dcim/consoleserverport.html:60 #: templates/dcim/powerfeed.html:114 msgid "Marked as connected" msgstr "" -#: templates/circuits/inc/circuit_termination.html:47 +#: templates/circuits/inc/circuit_termination_fields.html:21 msgid "to" msgstr "" -#: templates/circuits/inc/circuit_termination.html:57 -#: templates/circuits/inc/circuit_termination.html:58 +#: 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 msgid "Trace" msgstr "" -#: templates/circuits/inc/circuit_termination.html:61 +#: templates/circuits/inc/circuit_termination_fields.html:35 msgid "Edit cable" msgstr "" -#: templates/circuits/inc/circuit_termination.html:66 +#: templates/circuits/inc/circuit_termination_fields.html:40 msgid "Remove cable" msgstr "" -#: templates/circuits/inc/circuit_termination.html:67 +#: 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 @@ -10295,7 +10349,7 @@ msgstr "" msgid "Disconnect" msgstr "" -#: templates/circuits/inc/circuit_termination.html:74 +#: 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 @@ -10304,19 +10358,19 @@ msgstr "" msgid "Connect" msgstr "" -#: templates/circuits/inc/circuit_termination.html:96 +#: templates/circuits/inc/circuit_termination_fields.html:70 msgid "Downstream" msgstr "" -#: templates/circuits/inc/circuit_termination.html:97 +#: templates/circuits/inc/circuit_termination_fields.html:71 msgid "Upstream" msgstr "" -#: templates/circuits/inc/circuit_termination.html:106 +#: templates/circuits/inc/circuit_termination_fields.html:80 msgid "Cross-Connect" msgstr "" -#: templates/circuits/inc/circuit_termination.html:110 +#: templates/circuits/inc/circuit_termination_fields.html:84 msgid "Patch Panel/Port" msgstr "" @@ -11693,11 +11747,15 @@ msgstr "" msgid "You do not have permission to run scripts" msgstr "" -#: templates/extras/script.html:40 templates/extras/script.html:44 +#: templates/extras/script.html:41 templates/extras/script.html:45 #: templates/extras/script_list.html:88 msgid "Run Script" msgstr "" +#: templates/extras/script.html:51 templates/extras/script/source.html:10 +msgid "Error loading script" +msgstr "" + #: templates/extras/script/jobs.html:16 msgid "Script no longer exists in the source file." msgstr "" From ec510d865f680ba3ec44e40b6409cf75d1765376 Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Wed, 22 May 2024 13:54:49 -0400 Subject: [PATCH 20/67] Updates for file netbox/translations/en/LC_MESSAGES/django.po (#16243) * Translate django.po in es 100% translated source file: 'django.po' on 'es'. * Translate django.po in pt 100% translated source file: 'django.po' on 'pt'. * Translate django.po in ja 100% translated source file: 'django.po' on 'ja'. * Translate django.po in de 100% translated source file: 'django.po' on 'de'. * Translate django.po in uk 100% translated source file: 'django.po' on 'uk'. * Translate django.po in ru 100% translated source file: 'django.po' on 'ru'. * Translate django.po in fr 100% translated source file: 'django.po' on 'fr'. * Translate django.po in tr 100% translated source file: 'django.po' on 'tr'. * Translate django.po in zh 100% translated source file: 'django.po' on 'zh'. --------- Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com> --- netbox/translations/de/LC_MESSAGES/django.po | 2882 +++++++++--------- netbox/translations/es/LC_MESSAGES/django.po | 1345 ++++---- netbox/translations/fr/LC_MESSAGES/django.po | 1345 ++++---- netbox/translations/ja/LC_MESSAGES/django.po | 1349 ++++---- netbox/translations/pt/LC_MESSAGES/django.po | 1345 ++++---- netbox/translations/ru/LC_MESSAGES/django.po | 1355 ++++---- netbox/translations/tr/LC_MESSAGES/django.po | 1345 ++++---- netbox/translations/uk/LC_MESSAGES/django.po | 1345 ++++---- netbox/translations/zh/LC_MESSAGES/django.po | 1345 ++++---- 9 files changed, 7100 insertions(+), 6556 deletions(-) diff --git a/netbox/translations/de/LC_MESSAGES/django.po b/netbox/translations/de/LC_MESSAGES/django.po index ca00405eb..4160517a9 100644 --- a/netbox/translations/de/LC_MESSAGES/django.po +++ b/netbox/translations/de/LC_MESSAGES/django.po @@ -4,6 +4,11 @@ # FIRST AUTHOR , YEAR. # # Translators: +# Niklas, 2024 +# Martin R, 2024 +# chbally, 2024 +# fepilins, 2024 +# Robin Reinhardt, 2024 # Jeremy Stretch, 2024 # #, fuzzy @@ -11,7 +16,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-05-14 13:22+0000\n" +"POT-Creation-Date: 2024-05-22 17:41+0000\n" "PO-Revision-Date: 2023-10-30 17:48+0000\n" "Last-Translator: Jeremy Stretch, 2024\n" "Language-Team: German (https://app.transifex.com/netbox-community/teams/178115/de/)\n" @@ -29,7 +34,7 @@ msgstr "Schlüssel" #: account/tables.py:31 users/forms/filtersets.py:133 msgid "Write Enabled" -msgstr "Schreiben aktiviert" +msgstr "Schreibberechtigung" #: account/tables.py:35 core/tables/jobs.py:29 core/tables/tasks.py:79 #: extras/choices.py:138 extras/tables/tables.py:499 @@ -57,26 +62,26 @@ msgstr "Zuletzt verwendet" #: templates/users/token.html:47 users/forms/bulk_edit.py:122 #: users/forms/model_forms.py:125 msgid "Allowed IPs" -msgstr "Erlaubte IPs" +msgstr "Erlaubte IP-Adressen" #: account/views.py:197 msgid "Your preferences have been updated." msgstr "Ihre Einstellungen wurden aktualisiert." #: circuits/choices.py:21 dcim/choices.py:20 dcim/choices.py:102 -#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1429 -#: dcim/choices.py:1505 dcim/choices.py:1555 virtualization/choices.py:20 +#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1457 +#: dcim/choices.py:1533 dcim/choices.py:1583 virtualization/choices.py:20 #: virtualization/choices.py:45 vpn/choices.py:18 msgid "Planned" msgstr "Geplant" -#: circuits/choices.py:22 netbox/navigation/menu.py:289 +#: circuits/choices.py:22 netbox/navigation/menu.py:290 msgid "Provisioning" msgstr "Provisionierung" #: circuits/choices.py:23 core/tables/tasks.py:22 dcim/choices.py:22 #: dcim/choices.py:103 dcim/choices.py:173 dcim/choices.py:219 -#: dcim/choices.py:1504 dcim/choices.py:1554 extras/tables/tables.py:385 +#: dcim/choices.py:1532 dcim/choices.py:1582 extras/tables/tables.py:385 #: 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 @@ -86,7 +91,7 @@ msgid "Active" msgstr "Aktiv" #: circuits/choices.py:24 dcim/choices.py:172 dcim/choices.py:218 -#: dcim/choices.py:1503 dcim/choices.py:1556 virtualization/choices.py:24 +#: dcim/choices.py:1531 dcim/choices.py:1584 virtualization/choices.py:24 #: virtualization/choices.py:43 msgid "Offline" msgstr "Offline" @@ -101,8 +106,8 @@ msgstr "Stillgelegt" #: circuits/filtersets.py:29 circuits/filtersets.py:196 dcim/filtersets.py:97 #: dcim/filtersets.py:151 dcim/filtersets.py:211 dcim/filtersets.py:297 -#: dcim/filtersets.py:406 dcim/filtersets.py:969 dcim/filtersets.py:1295 -#: dcim/filtersets.py:1822 dcim/filtersets.py:2065 dcim/filtersets.py:2123 +#: dcim/filtersets.py:406 dcim/filtersets.py:969 dcim/filtersets.py:1305 +#: dcim/filtersets.py:1832 dcim/filtersets.py:2075 dcim/filtersets.py:2133 #: ipam/filtersets.py:339 ipam/filtersets.py:945 #: virtualization/filtersets.py:45 virtualization/filtersets.py:173 #: vpn/filtersets.py:377 @@ -111,35 +116,37 @@ msgstr "Region (ID)" #: circuits/filtersets.py:36 circuits/filtersets.py:203 dcim/filtersets.py:104 #: dcim/filtersets.py:157 dcim/filtersets.py:218 dcim/filtersets.py:304 -#: dcim/filtersets.py:413 dcim/filtersets.py:976 dcim/filtersets.py:1302 -#: dcim/filtersets.py:1829 dcim/filtersets.py:2072 dcim/filtersets.py:2130 +#: dcim/filtersets.py:413 dcim/filtersets.py:976 dcim/filtersets.py:1312 +#: dcim/filtersets.py:1839 dcim/filtersets.py:2082 dcim/filtersets.py:2140 #: extras/filtersets.py:461 ipam/filtersets.py:346 ipam/filtersets.py:952 #: virtualization/filtersets.py:52 virtualization/filtersets.py:180 #: vpn/filtersets.py:372 msgid "Region (slug)" -msgstr "Region (Schnecke)" +msgstr "Region (URL-Slug)" #: circuits/filtersets.py:42 circuits/filtersets.py:209 dcim/filtersets.py:127 #: dcim/filtersets.py:224 dcim/filtersets.py:310 dcim/filtersets.py:419 -#: dcim/filtersets.py:982 dcim/filtersets.py:1308 dcim/filtersets.py:1835 -#: dcim/filtersets.py:2078 dcim/filtersets.py:2136 ipam/filtersets.py:352 +#: dcim/filtersets.py:982 dcim/filtersets.py:1318 dcim/filtersets.py:1845 +#: dcim/filtersets.py:2088 dcim/filtersets.py:2146 ipam/filtersets.py:352 #: ipam/filtersets.py:958 virtualization/filtersets.py:58 #: virtualization/filtersets.py:186 msgid "Site group (ID)" -msgstr "Websitegruppe (ID)" +msgstr "Standortgruppe (ID)" #: circuits/filtersets.py:49 circuits/filtersets.py:216 dcim/filtersets.py:134 #: dcim/filtersets.py:231 dcim/filtersets.py:317 dcim/filtersets.py:426 -#: dcim/filtersets.py:989 dcim/filtersets.py:1315 dcim/filtersets.py:1842 -#: dcim/filtersets.py:2085 dcim/filtersets.py:2143 extras/filtersets.py:467 +#: dcim/filtersets.py:989 dcim/filtersets.py:1325 dcim/filtersets.py:1852 +#: dcim/filtersets.py:2095 dcim/filtersets.py:2153 extras/filtersets.py:467 #: ipam/filtersets.py:359 ipam/filtersets.py:965 #: virtualization/filtersets.py:65 virtualization/filtersets.py:193 msgid "Site group (slug)" -msgstr "Seitengruppe (Slug)" +msgstr "Standortgruppe (URL-Slug)" -#: circuits/filtersets.py:54 circuits/forms/bulk_import.py:116 -#: circuits/forms/filtersets.py:48 circuits/forms/filtersets.py:168 -#: circuits/forms/model_forms.py:136 circuits/forms/model_forms.py:152 +#: circuits/filtersets.py:54 circuits/forms/bulk_edit.py:186 +#: circuits/forms/bulk_edit.py:214 circuits/forms/bulk_import.py:126 +#: circuits/forms/filtersets.py:49 circuits/forms/filtersets.py:169 +#: circuits/forms/filtersets.py:207 circuits/forms/model_forms.py:136 +#: circuits/forms/model_forms.py:152 circuits/tables/circuits.py:105 #: dcim/forms/bulk_edit.py:167 dcim/forms/bulk_edit.py:239 #: dcim/forms/bulk_edit.py:575 dcim/forms/bulk_edit.py:771 #: dcim/forms/bulk_import.py:130 dcim/forms/bulk_import.py:184 @@ -147,10 +154,10 @@ msgstr "Seitengruppe (Slug)" #: dcim/forms/bulk_import.py:1262 dcim/forms/bulk_import.py:1290 #: dcim/forms/filtersets.py:85 dcim/forms/filtersets.py:218 #: dcim/forms/filtersets.py:265 dcim/forms/filtersets.py:374 -#: dcim/forms/filtersets.py:681 dcim/forms/filtersets.py:908 -#: dcim/forms/filtersets.py:932 dcim/forms/filtersets.py:1022 -#: dcim/forms/filtersets.py:1060 dcim/forms/filtersets.py:1468 -#: dcim/forms/filtersets.py:1492 dcim/forms/filtersets.py:1516 +#: dcim/forms/filtersets.py:682 dcim/forms/filtersets.py:916 +#: dcim/forms/filtersets.py:940 dcim/forms/filtersets.py:1030 +#: dcim/forms/filtersets.py:1068 dcim/forms/filtersets.py:1476 +#: dcim/forms/filtersets.py:1500 dcim/forms/filtersets.py:1524 #: dcim/forms/model_forms.py:136 dcim/forms/model_forms.py:164 #: dcim/forms/model_forms.py:206 dcim/forms/model_forms.py:406 #: dcim/forms/model_forms.py:668 dcim/forms/object_create.py:391 @@ -160,11 +167,11 @@ msgstr "Seitengruppe (Slug)" #: ipam/forms/bulk_edit.py:270 ipam/forms/bulk_edit.py:448 #: ipam/forms/bulk_edit.py:522 ipam/forms/bulk_import.py:170 #: ipam/forms/bulk_import.py:437 ipam/forms/filtersets.py:153 -#: ipam/forms/filtersets.py:230 ipam/forms/filtersets.py:425 -#: ipam/forms/filtersets.py:489 ipam/forms/model_forms.py:203 -#: ipam/forms/model_forms.py:578 ipam/forms/model_forms.py:673 +#: ipam/forms/filtersets.py:231 ipam/forms/filtersets.py:432 +#: ipam/forms/filtersets.py:496 ipam/forms/model_forms.py:203 +#: ipam/forms/model_forms.py:587 ipam/forms/model_forms.py:682 #: ipam/tables/ip.py:244 ipam/tables/vlans.py:114 ipam/tables/vlans.py:216 -#: templates/circuits/inc/circuit_termination.html:32 +#: templates/circuits/inc/circuit_termination_fields.html:6 #: templates/dcim/device.html:21 templates/dcim/inc/cable_termination.html:8 #: templates/dcim/inc/cable_termination.html:33 #: templates/dcim/location.html:37 templates/dcim/powerpanel.html:22 @@ -195,35 +202,37 @@ msgstr "Standort" #: virtualization/filtersets.py:75 virtualization/filtersets.py:203 #: vpn/filtersets.py:382 msgid "Site (slug)" -msgstr "Seite (Schnecke)" +msgstr "Standort (URL-Slug)" #: circuits/filtersets.py:65 msgid "ASN (ID)" msgstr "ASN (ID)" -#: circuits/filtersets.py:71 circuits/forms/filtersets.py:28 +#: circuits/filtersets.py:71 circuits/forms/filtersets.py:29 #: ipam/forms/model_forms.py:157 ipam/models/asns.py:108 #: ipam/models/asns.py:125 ipam/tables/asn.py:41 templates/ipam/asn.html:20 msgid "ASN" msgstr "ASN" #: circuits/filtersets.py:93 circuits/filtersets.py:120 -#: circuits/filtersets.py:154 ipam/filtersets.py:243 +#: circuits/filtersets.py:154 circuits/filtersets.py:281 +#: ipam/filtersets.py:243 msgid "Provider (ID)" -msgstr "Anbieter (ID)" +msgstr "Provider (ID)" #: circuits/filtersets.py:99 circuits/filtersets.py:126 -#: circuits/filtersets.py:160 ipam/filtersets.py:249 +#: circuits/filtersets.py:160 circuits/filtersets.py:287 +#: ipam/filtersets.py:249 msgid "Provider (slug)" -msgstr "Anbieter (Schnecke)" +msgstr "Provider (URL-Slug)" #: circuits/filtersets.py:165 msgid "Provider account (ID)" -msgstr "Anbieterkonto (ID)" +msgstr "Provider-Konto (ID)" #: circuits/filtersets.py:171 msgid "Provider account (account)" -msgstr "Anbieterkonto (Konto)" +msgstr "Provider-Konto (Konto)" #: circuits/filtersets.py:176 msgid "Provider network (ID)" @@ -231,16 +240,16 @@ msgstr "Provider-Netzwerk (ID)" #: circuits/filtersets.py:180 msgid "Circuit type (ID)" -msgstr "Schaltungstyp (ID)" +msgstr "Transportnetz Typ (ID)" #: circuits/filtersets.py:186 msgid "Circuit type (slug)" -msgstr "Schaltungstyp (Schnecke)" +msgstr "Transportnetz Typ (URL-Slug)" #: circuits/filtersets.py:221 circuits/filtersets.py:266 #: dcim/filtersets.py:235 dcim/filtersets.py:321 dcim/filtersets.py:394 -#: dcim/filtersets.py:993 dcim/filtersets.py:1320 dcim/filtersets.py:1847 -#: dcim/filtersets.py:2089 dcim/filtersets.py:2148 ipam/filtersets.py:232 +#: dcim/filtersets.py:993 dcim/filtersets.py:1330 dcim/filtersets.py:1857 +#: dcim/filtersets.py:2099 dcim/filtersets.py:2158 ipam/filtersets.py:232 #: ipam/filtersets.py:363 ipam/filtersets.py:969 #: virtualization/filtersets.py:69 virtualization/filtersets.py:197 #: vpn/filtersets.py:387 @@ -249,16 +258,16 @@ msgstr "Standort (ID)" #: circuits/filtersets.py:231 circuits/filtersets.py:235 msgid "Termination A (ID)" -msgstr "Kündigung A (ID)" +msgstr "Abschlusspunkt A (ID)" #: circuits/filtersets.py:258 core/filtersets.py:73 core/filtersets.py:132 -#: dcim/filtersets.py:693 dcim/filtersets.py:1289 dcim/filtersets.py:2196 +#: dcim/filtersets.py:693 dcim/filtersets.py:1299 dcim/filtersets.py:2206 #: extras/filtersets.py:41 extras/filtersets.py:63 extras/filtersets.py:92 #: extras/filtersets.py:127 extras/filtersets.py:176 extras/filtersets.py:204 #: extras/filtersets.py:234 extras/filtersets.py:271 extras/filtersets.py:343 #: extras/filtersets.py:390 extras/filtersets.py:450 extras/filtersets.py:613 #: extras/filtersets.py:655 extras/filtersets.py:696 -#: ipam/forms/model_forms.py:438 netbox/filtersets.py:275 +#: ipam/forms/model_forms.py:447 netbox/filtersets.py:275 #: netbox/forms/__init__.py:22 netbox/forms/base.py:165 #: templates/htmx/object_selector.html:28 templates/inc/filter_list.html:45 #: templates/ipam/ipaddress_assign.html:29 templates/search.html:7 @@ -268,60 +277,63 @@ msgstr "Kündigung A (ID)" msgid "Search" msgstr "Suche" -#: circuits/filtersets.py:262 circuits/forms/bulk_edit.py:168 -#: circuits/forms/model_forms.py:109 circuits/forms/model_forms.py:131 +#: circuits/filtersets.py:262 circuits/forms/bulk_edit.py:170 +#: circuits/forms/bulk_import.py:117 circuits/forms/filtersets.py:196 +#: circuits/forms/filtersets.py:212 circuits/forms/model_forms.py:109 +#: circuits/forms/model_forms.py:131 circuits/tables/circuits.py:96 #: dcim/forms/connections.py:71 templates/circuits/circuit.html:15 +#: templates/circuits/circuittermination.html:19 #: templates/dcim/inc/cable_termination.html:55 #: templates/dcim/trace/circuit.html:4 msgid "Circuit" -msgstr "Schaltung" +msgstr "Transportnetz" #: circuits/filtersets.py:276 msgid "ProviderNetwork (ID)" -msgstr "Anbieternetzwerk (ID)" +msgstr "Provider-Netzwerk (ID)" -#: circuits/forms/bulk_edit.py:26 circuits/forms/filtersets.py:53 +#: circuits/forms/bulk_edit.py:28 circuits/forms/filtersets.py:54 #: circuits/forms/model_forms.py:27 circuits/tables/providers.py:33 #: dcim/forms/bulk_edit.py:127 dcim/forms/filtersets.py:188 #: dcim/forms/model_forms.py:122 dcim/tables/sites.py:94 -#: ipam/models/asns.py:126 ipam/tables/asn.py:27 ipam/views.py:218 +#: ipam/models/asns.py:126 ipam/tables/asn.py:27 ipam/views.py:219 #: netbox/navigation/menu.py:159 netbox/navigation/menu.py:162 #: templates/circuits/provider.html:23 msgid "ASNs" msgstr "ASNs" -#: circuits/forms/bulk_edit.py:30 circuits/forms/bulk_edit.py:52 -#: circuits/forms/bulk_edit.py:79 circuits/forms/bulk_edit.py:100 -#: circuits/forms/bulk_edit.py:160 core/forms/bulk_edit.py:28 -#: core/tables/plugins.py:29 dcim/forms/bulk_create.py:35 -#: dcim/forms/bulk_edit.py:72 dcim/forms/bulk_edit.py:91 -#: dcim/forms/bulk_edit.py:150 dcim/forms/bulk_edit.py:191 -#: dcim/forms/bulk_edit.py:209 dcim/forms/bulk_edit.py:337 -#: dcim/forms/bulk_edit.py:373 dcim/forms/bulk_edit.py:388 -#: dcim/forms/bulk_edit.py:447 dcim/forms/bulk_edit.py:486 -#: dcim/forms/bulk_edit.py:516 dcim/forms/bulk_edit.py:540 -#: dcim/forms/bulk_edit.py:613 dcim/forms/bulk_edit.py:665 -#: dcim/forms/bulk_edit.py:717 dcim/forms/bulk_edit.py:740 -#: dcim/forms/bulk_edit.py:788 dcim/forms/bulk_edit.py:858 -#: dcim/forms/bulk_edit.py:911 dcim/forms/bulk_edit.py:946 -#: dcim/forms/bulk_edit.py:986 dcim/forms/bulk_edit.py:1030 -#: dcim/forms/bulk_edit.py:1075 dcim/forms/bulk_edit.py:1102 -#: dcim/forms/bulk_edit.py:1120 dcim/forms/bulk_edit.py:1138 -#: dcim/forms/bulk_edit.py:1156 dcim/forms/bulk_edit.py:1575 -#: extras/forms/bulk_edit.py:36 extras/forms/bulk_edit.py:124 -#: extras/forms/bulk_edit.py:153 extras/forms/bulk_edit.py:183 -#: extras/forms/bulk_edit.py:264 extras/forms/bulk_edit.py:288 -#: extras/forms/bulk_edit.py:302 extras/tables/tables.py:58 -#: ipam/forms/bulk_edit.py:51 ipam/forms/bulk_edit.py:71 -#: ipam/forms/bulk_edit.py:91 ipam/forms/bulk_edit.py:115 -#: ipam/forms/bulk_edit.py:144 ipam/forms/bulk_edit.py:173 -#: ipam/forms/bulk_edit.py:192 ipam/forms/bulk_edit.py:261 -#: ipam/forms/bulk_edit.py:305 ipam/forms/bulk_edit.py:353 -#: ipam/forms/bulk_edit.py:396 ipam/forms/bulk_edit.py:424 -#: ipam/forms/bulk_edit.py:554 ipam/forms/bulk_edit.py:585 -#: templates/account/token.html:35 templates/circuits/circuit.html:59 -#: templates/circuits/circuittype.html:26 -#: templates/circuits/inc/circuit_termination.html:114 +#: circuits/forms/bulk_edit.py:32 circuits/forms/bulk_edit.py:54 +#: circuits/forms/bulk_edit.py:81 circuits/forms/bulk_edit.py:102 +#: circuits/forms/bulk_edit.py:162 circuits/forms/bulk_edit.py:181 +#: core/forms/bulk_edit.py:28 core/tables/plugins.py:29 +#: dcim/forms/bulk_create.py:35 dcim/forms/bulk_edit.py:72 +#: dcim/forms/bulk_edit.py:91 dcim/forms/bulk_edit.py:150 +#: dcim/forms/bulk_edit.py:191 dcim/forms/bulk_edit.py:209 +#: dcim/forms/bulk_edit.py:337 dcim/forms/bulk_edit.py:373 +#: dcim/forms/bulk_edit.py:388 dcim/forms/bulk_edit.py:447 +#: dcim/forms/bulk_edit.py:486 dcim/forms/bulk_edit.py:516 +#: dcim/forms/bulk_edit.py:540 dcim/forms/bulk_edit.py:613 +#: dcim/forms/bulk_edit.py:665 dcim/forms/bulk_edit.py:717 +#: dcim/forms/bulk_edit.py:740 dcim/forms/bulk_edit.py:788 +#: dcim/forms/bulk_edit.py:858 dcim/forms/bulk_edit.py:911 +#: dcim/forms/bulk_edit.py:946 dcim/forms/bulk_edit.py:986 +#: dcim/forms/bulk_edit.py:1030 dcim/forms/bulk_edit.py:1075 +#: dcim/forms/bulk_edit.py:1102 dcim/forms/bulk_edit.py:1120 +#: dcim/forms/bulk_edit.py:1138 dcim/forms/bulk_edit.py:1156 +#: dcim/forms/bulk_edit.py:1575 extras/forms/bulk_edit.py:36 +#: extras/forms/bulk_edit.py:124 extras/forms/bulk_edit.py:153 +#: extras/forms/bulk_edit.py:183 extras/forms/bulk_edit.py:264 +#: extras/forms/bulk_edit.py:288 extras/forms/bulk_edit.py:302 +#: extras/tables/tables.py:58 ipam/forms/bulk_edit.py:51 +#: ipam/forms/bulk_edit.py:71 ipam/forms/bulk_edit.py:91 +#: ipam/forms/bulk_edit.py:115 ipam/forms/bulk_edit.py:144 +#: ipam/forms/bulk_edit.py:173 ipam/forms/bulk_edit.py:192 +#: ipam/forms/bulk_edit.py:261 ipam/forms/bulk_edit.py:305 +#: ipam/forms/bulk_edit.py:353 ipam/forms/bulk_edit.py:396 +#: ipam/forms/bulk_edit.py:424 ipam/forms/bulk_edit.py:554 +#: ipam/forms/bulk_edit.py:585 templates/account/token.html:35 +#: templates/circuits/circuit.html:59 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/dcim/cable.html:36 @@ -387,32 +399,35 @@ msgstr "ASNs" msgid "Description" msgstr "Beschreibung" -#: circuits/forms/bulk_edit.py:47 circuits/forms/bulk_edit.py:69 -#: circuits/forms/bulk_edit.py:119 circuits/forms/bulk_import.py:34 -#: circuits/forms/bulk_import.py:49 circuits/forms/bulk_import.py:75 -#: circuits/forms/filtersets.py:67 circuits/forms/filtersets.py:85 -#: circuits/forms/filtersets.py:113 circuits/forms/filtersets.py:128 +#: circuits/forms/bulk_edit.py:49 circuits/forms/bulk_edit.py:71 +#: circuits/forms/bulk_edit.py:121 circuits/forms/bulk_import.py:35 +#: circuits/forms/bulk_import.py:50 circuits/forms/bulk_import.py:76 +#: circuits/forms/filtersets.py:68 circuits/forms/filtersets.py:86 +#: circuits/forms/filtersets.py:114 circuits/forms/filtersets.py:129 +#: circuits/forms/filtersets.py:197 circuits/forms/filtersets.py:230 #: circuits/forms/model_forms.py:45 circuits/forms/model_forms.py:59 -#: circuits/forms/model_forms.py:91 circuits/tables/circuits.py:55 -#: circuits/tables/providers.py:72 circuits/tables/providers.py:103 -#: templates/circuits/circuit.html:18 templates/circuits/provider.html:20 +#: circuits/forms/model_forms.py:91 circuits/tables/circuits.py:56 +#: circuits/tables/circuits.py:100 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 msgid "Provider" -msgstr "Anbieter" +msgstr "Provider" -#: circuits/forms/bulk_edit.py:76 circuits/forms/filtersets.py:88 +#: circuits/forms/bulk_edit.py:78 circuits/forms/filtersets.py:89 #: templates/circuits/providernetwork.html:28 msgid "Service ID" -msgstr "Dienst-ID" +msgstr "Dienst ID" -#: circuits/forms/bulk_edit.py:96 circuits/forms/filtersets.py:104 +#: circuits/forms/bulk_edit.py:98 circuits/forms/filtersets.py:105 #: dcim/forms/bulk_edit.py:205 dcim/forms/bulk_edit.py:502 #: dcim/forms/bulk_edit.py:702 dcim/forms/bulk_edit.py:1071 #: dcim/forms/bulk_edit.py:1098 dcim/forms/bulk_edit.py:1571 -#: dcim/forms/filtersets.py:975 dcim/forms/filtersets.py:1351 -#: dcim/forms/filtersets.py:1372 dcim/tables/devices.py:699 +#: dcim/forms/filtersets.py:983 dcim/forms/filtersets.py:1359 +#: dcim/forms/filtersets.py:1380 dcim/tables/devices.py:699 #: dcim/tables/devices.py:759 dcim/tables/devices.py:986 #: dcim/tables/devicetypes.py:245 dcim/tables/devicetypes.py:260 #: dcim/tables/racks.py:32 extras/forms/bulk_edit.py:260 @@ -424,8 +439,8 @@ msgstr "Dienst-ID" msgid "Color" msgstr "Farbe" -#: circuits/forms/bulk_edit.py:114 circuits/forms/bulk_import.py:88 -#: circuits/forms/filtersets.py:123 core/forms/bulk_edit.py:18 +#: circuits/forms/bulk_edit.py:116 circuits/forms/bulk_import.py:89 +#: circuits/forms/filtersets.py:124 core/forms/bulk_edit.py:18 #: core/forms/filtersets.py:30 core/tables/data.py:20 core/tables/jobs.py:18 #: dcim/forms/bulk_edit.py:282 dcim/forms/bulk_edit.py:680 #: dcim/forms/bulk_edit.py:819 dcim/forms/bulk_edit.py:887 @@ -437,18 +452,18 @@ msgstr "Farbe" #: dcim/forms/bulk_import.py:725 dcim/forms/bulk_import.py:808 #: dcim/forms/bulk_import.py:902 dcim/forms/bulk_import.py:944 #: dcim/forms/bulk_import.py:1161 dcim/forms/bulk_import.py:1327 -#: dcim/forms/filtersets.py:287 dcim/forms/filtersets.py:866 -#: dcim/forms/filtersets.py:965 dcim/forms/filtersets.py:1086 -#: dcim/forms/filtersets.py:1156 dcim/forms/filtersets.py:1178 -#: dcim/forms/filtersets.py:1200 dcim/forms/filtersets.py:1217 -#: dcim/forms/filtersets.py:1251 dcim/forms/filtersets.py:1346 -#: dcim/forms/filtersets.py:1367 dcim/forms/model_forms.py:643 +#: dcim/forms/filtersets.py:287 dcim/forms/filtersets.py:874 +#: dcim/forms/filtersets.py:973 dcim/forms/filtersets.py:1094 +#: dcim/forms/filtersets.py:1164 dcim/forms/filtersets.py:1186 +#: dcim/forms/filtersets.py:1208 dcim/forms/filtersets.py:1225 +#: dcim/forms/filtersets.py:1259 dcim/forms/filtersets.py:1354 +#: dcim/forms/filtersets.py:1375 dcim/forms/model_forms.py:643 #: dcim/forms/model_forms.py:649 dcim/forms/object_import.py:84 #: dcim/forms/object_import.py:113 dcim/forms/object_import.py:145 #: dcim/tables/devices.py:183 dcim/tables/devices.py:815 #: dcim/tables/power.py:77 extras/forms/bulk_import.py:39 #: extras/tables/tables.py:283 extras/tables/tables.py:355 -#: extras/tables/tables.py:473 netbox/tables/tables.py:237 +#: extras/tables/tables.py:473 netbox/tables/tables.py:239 #: 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 @@ -469,13 +484,13 @@ msgstr "Farbe" msgid "Type" msgstr "Typ" -#: circuits/forms/bulk_edit.py:124 circuits/forms/bulk_import.py:81 -#: circuits/forms/filtersets.py:136 circuits/forms/model_forms.py:96 +#: circuits/forms/bulk_edit.py:126 circuits/forms/bulk_import.py:82 +#: circuits/forms/filtersets.py:137 circuits/forms/model_forms.py:96 msgid "Provider account" -msgstr "Anbieter-Konto" +msgstr "Provider-Konto" -#: circuits/forms/bulk_edit.py:132 circuits/forms/bulk_import.py:94 -#: circuits/forms/filtersets.py:147 core/forms/filtersets.py:35 +#: circuits/forms/bulk_edit.py:134 circuits/forms/bulk_import.py:95 +#: circuits/forms/filtersets.py:148 core/forms/filtersets.py:35 #: core/forms/filtersets.py:76 core/tables/data.py:23 core/tables/jobs.py:26 #: core/tables/tasks.py:88 dcim/forms/bulk_edit.py:105 #: dcim/forms/bulk_edit.py:180 dcim/forms/bulk_edit.py:261 @@ -487,9 +502,9 @@ msgstr "Anbieter-Konto" #: dcim/forms/bulk_import.py:1155 dcim/forms/bulk_import.py:1322 #: dcim/forms/bulk_import.py:1386 dcim/forms/filtersets.py:171 #: dcim/forms/filtersets.py:230 dcim/forms/filtersets.py:282 -#: dcim/forms/filtersets.py:727 dcim/forms/filtersets.py:835 -#: dcim/forms/filtersets.py:869 dcim/forms/filtersets.py:970 -#: dcim/forms/filtersets.py:1081 dcim/tables/devices.py:145 +#: dcim/forms/filtersets.py:728 dcim/forms/filtersets.py:843 +#: dcim/forms/filtersets.py:877 dcim/forms/filtersets.py:978 +#: dcim/forms/filtersets.py:1089 dcim/tables/devices.py:145 #: dcim/tables/devices.py:818 dcim/tables/devices.py:1046 #: dcim/tables/modules.py:69 dcim/tables/power.py:74 dcim/tables/racks.py:66 #: dcim/tables/sites.py:82 dcim/tables/sites.py:133 @@ -497,9 +512,9 @@ msgstr "Anbieter-Konto" #: ipam/forms/bulk_edit.py:338 ipam/forms/bulk_edit.py:544 #: ipam/forms/bulk_import.py:191 ipam/forms/bulk_import.py:256 #: ipam/forms/bulk_import.py:292 ipam/forms/bulk_import.py:458 -#: ipam/forms/filtersets.py:209 ipam/forms/filtersets.py:274 -#: ipam/forms/filtersets.py:348 ipam/forms/filtersets.py:501 -#: ipam/forms/model_forms.py:457 ipam/tables/ip.py:236 ipam/tables/ip.py:309 +#: ipam/forms/filtersets.py:210 ipam/forms/filtersets.py:281 +#: ipam/forms/filtersets.py:355 ipam/forms/filtersets.py:508 +#: ipam/forms/model_forms.py:466 ipam/tables/ip.py:236 ipam/tables/ip.py:309 #: ipam/tables/ip.py:359 ipam/tables/ip.py:421 ipam/tables/ip.py:448 #: ipam/tables/vlans.py:122 ipam/tables/vlans.py:227 #: templates/circuits/circuit.html:34 templates/core/datasource.html:46 @@ -530,8 +545,8 @@ msgstr "Anbieter-Konto" msgid "Status" msgstr "Status" -#: circuits/forms/bulk_edit.py:138 circuits/forms/bulk_import.py:99 -#: circuits/forms/filtersets.py:116 dcim/forms/bulk_edit.py:121 +#: circuits/forms/bulk_edit.py:140 circuits/forms/bulk_import.py:100 +#: circuits/forms/filtersets.py:117 dcim/forms/bulk_edit.py:121 #: dcim/forms/bulk_edit.py:186 dcim/forms/bulk_edit.py:256 #: dcim/forms/bulk_edit.py:368 dcim/forms/bulk_edit.py:588 #: dcim/forms/bulk_edit.py:692 dcim/forms/bulk_edit.py:1599 @@ -541,9 +556,9 @@ msgstr "Status" #: dcim/forms/bulk_import.py:1379 dcim/forms/filtersets.py:166 #: dcim/forms/filtersets.py:198 dcim/forms/filtersets.py:249 #: dcim/forms/filtersets.py:334 dcim/forms/filtersets.py:355 -#: dcim/forms/filtersets.py:652 dcim/forms/filtersets.py:827 -#: dcim/forms/filtersets.py:889 dcim/forms/filtersets.py:919 -#: dcim/forms/filtersets.py:1041 dcim/tables/power.py:88 +#: dcim/forms/filtersets.py:652 dcim/forms/filtersets.py:835 +#: dcim/forms/filtersets.py:897 dcim/forms/filtersets.py:927 +#: dcim/forms/filtersets.py:1049 dcim/tables/power.py:88 #: extras/filtersets.py:564 extras/forms/filtersets.py:332 #: extras/forms/filtersets.py:405 ipam/forms/bulk_edit.py:41 #: ipam/forms/bulk_edit.py:66 ipam/forms/bulk_edit.py:110 @@ -557,8 +572,8 @@ msgstr "Status" #: ipam/forms/bulk_import.py:451 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:173 ipam/forms/filtersets.py:260 -#: ipam/forms/filtersets.py:303 ipam/forms/filtersets.py:469 +#: ipam/forms/filtersets.py:174 ipam/forms/filtersets.py:267 +#: ipam/forms/filtersets.py:310 ipam/forms/filtersets.py:476 #: ipam/tables/ip.py:451 ipam/tables/vlans.py:224 #: templates/circuits/circuit.html:38 templates/dcim/cable.html:23 #: templates/dcim/device.html:78 templates/dcim/location.html:49 @@ -587,25 +602,25 @@ msgstr "Status" #: wireless/forms/bulk_import.py:55 wireless/forms/bulk_import.py:97 #: wireless/forms/filtersets.py:35 wireless/forms/filtersets.py:75 msgid "Tenant" -msgstr "Mieter" +msgstr "Mandant" -#: circuits/forms/bulk_edit.py:143 circuits/forms/filtersets.py:171 +#: circuits/forms/bulk_edit.py:145 circuits/forms/filtersets.py:172 msgid "Install date" msgstr "Datum der Installation" -#: circuits/forms/bulk_edit.py:148 circuits/forms/filtersets.py:176 +#: circuits/forms/bulk_edit.py:150 circuits/forms/filtersets.py:177 msgid "Termination date" msgstr "Kündigungsdatum" -#: circuits/forms/bulk_edit.py:154 circuits/forms/filtersets.py:183 +#: circuits/forms/bulk_edit.py:156 circuits/forms/filtersets.py:184 msgid "Commit rate (Kbps)" -msgstr "Commit-Rate (Kbps)" +msgstr "Vereinbarte Bandbreite (Kbps)" -#: circuits/forms/bulk_edit.py:169 circuits/forms/model_forms.py:110 +#: circuits/forms/bulk_edit.py:171 circuits/forms/model_forms.py:110 msgid "Service Parameters" -msgstr "Service-Parameter" +msgstr "Service Parameter" -#: circuits/forms/bulk_edit.py:170 circuits/forms/model_forms.py:111 +#: circuits/forms/bulk_edit.py:172 circuits/forms/model_forms.py:111 #: dcim/forms/model_forms.py:138 dcim/forms/model_forms.py:180 #: dcim/forms/model_forms.py:228 dcim/forms/model_forms.py:267 #: dcim/forms/model_forms.py:713 dcim/forms/model_forms.py:1636 @@ -622,28 +637,62 @@ msgstr "Service-Parameter" #: vpn/forms/model_forms.py:147 vpn/forms/model_forms.py:411 #: wireless/forms/model_forms.py:54 wireless/forms/model_forms.py:163 msgid "Tenancy" -msgstr "Mietverhältnis" +msgstr "Mandantenverhältnis" -#: circuits/forms/bulk_import.py:37 circuits/forms/bulk_import.py:52 -#: circuits/forms/bulk_import.py:78 +#: circuits/forms/bulk_edit.py:191 circuits/forms/bulk_edit.py:215 +#: circuits/forms/model_forms.py:153 circuits/tables/circuits.py:109 +#: templates/circuits/inc/circuit_termination_fields.html:62 +#: templates/circuits/providernetwork.html:17 +msgid "Provider Network" +msgstr "Provider Netzwerk" + +#: circuits/forms/bulk_edit.py:197 +msgid "Port speed (Kbps)" +msgstr "Portgeschwindigkeit (Kbit/s)" + +#: circuits/forms/bulk_edit.py:201 +msgid "Upstream speed (Kbps)" +msgstr "Upstream-Geschwindigkeit (Kbps)" + +#: circuits/forms/bulk_edit.py:204 dcim/forms/bulk_edit.py:849 +#: dcim/forms/bulk_edit.py:1208 dcim/forms/bulk_edit.py:1225 +#: dcim/forms/bulk_edit.py:1242 dcim/forms/bulk_edit.py:1260 +#: dcim/forms/bulk_edit.py:1348 dcim/forms/bulk_edit.py:1487 +#: dcim/forms/bulk_edit.py:1504 +msgid "Mark connected" +msgstr "Als verbunden markieren" + +#: circuits/forms/bulk_edit.py:217 circuits/forms/model_forms.py:155 +#: templates/circuits/inc/circuit_termination_fields.html:54 +#: templates/dcim/frontport.html:121 templates/dcim/interface.html:193 +#: templates/dcim/rearport.html:111 +msgid "Circuit Termination" +msgstr "Transportnetz Abschlusspunkt" + +#: circuits/forms/bulk_edit.py:219 circuits/forms/model_forms.py:157 +msgid "Termination Details" +msgstr "Einzelheiten zum Abschlusspunkt" + +#: circuits/forms/bulk_import.py:38 circuits/forms/bulk_import.py:53 +#: circuits/forms/bulk_import.py:79 msgid "Assigned provider" -msgstr "Zugewiesener Anbieter" +msgstr "Zugewiesener Provider" -#: circuits/forms/bulk_import.py:69 dcim/forms/bulk_import.py:178 +#: circuits/forms/bulk_import.py:70 dcim/forms/bulk_import.py:178 #: dcim/forms/bulk_import.py:388 dcim/forms/bulk_import.py:1108 #: dcim/forms/bulk_import.py:1187 extras/forms/bulk_import.py:232 msgid "RGB color in hexadecimal. Example:" msgstr "RGB-Farbe in Hexadezimal. Beispiel:" -#: circuits/forms/bulk_import.py:84 +#: circuits/forms/bulk_import.py:85 msgid "Assigned provider account" msgstr "Zugewiesenes Providerkonto" -#: circuits/forms/bulk_import.py:91 +#: circuits/forms/bulk_import.py:92 msgid "Type of circuit" -msgstr "Art der Schaltung" +msgstr "Transportnetz Typ" -#: circuits/forms/bulk_import.py:96 dcim/forms/bulk_import.py:89 +#: circuits/forms/bulk_import.py:97 dcim/forms/bulk_import.py:89 #: dcim/forms/bulk_import.py:148 dcim/forms/bulk_import.py:204 #: dcim/forms/bulk_import.py:452 dcim/forms/bulk_import.py:606 #: dcim/forms/bulk_import.py:1324 ipam/forms/bulk_import.py:193 @@ -654,7 +703,7 @@ msgstr "Art der Schaltung" msgid "Operational status" msgstr "Betriebsstatus" -#: circuits/forms/bulk_import.py:103 dcim/forms/bulk_import.py:110 +#: circuits/forms/bulk_import.py:104 dcim/forms/bulk_import.py:110 #: dcim/forms/bulk_import.py:155 dcim/forms/bulk_import.py:286 #: dcim/forms/bulk_import.py:428 dcim/forms/bulk_import.py:1171 #: dcim/forms/bulk_import.py:1319 dcim/forms/bulk_import.py:1383 @@ -666,39 +715,48 @@ msgstr "Betriebsstatus" #: virtualization/forms/bulk_import.py:119 vpn/forms/bulk_import.py:63 #: wireless/forms/bulk_import.py:59 wireless/forms/bulk_import.py:101 msgid "Assigned tenant" -msgstr "Zugewiesener Mieter" +msgstr "Zugewiesener Mandant" -#: circuits/forms/bulk_import.py:122 circuits/forms/filtersets.py:144 -#: circuits/forms/model_forms.py:142 +#: circuits/forms/bulk_import.py:122 +#: 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 +msgid "Termination" +msgstr "Abschlusspunkt" + +#: circuits/forms/bulk_import.py:132 circuits/forms/filtersets.py:145 +#: circuits/forms/filtersets.py:225 circuits/forms/model_forms.py:142 msgid "Provider network" -msgstr "Anbieter-Netzwerk" +msgstr "Provider-Netzwerk" -#: circuits/forms/filtersets.py:27 circuits/forms/filtersets.py:115 -#: dcim/forms/bulk_edit.py:248 dcim/forms/bulk_edit.py:346 -#: dcim/forms/bulk_edit.py:580 dcim/forms/bulk_edit.py:627 -#: dcim/forms/bulk_edit.py:780 dcim/forms/bulk_import.py:189 -#: dcim/forms/bulk_import.py:263 dcim/forms/bulk_import.py:491 -#: dcim/forms/bulk_import.py:1268 dcim/forms/bulk_import.py:1302 -#: dcim/forms/filtersets.py:93 dcim/forms/filtersets.py:246 -#: dcim/forms/filtersets.py:279 dcim/forms/filtersets.py:331 -#: dcim/forms/filtersets.py:382 dcim/forms/filtersets.py:649 -#: dcim/forms/filtersets.py:690 dcim/forms/filtersets.py:888 -#: dcim/forms/filtersets.py:917 dcim/forms/filtersets.py:937 -#: dcim/forms/filtersets.py:1001 dcim/forms/filtersets.py:1031 -#: dcim/forms/filtersets.py:1040 dcim/forms/filtersets.py:1151 -#: dcim/forms/filtersets.py:1173 dcim/forms/filtersets.py:1195 -#: dcim/forms/filtersets.py:1212 dcim/forms/filtersets.py:1232 -#: dcim/forms/filtersets.py:1340 dcim/forms/filtersets.py:1362 -#: dcim/forms/filtersets.py:1383 dcim/forms/filtersets.py:1398 -#: dcim/forms/filtersets.py:1412 dcim/forms/model_forms.py:179 -#: dcim/forms/model_forms.py:211 dcim/forms/model_forms.py:411 -#: dcim/forms/model_forms.py:673 dcim/tables/devices.py:162 -#: dcim/tables/power.py:30 dcim/tables/racks.py:58 dcim/tables/racks.py:143 -#: extras/filtersets.py:488 extras/forms/filtersets.py:329 -#: ipam/forms/bulk_edit.py:457 ipam/forms/filtersets.py:172 -#: ipam/forms/filtersets.py:407 ipam/forms/filtersets.py:430 -#: ipam/forms/filtersets.py:467 ipam/forms/model_forms.py:590 -#: templates/dcim/device.html:25 templates/dcim/device_edit.html:30 +#: circuits/forms/filtersets.py:28 circuits/forms/filtersets.py:116 +#: circuits/forms/filtersets.py:198 dcim/forms/bulk_edit.py:248 +#: dcim/forms/bulk_edit.py:346 dcim/forms/bulk_edit.py:580 +#: dcim/forms/bulk_edit.py:627 dcim/forms/bulk_edit.py:780 +#: dcim/forms/bulk_import.py:189 dcim/forms/bulk_import.py:263 +#: dcim/forms/bulk_import.py:491 dcim/forms/bulk_import.py:1268 +#: dcim/forms/bulk_import.py:1302 dcim/forms/filtersets.py:93 +#: dcim/forms/filtersets.py:246 dcim/forms/filtersets.py:279 +#: dcim/forms/filtersets.py:331 dcim/forms/filtersets.py:382 +#: dcim/forms/filtersets.py:649 dcim/forms/filtersets.py:691 +#: dcim/forms/filtersets.py:896 dcim/forms/filtersets.py:925 +#: dcim/forms/filtersets.py:945 dcim/forms/filtersets.py:1009 +#: dcim/forms/filtersets.py:1039 dcim/forms/filtersets.py:1048 +#: dcim/forms/filtersets.py:1159 dcim/forms/filtersets.py:1181 +#: dcim/forms/filtersets.py:1203 dcim/forms/filtersets.py:1220 +#: dcim/forms/filtersets.py:1240 dcim/forms/filtersets.py:1348 +#: dcim/forms/filtersets.py:1370 dcim/forms/filtersets.py:1391 +#: dcim/forms/filtersets.py:1406 dcim/forms/filtersets.py:1420 +#: dcim/forms/model_forms.py:179 dcim/forms/model_forms.py:211 +#: dcim/forms/model_forms.py:411 dcim/forms/model_forms.py:673 +#: dcim/tables/devices.py:162 dcim/tables/power.py:30 dcim/tables/racks.py:58 +#: dcim/tables/racks.py:143 extras/filtersets.py:488 +#: extras/forms/filtersets.py:329 ipam/forms/bulk_edit.py:457 +#: ipam/forms/filtersets.py:173 ipam/forms/filtersets.py:414 +#: ipam/forms/filtersets.py:437 ipam/forms/filtersets.py:474 +#: ipam/forms/model_forms.py:599 templates/dcim/device.html:25 +#: 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:26 templates/dcim/rackreservation.html:32 @@ -708,12 +766,12 @@ msgstr "Anbieter-Netzwerk" msgid "Location" msgstr "Standort" -#: circuits/forms/filtersets.py:29 circuits/forms/filtersets.py:117 +#: circuits/forms/filtersets.py:30 circuits/forms/filtersets.py:118 #: dcim/forms/filtersets.py:137 dcim/forms/filtersets.py:151 #: dcim/forms/filtersets.py:167 dcim/forms/filtersets.py:199 #: dcim/forms/filtersets.py:250 dcim/forms/filtersets.py:335 #: dcim/forms/filtersets.py:406 dcim/forms/filtersets.py:653 -#: dcim/forms/filtersets.py:1002 netbox/navigation/menu.py:44 +#: dcim/forms/filtersets.py:1010 netbox/navigation/menu.py:44 #: netbox/navigation/menu.py:46 tenancy/forms/filtersets.py:42 #: tenancy/tables/columns.py:70 tenancy/tables/contacts.py:25 #: tenancy/views.py:19 virtualization/forms/filtersets.py:37 @@ -722,22 +780,22 @@ msgstr "Standort" msgid "Contacts" msgstr "Kontakte" -#: circuits/forms/filtersets.py:34 circuits/forms/filtersets.py:154 +#: circuits/forms/filtersets.py:35 circuits/forms/filtersets.py:155 #: dcim/forms/bulk_edit.py:111 dcim/forms/bulk_edit.py:223 #: dcim/forms/bulk_edit.py:755 dcim/forms/bulk_import.py:92 #: dcim/forms/filtersets.py:71 dcim/forms/filtersets.py:178 #: dcim/forms/filtersets.py:204 dcim/forms/filtersets.py:257 -#: dcim/forms/filtersets.py:360 dcim/forms/filtersets.py:667 -#: dcim/forms/filtersets.py:894 dcim/forms/filtersets.py:924 -#: dcim/forms/filtersets.py:1008 dcim/forms/filtersets.py:1047 -#: dcim/forms/filtersets.py:1460 dcim/forms/filtersets.py:1484 -#: dcim/forms/filtersets.py:1508 dcim/forms/model_forms.py:111 +#: dcim/forms/filtersets.py:360 dcim/forms/filtersets.py:668 +#: dcim/forms/filtersets.py:902 dcim/forms/filtersets.py:932 +#: dcim/forms/filtersets.py:1016 dcim/forms/filtersets.py:1055 +#: dcim/forms/filtersets.py:1468 dcim/forms/filtersets.py:1492 +#: dcim/forms/filtersets.py:1516 dcim/forms/model_forms.py:111 #: dcim/forms/object_create.py:375 dcim/tables/devices.py:148 #: dcim/tables/sites.py:85 extras/filtersets.py:455 #: ipam/forms/bulk_edit.py:206 ipam/forms/bulk_edit.py:438 -#: ipam/forms/bulk_edit.py:512 ipam/forms/filtersets.py:216 -#: ipam/forms/filtersets.py:415 ipam/forms/filtersets.py:475 -#: ipam/forms/model_forms.py:562 templates/dcim/device.html:17 +#: ipam/forms/bulk_edit.py:512 ipam/forms/filtersets.py:217 +#: ipam/forms/filtersets.py:422 ipam/forms/filtersets.py:482 +#: ipam/forms/model_forms.py:571 templates/dcim/device.html:17 #: templates/dcim/rack.html:16 templates/dcim/rackreservation.html:22 #: templates/dcim/region.html:26 templates/dcim/site.html:30 #: templates/ipam/prefix.html:49 templates/ipam/vlan.html:16 @@ -747,42 +805,42 @@ msgstr "Kontakte" msgid "Region" msgstr "Region" -#: circuits/forms/filtersets.py:39 circuits/forms/filtersets.py:159 +#: circuits/forms/filtersets.py:40 circuits/forms/filtersets.py:160 #: dcim/forms/bulk_edit.py:231 dcim/forms/bulk_edit.py:763 #: dcim/forms/filtersets.py:76 dcim/forms/filtersets.py:183 #: dcim/forms/filtersets.py:209 dcim/forms/filtersets.py:270 -#: dcim/forms/filtersets.py:365 dcim/forms/filtersets.py:672 -#: dcim/forms/filtersets.py:899 dcim/forms/filtersets.py:1013 -#: dcim/forms/filtersets.py:1052 dcim/forms/object_create.py:383 +#: dcim/forms/filtersets.py:365 dcim/forms/filtersets.py:673 +#: dcim/forms/filtersets.py:907 dcim/forms/filtersets.py:1021 +#: dcim/forms/filtersets.py:1060 dcim/forms/object_create.py:383 #: extras/filtersets.py:472 ipam/forms/bulk_edit.py:211 #: ipam/forms/bulk_edit.py:445 ipam/forms/bulk_edit.py:517 -#: ipam/forms/filtersets.py:221 ipam/forms/filtersets.py:420 -#: ipam/forms/filtersets.py:480 ipam/forms/model_forms.py:575 +#: ipam/forms/filtersets.py:222 ipam/forms/filtersets.py:427 +#: ipam/forms/filtersets.py:487 ipam/forms/model_forms.py:584 #: virtualization/forms/bulk_edit.py:86 virtualization/forms/filtersets.py:69 #: virtualization/forms/filtersets.py:138 #: virtualization/forms/model_forms.py:98 msgid "Site group" -msgstr "Seitengruppe" +msgstr "Standortgruppe" -#: circuits/forms/filtersets.py:62 circuits/forms/filtersets.py:80 -#: circuits/forms/filtersets.py:99 circuits/forms/filtersets.py:114 +#: circuits/forms/filtersets.py:63 circuits/forms/filtersets.py:81 +#: circuits/forms/filtersets.py:100 circuits/forms/filtersets.py:115 #: core/forms/filtersets.py:64 dcim/forms/bulk_edit.py:726 #: dcim/forms/filtersets.py:165 dcim/forms/filtersets.py:197 -#: dcim/forms/filtersets.py:826 dcim/forms/filtersets.py:918 -#: dcim/forms/filtersets.py:1042 dcim/forms/filtersets.py:1150 -#: dcim/forms/filtersets.py:1172 dcim/forms/filtersets.py:1194 -#: dcim/forms/filtersets.py:1211 dcim/forms/filtersets.py:1228 -#: dcim/forms/filtersets.py:1339 dcim/forms/filtersets.py:1361 -#: dcim/forms/filtersets.py:1382 dcim/forms/filtersets.py:1397 -#: dcim/forms/filtersets.py:1410 extras/forms/filtersets.py:43 +#: dcim/forms/filtersets.py:834 dcim/forms/filtersets.py:926 +#: dcim/forms/filtersets.py:1050 dcim/forms/filtersets.py:1158 +#: dcim/forms/filtersets.py:1180 dcim/forms/filtersets.py:1202 +#: dcim/forms/filtersets.py:1219 dcim/forms/filtersets.py:1236 +#: dcim/forms/filtersets.py:1347 dcim/forms/filtersets.py:1369 +#: dcim/forms/filtersets.py:1390 dcim/forms/filtersets.py:1405 +#: dcim/forms/filtersets.py:1418 extras/forms/filtersets.py:43 #: extras/forms/filtersets.py:112 extras/forms/filtersets.py:143 #: extras/forms/filtersets.py:183 extras/forms/filtersets.py:199 #: extras/forms/filtersets.py:230 extras/forms/filtersets.py:254 #: extras/forms/filtersets.py:450 extras/forms/filtersets.py:488 -#: ipam/forms/filtersets.py:99 ipam/forms/filtersets.py:259 -#: ipam/forms/filtersets.py:300 ipam/forms/filtersets.py:375 -#: ipam/forms/filtersets.py:468 ipam/forms/filtersets.py:527 -#: ipam/forms/filtersets.py:545 netbox/tables/tables.py:253 +#: ipam/forms/filtersets.py:99 ipam/forms/filtersets.py:266 +#: ipam/forms/filtersets.py:307 ipam/forms/filtersets.py:382 +#: ipam/forms/filtersets.py:475 ipam/forms/filtersets.py:534 +#: ipam/forms/filtersets.py:552 netbox/tables/tables.py:255 #: virtualization/forms/filtersets.py:45 #: virtualization/forms/filtersets.py:103 #: virtualization/forms/filtersets.py:194 @@ -791,28 +849,15 @@ msgstr "Seitengruppe" msgid "Attributes" msgstr "Attribute" -#: circuits/forms/filtersets.py:70 circuits/tables/circuits.py:60 +#: circuits/forms/filtersets.py:71 circuits/tables/circuits.py:61 #: circuits/tables/providers.py:66 templates/circuits/circuit.html:22 #: templates/circuits/provideraccount.html:24 msgid "Account" msgstr "Konto" -#: circuits/forms/model_forms.py:153 -#: templates/circuits/inc/circuit_termination.html:88 -#: templates/circuits/providernetwork.html:17 -msgid "Provider Network" -msgstr "Anbieter-Netzwerk" - -#: circuits/forms/model_forms.py:155 -#: templates/circuits/inc/circuit_termination.html:80 -#: templates/dcim/frontport.html:121 templates/dcim/interface.html:193 -#: templates/dcim/rearport.html:111 -msgid "Circuit Termination" -msgstr "Unterbrechung des Stromkreises" - -#: circuits/forms/model_forms.py:157 -msgid "Termination Details" -msgstr "Einzelheiten zur Kündigung" +#: circuits/forms/filtersets.py:215 +msgid "Term Side" +msgstr "Begriffsseite" #: circuits/models/circuits.py:25 dcim/models/cables.py:67 #: dcim/models/device_component_templates.py:491 @@ -825,26 +870,26 @@ msgstr "Farbe" #: circuits/models/circuits.py:34 msgid "circuit type" -msgstr "Schaltungstyp" +msgstr "Transportnetz Typ" #: circuits/models/circuits.py:35 msgid "circuit types" -msgstr "Schaltungstypen" +msgstr "Transportnetz Typen" #: circuits/models/circuits.py:46 msgid "circuit ID" -msgstr "Schaltkreis-ID" +msgstr "Transportnetz-ID" #: circuits/models/circuits.py:47 msgid "Unique circuit ID" -msgstr "Eindeutige Schaltkreis-ID" +msgstr "Eindeutige Transportnetz-ID" #: circuits/models/circuits.py:67 core/models/data.py:55 #: core/models/jobs.py:85 dcim/models/cables.py:49 dcim/models/devices.py:643 #: dcim/models/devices.py:1155 dcim/models/devices.py:1364 #: dcim/models/power.py:96 dcim/models/racks.py:98 dcim/models/sites.py:154 -#: dcim/models/sites.py:266 ipam/models/ip.py:252 ipam/models/ip.py:521 -#: ipam/models/ip.py:729 ipam/models/vlans.py:175 +#: dcim/models/sites.py:266 ipam/models/ip.py:253 ipam/models/ip.py:522 +#: ipam/models/ip.py:730 ipam/models/vlans.py:175 #: virtualization/models/clusters.py:74 #: virtualization/models/virtualmachines.py:84 vpn/models/tunnels.py:40 #: wireless/models.py:94 wireless/models.py:158 @@ -861,23 +906,23 @@ msgstr "endet" #: circuits/models/circuits.py:92 msgid "commit rate (Kbps)" -msgstr "Commit-Rate (Kbps)" +msgstr "garantierte Bandbreite (Kbps)" #: circuits/models/circuits.py:93 msgid "Committed rate" -msgstr "Festgeschriebener Tarif" +msgstr "Garantierte Bandbreite" #: circuits/models/circuits.py:135 msgid "circuit" -msgstr "Kreislauf" +msgstr "Transportnetz" #: circuits/models/circuits.py:136 msgid "circuits" -msgstr "Schaltungen" +msgstr "Transportnetze" #: circuits/models/circuits.py:169 msgid "termination" -msgstr "Kündigung" +msgstr "Abschlusspunkt" #: circuits/models/circuits.py:186 msgid "port speed (Kbps)" @@ -885,16 +930,16 @@ msgstr "Portgeschwindigkeit (Kbps)" #: circuits/models/circuits.py:189 msgid "Physical circuit speed" -msgstr "Physikalische Schaltkreisgeschwindigkeit" +msgstr "Physikalische Transportnetzgeschwindigkeit" #: circuits/models/circuits.py:194 msgid "upstream speed (Kbps)" -msgstr "Upstream-Geschwindigkeit (Kbps)" +msgstr "Upstream Geschwindigkeit (Kbps)" #: circuits/models/circuits.py:195 msgid "Upstream speed, if different from port speed" msgstr "" -"Upstream-Geschwindigkeit, falls sie von der Portgeschwindigkeit abweicht" +"Upstream Geschwindigkeit, falls sie von der Portgeschwindigkeit abweicht" #: circuits/models/circuits.py:200 msgid "cross-connect ID" @@ -906,11 +951,11 @@ msgstr "ID des lokalen Cross-Connects" #: circuits/models/circuits.py:206 msgid "patch panel/port(s)" -msgstr "Patchpanel/Anschluss (e)" +msgstr "Patchpanel/Anschluss" #: circuits/models/circuits.py:207 msgid "Patch panel ID and port number(s)" -msgstr "Patchpanel-ID und Portnummer (n)" +msgstr "Patchpanel-ID und Anschlussnummer(n)" #: circuits/models/circuits.py:210 #: dcim/models/device_component_templates.py:61 @@ -928,25 +973,25 @@ msgstr "Beschreibung" #: circuits/models/circuits.py:223 msgid "circuit termination" -msgstr "Stromkreisabschluß" +msgstr "Transportnetz Abschlusspunkt" #: circuits/models/circuits.py:224 msgid "circuit terminations" -msgstr "Stromkreisabschlüsse" +msgstr "Transportnetz Abschlusspunkte" #: circuits/models/circuits.py:237 msgid "" "A circuit termination must attach to either a site or a provider network." msgstr "" -"Ein Leitungsabschluß muss entweder an einen Standort oder an ein " -"Anbieternetzwerk angeschlossen werden." +"Ein Leitungsabschluss muss entweder an einen Standort oder an ein Provider-" +"Netzwerk angeschlossen werden." #: circuits/models/circuits.py:239 msgid "" "A circuit termination cannot attach to both a site and a provider network." msgstr "" -"Ein Leitungsabschluß kann nicht sowohl an einen Standort als auch an ein " -"Anbieternetzwerk angeschlossen werden." +"Ein Leitungsabschluss kann nicht sowohl an einen Standort als auch an ein " +"Provider-Netzwerk angeschlossen werden." #: circuits/models/providers.py:22 circuits/models/providers.py:66 #: circuits/models/providers.py:104 core/models/data.py:42 @@ -977,7 +1022,7 @@ msgstr "Name" #: circuits/models/providers.py:25 msgid "Full name of the provider" -msgstr "Vollständiger Name des Anbieters" +msgstr "Vollständiger Name des Providers" #: circuits/models/providers.py:28 dcim/models/devices.py:86 #: dcim/models/sites.py:149 extras/models/models.py:534 ipam/models/asns.py:23 @@ -985,27 +1030,27 @@ msgstr "Vollständiger Name des Anbieters" #: netbox/models/__init__.py:185 tenancy/models/tenants.py:25 #: tenancy/models/tenants.py:49 vpn/models/l2vpn.py:27 wireless/models.py:55 msgid "slug" -msgstr "Schnecke" +msgstr "URL-Slug" #: circuits/models/providers.py:42 msgid "provider" -msgstr "Anbieter" +msgstr "Provider" #: circuits/models/providers.py:43 msgid "providers" -msgstr "Anbieter" +msgstr "Provider" #: circuits/models/providers.py:63 msgid "account ID" -msgstr "Konto-ID" +msgstr "Konto ID" #: circuits/models/providers.py:86 msgid "provider account" -msgstr "Anbieterkonto" +msgstr "Providerkonto" #: circuits/models/providers.py:87 msgid "provider accounts" -msgstr "Anbieterkonten" +msgstr "Providerkonten" #: circuits/models/providers.py:115 msgid "service ID" @@ -1013,21 +1058,21 @@ msgstr "Dienst-ID" #: circuits/models/providers.py:126 msgid "provider network" -msgstr "Anbieter-Netzwerk" +msgstr "Provider-Netzwerk" #: circuits/models/providers.py:127 msgid "provider networks" -msgstr "Anbieternetzwerke" +msgstr "Providernetzwerke" -#: circuits/tables/circuits.py:29 circuits/tables/providers.py:18 +#: circuits/tables/circuits.py:30 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:13 #: core/tables/tasks.py:11 core/tables/tasks.py:115 #: dcim/forms/filtersets.py:61 dcim/forms/object_create.py:43 #: dcim/tables/devices.py:60 dcim/tables/devices.py:97 #: dcim/tables/devices.py:139 dcim/tables/devices.py:294 -#: dcim/tables/devices.py:376 dcim/tables/devices.py:420 -#: dcim/tables/devices.py:472 dcim/tables/devices.py:524 +#: dcim/tables/devices.py:380 dcim/tables/devices.py:424 +#: dcim/tables/devices.py:476 dcim/tables/devices.py:528 #: dcim/tables/devices.py:644 dcim/tables/devices.py:726 #: dcim/tables/devices.py:776 dcim/tables/devices.py:842 #: dcim/tables/devices.py:957 dcim/tables/devices.py:977 @@ -1041,7 +1086,7 @@ msgstr "Anbieternetzwerke" #: extras/tables/tables.py:209 extras/tables/tables.py:256 #: extras/tables/tables.py:279 extras/tables/tables.py:329 #: extras/tables/tables.py:381 extras/tables/tables.py:404 -#: ipam/forms/bulk_edit.py:391 ipam/forms/filtersets.py:379 +#: ipam/forms/bulk_edit.py:391 ipam/forms/filtersets.py:386 #: ipam/tables/asn.py:16 ipam/tables/ip.py:85 ipam/tables/ip.py:159 #: ipam/tables/services.py:15 ipam/tables/services.py:40 #: ipam/tables/vlans.py:64 ipam/tables/vlans.py:110 ipam/tables/vrfs.py:26 @@ -1107,32 +1152,32 @@ msgstr "Anbieternetzwerke" msgid "Name" msgstr "Name" -#: circuits/tables/circuits.py:38 circuits/tables/providers.py:45 +#: circuits/tables/circuits.py:39 circuits/tables/providers.py:45 #: circuits/tables/providers.py:79 netbox/navigation/menu.py:253 #: netbox/navigation/menu.py:257 netbox/navigation/menu.py:259 #: templates/circuits/provider.html:57 #: templates/circuits/provideraccount.html:44 #: templates/circuits/providernetwork.html:50 msgid "Circuits" -msgstr "Schaltungen" +msgstr "Transportnetze" -#: circuits/tables/circuits.py:52 templates/circuits/circuit.html:26 +#: circuits/tables/circuits.py:53 templates/circuits/circuit.html:26 msgid "Circuit ID" -msgstr "Schaltkreis-ID" +msgstr "Transportnetz-ID" -#: circuits/tables/circuits.py:65 wireless/forms/model_forms.py:160 +#: circuits/tables/circuits.py:66 wireless/forms/model_forms.py:160 msgid "Side A" msgstr "Seite A" -#: circuits/tables/circuits.py:69 +#: circuits/tables/circuits.py:70 msgid "Side Z" msgstr "Seite Z" -#: circuits/tables/circuits.py:72 templates/circuits/circuit.html:55 +#: circuits/tables/circuits.py:73 templates/circuits/circuit.html:55 msgid "Commit Rate" -msgstr "Commit-Rate" +msgstr "Garantierte Bandbreite" -#: circuits/tables/circuits.py:75 circuits/tables/providers.py:48 +#: circuits/tables/circuits.py:76 circuits/tables/providers.py:48 #: circuits/tables/providers.py:82 circuits/tables/providers.py:107 #: dcim/tables/devices.py:1019 dcim/tables/devicetypes.py:92 #: dcim/tables/modules.py:29 dcim/tables/modules.py:72 dcim/tables/power.py:39 @@ -1189,12 +1234,12 @@ msgstr "Abgeschlossen" #: core/choices.py:22 core/choices.py:59 core/constants.py:20 #: core/tables/tasks.py:34 dcim/choices.py:176 dcim/choices.py:222 -#: dcim/choices.py:1506 extras/choices.py:226 virtualization/choices.py:47 +#: dcim/choices.py:1534 extras/choices.py:226 virtualization/choices.py:47 msgid "Failed" msgstr "Fehlgeschlagen" -#: core/choices.py:35 netbox/navigation/menu.py:319 -#: netbox/navigation/menu.py:323 templates/extras/script/base.html:14 +#: core/choices.py:35 netbox/navigation/menu.py:320 +#: netbox/navigation/menu.py:324 templates/extras/script/base.html:14 #: templates/extras/script_list.html:7 templates/extras/script_list.html:12 #: templates/extras/script_result.html:17 msgid "Scripts" @@ -1215,11 +1260,11 @@ msgstr "Geplant" #: core/choices.py:56 extras/choices.py:223 msgid "Running" -msgstr "Laufen" +msgstr "Laufend" #: core/choices.py:58 extras/choices.py:225 msgid "Errored" -msgstr "Irrtümlich" +msgstr "Fehlgeschlagen" #: core/constants.py:19 core/tables/tasks.py:30 msgid "Finished" @@ -1240,7 +1285,7 @@ msgstr "Gestoppt" #: core/constants.py:25 msgid "Cancelled" -msgstr "Abgesagt" +msgstr "Abgebrochen" #: core/data_backends.py:29 templates/dcim/interface.html:216 msgid "Local" @@ -1254,7 +1299,7 @@ msgstr "Nutzername" #: core/data_backends.py:49 core/data_backends.py:55 msgid "Only used for cloning with HTTP(S)" -msgstr "Wird nur für das Klonen mit HTTP (S) verwendet" +msgstr "Wird nur für das Klonen über HTTP(S) verwendet" #: core/data_backends.py:53 templates/account/base.html:17 #: templates/account/password.html:11 users/forms/model_forms.py:171 @@ -1263,12 +1308,12 @@ msgstr "Passwort" #: core/data_backends.py:59 msgid "Branch" -msgstr "Filiale" +msgstr "Branch" #: core/data_backends.py:105 #, python-brace-format msgid "Fetching remote data failed ({name}): {error}" -msgstr "Das Abrufen der Remote-Daten ist fehlgeschlagen ({name}): {error}" +msgstr "Abrufen der Remote-Daten ist fehlgeschlagen ({name}): {error}" #: core/data_backends.py:118 msgid "AWS access key ID" @@ -1289,8 +1334,8 @@ msgstr "Datenquelle (Name)" #: core/forms/bulk_edit.py:25 core/forms/filtersets.py:40 #: core/tables/data.py:26 dcim/forms/bulk_edit.py:1020 -#: dcim/forms/bulk_edit.py:1293 dcim/forms/filtersets.py:1268 -#: dcim/tables/devices.py:549 dcim/tables/devicetypes.py:221 +#: dcim/forms/bulk_edit.py:1293 dcim/forms/filtersets.py:1276 +#: dcim/tables/devices.py:553 dcim/tables/devicetypes.py:221 #: extras/forms/bulk_edit.py:98 extras/forms/bulk_edit.py:162 #: extras/forms/bulk_edit.py:221 extras/forms/filtersets.py:120 #: extras/forms/filtersets.py:207 extras/forms/filtersets.py:268 @@ -1331,7 +1376,7 @@ msgstr "Regeln ignorieren" #: templates/extras/exporttemplate.html:35 #: templates/virtualization/virtualmachine/render_config.html:18 msgid "Data Source" -msgstr "Quelle der Daten" +msgstr "Datenquelle" #: core/forms/filtersets.py:52 core/forms/mixins.py:21 msgid "File" @@ -1341,11 +1386,11 @@ msgstr "Datei" #: extras/forms/filtersets.py:148 extras/forms/filtersets.py:337 #: extras/forms/filtersets.py:422 msgid "Data source" -msgstr "Quelle der Daten" +msgstr "Datenquelle" #: core/forms/filtersets.py:67 extras/forms/filtersets.py:449 msgid "Creation" -msgstr "Schöpfung" +msgstr "Erstellung" #: core/forms/filtersets.py:71 extras/forms/filtersets.py:470 #: extras/forms/filtersets.py:513 extras/tables/tables.py:183 @@ -1353,7 +1398,7 @@ msgstr "Schöpfung" #: templates/extras/objectchange.html:51 tenancy/tables/contacts.py:90 #: vpn/tables/l2vpn.py:59 msgid "Object Type" -msgstr "Art des Objekts" +msgstr "Objekttyp" #: core/forms/filtersets.py:81 msgid "Created after" @@ -1361,23 +1406,23 @@ msgstr "Erstellt nach" #: core/forms/filtersets.py:86 msgid "Created before" -msgstr "Vorher erstellt" +msgstr "Erstellt vor" #: core/forms/filtersets.py:91 msgid "Scheduled after" -msgstr "Geplant danach" +msgstr "Geplant nach" #: core/forms/filtersets.py:96 msgid "Scheduled before" -msgstr "Vorher geplant" +msgstr "Geplant vor" #: core/forms/filtersets.py:101 msgid "Started after" -msgstr "Begonnen danach" +msgstr "Begonnen nach" #: core/forms/filtersets.py:106 msgid "Started before" -msgstr "Hat schon einmal angefangen" +msgstr "Begonnen vor" #: core/forms/filtersets.py:111 msgid "Completed after" @@ -1385,7 +1430,7 @@ msgstr "Abgeschlossen nach" #: core/forms/filtersets.py:116 msgid "Completed before" -msgstr "Vorher abgeschlossen" +msgstr "Abgeschlossen vor" #: core/forms/filtersets.py:123 dcim/forms/bulk_edit.py:361 #: dcim/forms/filtersets.py:353 dcim/forms/filtersets.py:397 @@ -1423,16 +1468,16 @@ msgstr "" #: core/forms/model_forms.py:110 msgid "Must upload a file or select a data file to sync" msgstr "" -"Muss eine Datei hochladen oder eine Datendatei zum Synchronisieren auswählen" +"Lade eine Datei hoch oder wähle eine Datendatei zur Synchronisierung aus" #: core/forms/model_forms.py:153 templates/dcim/rack_elevation_list.html:6 msgid "Rack Elevations" msgstr "Rackhöhen" -#: core/forms/model_forms.py:157 dcim/choices.py:1417 +#: core/forms/model_forms.py:157 dcim/choices.py:1445 #: dcim/forms/bulk_edit.py:867 dcim/forms/bulk_edit.py:1250 #: dcim/forms/bulk_edit.py:1268 dcim/tables/racks.py:89 -#: netbox/navigation/menu.py:275 netbox/navigation/menu.py:279 +#: netbox/navigation/menu.py:276 netbox/navigation/menu.py:280 msgid "Power" msgstr "Leistung" @@ -1450,11 +1495,11 @@ msgstr "Sicherheit" #: core/forms/model_forms.py:161 templates/core/inc/config_data.html:59 msgid "Banners" -msgstr "Fahnen" +msgstr "Banner" #: core/forms/model_forms.py:162 templates/core/inc/config_data.html:80 msgid "Pagination" -msgstr "Seitennummerierung" +msgstr "Seitenumbruch" #: core/forms/model_forms.py:163 extras/forms/model_forms.py:67 #: templates/core/inc/config_data.html:93 @@ -1465,14 +1510,14 @@ msgstr "Validierung" msgid "User Preferences" msgstr "Benutzereinstellungen" -#: core/forms/model_forms.py:167 dcim/forms/filtersets.py:660 +#: core/forms/model_forms.py:167 dcim/forms/filtersets.py:661 #: templates/core/inc/config_data.html:127 users/forms/model_forms.py:65 msgid "Miscellaneous" msgstr "Diverses" #: core/forms/model_forms.py:169 msgid "Config Revision" -msgstr "Änderung der Konfiguration" +msgstr "Konfigurationsrevisionen" #: core/forms/model_forms.py:208 msgid "This parameter has been defined statically and cannot be modified." @@ -1504,7 +1549,7 @@ msgstr "Konfigurationsdaten" #: core/models/config.py:36 msgid "config revision" -msgstr "Änderung der Konfiguration" +msgstr "Konfigurationsrevisionen" #: core/models/config.py:37 msgid "config revisions" @@ -1539,7 +1584,7 @@ msgstr "Konfigurationsrevision #{id}" #: extras/models/search.py:41 virtualization/models/clusters.py:61 #: vpn/models/l2vpn.py:32 msgid "type" -msgstr "Art" +msgstr "Typ" #: core/models/data.py:52 extras/choices.py:37 extras/models/models.py:192 #: extras/tables/tables.py:577 templates/core/datasource.html:58 @@ -1586,9 +1631,7 @@ msgstr "Unbekannter Backend-Typ: {type}" #: core/models/data.py:180 msgid "Cannot initiate sync; syncing already in progress." -msgstr "" -"Die Synchronisierung kann nicht initiiert werden; die Synchronisierung läuft" -" bereits." +msgstr "Synchronisierung kann nicht initiiert werden: Läuft bereits." #: core/models/data.py:193 msgid "" @@ -1609,15 +1652,15 @@ msgstr "Pfad" #: core/models/data.py:299 msgid "File path relative to the data source's root" -msgstr "Dateipfad relativ zum Stammverzeichnis der Datenquelle" +msgstr "Dateipfad relativ zum Stammverzeichnis des Daten Verzeichnisses" -#: core/models/data.py:303 ipam/models/ip.py:502 +#: core/models/data.py:303 ipam/models/ip.py:503 msgid "size" msgstr "Größe" #: core/models/data.py:306 msgid "hash" -msgstr "Raute" +msgstr "Hash" #: core/models/data.py:310 msgid "Length must be 64 hexadecimal characters." @@ -1625,7 +1668,7 @@ msgstr "Die Länge muss 64 Hexadezimalzeichen betragen." #: core/models/data.py:312 msgid "SHA256 hash of the file data" -msgstr "SHA256-Hash der Dateidaten" +msgstr "SHA256-Hash des Dateiinhalts" #: core/models/data.py:329 msgid "data file" @@ -1698,7 +1741,7 @@ msgstr "Job-ID" #: core/models/jobs.py:112 msgid "job" -msgstr "Aufgabe" +msgstr "Job" #: core/models/jobs.py:113 msgid "jobs" @@ -1713,7 +1756,7 @@ msgstr "Jobs können diesem Objekttyp nicht zugewiesen werden ({type})." #, python-brace-format msgid "Invalid status for job termination. Choices are: {choices}" msgstr "" -"Ungültiger Status für die Kündigung des Jobs. Es stehen folgende Optionen " +"Ungültiger Status für die Beendigung des Jobs. Es stehen folgende Optionen " "zur Auswahl: {choices}" #: core/tables/config.py:21 users/forms/filtersets.py:45 users/tables.py:39 @@ -1730,7 +1773,7 @@ msgstr "Letzte Aktualisierung" #: core/tables/jobs.py:10 core/tables/tasks.py:76 #: dcim/tables/devicetypes.py:161 extras/tables/tables.py:179 -#: extras/tables/tables.py:350 netbox/tables/tables.py:187 +#: extras/tables/tables.py:350 netbox/tables/tables.py:188 #: templates/dcim/virtualchassis_edit.html:52 utilities/forms/forms.py:73 #: wireless/tables/wirelesslink.py:16 msgid "ID" @@ -1739,7 +1782,7 @@ msgstr "ID" #: core/tables/jobs.py:21 extras/choices.py:41 extras/tables/tables.py:241 #: extras/tables/tables.py:287 extras/tables/tables.py:360 #: extras/tables/tables.py:478 extras/tables/tables.py:509 -#: extras/tables/tables.py:574 netbox/tables/tables.py:241 +#: extras/tables/tables.py:574 netbox/tables/tables.py:243 #: templates/extras/eventrule.html:84 templates/extras/journalentry.html:18 #: templates/extras/objectchange.html:57 tenancy/tables/contacts.py:93 #: vpn/tables/l2vpn.py:64 @@ -1766,7 +1809,7 @@ msgstr "Autor" #: core/tables/plugins.py:26 msgid "Author Email" -msgstr "E-Mail des Autors" +msgstr "Autor E-Mail-Adresse" #: core/tables/plugins.py:33 msgid "No plugins found" @@ -1782,11 +1825,11 @@ msgstr "Arbeiter" #: core/tables/tasks.py:46 vpn/tables/tunnels.py:88 msgid "Host" -msgstr "Gastgeber" +msgstr "Host" -#: core/tables/tasks.py:50 ipam/forms/filtersets.py:535 +#: core/tables/tasks.py:50 ipam/forms/filtersets.py:542 msgid "Port" -msgstr "Hafen" +msgstr "Port" #: core/tables/tasks.py:54 msgid "DB" @@ -1802,7 +1845,7 @@ msgstr "Keine Warteschlangen gefunden" #: core/tables/tasks.py:82 msgid "Enqueued" -msgstr "In die Warteschlange gestellt" +msgstr "In Warteschlange eingereiht" #: core/tables/tasks.py:85 msgid "Ended" @@ -1818,7 +1861,7 @@ msgstr "Keine Aufgaben gefunden" #: core/tables/tasks.py:118 templates/core/rq_worker.html:47 msgid "State" -msgstr "Bundesland" +msgstr "Zustand" #: core/tables/tasks.py:121 templates/core/rq_worker.html:51 msgid "Birth" @@ -1830,55 +1873,55 @@ msgstr "PID" #: core/tables/tasks.py:128 msgid "No workers found" -msgstr "Keine Arbeiter gefunden" +msgstr "Kein Job gefunden" #: core/views.py:335 core/views.py:378 core/views.py:401 core/views.py:419 #: core/views.py:454 #, python-brace-format msgid "Job {job_id} not found" -msgstr "Beruf {job_id} nicht gefunden" +msgstr "Job{job_id} nicht gefunden" #: dcim/api/serializers_/devices.py:50 dcim/api/serializers_/devicetypes.py:26 msgid "Position (U)" -msgstr "Stellung (U)" +msgstr "Position (HE)" #: dcim/api/serializers_/racks.py:45 templates/dcim/rack.html:30 msgid "Facility ID" -msgstr "ID der Einrichtung" +msgstr "Einrichtung ID" #: dcim/choices.py:21 virtualization/choices.py:21 msgid "Staging" -msgstr "Inszenierung" +msgstr "Bereitstellung" #: dcim/choices.py:23 dcim/choices.py:178 dcim/choices.py:223 -#: dcim/choices.py:1430 virtualization/choices.py:23 +#: dcim/choices.py:1458 virtualization/choices.py:23 #: virtualization/choices.py:48 msgid "Decommissioning" msgstr "Außerbetriebnahme" #: dcim/choices.py:24 msgid "Retired" -msgstr "Im Ruhestand" +msgstr "Ruhestand" #: dcim/choices.py:65 msgid "2-post frame" -msgstr "Rahmen mit 2 Pfosten" +msgstr "Rahmengestell mit 2 Montageschienen" #: dcim/choices.py:66 msgid "4-post frame" -msgstr "4-Säulen-Rahmen" +msgstr "Rahmengestell mit 4 Montageschienen" #: dcim/choices.py:67 msgid "4-post cabinet" -msgstr "Schrank mit 4 Pfosten" +msgstr "Schrank mit 4 Montageschienen" #: dcim/choices.py:68 msgid "Wall-mounted frame" -msgstr "Wandmontierter Rahmen" +msgstr "Wandhalterung" #: dcim/choices.py:69 msgid "Wall-mounted frame (vertical)" -msgstr "Wandrahmen (vertikal)" +msgstr "Wandhalterung (hochkant)" #: dcim/choices.py:70 msgid "Wall-mounted cabinet" @@ -1886,7 +1929,7 @@ msgstr "Wandschrank" #: dcim/choices.py:71 msgid "Wall-mounted cabinet (vertical)" -msgstr "Wandschrank (vertikal)" +msgstr "Wandschrank (hochkant)" #: dcim/choices.py:83 dcim/choices.py:84 dcim/choices.py:85 dcim/choices.py:86 #, python-brace-format @@ -1911,7 +1954,7 @@ msgstr "Veraltet" msgid "Millimeters" msgstr "Millimeter" -#: dcim/choices.py:115 dcim/choices.py:1452 +#: dcim/choices.py:115 dcim/choices.py:1480 msgid "Inches" msgstr "Zoll" @@ -1940,27 +1983,27 @@ msgstr "Zoll" #: virtualization/tables/virtualmachines.py:155 wireless/forms/bulk_edit.py:24 #: wireless/forms/bulk_import.py:21 wireless/forms/model_forms.py:21 msgid "Parent" -msgstr "Elternteil" +msgstr "Übergeordnet" #: dcim/choices.py:141 msgid "Child" -msgstr "Kind" +msgstr "Untergeordnet" #: dcim/choices.py:155 templates/dcim/device.html:331 #: templates/dcim/rack.html:175 templates/dcim/rack_elevation_list.html:20 #: templates/dcim/rackreservation.html:76 msgid "Front" -msgstr "Vorne" +msgstr "Frontseite" #: dcim/choices.py:156 templates/dcim/device.html:337 #: templates/dcim/rack.html:181 templates/dcim/rack_elevation_list.html:21 #: templates/dcim/rackreservation.html:82 msgid "Rear" -msgstr "Hinten" +msgstr "Rückseite" #: dcim/choices.py:175 dcim/choices.py:221 virtualization/choices.py:46 msgid "Staged" -msgstr "Inszeniert" +msgstr "Vorbereitet" #: dcim/choices.py:177 msgid "Inventory" @@ -1968,25 +2011,25 @@ msgstr "Inventar" #: dcim/choices.py:193 msgid "Front to rear" -msgstr "Von vorne nach hinten" +msgstr "Front- zu Rückseite" #: dcim/choices.py:194 msgid "Rear to front" -msgstr "Von hinten nach vorne" +msgstr "Rück- zu Frontseite" #: dcim/choices.py:195 msgid "Left to right" -msgstr "Von links nach rechts" +msgstr "Links nach rechts" #: dcim/choices.py:196 msgid "Right to left" -msgstr "Von rechts nach links" +msgstr "Rechts nach links" #: dcim/choices.py:197 msgid "Side to rear" -msgstr "Von der Seite nach hinten" +msgstr "Seite nach hinten" -#: dcim/choices.py:198 dcim/choices.py:1225 +#: dcim/choices.py:198 dcim/choices.py:1253 msgid "Passive" msgstr "Passiv" @@ -1994,56 +2037,56 @@ msgstr "Passiv" msgid "Mixed" msgstr "Gemischt" -#: dcim/choices.py:443 dcim/choices.py:680 +#: dcim/choices.py:447 dcim/choices.py:693 msgid "NEMA (Non-locking)" -msgstr "NEMA (nicht blockierend)" +msgstr "NEMA (nicht verriegelnd)" -#: dcim/choices.py:465 dcim/choices.py:702 +#: dcim/choices.py:469 dcim/choices.py:715 msgid "NEMA (Locking)" -msgstr "NEMA (Sperren)" +msgstr "NEMA (verriegelnd)" -#: dcim/choices.py:488 dcim/choices.py:725 +#: dcim/choices.py:492 dcim/choices.py:738 msgid "California Style" msgstr "Kalifornischer Stil" -#: dcim/choices.py:496 +#: dcim/choices.py:500 msgid "International/ITA" msgstr "International/ITA" -#: dcim/choices.py:526 dcim/choices.py:755 +#: dcim/choices.py:535 dcim/choices.py:773 msgid "Proprietary" -msgstr "Eigentümerrechtlich" +msgstr "Propritär" -#: dcim/choices.py:534 dcim/choices.py:764 dcim/choices.py:1141 -#: dcim/choices.py:1143 dcim/choices.py:1348 dcim/choices.py:1350 +#: dcim/choices.py:543 dcim/choices.py:782 dcim/choices.py:1169 +#: dcim/choices.py:1171 dcim/choices.py:1376 dcim/choices.py:1378 #: netbox/navigation/menu.py:187 msgid "Other" msgstr "Andere" -#: dcim/choices.py:733 +#: dcim/choices.py:746 msgid "ITA/International" msgstr "ITA/International" -#: dcim/choices.py:794 +#: dcim/choices.py:812 msgid "Physical" -msgstr "Körperlich" +msgstr "Physikalisch" -#: dcim/choices.py:795 dcim/choices.py:954 +#: dcim/choices.py:813 dcim/choices.py:977 msgid "Virtual" msgstr "Virtuell" -#: dcim/choices.py:796 dcim/choices.py:1026 dcim/forms/bulk_edit.py:1408 -#: dcim/forms/filtersets.py:1231 dcim/forms/model_forms.py:933 +#: dcim/choices.py:814 dcim/choices.py:1049 dcim/forms/bulk_edit.py:1408 +#: dcim/forms/filtersets.py:1239 dcim/forms/model_forms.py:933 #: dcim/forms/model_forms.py:1341 netbox/navigation/menu.py:127 #: netbox/navigation/menu.py:131 templates/dcim/interface.html:210 msgid "Wireless" msgstr "Kabellos" -#: dcim/choices.py:952 +#: dcim/choices.py:975 msgid "Virtual interfaces" msgstr "Virtuelle Schnittstellen" -#: dcim/choices.py:955 dcim/forms/bulk_edit.py:1303 +#: dcim/choices.py:978 dcim/forms/bulk_edit.py:1303 #: dcim/forms/bulk_import.py:785 dcim/forms/model_forms.py:919 #: dcim/tables/devices.py:656 templates/dcim/interface.html:106 #: templates/virtualization/vminterface.html:43 @@ -2053,152 +2096,152 @@ msgstr "Virtuelle Schnittstellen" msgid "Bridge" msgstr "Brücke" -#: dcim/choices.py:956 +#: dcim/choices.py:979 msgid "Link Aggregation Group (LAG)" -msgstr "Linkaggregationsgruppe (LAG)" +msgstr "Link Aggregation Group (LAG)" -#: dcim/choices.py:960 +#: dcim/choices.py:983 msgid "Ethernet (fixed)" msgstr "Ethernet (fest)" -#: dcim/choices.py:974 +#: dcim/choices.py:997 msgid "Ethernet (modular)" msgstr "Ethernet (modular)" -#: dcim/choices.py:1010 +#: dcim/choices.py:1033 msgid "Ethernet (backplane)" msgstr "Ethernet (Rückwandplatine)" -#: dcim/choices.py:1040 +#: dcim/choices.py:1063 msgid "Cellular" -msgstr "Zellulär" +msgstr "Mobilfunk" -#: dcim/choices.py:1090 dcim/forms/filtersets.py:303 -#: dcim/forms/filtersets.py:737 dcim/forms/filtersets.py:874 -#: dcim/forms/filtersets.py:1426 templates/dcim/inventoryitem.html:52 +#: dcim/choices.py:1115 dcim/forms/filtersets.py:303 +#: dcim/forms/filtersets.py:738 dcim/forms/filtersets.py:882 +#: dcim/forms/filtersets.py:1434 templates/dcim/inventoryitem.html:52 #: templates/dcim/virtualchassis_edit.html:54 msgid "Serial" msgstr "Seriell" -#: dcim/choices.py:1105 +#: dcim/choices.py:1130 msgid "Coaxial" msgstr "Koaxial" -#: dcim/choices.py:1122 +#: dcim/choices.py:1150 msgid "Stacking" -msgstr "Stapeln" +msgstr "Stapelnd" -#: dcim/choices.py:1172 +#: dcim/choices.py:1200 msgid "Half" msgstr "Halb" -#: dcim/choices.py:1173 +#: dcim/choices.py:1201 msgid "Full" msgstr "Voll" -#: dcim/choices.py:1174 netbox/preferences.py:31 wireless/choices.py:480 +#: dcim/choices.py:1202 netbox/preferences.py:31 wireless/choices.py:480 msgid "Auto" msgstr "Automatisch" -#: dcim/choices.py:1185 +#: dcim/choices.py:1213 msgid "Access" msgstr "Zugriff" -#: dcim/choices.py:1186 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 +#: dcim/choices.py:1214 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 #: templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" -msgstr "Verschlagwortet" +msgstr "Tagged" -#: dcim/choices.py:1187 +#: dcim/choices.py:1215 msgid "Tagged (All)" -msgstr "Verschlagwortet mit (Alle)" +msgstr "Tagged (Alle)" -#: dcim/choices.py:1216 +#: dcim/choices.py:1244 msgid "IEEE Standard" -msgstr "IEEE-Norm" +msgstr "IEEE-Standard" -#: dcim/choices.py:1227 +#: dcim/choices.py:1255 msgid "Passive 24V (2-pair)" msgstr "Passiv 24 V (2 Paare)" -#: dcim/choices.py:1228 +#: dcim/choices.py:1256 msgid "Passive 24V (4-pair)" msgstr "Passiv 24 V (4 Paare)" -#: dcim/choices.py:1229 +#: dcim/choices.py:1257 msgid "Passive 48V (2-pair)" msgstr "Passiv 48 V (2 Paare)" -#: dcim/choices.py:1230 +#: dcim/choices.py:1258 msgid "Passive 48V (4-pair)" msgstr "Passiv 48 V (4 Paare)" -#: dcim/choices.py:1292 dcim/choices.py:1388 +#: dcim/choices.py:1320 dcim/choices.py:1416 msgid "Copper" msgstr "Kupfer" -#: dcim/choices.py:1315 +#: dcim/choices.py:1343 msgid "Fiber Optic" msgstr "Glasfaser" -#: dcim/choices.py:1404 +#: dcim/choices.py:1432 msgid "Fiber" msgstr "Faser" -#: dcim/choices.py:1428 dcim/forms/filtersets.py:1138 +#: dcim/choices.py:1456 dcim/forms/filtersets.py:1146 msgid "Connected" msgstr "Verbunden" -#: dcim/choices.py:1447 +#: dcim/choices.py:1475 msgid "Kilometers" msgstr "Kilometer" -#: dcim/choices.py:1448 templates/dcim/cable_trace.html:65 +#: dcim/choices.py:1476 templates/dcim/cable_trace.html:65 msgid "Meters" -msgstr "Zähler" +msgstr "Meter" -#: dcim/choices.py:1449 +#: dcim/choices.py:1477 msgid "Centimeters" msgstr "Zentimeter" -#: dcim/choices.py:1450 +#: dcim/choices.py:1478 msgid "Miles" msgstr "Meilen" -#: dcim/choices.py:1451 templates/dcim/cable_trace.html:66 +#: dcim/choices.py:1479 templates/dcim/cable_trace.html:66 msgid "Feet" -msgstr "Füsse" +msgstr "Fuß" -#: dcim/choices.py:1467 templates/dcim/device.html:319 +#: dcim/choices.py:1495 templates/dcim/device.html:319 #: templates/dcim/rack.html:152 msgid "Kilograms" msgstr "Kilogramm" -#: dcim/choices.py:1468 +#: dcim/choices.py:1496 msgid "Grams" msgstr "Gramm" -#: dcim/choices.py:1469 templates/dcim/rack.html:153 +#: dcim/choices.py:1497 templates/dcim/rack.html:153 msgid "Pounds" msgstr "Pfund" -#: dcim/choices.py:1470 +#: dcim/choices.py:1498 msgid "Ounces" msgstr "Unzen" -#: dcim/choices.py:1516 tenancy/choices.py:17 +#: dcim/choices.py:1544 tenancy/choices.py:17 msgid "Primary" msgstr "Primär" -#: dcim/choices.py:1517 +#: dcim/choices.py:1545 msgid "Redundant" msgstr "Redundant" -#: dcim/choices.py:1538 +#: dcim/choices.py:1566 msgid "Single phase" msgstr "Einphasig" -#: dcim/choices.py:1539 +#: dcim/choices.py:1567 msgid "Three-phase" msgstr "Dreiphasig" @@ -2218,15 +2261,15 @@ msgstr "Übergeordnete Region (ID)" #: dcim/filtersets.py:91 msgid "Parent region (slug)" -msgstr "Elternregion (Schnecke)" +msgstr "Übergeordnete Region (URL-Slug)" #: dcim/filtersets.py:115 msgid "Parent site group (ID)" -msgstr "Übergeordnete Websitegruppe (ID)" +msgstr "Übergeordnete Standortgruppe (ID)" #: dcim/filtersets.py:121 msgid "Parent site group (slug)" -msgstr "Übergeordnete Seitengruppe (Slug)" +msgstr "Übergeordnete Standortgruppe (URL-Slug)" #: dcim/filtersets.py:163 ipam/filtersets.py:841 ipam/filtersets.py:979 msgid "Group (ID)" @@ -2234,47 +2277,47 @@ msgstr "Gruppe (ID)" #: dcim/filtersets.py:169 msgid "Group (slug)" -msgstr "Gruppe (Schnecke)" +msgstr "Gruppe (URL-Slug)" #: dcim/filtersets.py:175 dcim/filtersets.py:180 msgid "AS (ID)" -msgstr "ALS (ID)" +msgstr "AS (ID)" #: dcim/filtersets.py:245 msgid "Parent location (ID)" -msgstr "Standort des Elternteils (ID)" +msgstr "Übergeordneter Standort (ID)" #: dcim/filtersets.py:251 msgid "Parent location (slug)" -msgstr "Standort des Elternteils (Schnecke)" +msgstr "Übergeordneter Standort (URL-Slug)" #: dcim/filtersets.py:257 dcim/filtersets.py:333 dcim/filtersets.py:432 -#: dcim/filtersets.py:1005 dcim/filtersets.py:1331 dcim/filtersets.py:2101 +#: dcim/filtersets.py:1005 dcim/filtersets.py:1341 dcim/filtersets.py:2111 msgid "Location (ID)" msgstr "Standort (ID)" #: dcim/filtersets.py:264 dcim/filtersets.py:340 dcim/filtersets.py:439 -#: dcim/filtersets.py:1337 extras/filtersets.py:494 +#: dcim/filtersets.py:1347 extras/filtersets.py:494 msgid "Location (slug)" -msgstr "Standort (Schnecke)" +msgstr "Standort (URL-Slug)" #: dcim/filtersets.py:354 dcim/filtersets.py:840 dcim/filtersets.py:942 -#: dcim/filtersets.py:1769 ipam/filtersets.py:381 ipam/filtersets.py:493 +#: dcim/filtersets.py:1779 ipam/filtersets.py:381 ipam/filtersets.py:493 #: ipam/filtersets.py:989 virtualization/filtersets.py:210 msgid "Role (ID)" msgstr "Rolle (ID)" #: dcim/filtersets.py:360 dcim/filtersets.py:846 dcim/filtersets.py:948 -#: dcim/filtersets.py:1775 extras/filtersets.py:510 ipam/filtersets.py:387 +#: dcim/filtersets.py:1785 extras/filtersets.py:510 ipam/filtersets.py:387 #: ipam/filtersets.py:499 ipam/filtersets.py:995 #: virtualization/filtersets.py:216 msgid "Role (slug)" -msgstr "Rolle (Schnecke)" +msgstr "Rolle (URL-Slug)" -#: dcim/filtersets.py:389 dcim/filtersets.py:1010 dcim/filtersets.py:1342 -#: dcim/filtersets.py:2163 +#: dcim/filtersets.py:389 dcim/filtersets.py:1010 dcim/filtersets.py:1352 +#: dcim/filtersets.py:2173 msgid "Rack (ID)" -msgstr "Gestell (ID)" +msgstr "Rack (ID)" #: dcim/filtersets.py:443 extras/filtersets.py:282 extras/filtersets.py:326 #: extras/filtersets.py:365 extras/filtersets.py:664 users/filtersets.py:28 @@ -2287,94 +2330,94 @@ msgid "User (name)" msgstr "Benutzer (Name)" #: dcim/filtersets.py:481 dcim/filtersets.py:620 dcim/filtersets.py:830 -#: dcim/filtersets.py:881 dcim/filtersets.py:921 dcim/filtersets.py:1233 -#: dcim/filtersets.py:1759 +#: dcim/filtersets.py:881 dcim/filtersets.py:921 dcim/filtersets.py:1243 +#: dcim/filtersets.py:1769 msgid "Manufacturer (ID)" msgstr "Hersteller (ID)" #: dcim/filtersets.py:487 dcim/filtersets.py:626 dcim/filtersets.py:836 -#: dcim/filtersets.py:887 dcim/filtersets.py:927 dcim/filtersets.py:1239 -#: dcim/filtersets.py:1765 +#: dcim/filtersets.py:887 dcim/filtersets.py:927 dcim/filtersets.py:1249 +#: dcim/filtersets.py:1775 msgid "Manufacturer (slug)" msgstr "Hersteller (Slug)" #: dcim/filtersets.py:491 msgid "Default platform (ID)" -msgstr "Standardplattform (ID)" +msgstr "Standard-Betriebssystem (ID)" #: dcim/filtersets.py:497 msgid "Default platform (slug)" -msgstr "Standardplattform (Slug)" +msgstr "Standard-Betriebssystem (URL-Slug)" #: dcim/filtersets.py:500 dcim/forms/filtersets.py:452 msgid "Has a front image" -msgstr "Hat ein Frontbild" +msgstr "Hat ein Frontalbild" #: dcim/filtersets.py:504 dcim/forms/filtersets.py:459 msgid "Has a rear image" -msgstr "Hat ein hinteres Bild" +msgstr "Hat ein Rückseitenbild" #: dcim/filtersets.py:509 dcim/filtersets.py:630 dcim/filtersets.py:1068 #: dcim/forms/filtersets.py:466 dcim/forms/filtersets.py:562 -#: dcim/forms/filtersets.py:776 +#: dcim/forms/filtersets.py:777 msgid "Has console ports" msgstr "Hat Konsolenanschlüsse" #: dcim/filtersets.py:513 dcim/filtersets.py:634 dcim/filtersets.py:1072 #: dcim/forms/filtersets.py:473 dcim/forms/filtersets.py:569 -#: dcim/forms/filtersets.py:783 +#: dcim/forms/filtersets.py:784 msgid "Has console server ports" -msgstr "Hat Konsolenserver-Ports" +msgstr "Hat Konsolenserver-Anschlüsse" #: dcim/filtersets.py:517 dcim/filtersets.py:638 dcim/filtersets.py:1076 #: dcim/forms/filtersets.py:480 dcim/forms/filtersets.py:576 -#: dcim/forms/filtersets.py:790 +#: dcim/forms/filtersets.py:791 msgid "Has power ports" msgstr "Hat Stromanschlüsse" #: dcim/filtersets.py:521 dcim/filtersets.py:642 dcim/filtersets.py:1080 #: dcim/forms/filtersets.py:487 dcim/forms/filtersets.py:583 -#: dcim/forms/filtersets.py:797 +#: dcim/forms/filtersets.py:798 msgid "Has power outlets" -msgstr "Hat Steckdosen" +msgstr "Hat Stromabgänge" #: dcim/filtersets.py:525 dcim/filtersets.py:646 dcim/filtersets.py:1084 #: dcim/forms/filtersets.py:494 dcim/forms/filtersets.py:590 -#: dcim/forms/filtersets.py:804 +#: dcim/forms/filtersets.py:805 msgid "Has interfaces" msgstr "Hat Schnittstellen" #: dcim/filtersets.py:529 dcim/filtersets.py:650 dcim/filtersets.py:1088 #: dcim/forms/filtersets.py:501 dcim/forms/filtersets.py:597 -#: dcim/forms/filtersets.py:811 +#: dcim/forms/filtersets.py:812 msgid "Has pass-through ports" -msgstr "Hat Pass-Through-Anschlüsse" +msgstr "Hat durchgereichte Anschlüsse" #: dcim/filtersets.py:533 dcim/filtersets.py:1092 dcim/forms/filtersets.py:515 msgid "Has module bays" -msgstr "Hat Modulschächte" +msgstr "Hat Moduleinsätze" #: dcim/filtersets.py:537 dcim/filtersets.py:1096 dcim/forms/filtersets.py:508 msgid "Has device bays" -msgstr "Hat Geräteschächte" +msgstr "Hat Geräteeinsätze" #: dcim/filtersets.py:541 dcim/forms/filtersets.py:522 msgid "Has inventory items" msgstr "Hat Inventargegenstände" -#: dcim/filtersets.py:698 dcim/filtersets.py:937 dcim/filtersets.py:1363 +#: dcim/filtersets.py:698 dcim/filtersets.py:937 dcim/filtersets.py:1373 msgid "Device type (ID)" msgstr "Gerätetyp (ID)" -#: dcim/filtersets.py:717 dcim/filtersets.py:1244 +#: dcim/filtersets.py:717 dcim/filtersets.py:1254 msgid "Module type (ID)" msgstr "Modultyp (ID)" -#: dcim/filtersets.py:752 dcim/filtersets.py:1514 +#: dcim/filtersets.py:752 dcim/filtersets.py:1524 msgid "Power port (ID)" msgstr "Stromanschluss (ID)" -#: dcim/filtersets.py:826 dcim/filtersets.py:1755 +#: dcim/filtersets.py:826 dcim/filtersets.py:1765 msgid "Parent inventory item (ID)" msgstr "Übergeordneter Inventarartikel (ID)" @@ -2393,21 +2436,21 @@ msgstr "Übergeordnetes Gerät (ID)" #: dcim/filtersets.py:957 virtualization/filtersets.py:220 msgid "Platform (ID)" -msgstr "Plattform (ID)" +msgstr "Betriebssystem (ID)" #: dcim/filtersets.py:963 extras/filtersets.py:521 #: virtualization/filtersets.py:226 msgid "Platform (slug)" -msgstr "Plattform (Schnecke)" +msgstr "Betriebssystem (URL-Slug)" -#: dcim/filtersets.py:999 dcim/filtersets.py:1326 dcim/filtersets.py:1853 -#: dcim/filtersets.py:2095 dcim/filtersets.py:2154 +#: dcim/filtersets.py:999 dcim/filtersets.py:1336 dcim/filtersets.py:1863 +#: dcim/filtersets.py:2105 dcim/filtersets.py:2164 msgid "Site name (slug)" -msgstr "Seitenname (Slug)" +msgstr "Standortname (URL-Slug)" #: dcim/filtersets.py:1015 msgid "Parent bay (ID)" -msgstr "Elternkind (ID)" +msgstr "Übergeordneter Schacht (ID)" #: dcim/filtersets.py:1019 msgid "VM cluster (ID)" @@ -2415,22 +2458,22 @@ msgstr "VM-Cluster (ID)" #: dcim/filtersets.py:1025 msgid "Device model (slug)" -msgstr "Gerätemodell (Slug)" +msgstr "Gerätemodell (URL-Slug)" #: dcim/filtersets.py:1036 dcim/forms/bulk_edit.py:423 msgid "Is full depth" -msgstr "Ist in voller Tiefe" +msgstr "Hat volle Tiefe" #: dcim/filtersets.py:1040 dcim/forms/common.py:18 -#: dcim/forms/filtersets.py:746 dcim/forms/filtersets.py:1283 +#: dcim/forms/filtersets.py:747 dcim/forms/filtersets.py:1291 #: dcim/models/device_components.py:519 virtualization/filtersets.py:230 #: virtualization/filtersets.py:297 virtualization/forms/filtersets.py:172 #: virtualization/forms/filtersets.py:219 msgid "MAC address" msgstr "MAC-Adresse" -#: dcim/filtersets.py:1047 dcim/filtersets.py:1201 -#: dcim/forms/filtersets.py:755 dcim/forms/filtersets.py:841 +#: dcim/filtersets.py:1047 dcim/filtersets.py:1211 +#: dcim/forms/filtersets.py:756 dcim/forms/filtersets.py:849 #: virtualization/filtersets.py:234 virtualization/forms/filtersets.py:176 msgid "Has a primary IP" msgstr "Hat eine primäre IP" @@ -2445,65 +2488,69 @@ msgstr "Virtuelles Gehäuse (ID)" #: dcim/filtersets.py:1060 msgid "Is a virtual chassis member" -msgstr "Ist ein virtuelles Chassis-Mitglied" +msgstr "Ist ein virtuelles Gehäuse-Mitglied" #: dcim/filtersets.py:1101 msgid "OOB IP (ID)" -msgstr "BOOB IP (KIND)" +msgstr "OOB IP (ID)" -#: dcim/filtersets.py:1184 +#: dcim/filtersets.py:1105 +msgid "Has virtual device context" +msgstr "Hat virtuellen Gerätekontext" + +#: dcim/filtersets.py:1194 msgid "VDC (ID)" msgstr "VDC (ID)" -#: dcim/filtersets.py:1189 +#: dcim/filtersets.py:1199 msgid "Device model" msgstr "Modell des Geräts" -#: dcim/filtersets.py:1194 ipam/filtersets.py:632 vpn/filtersets.py:102 +#: dcim/filtersets.py:1204 ipam/filtersets.py:632 vpn/filtersets.py:102 #: vpn/filtersets.py:420 msgid "Interface (ID)" msgstr "Schnittstelle (ID)" -#: dcim/filtersets.py:1250 +#: dcim/filtersets.py:1260 msgid "Module type (model)" msgstr "Modultyp (Modell)" -#: dcim/filtersets.py:1256 +#: dcim/filtersets.py:1266 msgid "Module Bay (ID)" -msgstr "Modulschacht (ID)" +msgstr "Moduleinsatz (ID)" -#: dcim/filtersets.py:1260 dcim/filtersets.py:1352 ipam/filtersets.py:611 +#: dcim/filtersets.py:1270 dcim/filtersets.py:1362 ipam/filtersets.py:611 #: ipam/filtersets.py:851 ipam/filtersets.py:1075 #: virtualization/filtersets.py:161 vpn/filtersets.py:398 msgid "Device (ID)" msgstr "Gerät (ID)" -#: dcim/filtersets.py:1348 +#: dcim/filtersets.py:1358 msgid "Rack (name)" msgstr "Rack (Name)" -#: dcim/filtersets.py:1358 ipam/filtersets.py:606 ipam/filtersets.py:846 +#: dcim/filtersets.py:1368 ipam/filtersets.py:606 ipam/filtersets.py:846 #: ipam/filtersets.py:1081 vpn/filtersets.py:393 msgid "Device (name)" msgstr "Gerät (Name)" -#: dcim/filtersets.py:1369 +#: dcim/filtersets.py:1379 msgid "Device type (model)" msgstr "Gerätetyp (Modell)" -#: dcim/filtersets.py:1374 +#: dcim/filtersets.py:1384 msgid "Device role (ID)" msgstr "Geräterolle (ID)" -#: dcim/filtersets.py:1380 +#: dcim/filtersets.py:1390 msgid "Device role (slug)" -msgstr "Geräterolle (Slug)" +msgstr "Geräterolle (URL-Slug)" -#: dcim/filtersets.py:1385 +#: dcim/filtersets.py:1395 msgid "Virtual Chassis (ID)" msgstr "Virtuelles Gehäuse (ID)" -#: dcim/filtersets.py:1391 dcim/forms/filtersets.py:107 +#: dcim/filtersets.py:1401 dcim/forms/filtersets.py:107 #: dcim/tables/devices.py:211 netbox/navigation/menu.py:66 #: templates/dcim/device.html:119 templates/dcim/device_edit.html:93 #: templates/dcim/virtualchassis.html:20 @@ -2512,37 +2559,37 @@ msgstr "Virtuelles Gehäuse (ID)" msgid "Virtual Chassis" msgstr "Virtuelles Gehäuse" -#: dcim/filtersets.py:1411 +#: dcim/filtersets.py:1421 msgid "Module (ID)" msgstr "Modul (ID)" -#: dcim/filtersets.py:1418 +#: dcim/filtersets.py:1428 msgid "Cable (ID)" msgstr "Kabel (ID)" -#: dcim/filtersets.py:1527 ipam/forms/bulk_import.py:188 +#: dcim/filtersets.py:1537 ipam/forms/bulk_import.py:188 #: vpn/forms/bulk_import.py:308 msgid "Assigned VLAN" msgstr "Zugewiesenes VLAN" -#: dcim/filtersets.py:1531 +#: dcim/filtersets.py:1541 msgid "Assigned VID" msgstr "Zugewiesene VID" -#: dcim/filtersets.py:1536 dcim/forms/bulk_edit.py:1382 -#: dcim/forms/bulk_import.py:836 dcim/forms/filtersets.py:1326 +#: dcim/filtersets.py:1546 dcim/forms/bulk_edit.py:1382 +#: dcim/forms/bulk_import.py:836 dcim/forms/filtersets.py:1334 #: dcim/forms/model_forms.py:1322 dcim/models/device_components.py:712 -#: dcim/tables/devices.py:618 ipam/filtersets.py:316 ipam/filtersets.py:327 +#: dcim/tables/devices.py:622 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:227 ipam/forms/bulk_edit.py:282 #: ipam/forms/bulk_edit.py:324 ipam/forms/bulk_import.py:156 #: ipam/forms/bulk_import.py:242 ipam/forms/bulk_import.py:278 -#: ipam/forms/filtersets.py:67 ipam/forms/filtersets.py:171 -#: ipam/forms/filtersets.py:302 ipam/forms/model_forms.py:60 +#: ipam/forms/filtersets.py:67 ipam/forms/filtersets.py:172 +#: ipam/forms/filtersets.py:309 ipam/forms/model_forms.py:60 #: ipam/forms/model_forms.py:200 ipam/forms/model_forms.py:245 -#: ipam/forms/model_forms.py:298 ipam/forms/model_forms.py:420 -#: ipam/forms/model_forms.py:434 ipam/forms/model_forms.py:448 -#: ipam/models/ip.py:232 ipam/models/ip.py:511 ipam/models/ip.py:719 +#: ipam/forms/model_forms.py:298 ipam/forms/model_forms.py:429 +#: ipam/forms/model_forms.py:443 ipam/forms/model_forms.py:457 +#: ipam/models/ip.py:233 ipam/models/ip.py:512 ipam/models/ip.py:720 #: ipam/models/vrfs.py:62 ipam/tables/ip.py:241 ipam/tables/ip.py:306 #: ipam/tables/ip.py:356 ipam/tables/ip.py:445 #: templates/dcim/interface.html:133 templates/ipam/ipaddress.html:18 @@ -2558,102 +2605,102 @@ msgstr "Zugewiesene VID" msgid "VRF" msgstr "VRF" -#: dcim/filtersets.py:1542 ipam/filtersets.py:322 ipam/filtersets.py:333 +#: dcim/filtersets.py:1552 ipam/filtersets.py:322 ipam/filtersets.py:333 #: ipam/filtersets.py:489 ipam/filtersets.py:590 ipam/filtersets.py:601 msgid "VRF (RD)" -msgstr "VRF (ROT)" +msgstr "VRF (RD)" -#: dcim/filtersets.py:1547 ipam/filtersets.py:1016 vpn/filtersets.py:361 +#: dcim/filtersets.py:1557 ipam/filtersets.py:1016 vpn/filtersets.py:361 msgid "L2VPN (ID)" msgstr "L2VPN (ID)" -#: dcim/filtersets.py:1553 dcim/forms/filtersets.py:1331 -#: dcim/tables/devices.py:566 ipam/filtersets.py:1022 -#: ipam/forms/filtersets.py:518 ipam/tables/vlans.py:133 +#: dcim/filtersets.py:1563 dcim/forms/filtersets.py:1339 +#: dcim/tables/devices.py:570 ipam/filtersets.py:1022 +#: ipam/forms/filtersets.py:525 ipam/tables/vlans.py:133 #: templates/dcim/interface.html:93 templates/ipam/vlan.html:66 #: templates/vpn/l2vpntermination.html:12 #: virtualization/forms/filtersets.py:229 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 msgid "L2VPN" -msgstr "L2 VPN" +msgstr "L2VPN" -#: dcim/filtersets.py:1585 +#: dcim/filtersets.py:1595 msgid "Virtual Chassis Interfaces for Device" msgstr "Virtuelle Gehäuseschnittstellen für Gerät" -#: dcim/filtersets.py:1590 +#: dcim/filtersets.py:1600 msgid "Virtual Chassis Interfaces for Device (ID)" msgstr "Virtuelle Gehäuseschnittstellen für Gerät (ID)" -#: dcim/filtersets.py:1594 +#: dcim/filtersets.py:1604 msgid "Kind of interface" msgstr "Art der Schnittstelle" -#: dcim/filtersets.py:1599 virtualization/filtersets.py:289 +#: dcim/filtersets.py:1609 virtualization/filtersets.py:289 msgid "Parent interface (ID)" msgstr "Übergeordnete Schnittstelle (ID)" -#: dcim/filtersets.py:1604 virtualization/filtersets.py:294 +#: dcim/filtersets.py:1614 virtualization/filtersets.py:294 msgid "Bridged interface (ID)" msgstr "Überbrückte Schnittstelle (ID)" -#: dcim/filtersets.py:1609 +#: dcim/filtersets.py:1619 msgid "LAG interface (ID)" msgstr "LAG-Schnittstelle (ID)" -#: dcim/filtersets.py:1636 dcim/filtersets.py:1648 -#: dcim/forms/filtersets.py:1243 dcim/forms/model_forms.py:1634 +#: dcim/filtersets.py:1646 dcim/filtersets.py:1658 +#: dcim/forms/filtersets.py:1251 dcim/forms/model_forms.py:1634 #: templates/dcim/virtualdevicecontext.html:15 msgid "Virtual Device Context" -msgstr "Kontext für virtuelle Geräte" +msgstr "Kontext für virtuelles Gerät" -#: dcim/filtersets.py:1642 +#: dcim/filtersets.py:1652 msgid "Virtual Device Context (Identifier)" msgstr "Virtueller Gerätekontext (Identifier)" -#: dcim/filtersets.py:1653 templates/wireless/wirelesslan.html:11 +#: dcim/filtersets.py:1663 templates/wireless/wirelesslan.html:11 #: wireless/forms/model_forms.py:53 msgid "Wireless LAN" msgstr "Drahtloses LAN" -#: dcim/filtersets.py:1657 dcim/tables/devices.py:605 +#: dcim/filtersets.py:1667 dcim/tables/devices.py:609 msgid "Wireless link" msgstr "Drahtlose Verbindung" -#: dcim/filtersets.py:1727 +#: dcim/filtersets.py:1737 msgid "Installed module (ID)" msgstr "Installiertes Modul (ID)" -#: dcim/filtersets.py:1738 +#: dcim/filtersets.py:1748 msgid "Installed device (ID)" msgstr "Installiertes Gerät (ID)" -#: dcim/filtersets.py:1744 +#: dcim/filtersets.py:1754 msgid "Installed device (name)" msgstr "Installiertes Gerät (Name)" -#: dcim/filtersets.py:1810 +#: dcim/filtersets.py:1820 msgid "Master (ID)" -msgstr "Meister (ID)" +msgstr "Master (ID)" -#: dcim/filtersets.py:1816 +#: dcim/filtersets.py:1826 msgid "Master (name)" -msgstr "Meister (Name)" +msgstr "Master (Name)" -#: dcim/filtersets.py:1858 tenancy/filtersets.py:246 +#: dcim/filtersets.py:1868 tenancy/filtersets.py:246 msgid "Tenant (ID)" -msgstr "Mieter (ID)" +msgstr "Mandant (ID)" -#: dcim/filtersets.py:1864 extras/filtersets.py:570 tenancy/filtersets.py:252 +#: dcim/filtersets.py:1874 extras/filtersets.py:570 tenancy/filtersets.py:252 msgid "Tenant (slug)" -msgstr "Mieter (Schnecke)" +msgstr "Mandant (URL-Slug)" -#: dcim/filtersets.py:1900 dcim/forms/filtersets.py:988 +#: dcim/filtersets.py:1910 dcim/forms/filtersets.py:996 msgid "Unterminated" msgstr "Nicht terminiert" -#: dcim/filtersets.py:2158 +#: dcim/filtersets.py:2168 msgid "Power panel (ID)" msgstr "Schalttafel (ID)" @@ -2661,13 +2708,13 @@ msgstr "Schalttafel (ID)" #: extras/forms/model_forms.py:443 extras/forms/model_forms.py:495 #: netbox/forms/base.py:84 netbox/forms/mixins.py:81 #: netbox/tables/columns.py:458 -#: templates/circuits/inc/circuit_termination.html:118 +#: 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 msgid "Tags" -msgstr "Schlagworte" +msgstr "Tags" -#: dcim/forms/bulk_create.py:112 dcim/forms/filtersets.py:1388 +#: dcim/forms/bulk_create.py:112 dcim/forms/filtersets.py:1396 #: dcim/forms/model_forms.py:431 dcim/forms/model_forms.py:486 #: dcim/forms/object_create.py:197 dcim/forms/object_create.py:353 #: dcim/tables/devices.py:170 dcim/tables/devices.py:702 @@ -2676,7 +2723,7 @@ msgstr "Schlagworte" #: templates/dcim/virtualchassis.html:66 #: templates/dcim/virtualchassis_edit.html:55 msgid "Position" -msgstr "Stellung" +msgstr "Position" #: dcim/forms/bulk_create.py:114 msgid "" @@ -2689,7 +2736,7 @@ msgstr "" #: dcim/forms/bulk_edit.py:116 dcim/forms/bulk_import.py:99 #: dcim/forms/model_forms.py:116 dcim/tables/sites.py:89 #: ipam/filtersets.py:985 ipam/forms/bulk_edit.py:531 -#: ipam/forms/bulk_import.py:444 ipam/forms/model_forms.py:517 +#: ipam/forms/bulk_import.py:444 ipam/forms/model_forms.py:526 #: ipam/tables/fhrp.py:67 ipam/tables/vlans.py:118 ipam/tables/vlans.py:221 #: templates/dcim/interface.html:284 templates/dcim/site.html:36 #: templates/ipam/inc/panels/fhrp_groups.html:23 templates/ipam/vlan.html:27 @@ -2718,15 +2765,15 @@ msgstr "Gruppe" #: dcim/forms/bulk_edit.py:131 msgid "Contact name" -msgstr "Name des Ansprechpartners" +msgstr "Name des Kontakts" #: dcim/forms/bulk_edit.py:136 msgid "Contact phone" -msgstr "Telefon kontaktieren" +msgstr "Telefon des Kontakts" #: dcim/forms/bulk_edit.py:142 msgid "Contact E-mail" -msgstr "Kontakt-E-Mail" +msgstr "E-Mail des Kontakts" #: dcim/forms/bulk_edit.py:145 dcim/forms/bulk_import.py:122 #: dcim/forms/model_forms.py:127 @@ -2736,7 +2783,7 @@ msgstr "Zeitzone" #: dcim/forms/bulk_edit.py:267 dcim/forms/bulk_edit.py:1160 #: dcim/forms/bulk_edit.py:1548 dcim/forms/bulk_import.py:207 #: dcim/forms/bulk_import.py:1021 dcim/forms/filtersets.py:300 -#: dcim/forms/filtersets.py:705 dcim/forms/filtersets.py:1418 +#: dcim/forms/filtersets.py:706 dcim/forms/filtersets.py:1426 #: dcim/forms/model_forms.py:219 dcim/forms/model_forms.py:1015 #: dcim/forms/model_forms.py:1454 dcim/forms/object_import.py:181 #: dcim/tables/devices.py:174 dcim/tables/devices.py:810 @@ -2746,10 +2793,10 @@ msgstr "Zeitzone" #: ipam/forms/bulk_edit.py:343 ipam/forms/bulk_edit.py:549 #: ipam/forms/bulk_import.py:196 ipam/forms/bulk_import.py:261 #: ipam/forms/bulk_import.py:297 ipam/forms/bulk_import.py:463 -#: ipam/forms/filtersets.py:236 ipam/forms/filtersets.py:282 -#: ipam/forms/filtersets.py:353 ipam/forms/filtersets.py:509 +#: ipam/forms/filtersets.py:237 ipam/forms/filtersets.py:289 +#: ipam/forms/filtersets.py:360 ipam/forms/filtersets.py:516 #: ipam/forms/model_forms.py:186 ipam/forms/model_forms.py:219 -#: ipam/forms/model_forms.py:248 ipam/forms/model_forms.py:680 +#: ipam/forms/model_forms.py:248 ipam/forms/model_forms.py:689 #: ipam/tables/ip.py:257 ipam/tables/ip.py:313 ipam/tables/ip.py:363 #: ipam/tables/vlans.py:126 ipam/tables/vlans.py:230 #: templates/dcim/device.html:179 @@ -2782,8 +2829,8 @@ msgid "Serial Number" msgstr "Seriennummer" #: dcim/forms/bulk_edit.py:277 dcim/forms/filtersets.py:307 -#: dcim/forms/filtersets.py:741 dcim/forms/filtersets.py:878 -#: dcim/forms/filtersets.py:1430 +#: dcim/forms/filtersets.py:742 dcim/forms/filtersets.py:886 +#: dcim/forms/filtersets.py:1438 msgid "Asset tag" msgstr "Asset-Tag" @@ -2794,11 +2841,11 @@ msgstr "Breite" #: dcim/forms/bulk_edit.py:293 templates/dcim/devicetype.html:37 msgid "Height (U)" -msgstr "Höhe (U)" +msgstr "Höhe (HE)" #: dcim/forms/bulk_edit.py:298 msgid "Descending units" -msgstr "Absteigende Einheiten" +msgstr "Absteigende Höheneinheiten (HE)" #: dcim/forms/bulk_edit.py:301 msgid "Outer width" @@ -2854,26 +2901,26 @@ msgstr "Gewichtseinheit" #: dcim/forms/bulk_import.py:498 dcim/forms/bulk_import.py:1309 #: dcim/forms/bulk_import.py:1313 dcim/forms/filtersets.py:102 #: dcim/forms/filtersets.py:340 dcim/forms/filtersets.py:354 -#: dcim/forms/filtersets.py:392 dcim/forms/filtersets.py:700 -#: dcim/forms/filtersets.py:946 dcim/forms/filtersets.py:1078 +#: dcim/forms/filtersets.py:392 dcim/forms/filtersets.py:701 +#: dcim/forms/filtersets.py:954 dcim/forms/filtersets.py:1086 #: dcim/forms/model_forms.py:226 dcim/forms/model_forms.py:248 #: dcim/forms/model_forms.py:422 dcim/forms/model_forms.py:700 #: dcim/forms/object_create.py:400 dcim/tables/devices.py:166 #: dcim/tables/power.py:70 dcim/tables/racks.py:148 -#: ipam/forms/bulk_edit.py:465 ipam/forms/filtersets.py:435 -#: ipam/forms/model_forms.py:601 templates/dcim/device.html:29 +#: ipam/forms/bulk_edit.py:465 ipam/forms/filtersets.py:442 +#: ipam/forms/model_forms.py:610 templates/dcim/device.html:29 #: 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 msgid "Rack" -msgstr "Gestell" +msgstr "Rack" #: dcim/forms/bulk_edit.py:349 dcim/forms/bulk_edit.py:628 #: dcim/forms/filtersets.py:248 dcim/forms/filtersets.py:333 #: dcim/forms/filtersets.py:416 dcim/forms/filtersets.py:543 -#: dcim/forms/filtersets.py:651 dcim/forms/filtersets.py:853 +#: dcim/forms/filtersets.py:651 dcim/forms/filtersets.py:861 #: dcim/forms/model_forms.py:610 dcim/forms/model_forms.py:1524 #: templates/dcim/device_edit.html:20 msgid "Hardware" @@ -2886,8 +2933,8 @@ msgstr "Hardware" #: dcim/forms/bulk_import.py:353 dcim/forms/bulk_import.py:395 #: dcim/forms/bulk_import.py:431 dcim/forms/bulk_import.py:1027 #: dcim/forms/filtersets.py:429 dcim/forms/filtersets.py:554 -#: dcim/forms/filtersets.py:630 dcim/forms/filtersets.py:710 -#: dcim/forms/filtersets.py:858 dcim/forms/filtersets.py:1423 +#: dcim/forms/filtersets.py:630 dcim/forms/filtersets.py:711 +#: dcim/forms/filtersets.py:866 dcim/forms/filtersets.py:1431 #: dcim/forms/model_forms.py:281 dcim/forms/model_forms.py:293 #: dcim/forms/model_forms.py:339 dcim/forms/model_forms.py:379 #: dcim/forms/model_forms.py:1020 dcim/forms/model_forms.py:1459 @@ -2904,16 +2951,16 @@ msgstr "Hersteller" #: dcim/forms/bulk_edit.py:407 dcim/forms/bulk_import.py:325 #: dcim/forms/filtersets.py:434 dcim/forms/model_forms.py:297 msgid "Default platform" -msgstr "Standardplattform" +msgstr "Standard-Betriebssystem" #: dcim/forms/bulk_edit.py:412 dcim/forms/bulk_edit.py:471 #: dcim/forms/filtersets.py:437 dcim/forms/filtersets.py:557 msgid "Part number" -msgstr "Nummer des Artikels" +msgstr "Artikelnummer" #: dcim/forms/bulk_edit.py:416 msgid "U height" -msgstr "U-Höhe" +msgstr "Höheneinheit" #: dcim/forms/bulk_edit.py:428 msgid "Exclude from utilization" @@ -2921,7 +2968,7 @@ msgstr "Von der Nutzung ausschließen" #: dcim/forms/bulk_edit.py:431 dcim/forms/bulk_edit.py:603 #: dcim/forms/bulk_import.py:525 dcim/forms/filtersets.py:446 -#: dcim/forms/filtersets.py:732 templates/dcim/device.html:97 +#: dcim/forms/filtersets.py:733 templates/dcim/device.html:97 #: templates/dcim/devicetype.html:65 msgid "Airflow" msgstr "Luftstrom" @@ -2930,14 +2977,14 @@ msgstr "Luftstrom" #: dcim/tables/devicetypes.py:78 templates/dcim/device.html:87 #: templates/dcim/devicebay.html:52 templates/dcim/module.html:58 msgid "Device Type" -msgstr "Art des Geräts" +msgstr "Geräte-Typ" #: dcim/forms/bulk_edit.py:494 dcim/forms/model_forms.py:345 #: dcim/tables/modules.py:17 dcim/tables/modules.py:65 #: templates/dcim/module.html:62 templates/dcim/modulebay.html:62 #: templates/dcim/moduletype.html:11 msgid "Module Type" -msgstr "Typ des Moduls" +msgstr "Modul-Typ" #: dcim/forms/bulk_edit.py:508 dcim/models/devices.py:474 msgid "VM role" @@ -2948,29 +2995,29 @@ msgstr "VM-Rolle" #: dcim/forms/bulk_import.py:380 dcim/forms/bulk_import.py:402 #: dcim/forms/bulk_import.py:406 dcim/forms/bulk_import.py:531 #: dcim/forms/bulk_import.py:535 dcim/forms/filtersets.py:619 -#: dcim/forms/filtersets.py:635 dcim/forms/filtersets.py:751 +#: dcim/forms/filtersets.py:635 dcim/forms/filtersets.py:752 #: dcim/forms/model_forms.py:358 dcim/forms/model_forms.py:384 #: dcim/forms/model_forms.py:495 virtualization/forms/bulk_import.py:132 #: virtualization/forms/bulk_import.py:133 #: virtualization/forms/filtersets.py:184 #: virtualization/forms/model_forms.py:215 msgid "Config template" -msgstr "Vorlage konfigurieren" +msgstr "Konfigurationsvorlage" #: dcim/forms/bulk_edit.py:559 dcim/forms/bulk_edit.py:959 #: dcim/forms/bulk_import.py:437 dcim/forms/filtersets.py:112 #: dcim/forms/model_forms.py:444 dcim/forms/model_forms.py:817 #: dcim/forms/model_forms.py:834 extras/filtersets.py:499 msgid "Device type" -msgstr "Art des Geräts" +msgstr "Geräte-Typ" #: dcim/forms/bulk_edit.py:570 dcim/forms/bulk_import.py:418 #: dcim/forms/filtersets.py:117 dcim/forms/model_forms.py:452 msgid "Device role" -msgstr "Rolle „Gerät“" +msgstr "Geräte-Rolle" #: dcim/forms/bulk_edit.py:593 dcim/forms/bulk_import.py:443 -#: dcim/forms/filtersets.py:724 dcim/forms/model_forms.py:394 +#: dcim/forms/filtersets.py:725 dcim/forms/model_forms.py:394 #: dcim/forms/model_forms.py:456 dcim/tables/devices.py:187 #: extras/filtersets.py:515 templates/dcim/device.html:183 #: templates/dcim/platform.html:26 @@ -2981,7 +3028,7 @@ msgstr "Rolle „Gerät“" #: virtualization/forms/model_forms.py:203 #: virtualization/tables/virtualmachines.py:78 msgid "Platform" -msgstr "Plattform" +msgstr "Betriebssystem" #: dcim/forms/bulk_edit.py:626 dcim/forms/bulk_edit.py:1179 #: dcim/forms/bulk_edit.py:1543 dcim/forms/bulk_edit.py:1589 @@ -2992,28 +3039,28 @@ msgstr "Plattform" #: dcim/forms/bulk_import.py:956 dcim/forms/bulk_import.py:968 #: dcim/forms/bulk_import.py:1016 dcim/forms/bulk_import.py:1373 #: dcim/forms/connections.py:24 dcim/forms/filtersets.py:129 -#: dcim/forms/filtersets.py:832 dcim/forms/filtersets.py:962 -#: dcim/forms/filtersets.py:1152 dcim/forms/filtersets.py:1174 -#: dcim/forms/filtersets.py:1196 dcim/forms/filtersets.py:1213 -#: dcim/forms/filtersets.py:1233 dcim/forms/filtersets.py:1341 -#: dcim/forms/filtersets.py:1363 dcim/forms/filtersets.py:1384 -#: dcim/forms/filtersets.py:1399 dcim/forms/filtersets.py:1413 -#: dcim/forms/filtersets.py:1476 dcim/forms/filtersets.py:1500 -#: dcim/forms/filtersets.py:1524 dcim/forms/model_forms.py:573 +#: dcim/forms/filtersets.py:840 dcim/forms/filtersets.py:970 +#: dcim/forms/filtersets.py:1160 dcim/forms/filtersets.py:1182 +#: dcim/forms/filtersets.py:1204 dcim/forms/filtersets.py:1221 +#: dcim/forms/filtersets.py:1241 dcim/forms/filtersets.py:1349 +#: dcim/forms/filtersets.py:1371 dcim/forms/filtersets.py:1392 +#: dcim/forms/filtersets.py:1407 dcim/forms/filtersets.py:1421 +#: dcim/forms/filtersets.py:1484 dcim/forms/filtersets.py:1508 +#: dcim/forms/filtersets.py:1532 dcim/forms/model_forms.py:573 #: dcim/forms/model_forms.py:794 dcim/forms/model_forms.py:1153 #: dcim/forms/model_forms.py:1608 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:290 -#: dcim/tables/devices.py:355 dcim/tables/devices.py:399 -#: dcim/tables/devices.py:444 dcim/tables/devices.py:498 -#: dcim/tables/devices.py:590 dcim/tables/devices.py:692 +#: dcim/tables/devices.py:359 dcim/tables/devices.py:403 +#: dcim/tables/devices.py:448 dcim/tables/devices.py:502 +#: dcim/tables/devices.py:594 dcim/tables/devices.py:692 #: dcim/tables/devices.py:752 dcim/tables/devices.py:802 #: dcim/tables/devices.py:862 dcim/tables/devices.py:914 #: dcim/tables/devices.py:1040 dcim/tables/modules.py:52 #: extras/forms/filtersets.py:330 ipam/forms/bulk_import.py:303 -#: ipam/forms/bulk_import.py:489 ipam/forms/filtersets.py:551 -#: ipam/forms/model_forms.py:317 ipam/forms/model_forms.py:716 -#: ipam/forms/model_forms.py:749 ipam/forms/model_forms.py:775 +#: ipam/forms/bulk_import.py:489 ipam/forms/filtersets.py:558 +#: ipam/forms/model_forms.py:317 ipam/forms/model_forms.py:725 +#: ipam/forms/model_forms.py:758 ipam/forms/model_forms.py:784 #: ipam/tables/vlans.py:176 templates/dcim/consoleport.html:20 #: templates/dcim/consoleserverport.html:20 templates/dcim/device.html:14 #: templates/dcim/device.html:128 templates/dcim/device_edit.html:10 @@ -3049,7 +3096,7 @@ msgstr "Konfiguration" #: dcim/forms/bulk_edit.py:643 dcim/forms/bulk_import.py:598 #: dcim/forms/model_forms.py:587 dcim/forms/model_forms.py:842 msgid "Module type" -msgstr "Typ des Moduls" +msgstr "Modul-Typ" #: dcim/forms/bulk_edit.py:697 dcim/forms/bulk_edit.py:882 #: dcim/forms/bulk_edit.py:901 dcim/forms/bulk_edit.py:924 @@ -3066,15 +3113,15 @@ msgstr "Typ des Moduls" #: templates/dcim/powerport.html:32 templates/dcim/rearport.html:32 #: templates/extras/customfield.html:26 templates/generic/bulk_import.html:162 msgid "Label" -msgstr "Etikett" +msgstr "Label" -#: dcim/forms/bulk_edit.py:706 dcim/forms/filtersets.py:979 +#: dcim/forms/bulk_edit.py:706 dcim/forms/filtersets.py:987 #: templates/dcim/cable.html:50 msgid "Length" msgstr "Länge" #: dcim/forms/bulk_edit.py:711 dcim/forms/bulk_import.py:1174 -#: dcim/forms/bulk_import.py:1177 dcim/forms/filtersets.py:983 +#: dcim/forms/bulk_import.py:1177 dcim/forms/filtersets.py:991 msgid "Length unit" msgstr "Längeneinheit" @@ -3083,44 +3130,37 @@ msgid "Domain" msgstr "Domäne" #: dcim/forms/bulk_edit.py:803 dcim/forms/bulk_import.py:1296 -#: dcim/forms/filtersets.py:1069 dcim/forms/model_forms.py:695 +#: dcim/forms/filtersets.py:1077 dcim/forms/model_forms.py:695 msgid "Power panel" msgstr "Schalttafel" #: dcim/forms/bulk_edit.py:825 dcim/forms/bulk_import.py:1332 -#: dcim/forms/filtersets.py:1091 templates/dcim/powerfeed.html:83 +#: dcim/forms/filtersets.py:1099 templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "Versorgung" #: dcim/forms/bulk_edit.py:831 dcim/forms/bulk_import.py:1337 -#: dcim/forms/filtersets.py:1096 templates/dcim/powerfeed.html:95 +#: dcim/forms/filtersets.py:1104 templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "Phase" -#: dcim/forms/bulk_edit.py:837 dcim/forms/filtersets.py:1101 +#: dcim/forms/bulk_edit.py:837 dcim/forms/filtersets.py:1109 #: templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "Spannung" -#: dcim/forms/bulk_edit.py:841 dcim/forms/filtersets.py:1105 +#: dcim/forms/bulk_edit.py:841 dcim/forms/filtersets.py:1113 #: templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "Stromstärke" -#: dcim/forms/bulk_edit.py:845 dcim/forms/filtersets.py:1109 +#: dcim/forms/bulk_edit.py:845 dcim/forms/filtersets.py:1117 msgid "Max utilization" msgstr "Max. Auslastung" -#: dcim/forms/bulk_edit.py:849 dcim/forms/bulk_edit.py:1208 -#: dcim/forms/bulk_edit.py:1225 dcim/forms/bulk_edit.py:1242 -#: dcim/forms/bulk_edit.py:1260 dcim/forms/bulk_edit.py:1348 -#: dcim/forms/bulk_edit.py:1487 dcim/forms/bulk_edit.py:1504 -msgid "Mark connected" -msgstr "Als verbunden markieren" - #: dcim/forms/bulk_edit.py:934 msgid "Maximum draw" -msgstr "Maximale Auslosung" +msgstr "Maximale Auslastung" #: dcim/forms/bulk_edit.py:937 dcim/models/device_component_templates.py:256 #: dcim/models/device_components.py:357 @@ -3144,14 +3184,14 @@ msgstr "Stromanschluss" #: dcim/forms/bulk_edit.py:981 dcim/forms/bulk_import.py:738 msgid "Feed leg" -msgstr "Bein füttern" +msgstr "Einspeiseseite" #: dcim/forms/bulk_edit.py:1027 dcim/forms/bulk_edit.py:1333 msgid "Management only" -msgstr "Nur Verwaltung" +msgstr "Nur Management" #: dcim/forms/bulk_edit.py:1037 dcim/forms/bulk_edit.py:1339 -#: dcim/forms/bulk_import.py:821 dcim/forms/filtersets.py:1292 +#: dcim/forms/bulk_import.py:821 dcim/forms/filtersets.py:1300 #: dcim/forms/object_import.py:90 #: dcim/models/device_component_templates.py:411 #: dcim/models/device_components.py:671 @@ -3159,14 +3199,14 @@ msgid "PoE mode" msgstr "PoE-Modus" #: dcim/forms/bulk_edit.py:1043 dcim/forms/bulk_edit.py:1345 -#: dcim/forms/bulk_import.py:827 dcim/forms/filtersets.py:1297 +#: dcim/forms/bulk_import.py:827 dcim/forms/filtersets.py:1305 #: dcim/forms/object_import.py:95 #: dcim/models/device_component_templates.py:417 #: dcim/models/device_components.py:677 msgid "PoE type" msgstr "PoE-Typ" -#: dcim/forms/bulk_edit.py:1049 dcim/forms/filtersets.py:1302 +#: dcim/forms/bulk_edit.py:1049 dcim/forms/filtersets.py:1310 #: dcim/forms/object_import.py:100 msgid "Wireless role" msgstr "Drahtlose Rolle" @@ -3184,17 +3224,17 @@ msgstr "Modul" #: dcim/forms/bulk_edit.py:1313 dcim/tables/devices.py:661 #: templates/dcim/interface.html:110 msgid "LAG" -msgstr "VERZÖGERUNG" +msgstr "LAG" #: dcim/forms/bulk_edit.py:1318 dcim/forms/model_forms.py:1250 msgid "Virtual device contexts" msgstr "Kontexte virtueller Geräte" #: dcim/forms/bulk_edit.py:1324 dcim/forms/bulk_import.py:659 -#: dcim/forms/bulk_import.py:685 dcim/forms/filtersets.py:1161 -#: dcim/forms/filtersets.py:1183 dcim/forms/filtersets.py:1256 -#: dcim/tables/devices.py:602 -#: templates/circuits/inc/circuit_termination.html:93 +#: dcim/forms/bulk_import.py:685 dcim/forms/filtersets.py:1169 +#: dcim/forms/filtersets.py:1191 dcim/forms/filtersets.py:1264 +#: dcim/tables/devices.py:606 +#: templates/circuits/inc/circuit_termination_fields.html:67 #: templates/dcim/consoleport.html:40 templates/dcim/consoleserverport.html:40 msgid "Speed" msgstr "Geschwindigkeit" @@ -3211,20 +3251,20 @@ msgid "Mode" msgstr "Modus" #: dcim/forms/bulk_edit.py:1361 dcim/forms/model_forms.py:1299 -#: ipam/forms/bulk_import.py:177 ipam/forms/filtersets.py:498 +#: ipam/forms/bulk_import.py:177 ipam/forms/filtersets.py:505 #: ipam/models/vlans.py:84 virtualization/forms/bulk_edit.py:240 #: virtualization/forms/model_forms.py:321 msgid "VLAN group" msgstr "VLAN-Gruppe" #: dcim/forms/bulk_edit.py:1369 dcim/forms/model_forms.py:1304 -#: dcim/tables/devices.py:575 virtualization/forms/bulk_edit.py:248 +#: dcim/tables/devices.py:579 virtualization/forms/bulk_edit.py:248 #: virtualization/forms/model_forms.py:326 msgid "Untagged VLAN" -msgstr "VLAN ohne Tags" +msgstr "Untagged VLAN" #: dcim/forms/bulk_edit.py:1377 dcim/forms/model_forms.py:1313 -#: dcim/tables/devices.py:581 virtualization/forms/bulk_edit.py:256 +#: dcim/tables/devices.py:585 virtualization/forms/bulk_edit.py:256 #: virtualization/forms/model_forms.py:335 msgid "Tagged VLANs" msgstr "Getaggte VLANs" @@ -3234,12 +3274,12 @@ msgid "Wireless LAN group" msgstr "WLAN-Gruppe" #: dcim/forms/bulk_edit.py:1392 dcim/forms/model_forms.py:1291 -#: dcim/tables/devices.py:611 netbox/navigation/menu.py:133 +#: dcim/tables/devices.py:615 netbox/navigation/menu.py:133 #: templates/dcim/interface.html:280 wireless/tables/wirelesslan.py:24 msgid "Wireless LANs" -msgstr "Drahtlose LANs" +msgstr "WLANs" -#: dcim/forms/bulk_edit.py:1401 dcim/forms/filtersets.py:1229 +#: dcim/forms/bulk_edit.py:1401 dcim/forms/filtersets.py:1237 #: dcim/forms/model_forms.py:1334 ipam/forms/bulk_edit.py:271 #: ipam/forms/bulk_edit.py:362 ipam/forms/filtersets.py:169 #: templates/dcim/interface.html:122 templates/ipam/prefix.html:95 @@ -3252,7 +3292,7 @@ msgstr "Adressierung" msgid "Operation" msgstr "Bedienung" -#: dcim/forms/bulk_edit.py:1403 dcim/forms/filtersets.py:1230 +#: dcim/forms/bulk_edit.py:1403 dcim/forms/filtersets.py:1238 #: dcim/forms/model_forms.py:932 dcim/forms/model_forms.py:1337 msgid "PoE" msgstr "PoE" @@ -3284,7 +3324,7 @@ msgstr "Name der übergeordneten Region" #: dcim/forms/bulk_import.py:77 msgid "Name of parent site group" -msgstr "Name der übergeordneten Websitegruppe" +msgstr "Name der übergeordneten Standortgruppe" #: dcim/forms/bulk_import.py:96 msgid "Assigned region" @@ -3308,7 +3348,7 @@ msgstr "Zugewiesener Standort" #: dcim/forms/bulk_import.py:140 msgid "Parent location" -msgstr "Standort des Elternteils" +msgstr "Übergeordneter Standort" #: dcim/forms/bulk_import.py:142 msgid "Location not found." @@ -3316,7 +3356,7 @@ msgstr "Standort wurde nicht gefunden." #: dcim/forms/bulk_import.py:199 msgid "Name of assigned tenant" -msgstr "Name des zugewiesenen Mieters" +msgstr "Name des zugewiesenen Mandanten " #: dcim/forms/bulk_import.py:211 msgid "Name of assigned role" @@ -3336,7 +3376,7 @@ msgstr "Einheit für Außenmaße" #: dcim/forms/bulk_import.py:234 msgid "Unit for rack weights" -msgstr "Einheit für Regalgewichte" +msgstr "Einheit für Rackgewichte" #: dcim/forms/bulk_import.py:260 msgid "Parent site" @@ -3362,7 +3402,7 @@ msgstr "Der Hersteller, der diesen Gerätetyp herstellt" #: dcim/forms/bulk_import.py:329 msgid "The default platform for devices of this type (optional)" -msgstr "Die Standardplattform für Geräte dieses Typs (optional)" +msgstr "Das Standard-Betriebssystem für Geräte diesen Typs (optional)" #: dcim/forms/bulk_import.py:334 msgid "Device weight" @@ -3382,7 +3422,7 @@ msgstr "Einheit für das Modulgewicht" #: dcim/forms/bulk_import.py:399 msgid "Limit platform assignments to this manufacturer" -msgstr "Plattformzuweisungen auf diesen Hersteller beschränken" +msgstr "Betriebssystem-Zuweisungen auf diesen Hersteller beschränken" #: dcim/forms/bulk_import.py:421 dcim/forms/bulk_import.py:1376 #: tenancy/forms/bulk_import.py:106 @@ -3399,7 +3439,7 @@ msgstr "Gerätetyp Modell" #: dcim/forms/bulk_import.py:447 virtualization/forms/bulk_import.py:126 msgid "Assigned platform" -msgstr "Zugewiesene Plattform" +msgstr "Zugewiesenes Betriebssystem" #: dcim/forms/bulk_import.py:455 dcim/forms/bulk_import.py:459 #: dcim/forms/model_forms.py:476 @@ -3409,8 +3449,8 @@ msgstr "Virtuelles Gehäuse" #: dcim/forms/bulk_import.py:462 dcim/forms/model_forms.py:465 #: dcim/tables/devices.py:207 extras/filtersets.py:548 #: extras/forms/filtersets.py:331 ipam/forms/bulk_edit.py:479 -#: ipam/forms/filtersets.py:408 ipam/forms/filtersets.py:452 -#: ipam/forms/model_forms.py:618 templates/dcim/device.html:231 +#: ipam/forms/filtersets.py:415 ipam/forms/filtersets.py:459 +#: ipam/forms/model_forms.py:627 templates/dcim/device.html:231 #: templates/virtualization/cluster.html:10 #: templates/virtualization/virtualmachine.html:88 #: templates/virtualization/virtualmachine.html:97 @@ -3440,23 +3480,25 @@ msgstr "Zugewiesenes Rack (falls vorhanden)" #: dcim/forms/bulk_import.py:505 msgid "Face" -msgstr "Gesicht" +msgstr "Ausrichtung" #: dcim/forms/bulk_import.py:508 msgid "Mounted rack face" -msgstr "Montierte Rackfront" +msgstr "Montierte Rackseite" #: dcim/forms/bulk_import.py:515 msgid "Parent device (for child devices)" -msgstr "Elterngerät (für Geräte von Kindern)" +msgstr "Übergeordnetes Gerät (für untergeordnete Geräte)" #: dcim/forms/bulk_import.py:518 msgid "Device bay" -msgstr "Geräteschacht" +msgstr "Geräteeinsatz" #: dcim/forms/bulk_import.py:522 msgid "Device bay in which this device is installed (for child devices)" -msgstr "Geräteschacht, in dem dieses Gerät installiert ist (für Kindergeräte)" +msgstr "" +"Geräteschacht, in dem dieses Gerät installiert ist (für untergeordnete " +"Geräte)" #: dcim/forms/bulk_import.py:528 msgid "Airflow direction" @@ -3468,7 +3510,7 @@ msgstr "Das Gerät, in dem dieses Modul installiert ist" #: dcim/forms/bulk_import.py:592 dcim/forms/model_forms.py:580 msgid "Module bay" -msgstr "Modulschacht" +msgstr "Moduleinsatz" #: dcim/forms/bulk_import.py:595 msgid "The module bay in which this module is installed" @@ -3476,7 +3518,7 @@ msgstr "Der Modulschacht, in dem dieses Modul installiert ist" #: dcim/forms/bulk_import.py:601 msgid "The type of module" -msgstr "Die Art des Moduls" +msgstr "Der Typ des Moduls" #: dcim/forms/bulk_import.py:609 dcim/forms/model_forms.py:596 msgid "Replicate components" @@ -3501,15 +3543,15 @@ msgstr "Übernehmen Sie bereits bestehende Komponenten" #: dcim/forms/bulk_import.py:656 dcim/forms/bulk_import.py:682 #: dcim/forms/bulk_import.py:708 msgid "Port type" -msgstr "Art des Anschlusses" +msgstr "Anschluss-Typ" #: dcim/forms/bulk_import.py:664 dcim/forms/bulk_import.py:690 msgid "Port speed in bps" -msgstr "Portgeschwindigkeit in Bit/s" +msgstr "Anschlussgeschwindigkeit in Bit/s" #: dcim/forms/bulk_import.py:728 msgid "Outlet type" -msgstr "Art des Ausgangs" +msgstr "Ausgangs-Typ" #: dcim/forms/bulk_import.py:735 msgid "Local power port which feeds this outlet" @@ -3533,7 +3575,7 @@ msgstr "Überbrückte Schnittstelle" #: dcim/forms/bulk_import.py:792 msgid "Lag" -msgstr "Verzögerung" +msgstr "Lag" #: dcim/forms/bulk_import.py:796 msgid "Parent LAG interface" @@ -3553,9 +3595,9 @@ msgstr "" msgid "Physical medium" msgstr "Physikalisches Medium" -#: dcim/forms/bulk_import.py:813 dcim/forms/filtersets.py:1263 +#: dcim/forms/bulk_import.py:813 dcim/forms/filtersets.py:1271 msgid "Duplex" -msgstr "Maisonette" +msgstr "Duplex" #: dcim/forms/bulk_import.py:818 msgid "Poe mode" @@ -3571,8 +3613,8 @@ msgstr "IEEE 802.1Q-Betriebsmodus (für L2-Schnittstellen)" #: dcim/forms/bulk_import.py:840 ipam/forms/bulk_import.py:160 #: ipam/forms/bulk_import.py:246 ipam/forms/bulk_import.py:282 -#: ipam/forms/filtersets.py:200 ipam/forms/filtersets.py:270 -#: ipam/forms/filtersets.py:329 virtualization/forms/bulk_import.py:175 +#: ipam/forms/filtersets.py:201 ipam/forms/filtersets.py:277 +#: ipam/forms/filtersets.py:336 virtualization/forms/bulk_import.py:175 msgid "Assigned VRF" msgstr "Zugewiesenes VRF" @@ -3587,16 +3629,16 @@ msgstr "Drahtlose Rolle (AP/Station)" #: dcim/forms/bulk_import.py:882 #, python-brace-format msgid "VDC {vdc} is not assigned to device {device}" -msgstr "VDC {vdc} ist dem Gerät nicht zugewiesen {device}" +msgstr "VDC {vdc} ist dem Gerät {device} nicht zugewiesen" #: dcim/forms/bulk_import.py:896 dcim/forms/model_forms.py:945 #: dcim/forms/model_forms.py:1519 dcim/forms/object_import.py:117 msgid "Rear port" -msgstr "Hinterer Anschluss" +msgstr "Rückanschluss" #: dcim/forms/bulk_import.py:899 msgid "Corresponding rear port" -msgstr "Entsprechender hinterer Anschluss" +msgstr "Entsprechender Rückanschluss" #: dcim/forms/bulk_import.py:904 dcim/forms/bulk_import.py:945 #: dcim/forms/bulk_import.py:1164 @@ -3609,11 +3651,11 @@ msgstr "Installiertes Gerät" #: dcim/forms/bulk_import.py:977 msgid "Child device installed within this bay" -msgstr "In diesem Schacht installiertes Kindergerät" +msgstr "In diesem Schacht installiertes untergeordnetes Gerät" #: dcim/forms/bulk_import.py:979 msgid "Child device not found." -msgstr "Das Gerät des Kindes wurde nicht gefunden." +msgstr "Untergeordnetes Gerät wurde nicht gefunden." #: dcim/forms/bulk_import.py:1037 msgid "Parent inventory item" @@ -3621,11 +3663,11 @@ msgstr "Artikel aus dem übergeordneten Inventar" #: dcim/forms/bulk_import.py:1040 msgid "Component type" -msgstr "Art der Komponente" +msgstr "Komponenten-Typ" #: dcim/forms/bulk_import.py:1044 msgid "Component Type" -msgstr "Art der Komponente" +msgstr "Komponenten-Typ" #: dcim/forms/bulk_import.py:1047 msgid "Compnent name" @@ -3654,7 +3696,7 @@ msgstr "Typ Seite A" #: dcim/forms/bulk_import.py:1128 dcim/forms/bulk_import.py:1146 msgid "Termination type" -msgstr "Art der Kündigung" +msgstr "Typ des Abschlusspunktes" #: dcim/forms/bulk_import.py:1131 msgid "Side A name" @@ -3662,7 +3704,7 @@ msgstr "Name der Seite A" #: dcim/forms/bulk_import.py:1132 dcim/forms/bulk_import.py:1150 msgid "Termination name" -msgstr "Name der Kündigung" +msgstr "Name des Abschlusspunktes" #: dcim/forms/bulk_import.py:1137 msgid "Side B device" @@ -3695,7 +3737,7 @@ msgstr "{side_upper} Seitlicher Abschluss nicht gefunden: {device} {name}" #: dcim/tables/devices.py:1010 templates/dcim/device.html:130 #: templates/dcim/virtualchassis.html:27 templates/dcim/virtualchassis.html:67 msgid "Master" -msgstr "Meister" +msgstr "Master" #: dcim/forms/bulk_import.py:1248 msgid "Master device" @@ -3703,7 +3745,7 @@ msgstr "Master-Gerät" #: dcim/forms/bulk_import.py:1265 msgid "Name of parent site" -msgstr "Name der übergeordneten Website" +msgstr "Name des übergeordneten Standorts" #: dcim/forms/bulk_import.py:1299 msgid "Upstream power panel" @@ -3719,7 +3761,7 @@ msgstr "Versorgungsart (AC/DC)" #: dcim/forms/bulk_import.py:1339 msgid "Single or three-phase" -msgstr "Ein- oder dreiphasig" +msgstr "Ein- oder Dreiphasig" #: dcim/forms/common.py:24 dcim/models/device_components.py:528 #: templates/dcim/interface.html:57 @@ -3734,7 +3776,7 @@ msgid "" "The tagged VLANs ({vlans}) must belong to the same site as the interface's " "parent device/VM, or they must be global" msgstr "" -"Die markierten VLANs ({vlans}) müssen zu derselben Site gehören wie das " +"Die markierten VLANs ({vlans}) müssen zu demselben Standort gehören wie das " "übergeordnete Gerät/die übergeordnete VM der Schnittstelle, oder sie müssen " "global sein" @@ -3802,29 +3844,33 @@ msgstr "Komponenten" msgid "Subdevice role" msgstr "Rolle des Untergeräts" -#: dcim/forms/filtersets.py:718 +#: dcim/forms/filtersets.py:719 msgid "Model" msgstr "Modell" -#: dcim/forms/filtersets.py:762 +#: dcim/forms/filtersets.py:763 msgid "Has an OOB IP" msgstr "Hat eine OOB-IP" -#: dcim/forms/filtersets.py:769 +#: dcim/forms/filtersets.py:770 msgid "Virtual chassis member" -msgstr "Virtuelles Chassis-Mitglied" +msgstr "Virtuelles Gehäuse-Mitglied" -#: dcim/forms/filtersets.py:1121 +#: dcim/forms/filtersets.py:819 +msgid "Has virtual device contexts" +msgstr "Hat virtuelle Gerätekontexte" + +#: dcim/forms/filtersets.py:1129 msgid "Cabled" msgstr "Verkabelt" -#: dcim/forms/filtersets.py:1128 +#: dcim/forms/filtersets.py:1136 msgid "Occupied" -msgstr "Besetzt" +msgstr "Belegt" -#: dcim/forms/filtersets.py:1153 dcim/forms/filtersets.py:1175 -#: dcim/forms/filtersets.py:1197 dcim/forms/filtersets.py:1214 -#: dcim/forms/filtersets.py:1234 dcim/tables/devices.py:348 +#: dcim/forms/filtersets.py:1161 dcim/forms/filtersets.py:1183 +#: dcim/forms/filtersets.py:1205 dcim/forms/filtersets.py:1222 +#: dcim/forms/filtersets.py:1242 dcim/tables/devices.py:352 #: 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 @@ -3832,40 +3878,40 @@ msgstr "Besetzt" msgid "Connection" msgstr "Verbindung" -#: dcim/forms/filtersets.py:1246 extras/forms/bulk_edit.py:316 +#: dcim/forms/filtersets.py:1254 extras/forms/bulk_edit.py:316 #: extras/forms/bulk_import.py:242 extras/forms/filtersets.py:476 #: extras/forms/model_forms.py:551 extras/tables/tables.py:512 #: templates/extras/journalentry.html:30 msgid "Kind" -msgstr "Freundlich" +msgstr "Art" -#: dcim/forms/filtersets.py:1275 +#: dcim/forms/filtersets.py:1283 msgid "Mgmt only" msgstr "Nur Verwaltung" -#: dcim/forms/filtersets.py:1287 dcim/forms/model_forms.py:1327 +#: dcim/forms/filtersets.py:1295 dcim/forms/model_forms.py:1327 #: dcim/models/device_components.py:630 templates/dcim/interface.html:129 msgid "WWN" msgstr "WWN" -#: dcim/forms/filtersets.py:1307 +#: dcim/forms/filtersets.py:1315 msgid "Wireless channel" msgstr "Drahtloser Kanal" -#: dcim/forms/filtersets.py:1311 +#: dcim/forms/filtersets.py:1319 msgid "Channel frequency (MHz)" msgstr "Kanalfrequenz (MHz)" -#: dcim/forms/filtersets.py:1315 +#: dcim/forms/filtersets.py:1323 msgid "Channel width (MHz)" msgstr "Kanalbreite (MHz)" -#: dcim/forms/filtersets.py:1319 templates/dcim/interface.html:85 +#: dcim/forms/filtersets.py:1327 templates/dcim/interface.html:85 msgid "Transmit power (dBm)" msgstr "Sendeleistung (dBm)" -#: dcim/forms/filtersets.py:1342 dcim/forms/filtersets.py:1364 -#: dcim/tables/devices.py:320 templates/dcim/cable.html:12 +#: dcim/forms/filtersets.py:1350 dcim/forms/filtersets.py:1372 +#: dcim/tables/devices.py:324 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 @@ -3873,9 +3919,9 @@ msgstr "Sendeleistung (dBm)" msgid "Cable" msgstr "Kabel" -#: dcim/forms/filtersets.py:1434 dcim/tables/devices.py:933 +#: dcim/forms/filtersets.py:1442 dcim/tables/devices.py:933 msgid "Discovered" -msgstr "Entdeckt" +msgstr "Erfasst" #: dcim/forms/formsets.py:20 #, python-brace-format @@ -3893,7 +3939,7 @@ msgstr "Rack-Rolle" #: dcim/forms/model_forms.py:227 msgid "Inventory Control" -msgstr "Inventarkontrolle" +msgstr "Inventar-Steuerung" #: dcim/forms/model_forms.py:231 msgid "Outer Dimensions" @@ -3919,11 +3965,11 @@ msgstr "Reservierung" #: dcim/forms/model_forms.py:306 dcim/forms/model_forms.py:389 #: utilities/forms/fields/fields.py:47 msgid "Slug" -msgstr "Schnecke" +msgstr "URL-Slug" #: dcim/forms/model_forms.py:315 templates/dcim/devicetype.html:11 msgid "Chassis" -msgstr "Fahrgestelle" +msgstr "Gehäuse" #: dcim/forms/model_forms.py:366 templates/dcim/devicerole.html:23 msgid "Device Role" @@ -3931,12 +3977,12 @@ msgstr "Rolle des Geräts" #: dcim/forms/model_forms.py:433 dcim/models/devices.py:634 msgid "The lowest-numbered unit occupied by the device" -msgstr "Die Einheit mit der niedrigsten Nummer, die vom Gerät belegt ist" +msgstr "Die HE mit der niedrigsten Nummer, die vom Gerät belegt ist" #: dcim/forms/model_forms.py:487 msgid "The position in the virtual chassis this device is identified by" msgstr "" -"Die Position im virtuellen Chassis, durch die dieses Gerät identifiziert " +"Die Position im virtuellen Gehäuse, durch die dieses Gerät identifiziert " "wird" #: dcim/forms/model_forms.py:491 templates/dcim/device.html:131 @@ -3949,7 +3995,7 @@ msgstr "Priorität" #: dcim/forms/model_forms.py:492 msgid "The priority of the device in the virtual chassis" -msgstr "Die Priorität des Geräts im virtuellen Chassis" +msgstr "Die Priorität des Geräts im virtuellen Gehäuse" #: dcim/forms/model_forms.py:599 msgid "Automatically populate components associated with this module type" @@ -3962,11 +4008,11 @@ msgstr "Die maximale Länge beträgt 32767 (jede Einheit)" #: dcim/forms/model_forms.py:712 msgid "Characteristics" -msgstr "Eigenschaften" +msgstr "Charakteristiken" #: dcim/forms/model_forms.py:1032 msgid "Console port template" -msgstr "Port-Vorlage für die Konsole" +msgstr "Konsolenanschluss-Vorlage" #: dcim/forms/model_forms.py:1040 msgid "Console server port template" @@ -3974,7 +4020,7 @@ msgstr "Port-Vorlage für Konsolenserver" #: dcim/forms/model_forms.py:1048 msgid "Front port template" -msgstr "Vorlage für den Frontanschluss" +msgstr "Frontanschluss-Vorlage" #: dcim/forms/model_forms.py:1056 msgid "Interface template" @@ -3997,7 +4043,7 @@ msgstr "Vorlage für den hinteren Anschluss" #: dcim/tables/connections.py:65 ipam/forms/bulk_import.py:317 #: ipam/forms/model_forms.py:278 ipam/forms/model_forms.py:287 #: ipam/tables/fhrp.py:64 ipam/tables/ip.py:368 ipam/tables/vlans.py:165 -#: templates/circuits/inc/circuit_termination.html:77 +#: 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 @@ -4022,28 +4068,28 @@ msgstr "Konsolenanschluss" #: templates/dcim/consoleport.html:73 templates/dcim/consoleserverport.html:17 #: templates/dcim/frontport.html:109 msgid "Console Server Port" -msgstr "Konsolenserver-Port" +msgstr "Konsolenserver-Anschluss" #: dcim/forms/model_forms.py:1092 dcim/forms/model_forms.py:1530 -#: templates/circuits/inc/circuit_termination.html:78 +#: 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 msgid "Front Port" -msgstr "Vorderer Anschluss" +msgstr "Frontanschluss" #: dcim/forms/model_forms.py:1093 dcim/forms/model_forms.py:1531 #: dcim/tables/devices.py:705 -#: templates/circuits/inc/circuit_termination.html:79 +#: 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 msgid "Rear Port" -msgstr "Hinterer Anschluss" +msgstr "Rückanschluss" #: dcim/forms/model_forms.py:1094 dcim/forms/model_forms.py:1532 -#: dcim/tables/connections.py:46 dcim/tables/devices.py:505 +#: dcim/tables/connections.py:46 dcim/tables/devices.py:509 #: templates/dcim/poweroutlet.html:44 templates/dcim/powerport.html:17 msgid "Power Port" msgstr "Stromanschluss" @@ -4055,7 +4101,7 @@ msgstr "Stromanschluss" #: dcim/forms/model_forms.py:1097 dcim/forms/model_forms.py:1535 msgid "Component Assignment" -msgstr "Komponentenzuweisung" +msgstr "Komponenten-Zuweisung" #: dcim/forms/model_forms.py:1140 dcim/forms/model_forms.py:1582 msgid "An InventoryItem can only be assigned to a single component." @@ -4068,7 +4114,7 @@ msgstr "LAG-Schnittstelle" #: dcim/forms/model_forms.py:1428 msgid "Child Device" -msgstr "Gerät für Kinder" +msgstr "untergeordnetes Gerät" #: dcim/forms/model_forms.py:1429 msgid "" @@ -4084,7 +4130,7 @@ msgstr "Konsolenanschluss" #: dcim/forms/model_forms.py:1479 msgid "Console server port" -msgstr "Port für Konsolenserver" +msgstr "Konsolenserver-Anschluss" #: dcim/forms/model_forms.py:1487 msgid "Front port" @@ -4096,7 +4142,7 @@ msgstr "Stromanschluss" #: dcim/forms/model_forms.py:1523 templates/dcim/inventoryitem.html:17 msgid "Inventory Item" -msgstr "Artikel im Inventar" +msgstr "Inventar-Artikel" #: dcim/forms/model_forms.py:1596 templates/dcim/inventoryitemrole.html:15 msgid "Inventory Item Role" @@ -4106,13 +4152,13 @@ msgstr "Rolle des Inventarartikels" #: templates/dcim/virtualdevicecontext.html:30 #: templates/virtualization/virtualmachine.html:48 msgid "Primary IPv4" -msgstr "Primäres IPv4" +msgstr "Primäre IPv4" #: dcim/forms/model_forms.py:1623 templates/dcim/device.html:203 #: templates/dcim/virtualdevicecontext.html:41 #: templates/virtualization/virtualmachine.html:64 msgid "Primary IPv6" -msgstr "Primäres IPv6" +msgstr "Primäre IPv6" #: dcim/forms/object_create.py:48 dcim/forms/object_create.py:199 #: dcim/forms/object_create.py:355 @@ -4135,12 +4181,12 @@ msgstr "" #: dcim/forms/object_create.py:110 dcim/forms/object_create.py:271 #: dcim/tables/devices.py:257 msgid "Rear ports" -msgstr "Anschlüsse auf der Rückseite" +msgstr "Rückanschlüsse" #: dcim/forms/object_create.py:111 dcim/forms/object_create.py:272 msgid "Select one rear port assignment for each front port being created." msgstr "" -"Wählen Sie für jeden zu erstellenden Frontanschluss eine hintere Port-" +"Wählen Sie für jeden zu erstellenden Frontanschluss eine hintere Anschluss-" "Zuweisung aus." #: dcim/forms/object_create.py:164 @@ -4149,9 +4195,9 @@ msgid "" "The number of front port templates to be created ({frontport_count}) must " "match the selected number of rear port positions ({rearport_count})." msgstr "" -"Die Anzahl der zu erstellenden Front-Port-Vorlagen ({frontport_count}) muss " -"mit der ausgewählten Anzahl der hinteren Anschlusspositionen übereinstimmen " -"({rearport_count})." +"Die Anzahl der zu erstellenden Front-Anschluss-Vorlagen ({frontport_count}) " +"muss mit der ausgewählten Anzahl der hinteren Anschlusspositionen " +"übereinstimmen ({rearport_count})." #: dcim/forms/object_create.py:251 #, python-brace-format @@ -4168,8 +4214,8 @@ msgid "" "The number of front ports to be created ({frontport_count}) must match the " "selected number of rear port positions ({rearport_count})." msgstr "" -"Die Anzahl der zu erstellenden Front-Ports ({frontport_count}) muss mit der " -"ausgewählten Anzahl der hinteren Anschlusspositionen übereinstimmen " +"Die Anzahl der zu erstellenden Frontanschlüsse ({frontport_count}) muss mit " +"der ausgewählten Anzahl der hinteren Anschlusspositionen übereinstimmen " "({rearport_count})." #: dcim/forms/object_create.py:409 dcim/tables/devices.py:1016 @@ -4197,7 +4243,7 @@ msgstr "Für das erste VC-Mitglied muss eine Position angegeben werden." #: dcim/models/cables.py:62 dcim/models/device_component_templates.py:55 #: dcim/models/device_components.py:63 extras/models/customfields.py:109 msgid "label" -msgstr "Beschriftung" +msgstr "Label" #: dcim/models/cables.py:71 msgid "length" @@ -4247,11 +4293,11 @@ msgstr "Ende" #: dcim/models/cables.py:311 msgid "cable termination" -msgstr "Kabelabschluss" +msgstr "Kabelabschlusspunkt" #: dcim/models/cables.py:312 msgid "cable terminations" -msgstr "Kabelendverschlüsse" +msgstr "Kabelabschlusspunkte" #: dcim/models/cables.py:331 #, python-brace-format @@ -4270,8 +4316,8 @@ msgstr "Kabel können nicht terminiert werden zu {type_display} Schnittstellen" #: dcim/models/cables.py:348 msgid "Circuit terminations attached to a provider network may not be cabled." msgstr "" -"Leitungsabschlüsse, die an ein Provider-Netzwerk angeschlossen sind, sind " -"möglicherweise nicht verkabelt." +"Transportnetzabschlüsse, die an ein Provider-Netzwerk angeschlossen sind, " +"sind möglicherweise nicht verkabelt." #: dcim/models/cables.py:446 extras/models/configs.py:50 msgid "is active" @@ -4305,7 +4351,7 @@ msgstr "" #: dcim/models/device_component_templates.py:58 #: dcim/models/device_components.py:66 msgid "Physical label" -msgstr "Physisches Etikett" +msgstr "Physisches Label" #: dcim/models/device_component_templates.py:103 msgid "Component templates cannot be moved to a different device type." @@ -4331,7 +4377,7 @@ msgstr "" #: dcim/models/device_component_templates.py:186 msgid "console port template" -msgstr "Vorlage für Konsolenport" +msgstr "Vorlage für Konsolenanschluss" #: dcim/models/device_component_templates.py:187 msgid "console port templates" @@ -4348,12 +4394,12 @@ msgstr "Port-Vorlagen für Konsolenserver" #: dcim/models/device_component_templates.py:252 #: dcim/models/device_components.py:353 msgid "maximum draw" -msgstr "maximale Auslosung" +msgstr "maximale Auslastung" #: dcim/models/device_component_templates.py:259 #: dcim/models/device_components.py:360 msgid "allocated draw" -msgstr "zugewiesenes Unentschieden" +msgstr "zugewiesene Auslastung" #: dcim/models/device_component_templates.py:269 msgid "power port template" @@ -4374,7 +4420,7 @@ msgstr "" #: dcim/models/device_component_templates.py:321 #: dcim/models/device_components.py:478 msgid "feed leg" -msgstr "Bein füttern" +msgstr "Einspeiseseite" #: dcim/models/device_component_templates.py:325 #: dcim/models/device_components.py:482 @@ -4393,13 +4439,15 @@ msgstr "Vorlagen für Steckdosen" #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device type" msgstr "" -"Elternstromanschluss ({power_port}) muss zum gleichen Gerätetyp gehören" +"Übergeordneter Stromanschluss ({power_port}) muss zum gleichen Gerätetyp " +"gehören" #: dcim/models/device_component_templates.py:345 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same module type" msgstr "" -"Elternstromanschluss ({power_port}) muss zum gleichen Modultyp gehören" +"Übergeordneter Stromanschluss ({power_port}) muss zum gleichen Modultyp " +"gehören" #: dcim/models/device_component_templates.py:397 #: dcim/models/device_components.py:612 @@ -4418,7 +4466,7 @@ msgstr "drahtlose Rolle" #: dcim/models/device_component_templates.py:429 msgid "interface template" -msgstr "Schnittstellenvorlage" +msgstr "Schnittstellen-Vorlage" #: dcim/models/device_component_templates.py:430 msgid "interface templates" @@ -4443,15 +4491,15 @@ msgstr "Bridge-Schnittstelle ({bridge}) muss zum gleichen Modultyp gehören" #: dcim/models/device_component_templates.py:500 #: dcim/models/device_components.py:985 msgid "rear port position" -msgstr "Position des hinteren Anschlusses" +msgstr "Position des Rückanschlusses" #: dcim/models/device_component_templates.py:525 msgid "front port template" -msgstr "Vorlage für den Frontanschluss" +msgstr "Frontanschluss-Vorlage" #: dcim/models/device_component_templates.py:526 msgid "front port templates" -msgstr "Frontanschlussvorlagen" +msgstr "Frontanschluss-Vorlagen" #: dcim/models/device_component_templates.py:536 #, python-brace-format @@ -4474,11 +4522,11 @@ msgstr "Positionen" #: dcim/models/device_component_templates.py:606 msgid "rear port template" -msgstr "Vorlage für den hinteren Anschluss" +msgstr "Vorlage für den Rückanschluss" #: dcim/models/device_component_templates.py:607 msgid "rear port templates" -msgstr "Vorlagen für hintere Anschlüsse" +msgstr "Vorlagen für Rückanschlüsse" #: dcim/models/device_component_templates.py:636 #: dcim/models/device_components.py:1095 @@ -4493,19 +4541,19 @@ msgstr "" #: dcim/models/device_component_templates.py:645 msgid "module bay template" -msgstr "Vorlage für Modulschacht" +msgstr "Vorlage für Moduleinsatz" #: dcim/models/device_component_templates.py:646 msgid "module bay templates" -msgstr "Vorlagen für Modulschächte" +msgstr "Vorlagen für Moduleinsätze" #: dcim/models/device_component_templates.py:673 msgid "device bay template" -msgstr "Vorlage für Geräteschacht" +msgstr "Vorlage für Geräteeinsatz" #: dcim/models/device_component_templates.py:674 msgid "device bay templates" -msgstr "Vorlagen für Geräteschächte" +msgstr "Vorlagen für Geräteeinsätze" #: dcim/models/device_component_templates.py:687 #, python-brace-format @@ -4513,8 +4561,8 @@ msgid "" "Subdevice role of device type ({device_type}) must be set to \"parent\" to " "allow device bays." msgstr "" -"Untergeräterolle des Gerätetyps ({device_type}) muss auf „Parent“ gesetzt " -"sein, um Geräteschächte zuzulassen." +"Untergeräterolle des Gerätetyps ({device_type}) muss auf „Übergeordnet“ " +"gesetzt sein, um Geräteschächte zuzulassen." #: dcim/models/device_component_templates.py:742 #: dcim/models/device_components.py:1224 @@ -4574,7 +4622,7 @@ 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 msgid "Physical port type" -msgstr "Physischer Porttyp" +msgstr "Physischer Anschlusstyp" #: dcim/models/device_components.py:291 dcim/models/device_components.py:320 msgid "speed" @@ -4582,7 +4630,7 @@ msgstr "Geschwindigkeit" #: dcim/models/device_components.py:295 dcim/models/device_components.py:324 msgid "Port speed in bits per second" -msgstr "Portgeschwindigkeit in Bit pro Sekunde" +msgstr "Anschlussgeschwindigkeit in Bit pro Sekunde" #: dcim/models/device_components.py:301 msgid "console port" @@ -4594,11 +4642,11 @@ msgstr "Konsolenanschlüsse" #: dcim/models/device_components.py:330 msgid "console server port" -msgstr "Konsolenserver-Port" +msgstr "Konsolenserver-Anschluss" #: dcim/models/device_components.py:331 msgid "console server ports" -msgstr "Konsolenserver-Ports" +msgstr "Konsolenserver-Anschlüsse" #: dcim/models/device_components.py:370 msgid "power port" @@ -4619,7 +4667,8 @@ msgstr "Steckdosen" #: dcim/models/device_components.py:500 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device" -msgstr "Elternstromanschluss ({power_port}) muss zum selben Gerät gehören" +msgstr "" +"Übergeordneter Stromanschluss ({power_port}) muss zum selben Gerät gehören" #: dcim/models/device_components.py:531 vpn/models/crypto.py:81 #: vpn/models/crypto.py:226 @@ -4677,12 +4726,12 @@ msgstr "drahtlose LANs" #: dcim/models/device_components.py:698 #: virtualization/models/virtualmachines.py:330 msgid "untagged VLAN" -msgstr "VLAN ohne Tags" +msgstr "untagged VLAN" #: dcim/models/device_components.py:704 #: virtualization/models/virtualmachines.py:336 msgid "tagged VLANs" -msgstr "markierte VLANs" +msgstr "tagged VLANs" #: dcim/models/device_components.py:746 #: virtualization/models/virtualmachines.py:372 @@ -4709,7 +4758,8 @@ msgstr "" #: dcim/models/device_components.py:775 #: virtualization/models/virtualmachines.py:385 msgid "An interface cannot be its own parent." -msgstr "Eine Schnittstelle kann kein eigenes übergeordnetes Objekt sein." +msgstr "" +"Eine Schnittstelle kann nicht seine eigene übergeordnete Schnittstelle sein." #: dcim/models/device_components.py:779 msgid "Only virtual interfaces may be assigned to a parent interface." @@ -4761,7 +4811,7 @@ msgstr "" #: dcim/models/device_components.py:833 msgid "A LAG interface cannot be its own parent." msgstr "" -"Eine LAG-Schnittstelle kann keine eigene übergeordnete Schnittstelle sein." +"Eine LAG-Schnittstelle nicht seine eigene übergeordnete Schnittstelle sein." #: dcim/models/device_components.py:840 #, python-brace-format @@ -4830,7 +4880,7 @@ msgid "" "The untagged VLAN ({untagged_vlan}) must belong to the same site as the " "interface's parent device, or it must be global." msgstr "" -"Das unmarkierte VLAN ({untagged_vlan}) muss zu derselben Site gehören wie " +"Das untagged VLAN ({untagged_vlan}) muss zu demselben Standort gehören wie " "das übergeordnete Gerät der Schnittstelle, oder es muss global sein." #: dcim/models/device_components.py:991 @@ -4843,12 +4893,12 @@ msgstr "Frontanschluss" #: dcim/models/device_components.py:1008 msgid "front ports" -msgstr "Anschlüsse an der Vorderseite" +msgstr "Frontanschlüsse" #: dcim/models/device_components.py:1022 #, python-brace-format msgid "Rear port ({rear_port}) must belong to the same device" -msgstr "Hinterer Anschluss ({rear_port}) muss zum selben Gerät gehören" +msgstr "Rückanschluss ({rear_port}) muss zum selben Gerät gehören" #: dcim/models/device_components.py:1030 #, python-brace-format @@ -4865,11 +4915,11 @@ msgstr "Anzahl der Frontanschlüsse, die zugeordnet werden können" #: dcim/models/device_components.py:1065 msgid "rear port" -msgstr "hinterer Anschluss" +msgstr "Rückanschluss" #: dcim/models/device_components.py:1066 msgid "rear ports" -msgstr "Anschlüsse auf der Rückseite" +msgstr "Rückanschlüsse" #: dcim/models/device_components.py:1080 #, python-brace-format @@ -4878,28 +4928,28 @@ msgid "" " ({frontport_count})" msgstr "" "Die Anzahl der Positionen darf nicht kleiner sein als die Anzahl der " -"zugewiesenen Frontanschlüsse ({frontport_count})" +"zugewiesenen Vorderanschlüsse ({frontport_count})" #: dcim/models/device_components.py:1104 msgid "module bay" -msgstr "Modulschacht" +msgstr "Moduleinsatz" #: dcim/models/device_components.py:1105 msgid "module bays" -msgstr "Modulschächte" +msgstr "Moduleinsätze" #: dcim/models/device_components.py:1126 msgid "device bay" -msgstr "Geräteschacht" +msgstr "Geräteeinsatz" #: dcim/models/device_components.py:1127 msgid "device bays" -msgstr "Geräteschächte" +msgstr "Geräteeinsätze" #: dcim/models/device_components.py:1137 #, 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äteschächte." +msgstr "Dieser Gerätetyp ({device_type}) unterstützt keine Geräteeinsätze." #: dcim/models/device_components.py:1143 msgid "Cannot install a device into itself." @@ -4910,16 +4960,16 @@ msgstr "Ein Gerät kann nicht in sich selbst installiert werden." msgid "" "Cannot install the specified device; device is already installed in {bay}." msgstr "" -"Das angegebene Gerät kann nicht installiert werden; das Gerät ist bereits " +"Das angegebene Gerät kann nicht installiert werden; Das Gerät ist bereits " "installiert in {bay}." #: dcim/models/device_components.py:1172 msgid "inventory item role" -msgstr "Rolle des Inventarartikels" +msgstr "Inventarartikel-Rolle" #: dcim/models/device_components.py:1173 msgid "inventory item roles" -msgstr "Rollen für Inventarartikel" +msgstr "Inventarartikel-Rolle" #: dcim/models/device_components.py:1230 dcim/models/devices.py:597 #: dcim/models/devices.py:1163 dcim/models/racks.py:114 @@ -4939,7 +4989,7 @@ msgstr "" #: dcim/models/device_components.py:1242 msgid "discovered" -msgstr "entdeckt" +msgstr "erkannt" #: dcim/models/device_components.py:1244 msgid "This item was automatically discovered" @@ -4947,11 +4997,11 @@ msgstr "Dieser Artikel wurde automatisch erkannt" #: dcim/models/device_components.py:1262 msgid "inventory item" -msgstr "Inventargegenstand" +msgstr "Inventarartikel" #: dcim/models/device_components.py:1263 msgid "inventory items" -msgstr "Artikel im Inventar" +msgstr "Inventarartikel" #: dcim/models/device_components.py:1274 msgid "Cannot assign self as parent." @@ -4964,8 +5014,8 @@ msgstr "Der Artikel im übergeordneten Inventar gehört nicht zum selben Gerät. #: dcim/models/device_components.py:1288 msgid "Cannot move an inventory item with dependent children" msgstr "" -"Ein Inventargegenstand mit unterhaltsberechtigten Kindern kann nicht bewegt " -"werden" +"Ein Inventargegenstand mit untergeordneten Inventargegenständen kann nicht " +"bewegt werden" #: dcim/models/device_components.py:1296 msgid "Cannot assign inventory item to component on another device" @@ -4987,33 +5037,33 @@ msgstr "Modell" #: dcim/models/devices.py:95 msgid "default platform" -msgstr "Standardplattform" +msgstr "Standard-Betriebssystem" #: dcim/models/devices.py:98 dcim/models/devices.py:386 msgid "part number" -msgstr "Teilnummer" +msgstr "Teilenummer" #: dcim/models/devices.py:101 dcim/models/devices.py:389 msgid "Discrete part number (optional)" -msgstr "Diskrete Artikelnummer (optional)" +msgstr "Diskrete Teilenummer (optional)" #: dcim/models/devices.py:107 dcim/models/racks.py:138 msgid "height (U)" -msgstr "Höhe (U)" +msgstr "Höhe (HE)" #: dcim/models/devices.py:111 msgid "exclude from utilization" -msgstr "von der Nutzung ausschließen" +msgstr "von der Auslastung ausschließen" #: dcim/models/devices.py:112 msgid "Devices of this type are excluded when calculating rack utilization." msgstr "" -"Geräte dieses Typs sind bei der Berechnung der Rackauslastung " +"Geräte diesen Typs sind bei der Berechnung der Rackauslastung " "ausgeschlossen." #: dcim/models/devices.py:116 msgid "is full depth" -msgstr "ist in voller Tiefe" +msgstr "hat volle Tiefe" #: dcim/models/devices.py:117 msgid "Device consumes both front and rear rack faces." @@ -5029,9 +5079,9 @@ msgid "" "Parent devices house child devices in device bays. Leave blank if this " "device type is neither a parent nor a child." msgstr "" -"Bei übergeordneten Geräten sind untergeordnete Geräte in Geräteschächten " +"Bei übergeordneten Geräten sind untergeordnete Geräte in Geräteeinsätzen " "untergebracht. Lassen Sie das Feld leer, wenn es sich bei diesem Gerätetyp " -"weder um ein Elternteil noch um ein Kind handelt." +"weder um ein übergeordnetes noch um ein untergeordnetes handelt." #: dcim/models/devices.py:128 dcim/models/devices.py:649 msgid "airflow" @@ -5047,7 +5097,8 @@ msgstr "Gerätetypen" #: dcim/models/devices.py:290 msgid "U height must be in increments of 0.5 rack units." -msgstr "Die U-Höhe muss in Schritten von 0,5 Rackeinheiten angegeben werden." +msgstr "" +"Die HE-Höhe muss in Schritten von 0,5 Höheneinheiten (HE) angegeben werden." #: dcim/models/devices.py:307 #, python-brace-format @@ -5078,7 +5129,7 @@ msgstr "" #: dcim/models/devices.py:337 msgid "Child device types must be 0U." -msgstr "Die Gerätetypen für Kinder müssen 0U sein." +msgstr "Untergeordnete Gerätetypen müssen 0 HE sein." #: dcim/models/devices.py:405 msgid "module type" @@ -5103,16 +5154,16 @@ msgstr "Geräterollen" #: dcim/models/devices.py:505 msgid "Optionally limit this platform to devices of a certain manufacturer" msgstr "" -"Beschränken Sie diese Plattform optional auf Geräte eines bestimmten " +"Beschränken Sie dieses Betriebssystem optional auf Geräte eines bestimmten " "Herstellers" #: dcim/models/devices.py:517 msgid "platform" -msgstr "Bahnsteig" +msgstr "Betriebssystem" #: dcim/models/devices.py:518 msgid "platforms" -msgstr "Plattformen" +msgstr "Betriebssysteme" #: dcim/models/devices.py:566 msgid "The function this device serves" @@ -5120,34 +5171,34 @@ msgstr "Die Funktion, die dieses Gerät erfüllt" #: dcim/models/devices.py:598 msgid "Chassis serial number, assigned by the manufacturer" -msgstr "Fahrgestell-Seriennummer, vom Hersteller vergeben" +msgstr "vom Hersteller vergebene Gehäuse-Seriennummer" #: dcim/models/devices.py:606 dcim/models/devices.py:1171 msgid "A unique tag used to identify this device" msgstr "" -"Ein eindeutiges Tag, das zur Identifizierung dieses Geräts verwendet wird" +"Ein eindeutiger Wert, der zur Identifizierung dieses Geräts verwendet wird" #: dcim/models/devices.py:633 msgid "position (U)" -msgstr "Stellung (U)" +msgstr "Position (HE)" #: dcim/models/devices.py:640 msgid "rack face" -msgstr "Gestellgesicht" +msgstr "Rackseite" #: dcim/models/devices.py:660 dcim/models/devices.py:1380 #: virtualization/models/virtualmachines.py:100 msgid "primary IPv4" -msgstr "primäres IPv4" +msgstr "primäre IPv4-Adresse" #: dcim/models/devices.py:668 dcim/models/devices.py:1388 #: virtualization/models/virtualmachines.py:108 msgid "primary IPv6" -msgstr "primäres IPv6" +msgstr "primäre IPv6-Adresse" #: dcim/models/devices.py:676 msgid "out-of-band IP" -msgstr "Out-of-Band-IP" +msgstr "Out-of-Band-IP-Adresse" #: dcim/models/devices.py:693 msgid "VC position" @@ -5180,7 +5231,7 @@ msgstr "Längengrad" #: dcim/models/devices.py:787 msgid "Device name must be unique per site." -msgstr "Der Gerätename muss pro Standort eindeutig sein." +msgstr "Der Name des Geräts muss pro Standort eindeutig sein." #: dcim/models/devices.py:798 ipam/models/services.py:74 msgid "device" @@ -5193,23 +5244,22 @@ msgstr "Geräte" #: dcim/models/devices.py:825 #, python-brace-format msgid "Rack {rack} does not belong to site {site}." -msgstr "Gestell {rack} gehört nicht zur Seite {site}." +msgstr "Rack {rack} gehört nicht zum Standort {site}." #: dcim/models/devices.py:830 #, python-brace-format msgid "Location {location} does not belong to site {site}." -msgstr "Standort {location} gehört nicht zur Seite {site}." +msgstr "Gebäude/Raum {location} gehört nicht zum Standort {site}." #: dcim/models/devices.py:836 #, python-brace-format msgid "Rack {rack} does not belong to location {location}." -msgstr "Gestell {rack} gehört nicht zum Standort {location}." +msgstr "Rack {rack} gehört nicht zum Standort {location}." #: dcim/models/devices.py:843 msgid "Cannot select a rack face without assigning a rack." msgstr "" -"Es ist nicht möglich, eine Rackfläche auszuwählen, ohne ein Gestell " -"zuzuweisen." +"Es ist nicht möglich, eine Rackseite auszuwählen, ohne ein Rack zuzuweisen." #: dcim/models/devices.py:847 msgid "Cannot select a rack position without assigning a rack." @@ -5219,26 +5269,27 @@ msgstr "" #: dcim/models/devices.py:853 msgid "Position must be in increments of 0.5 rack units." -msgstr "Die Position muss in Schritten von 0,5 Rackeinheiten erfolgen." +msgstr "Die Position muss in Schritten von 0,5 Höheneinheiten erfolgen." #: dcim/models/devices.py:857 msgid "Must specify rack face when defining rack position." msgstr "" -"Bei der Definition der Regalposition muss die Rackfläche angegeben werden." +"Bei der Definition der Rackposition muss die Rackseite angegeben werden." #: dcim/models/devices.py:865 #, python-brace-format msgid "" "A 0U device type ({device_type}) cannot be assigned to a rack position." msgstr "" -"Ein 0U-Gerätetyp ({device_type}) kann keiner Rackposition zugewiesen werden." +"Ein 0 HE-Gerätetyp ({device_type}) kann keiner Höheneinheit zugewiesen " +"werden." #: dcim/models/devices.py:876 msgid "" "Child device types cannot be assigned to a rack face. This is an attribute " "of the parent device." msgstr "" -"Untergeordnete Gerätetypen können keiner Rackfläche zugewiesen werden. Dies " +"Untergeordnete Gerätetypen können keiner Rackseite zugewiesen werden. Dies " "ist ein Attribut des übergeordneten Geräts." #: dcim/models/devices.py:883 @@ -5255,8 +5306,8 @@ msgid "" "U{position} is already occupied or does not have sufficient space to " "accommodate this device type: {device_type} ({u_height}U)" msgstr "" -"U{position} ist bereits belegt oder verfügt nicht über ausreichend " -"Speicherplatz für diesen Gerätetyp: {device_type} ({u_height}U)" +"HE{position} ist bereits belegt oder verfügt nicht über ausreichend " +"Speicherplatz für diesen Gerätetyp: {device_type} ({u_height}HE)" #: dcim/models/devices.py:912 #, python-brace-format @@ -5279,18 +5330,18 @@ msgid "" "The assigned platform is limited to {platform_manufacturer} device types, " "but this device's type belongs to {devicetype_manufacturer}." msgstr "" -"Die zugewiesene Plattform ist beschränkt auf {platform_manufacturer} " +"Das zugewiesene Betriebssystem ist beschränkt auf {platform_manufacturer} " "Gerätetypen, aber der Typ dieses Geräts gehört zu {devicetype_manufacturer}." #: dcim/models/devices.py:965 #, python-brace-format msgid "The assigned cluster belongs to a different site ({site})" -msgstr "Der zugewiesene Cluster gehört zu einer anderen Site ({site})" +msgstr "Der zugewiesene Cluster gehört zu einem anderen Standort ({site})" #: dcim/models/devices.py:973 msgid "A device assigned to a virtual chassis must have its position defined." msgstr "" -"Die Position eines Geräts, das einem virtuellen Chassis zugewiesen ist, muss" +"Die Position eines Geräts, das einem virtuellen Gehäuse zugewiesen ist, muss" " definiert sein." #: dcim/models/devices.py:1178 @@ -5360,7 +5411,7 @@ msgstr "virtuelle Gerätekontexte" #: dcim/models/devices.py:1447 #, python-brace-format msgid "{ip} is not an IPv{family} address." -msgstr "{ip} ist kein IPV{family} Adresse." +msgstr "{ip} ist keine IPv{family}-Adresse." #: dcim/models/devices.py:1453 msgid "Primary IP address must belong to an interface on the assigned device." @@ -5370,7 +5421,7 @@ msgstr "" #: dcim/models/mixins.py:15 extras/models/configs.py:41 #: extras/models/models.py:341 extras/models/models.py:550 -#: extras/models/search.py:48 ipam/models/ip.py:193 +#: extras/models/search.py:48 ipam/models/ip.py:194 msgid "weight" msgstr "Gewicht" @@ -5380,7 +5431,8 @@ msgstr "Gewichtseinheit" #: dcim/models/mixins.py:51 msgid "Must specify a unit when setting a weight" -msgstr "Bei der Gewichtserstellung muss eine Einheit angegeben werden" +msgstr "" +"Wenn ein Gewicht eingegeben wird, muss auch eine Einheit eingegeben werden." #: dcim/models/power.py:55 msgid "power panel" @@ -5395,8 +5447,8 @@ msgstr "Schalttafeln" msgid "" "Location {location} ({location_site}) is in a different site than {site}" msgstr "" -"Standort {location} ({location_site}) befindet sich auf einer anderen Seite " -"als {site}" +"Standort {location} ({location_site}) befindet sich auf einem anderen " +"Standort als {site}" #: dcim/models/power.py:108 msgid "supply" @@ -5420,7 +5472,7 @@ msgstr "maximale Auslastung" #: dcim/models/power.py:133 msgid "Maximum permissible draw (percentage)" -msgstr "Maximal zulässiges Unentschieden (in Prozent)" +msgstr "Maximal zulässige Auslastung (in Prozent)" #: dcim/models/power.py:136 msgid "available power" @@ -5449,11 +5501,11 @@ msgstr "Die Spannung darf für die Wechselstromversorgung nicht negativ sein" #: dcim/models/racks.py:50 msgid "rack role" -msgstr "Rolle im Rack" +msgstr "Rolle des Rack" #: dcim/models/racks.py:51 msgid "rack roles" -msgstr "Rollen einspielen" +msgstr "Rackrollen" #: dcim/models/racks.py:75 msgid "facility ID" @@ -5472,11 +5524,11 @@ msgstr "Funktionelle Rolle" #: dcim/models/racks.py:122 msgid "A unique tag used to identify this rack" msgstr "" -"Ein eindeutiges Etikett, das zur Identifizierung dieses Racks verwendet wird" +"Ein eindeutiger Wert, das zur Identifizierung dieses Racks verwendet wird" #: dcim/models/racks.py:133 msgid "width" -msgstr "Weite" +msgstr "Breite" #: dcim/models/racks.py:134 msgid "Rail-to-rail width" @@ -5484,23 +5536,23 @@ msgstr "Breite von Schiene zu Schiene" #: dcim/models/racks.py:140 msgid "Height in rack units" -msgstr "Höhe in Rackeinheiten" +msgstr "Höhe in Höheneinheiten (HE)" #: dcim/models/racks.py:144 msgid "starting unit" -msgstr "Starteinheit" +msgstr "Start HE" #: dcim/models/racks.py:146 msgid "Starting unit for rack" -msgstr "Starteinheit für Rack" +msgstr "Start HE für Rack" #: dcim/models/racks.py:150 msgid "descending units" -msgstr "absteigende Einheiten" +msgstr "absteigende Höheneinheiten" #: dcim/models/racks.py:151 msgid "Units are numbered top-to-bottom" -msgstr "Die Einheiten sind von oben nach unten nummeriert" +msgstr "Die Höheneinheiten sind von oben nach unten nummeriert" #: dcim/models/racks.py:154 msgid "outer width" @@ -5508,7 +5560,7 @@ msgstr "äußere Breite" #: dcim/models/racks.py:157 msgid "Outer dimension of rack (width)" -msgstr "Außenmaß des Racks (Breite)" +msgstr "Außenabmessungen des Racks (Breite)" #: dcim/models/racks.py:160 msgid "outer depth" @@ -5520,7 +5572,7 @@ msgstr "Außenabmessung des Racks (Tiefe)" #: dcim/models/racks.py:166 msgid "outer unit" -msgstr "äußere Einheit" +msgstr "Maßeinheit" #: dcim/models/racks.py:172 msgid "max weight" @@ -5544,11 +5596,11 @@ msgstr "" #: dcim/models/racks.py:221 msgid "rack" -msgstr "Gestell" +msgstr "Rack" #: dcim/models/racks.py:222 msgid "racks" -msgstr "Gestelle" +msgstr "Racks" #: dcim/models/racks.py:237 #, python-brace-format @@ -5595,16 +5647,16 @@ msgstr "Einheiten" #: dcim/models/racks.py:549 msgid "rack reservation" -msgstr "Regalreservierung" +msgstr "HE-Reservierung" #: dcim/models/racks.py:550 msgid "rack reservations" -msgstr "Reservierungen verfolgen" +msgstr "HE-Reservierungen" #: dcim/models/racks.py:567 #, python-brace-format msgid "Invalid unit(s) for {height}U rack: {unit_list}" -msgstr "Ungültige Einheit (en) für {height}U-Gestell: {unit_list}" +msgstr "Ungültige Einheit(en) für {height}HE-Rack: {unit_list}" #: dcim/models/racks.py:580 #, python-brace-format @@ -5618,7 +5670,7 @@ msgstr "" #: dcim/models/sites.py:59 msgid "A top-level region with this slug already exists." -msgstr "Eine Top-Level-Region mit dieser Schnecke existiert bereits." +msgstr "Eine Top-Level-Region mit dieser URL-Slug existiert bereits." #: dcim/models/sites.py:62 msgid "region" @@ -5631,25 +5683,26 @@ msgstr "Regionen" #: dcim/models/sites.py:102 msgid "A top-level site group with this name already exists." msgstr "" -"Eine Websitegruppe auf oberster Ebene mit diesem Namen ist bereits " +"Eine Standortgruppe auf oberster Ebene mit diesem Namen ist bereits " "vorhanden." #: dcim/models/sites.py:112 msgid "A top-level site group with this slug already exists." msgstr "" -"Eine Seitengruppe auf oberster Ebene mit diesem Slug existiert bereits." +"Eine Standortgruppe auf oberster Ebene mit diesem URL-Slug existiert " +"bereits." #: dcim/models/sites.py:115 msgid "site group" -msgstr "Sitegruppe" +msgstr "Standortgruppe" #: dcim/models/sites.py:116 msgid "site groups" -msgstr "Websitegruppen" +msgstr "Standortgruppen" #: dcim/models/sites.py:141 msgid "Full name of the site" -msgstr "Vollständiger Name der Site" +msgstr "Vollständiger Name des Standorts" #: dcim/models/sites.py:181 dcim/models/sites.py:279 msgid "facility" @@ -5677,21 +5730,23 @@ msgstr "Falls anders als die physische Adresse" #: dcim/models/sites.py:238 msgid "site" -msgstr "Ort" +msgstr "Standort" #: dcim/models/sites.py:239 msgid "sites" -msgstr "Websites" +msgstr "Standorte" #: dcim/models/sites.py:309 msgid "A location with this name already exists within the specified site." msgstr "" -"Ein Standort mit diesem Namen ist bereits in der angegebenen Site vorhanden." +"Ein Standort mit diesem Namen ist bereits in dem angegebenen Standort " +"vorhanden." #: dcim/models/sites.py:319 msgid "A location with this slug already exists within the specified site." msgstr "" -"Ein Standort mit diesem Slug existiert bereits auf der angegebenen Site." +"Ein Standort mit diesem URL-Slug existiert bereits auf dem angegebenen " +"Standort." #: dcim/models/sites.py:322 msgid "location" @@ -5705,16 +5760,16 @@ msgstr "Standorte" #, python-brace-format msgid "Parent location ({parent}) must belong to the same site ({site})." msgstr "" -"Standort des Elternteils ({parent}) muss zur gleichen Seite gehören " +"Übergeordneter Standort ({parent}) muss zum gleichen Standort gehören " "({site})." #: dcim/tables/cables.py:54 msgid "Termination A" -msgstr "Kündigung A" +msgstr "Abschlusspunkt A" #: dcim/tables/cables.py:59 msgid "Termination B" -msgstr "Kündigung B" +msgstr "Abschlusspunkt B" #: dcim/tables/cables.py:65 wireless/tables/wirelesslink.py:22 msgid "Device A" @@ -5734,11 +5789,11 @@ msgstr "Standort B" #: dcim/tables/cables.py:89 msgid "Rack A" -msgstr "Gestell A" +msgstr "Rack A" #: dcim/tables/cables.py:95 msgid "Rack B" -msgstr "Gestell B" +msgstr "Rack B" #: dcim/tables/cables.py:101 msgid "Site A" @@ -5783,7 +5838,7 @@ msgstr "Config-Vorlage" #: dcim/tables/devices.py:155 templates/dcim/sitegroup.html:26 msgid "Site Group" -msgstr "Site-Gruppe" +msgstr "Standort-Gruppe" #: dcim/tables/devices.py:192 dcim/tables/devices.py:1051 #: ipam/forms/bulk_import.py:511 ipam/forms/model_forms.py:304 @@ -5826,7 +5881,7 @@ msgstr "Konsolenanschlüsse" #: dcim/tables/devices.py:242 msgid "Console server ports" -msgstr "Anschlüsse für Konsolenserver" +msgstr "Konsolenserver-Anschlüsse" #: dcim/tables/devices.py:245 msgid "Power ports" @@ -5834,7 +5889,7 @@ msgstr "Stromanschlüsse" #: dcim/tables/devices.py:248 msgid "Power outlets" -msgstr "Steckdosen" +msgstr "Stromabgänge" #: dcim/tables/devices.py:251 dcim/tables/devices.py:1064 #: dcim/tables/devicetypes.py:125 dcim/views.py:1006 dcim/views.py:1245 @@ -5853,47 +5908,56 @@ msgstr "Schnittstellen" #: dcim/tables/devices.py:254 msgid "Front ports" -msgstr "Anschlüsse an der Vorderseite" +msgstr "Frontanschlüsse" #: dcim/tables/devices.py:260 msgid "Device bays" -msgstr "Geräteschächte" +msgstr "Geräteeinsätze" #: dcim/tables/devices.py:263 msgid "Module bays" -msgstr "Modulschächte" +msgstr "Moduleinsätze" #: dcim/tables/devices.py:266 msgid "Inventory items" -msgstr "Artikel im Inventar" +msgstr "Inventarartikel" #: dcim/tables/devices.py:305 dcim/tables/modules.py:56 #: templates/dcim/modulebay.html:17 msgid "Module Bay" -msgstr "Modulschacht" +msgstr "Moduleinsatz" -#: dcim/tables/devices.py:326 +#: dcim/tables/devices.py:318 dcim/tables/devicetypes.py:48 +#: dcim/tables/devicetypes.py:140 dcim/views.py:1081 dcim/views.py:2024 +#: netbox/navigation/menu.py:90 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 +msgid "Inventory Items" +msgstr "Inventarartikel" + +#: dcim/tables/devices.py:330 msgid "Cable Color" msgstr "Farbe des Kabels" -#: dcim/tables/devices.py:332 +#: dcim/tables/devices.py:336 msgid "Link Peers" -msgstr "Gleichaltrige verknüpfen" +msgstr "Verbindungsenden" -#: dcim/tables/devices.py:335 +#: dcim/tables/devices.py:339 msgid "Mark Connected" msgstr "Als verbunden markieren" -#: dcim/tables/devices.py:451 +#: dcim/tables/devices.py:455 msgid "Maximum draw (W)" msgstr "Maximaler Stromverbrauch (W)" -#: dcim/tables/devices.py:454 +#: dcim/tables/devices.py:458 msgid "Allocated draw (W)" -msgstr "Zugewiesenes Unentschieden (W)" +msgstr "Zugewiesener Stromverbrauch (W)" -#: dcim/tables/devices.py:554 ipam/forms/model_forms.py:738 -#: ipam/tables/fhrp.py:28 ipam/views.py:596 ipam/views.py:690 +#: dcim/tables/devices.py:558 ipam/forms/model_forms.py:747 +#: ipam/tables/fhrp.py:28 ipam/views.py:602 ipam/views.py:701 #: netbox/navigation/menu.py:145 netbox/navigation/menu.py:147 #: templates/dcim/interface.html:339 templates/ipam/ipaddress_bulk_add.html:15 #: templates/ipam/service.html:40 templates/virtualization/vminterface.html:85 @@ -5901,12 +5965,12 @@ msgstr "Zugewiesenes Unentschieden (W)" msgid "IP Addresses" msgstr "IP-Adressen" -#: dcim/tables/devices.py:560 netbox/navigation/menu.py:189 +#: dcim/tables/devices.py:564 netbox/navigation/menu.py:189 #: templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "FHRP-Gruppen" -#: dcim/tables/devices.py:572 templates/dcim/interface.html:89 +#: 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 @@ -5915,31 +5979,22 @@ msgstr "FHRP-Gruppen" msgid "Tunnel" msgstr "Tunnel" -#: dcim/tables/devices.py:597 dcim/tables/devicetypes.py:224 +#: dcim/tables/devices.py:601 dcim/tables/devicetypes.py:224 #: templates/dcim/interface.html:65 msgid "Management Only" -msgstr "Nur Verwaltung" +msgstr "Nur zur Verwaltung" -#: dcim/tables/devices.py:615 +#: dcim/tables/devices.py:619 msgid "VDCs" msgstr "VDCs" -#: dcim/tables/devices.py:623 dcim/tables/devicetypes.py:48 -#: dcim/tables/devicetypes.py:140 dcim/views.py:1081 dcim/views.py:2024 -#: netbox/navigation/menu.py:90 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 -msgid "Inventory Items" -msgstr "Artikel im Inventar" - #: dcim/tables/devices.py:870 templates/dcim/modulebay.html:49 msgid "Installed Module" msgstr "Installiertes Modul" #: dcim/tables/devices.py:873 msgid "Module Serial" -msgstr "Modul Seriell" +msgstr "Seriennummer des Moduls" #: dcim/tables/devices.py:877 msgid "Module Asset Tag" @@ -5975,7 +6030,7 @@ msgstr "Plattformen" #: dcim/tables/devicetypes.py:85 templates/dcim/devicetype.html:29 msgid "Default Platform" -msgstr "Standardplattform" +msgstr "Standard-Betriebssystem" #: dcim/tables/devicetypes.py:89 templates/dcim/devicetype.html:45 msgid "Full Depth" @@ -5983,7 +6038,7 @@ msgstr "Volle Tiefe" #: dcim/tables/devicetypes.py:98 msgid "U Height" -msgstr "U-Höhe" +msgstr "Höhe in HE" #: dcim/tables/devicetypes.py:110 dcim/tables/modules.py:26 msgid "Instances" @@ -6003,7 +6058,7 @@ msgstr "Konsolenanschlüsse" #: templates/dcim/devicetype/base.html:25 templates/dcim/module.html:25 #: templates/dcim/moduletype/base.html:25 msgid "Console Server Ports" -msgstr "Anschlüsse für Konsolenserver" +msgstr "Konsolenserver-Anschlüsse" #: dcim/tables/devicetypes.py:119 dcim/views.py:976 dcim/views.py:1215 #: dcim/views.py:1901 netbox/navigation/menu.py:86 @@ -6026,7 +6081,7 @@ msgstr "Steckdosen" #: templates/dcim/device/base.html:40 templates/dcim/devicetype/base.html:37 #: templates/dcim/module.html:37 templates/dcim/moduletype/base.html:37 msgid "Front Ports" -msgstr "Anschlüsse an der Vorderseite" +msgstr "Frontanschlüsse" #: dcim/tables/devicetypes.py:131 dcim/views.py:1036 dcim/views.py:1275 #: dcim/views.py:1967 netbox/navigation/menu.py:83 @@ -6034,21 +6089,21 @@ msgstr "Anschlüsse an der Vorderseite" #: templates/dcim/devicetype/base.html:40 templates/dcim/module.html:40 #: templates/dcim/moduletype/base.html:40 msgid "Rear Ports" -msgstr "Anschlüsse auf der Rückseite" +msgstr "Rückanschlüsse" #: dcim/tables/devicetypes.py:134 dcim/views.py:1066 dcim/views.py:2005 #: netbox/navigation/menu.py:89 templates/dcim/device/base.html:49 #: templates/dcim/device_list.html:57 templates/dcim/devicetype/base.html:46 msgid "Device Bays" -msgstr "Geräteschächte" +msgstr "Geräteeinsätze" #: dcim/tables/devicetypes.py:137 dcim/views.py:1051 dcim/views.py:1986 #: netbox/navigation/menu.py:88 templates/dcim/device/base.html:46 #: templates/dcim/device_list.html:64 templates/dcim/devicetype/base.html:43 msgid "Module Bays" -msgstr "Modulschächte" +msgstr "Moduleinsätze" -#: dcim/tables/power.py:36 netbox/navigation/menu.py:281 +#: dcim/tables/power.py:36 netbox/navigation/menu.py:282 #: templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "Stromversorgungen" @@ -6064,7 +6119,7 @@ msgstr "Verfügbare Leistung (VA)" #: dcim/tables/racks.py:29 dcim/tables/sites.py:138 #: netbox/navigation/menu.py:24 netbox/navigation/menu.py:26 msgid "Racks" -msgstr "Gestelle" +msgstr "Racks" #: dcim/tables/racks.py:73 templates/dcim/device.html:310 #: templates/dcim/rack.html:90 @@ -6073,7 +6128,7 @@ msgstr "Höhe" #: dcim/tables/racks.py:85 msgid "Space" -msgstr "Weltall" +msgstr "Platz" #: dcim/tables/racks.py:96 templates/dcim/rack.html:100 msgid "Outer Width" @@ -6093,7 +6148,7 @@ msgstr "Maximales Gewicht" #: ipam/tables/asn.py:66 netbox/navigation/menu.py:15 #: netbox/navigation/menu.py:17 msgid "Sites" -msgstr "Websites" +msgstr "Standorte" #: dcim/tests/test_api.py:50 msgid "Test case must set peer_termination_type" @@ -6102,7 +6157,7 @@ msgstr "Der Testfall muss peer_termination_type setzen" #: dcim/views.py:137 #, python-brace-format msgid "Disconnected {count} {type}" -msgstr "Verbindung unterbrochen {count} {type}" +msgstr "Verbindung von {count} {type} unterbrochen" #: dcim/views.py:698 netbox/navigation/menu.py:28 msgid "Reservations" @@ -6111,7 +6166,7 @@ msgstr "Reservierungen" #: dcim/views.py:716 templates/dcim/location.html:90 #: templates/dcim/site.html:139 msgid "Non-Racked Devices" -msgstr "Geräte ohne Rack" +msgstr "sich nicht in einem Rack befindliche Geräte" #: dcim/views.py:2037 extras/forms/model_forms.py:453 #: templates/extras/configcontext.html:10 @@ -6131,7 +6186,7 @@ msgstr "Virtuelle Maschinen" #: dcim/views.py:2989 ipam/tables/ip.py:233 msgid "Children" -msgstr "Kinder" +msgstr "Untergeordnet" #: extras/api/customfields.py:88 #, python-brace-format @@ -6199,7 +6254,7 @@ msgstr "Deaktiviert" #: extras/choices.py:54 msgid "Loose" -msgstr "Locker" +msgstr "Lose" #: extras/choices.py:55 msgid "Exact" @@ -6228,7 +6283,7 @@ msgstr "Nein" #: extras/choices.py:108 templates/tenancy/contact.html:57 #: tenancy/forms/bulk_edit.py:118 wireless/forms/model_forms.py:162 msgid "Link" -msgstr "Verknüpfung" +msgstr "Link" #: extras/choices.py:122 msgid "Newest" @@ -6240,7 +6295,7 @@ msgstr "Älteste" #: extras/choices.py:139 templates/generic/object.html:61 msgid "Updated" -msgstr "aktualisiert" +msgstr "Aktualisiert" #: extras/choices.py:140 msgid "Deleted" @@ -6248,7 +6303,7 @@ msgstr "Gelöscht" #: extras/choices.py:157 extras/choices.py:181 msgid "Info" -msgstr "Informationen" +msgstr "Info" #: extras/choices.py:158 extras/choices.py:180 msgid "Success" @@ -6264,7 +6319,7 @@ msgstr "Gefahr" #: extras/choices.py:178 msgid "Debug" -msgstr "Debuggen" +msgstr "Debug" #: extras/choices.py:179 netbox/choices.py:104 msgid "Default" @@ -6272,7 +6327,7 @@ msgstr "Standard" #: extras/choices.py:183 msgid "Failure" -msgstr "Misserfolg" +msgstr "Fehlschlag" #: extras/choices.py:199 msgid "Hourly" @@ -6328,7 +6383,7 @@ msgstr "Blau" #: extras/choices.py:295 netbox/choices.py:56 netbox/choices.py:106 msgid "Indigo" -msgstr "Indigoblau" +msgstr "Indigo" #: extras/choices.py:296 netbox/choices.py:54 netbox/choices.py:107 msgid "Purple" @@ -6336,7 +6391,7 @@ msgstr "Purpur" #: extras/choices.py:297 netbox/choices.py:51 netbox/choices.py:108 msgid "Pink" -msgstr "Rosa" +msgstr "Pink" #: extras/choices.py:298 netbox/choices.py:50 netbox/choices.py:109 msgid "Red" @@ -6348,7 +6403,7 @@ msgstr "Orange" #: extras/choices.py:300 netbox/choices.py:66 netbox/choices.py:111 msgid "Yellow" -msgstr "gelb" +msgstr "Gelb" #: extras/choices.py:301 netbox/choices.py:63 netbox/choices.py:112 msgid "Green" @@ -6356,7 +6411,7 @@ msgstr "Grün" #: extras/choices.py:302 netbox/choices.py:60 netbox/choices.py:113 msgid "Teal" -msgstr "Blaugrün" +msgstr "Türkis" #: extras/choices.py:303 netbox/choices.py:59 netbox/choices.py:114 msgid "Cyan" @@ -6382,13 +6437,13 @@ msgstr "Webhook" #: extras/choices.py:321 extras/forms/model_forms.py:312 #: templates/extras/script/base.html:29 msgid "Script" -msgstr "Drehbuch" +msgstr "Skript" #: extras/conditions.py:54 #, python-brace-format msgid "Unknown operator: {op}. Must be one of: {operators}" msgstr "" -"Unbekannter Betreiber: {op}. Muss einer von den folgenden sein: {operators}" +"Unbekannter Operator: {op}. Muss einer von den folgenden sein: {operators}" #: extras/conditions.py:58 #, python-brace-format @@ -6403,19 +6458,18 @@ msgstr "Ungültiger Typ für {op} Bedienung: {value}" #: extras/conditions.py:137 #, python-brace-format msgid "Ruleset must be a dictionary, not {ruleset}." -msgstr "Der Regelsatz muss ein Wörterbuch sein, nicht {ruleset}." +msgstr "Der Regelsatz muss ein Dictionary sein, nicht {ruleset}." #: extras/conditions.py:139 #, python-brace-format msgid "Ruleset must have exactly one logical operator (found {ruleset})" msgstr "" -"Der Regelsatz muss genau einen logischen Operator haben (gefunden) " -"{ruleset})" +"Der Regelsatz muss genau einen logischen Operator haben ({ruleset} gefunden)" #: extras/conditions.py:145 #, python-brace-format msgid "Invalid logic type: {logic} (must be '{op_and}' or '{op_or}')" -msgstr "Ungültiger Logiktyp: {logic} (muss 'sein{op_and}'oder'{op_or}')" +msgstr "Ungültiger Logiktyp: {logic} (muss '{op_and}' oder '{op_or}' sein)" #: extras/dashboard/forms.py:38 msgid "Widget type" @@ -6497,9 +6551,7 @@ msgstr "Die maximale Anzahl der anzuzeigenden Objekte" #: extras/dashboard/widgets.py:305 msgid "How long to stored the cached content (in seconds)" -msgstr "" -"Wie lange soll der zwischengespeicherte Inhalt gespeichert werden (in " -"Sekunden)" +msgstr "Wie lange soll der Inhalt zwischengespeichert werden (in Sekunden)" #: extras/dashboard/widgets.py:357 templates/account/base.html:10 #: templates/account/bookmarks.html:7 templates/inc/user_menu.html:30 @@ -6508,7 +6560,7 @@ msgstr "Lesezeichen" #: extras/dashboard/widgets.py:361 msgid "Show your personal bookmarks" -msgstr "Zeige deine persönlichen Bookmarks" +msgstr "Zeige persönliche Lesezeichen an" #: extras/events.py:128 #, python-brace-format @@ -6526,7 +6578,7 @@ msgstr "Skriptmodul (ID)" #: extras/filtersets.py:249 extras/filtersets.py:589 extras/filtersets.py:621 msgid "Data file (ID)" -msgstr "Datendatei (ID)" +msgstr "Datei (ID)" #: extras/filtersets.py:526 virtualization/forms/filtersets.py:118 msgid "Cluster type" @@ -6535,27 +6587,27 @@ msgstr "Cluster-Typ" #: extras/filtersets.py:532 virtualization/filtersets.py:95 #: virtualization/filtersets.py:147 msgid "Cluster type (slug)" -msgstr "Clustertyp (Schnecke)" +msgstr "Cluster-Typ (URL-Slug)" #: extras/filtersets.py:537 ipam/forms/bulk_edit.py:476 -#: ipam/forms/filtersets.py:457 ipam/forms/model_forms.py:615 +#: ipam/forms/filtersets.py:464 ipam/forms/model_forms.py:624 #: virtualization/forms/filtersets.py:112 msgid "Cluster group" msgstr "Cluster-Gruppe" #: extras/filtersets.py:543 virtualization/filtersets.py:136 msgid "Cluster group (slug)" -msgstr "Clustergruppe (Schnecke)" +msgstr "Cluster-Gruppe (URL-Slug)" #: extras/filtersets.py:553 tenancy/forms/forms.py:16 #: tenancy/forms/forms.py:39 msgid "Tenant group" -msgstr "Mietergruppe" +msgstr "Mandantengruppe" #: extras/filtersets.py:559 tenancy/filtersets.py:189 #: tenancy/filtersets.py:209 msgid "Tenant group (slug)" -msgstr "Mietergruppe (Slug)" +msgstr "Mandantengruppe (URL-Slug)" #: extras/filtersets.py:575 extras/forms/model_forms.py:371 #: templates/extras/tag.html:11 @@ -6564,7 +6616,7 @@ msgstr "Schlagwort" #: extras/filtersets.py:581 msgid "Tag (slug)" -msgstr "Schlagwort (Schnecke)" +msgstr "Schlagwort (URL-Slug)" #: extras/filtersets.py:645 extras/forms/filtersets.py:438 msgid "Has local config context data" @@ -6572,7 +6624,7 @@ msgstr "Hat lokale Konfigurationskontextdaten" #: extras/filtersets.py:670 msgid "User name" -msgstr "Nutzername" +msgstr "Benutzername" #: extras/forms/bulk_edit.py:32 extras/forms/filtersets.py:57 msgid "Group name" @@ -6613,7 +6665,7 @@ msgstr "MIME-Typ" #: extras/forms/bulk_edit.py:134 extras/forms/filtersets.py:168 msgid "File extension" -msgstr "Dateierweiterung" +msgstr "Dateiendung" #: extras/forms/bulk_edit.py:139 extras/forms/filtersets.py:172 msgid "As attachment" @@ -6632,15 +6684,15 @@ msgstr "HTTP-Methode" #: extras/forms/bulk_edit.py:194 extras/forms/filtersets.py:237 #: templates/extras/webhook.html:30 msgid "Payload URL" -msgstr "Nutzlast-URL" +msgstr "Payload-URL" #: extras/forms/bulk_edit.py:199 extras/models/models.py:242 msgid "SSL verification" -msgstr "SSL-Überprüfung" +msgstr "SSL-Verifizierung" #: extras/forms/bulk_edit.py:202 templates/extras/webhook.html:38 msgid "Secret" -msgstr "Geheim" +msgstr "Secret" #: extras/forms/bulk_edit.py:207 msgid "CA file path" @@ -6761,7 +6813,7 @@ msgstr "Webhook {name} nicht gefunden" #: extras/forms/bulk_import.py:220 #, python-brace-format msgid "Script {name} not found" -msgstr "Drehbuch {name} nicht gefunden" +msgstr "Skript {name} nicht gefunden" #: extras/forms/bulk_import.py:239 msgid "Assigned object type" @@ -6777,12 +6829,12 @@ msgstr "Verwandter Objekttyp" #: extras/forms/filtersets.py:54 msgid "Field type" -msgstr "Typ des Feldes" +msgstr "Feld-Typ" #: extras/forms/filtersets.py:98 extras/tables/tables.py:70 #: templates/generic/bulk_import.html:154 msgid "Choices" -msgstr "Wahlmöglichkeiten" +msgstr "Auswahlmöglichkeiten" #: extras/forms/filtersets.py:142 extras/forms/filtersets.py:328 #: extras/forms/filtersets.py:417 extras/forms/model_forms.py:448 @@ -6794,7 +6846,7 @@ msgstr "Daten" #: extras/forms/filtersets.py:427 netbox/choices.py:133 #: utilities/forms/bulk_import.py:26 msgid "Data file" -msgstr "Datendatei" +msgstr "Datei" #: extras/forms/filtersets.py:161 msgid "Content types" @@ -6811,11 +6863,11 @@ msgstr "Ereignisse" #: extras/forms/filtersets.py:265 msgid "Action type" -msgstr "Art der Aktion" +msgstr "Typ der Aktion" #: extras/forms/filtersets.py:279 msgid "Object creations" -msgstr "Kreationen von Objekten" +msgstr "Objekterstellungen" #: extras/forms/filtersets.py:286 msgid "Object updates" @@ -6823,11 +6875,11 @@ msgstr "Objektaktualisierungen" #: extras/forms/filtersets.py:293 msgid "Object deletions" -msgstr "Löschen von Objekten" +msgstr "Objektlöschungen" #: extras/forms/filtersets.py:300 msgid "Job starts" -msgstr "Der Job beginnt" +msgstr "Job beginnt" #: extras/forms/filtersets.py:307 extras/forms/model_forms.py:297 msgid "Job terminations" @@ -6848,7 +6900,7 @@ msgstr "Regionen" #: extras/forms/filtersets.py:355 extras/forms/model_forms.py:388 msgid "Site groups" -msgstr "Site-Gruppen" +msgstr "Standort-Gruppen" #: extras/forms/filtersets.py:365 extras/forms/model_forms.py:398 #: netbox/navigation/menu.py:20 templates/dcim/site.html:126 @@ -6857,7 +6909,7 @@ msgstr "Standorte" #: extras/forms/filtersets.py:370 extras/forms/model_forms.py:403 msgid "Device types" -msgstr "Typen von Geräten" +msgstr "Geräte-Typen" #: extras/forms/filtersets.py:375 extras/forms/model_forms.py:408 msgid "Roles" @@ -6880,7 +6932,7 @@ msgstr "Cluster" #: extras/forms/filtersets.py:400 extras/forms/model_forms.py:433 msgid "Tenant groups" -msgstr "Mietergruppen" +msgstr "Mandantengruppen" #: extras/forms/filtersets.py:454 extras/forms/filtersets.py:492 msgid "After" @@ -7031,7 +7083,7 @@ msgstr "Bedingungen" #: extras/forms/model_forms.py:293 msgid "Creations" -msgstr "Kreationen" +msgstr "Erstellungen" #: extras/forms/model_forms.py:294 msgid "Updates" @@ -7048,10 +7100,10 @@ msgstr "Auftragsausführungen" #: extras/forms/model_forms.py:438 netbox/navigation/menu.py:39 #: tenancy/tables/tenants.py:22 msgid "Tenants" -msgstr "Mieter" +msgstr "Mandanten" #: extras/forms/model_forms.py:458 ipam/forms/filtersets.py:142 -#: ipam/forms/filtersets.py:546 ipam/forms/model_forms.py:321 +#: ipam/forms/filtersets.py:553 ipam/forms/model_forms.py:321 #: 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:311 @@ -7072,7 +7124,7 @@ msgstr "Inhalt" #: extras/forms/reports.py:17 extras/forms/scripts.py:23 msgid "Schedule at" -msgstr "Terminplan unter" +msgstr "geplant am" #: extras/forms/reports.py:18 msgid "Schedule execution of report to a set time" @@ -7080,7 +7132,7 @@ msgstr "Planen Sie die Ausführung des Berichts auf eine festgelegte Zeit" #: extras/forms/reports.py:23 extras/forms/scripts.py:29 msgid "Recurs every" -msgstr "Wiederkehrt alle" +msgstr "Wiederholt sich alle" #: extras/forms/reports.py:27 msgid "Interval at which this report is re-run (in minutes)" @@ -7123,11 +7175,11 @@ msgstr "Zeit" #: extras/models/change_logging.py:37 msgid "user name" -msgstr "Nutzername" +msgstr "Benutzername" #: extras/models/change_logging.py:42 msgid "request ID" -msgstr "ID anfragen" +msgstr "Anfrage-ID" #: extras/models/change_logging.py:47 extras/models/staging.py:69 msgid "action" @@ -7178,11 +7230,11 @@ msgstr "" #: extras/models/configs.py:224 msgid "template code" -msgstr "Vorlagencode" +msgstr "Vorlagen-Code" #: extras/models/configs.py:225 msgid "Jinja2 template code." -msgstr "Jinja2-Vorlagencode." +msgstr "Jinja2-Vorlagen-Code." #: extras/models/configs.py:228 msgid "environment parameters" @@ -7231,7 +7283,8 @@ msgstr "Nur alphanumerische Zeichen und Unterstriche sind zulässig." #: extras/models/customfields.py:102 msgid "Double underscores are not permitted in custom field names." msgstr "" -"Doppelte Unterstriche sind in benutzerdefinierten Feldnamen nicht zulässig." +"Doppelte Unterstriche sind in den Namen benutzerdefinierter Felder nicht " +"zulässig." #: extras/models/customfields.py:113 msgid "" @@ -7265,7 +7318,7 @@ msgstr "" #: extras/models/customfields.py:133 msgid "search weight" -msgstr "Gewicht suchen" +msgstr "Gewichtung der Suche" #: extras/models/customfields.py:136 msgid "" @@ -7322,11 +7375,11 @@ msgstr "maximaler Wert" #: extras/models/customfields.py:170 msgid "Maximum allowed value (for numeric fields)" -msgstr "Maximal zulässiger Wert (für numerische Felder)" +msgstr "Zulässiger Maximalwert (für numerische Felder)" #: extras/models/customfields.py:176 msgid "validation regex" -msgstr "Regex für die Überprüfung" +msgstr "Regex für die Validierung" #: extras/models/customfields.py:178 #, python-brace-format @@ -7375,7 +7428,7 @@ msgstr "benutzerdefinierte Felder" #: extras/models/customfields.py:314 #, python-brace-format msgid "Invalid default value \"{value}\": {error}" -msgstr "Ungültiger Standardwert“{value}„: {error}" +msgstr "Ungültiger Standardwert \"{value}\": {error}" #: extras/models/customfields.py:321 msgid "A minimum value may be set only for numeric fields" @@ -7421,7 +7474,7 @@ msgstr "Falsch" #, python-brace-format msgid "Values must match this regex: {regex}" msgstr "" -"Die Werte müssen mit dieser Regex übereinstimmen: {regex}" +"Die Werte müssen mit diesem Regex übereinstimmen: {regex}" #: extras/models/customfields.py:616 msgid "Value must be a string." @@ -7430,7 +7483,7 @@ msgstr "Der Wert muss eine Zeichenfolge sein." #: extras/models/customfields.py:618 #, python-brace-format msgid "Value must match regex '{regex}'" -msgstr "Wert muss mit Regex 'übereinstimmen{regex}'" +msgstr "Wert muss mit Regex '{regex}' übereinstimmen" #: extras/models/customfields.py:623 msgid "Value must be an integer." @@ -7439,12 +7492,12 @@ msgstr "Der Wert muss eine Ganzzahl sein." #: extras/models/customfields.py:626 extras/models/customfields.py:641 #, python-brace-format msgid "Value must be at least {minimum}" -msgstr "Wert muss mindestens {minimum}" +msgstr "Wert muss mindestens {minimum} sein" #: extras/models/customfields.py:630 extras/models/customfields.py:645 #, python-brace-format msgid "Value must not exceed {maximum}" -msgstr "Wert darf nicht überschreiten {maximum}" +msgstr "Wert darf nicht {maximum} überschreiten" #: extras/models/customfields.py:638 msgid "Value must be a decimal." @@ -7456,12 +7509,12 @@ msgstr "Der Wert muss wahr oder falsch sein." #: extras/models/customfields.py:658 msgid "Date values must be in ISO 8601 format (YYYY-MM-DD)." -msgstr "Datumswerte müssen im ISO 8601-Format (YYYY-MM-DD) vorliegen." +msgstr "Datumswerte müssen im ISO 8601-Format (JJJJ-MM-DD) vorliegen." #: extras/models/customfields.py:667 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 (YYYY-MM-DD HH:MM:SS) " +"Datums- und Uhrzeitwerte müssen im ISO 8601-Format (JJJJ-MM-DD HH:MM:SS) " "vorliegen." #: extras/models/customfields.py:674 @@ -7515,7 +7568,7 @@ msgstr "Muss Basis- oder zusätzliche Auswahlmöglichkeiten definieren." #: extras/models/dashboard.py:19 msgid "layout" -msgstr "Einteilung" +msgstr "Layout" #: extras/models/dashboard.py:23 msgid "config" @@ -7601,7 +7654,7 @@ msgstr "Event-Regel" #: extras/models/models.py:137 msgid "event rules" -msgstr "Regeln für Veranstaltungen" +msgstr "Event-Regeln" #: extras/models/models.py:153 msgid "" @@ -7633,7 +7686,7 @@ msgstr "" #: extras/models/models.py:214 msgid "additional headers" -msgstr "zusätzliche Header" +msgstr "zusätzliche Kopfzeilen" #: extras/models/models.py:217 msgid "" @@ -7666,7 +7719,7 @@ msgstr "" #: extras/models/models.py:232 msgid "secret" -msgstr "Geheimnis" +msgstr "Geheimer Schlüssel" #: extras/models/models.py:236 msgid "" @@ -7800,7 +7853,7 @@ msgstr "" #: extras/models/models.py:526 msgid "The object type(s) to which this filter applies." -msgstr "Die Objekttyp (en), für die dieser Filter gilt." +msgstr "Der/Die Objekttyp (-en), für die dieser Filter gilt." #: extras/models/models.py:558 msgid "shared" @@ -7843,7 +7896,7 @@ msgstr "Bildanhänge können diesem Objekttyp nicht zugewiesen werden ({type})." #: extras/models/models.py:716 msgid "kind" -msgstr "nett" +msgstr "Typ" #: extras/models/models.py:730 msgid "journal entry" @@ -7877,17 +7930,17 @@ msgstr "ist ausführbar" #: extras/models/scripts.py:64 msgid "script" -msgstr "Drehbuch" +msgstr "Skript" #: extras/models/scripts.py:65 msgid "scripts" msgstr "Skripte" -#: extras/models/scripts.py:110 +#: extras/models/scripts.py:111 msgid "script module" msgstr "Skriptmodul" -#: extras/models/scripts.py:111 +#: extras/models/scripts.py:112 msgid "script modules" msgstr "Skriptmodule" @@ -7913,19 +7966,19 @@ msgstr "zwischengespeicherte Werte" #: extras/models/staging.py:44 msgid "branch" -msgstr "Ast" +msgstr "Branch" #: extras/models/staging.py:45 msgid "branches" -msgstr "Geäst" +msgstr "Branches" #: extras/models/staging.py:97 msgid "staged change" -msgstr "inszenierter Wandel" +msgstr "vorbereitete Änderung" #: extras/models/staging.py:98 msgid "staged changes" -msgstr "gestaffelte Veränderungen" +msgstr "vorbereitete Änderungen" #: extras/models/tags.py:40 msgid "The object type(s) to which this tag can be applied." @@ -7991,7 +8044,7 @@ msgstr "Sichtbar" #: extras/tables/tables.py:55 msgid "Editable" -msgstr "Bearbeitbar" +msgstr "Editierbar" #: extras/tables/tables.py:61 msgid "Related Object Type" @@ -8007,7 +8060,7 @@ msgstr "Ist klonbar" #: extras/tables/tables.py:103 msgid "Count" -msgstr "Zählen" +msgstr "Anzahl" #: extras/tables/tables.py:106 msgid "Order Alphabetically" @@ -8069,7 +8122,7 @@ msgstr "Vollständiger Name" #: extras/tables/tables.py:483 templates/extras/objectchange.html:67 msgid "Request ID" -msgstr "ID anfragen" +msgstr "Anfragen-ID" #: extras/tables/tables.py:520 msgid "Comments (Short)" @@ -8137,7 +8190,7 @@ msgstr "Ihr Dashboard wurde zurückgesetzt." #: extras/views.py:935 msgid "Added widget: " -msgstr "Widget hinzugefügt: " +msgstr "Hinzugefügtes Widget:" #: extras/views.py:976 msgid "Updated widget: " @@ -8151,7 +8204,7 @@ msgstr "Gelöschtes Widget: " msgid "Error deleting widget: " msgstr "Fehler beim Löschen des Widgets: " -#: extras/views.py:1081 +#: extras/views.py:1101 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." @@ -8186,7 +8239,7 @@ msgstr "" #: ipam/choices.py:30 msgid "Container" -msgstr "Behälter" +msgstr "Container" #: ipam/choices.py:72 msgid "DHCP" @@ -8194,7 +8247,7 @@ msgstr "DHCP" #: ipam/choices.py:73 msgid "SLAAC" -msgstr "SLAAK" +msgstr "SLAAC" #: ipam/choices.py:89 msgid "Loopback" @@ -8206,7 +8259,7 @@ msgstr "Sekundär" #: ipam/choices.py:91 msgid "Anycast" -msgstr "Beliebiger Cast" +msgstr "Anycast" #: ipam/choices.py:115 msgid "Standard" @@ -8280,7 +8333,7 @@ msgstr "L2VPN exportieren (Identifier)" #: ipam/filtersets.py:155 ipam/filtersets.py:281 ipam/forms/model_forms.py:227 #: ipam/tables/ip.py:211 templates/ipam/prefix.html:12 msgid "Prefix" -msgstr "Präfix" +msgstr "Prefix" #: ipam/filtersets.py:159 ipam/filtersets.py:198 ipam/filtersets.py:221 msgid "RIR (ID)" @@ -8288,11 +8341,11 @@ msgstr "RIR (ID)" #: ipam/filtersets.py:165 ipam/filtersets.py:204 ipam/filtersets.py:227 msgid "RIR (slug)" -msgstr "RIR (Schnecke)" +msgstr "RIR (URL-Slug)" #: ipam/filtersets.py:285 msgid "Within prefix" -msgstr "Innerhalb des Präfixes" +msgstr "Innerhalb des Prefixes" #: ipam/filtersets.py:289 msgid "Within and including prefix" @@ -8303,7 +8356,7 @@ msgid "Prefixes which contain this prefix or IP" msgstr "Präfixe, die dieses Präfix oder diese IP enthalten" #: ipam/filtersets.py:304 ipam/filtersets.py:572 ipam/forms/bulk_edit.py:327 -#: ipam/forms/filtersets.py:195 ipam/forms/filtersets.py:324 +#: ipam/forms/filtersets.py:196 ipam/forms/filtersets.py:331 msgid "Mask length" msgstr "Länge der Maske" @@ -8316,7 +8369,7 @@ msgid "VLAN number (1-4094)" msgstr "VLAN-Nummer (1-4094)" #: ipam/filtersets.py:471 ipam/filtersets.py:475 ipam/filtersets.py:567 -#: ipam/forms/model_forms.py:452 templates/tenancy/contact.html:53 +#: ipam/forms/model_forms.py:461 templates/tenancy/contact.html:53 #: tenancy/forms/bulk_edit.py:113 msgid "Address" msgstr "Adresse" @@ -8376,17 +8429,17 @@ msgstr "NAT innerhalb der IP-Adresse (ID)" msgid "IP address (ID)" msgstr "IP-Adresse (ID)" -#: ipam/filtersets.py:1102 ipam/models/ip.py:787 +#: ipam/filtersets.py:1102 ipam/models/ip.py:788 msgid "IP address" msgstr "IP-Adresse" #: ipam/filtersets.py:1131 msgid "Primary IPv4 (ID)" -msgstr "Primäres IPv4 (ID)" +msgstr "Primäre IPv4 (ID)" #: ipam/filtersets.py:1136 msgid "Primary IPv6 (ID)" -msgstr "Primäres IPv6 (ID)" +msgstr "Primäre IPv6 (ID)" #: ipam/formfields.py:14 msgid "Enter a valid IPv4 or IPv6 address (without a mask)." @@ -8432,7 +8485,7 @@ msgstr "Ist privat" #: ipam/forms/filtersets.py:148 ipam/forms/model_forms.py:94 #: ipam/forms/model_forms.py:107 ipam/forms/model_forms.py:129 #: ipam/forms/model_forms.py:147 ipam/models/asns.py:31 -#: ipam/models/asns.py:103 ipam/models/ip.py:70 ipam/models/ip.py:89 +#: 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 @@ -8441,55 +8494,55 @@ msgstr "RIR" #: ipam/forms/bulk_edit.py:169 msgid "Date added" -msgstr "Datum hinzugefügt" +msgstr "hinzugefügt am" #: ipam/forms/bulk_edit.py:230 msgid "Prefix length" -msgstr "Länge des Präfixes" +msgstr "Länge des Prefixes" -#: ipam/forms/bulk_edit.py:253 ipam/forms/filtersets.py:240 +#: ipam/forms/bulk_edit.py:253 ipam/forms/filtersets.py:241 #: templates/ipam/prefix.html:85 msgid "Is a pool" msgstr "Ist ein Pool" #: ipam/forms/bulk_edit.py:258 ipam/forms/bulk_edit.py:302 -#: ipam/forms/filtersets.py:247 ipam/forms/filtersets.py:286 -#: ipam/models/ip.py:271 ipam/models/ip.py:538 +#: ipam/forms/filtersets.py:248 ipam/forms/filtersets.py:293 +#: ipam/models/ip.py:272 ipam/models/ip.py:539 msgid "Treat as fully utilized" msgstr "Als voll ausgelastet behandeln" -#: ipam/forms/bulk_edit.py:350 ipam/models/ip.py:771 +#: ipam/forms/bulk_edit.py:350 ipam/models/ip.py:772 msgid "DNS name" -msgstr "DNS-Namen" +msgstr "DNS-Name" #: ipam/forms/bulk_edit.py:371 ipam/forms/bulk_edit.py:572 #: ipam/forms/bulk_import.py:393 ipam/forms/bulk_import.py:477 -#: ipam/forms/bulk_import.py:503 ipam/forms/filtersets.py:383 -#: ipam/forms/filtersets.py:530 templates/ipam/fhrpgroup.html:22 +#: ipam/forms/bulk_import.py:503 ipam/forms/filtersets.py:390 +#: ipam/forms/filtersets.py:537 templates/ipam/fhrpgroup.html:22 #: templates/ipam/inc/panels/fhrp_groups.html:24 #: templates/ipam/service.html:32 templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "Protokoll" -#: ipam/forms/bulk_edit.py:378 ipam/forms/filtersets.py:390 +#: ipam/forms/bulk_edit.py:378 ipam/forms/filtersets.py:397 #: ipam/tables/fhrp.py:22 templates/ipam/fhrpgroup.html:26 msgid "Group ID" msgstr "Gruppen-ID" -#: ipam/forms/bulk_edit.py:383 ipam/forms/filtersets.py:395 +#: ipam/forms/bulk_edit.py:383 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 msgid "Authentication type" -msgstr "Art der Authentifizierung" +msgstr "Typ der Authentifizierung" -#: ipam/forms/bulk_edit.py:388 ipam/forms/filtersets.py:399 +#: ipam/forms/bulk_edit.py:388 ipam/forms/filtersets.py:406 msgid "Authentication key" msgstr "Authentifizierungsschlüssel" -#: ipam/forms/bulk_edit.py:405 ipam/forms/filtersets.py:376 -#: ipam/forms/model_forms.py:463 netbox/navigation/menu.py:369 +#: ipam/forms/bulk_edit.py:405 ipam/forms/filtersets.py:383 +#: ipam/forms/model_forms.py:472 netbox/navigation/menu.py:370 #: templates/ipam/fhrpgroup.html:49 #: templates/wireless/inc/authentication_attrs.html:5 #: wireless/forms/bulk_edit.py:91 wireless/forms/bulk_edit.py:138 @@ -8500,17 +8553,17 @@ msgstr "Authentifizierung" #: ipam/forms/bulk_edit.py:415 msgid "Minimum child VLAN VID" -msgstr "Mindestanzahl an VLAN-VID für Kinder" +msgstr "Unterste VLAN-VID für untergeordnete Objekte" #: ipam/forms/bulk_edit.py:421 msgid "Maximum child VLAN VID" -msgstr "Maximale VLAN-VID für Kinder" +msgstr "Oberste VLAN-VID für untergeordnete Objekte" -#: ipam/forms/bulk_edit.py:429 ipam/forms/model_forms.py:557 +#: ipam/forms/bulk_edit.py:429 ipam/forms/model_forms.py:566 msgid "Scope type" msgstr "Art des Geltungsbereichs" -#: ipam/forms/bulk_edit.py:491 ipam/forms/model_forms.py:632 +#: ipam/forms/bulk_edit.py:491 ipam/forms/model_forms.py:641 #: ipam/tables/vlans.py:71 templates/ipam/vlangroup.html:38 msgid "Scope" msgstr "Geltungsbereich" @@ -8519,12 +8572,12 @@ msgstr "Geltungsbereich" msgid "Site & Group" msgstr "Standort und Gruppe" -#: ipam/forms/bulk_edit.py:577 ipam/forms/model_forms.py:696 -#: ipam/forms/model_forms.py:728 ipam/tables/services.py:19 +#: ipam/forms/bulk_edit.py:577 ipam/forms/model_forms.py:705 +#: ipam/forms/model_forms.py:737 ipam/tables/services.py:19 #: ipam/tables/services.py:49 templates/ipam/service.html:36 #: templates/ipam/servicetemplate.html:23 msgid "Ports" -msgstr "Häfen" +msgstr "Anschlüsse" #: ipam/forms/bulk_import.py:47 msgid "Import route targets" @@ -8543,24 +8596,24 @@ msgstr "Zugewiesenes RIR" msgid "VLAN's group (if any)" msgstr "VLAN-Gruppe (falls vorhanden)" -#: ipam/forms/bulk_import.py:184 ipam/forms/model_forms.py:216 -#: ipam/models/vlans.py:214 ipam/tables/ip.py:254 -#: 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:101 +#: ipam/forms/bulk_import.py:184 ipam/forms/filtersets.py:256 +#: ipam/forms/model_forms.py:216 ipam/models/vlans.py:214 +#: ipam/tables/ip.py:254 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:101 msgid "VLAN" msgstr "VLAN" #: ipam/forms/bulk_import.py:307 msgid "Parent device of assigned interface (if any)" -msgstr "Elterngerät der zugewiesenen Schnittstelle (falls vorhanden)" +msgstr "Übergeordnetes Gerät der zugewiesenen Schnittstelle (falls vorhanden)" #: ipam/forms/bulk_import.py:310 ipam/forms/bulk_import.py:496 -#: ipam/forms/model_forms.py:722 virtualization/filtersets.py:284 +#: ipam/forms/model_forms.py:731 virtualization/filtersets.py:284 #: virtualization/filtersets.py:323 virtualization/forms/bulk_edit.py:200 #: virtualization/forms/bulk_edit.py:326 #: virtualization/forms/bulk_import.py:146 @@ -8610,12 +8663,12 @@ msgstr "Art des Umfangs (App und Modell)" #: ipam/forms/bulk_import.py:418 #, python-brace-format msgid "Minimum child VLAN VID (default: {minimum})" -msgstr "Minimale VLAN-VID für Kinder (Standard: {minimum})" +msgstr "Minimale VLAN-VID für untergeordnete Objekte (Standard: {minimum})" #: ipam/forms/bulk_import.py:424 #, python-brace-format msgid "Maximum child VLAN VID (default: {maximum})" -msgstr "Maximale VLAN-VID für Kinder (Standard: {maximum})" +msgstr "Maximale VLAN-VID für untergeordnete Objekte (Standard: {maximum})" #: ipam/forms/bulk_import.py:448 msgid "Assigned VLAN group" @@ -8665,70 +8718,74 @@ msgstr "Exportiert von VRF" msgid "Private" msgstr "Privat" -#: ipam/forms/filtersets.py:105 ipam/forms/filtersets.py:190 -#: ipam/forms/filtersets.py:265 ipam/forms/filtersets.py:319 +#: ipam/forms/filtersets.py:105 ipam/forms/filtersets.py:191 +#: ipam/forms/filtersets.py:272 ipam/forms/filtersets.py:326 msgid "Address family" -msgstr "Familie adressieren" +msgstr "Adress-Familie" #: ipam/forms/filtersets.py:119 templates/ipam/asnrange.html:25 msgid "Range" -msgstr "Reichweite" +msgstr "Bereich" #: ipam/forms/filtersets.py:128 msgid "Start" -msgstr "Starten" +msgstr "Start" #: ipam/forms/filtersets.py:132 msgid "End" msgstr "Ende" -#: ipam/forms/filtersets.py:185 +#: ipam/forms/filtersets.py:171 +msgid "VLAN Assignment" +msgstr "VLAN-Zuweisung" + +#: ipam/forms/filtersets.py:186 msgid "Search within" msgstr "Suche innerhalb" -#: ipam/forms/filtersets.py:206 ipam/forms/filtersets.py:335 +#: ipam/forms/filtersets.py:207 ipam/forms/filtersets.py:342 msgid "Present in VRF" msgstr "In VRF präsent" -#: ipam/forms/filtersets.py:304 +#: ipam/forms/filtersets.py:311 msgid "Device/VM" msgstr "Gerät/VM" -#: ipam/forms/filtersets.py:314 +#: ipam/forms/filtersets.py:321 msgid "Parent Prefix" -msgstr "Übergeordnetes Präfix" +msgstr "Übergeordnetes Prefix" -#: ipam/forms/filtersets.py:340 +#: ipam/forms/filtersets.py:347 msgid "Assigned Device" msgstr "Zugewiesenes Gerät" -#: ipam/forms/filtersets.py:345 +#: ipam/forms/filtersets.py:352 msgid "Assigned VM" msgstr "Zugewiesene VM" -#: ipam/forms/filtersets.py:359 +#: ipam/forms/filtersets.py:366 msgid "Assigned to an interface" msgstr "Einer Schnittstelle zugewiesen" -#: ipam/forms/filtersets.py:366 templates/ipam/ipaddress.html:51 +#: ipam/forms/filtersets.py:373 templates/ipam/ipaddress.html:51 msgid "DNS Name" msgstr "DNS-Name" -#: ipam/forms/filtersets.py:409 ipam/forms/filtersets.py:513 +#: ipam/forms/filtersets.py:416 ipam/forms/filtersets.py:520 #: ipam/models/vlans.py:156 templates/ipam/vlan.html:31 msgid "VLAN ID" msgstr "VLAN-ID" -#: ipam/forms/filtersets.py:441 +#: ipam/forms/filtersets.py:448 msgid "Minimum VID" -msgstr "Mindest-VID" +msgstr "Minimale VID" -#: ipam/forms/filtersets.py:447 +#: ipam/forms/filtersets.py:454 msgid "Maximum VID" -msgstr "Maximaler VID" +msgstr "Maximale VID" -#: ipam/forms/filtersets.py:556 ipam/forms/model_forms.py:318 -#: ipam/forms/model_forms.py:750 ipam/forms/model_forms.py:776 +#: ipam/forms/filtersets.py:563 ipam/forms/model_forms.py:318 +#: ipam/forms/model_forms.py:759 ipam/forms/model_forms.py:785 #: ipam/tables/vlans.py:191 templates/virtualization/virtualdisk.html:21 #: templates/virtualization/virtualmachine.html:12 #: templates/virtualization/vminterface.html:21 @@ -8755,7 +8812,7 @@ msgstr "Aggregat" #: ipam/forms/model_forms.py:133 templates/ipam/asnrange.html:12 msgid "ASN Range" -msgstr "ASN-Reihe" +msgstr "ASN-Bereich" #: ipam/forms/model_forms.py:229 msgid "Site/VLAN Assignment" @@ -8766,7 +8823,7 @@ msgid "IP Range" msgstr "IP-Bereich" #: ipam/forms/model_forms.py:293 ipam/forms/model_forms.py:319 -#: ipam/forms/model_forms.py:462 templates/ipam/fhrpgroup.html:19 +#: ipam/forms/model_forms.py:471 templates/ipam/fhrpgroup.html:19 msgid "FHRP Group" msgstr "FHRP-Gruppe" @@ -8778,11 +8835,11 @@ msgstr "Machen Sie dies zur primären IP für das Gerät/die VM" msgid "NAT IP (Inside)" msgstr "NAT IP (intern)" -#: ipam/forms/model_forms.py:373 +#: ipam/forms/model_forms.py:382 msgid "An IP address can only be assigned to a single object." msgstr "Eine IP-Adresse kann nur einem einzigen Objekt zugewiesen werden." -#: ipam/forms/model_forms.py:379 ipam/models/ip.py:896 +#: ipam/forms/model_forms.py:388 ipam/models/ip.py:897 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" @@ -8790,32 +8847,32 @@ msgstr "" "Die IP-Adresse kann nicht neu zugewiesen werden, solange sie als primäre IP " "für das übergeordnete Objekt festgelegt ist" -#: ipam/forms/model_forms.py:389 +#: ipam/forms/model_forms.py:398 msgid "" "Only IP addresses assigned to an interface can be designated as primary IPs." msgstr "" "Nur IP-Adressen, die einer Schnittstelle zugewiesen sind, können als primäre" " IPs festgelegt werden." -#: ipam/forms/model_forms.py:464 +#: ipam/forms/model_forms.py:473 msgid "Virtual IP Address" msgstr "Virtuelle IP-Adresse" -#: ipam/forms/model_forms.py:549 +#: ipam/forms/model_forms.py:558 msgid "Assignment already exists" msgstr "Zuweisung ist bereits vorhanden" -#: ipam/forms/model_forms.py:628 ipam/forms/model_forms.py:670 +#: ipam/forms/model_forms.py:637 ipam/forms/model_forms.py:679 #: ipam/tables/ip.py:250 templates/ipam/vlan_edit.html:37 #: templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "VLAN-Gruppe" -#: ipam/forms/model_forms.py:629 +#: ipam/forms/model_forms.py:638 msgid "Child VLANs" msgstr "Untergeordnete VLANs" -#: ipam/forms/model_forms.py:701 ipam/forms/model_forms.py:733 +#: ipam/forms/model_forms.py:710 ipam/forms/model_forms.py:742 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." @@ -8823,32 +8880,32 @@ msgstr "" "Kommagetrennte Liste mit einer oder mehreren Portnummern. Ein Bereich kann " "mit einem Bindestrich angegeben werden." -#: ipam/forms/model_forms.py:706 templates/ipam/servicetemplate.html:12 +#: ipam/forms/model_forms.py:715 templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "Vorlage für den Service" -#: ipam/forms/model_forms.py:753 +#: ipam/forms/model_forms.py:762 msgid "Port(s)" -msgstr "Anschluss (e)" +msgstr "Anschluss" -#: ipam/forms/model_forms.py:754 ipam/forms/model_forms.py:782 +#: ipam/forms/model_forms.py:763 ipam/forms/model_forms.py:791 #: templates/ipam/service.html:21 msgid "Service" msgstr "Bedienung" -#: ipam/forms/model_forms.py:767 +#: ipam/forms/model_forms.py:776 msgid "Service template" msgstr "Vorlage für den Dienst" -#: ipam/forms/model_forms.py:779 +#: ipam/forms/model_forms.py:788 msgid "From Template" msgstr "Aus Vorlage" -#: ipam/forms/model_forms.py:780 +#: ipam/forms/model_forms.py:789 msgid "Custom" msgstr "Benutzerdefiniert" -#: ipam/forms/model_forms.py:810 +#: ipam/forms/model_forms.py:819 msgid "" "Must specify name, protocol, and port(s) if not using a service template." msgstr "" @@ -8861,7 +8918,7 @@ msgstr "Start" #: ipam/models/asns.py:51 msgid "ASN range" -msgstr "ASN-Reihe" +msgstr "ASN-Bereich" #: ipam/models/asns.py:52 msgid "ASN ranges" @@ -8919,44 +8976,44 @@ msgstr "FHRP-Gruppenzuweisung" msgid "FHRP group assignments" msgstr "FHRP-Gruppenaufgaben" -#: ipam/models/ip.py:64 +#: ipam/models/ip.py:65 msgid "private" msgstr "Privat" -#: ipam/models/ip.py:65 +#: ipam/models/ip.py:66 msgid "IP space managed by this RIR is considered private" msgstr "Der von diesem RIR verwaltete IP-Bereich gilt als privat" -#: ipam/models/ip.py:71 netbox/navigation/menu.py:169 +#: ipam/models/ip.py:72 netbox/navigation/menu.py:169 msgid "RIRs" msgstr "RIRs" -#: ipam/models/ip.py:83 +#: ipam/models/ip.py:84 msgid "IPv4 or IPv6 network" msgstr "IPv4- oder IPv6-Netzwerk" -#: ipam/models/ip.py:90 +#: ipam/models/ip.py:91 msgid "Regional Internet Registry responsible for this IP space" msgstr "" "Regionale Internetregistrierung, die für diesen IP-Bereich zuständig ist" -#: ipam/models/ip.py:100 +#: ipam/models/ip.py:101 msgid "date added" msgstr "Datum hinzugefügt" -#: ipam/models/ip.py:114 +#: ipam/models/ip.py:115 msgid "aggregate" msgstr "Aggregat" -#: ipam/models/ip.py:115 +#: ipam/models/ip.py:116 msgid "aggregates" msgstr "Aggregate" -#: ipam/models/ip.py:131 +#: ipam/models/ip.py:132 msgid "Cannot create aggregate with /0 mask." msgstr "Ein Aggregat mit der Maske /0 kann nicht erstellt werden." -#: ipam/models/ip.py:143 +#: ipam/models/ip.py:144 #, python-brace-format msgid "" "Aggregates cannot overlap. {prefix} is already covered by an existing " @@ -8965,7 +9022,7 @@ msgstr "" "Aggregate können sich nicht überschneiden. {prefix} wird bereits von einem " "vorhandenen Aggregat abgedeckt ({aggregate})." -#: ipam/models/ip.py:157 +#: ipam/models/ip.py:158 #, python-brace-format msgid "" "Prefixes cannot overlap aggregates. {prefix} covers an existing aggregate " @@ -8974,161 +9031,161 @@ msgstr "" "Präfixe können Aggregate nicht überlappen. {prefix} deckt ein vorhandenes " "Aggregat ab ({aggregate})." -#: ipam/models/ip.py:199 ipam/models/ip.py:736 vpn/models/tunnels.py:114 +#: ipam/models/ip.py:200 ipam/models/ip.py:737 vpn/models/tunnels.py:114 msgid "role" msgstr "Rolle" -#: ipam/models/ip.py:200 +#: ipam/models/ip.py:201 msgid "roles" msgstr "Rollen" -#: ipam/models/ip.py:216 ipam/models/ip.py:292 +#: ipam/models/ip.py:217 ipam/models/ip.py:293 msgid "prefix" -msgstr "Präfix" +msgstr "Prefix" -#: ipam/models/ip.py:217 +#: ipam/models/ip.py:218 msgid "IPv4 or IPv6 network with mask" msgstr "IPv4- oder IPv6-Netzwerk mit Maske" -#: ipam/models/ip.py:253 +#: ipam/models/ip.py:254 msgid "Operational status of this prefix" -msgstr "Betriebsstatus dieses Präfixes" +msgstr "Betriebsstatus dieses Prefixes" -#: ipam/models/ip.py:261 +#: ipam/models/ip.py:262 msgid "The primary function of this prefix" -msgstr "Die Hauptfunktion dieses Präfixes" +msgstr "Die Hauptfunktion dieses Prefixes" -#: ipam/models/ip.py:264 +#: ipam/models/ip.py:265 msgid "is a pool" msgstr "ist ein Pool" -#: ipam/models/ip.py:266 +#: ipam/models/ip.py:267 msgid "All IP addresses within this prefix are considered usable" msgstr "" -"Alle IP-Adressen innerhalb dieses Präfixes werden als nutzbar betrachtet" +"Alle IP-Adressen innerhalb dieses Prefixes werden als nutzbar betrachtet" -#: ipam/models/ip.py:269 ipam/models/ip.py:536 +#: ipam/models/ip.py:270 ipam/models/ip.py:537 msgid "mark utilized" -msgstr "verwendet markieren" +msgstr "als verwendet markieren" -#: ipam/models/ip.py:293 +#: ipam/models/ip.py:294 msgid "prefixes" -msgstr "Präfixe" +msgstr "Prefixe" -#: ipam/models/ip.py:316 +#: ipam/models/ip.py:317 msgid "Cannot create prefix with /0 mask." -msgstr "Präfix mit der Maske /0 kann nicht erstellt werden." +msgstr "Prefix mit der Maske /0 kann nicht erstellt werden." -#: ipam/models/ip.py:323 ipam/models/ip.py:873 +#: ipam/models/ip.py:324 ipam/models/ip.py:874 #, python-brace-format msgid "VRF {vrf}" msgstr "VRF {vrf}" -#: ipam/models/ip.py:323 ipam/models/ip.py:873 +#: ipam/models/ip.py:324 ipam/models/ip.py:874 msgid "global table" msgstr "globale Tabelle" -#: ipam/models/ip.py:325 +#: ipam/models/ip.py:326 #, python-brace-format msgid "Duplicate prefix found in {table}: {prefix}" -msgstr "Doppeltes Präfix gefunden in {table}: {prefix}" +msgstr "Doppeltes Prefix gefunden in {table}: {prefix}" -#: ipam/models/ip.py:494 +#: ipam/models/ip.py:495 msgid "start address" msgstr "Startadresse" -#: ipam/models/ip.py:495 ipam/models/ip.py:499 ipam/models/ip.py:711 +#: ipam/models/ip.py:496 ipam/models/ip.py:500 ipam/models/ip.py:712 msgid "IPv4 or IPv6 address (with mask)" msgstr "IPv4- oder IPv6-Adresse (mit Maske)" -#: ipam/models/ip.py:498 +#: ipam/models/ip.py:499 msgid "end address" msgstr "Endadresse" -#: ipam/models/ip.py:525 +#: ipam/models/ip.py:526 msgid "Operational status of this range" msgstr "Betriebsstatus dieses Bereichs" -#: ipam/models/ip.py:533 +#: ipam/models/ip.py:534 msgid "The primary function of this range" msgstr "Die Hauptfunktion dieses Bereichs" -#: ipam/models/ip.py:547 +#: ipam/models/ip.py:548 msgid "IP range" msgstr "IP-Bereich" -#: ipam/models/ip.py:548 +#: ipam/models/ip.py:549 msgid "IP ranges" msgstr "IP-Bereiche" -#: ipam/models/ip.py:564 +#: ipam/models/ip.py:565 msgid "Starting and ending IP address versions must match" msgstr "Die Versionen der Anfangs- und Endadresse müssen übereinstimmen" -#: ipam/models/ip.py:570 +#: ipam/models/ip.py:571 msgid "Starting and ending IP address masks must match" msgstr "Die Masken für Start- und Endadressen müssen übereinstimmen" -#: ipam/models/ip.py:577 +#: ipam/models/ip.py:578 #, python-brace-format msgid "" "Ending address must be greater than the starting address ({start_address})" msgstr "" "Die Endadresse muss größer als die Startadresse sein ({start_address})" -#: ipam/models/ip.py:589 +#: ipam/models/ip.py:590 #, python-brace-format msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}" msgstr "" "Definierte Adressen überschneiden sich mit dem Bereich {overlapping_range} " "im VRF {vrf}" -#: ipam/models/ip.py:598 +#: ipam/models/ip.py:599 #, python-brace-format msgid "Defined range exceeds maximum supported size ({max_size})" msgstr "" "Der definierte Bereich überschreitet die maximal unterstützte Größe " "({max_size})" -#: ipam/models/ip.py:710 tenancy/models/contacts.py:82 +#: ipam/models/ip.py:711 tenancy/models/contacts.py:82 msgid "address" msgstr "Adresse" -#: ipam/models/ip.py:733 +#: ipam/models/ip.py:734 msgid "The operational status of this IP" msgstr "Der Betriebsstatus dieser IP" -#: ipam/models/ip.py:740 +#: ipam/models/ip.py:741 msgid "The functional role of this IP" msgstr "Die funktionale Rolle dieser IP" -#: ipam/models/ip.py:764 templates/ipam/ipaddress.html:72 +#: ipam/models/ip.py:765 templates/ipam/ipaddress.html:72 msgid "NAT (inside)" msgstr "NAT (innen)" -#: ipam/models/ip.py:765 +#: ipam/models/ip.py:766 msgid "The IP for which this address is the \"outside\" IP" msgstr "Die IP, für die diese Adresse die „externe“ IP ist" -#: ipam/models/ip.py:772 +#: ipam/models/ip.py:773 msgid "Hostname or FQDN (not case-sensitive)" msgstr "Hostname oder FQDN (Groß- und Kleinschreibung nicht beachten)" -#: ipam/models/ip.py:788 ipam/models/services.py:93 +#: ipam/models/ip.py:789 ipam/models/services.py:93 msgid "IP addresses" msgstr "IP-Adressen" -#: ipam/models/ip.py:844 +#: ipam/models/ip.py:845 msgid "Cannot create IP address with /0 mask." msgstr "Die IP-Adresse mit der Maske /0 kann nicht erstellt werden." -#: ipam/models/ip.py:850 +#: ipam/models/ip.py:851 #, python-brace-format msgid "{ip} is a network ID, which may not be assigned to an interface." msgstr "" "{ip} ist eine Netzwerk-ID, die keiner Schnittstelle zugewiesen werden darf." -#: ipam/models/ip.py:861 +#: ipam/models/ip.py:862 #, python-brace-format msgid "" "{ip} is a broadcast address, which may not be assigned to an interface." @@ -9136,12 +9193,12 @@ msgstr "" "{ip} ist eine Broadcast-Adresse, die keiner Schnittstelle zugewiesen werden " "darf." -#: ipam/models/ip.py:875 +#: ipam/models/ip.py:876 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "Doppelte IP-Adresse gefunden in {table}: {ipaddress}" -#: ipam/models/ip.py:902 +#: ipam/models/ip.py:903 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "Nur IPv6-Adressen kann der SLAAC-Status zugewiesen werden" @@ -9216,13 +9273,13 @@ msgstr "scope_id kann nicht ohne scope_type gesetzt werden." #: ipam/models/vlans.py:102 msgid "Maximum child VID must be greater than or equal to minimum child VID" msgstr "" -"Die maximale VID für Kinder muss größer oder gleich der Mindest-VID für " -"Kinder sein" +"Die maximale VID für untergeordnete Objekte muss größer oder gleich der " +"Mindest-VID für untergeordnete Objekte sein" #: ipam/models/vlans.py:145 msgid "The specific site to which this VLAN is assigned (if any)" msgstr "" -"Die spezifische Site, der dieses VLAN zugewiesen ist (falls vorhanden)" +"Der spezifische Standort, der dieses VLAN zugewiesen ist (falls vorhanden)" #: ipam/models/vlans.py:153 msgid "VLAN group (optional)" @@ -9241,7 +9298,7 @@ msgid "The primary function of this VLAN" msgstr "Die Hauptfunktion dieses VLAN" #: ipam/models/vlans.py:215 ipam/tables/ip.py:175 ipam/tables/vlans.py:78 -#: ipam/views.py:957 netbox/navigation/menu.py:180 +#: ipam/views.py:978 netbox/navigation/menu.py:180 #: netbox/navigation/menu.py:182 msgid "VLANs" msgstr "VLANs" @@ -9253,7 +9310,7 @@ msgid "" "site {site}." msgstr "" "VLAN ist der Gruppe zugewiesen {group} (Umfang: {scope}); kann nicht auch " -"der Site zugewiesen werden {site}." +"dem Standort zugewiesen werden {site}." #: ipam/models/vlans.py:238 #, python-brace-format @@ -9301,11 +9358,11 @@ msgstr "ALS PUNKT" #: ipam/tables/asn.py:57 msgid "Site Count" -msgstr "Anzahl der Websites" +msgstr "Anzahl der Standorte" #: ipam/tables/asn.py:62 msgid "Provider Count" -msgstr "Anzahl der Anbieter" +msgstr "Anzahl der Provider" #: ipam/tables/ip.py:94 netbox/navigation/menu.py:166 #: netbox/navigation/menu.py:168 @@ -9317,10 +9374,10 @@ msgid "Added" msgstr "Hinzugefügt" #: ipam/tables/ip.py:127 ipam/tables/ip.py:165 ipam/tables/vlans.py:138 -#: ipam/views.py:348 netbox/navigation/menu.py:152 +#: ipam/views.py:349 netbox/navigation/menu.py:152 #: netbox/navigation/menu.py:154 templates/ipam/vlan.html:84 msgid "Prefixes" -msgstr "Präfixe" +msgstr "Prefixe" #: ipam/tables/ip.py:130 ipam/tables/ip.py:267 ipam/tables/ip.py:320 #: ipam/tables/vlans.py:82 templates/dcim/device.html:252 @@ -9335,7 +9392,7 @@ msgstr "IP-Bereiche" #: ipam/tables/ip.py:220 msgid "Prefix (Flat)" -msgstr "Präfix (flach)" +msgstr "Prefix (flach)" #: ipam/tables/ip.py:224 msgid "Depth" @@ -9343,11 +9400,11 @@ msgstr "Tiefe" #: ipam/tables/ip.py:261 msgid "Pool" -msgstr "Schwimmbad" +msgstr "Pool" #: ipam/tables/ip.py:264 ipam/tables/ip.py:317 msgid "Marked Utilized" -msgstr "Als genutzt markiert" +msgstr "Als ausgenutzt markiert" #: ipam/tables/ip.py:301 msgid "Start address" @@ -9418,23 +9475,23 @@ msgstr "" "In DNS-Namen sind nur alphanumerische Zeichen, Sternchen, Bindestriche, " "Punkte und Unterstriche zulässig" -#: ipam/views.py:535 +#: ipam/views.py:541 msgid "Child Prefixes" -msgstr "Präfixe für Kinder" +msgstr "untergeordnete Prefixe" -#: ipam/views.py:570 +#: ipam/views.py:576 msgid "Child Ranges" -msgstr "Sortimente für Kinder" +msgstr "untergeordnete Bereiche" -#: ipam/views.py:886 +#: ipam/views.py:902 msgid "Related IPs" msgstr "Verwandte IPs" -#: ipam/views.py:1112 +#: ipam/views.py:1133 msgid "Device Interfaces" msgstr "Geräte-Schnittstellen" -#: ipam/views.py:1129 +#: ipam/views.py:1150 msgid "VM Interfaces" msgstr "VM-Schnittstellen" @@ -9453,7 +9510,7 @@ msgstr "" #: netbox/api/fields.py:89 #, python-brace-format msgid "{value} is not a valid choice." -msgstr "{value} ist keine gültige Wahl." +msgstr "{value} ist keine gültige Auswahl." #: netbox/api/fields.py:102 #, python-brace-format @@ -9481,7 +9538,7 @@ msgstr "Rose" #: netbox/choices.py:53 msgid "Fuchsia" -msgstr "Fuchsie" +msgstr "Fuchsia" #: netbox/choices.py:55 msgid "Dark Purple" @@ -9517,7 +9574,7 @@ msgstr "Dunkles Orange" #: netbox/choices.py:70 msgid "Brown" -msgstr "braun" +msgstr "Braun" #: netbox/choices.py:71 msgid "Light Grey" @@ -9537,11 +9594,11 @@ msgstr "Direkt" #: netbox/choices.py:132 msgid "Upload" -msgstr "Upload" +msgstr "Hochladen" #: netbox/choices.py:144 netbox/choices.py:158 msgid "Auto-detect" -msgstr "Automatisch erkennen" +msgstr "Auto-Erkennung" #: netbox/choices.py:159 msgid "Comma" @@ -9611,7 +9668,7 @@ msgstr "Bevorzugen Sie IPv4-Adressen gegenüber IPv6" #: netbox/config/parameters.py:84 msgid "Rack unit height" -msgstr "Höhe der Rackeinheit" +msgstr "Höhe der Rackeinheit in HE" #: netbox/config/parameters.py:86 msgid "Default unit height for rendered rack elevations" @@ -9655,7 +9712,7 @@ msgstr "Zulässige URL-Schemata" #: netbox/config/parameters.py:128 msgid "Permitted schemes for URLs in user-provided content" -msgstr "Zulässige Schemata für URLs in vom Nutzer bereitgestellten Inhalten" +msgstr "Zulässige Schemata für URLs in vom Benutzer bereitgestellten Inhalten" #: netbox/config/parameters.py:136 msgid "Default page size" @@ -9683,7 +9740,7 @@ msgstr "Löschschutzregeln (JSON)" #: netbox/config/parameters.py:172 templates/core/inc/config_data.html:117 msgid "Default preferences" -msgstr "Standardpräferenzen" +msgstr "Standardeinstellungen" #: netbox/config/parameters.py:174 msgid "Default preferences for new users" @@ -9754,23 +9811,23 @@ msgstr "Regex" #: netbox/forms/__init__.py:34 msgid "Object type(s)" -msgstr "Objekttyp (en)" +msgstr "Objekttyp(en)" #: netbox/forms/base.py:88 msgid "" "Tag slugs separated by commas, encased with double quotes (e.g. " "\"tag1,tag2,tag3\")" msgstr "" -"Tag-Slugs, getrennt durch Kommas, umgeben von doppelten Anführungszeichen " -"(z. B. „tag1, tag2, tag3\")" +"Tag-URL-Slugs, getrennt durch Kommas, umgeben von doppelten " +"Anführungszeichen (z. B. „tag1, tag2, tag3\")" #: netbox/forms/base.py:118 msgid "Add tags" -msgstr "Schlagworte hinzufügen" +msgstr "Tags hinzufügen" #: netbox/forms/base.py:123 msgid "Remove tags" -msgstr "Schlagworte entfernen" +msgstr "Tags entfernen" #: netbox/forms/mixins.py:38 #, python-brace-format @@ -9816,7 +9873,7 @@ msgstr "" #: netbox/models/features.py:463 msgid "date synced" -msgstr "Datum synchronisiert" +msgstr "Datum der Synchronisierung " #: netbox/models/features.py:557 #, python-brace-format @@ -9829,7 +9886,7 @@ msgstr "Organisation" #: netbox/navigation/menu.py:19 msgid "Site Groups" -msgstr "Site-Gruppen" +msgstr "Standort-Gruppen" #: netbox/navigation/menu.py:27 msgid "Rack Roles" @@ -9841,19 +9898,19 @@ msgstr "Erhebungen" #: netbox/navigation/menu.py:40 msgid "Tenant Groups" -msgstr "Mietergruppen" +msgstr "Mandantengruppen" #: netbox/navigation/menu.py:47 msgid "Contact Groups" -msgstr "Kontaktgruppen" +msgstr "Kontakt-Gruppen" #: netbox/navigation/menu.py:48 templates/tenancy/contactrole.html:8 msgid "Contact Roles" -msgstr "Roles kontaktieren" +msgstr "Kontakt-Rollen" #: netbox/navigation/menu.py:49 msgid "Contact Assignments" -msgstr "Zuweisungen von Kontakten" +msgstr "Kontakt-Zuweisungen" #: netbox/navigation/menu.py:63 msgid "Modules" @@ -9898,7 +9955,7 @@ msgstr "Konsolenverbindungen" #: netbox/navigation/menu.py:118 msgid "Power Connections" -msgstr "Stromanschlüsse" +msgstr "Stromverbindungen" #: netbox/navigation/menu.py:134 msgid "Wireless LAN Groups" @@ -9906,7 +9963,7 @@ msgstr "WLAN-Gruppen" #: netbox/navigation/menu.py:155 msgid "Prefix & VLAN Roles" -msgstr "Präfix- und VLAN-Rollen" +msgstr "Prefix- und VLAN-Rollen" #: netbox/navigation/menu.py:161 msgid "ASN Ranges" @@ -9946,12 +10003,12 @@ msgstr "Tunnelabschlüsse" #: netbox/navigation/menu.py:210 netbox/navigation/menu.py:212 #: vpn/models/l2vpn.py:64 msgid "L2VPNs" -msgstr "L2-VPNs" +msgstr "L2VPNs" #: netbox/navigation/menu.py:213 templates/vpn/l2vpn.html:56 #: templates/vpn/tunnel.html:72 vpn/tables/tunnels.py:58 msgid "Terminations" -msgstr "Kündigungen" +msgstr "Abschlusspunkte" #: netbox/navigation/menu.py:219 msgid "IKE Proposals" @@ -9996,41 +10053,45 @@ msgstr "Cluster-Gruppen" #: netbox/navigation/menu.py:260 msgid "Circuit Types" -msgstr "Schaltungstypen" +msgstr "Transportnetz Typen" -#: netbox/navigation/menu.py:264 netbox/navigation/menu.py:266 +#: netbox/navigation/menu.py:261 +msgid "Circuit Terminations" +msgstr "Stromkreisabschlüsse" + +#: netbox/navigation/menu.py:265 netbox/navigation/menu.py:267 msgid "Providers" -msgstr "Anbieter" +msgstr "Provider" -#: netbox/navigation/menu.py:267 templates/circuits/provider.html:51 +#: netbox/navigation/menu.py:268 templates/circuits/provider.html:51 msgid "Provider Accounts" -msgstr "Anbieterkonten" +msgstr "Providerkonten" -#: netbox/navigation/menu.py:268 +#: netbox/navigation/menu.py:269 msgid "Provider Networks" -msgstr "Anbieter-Netzwerke" +msgstr "Provider Netzwerke" -#: netbox/navigation/menu.py:282 +#: netbox/navigation/menu.py:283 msgid "Power Panels" msgstr "Schalttafeln" -#: netbox/navigation/menu.py:293 +#: netbox/navigation/menu.py:294 msgid "Configurations" msgstr "Konfigurationen" -#: netbox/navigation/menu.py:295 +#: netbox/navigation/menu.py:296 msgid "Config Contexts" msgstr "Kontexte konfigurieren" -#: netbox/navigation/menu.py:296 +#: netbox/navigation/menu.py:297 msgid "Config Templates" msgstr "Config-Vorlagen" -#: netbox/navigation/menu.py:303 netbox/navigation/menu.py:307 +#: netbox/navigation/menu.py:304 netbox/navigation/menu.py:308 msgid "Customization" msgstr "Personalisierung" -#: netbox/navigation/menu.py:309 templates/dcim/device_edit.html:103 +#: netbox/navigation/menu.py:310 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 @@ -10040,110 +10101,110 @@ msgstr "Personalisierung" msgid "Custom Fields" msgstr "Benutzerdefinierte Felder" -#: netbox/navigation/menu.py:310 +#: netbox/navigation/menu.py:311 msgid "Custom Field Choices" msgstr "Optionen für benutzerdefinierte Felder" -#: netbox/navigation/menu.py:311 +#: netbox/navigation/menu.py:312 msgid "Custom Links" msgstr "Benutzerdefinierte Links" -#: netbox/navigation/menu.py:312 +#: netbox/navigation/menu.py:313 msgid "Export Templates" msgstr "Vorlagen exportieren" -#: netbox/navigation/menu.py:313 +#: netbox/navigation/menu.py:314 msgid "Saved Filters" msgstr "Gespeicherte Filter" -#: netbox/navigation/menu.py:315 +#: netbox/navigation/menu.py:316 msgid "Image Attachments" msgstr "Bildanhänge" -#: netbox/navigation/menu.py:333 +#: netbox/navigation/menu.py:334 msgid "Operations" msgstr "Operationen" -#: netbox/navigation/menu.py:337 +#: netbox/navigation/menu.py:338 msgid "Integrations" msgstr "Integrationen" -#: netbox/navigation/menu.py:339 +#: netbox/navigation/menu.py:340 msgid "Data Sources" msgstr "Datenquellen" -#: netbox/navigation/menu.py:340 +#: netbox/navigation/menu.py:341 msgid "Event Rules" msgstr "Regeln der Veranstaltung" -#: netbox/navigation/menu.py:341 +#: netbox/navigation/menu.py:342 msgid "Webhooks" msgstr "Webhooks" -#: netbox/navigation/menu.py:345 netbox/navigation/menu.py:349 +#: netbox/navigation/menu.py:346 netbox/navigation/menu.py:350 #: netbox/views/generic/feature_views.py:151 #: templates/extras/report/base.html:37 templates/extras/script/base.html:36 msgid "Jobs" msgstr "Jobs" -#: netbox/navigation/menu.py:355 +#: netbox/navigation/menu.py:356 msgid "Logging" msgstr "Protokollierung" -#: netbox/navigation/menu.py:357 +#: netbox/navigation/menu.py:358 msgid "Journal Entries" msgstr "Tagebucheinträge" -#: netbox/navigation/menu.py:358 templates/extras/objectchange.html:8 +#: netbox/navigation/menu.py:359 templates/extras/objectchange.html:8 #: templates/extras/objectchange_list.html:4 msgid "Change Log" -msgstr "Protokoll ändern" +msgstr "Änderungsprotokoll" -#: netbox/navigation/menu.py:365 templates/inc/user_menu.html:11 +#: netbox/navigation/menu.py:366 templates/inc/user_menu.html:11 msgid "Admin" msgstr "Admin" -#: netbox/navigation/menu.py:373 templates/users/group.html:29 +#: netbox/navigation/menu.py:374 templates/users/group.html:29 #: users/forms/model_forms.py:233 users/forms/model_forms.py:245 #: users/forms/model_forms.py:297 users/tables.py:102 msgid "Users" -msgstr "Nutzer" +msgstr "Benutzer" -#: netbox/navigation/menu.py:393 users/forms/model_forms.py:182 +#: netbox/navigation/menu.py:394 users/forms/model_forms.py:182 #: users/forms/model_forms.py:194 users/forms/model_forms.py:302 #: users/tables.py:35 users/tables.py:106 msgid "Groups" msgstr "Gruppen" -#: netbox/navigation/menu.py:413 templates/account/base.html:21 +#: netbox/navigation/menu.py:414 templates/account/base.html:21 #: templates/inc/user_menu.html:36 msgid "API Tokens" msgstr "API-Token" -#: netbox/navigation/menu.py:420 users/forms/model_forms.py:188 +#: netbox/navigation/menu.py:421 users/forms/model_forms.py:188 #: users/forms/model_forms.py:196 users/forms/model_forms.py:239 #: users/forms/model_forms.py:246 msgid "Permissions" -msgstr "Genehmigungen" +msgstr "Berechtigungen" -#: netbox/navigation/menu.py:428 netbox/navigation/menu.py:432 +#: netbox/navigation/menu.py:429 netbox/navigation/menu.py:433 #: templates/core/system.html:7 msgid "System" msgstr "System" -#: netbox/navigation/menu.py:437 +#: netbox/navigation/menu.py:438 msgid "Configuration History" -msgstr "Verlauf der Konfiguration" +msgstr "Konfigurationsverlauf" -#: netbox/navigation/menu.py:443 templates/core/rq_task.html:8 +#: netbox/navigation/menu.py:444 templates/core/rq_task.html:8 #: templates/core/rq_task_list.html:22 msgid "Background Tasks" -msgstr "Aufgaben im Hintergrund" +msgstr "Hintergrund-Aufgaben" -#: netbox/navigation/menu.py:482 templates/500.html:35 +#: netbox/navigation/menu.py:483 templates/500.html:35 #: templates/account/preferences.html:22 templates/core/system.html:80 msgid "Plugins" -msgstr "Plug-ins" +msgstr "Plugins" #: netbox/plugins/navigation.py:47 netbox/plugins/navigation.py:69 msgid "Permissions must be passed as a tuple or list." @@ -10203,7 +10264,7 @@ msgstr "{button} muss eine Instanz von NetBox.Plugins.PluginMenuButton sein" #: netbox/plugins/templates.py:35 msgid "extra_context must be a dictionary" -msgstr "extra_context muss ein Wörterbuch sein" +msgstr "extra_context muss ein Dictionary sein" #: netbox/preferences.py:19 msgid "HTMX Navigation" @@ -10215,7 +10276,7 @@ msgstr "Dynamische UI-Navigation aktivieren" #: netbox/preferences.py:26 msgid "Experimental feature" -msgstr "Experimentelles Merkmal" +msgstr "Experimentelle Funktion" #: netbox/preferences.py:29 msgid "Language" @@ -10244,7 +10305,7 @@ msgstr "Platzierung des Paginators" #: netbox/preferences.py:50 msgid "Bottom" -msgstr "Unterseite" +msgstr "Unten" #: netbox/preferences.py:51 msgid "Top" @@ -10252,7 +10313,7 @@ msgstr "Oben" #: netbox/preferences.py:52 msgid "Both" -msgstr "Beides" +msgstr "Beide" #: netbox/preferences.py:55 msgid "Where the paginator controls will be displayed relative to a table" @@ -10261,7 +10322,7 @@ msgstr "" #: netbox/preferences.py:60 msgid "Data format" -msgstr "Format der Daten" +msgstr "Datenformat" #: netbox/preferences.py:65 msgid "The preferred syntax for displaying generic data within the UI" @@ -10284,33 +10345,45 @@ msgstr "" msgid "Cannot delete stores from registry" msgstr "Stores können nicht aus der Registrierung gelöscht werden" -#: netbox/settings.py:715 +#: netbox/settings.py:722 +msgid "German" +msgstr "Deutsch" + +#: netbox/settings.py:723 msgid "English" msgstr "Englisch" -#: netbox/settings.py:716 +#: netbox/settings.py:724 msgid "Spanish" msgstr "Spanisch" -#: netbox/settings.py:717 +#: netbox/settings.py:725 msgid "French" msgstr "Französisch" -#: netbox/settings.py:718 +#: netbox/settings.py:726 msgid "Japanese" -msgstr "japanisch" +msgstr "Japanisch" -#: netbox/settings.py:719 +#: netbox/settings.py:727 msgid "Portuguese" -msgstr "portugiesisch" +msgstr "Portugiesisch" -#: netbox/settings.py:720 +#: netbox/settings.py:728 msgid "Russian" msgstr "Russisch" -#: netbox/settings.py:721 +#: netbox/settings.py:729 msgid "Turkish" -msgstr "türkisch" +msgstr "Türkisch" + +#: netbox/settings.py:730 +msgid "Ukrainian" +msgstr "Ukrainisch" + +#: netbox/settings.py:731 +msgid "Chinese" +msgstr "chinesisch" #: netbox/tables/columns.py:185 msgid "Toggle all" @@ -10324,16 +10397,16 @@ msgstr "Dropdown umschalten" msgid "Error" msgstr "Fehler" -#: netbox/tables/tables.py:56 +#: netbox/tables/tables.py:57 #, python-brace-format msgid "No {model_name} found" -msgstr "Nein {model_name} gefunden" +msgstr "Kein {model_name} gefunden" -#: netbox/tables/tables.py:246 templates/generic/bulk_import.html:117 +#: netbox/tables/tables.py:248 templates/generic/bulk_import.html:117 msgid "Field" msgstr "Feld" -#: netbox/tables/tables.py:249 +#: netbox/tables/tables.py:251 msgid "Value" msgstr "Wert" @@ -10403,7 +10476,7 @@ msgstr "Python-Version" #: templates/500.html:34 templates/core/system.html:31 msgid "NetBox version" -msgstr "NetBox-Ausführung" +msgstr "NetBox-Version" #: templates/500.html:36 msgid "None installed" @@ -10412,8 +10485,7 @@ msgstr "Keine installiert" #: templates/500.html:39 msgid "If further assistance is required, please post to the" msgstr "" -"Wenn Sie weitere Unterstützung benötigen, senden Sie bitte eine E-Mail an " -"die" +"Wenn Sie weitere Unterstützung benötigen, senden Sie bitte eine E-Mail an" #: templates/500.html:39 msgid "NetBox discussion forum" @@ -10435,7 +10507,7 @@ msgstr "Profil" #: templates/account/base.html:13 templates/inc/user_menu.html:33 msgid "Preferences" -msgstr "Präferenzen" +msgstr "Einstellungen" #: templates/account/password.html:5 msgid "Change Password" @@ -10446,7 +10518,7 @@ msgstr "Passwort ändern" #: 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:37 +#: 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 @@ -10457,7 +10529,7 @@ msgstr "Passwort ändern" #: templates/htmx/delete_form.html:55 templates/ipam/ipaddress_assign.html:28 #: templates/virtualization/cluster_add_devices.html:30 msgid "Cancel" -msgstr "Stornieren" +msgstr "Abbrechen" #: templates/account/password.html:18 templates/account/preferences.html:78 #: templates/dcim/devicebay_populate.html:35 @@ -10490,11 +10562,11 @@ msgstr "Tabelle" #: templates/account/preferences.html:50 msgid "Ordering" -msgstr "Bestellung" +msgstr "Sortierung" #: templates/account/preferences.html:51 msgid "Columns" -msgstr "Kolumnen" +msgstr "Spalten" #: templates/account/preferences.html:71 templates/dcim/cable_trace.html:113 #: templates/extras/object_configcontext.html:43 @@ -10503,11 +10575,11 @@ msgstr "Keine gefunden" #: templates/account/profile.html:6 msgid "User Profile" -msgstr "Nutzerprofil" +msgstr "Benutzerprofil" #: templates/account/profile.html:12 msgid "Account Details" -msgstr "Angaben zum Konto" +msgstr "Kontodetails" #: templates/account/profile.html:29 templates/tenancy/contact.html:43 #: templates/users/user.html:25 tenancy/forms/bulk_edit.py:109 @@ -10539,7 +10611,8 @@ msgstr "Zugewiesene Gruppen" #: templates/account/profile.html:58 #: templates/circuits/circuit_terminations_swap.html:18 #: templates/circuits/circuit_terminations_swap.html:26 -#: templates/circuits/inc/circuit_termination.html:154 +#: templates/circuits/circuittermination.html:34 +#: templates/circuits/inc/circuit_termination.html:68 #: templates/dcim/devicebay.html:59 #: templates/dcim/inc/panels/inventory_items.html:45 #: templates/dcim/interface.html:296 templates/dcim/modulebay.html:76 @@ -10568,7 +10641,7 @@ msgstr "Meine API-Token" #: templates/users/token.html:6 templates/users/token.html:14 #: users/forms/filtersets.py:121 msgid "Token" -msgstr "Wertmarke" +msgstr "Token" #: templates/account/token.html:39 templates/users/token.html:31 #: users/forms/bulk_edit.py:107 @@ -10585,7 +10658,7 @@ msgstr "Einen Token hinzufügen" #: templates/base/base.html:18 templates/home.html:27 msgid "Home" -msgstr "Zuhause" +msgstr "Home" #: templates/base/layout.html:32 msgid "NetBox Logo" @@ -10601,7 +10674,7 @@ msgstr "Lichtmodus aktivieren" #: templates/base/layout.html:145 msgid "Docs" -msgstr "Dokumente" +msgstr "Doku" #: templates/base/layout.html:151 templates/rest_framework/api.html:10 msgid "REST API" @@ -10621,7 +10694,7 @@ msgstr "Quellcode" #: templates/base/layout.html:177 msgid "Community" -msgstr "Gemeinschaft" +msgstr "Community" #: templates/circuits/circuit.html:47 msgid "Install Date" @@ -10633,12 +10706,12 @@ msgstr "Kündigungsdatum" #: templates/circuits/circuit_terminations_swap.html:4 msgid "Swap Circuit Terminations" -msgstr "Stromkreisabschlüsse austauschen" +msgstr "Transportnetzabschlüsse austauschen" #: templates/circuits/circuit_terminations_swap.html:8 #, python-format msgid "Swap these terminations for circuit %(circuit)s?" -msgstr "Tauschen Sie diese Anschlüsse gegen einen Stromkreis aus %(circuit)s?" +msgstr "Tauschen Sie diese Abschlüsse gegen Tranportnetz aus: %(circuit)s?" #: templates/circuits/circuit_terminations_swap.html:14 msgid "A side" @@ -10650,18 +10723,11 @@ msgstr "Z-Seite" #: templates/circuits/circuittype.html:10 msgid "Add Circuit" -msgstr "Schaltkreis hinzufügen" +msgstr "Transportnetz hinzufügen" #: templates/circuits/circuittype.html:19 msgid "Circuit Type" -msgstr "Schaltungstyp" - -#: templates/circuits/inc/circuit_termination.html:6 -#: templates/circuits/inc/circuit_termination.html:41 -#: templates/dcim/cable.html:68 templates/dcim/cable.html:72 -#: vpn/forms/bulk_import.py:100 vpn/forms/filtersets.py:77 -msgid "Termination" -msgstr "Kündigung" +msgstr "Transportnetz Typ" #: templates/circuits/inc/circuit_termination.html:10 #: templates/dcim/devicetype/component_templates.html:33 @@ -10675,7 +10741,7 @@ msgid "Add" msgstr "Hinzufügen" #: templates/circuits/inc/circuit_termination.html:15 -#: templates/circuits/inc/circuit_termination.html:62 +#: 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:32 @@ -10690,33 +10756,33 @@ msgstr "Bearbeiten" msgid "Swap" msgstr "Tauschen" -#: templates/circuits/inc/circuit_termination.html:45 +#: templates/circuits/inc/circuit_termination_fields.html:19 #: templates/dcim/consoleport.html:59 templates/dcim/consoleserverport.html:60 #: templates/dcim/powerfeed.html:114 msgid "Marked as connected" msgstr "Als verbunden markiert" -#: templates/circuits/inc/circuit_termination.html:47 +#: templates/circuits/inc/circuit_termination_fields.html:21 msgid "to" msgstr "zu" -#: templates/circuits/inc/circuit_termination.html:57 -#: templates/circuits/inc/circuit_termination.html:58 +#: 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 msgid "Trace" msgstr "Trace" -#: templates/circuits/inc/circuit_termination.html:61 +#: templates/circuits/inc/circuit_termination_fields.html:35 msgid "Edit cable" msgstr "Kabel bearbeiten" -#: templates/circuits/inc/circuit_termination.html:66 +#: templates/circuits/inc/circuit_termination_fields.html:40 msgid "Remove cable" msgstr "Kabel entfernen" -#: templates/circuits/inc/circuit_termination.html:67 +#: 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 @@ -10728,38 +10794,38 @@ msgstr "Kabel entfernen" msgid "Disconnect" msgstr "Trennen" -#: templates/circuits/inc/circuit_termination.html:74 +#: 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 msgid "Connect" -msgstr "Verbinde" +msgstr "Verbinden" -#: templates/circuits/inc/circuit_termination.html:96 +#: templates/circuits/inc/circuit_termination_fields.html:70 msgid "Downstream" msgstr "Stromabwärts" -#: templates/circuits/inc/circuit_termination.html:97 +#: templates/circuits/inc/circuit_termination_fields.html:71 msgid "Upstream" msgstr "Stromaufwärts" -#: templates/circuits/inc/circuit_termination.html:106 +#: templates/circuits/inc/circuit_termination_fields.html:80 msgid "Cross-Connect" msgstr "Cross-Connect" -#: templates/circuits/inc/circuit_termination.html:110 +#: templates/circuits/inc/circuit_termination_fields.html:84 msgid "Patch Panel/Port" msgstr "Patchpanel/Anschluss" #: templates/circuits/provider.html:11 msgid "Add circuit" -msgstr "Schaltung hinzufügen" +msgstr "Transportnetz hinzufügen" #: templates/circuits/provideraccount.html:17 msgid "Provider Account" -msgstr "Anbieter-Konto" +msgstr "Providerkonto" #: templates/core/configrevision.html:35 msgid "Configuration Data" @@ -10880,7 +10946,7 @@ msgstr "Beibehaltung der Arbeitsplätze" #: templates/core/job.html:17 templates/core/rq_task.html:12 #: templates/core/rq_task.html:49 templates/core/rq_task.html:58 msgid "Job" -msgstr "Beruf" +msgstr "Job" #: templates/core/job.html:40 templates/extras/journalentry.html:26 msgid "Created By" @@ -11015,11 +11081,11 @@ msgstr "Exportieren" #: templates/core/system.html:28 msgid "System Status" -msgstr "Status des Systems" +msgstr "System-Status" #: templates/core/system.html:39 msgid "Django version" -msgstr "Django-Ausführung" +msgstr "Django-Version" #: templates/core/system.html:43 msgid "PostgreSQL version" @@ -11027,11 +11093,11 @@ msgstr "PostgreSQL-Version" #: templates/core/system.html:47 msgid "Database name" -msgstr "Name der Datenbank" +msgstr "Datenbank-Name" #: templates/core/system.html:51 msgid "Database size" -msgstr "Größe der Datenbank" +msgstr "Datenbank-Größe" #: templates/core/system.html:56 msgid "Unavailable" @@ -11112,7 +11178,7 @@ msgstr "Herkunft" #: templates/dcim/cable_trace.html:90 msgid "Destination" -msgstr "Reiseziel" +msgstr "Ziel" #: templates/dcim/cable_trace.html:91 msgid "Segments" @@ -11138,7 +11204,7 @@ msgstr "Gerät im Rack hervorheben" #: templates/dcim/device.html:54 msgid "Not racked" -msgstr "Nicht geknackt" +msgstr "Nicht eingebaut" #: templates/dcim/device.html:61 templates/dcim/site.html:93 msgid "GPS Coordinates" @@ -11165,7 +11231,7 @@ msgstr "VDC erstellen" #: templates/dcim/device.html:172 templates/dcim/device_edit.html:64 #: virtualization/forms/model_forms.py:223 msgid "Management" -msgstr "Verwaltung" +msgstr "Management" #: templates/dcim/device.html:192 templates/dcim/device.html:208 #: templates/virtualization/virtualmachine.html:53 @@ -11220,15 +11286,15 @@ msgstr "Komponenten hinzufügen" #: templates/dcim/device/consoleports.html:24 msgid "Add Console Ports" -msgstr "Konsolenports hinzufügen" +msgstr "Konsolenanschlüsse hinzufügen" #: templates/dcim/device/consoleserverports.html:24 msgid "Add Console Server Ports" -msgstr "Konsolenserver-Ports hinzufügen" +msgstr "Konsolenserver-Anschlüsse hinzufügen" #: templates/dcim/device/devicebays.html:10 msgid "Add Device Bays" -msgstr "Geräteschächte hinzufügen" +msgstr "Geräteeinsätze hinzufügen" #: templates/dcim/device/frontports.html:24 msgid "Add Front Ports" @@ -11236,19 +11302,19 @@ msgstr "Frontanschlüsse hinzufügen" #: templates/dcim/device/inc/interface_table_controls.html:9 msgid "Hide Enabled" -msgstr "Ausblenden Aktiviert" +msgstr "Aktivierte ausblenden" #: templates/dcim/device/inc/interface_table_controls.html:10 msgid "Hide Disabled" -msgstr "Deaktiviert ausblenden" +msgstr "Deaktivierte ausblenden" #: templates/dcim/device/inc/interface_table_controls.html:11 msgid "Hide Virtual" -msgstr "Virtuell ausblenden" +msgstr "Virtuelle ausblenden" #: templates/dcim/device/inc/interface_table_controls.html:12 msgid "Hide Disconnected" -msgstr "Getrennt ausblenden" +msgstr "Getrennte ausblenden" #: templates/dcim/device/interfaces.html:27 msgid "Add Interfaces" @@ -11261,7 +11327,7 @@ msgstr "Inventargegenstand hinzufügen" #: templates/dcim/device/modulebays.html:10 msgid "Add Module Bays" -msgstr "Modulschächte hinzufügen" +msgstr "Moduleinsätze hinzufügen" #: templates/dcim/device/poweroutlets.html:24 msgid "Add Power Outlets" @@ -11273,7 +11339,7 @@ msgstr "Stromanschluss hinzufügen" #: templates/dcim/device/rearports.html:24 msgid "Add Rear Ports" -msgstr "Hintere Anschlüsse hinzufügen" +msgstr "Rückanschlüsse hinzufügen" #: templates/dcim/device/render_config.html:5 #: templates/virtualization/virtualmachine/render_config.html:5 @@ -11302,12 +11368,12 @@ msgstr "Keine Konfigurationsvorlage gefunden" #: templates/dcim/device_edit.html:44 msgid "Parent Bay" -msgstr "Elternbucht" +msgstr "Übergeordneter Einsatz" #: templates/dcim/device_edit.html:48 #: utilities/templates/form_helpers/render_field.html:20 msgid "Regenerate Slug" -msgstr "Schnecke regenerieren" +msgstr "URL-Slug regenerieren" #: templates/dcim/device_edit.html:49 templates/generic/bulk_remove.html:21 #: utilities/templates/helpers/table_config_form.html:23 @@ -11328,7 +11394,7 @@ msgstr "Umbenennen" #: templates/dcim/devicebay.html:17 msgid "Device Bay" -msgstr "Geräteschacht" +msgstr "Geräteeinsatz" #: templates/dcim/devicebay.html:43 msgid "Installed Device" @@ -11337,7 +11403,7 @@ msgstr "Installiertes Gerät" #: templates/dcim/devicebay_depopulate.html:6 #, python-format msgid "Remove %(device)s from %(device_bay)s?" -msgstr "entfernen %(device)s von %(device_bay)s?" +msgstr "entferne %(device)s von %(device_bay)s?" #: templates/dcim/devicebay_depopulate.html:13 #, python-format @@ -11354,7 +11420,7 @@ msgstr "Bevölkern" #: templates/dcim/devicebay_populate.html:22 msgid "Bay" -msgstr "Bucht" +msgstr "Einsatz" #: templates/dcim/devicerole.html:14 templates/dcim/platform.html:17 msgid "Add Device" @@ -11374,7 +11440,7 @@ msgstr "Teilnummer" #: templates/dcim/devicetype.html:41 msgid "Exclude From Utilization" -msgstr "Von der Nutzung ausschließen" +msgstr "Von der Auslastung ausschließen" #: templates/dcim/devicetype.html:59 msgid "Parent/Child" @@ -11390,7 +11456,7 @@ msgstr "Hinteres Bild" #: templates/dcim/frontport.html:54 msgid "Rear Port Position" -msgstr "Position des hinteren Anschlusses" +msgstr "Position des Rück-Anschlusses" #: templates/dcim/frontport.html:72 templates/dcim/interface.html:144 #: templates/dcim/poweroutlet.html:63 templates/dcim/powerport.html:63 @@ -11404,7 +11470,7 @@ msgstr "Status der Verbindung" #: templates/dcim/htmx/cable_edit.html:10 msgid "A Side" -msgstr "Eine Seite" +msgstr "A-Seite" #: templates/dcim/htmx/cable_edit.html:30 msgid "B Side" @@ -11412,7 +11478,7 @@ msgstr "B-Seite" #: templates/dcim/inc/cable_termination.html:65 msgid "No termination" -msgstr "Keine Kündigung" +msgstr "Kein Abschlusspunkt" #: templates/dcim/inc/cable_toggle_buttons.html:3 msgid "Mark Planned" @@ -11441,7 +11507,7 @@ msgstr "Nicht verbunden" #: templates/dcim/inc/interface_vlans_table.html:6 msgid "Untagged" -msgstr "Ohne Tags" +msgstr "Untagged" #: templates/dcim/inc/interface_vlans_table.html:37 msgid "No VLANs Assigned" @@ -11450,7 +11516,7 @@ msgstr "Keine VLANs zugewiesen" #: templates/dcim/inc/interface_vlans_table.html:44 #: templates/ipam/prefix_list.html:16 templates/ipam/prefix_list.html:33 msgid "Clear" -msgstr "Klar" +msgstr "Lösche" #: templates/dcim/inc/interface_vlans_table.html:47 msgid "Clear All" @@ -11498,7 +11564,7 @@ msgstr "Kanal" #: templates/dcim/interface.html:239 #: templates/wireless/inc/wirelesslink_interface.html:32 msgid "Channel Frequency" -msgstr "Frequenz des Kanals" +msgstr "Kanal-Frequenz" #: templates/dcim/interface.html:242 templates/dcim/interface.html:250 #: templates/dcim/interface.html:261 templates/dcim/interface.html:269 @@ -11543,7 +11609,7 @@ msgstr "Teile-ID" #: templates/dcim/location.html:17 msgid "Add Child Location" -msgstr "Standort des Kindes hinzufügen" +msgstr "Untergeordneten Standort hinzufügen" #: templates/dcim/location.html:58 templates/dcim/site.html:55 msgid "Facility" @@ -11551,7 +11617,7 @@ msgstr "Einrichtung" #: templates/dcim/location.html:77 msgid "Child Locations" -msgstr "Standorte für Kinder" +msgstr "Untergeordnete Standorte" #: templates/dcim/location.html:81 templates/dcim/site.html:130 msgid "Add a Location" @@ -11589,11 +11655,11 @@ msgstr "V" #: templates/dcim/powerfeed.html:92 msgctxt "Abbreviation for amperes" msgid "A" -msgstr "EIN" +msgstr "A" #: templates/dcim/poweroutlet.html:48 msgid "Feed Leg" -msgstr "Bein füttern" +msgstr "Einspeiseseite" #: templates/dcim/powerpanel.html:72 msgid "Add Power Feeds" @@ -11601,11 +11667,11 @@ msgstr "Power-Feeds hinzufügen" #: templates/dcim/powerport.html:44 msgid "Maximum Draw" -msgstr "Maximale Auslosung" +msgstr "maximale Auslastung" #: templates/dcim/powerport.html:48 msgid "Allocated Draw" -msgstr "Zugewiesene Ziehung" +msgstr "zugewiesene Auslastung" #: templates/dcim/rack.html:63 msgid "Space Utilization" @@ -11621,7 +11687,7 @@ msgstr "aufsteigend" #: templates/dcim/rack.html:94 msgid "Starting Unit" -msgstr "Starteinheit" +msgstr "Start HE" #: templates/dcim/rack.html:120 msgid "Mounting Depth" @@ -11681,15 +11747,15 @@ msgstr "Rack hinzufügen" #: templates/dcim/rearport.html:50 msgid "Positions" -msgstr "Stellungen" +msgstr "Positionen" #: templates/dcim/region.html:17 templates/dcim/sitegroup.html:17 msgid "Add Site" -msgstr "Seite hinzufügen" +msgstr "Standort hinzufügen" #: templates/dcim/region.html:55 msgid "Child Regions" -msgstr "Regionen für Kinder" +msgstr "Untergeordnete Regionen" #: templates/dcim/region.html:59 msgid "Add Region" @@ -11705,7 +11771,7 @@ msgstr "UTC" #: templates/dcim/site.html:67 msgid "Site time" -msgstr "Uhrzeit der Website" +msgstr "Uhrzeit am Standort" #: templates/dcim/site.html:74 msgid "Physical Address" @@ -11723,11 +11789,11 @@ msgstr "Lieferadresse" #: templates/tenancy/tenantgroup.html:55 #: templates/wireless/wirelesslangroup.html:55 msgid "Child Groups" -msgstr "Kindergruppen" +msgstr "Untergeordnete Gruppen" #: templates/dcim/sitegroup.html:59 msgid "Add Site Group" -msgstr "Sitegruppe hinzufügen" +msgstr "Standortgruppe hinzufügen" #: templates/dcim/trace/attachment.html:5 #: templates/extras/exporttemplate.html:31 @@ -11740,12 +11806,12 @@ msgstr "Mitglied hinzufügen" #: templates/dcim/virtualchassis_add.html:18 msgid "Member Devices" -msgstr "Geräte von Mitgliedern" +msgstr "Mitglieds-Geräte" #: templates/dcim/virtualchassis_add_member.html:10 #, python-format msgid "Add New Member to Virtual Chassis %(virtual_chassis)s" -msgstr "Neues Mitglied zu Virtual Chassis hinzufügen %(virtual_chassis)s" +msgstr "Neues Mitglied zu virtuellem Gehäuse hinzufügen %(virtual_chassis)s" #: templates/dcim/virtualchassis_add_member.html:19 msgid "Add New Member" @@ -11760,12 +11826,12 @@ msgstr "Aktionen" #: templates/dcim/virtualchassis_add_member.html:29 msgid "Save & Add Another" -msgstr "Speichern und weiteres hinzufügen" +msgstr "Speichern & weiteres hinzufügen" #: templates/dcim/virtualchassis_edit.html:7 #, python-format msgid "Editing Virtual Chassis %(name)s" -msgstr "Virtuelles Chassis bearbeiten %(name)s" +msgstr "Virtuelles Gehäuse %(name)s bearbeiten" #: templates/dcim/virtualchassis_edit.html:53 msgid "Rack/Unit" @@ -11773,7 +11839,7 @@ msgstr "Rack/Einheit" #: templates/dcim/virtualchassis_remove_member.html:5 msgid "Remove Virtual Chassis Member" -msgstr "Virtual Chassis-Mitglied entfernen" +msgstr "Virtuelles Gehäuse-Mitglied entfernen" #: templates/dcim/virtualchassis_remove_member.html:9 #, python-format @@ -11798,7 +11864,7 @@ msgstr "" #: templates/exceptions/import_error.html:10 msgid "Missing required packages" -msgstr "Fehlende erforderliche Pakete" +msgstr "Erforderliche Pakete fehlen" #: templates/exceptions/import_error.html:11 msgid "" @@ -11841,7 +11907,7 @@ msgstr "" #: templates/exceptions/permission_error.html:10 msgid "Insufficient write permission to the media root" -msgstr "Ungenügende Schreibrechte für den Medienstamm" +msgstr "Ungenügende Schreibrechte im Medienverzeichnis" #: templates/exceptions/permission_error.html:11 #, python-format @@ -11850,9 +11916,9 @@ msgid "" "user NetBox runs as has access to write files to all locations within this " "path." msgstr "" -"Das konfigurierte Medienstammverzeichnis ist %(media_root)s. " -"Stellen Sie sicher, dass der Benutzer NetBox ausgeführt wird und Zugriff " -"hat, um Dateien an alle Speicherorte innerhalb dieses Pfads zu schreiben." +"Das konfigurierte Medienverzeichnis ist %(media_root)s. Stellen" +" Sie sicher, dass der Benutzer NetBox ausgeführt wird und Zugriff hat, um " +"Dateien innerhalb dieses Pfads zu schreiben." #: templates/exceptions/programming_error.html:6 msgid "" @@ -11874,8 +11940,8 @@ msgid "" msgstr "" "Beim Upgrade auf eine neue NetBox-Version muss das Upgrade-Skript ausgeführt" " werden, um alle neuen Datenbankmigrationen anzuwenden. Sie können " -"Migrationen manuell ausführen, indem Sie python3 manage.py " -"migrieren von der Befehlszeile aus." +"Migrationen manuell anwenden, indem Sie python3 manage.py " +"migrate von der Befehlszeile aus ausführen." #: templates/exceptions/programming_error.html:18 msgid "Unsupported PostgreSQL version" @@ -11889,14 +11955,14 @@ msgid "" msgstr "" "Stellen Sie sicher, dass PostgreSQL Version 12 oder höher verwendet wird. " "Sie können dies überprüfen, indem Sie mit den Anmeldeinformationen von " -"NetBox eine Verbindung zur Datenbank herstellen und eine Abfrage für " -"VERSION WÄHLEN ()." +"NetBox eine Verbindung zur Datenbank herstellen und eine Abfrage mit " +"SELECT VERSION()ausführen." #: templates/extras/configcontext.html:45 #: templates/extras/configtemplate.html:37 #: templates/extras/exporttemplate.html:51 msgid "The data file associated with this object has been deleted" -msgstr "Die mit diesem Objekt verknüpfte Datendatei wurde gelöscht" +msgstr "Die mit diesem Objekt verknüpfte Datei wurde gelöscht" #: templates/extras/configcontext.html:54 #: templates/extras/configtemplate.html:46 @@ -11917,7 +11983,7 @@ msgstr "Umgebungsparameter" #: templates/extras/configtemplate.html:67 #: templates/extras/exporttemplate.html:79 msgid "Template" -msgstr "Schablone" +msgstr "Vorlage" #: templates/extras/customfield.html:30 templates/extras/customlink.html:21 msgid "Group Name" @@ -11929,7 +11995,7 @@ msgstr "Klonbar" #: templates/extras/customfield.html:52 msgid "Default Value" -msgstr "Vorgabewert" +msgstr "Standardwert" #: templates/extras/customfield.html:61 msgid "Search Weight" @@ -11982,7 +12048,7 @@ msgstr "Linktext" #: templates/extras/customlink.html:61 msgid "Link URL" -msgstr "URL verlinken" +msgstr "Link-URL" #: templates/extras/dashboard/reset.html:4 templates/home.html:66 msgid "Reset Dashboard" @@ -12014,15 +12080,15 @@ msgstr "Es wurden noch keine Lesezeichen hinzugefügt." #: templates/extras/dashboard/widgets/objectcounts.html:10 msgid "No permission" -msgstr "Keine Erlaubnis" +msgstr "Keine Berechtigung" #: templates/extras/dashboard/widgets/objectlist.html:6 msgid "No permission to view this content" -msgstr "Keine Erlaubnis, diesen Inhalt anzusehen" +msgstr "Keine Berechtigung, diesen Inhalt anzusehen" #: templates/extras/dashboard/widgets/objectlist.html:10 msgid "Unable to load content. Invalid view name" -msgstr "Inhalt kann nicht geladen werden. Ungültiger Name der Ansicht" +msgstr "Inhalt kann nicht geladen werden. Ungültiger Name des Views" #: templates/extras/dashboard/widgets/rssfeed.html:12 msgid "No content found" @@ -12050,7 +12116,7 @@ msgstr "MIME-Typ" #: templates/extras/exporttemplate.html:27 msgid "File Extension" -msgstr "Dateierweiterung" +msgstr "Dateiendung" #: templates/extras/htmx/script_result.html:10 msgid "Scheduled for" @@ -12066,11 +12132,11 @@ msgstr "Zusammenfassung des Tests" #: templates/extras/htmx/script_result.html:43 msgid "Log" -msgstr "Loggen" +msgstr "Log" #: templates/extras/htmx/script_result.html:52 msgid "Output" -msgstr "Ausgang" +msgstr "Ausgabe" #: templates/extras/inc/result_pending.html:4 msgid "Loading" @@ -12078,11 +12144,11 @@ msgstr "Wird geladen" #: templates/extras/inc/result_pending.html:6 msgid "Results pending" -msgstr "Ergebnisse stehen noch aus" +msgstr "Ergebnisse ausstehend" #: templates/extras/journalentry.html:15 msgid "Journal Entry" -msgstr "Tagebucheintrag" +msgstr "Journal-Eintrag" #: templates/extras/object_changelog.html:15 #: templates/extras/objectchange_list.html:9 @@ -12122,15 +12188,15 @@ msgstr "Unterschied" #: templates/extras/objectchange.html:81 msgid "Previous" -msgstr "Bisherige" +msgstr "Vorherige" #: templates/extras/objectchange.html:84 msgid "Next" -msgstr "Weiter" +msgstr "Nächste" #: templates/extras/objectchange.html:92 msgid "Object Created" -msgstr "Objekt wurde erstellt" +msgstr "Objekt erstellt" #: templates/extras/objectchange.html:94 msgid "Object Deleted" @@ -12167,11 +12233,15 @@ msgstr "Bericht" msgid "You do not have permission to run scripts" msgstr "Sie sind nicht berechtigt, Skripts auszuführen" -#: templates/extras/script.html:40 templates/extras/script.html:44 +#: templates/extras/script.html:41 templates/extras/script.html:45 #: templates/extras/script_list.html:88 msgid "Run Script" msgstr "Skript ausführen" +#: templates/extras/script.html:51 templates/extras/script/source.html:10 +msgid "Error loading script" +msgstr "Fehler beim Laden des Skripts" + #: templates/extras/script/jobs.html:16 msgid "Script no longer exists in the source file." msgstr "Das Skript ist in der Quelldatei nicht mehr vorhanden." @@ -12190,7 +12260,7 @@ msgstr "Niemals" #: templates/extras/script_list.html:86 msgid "Run Again" -msgstr "Lauf noch einmal" +msgstr "Nochmal ausführen" #: templates/extras/script_list.html:140 msgid "No Scripts Found" @@ -12240,7 +12310,7 @@ msgstr "HTTP-Inhaltstyp" #: templates/extras/webhook.html:47 msgid "SSL Verification" -msgstr "SSL-Überprüfung" +msgstr "SSL-Verifizierung" #: templates/extras/webhook.html:61 msgid "Additional Headers" @@ -12292,11 +12362,11 @@ msgstr "Massenbearbeitung" #: templates/generic/bulk_edit.html:107 templates/generic/bulk_rename.html:66 msgid "Apply" -msgstr "Bewerben" +msgstr "Anwenden" #: templates/generic/bulk_import.html:19 msgid "Bulk Import" -msgstr "Massenimport" +msgstr "Massen-Import" #: templates/generic/bulk_import.html:25 msgid "Direct Import" @@ -12313,11 +12383,11 @@ msgstr "Einreichen" #: templates/generic/bulk_import.html:113 msgid "Field Options" -msgstr "Feldoptionen" +msgstr "Feldeigenschaften" #: templates/generic/bulk_import.html:119 msgid "Accessor" -msgstr "Accessoire" +msgstr "Datentyp" #: templates/generic/bulk_import.html:161 msgid "Import Value" @@ -12325,7 +12395,7 @@ msgstr "Wert importieren" #: templates/generic/bulk_import.html:181 msgid "Format: YYYY-MM-DD" -msgstr "Format: YYYY-MM-DD" +msgstr "Format: JJJJ-MM-DD" #: templates/generic/bulk_import.html:183 msgid "Specify true or false" @@ -12334,7 +12404,7 @@ msgstr "Geben Sie wahr oder falsch an" #: templates/generic/bulk_import.html:195 msgid "Required fields must be specified for all objects." msgstr "" -"Erforderliche Felder Muss muss für alle Objekte angegeben " +"Erforderliche Felder müssen für alle Objekte angegeben " "werden." #: templates/generic/bulk_import.html:201 @@ -12349,7 +12419,7 @@ msgstr "" #: templates/generic/bulk_remove.html:28 msgid "Bulk Remove" -msgstr "Massenentfernung" +msgstr "Massen-Entfernung" #: templates/generic/bulk_remove.html:42 msgid "Confirm Bulk Removal" @@ -12377,7 +12447,7 @@ msgstr "Umbenennen" #: templates/generic/bulk_rename.html:27 msgid "Bulk Rename" -msgstr "Massenumbenennung" +msgstr "Massen-Umbenennung" #: templates/generic/bulk_rename.html:39 msgid "Current Name" @@ -12413,7 +12483,7 @@ msgstr "Ausgewähltes löschen" #: templates/generic/object_edit.html:24 #, python-format msgid "Add a new %(object_type)s" -msgstr "Füge ein neues hinzu %(object_type)s" +msgstr "Füge ein neues%(object_type)s hinzu" #: templates/generic/object_edit.html:35 msgid "View model documentation" @@ -12425,7 +12495,7 @@ msgstr "Hilfe" #: templates/generic/object_edit.html:83 msgid "Create & Add Another" -msgstr "Neues erstellen und hinzufügen" +msgstr "Erstellen & Neues hinzufügen" #: templates/generic/object_list.html:57 msgid "Filters" @@ -12488,7 +12558,7 @@ msgstr "Die folgenden Objekte werden als Ergebnis dieser Aktion gelöscht." #: templates/htmx/object_selector.html:5 msgid "Select" -msgstr "Wählen" +msgstr "Auswählen" #: templates/inc/filter_list.html:42 #: utilities/templates/helpers/table_config_form.html:39 @@ -12539,7 +12609,7 @@ msgstr "Die Daten sind nicht mit der Upstream-Datei synchronisiert" #: templates/inc/user_menu.html:23 msgid "Django Admin" -msgstr "Django-Administrator" +msgstr "Django-Admin" #: templates/inc/user_menu.html:40 msgid "Log Out" @@ -12547,7 +12617,7 @@ msgstr "Abmelden" #: templates/inc/user_menu.html:47 templates/login.html:36 msgid "Log In" -msgstr "Einloggen" +msgstr "Anmelden" #: templates/ipam/aggregate.html:14 templates/ipam/ipaddress.html:14 #: templates/ipam/iprange.html:13 templates/ipam/prefix.html:15 @@ -12561,7 +12631,7 @@ msgstr "Datum hinzugefügt" #: templates/ipam/aggregate/prefixes.html:8 #: templates/ipam/prefix/prefixes.html:8 templates/ipam/role.html:10 msgid "Add Prefix" -msgstr "Präfix hinzufügen" +msgstr "Prefix hinzufügen" #: templates/ipam/asn.html:23 msgid "AS Number" @@ -12585,7 +12655,7 @@ msgstr "IP zuweisen" #: templates/ipam/inc/ipaddress_edit_header.html:19 msgid "Bulk Create" -msgstr "Massenerstellung" +msgstr "Massen-Erstellung" #: templates/ipam/inc/panels/fhrp_groups.html:10 msgid "Create Group" @@ -12605,11 +12675,11 @@ msgstr "Zugewiesene anzeigen" #: templates/ipam/inc/toggle_available.html:10 msgid "Show Available" -msgstr "Verfügbar anzeigen" +msgstr "Verfügbare anzeigen" #: templates/ipam/inc/toggle_available.html:13 msgid "Show All" -msgstr "Zeige alles" +msgstr "Alles anzeigen" #: templates/ipam/ipaddress.html:23 templates/ipam/iprange.html:45 #: templates/ipam/prefix.html:24 @@ -12630,7 +12700,7 @@ msgstr "Wählen Sie die IP-Adresse" #: templates/ipam/ipaddress_assign.html:35 msgid "Search Results" -msgstr "Ergebnisse der Suche" +msgstr "Suchergebnisse" #: templates/ipam/ipaddress_bulk_add.html:6 msgid "Bulk Add IP Addresses" @@ -12654,7 +12724,7 @@ msgstr "Angaben zur Adressierung" #: templates/ipam/prefix.html:118 msgid "Child IPs" -msgstr "IPs für Kinder" +msgstr "untergeordnete IPs" #: templates/ipam/prefix.html:126 msgid "Available IPs" @@ -12751,7 +12821,7 @@ msgstr "Fehler" #: templates/login.html:67 msgid "Sign In" -msgstr "Einloggen" +msgstr "Anmelden" #: templates/login.html:75 msgctxt "Denotes an alternative option" @@ -12835,7 +12905,7 @@ msgstr "Zuweisungen" #: templates/tenancy/contactgroup.html:18 tenancy/forms/forms.py:66 #: tenancy/forms/model_forms.py:75 msgid "Contact Group" -msgstr "Gruppe kontaktieren" +msgstr "Kontaktgruppe" #: templates/tenancy/contactgroup.html:50 msgid "Add Contact Group" @@ -12844,7 +12914,7 @@ msgstr "Kontaktgruppe hinzufügen" #: templates/tenancy/contactrole.html:15 tenancy/filtersets.py:153 #: tenancy/forms/forms.py:61 tenancy/forms/model_forms.py:87 msgid "Contact Role" -msgstr "Rolle kontaktieren" +msgstr "Kontaktrolle" #: templates/tenancy/object_contacts.html:9 msgid "Add a contact" @@ -12852,12 +12922,12 @@ msgstr "Einen Kontakt hinzufügen" #: templates/tenancy/tenantgroup.html:17 msgid "Add Tenant" -msgstr "Mieter hinzufügen" +msgstr "Mandant hinzufügen" #: templates/tenancy/tenantgroup.html:26 tenancy/forms/model_forms.py:32 #: tenancy/tables/columns.py:51 tenancy/tables/columns.py:61 msgid "Tenant Group" -msgstr "Mietergruppe" +msgstr "Mandantengruppe" #: templates/tenancy/tenantgroup.html:59 msgid "Add Tenant Group" @@ -12870,7 +12940,7 @@ msgstr "Zugewiesene Berechtigungen" #: templates/users/objectpermission.html:6 #: templates/users/objectpermission.html:14 users/forms/filtersets.py:67 msgid "Permission" -msgstr "Erlaubnis" +msgstr "Berechtigung" #: templates/users/objectpermission.html:34 msgid "View" @@ -12896,7 +12966,7 @@ msgstr "Virtuelle CPUs" #: templates/virtualization/cluster.html:59 #: templates/virtualization/virtualmachine.html:125 msgid "Memory" -msgstr "Erinnerung" +msgstr "Speicher" #: templates/virtualization/cluster.html:69 #: templates/virtualization/virtualmachine.html:136 @@ -12929,7 +12999,7 @@ msgstr "Gerät zum Cluster hinzufügen %(cluster)s" #: templates/virtualization/cluster_add_devices.html:23 msgid "Device Selection" -msgstr "Auswahl des Geräts" +msgstr "Geräte-Auswahl" #: templates/virtualization/cluster_add_devices.html:31 msgid "Add Devices" @@ -12953,7 +13023,7 @@ msgstr "Cluster-Typ" #: templates/virtualization/virtualdisk.html:18 msgid "Virtual Disk" -msgstr "Virtuelles Laufwerk" +msgstr "Virtuelle Festplatte" #: templates/virtualization/virtualmachine.html:118 #: virtualization/forms/bulk_edit.py:190 @@ -12997,7 +13067,7 @@ msgstr "IKE-Vorschlag" #: templates/vpn/ikeproposal.html:21 vpn/forms/bulk_edit.py:97 #: vpn/forms/bulk_import.py:145 vpn/forms/filtersets.py:101 msgid "Authentication method" -msgstr "Methode der Authentifizierung" +msgstr "Authentifizierungsmethode" #: templates/vpn/ikeproposal.html:25 templates/vpn/ipsecproposal.html:21 #: vpn/forms/bulk_edit.py:102 vpn/forms/bulk_edit.py:172 @@ -13055,11 +13125,11 @@ msgstr "L2VPN-Attribute" #: templates/vpn/l2vpn.html:60 templates/vpn/tunnel.html:76 msgid "Add a Termination" -msgstr "Kündigung hinzufügen" +msgstr "Abschlusspunkt hinzufügen" #: templates/vpn/tunnel.html:9 msgid "Add Termination" -msgstr "Kündigung hinzufügen" +msgstr "Abschlusspunkt hinzufügen" #: templates/vpn/tunnel.html:37 vpn/forms/bulk_edit.py:49 #: vpn/forms/bulk_import.py:48 vpn/forms/filtersets.py:57 @@ -13088,7 +13158,7 @@ msgstr "Tunnel-Gruppe" #: templates/vpn/tunneltermination.html:10 msgid "Tunnel Termination" -msgstr "Tunnel-Terminierung" +msgstr "Tunnel-Abschlusspunkt" #: templates/vpn/tunneltermination.html:35 vpn/forms/bulk_import.py:107 #: vpn/forms/model_forms.py:102 vpn/forms/model_forms.py:138 @@ -13098,7 +13168,7 @@ msgstr "Außerhalb von IP" #: templates/vpn/tunneltermination.html:51 msgid "Peer Terminations" -msgstr "Kündigungen durch Peer" +msgstr "Peer-Abschlusspunkt" #: templates/wireless/inc/authentication_attrs.html:12 msgid "Cipher" @@ -13145,11 +13215,11 @@ msgstr "Inaktiv" #: tenancy/filtersets.py:29 msgid "Parent contact group (ID)" -msgstr "Elternkontaktgruppe (ID)" +msgstr "Übergeordnete Kontaktgruppe (ID)" #: tenancy/filtersets.py:35 msgid "Parent contact group (slug)" -msgstr "Elternkontaktgruppe (Slug)" +msgstr "Übergeordnete Kontaktgruppe (URL-Slug)" #: tenancy/filtersets.py:41 tenancy/filtersets.py:68 tenancy/filtersets.py:111 msgid "Contact group (ID)" @@ -13157,7 +13227,7 @@ msgstr "Kontaktgruppe (ID)" #: tenancy/filtersets.py:48 tenancy/filtersets.py:75 tenancy/filtersets.py:118 msgid "Contact group (slug)" -msgstr "Kontaktgruppe (Slug)" +msgstr "Kontaktgruppe (URL-Slug)" #: tenancy/filtersets.py:105 msgid "Contact (ID)" @@ -13169,7 +13239,7 @@ msgstr "Kontaktrolle (ID)" #: tenancy/filtersets.py:128 msgid "Contact role (slug)" -msgstr "Kontaktrolle (Slug)" +msgstr "Kontaktrolle (URL-Slug)" #: tenancy/filtersets.py:159 msgid "Contact group" @@ -13177,11 +13247,11 @@ msgstr "Kontaktgruppe" #: tenancy/filtersets.py:170 msgid "Parent tenant group (ID)" -msgstr "Gruppe der übergeordneten Mieter (ID)" +msgstr "Übergeordnete Mandantengruppe (ID)" #: tenancy/filtersets.py:176 msgid "Parent tenant group (slug)" -msgstr "Übergeordnete Mietergruppe (Slug)" +msgstr "Übergeordnete Mandantengruppe (URL-Slug)" #: tenancy/filtersets.py:182 tenancy/filtersets.py:202 msgid "Tenant group (ID)" @@ -13193,7 +13263,7 @@ msgstr "Mandantengruppe (ID)" #: tenancy/filtersets.py:242 msgid "Tenant Group (slug)" -msgstr "Mietergruppe (Slug)" +msgstr "Mandantengruppe (URL-Slug)" #: tenancy/forms/bulk_edit.py:66 msgid "Desciption" @@ -13213,11 +13283,11 @@ msgstr "Kontaktgruppen" #: tenancy/models/contacts.py:48 msgid "contact role" -msgstr "Rolle des Ansprechpartners" +msgstr "Kontaktrolle" #: tenancy/models/contacts.py:49 msgid "contact roles" -msgstr "Rollen kontaktieren" +msgstr "Kontaktrollen" #: tenancy/models/contacts.py:68 msgid "title" @@ -13229,11 +13299,11 @@ msgstr "Telefon" #: tenancy/models/contacts.py:78 msgid "email" -msgstr "E-Mail senden" +msgstr "E-Mail" #: tenancy/models/contacts.py:87 msgid "link" -msgstr "Verknüpfung" +msgstr "Link" #: tenancy/models/contacts.py:103 msgid "contact" @@ -13258,11 +13328,11 @@ msgstr "Kontakte können diesem Objekttyp nicht zugewiesen werden ({type})." #: tenancy/models/tenants.py:32 msgid "tenant group" -msgstr "Mietergruppe" +msgstr "Mandantengruppe" #: tenancy/models/tenants.py:33 msgid "tenant groups" -msgstr "Mietergruppen" +msgstr "Mandantengruppen" #: tenancy/models/tenants.py:70 msgid "Tenant name must be unique per group." @@ -13270,23 +13340,25 @@ msgstr "Der Mandantenname muss pro Gruppe eindeutig sein." #: tenancy/models/tenants.py:80 msgid "Tenant slug must be unique per group." -msgstr "Der Tenant Slug muss pro Gruppe einzigartig sein." +msgstr "" +"Die URL-freundliche Mandantenbezeichnung (URL-Slug) muss pro Gruppe " +"einzigartig sein." #: tenancy/models/tenants.py:88 msgid "tenant" -msgstr "Mieter" +msgstr "Mandant" #: tenancy/models/tenants.py:89 msgid "tenants" -msgstr "Mieter" +msgstr "Mandanten" #: tenancy/tables/contacts.py:112 msgid "Contact Title" -msgstr "Titel des Kontakts" +msgstr "Kontakt-Titel" #: tenancy/tables/contacts.py:116 msgid "Contact Phone" -msgstr "Kontakt Telefon" +msgstr "Kontakt-Telefon" #: tenancy/tables/contacts.py:120 msgid "Contact Email" @@ -13294,19 +13366,19 @@ msgstr "Kontakt-E-Mail" #: tenancy/tables/contacts.py:124 msgid "Contact Address" -msgstr "Kontaktadresse" +msgstr "Kontakt-Adresse" #: tenancy/tables/contacts.py:128 msgid "Contact Link" -msgstr "Link kontaktieren" +msgstr "Kontakt-Link" #: tenancy/tables/contacts.py:132 msgid "Contact Description" -msgstr "Beschreibung des Kontakts" +msgstr "Kontakt-Beschreibung" #: users/filtersets.py:33 users/filtersets.py:68 msgid "Permission (ID)" -msgstr "Erlaubnis (ID)" +msgstr "Berechtigung (ID)" #: users/filtersets.py:63 users/filtersets.py:181 msgid "Group (name)" @@ -13322,7 +13394,7 @@ msgstr "Nachname" #: users/forms/bulk_edit.py:43 msgid "Staff status" -msgstr "Status des Personals" +msgstr "Mitarbeiter-Status" #: users/forms/bulk_edit.py:48 msgid "Superuser status" @@ -13350,7 +13422,7 @@ msgstr "Kann hinzufügen" #: users/forms/filtersets.py:106 users/tables.py:92 msgid "Can Change" -msgstr "Kann sich ändern" +msgstr "Kann ändern" #: users/forms/filtersets.py:113 users/tables.py:95 msgid "Can Delete" @@ -13358,7 +13430,7 @@ msgstr "Kann löschen" #: users/forms/model_forms.py:63 msgid "User Interface" -msgstr "Benutzerschnittstelle" +msgstr "Benutzeroberfläche" #: users/forms/model_forms.py:115 msgid "" @@ -13368,7 +13440,7 @@ msgid "" msgstr "" "Schlüssel müssen mindestens 40 Zeichen lang sein. Achten Sie darauf," " Ihren Schlüssel aufzuzeichnen vor dem Absenden dieses Formulars, " -"da es möglicherweise nicht mehr zugänglich ist, sobald das Token erstellt " +"da er möglicherweise nicht mehr zugänglich ist, sobald das Token erstellt " "wurde." #: users/forms/model_forms.py:127 @@ -13445,7 +13517,7 @@ msgstr "" #: users/models/permissions.py:52 msgid "permission" -msgstr "Genehmigung" +msgstr "Berechtigung" #: users/models/permissions.py:53 users/models/users.py:47 msgid "permissions" @@ -13488,7 +13560,7 @@ msgstr "Schreiben aktiviert" #: users/models/tokens.py:55 msgid "Permit create/update/delete operations using this key" msgstr "" -"Erstellen/Aktualisieren/Löschen von Vorgängen mit diesem Schlüssel zulassen" +"Lasse Erstellen/Aktualisieren/Löschen Vorgänge mit diesem Schlüssel zu" #: users/models/tokens.py:66 msgid "allowed IPs" @@ -13505,11 +13577,11 @@ msgstr "" #: users/models/tokens.py:76 msgid "token" -msgstr "Zeichen" +msgstr "Token" #: users/models/tokens.py:77 msgid "tokens" -msgstr "Spielmarken" +msgstr "Token" #: users/models/users.py:57 vpn/models/crypto.py:42 msgid "group" @@ -13591,7 +13663,7 @@ msgstr "Die Länge muss eine positive Zahl sein" #: utilities/conversion.py:47 #, python-brace-format msgid "Invalid value '{length}' for length (must be a number)" -msgstr "Ungültiger Wert '{length}'für die Länge (muss eine Zahl sein)" +msgstr "Ungültiger Wert '{length}' für die Länge (muss eine Zahl sein)" #: utilities/error_handlers.py:31 #, python-brace-format @@ -13599,8 +13671,8 @@ msgid "" "Unable to delete {objects}. {count} dependent objects were " "found: " msgstr "" -"Löschen nicht möglich {objects}. {count} abhängige Objekte " -"wurden gefunden: " +"Löschen von {objects} nicht möglich. {count} abhängige " +"Objekte wurden gefunden: " #: utilities/error_handlers.py:33 msgid "More than 50" @@ -13692,7 +13764,7 @@ msgstr "" #: utilities/forms/fields/csv.py:97 msgid "Object type must be specified as \".\"" -msgstr "Der Objekttyp muss als“ angegeben werden.“" +msgstr "Der Objekttyp muss als \".“ angegeben werden." #: utilities/forms/fields/csv.py:101 msgid "Invalid object type" @@ -13775,7 +13847,7 @@ msgstr "" #: utilities/forms/utils.py:85 utilities/forms/utils.py:87 #, python-brace-format msgid "Range \"{value}\" is invalid." -msgstr "Reichweite“{value}\"ist ungültig." +msgstr "Bereich “{value}\" ist ungültig." #: utilities/forms/utils.py:74 #, python-brace-format @@ -13783,8 +13855,8 @@ msgid "" "Invalid range: Ending value ({end}) must be greater than beginning value " "({begin})." msgstr "" -"Ungültiger Bereich: Endwert ({end}) muss größer als der Anfangswert sein " -"({begin})." +"Ungültiger Bereich: Der Endwert ({end}) muss größer als der Anfangswert sein" +" ({begin})." #: utilities/forms/utils.py:232 #, python-brace-format @@ -13874,7 +13946,7 @@ msgstr "Lesezeichen aufheben" #: utilities/templates/buttons/bookmark.html:13 msgid "Bookmark" -msgstr "Bookmark" +msgstr "Lesezeichen setzen" #: utilities/templates/buttons/clone.html:4 msgid "Clone" @@ -13894,7 +13966,7 @@ msgstr "Exportvorlage hinzufügen" #: utilities/templates/buttons/import.html:4 msgid "Import" -msgstr "Importiere" +msgstr "Importieren" #: utilities/templates/form_helpers/render_field.html:39 msgid "Copy to clipboard" @@ -13972,15 +14044,15 @@ msgstr "Übergeordnete Gruppe (ID)" #: virtualization/filtersets.py:85 msgid "Parent group (slug)" -msgstr "Elterngruppe (Schnecke)" +msgstr "Übergeordnete Gruppe (URL-Slug)" #: virtualization/filtersets.py:89 virtualization/filtersets.py:141 msgid "Cluster type (ID)" -msgstr "Clustertyp (ID)" +msgstr "Cluster-Typ (ID)" #: virtualization/filtersets.py:130 msgid "Cluster group (ID)" -msgstr "Clustergruppe (ID)" +msgstr "Cluster-Gruppe (ID)" #: virtualization/filtersets.py:151 virtualization/filtersets.py:267 msgid "Cluster (ID)" @@ -14010,7 +14082,7 @@ msgstr "Art des Clusters" #: virtualization/forms/bulk_import.py:51 msgid "Assigned cluster group" -msgstr "Zugewiesene Clustergruppe" +msgstr "Zugewiesene Cluster-Gruppe" #: virtualization/forms/bulk_import.py:96 msgid "Assigned cluster" @@ -14026,7 +14098,7 @@ msgid "" "{device} belongs to a different site ({device_site}) than the cluster " "({cluster_site})" msgstr "" -"{device} gehört zu einer anderen Seite ({device_site}) als der Cluster " +"{device} gehört zu einerm anderen Standort ({device_site}) als das Cluster " "({cluster_site})" #: virtualization/forms/model_forms.py:192 @@ -14055,7 +14127,7 @@ msgstr "Cluster-Typ" #: virtualization/models/clusters.py:26 msgid "cluster types" -msgstr "Clustertypen" +msgstr "Cluster-Typen" #: virtualization/models/clusters.py:45 msgid "cluster group" @@ -14080,7 +14152,7 @@ msgid "" "{site}" msgstr "" "{count} Geräte sind als Hosts für diesen Cluster zugewiesen, befinden sich " -"aber nicht vor Ort {site}" +"aber nicht an dem Standort {site}" #: virtualization/models/virtualmachines.py:123 msgid "memory (MB)" @@ -14105,15 +14177,15 @@ msgstr "virtuelle Maschinen" #: virtualization/models/virtualmachines.py:179 msgid "A virtual machine must be assigned to a site and/or cluster." msgstr "" -"Eine virtuelle Maschine muss einer Site und/oder einem Cluster zugewiesen " -"werden." +"Eine virtuelle Maschine muss einem Standort und/oder einem Cluster " +"zugewiesen werden." #: virtualization/models/virtualmachines.py:186 #, python-brace-format msgid "" "The selected cluster ({cluster}) is not assigned to this site ({site})." msgstr "" -"Der ausgewählte Cluster ({cluster}) ist dieser Seite nicht zugeordnet " +"Das ausgewählte Cluster ({cluster}) ist diesem Standort nicht zugeordnet " "({site})." #: virtualization/models/virtualmachines.py:193 @@ -14172,9 +14244,9 @@ 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 "" -"Das unmarkierte VLAN ({untagged_vlan}) muss zu derselben Site gehören wie " -"die übergeordnete virtuelle Maschine der Schnittstelle, oder sie muss global" -" sein." +"Das unmarkierte VLAN ({untagged_vlan}) muss zu demselben Standort gehören " +"wie die übergeordnete virtuelle Maschine der Schnittstelle, oder sie muss " +"global sein." #: virtualization/models/virtualmachines.py:429 msgid "size (GB)" @@ -14182,7 +14254,7 @@ msgstr "Größe (GB)" #: virtualization/models/virtualmachines.py:433 msgid "virtual disk" -msgstr "virtuelles Laufwerk" +msgstr "virtuelle Festplatte" #: virtualization/models/virtualmachines.py:434 msgid "virtual disks" @@ -14206,11 +14278,11 @@ msgstr "GRE" #: vpn/choices.py:56 msgid "Hub" -msgstr "Nabe" +msgstr "Hub" #: vpn/choices.py:57 msgid "Spoke" -msgstr "Sprach" +msgstr "Spoke" #: vpn/choices.py:80 msgid "Aggressive" @@ -14226,7 +14298,7 @@ msgstr "Vorab geteilte Schlüssel" #: vpn/choices.py:93 msgid "Certificates" -msgstr "Bescheinigungen" +msgstr "Zertifikate" #: vpn/choices.py:94 msgid "RSA signatures" @@ -14268,7 +14340,7 @@ msgstr "Tunnelgruppe (ID)" #: vpn/filtersets.py:47 msgid "Tunnel group (slug)" -msgstr "Tunnelgruppe (Schnecke)" +msgstr "Tunnelgruppe (URL-Slug)" #: vpn/filtersets.py:54 msgid "IPSec profile (ID)" @@ -14308,7 +14380,7 @@ msgstr "IPSec-Richtlinie (Name)" #: vpn/filtersets.py:367 msgid "L2VPN (slug)" -msgstr "L2VPN (Schnecke)" +msgstr "L2VPN (URL-Slug)" #: vpn/filtersets.py:431 msgid "VM Interface (ID)" @@ -14387,7 +14459,7 @@ msgstr "L2VPN-Typ" #: vpn/forms/bulk_import.py:287 msgid "Parent device (for interface)" -msgstr "Elterngerät (für Schnittstelle)" +msgstr "Übergeordnetes Gerät (für Schnittstelle)" #: vpn/forms/bulk_import.py:294 msgid "Parent virtual machine (for interface)" @@ -14443,7 +14515,7 @@ msgstr "Zweite Kündigung" #: vpn/forms/model_forms.py:197 msgid "This parameter is required when defining a termination." msgstr "" -"Dieser Parameter ist erforderlich, wenn eine Kündigung definiert wird." +"Dieser Parameter ist erforderlich, wenn ein Abschlusspunkt definiert wird." #: vpn/forms/model_forms.py:320 vpn/forms/model_forms.py:356 msgid "Policy" @@ -14486,7 +14558,7 @@ msgstr "IKE-Vorschläge" #: vpn/models/crypto.py:76 msgid "version" -msgstr "Ausführung" +msgstr "Version" #: vpn/models/crypto.py:88 vpn/models/crypto.py:190 msgid "proposals" @@ -14548,11 +14620,11 @@ msgstr "IPSec-Profile" #: vpn/models/l2vpn.py:116 msgid "L2VPN termination" -msgstr "L2VPN-Kündigung" +msgstr "L2VPN-Abschlusspunkt" #: vpn/models/l2vpn.py:117 msgid "L2VPN terminations" -msgstr "L2VPN-Terminierungen" +msgstr "L2VPN-Abschlusspunkte" #: vpn/models/l2vpn.py:135 #, python-brace-format @@ -14598,11 +14670,11 @@ msgstr "Ein Objekt kann jeweils nur zu einem Tunnel terminiert werden." #: vpn/models/tunnels.py:156 msgid "tunnel termination" -msgstr "Tunnelabschluss" +msgstr "Tunnel-Abschlusspunkt" #: vpn/models/tunnels.py:157 msgid "tunnel terminations" -msgstr "Tunnelabschlüsse" +msgstr "Tunnel-Abschlusspunkte" #: vpn/models/tunnels.py:174 #, python-brace-format @@ -14611,7 +14683,7 @@ msgstr "{name} ist bereits an einen Tunnel angeschlossen ({tunnel})." #: vpn/tables/crypto.py:22 msgid "Authentication Method" -msgstr "Methode der Authentifizierung" +msgstr "Authentifizierungsmethode" #: vpn/tables/crypto.py:25 vpn/tables/crypto.py:97 msgid "Encryption Algorithm" @@ -14643,15 +14715,15 @@ msgstr "Übergeordnetes Objekt" #: vpn/tables/l2vpn.py:74 msgid "Object Site" -msgstr "Objekt-Site" +msgstr "Objekt-Standort" #: wireless/choices.py:11 msgid "Access point" -msgstr "Zugangspunkt" +msgstr "Accesspoint" #: wireless/choices.py:12 msgid "Station" -msgstr "Bahnhof" +msgstr "Client" #: wireless/choices.py:467 msgid "Open" @@ -14674,7 +14746,7 @@ msgstr "Authentifizierungchiffre" #: wireless/forms/bulk_import.py:52 msgid "Bridged VLAN" -msgstr "Überbrücktes VLAN" +msgstr "Gebrücktes VLAN" #: wireless/forms/bulk_import.py:89 wireless/tables/wirelesslink.py:27 msgid "Interface A" @@ -14694,7 +14766,7 @@ msgstr "Authentifizierungchiffre" #: wireless/models.py:68 msgid "wireless LAN group" -msgstr "Wireless-LAN-Gruppe" +msgstr "WLAN-Gruppe" #: wireless/models.py:69 msgid "wireless LAN groups" @@ -14702,7 +14774,7 @@ msgstr "WLAN-Gruppen" #: wireless/models.py:115 msgid "wireless LAN" -msgstr "drahtloses LAN" +msgstr "WLAN" #: wireless/models.py:143 msgid "interface A" diff --git a/netbox/translations/es/LC_MESSAGES/django.po b/netbox/translations/es/LC_MESSAGES/django.po index 4db765e3c..c2a7e16fa 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-05-14 13:22+0000\n" +"POT-Creation-Date: 2024-05-22 17:41+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" @@ -64,19 +64,19 @@ msgid "Your preferences have been updated." msgstr "Se han actualizado tus preferencias." #: circuits/choices.py:21 dcim/choices.py:20 dcim/choices.py:102 -#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1429 -#: dcim/choices.py:1505 dcim/choices.py:1555 virtualization/choices.py:20 +#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1457 +#: dcim/choices.py:1533 dcim/choices.py:1583 virtualization/choices.py:20 #: virtualization/choices.py:45 vpn/choices.py:18 msgid "Planned" msgstr "Planificado" -#: circuits/choices.py:22 netbox/navigation/menu.py:289 +#: circuits/choices.py:22 netbox/navigation/menu.py:290 msgid "Provisioning" msgstr "Aprovisionamiento" #: circuits/choices.py:23 core/tables/tasks.py:22 dcim/choices.py:22 #: dcim/choices.py:103 dcim/choices.py:173 dcim/choices.py:219 -#: dcim/choices.py:1504 dcim/choices.py:1554 extras/tables/tables.py:385 +#: dcim/choices.py:1532 dcim/choices.py:1582 extras/tables/tables.py:385 #: 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 @@ -86,7 +86,7 @@ msgid "Active" msgstr "Activo" #: circuits/choices.py:24 dcim/choices.py:172 dcim/choices.py:218 -#: dcim/choices.py:1503 dcim/choices.py:1556 virtualization/choices.py:24 +#: dcim/choices.py:1531 dcim/choices.py:1584 virtualization/choices.py:24 #: virtualization/choices.py:43 msgid "Offline" msgstr "Desconectado" @@ -101,8 +101,8 @@ msgstr "Desmantelado" #: circuits/filtersets.py:29 circuits/filtersets.py:196 dcim/filtersets.py:97 #: dcim/filtersets.py:151 dcim/filtersets.py:211 dcim/filtersets.py:297 -#: dcim/filtersets.py:406 dcim/filtersets.py:969 dcim/filtersets.py:1295 -#: dcim/filtersets.py:1822 dcim/filtersets.py:2065 dcim/filtersets.py:2123 +#: dcim/filtersets.py:406 dcim/filtersets.py:969 dcim/filtersets.py:1305 +#: dcim/filtersets.py:1832 dcim/filtersets.py:2075 dcim/filtersets.py:2133 #: ipam/filtersets.py:339 ipam/filtersets.py:945 #: virtualization/filtersets.py:45 virtualization/filtersets.py:173 #: vpn/filtersets.py:377 @@ -111,8 +111,8 @@ msgstr "Región (ID)" #: circuits/filtersets.py:36 circuits/filtersets.py:203 dcim/filtersets.py:104 #: dcim/filtersets.py:157 dcim/filtersets.py:218 dcim/filtersets.py:304 -#: dcim/filtersets.py:413 dcim/filtersets.py:976 dcim/filtersets.py:1302 -#: dcim/filtersets.py:1829 dcim/filtersets.py:2072 dcim/filtersets.py:2130 +#: dcim/filtersets.py:413 dcim/filtersets.py:976 dcim/filtersets.py:1312 +#: dcim/filtersets.py:1839 dcim/filtersets.py:2082 dcim/filtersets.py:2140 #: extras/filtersets.py:461 ipam/filtersets.py:346 ipam/filtersets.py:952 #: virtualization/filtersets.py:52 virtualization/filtersets.py:180 #: vpn/filtersets.py:372 @@ -121,8 +121,8 @@ msgstr "Región (slug)" #: circuits/filtersets.py:42 circuits/filtersets.py:209 dcim/filtersets.py:127 #: dcim/filtersets.py:224 dcim/filtersets.py:310 dcim/filtersets.py:419 -#: dcim/filtersets.py:982 dcim/filtersets.py:1308 dcim/filtersets.py:1835 -#: dcim/filtersets.py:2078 dcim/filtersets.py:2136 ipam/filtersets.py:352 +#: dcim/filtersets.py:982 dcim/filtersets.py:1318 dcim/filtersets.py:1845 +#: dcim/filtersets.py:2088 dcim/filtersets.py:2146 ipam/filtersets.py:352 #: ipam/filtersets.py:958 virtualization/filtersets.py:58 #: virtualization/filtersets.py:186 msgid "Site group (ID)" @@ -130,16 +130,18 @@ msgstr "Grupo de sitios (ID)" #: circuits/filtersets.py:49 circuits/filtersets.py:216 dcim/filtersets.py:134 #: dcim/filtersets.py:231 dcim/filtersets.py:317 dcim/filtersets.py:426 -#: dcim/filtersets.py:989 dcim/filtersets.py:1315 dcim/filtersets.py:1842 -#: dcim/filtersets.py:2085 dcim/filtersets.py:2143 extras/filtersets.py:467 +#: dcim/filtersets.py:989 dcim/filtersets.py:1325 dcim/filtersets.py:1852 +#: dcim/filtersets.py:2095 dcim/filtersets.py:2153 extras/filtersets.py:467 #: ipam/filtersets.py:359 ipam/filtersets.py:965 #: virtualization/filtersets.py:65 virtualization/filtersets.py:193 msgid "Site group (slug)" msgstr "Grupo de sitios (slug)" -#: circuits/filtersets.py:54 circuits/forms/bulk_import.py:116 -#: circuits/forms/filtersets.py:48 circuits/forms/filtersets.py:168 -#: circuits/forms/model_forms.py:136 circuits/forms/model_forms.py:152 +#: circuits/filtersets.py:54 circuits/forms/bulk_edit.py:186 +#: circuits/forms/bulk_edit.py:214 circuits/forms/bulk_import.py:126 +#: circuits/forms/filtersets.py:49 circuits/forms/filtersets.py:169 +#: circuits/forms/filtersets.py:207 circuits/forms/model_forms.py:136 +#: circuits/forms/model_forms.py:152 circuits/tables/circuits.py:105 #: dcim/forms/bulk_edit.py:167 dcim/forms/bulk_edit.py:239 #: dcim/forms/bulk_edit.py:575 dcim/forms/bulk_edit.py:771 #: dcim/forms/bulk_import.py:130 dcim/forms/bulk_import.py:184 @@ -147,10 +149,10 @@ msgstr "Grupo de sitios (slug)" #: dcim/forms/bulk_import.py:1262 dcim/forms/bulk_import.py:1290 #: dcim/forms/filtersets.py:85 dcim/forms/filtersets.py:218 #: dcim/forms/filtersets.py:265 dcim/forms/filtersets.py:374 -#: dcim/forms/filtersets.py:681 dcim/forms/filtersets.py:908 -#: dcim/forms/filtersets.py:932 dcim/forms/filtersets.py:1022 -#: dcim/forms/filtersets.py:1060 dcim/forms/filtersets.py:1468 -#: dcim/forms/filtersets.py:1492 dcim/forms/filtersets.py:1516 +#: dcim/forms/filtersets.py:682 dcim/forms/filtersets.py:916 +#: dcim/forms/filtersets.py:940 dcim/forms/filtersets.py:1030 +#: dcim/forms/filtersets.py:1068 dcim/forms/filtersets.py:1476 +#: dcim/forms/filtersets.py:1500 dcim/forms/filtersets.py:1524 #: dcim/forms/model_forms.py:136 dcim/forms/model_forms.py:164 #: dcim/forms/model_forms.py:206 dcim/forms/model_forms.py:406 #: dcim/forms/model_forms.py:668 dcim/forms/object_create.py:391 @@ -160,11 +162,11 @@ msgstr "Grupo de sitios (slug)" #: ipam/forms/bulk_edit.py:270 ipam/forms/bulk_edit.py:448 #: ipam/forms/bulk_edit.py:522 ipam/forms/bulk_import.py:170 #: ipam/forms/bulk_import.py:437 ipam/forms/filtersets.py:153 -#: ipam/forms/filtersets.py:230 ipam/forms/filtersets.py:425 -#: ipam/forms/filtersets.py:489 ipam/forms/model_forms.py:203 -#: ipam/forms/model_forms.py:578 ipam/forms/model_forms.py:673 +#: ipam/forms/filtersets.py:231 ipam/forms/filtersets.py:432 +#: ipam/forms/filtersets.py:496 ipam/forms/model_forms.py:203 +#: ipam/forms/model_forms.py:587 ipam/forms/model_forms.py:682 #: ipam/tables/ip.py:244 ipam/tables/vlans.py:114 ipam/tables/vlans.py:216 -#: templates/circuits/inc/circuit_termination.html:32 +#: templates/circuits/inc/circuit_termination_fields.html:6 #: templates/dcim/device.html:21 templates/dcim/inc/cable_termination.html:8 #: templates/dcim/inc/cable_termination.html:33 #: templates/dcim/location.html:37 templates/dcim/powerpanel.html:22 @@ -201,19 +203,21 @@ msgstr "Sitio (babosa)" msgid "ASN (ID)" msgstr "ASN (ID)" -#: circuits/filtersets.py:71 circuits/forms/filtersets.py:28 +#: circuits/filtersets.py:71 circuits/forms/filtersets.py:29 #: ipam/forms/model_forms.py:157 ipam/models/asns.py:108 #: ipam/models/asns.py:125 ipam/tables/asn.py:41 templates/ipam/asn.html:20 msgid "ASN" msgstr "ASN" #: circuits/filtersets.py:93 circuits/filtersets.py:120 -#: circuits/filtersets.py:154 ipam/filtersets.py:243 +#: circuits/filtersets.py:154 circuits/filtersets.py:281 +#: ipam/filtersets.py:243 msgid "Provider (ID)" msgstr "Proveedor (ID)" #: circuits/filtersets.py:99 circuits/filtersets.py:126 -#: circuits/filtersets.py:160 ipam/filtersets.py:249 +#: circuits/filtersets.py:160 circuits/filtersets.py:287 +#: ipam/filtersets.py:249 msgid "Provider (slug)" msgstr "Proveedor (babosa)" @@ -239,8 +243,8 @@ msgstr "Tipo de circuito (slug)" #: circuits/filtersets.py:221 circuits/filtersets.py:266 #: dcim/filtersets.py:235 dcim/filtersets.py:321 dcim/filtersets.py:394 -#: dcim/filtersets.py:993 dcim/filtersets.py:1320 dcim/filtersets.py:1847 -#: dcim/filtersets.py:2089 dcim/filtersets.py:2148 ipam/filtersets.py:232 +#: dcim/filtersets.py:993 dcim/filtersets.py:1330 dcim/filtersets.py:1857 +#: dcim/filtersets.py:2099 dcim/filtersets.py:2158 ipam/filtersets.py:232 #: ipam/filtersets.py:363 ipam/filtersets.py:969 #: virtualization/filtersets.py:69 virtualization/filtersets.py:197 #: vpn/filtersets.py:387 @@ -252,13 +256,13 @@ msgid "Termination A (ID)" msgstr "Terminación A (ID)" #: circuits/filtersets.py:258 core/filtersets.py:73 core/filtersets.py:132 -#: dcim/filtersets.py:693 dcim/filtersets.py:1289 dcim/filtersets.py:2196 +#: dcim/filtersets.py:693 dcim/filtersets.py:1299 dcim/filtersets.py:2206 #: extras/filtersets.py:41 extras/filtersets.py:63 extras/filtersets.py:92 #: extras/filtersets.py:127 extras/filtersets.py:176 extras/filtersets.py:204 #: extras/filtersets.py:234 extras/filtersets.py:271 extras/filtersets.py:343 #: extras/filtersets.py:390 extras/filtersets.py:450 extras/filtersets.py:613 #: extras/filtersets.py:655 extras/filtersets.py:696 -#: ipam/forms/model_forms.py:438 netbox/filtersets.py:275 +#: ipam/forms/model_forms.py:447 netbox/filtersets.py:275 #: netbox/forms/__init__.py:22 netbox/forms/base.py:165 #: templates/htmx/object_selector.html:28 templates/inc/filter_list.html:45 #: templates/ipam/ipaddress_assign.html:29 templates/search.html:7 @@ -268,9 +272,12 @@ msgstr "Terminación A (ID)" msgid "Search" msgstr "Búsqueda" -#: circuits/filtersets.py:262 circuits/forms/bulk_edit.py:168 -#: circuits/forms/model_forms.py:109 circuits/forms/model_forms.py:131 +#: circuits/filtersets.py:262 circuits/forms/bulk_edit.py:170 +#: circuits/forms/bulk_import.py:117 circuits/forms/filtersets.py:196 +#: circuits/forms/filtersets.py:212 circuits/forms/model_forms.py:109 +#: circuits/forms/model_forms.py:131 circuits/tables/circuits.py:96 #: dcim/forms/connections.py:71 templates/circuits/circuit.html:15 +#: templates/circuits/circuittermination.html:19 #: templates/dcim/inc/cable_termination.html:55 #: templates/dcim/trace/circuit.html:4 msgid "Circuit" @@ -280,48 +287,48 @@ msgstr "Circuito" msgid "ProviderNetwork (ID)" msgstr "Red de proveedores (ID)" -#: circuits/forms/bulk_edit.py:26 circuits/forms/filtersets.py:53 +#: circuits/forms/bulk_edit.py:28 circuits/forms/filtersets.py:54 #: circuits/forms/model_forms.py:27 circuits/tables/providers.py:33 #: dcim/forms/bulk_edit.py:127 dcim/forms/filtersets.py:188 #: dcim/forms/model_forms.py:122 dcim/tables/sites.py:94 -#: ipam/models/asns.py:126 ipam/tables/asn.py:27 ipam/views.py:218 +#: ipam/models/asns.py:126 ipam/tables/asn.py:27 ipam/views.py:219 #: netbox/navigation/menu.py:159 netbox/navigation/menu.py:162 #: templates/circuits/provider.html:23 msgid "ASNs" msgstr "ASNs" -#: circuits/forms/bulk_edit.py:30 circuits/forms/bulk_edit.py:52 -#: circuits/forms/bulk_edit.py:79 circuits/forms/bulk_edit.py:100 -#: circuits/forms/bulk_edit.py:160 core/forms/bulk_edit.py:28 -#: core/tables/plugins.py:29 dcim/forms/bulk_create.py:35 -#: dcim/forms/bulk_edit.py:72 dcim/forms/bulk_edit.py:91 -#: dcim/forms/bulk_edit.py:150 dcim/forms/bulk_edit.py:191 -#: dcim/forms/bulk_edit.py:209 dcim/forms/bulk_edit.py:337 -#: dcim/forms/bulk_edit.py:373 dcim/forms/bulk_edit.py:388 -#: dcim/forms/bulk_edit.py:447 dcim/forms/bulk_edit.py:486 -#: dcim/forms/bulk_edit.py:516 dcim/forms/bulk_edit.py:540 -#: dcim/forms/bulk_edit.py:613 dcim/forms/bulk_edit.py:665 -#: dcim/forms/bulk_edit.py:717 dcim/forms/bulk_edit.py:740 -#: dcim/forms/bulk_edit.py:788 dcim/forms/bulk_edit.py:858 -#: dcim/forms/bulk_edit.py:911 dcim/forms/bulk_edit.py:946 -#: dcim/forms/bulk_edit.py:986 dcim/forms/bulk_edit.py:1030 -#: dcim/forms/bulk_edit.py:1075 dcim/forms/bulk_edit.py:1102 -#: dcim/forms/bulk_edit.py:1120 dcim/forms/bulk_edit.py:1138 -#: dcim/forms/bulk_edit.py:1156 dcim/forms/bulk_edit.py:1575 -#: extras/forms/bulk_edit.py:36 extras/forms/bulk_edit.py:124 -#: extras/forms/bulk_edit.py:153 extras/forms/bulk_edit.py:183 -#: extras/forms/bulk_edit.py:264 extras/forms/bulk_edit.py:288 -#: extras/forms/bulk_edit.py:302 extras/tables/tables.py:58 -#: ipam/forms/bulk_edit.py:51 ipam/forms/bulk_edit.py:71 -#: ipam/forms/bulk_edit.py:91 ipam/forms/bulk_edit.py:115 -#: ipam/forms/bulk_edit.py:144 ipam/forms/bulk_edit.py:173 -#: ipam/forms/bulk_edit.py:192 ipam/forms/bulk_edit.py:261 -#: ipam/forms/bulk_edit.py:305 ipam/forms/bulk_edit.py:353 -#: ipam/forms/bulk_edit.py:396 ipam/forms/bulk_edit.py:424 -#: ipam/forms/bulk_edit.py:554 ipam/forms/bulk_edit.py:585 -#: templates/account/token.html:35 templates/circuits/circuit.html:59 -#: templates/circuits/circuittype.html:26 -#: templates/circuits/inc/circuit_termination.html:114 +#: circuits/forms/bulk_edit.py:32 circuits/forms/bulk_edit.py:54 +#: circuits/forms/bulk_edit.py:81 circuits/forms/bulk_edit.py:102 +#: circuits/forms/bulk_edit.py:162 circuits/forms/bulk_edit.py:181 +#: core/forms/bulk_edit.py:28 core/tables/plugins.py:29 +#: dcim/forms/bulk_create.py:35 dcim/forms/bulk_edit.py:72 +#: dcim/forms/bulk_edit.py:91 dcim/forms/bulk_edit.py:150 +#: dcim/forms/bulk_edit.py:191 dcim/forms/bulk_edit.py:209 +#: dcim/forms/bulk_edit.py:337 dcim/forms/bulk_edit.py:373 +#: dcim/forms/bulk_edit.py:388 dcim/forms/bulk_edit.py:447 +#: dcim/forms/bulk_edit.py:486 dcim/forms/bulk_edit.py:516 +#: dcim/forms/bulk_edit.py:540 dcim/forms/bulk_edit.py:613 +#: dcim/forms/bulk_edit.py:665 dcim/forms/bulk_edit.py:717 +#: dcim/forms/bulk_edit.py:740 dcim/forms/bulk_edit.py:788 +#: dcim/forms/bulk_edit.py:858 dcim/forms/bulk_edit.py:911 +#: dcim/forms/bulk_edit.py:946 dcim/forms/bulk_edit.py:986 +#: dcim/forms/bulk_edit.py:1030 dcim/forms/bulk_edit.py:1075 +#: dcim/forms/bulk_edit.py:1102 dcim/forms/bulk_edit.py:1120 +#: dcim/forms/bulk_edit.py:1138 dcim/forms/bulk_edit.py:1156 +#: dcim/forms/bulk_edit.py:1575 extras/forms/bulk_edit.py:36 +#: extras/forms/bulk_edit.py:124 extras/forms/bulk_edit.py:153 +#: extras/forms/bulk_edit.py:183 extras/forms/bulk_edit.py:264 +#: extras/forms/bulk_edit.py:288 extras/forms/bulk_edit.py:302 +#: extras/tables/tables.py:58 ipam/forms/bulk_edit.py:51 +#: ipam/forms/bulk_edit.py:71 ipam/forms/bulk_edit.py:91 +#: ipam/forms/bulk_edit.py:115 ipam/forms/bulk_edit.py:144 +#: ipam/forms/bulk_edit.py:173 ipam/forms/bulk_edit.py:192 +#: ipam/forms/bulk_edit.py:261 ipam/forms/bulk_edit.py:305 +#: ipam/forms/bulk_edit.py:353 ipam/forms/bulk_edit.py:396 +#: ipam/forms/bulk_edit.py:424 ipam/forms/bulk_edit.py:554 +#: ipam/forms/bulk_edit.py:585 templates/account/token.html:35 +#: templates/circuits/circuit.html:59 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/dcim/cable.html:36 @@ -387,32 +394,35 @@ msgstr "ASNs" msgid "Description" msgstr "Descripción" -#: circuits/forms/bulk_edit.py:47 circuits/forms/bulk_edit.py:69 -#: circuits/forms/bulk_edit.py:119 circuits/forms/bulk_import.py:34 -#: circuits/forms/bulk_import.py:49 circuits/forms/bulk_import.py:75 -#: circuits/forms/filtersets.py:67 circuits/forms/filtersets.py:85 -#: circuits/forms/filtersets.py:113 circuits/forms/filtersets.py:128 +#: circuits/forms/bulk_edit.py:49 circuits/forms/bulk_edit.py:71 +#: circuits/forms/bulk_edit.py:121 circuits/forms/bulk_import.py:35 +#: circuits/forms/bulk_import.py:50 circuits/forms/bulk_import.py:76 +#: circuits/forms/filtersets.py:68 circuits/forms/filtersets.py:86 +#: circuits/forms/filtersets.py:114 circuits/forms/filtersets.py:129 +#: circuits/forms/filtersets.py:197 circuits/forms/filtersets.py:230 #: circuits/forms/model_forms.py:45 circuits/forms/model_forms.py:59 -#: circuits/forms/model_forms.py:91 circuits/tables/circuits.py:55 -#: circuits/tables/providers.py:72 circuits/tables/providers.py:103 -#: templates/circuits/circuit.html:18 templates/circuits/provider.html:20 +#: circuits/forms/model_forms.py:91 circuits/tables/circuits.py:56 +#: circuits/tables/circuits.py:100 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 msgid "Provider" msgstr "Proveedor" -#: circuits/forms/bulk_edit.py:76 circuits/forms/filtersets.py:88 +#: circuits/forms/bulk_edit.py:78 circuits/forms/filtersets.py:89 #: templates/circuits/providernetwork.html:28 msgid "Service ID" msgstr "ID de servicio" -#: circuits/forms/bulk_edit.py:96 circuits/forms/filtersets.py:104 +#: circuits/forms/bulk_edit.py:98 circuits/forms/filtersets.py:105 #: dcim/forms/bulk_edit.py:205 dcim/forms/bulk_edit.py:502 #: dcim/forms/bulk_edit.py:702 dcim/forms/bulk_edit.py:1071 #: dcim/forms/bulk_edit.py:1098 dcim/forms/bulk_edit.py:1571 -#: dcim/forms/filtersets.py:975 dcim/forms/filtersets.py:1351 -#: dcim/forms/filtersets.py:1372 dcim/tables/devices.py:699 +#: dcim/forms/filtersets.py:983 dcim/forms/filtersets.py:1359 +#: dcim/forms/filtersets.py:1380 dcim/tables/devices.py:699 #: dcim/tables/devices.py:759 dcim/tables/devices.py:986 #: dcim/tables/devicetypes.py:245 dcim/tables/devicetypes.py:260 #: dcim/tables/racks.py:32 extras/forms/bulk_edit.py:260 @@ -424,8 +434,8 @@ msgstr "ID de servicio" msgid "Color" msgstr "Color" -#: circuits/forms/bulk_edit.py:114 circuits/forms/bulk_import.py:88 -#: circuits/forms/filtersets.py:123 core/forms/bulk_edit.py:18 +#: circuits/forms/bulk_edit.py:116 circuits/forms/bulk_import.py:89 +#: circuits/forms/filtersets.py:124 core/forms/bulk_edit.py:18 #: core/forms/filtersets.py:30 core/tables/data.py:20 core/tables/jobs.py:18 #: dcim/forms/bulk_edit.py:282 dcim/forms/bulk_edit.py:680 #: dcim/forms/bulk_edit.py:819 dcim/forms/bulk_edit.py:887 @@ -437,18 +447,18 @@ msgstr "Color" #: dcim/forms/bulk_import.py:725 dcim/forms/bulk_import.py:808 #: dcim/forms/bulk_import.py:902 dcim/forms/bulk_import.py:944 #: dcim/forms/bulk_import.py:1161 dcim/forms/bulk_import.py:1327 -#: dcim/forms/filtersets.py:287 dcim/forms/filtersets.py:866 -#: dcim/forms/filtersets.py:965 dcim/forms/filtersets.py:1086 -#: dcim/forms/filtersets.py:1156 dcim/forms/filtersets.py:1178 -#: dcim/forms/filtersets.py:1200 dcim/forms/filtersets.py:1217 -#: dcim/forms/filtersets.py:1251 dcim/forms/filtersets.py:1346 -#: dcim/forms/filtersets.py:1367 dcim/forms/model_forms.py:643 +#: dcim/forms/filtersets.py:287 dcim/forms/filtersets.py:874 +#: dcim/forms/filtersets.py:973 dcim/forms/filtersets.py:1094 +#: dcim/forms/filtersets.py:1164 dcim/forms/filtersets.py:1186 +#: dcim/forms/filtersets.py:1208 dcim/forms/filtersets.py:1225 +#: dcim/forms/filtersets.py:1259 dcim/forms/filtersets.py:1354 +#: dcim/forms/filtersets.py:1375 dcim/forms/model_forms.py:643 #: dcim/forms/model_forms.py:649 dcim/forms/object_import.py:84 #: dcim/forms/object_import.py:113 dcim/forms/object_import.py:145 #: dcim/tables/devices.py:183 dcim/tables/devices.py:815 #: dcim/tables/power.py:77 extras/forms/bulk_import.py:39 #: extras/tables/tables.py:283 extras/tables/tables.py:355 -#: extras/tables/tables.py:473 netbox/tables/tables.py:237 +#: extras/tables/tables.py:473 netbox/tables/tables.py:239 #: 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 @@ -469,13 +479,13 @@ msgstr "Color" msgid "Type" msgstr "Tipo" -#: circuits/forms/bulk_edit.py:124 circuits/forms/bulk_import.py:81 -#: circuits/forms/filtersets.py:136 circuits/forms/model_forms.py:96 +#: circuits/forms/bulk_edit.py:126 circuits/forms/bulk_import.py:82 +#: circuits/forms/filtersets.py:137 circuits/forms/model_forms.py:96 msgid "Provider account" msgstr "Cuenta de proveedor" -#: circuits/forms/bulk_edit.py:132 circuits/forms/bulk_import.py:94 -#: circuits/forms/filtersets.py:147 core/forms/filtersets.py:35 +#: circuits/forms/bulk_edit.py:134 circuits/forms/bulk_import.py:95 +#: circuits/forms/filtersets.py:148 core/forms/filtersets.py:35 #: core/forms/filtersets.py:76 core/tables/data.py:23 core/tables/jobs.py:26 #: core/tables/tasks.py:88 dcim/forms/bulk_edit.py:105 #: dcim/forms/bulk_edit.py:180 dcim/forms/bulk_edit.py:261 @@ -487,9 +497,9 @@ msgstr "Cuenta de proveedor" #: dcim/forms/bulk_import.py:1155 dcim/forms/bulk_import.py:1322 #: dcim/forms/bulk_import.py:1386 dcim/forms/filtersets.py:171 #: dcim/forms/filtersets.py:230 dcim/forms/filtersets.py:282 -#: dcim/forms/filtersets.py:727 dcim/forms/filtersets.py:835 -#: dcim/forms/filtersets.py:869 dcim/forms/filtersets.py:970 -#: dcim/forms/filtersets.py:1081 dcim/tables/devices.py:145 +#: dcim/forms/filtersets.py:728 dcim/forms/filtersets.py:843 +#: dcim/forms/filtersets.py:877 dcim/forms/filtersets.py:978 +#: dcim/forms/filtersets.py:1089 dcim/tables/devices.py:145 #: dcim/tables/devices.py:818 dcim/tables/devices.py:1046 #: dcim/tables/modules.py:69 dcim/tables/power.py:74 dcim/tables/racks.py:66 #: dcim/tables/sites.py:82 dcim/tables/sites.py:133 @@ -497,9 +507,9 @@ msgstr "Cuenta de proveedor" #: ipam/forms/bulk_edit.py:338 ipam/forms/bulk_edit.py:544 #: ipam/forms/bulk_import.py:191 ipam/forms/bulk_import.py:256 #: ipam/forms/bulk_import.py:292 ipam/forms/bulk_import.py:458 -#: ipam/forms/filtersets.py:209 ipam/forms/filtersets.py:274 -#: ipam/forms/filtersets.py:348 ipam/forms/filtersets.py:501 -#: ipam/forms/model_forms.py:457 ipam/tables/ip.py:236 ipam/tables/ip.py:309 +#: ipam/forms/filtersets.py:210 ipam/forms/filtersets.py:281 +#: ipam/forms/filtersets.py:355 ipam/forms/filtersets.py:508 +#: ipam/forms/model_forms.py:466 ipam/tables/ip.py:236 ipam/tables/ip.py:309 #: ipam/tables/ip.py:359 ipam/tables/ip.py:421 ipam/tables/ip.py:448 #: ipam/tables/vlans.py:122 ipam/tables/vlans.py:227 #: templates/circuits/circuit.html:34 templates/core/datasource.html:46 @@ -530,8 +540,8 @@ msgstr "Cuenta de proveedor" msgid "Status" msgstr "Estado" -#: circuits/forms/bulk_edit.py:138 circuits/forms/bulk_import.py:99 -#: circuits/forms/filtersets.py:116 dcim/forms/bulk_edit.py:121 +#: circuits/forms/bulk_edit.py:140 circuits/forms/bulk_import.py:100 +#: circuits/forms/filtersets.py:117 dcim/forms/bulk_edit.py:121 #: dcim/forms/bulk_edit.py:186 dcim/forms/bulk_edit.py:256 #: dcim/forms/bulk_edit.py:368 dcim/forms/bulk_edit.py:588 #: dcim/forms/bulk_edit.py:692 dcim/forms/bulk_edit.py:1599 @@ -541,9 +551,9 @@ msgstr "Estado" #: dcim/forms/bulk_import.py:1379 dcim/forms/filtersets.py:166 #: dcim/forms/filtersets.py:198 dcim/forms/filtersets.py:249 #: dcim/forms/filtersets.py:334 dcim/forms/filtersets.py:355 -#: dcim/forms/filtersets.py:652 dcim/forms/filtersets.py:827 -#: dcim/forms/filtersets.py:889 dcim/forms/filtersets.py:919 -#: dcim/forms/filtersets.py:1041 dcim/tables/power.py:88 +#: dcim/forms/filtersets.py:652 dcim/forms/filtersets.py:835 +#: dcim/forms/filtersets.py:897 dcim/forms/filtersets.py:927 +#: dcim/forms/filtersets.py:1049 dcim/tables/power.py:88 #: extras/filtersets.py:564 extras/forms/filtersets.py:332 #: extras/forms/filtersets.py:405 ipam/forms/bulk_edit.py:41 #: ipam/forms/bulk_edit.py:66 ipam/forms/bulk_edit.py:110 @@ -557,8 +567,8 @@ msgstr "Estado" #: ipam/forms/bulk_import.py:451 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:173 ipam/forms/filtersets.py:260 -#: ipam/forms/filtersets.py:303 ipam/forms/filtersets.py:469 +#: ipam/forms/filtersets.py:174 ipam/forms/filtersets.py:267 +#: ipam/forms/filtersets.py:310 ipam/forms/filtersets.py:476 #: ipam/tables/ip.py:451 ipam/tables/vlans.py:224 #: templates/circuits/circuit.html:38 templates/dcim/cable.html:23 #: templates/dcim/device.html:78 templates/dcim/location.html:49 @@ -589,23 +599,23 @@ msgstr "Estado" msgid "Tenant" msgstr "Inquilino" -#: circuits/forms/bulk_edit.py:143 circuits/forms/filtersets.py:171 +#: circuits/forms/bulk_edit.py:145 circuits/forms/filtersets.py:172 msgid "Install date" msgstr "Fecha de instalación" -#: circuits/forms/bulk_edit.py:148 circuits/forms/filtersets.py:176 +#: circuits/forms/bulk_edit.py:150 circuits/forms/filtersets.py:177 msgid "Termination date" msgstr "Fecha de terminación" -#: circuits/forms/bulk_edit.py:154 circuits/forms/filtersets.py:183 +#: circuits/forms/bulk_edit.py:156 circuits/forms/filtersets.py:184 msgid "Commit rate (Kbps)" msgstr "Velocidad de confirmación (Kbps)" -#: circuits/forms/bulk_edit.py:169 circuits/forms/model_forms.py:110 +#: circuits/forms/bulk_edit.py:171 circuits/forms/model_forms.py:110 msgid "Service Parameters" msgstr "Parámetros de servicio" -#: circuits/forms/bulk_edit.py:170 circuits/forms/model_forms.py:111 +#: circuits/forms/bulk_edit.py:172 circuits/forms/model_forms.py:111 #: dcim/forms/model_forms.py:138 dcim/forms/model_forms.py:180 #: dcim/forms/model_forms.py:228 dcim/forms/model_forms.py:267 #: dcim/forms/model_forms.py:713 dcim/forms/model_forms.py:1636 @@ -624,26 +634,60 @@ msgstr "Parámetros de servicio" msgid "Tenancy" msgstr "Arrendamiento" -#: circuits/forms/bulk_import.py:37 circuits/forms/bulk_import.py:52 -#: circuits/forms/bulk_import.py:78 +#: circuits/forms/bulk_edit.py:191 circuits/forms/bulk_edit.py:215 +#: circuits/forms/model_forms.py:153 circuits/tables/circuits.py:109 +#: templates/circuits/inc/circuit_termination_fields.html:62 +#: templates/circuits/providernetwork.html:17 +msgid "Provider Network" +msgstr "Red de proveedores" + +#: circuits/forms/bulk_edit.py:197 +msgid "Port speed (Kbps)" +msgstr "Velocidad del puerto (Kbps)" + +#: circuits/forms/bulk_edit.py:201 +msgid "Upstream speed (Kbps)" +msgstr "Velocidad de subida (Kbps)" + +#: circuits/forms/bulk_edit.py:204 dcim/forms/bulk_edit.py:849 +#: dcim/forms/bulk_edit.py:1208 dcim/forms/bulk_edit.py:1225 +#: dcim/forms/bulk_edit.py:1242 dcim/forms/bulk_edit.py:1260 +#: dcim/forms/bulk_edit.py:1348 dcim/forms/bulk_edit.py:1487 +#: dcim/forms/bulk_edit.py:1504 +msgid "Mark connected" +msgstr "Marcar conectado" + +#: circuits/forms/bulk_edit.py:217 circuits/forms/model_forms.py:155 +#: templates/circuits/inc/circuit_termination_fields.html:54 +#: templates/dcim/frontport.html:121 templates/dcim/interface.html:193 +#: templates/dcim/rearport.html:111 +msgid "Circuit Termination" +msgstr "Terminación del circuito" + +#: circuits/forms/bulk_edit.py:219 circuits/forms/model_forms.py:157 +msgid "Termination Details" +msgstr "Detalles de terminación" + +#: circuits/forms/bulk_import.py:38 circuits/forms/bulk_import.py:53 +#: circuits/forms/bulk_import.py:79 msgid "Assigned provider" msgstr "Proveedor asignado" -#: circuits/forms/bulk_import.py:69 dcim/forms/bulk_import.py:178 +#: circuits/forms/bulk_import.py:70 dcim/forms/bulk_import.py:178 #: dcim/forms/bulk_import.py:388 dcim/forms/bulk_import.py:1108 #: dcim/forms/bulk_import.py:1187 extras/forms/bulk_import.py:232 msgid "RGB color in hexadecimal. Example:" msgstr "Color RGB en hexadecimal. Ejemplo:" -#: circuits/forms/bulk_import.py:84 +#: circuits/forms/bulk_import.py:85 msgid "Assigned provider account" msgstr "Cuenta de proveedor asignada" -#: circuits/forms/bulk_import.py:91 +#: circuits/forms/bulk_import.py:92 msgid "Type of circuit" msgstr "Tipo de circuito" -#: circuits/forms/bulk_import.py:96 dcim/forms/bulk_import.py:89 +#: circuits/forms/bulk_import.py:97 dcim/forms/bulk_import.py:89 #: dcim/forms/bulk_import.py:148 dcim/forms/bulk_import.py:204 #: dcim/forms/bulk_import.py:452 dcim/forms/bulk_import.py:606 #: dcim/forms/bulk_import.py:1324 ipam/forms/bulk_import.py:193 @@ -654,7 +698,7 @@ msgstr "Tipo de circuito" msgid "Operational status" msgstr "Estado operativo" -#: circuits/forms/bulk_import.py:103 dcim/forms/bulk_import.py:110 +#: circuits/forms/bulk_import.py:104 dcim/forms/bulk_import.py:110 #: dcim/forms/bulk_import.py:155 dcim/forms/bulk_import.py:286 #: dcim/forms/bulk_import.py:428 dcim/forms/bulk_import.py:1171 #: dcim/forms/bulk_import.py:1319 dcim/forms/bulk_import.py:1383 @@ -668,37 +712,46 @@ msgstr "Estado operativo" msgid "Assigned tenant" msgstr "Inquilino asignado" -#: circuits/forms/bulk_import.py:122 circuits/forms/filtersets.py:144 -#: circuits/forms/model_forms.py:142 +#: circuits/forms/bulk_import.py:122 +#: 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 +msgid "Termination" +msgstr "Terminación" + +#: circuits/forms/bulk_import.py:132 circuits/forms/filtersets.py:145 +#: circuits/forms/filtersets.py:225 circuits/forms/model_forms.py:142 msgid "Provider network" msgstr "Red de proveedores" -#: circuits/forms/filtersets.py:27 circuits/forms/filtersets.py:115 -#: dcim/forms/bulk_edit.py:248 dcim/forms/bulk_edit.py:346 -#: dcim/forms/bulk_edit.py:580 dcim/forms/bulk_edit.py:627 -#: dcim/forms/bulk_edit.py:780 dcim/forms/bulk_import.py:189 -#: dcim/forms/bulk_import.py:263 dcim/forms/bulk_import.py:491 -#: dcim/forms/bulk_import.py:1268 dcim/forms/bulk_import.py:1302 -#: dcim/forms/filtersets.py:93 dcim/forms/filtersets.py:246 -#: dcim/forms/filtersets.py:279 dcim/forms/filtersets.py:331 -#: dcim/forms/filtersets.py:382 dcim/forms/filtersets.py:649 -#: dcim/forms/filtersets.py:690 dcim/forms/filtersets.py:888 -#: dcim/forms/filtersets.py:917 dcim/forms/filtersets.py:937 -#: dcim/forms/filtersets.py:1001 dcim/forms/filtersets.py:1031 -#: dcim/forms/filtersets.py:1040 dcim/forms/filtersets.py:1151 -#: dcim/forms/filtersets.py:1173 dcim/forms/filtersets.py:1195 -#: dcim/forms/filtersets.py:1212 dcim/forms/filtersets.py:1232 -#: dcim/forms/filtersets.py:1340 dcim/forms/filtersets.py:1362 -#: dcim/forms/filtersets.py:1383 dcim/forms/filtersets.py:1398 -#: dcim/forms/filtersets.py:1412 dcim/forms/model_forms.py:179 -#: dcim/forms/model_forms.py:211 dcim/forms/model_forms.py:411 -#: dcim/forms/model_forms.py:673 dcim/tables/devices.py:162 -#: dcim/tables/power.py:30 dcim/tables/racks.py:58 dcim/tables/racks.py:143 -#: extras/filtersets.py:488 extras/forms/filtersets.py:329 -#: ipam/forms/bulk_edit.py:457 ipam/forms/filtersets.py:172 -#: ipam/forms/filtersets.py:407 ipam/forms/filtersets.py:430 -#: ipam/forms/filtersets.py:467 ipam/forms/model_forms.py:590 -#: templates/dcim/device.html:25 templates/dcim/device_edit.html:30 +#: circuits/forms/filtersets.py:28 circuits/forms/filtersets.py:116 +#: circuits/forms/filtersets.py:198 dcim/forms/bulk_edit.py:248 +#: dcim/forms/bulk_edit.py:346 dcim/forms/bulk_edit.py:580 +#: dcim/forms/bulk_edit.py:627 dcim/forms/bulk_edit.py:780 +#: dcim/forms/bulk_import.py:189 dcim/forms/bulk_import.py:263 +#: dcim/forms/bulk_import.py:491 dcim/forms/bulk_import.py:1268 +#: dcim/forms/bulk_import.py:1302 dcim/forms/filtersets.py:93 +#: dcim/forms/filtersets.py:246 dcim/forms/filtersets.py:279 +#: dcim/forms/filtersets.py:331 dcim/forms/filtersets.py:382 +#: dcim/forms/filtersets.py:649 dcim/forms/filtersets.py:691 +#: dcim/forms/filtersets.py:896 dcim/forms/filtersets.py:925 +#: dcim/forms/filtersets.py:945 dcim/forms/filtersets.py:1009 +#: dcim/forms/filtersets.py:1039 dcim/forms/filtersets.py:1048 +#: dcim/forms/filtersets.py:1159 dcim/forms/filtersets.py:1181 +#: dcim/forms/filtersets.py:1203 dcim/forms/filtersets.py:1220 +#: dcim/forms/filtersets.py:1240 dcim/forms/filtersets.py:1348 +#: dcim/forms/filtersets.py:1370 dcim/forms/filtersets.py:1391 +#: dcim/forms/filtersets.py:1406 dcim/forms/filtersets.py:1420 +#: dcim/forms/model_forms.py:179 dcim/forms/model_forms.py:211 +#: dcim/forms/model_forms.py:411 dcim/forms/model_forms.py:673 +#: dcim/tables/devices.py:162 dcim/tables/power.py:30 dcim/tables/racks.py:58 +#: dcim/tables/racks.py:143 extras/filtersets.py:488 +#: extras/forms/filtersets.py:329 ipam/forms/bulk_edit.py:457 +#: ipam/forms/filtersets.py:173 ipam/forms/filtersets.py:414 +#: ipam/forms/filtersets.py:437 ipam/forms/filtersets.py:474 +#: ipam/forms/model_forms.py:599 templates/dcim/device.html:25 +#: 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:26 templates/dcim/rackreservation.html:32 @@ -708,12 +761,12 @@ msgstr "Red de proveedores" msgid "Location" msgstr "Ubicación" -#: circuits/forms/filtersets.py:29 circuits/forms/filtersets.py:117 +#: circuits/forms/filtersets.py:30 circuits/forms/filtersets.py:118 #: dcim/forms/filtersets.py:137 dcim/forms/filtersets.py:151 #: dcim/forms/filtersets.py:167 dcim/forms/filtersets.py:199 #: dcim/forms/filtersets.py:250 dcim/forms/filtersets.py:335 #: dcim/forms/filtersets.py:406 dcim/forms/filtersets.py:653 -#: dcim/forms/filtersets.py:1002 netbox/navigation/menu.py:44 +#: dcim/forms/filtersets.py:1010 netbox/navigation/menu.py:44 #: netbox/navigation/menu.py:46 tenancy/forms/filtersets.py:42 #: tenancy/tables/columns.py:70 tenancy/tables/contacts.py:25 #: tenancy/views.py:19 virtualization/forms/filtersets.py:37 @@ -722,22 +775,22 @@ msgstr "Ubicación" msgid "Contacts" msgstr "Contactos" -#: circuits/forms/filtersets.py:34 circuits/forms/filtersets.py:154 +#: circuits/forms/filtersets.py:35 circuits/forms/filtersets.py:155 #: dcim/forms/bulk_edit.py:111 dcim/forms/bulk_edit.py:223 #: dcim/forms/bulk_edit.py:755 dcim/forms/bulk_import.py:92 #: dcim/forms/filtersets.py:71 dcim/forms/filtersets.py:178 #: dcim/forms/filtersets.py:204 dcim/forms/filtersets.py:257 -#: dcim/forms/filtersets.py:360 dcim/forms/filtersets.py:667 -#: dcim/forms/filtersets.py:894 dcim/forms/filtersets.py:924 -#: dcim/forms/filtersets.py:1008 dcim/forms/filtersets.py:1047 -#: dcim/forms/filtersets.py:1460 dcim/forms/filtersets.py:1484 -#: dcim/forms/filtersets.py:1508 dcim/forms/model_forms.py:111 +#: dcim/forms/filtersets.py:360 dcim/forms/filtersets.py:668 +#: dcim/forms/filtersets.py:902 dcim/forms/filtersets.py:932 +#: dcim/forms/filtersets.py:1016 dcim/forms/filtersets.py:1055 +#: dcim/forms/filtersets.py:1468 dcim/forms/filtersets.py:1492 +#: dcim/forms/filtersets.py:1516 dcim/forms/model_forms.py:111 #: dcim/forms/object_create.py:375 dcim/tables/devices.py:148 #: dcim/tables/sites.py:85 extras/filtersets.py:455 #: ipam/forms/bulk_edit.py:206 ipam/forms/bulk_edit.py:438 -#: ipam/forms/bulk_edit.py:512 ipam/forms/filtersets.py:216 -#: ipam/forms/filtersets.py:415 ipam/forms/filtersets.py:475 -#: ipam/forms/model_forms.py:562 templates/dcim/device.html:17 +#: ipam/forms/bulk_edit.py:512 ipam/forms/filtersets.py:217 +#: ipam/forms/filtersets.py:422 ipam/forms/filtersets.py:482 +#: ipam/forms/model_forms.py:571 templates/dcim/device.html:17 #: templates/dcim/rack.html:16 templates/dcim/rackreservation.html:22 #: templates/dcim/region.html:26 templates/dcim/site.html:30 #: templates/ipam/prefix.html:49 templates/ipam/vlan.html:16 @@ -747,42 +800,42 @@ msgstr "Contactos" msgid "Region" msgstr "Región" -#: circuits/forms/filtersets.py:39 circuits/forms/filtersets.py:159 +#: circuits/forms/filtersets.py:40 circuits/forms/filtersets.py:160 #: dcim/forms/bulk_edit.py:231 dcim/forms/bulk_edit.py:763 #: dcim/forms/filtersets.py:76 dcim/forms/filtersets.py:183 #: dcim/forms/filtersets.py:209 dcim/forms/filtersets.py:270 -#: dcim/forms/filtersets.py:365 dcim/forms/filtersets.py:672 -#: dcim/forms/filtersets.py:899 dcim/forms/filtersets.py:1013 -#: dcim/forms/filtersets.py:1052 dcim/forms/object_create.py:383 +#: dcim/forms/filtersets.py:365 dcim/forms/filtersets.py:673 +#: dcim/forms/filtersets.py:907 dcim/forms/filtersets.py:1021 +#: dcim/forms/filtersets.py:1060 dcim/forms/object_create.py:383 #: extras/filtersets.py:472 ipam/forms/bulk_edit.py:211 #: ipam/forms/bulk_edit.py:445 ipam/forms/bulk_edit.py:517 -#: ipam/forms/filtersets.py:221 ipam/forms/filtersets.py:420 -#: ipam/forms/filtersets.py:480 ipam/forms/model_forms.py:575 +#: ipam/forms/filtersets.py:222 ipam/forms/filtersets.py:427 +#: ipam/forms/filtersets.py:487 ipam/forms/model_forms.py:584 #: virtualization/forms/bulk_edit.py:86 virtualization/forms/filtersets.py:69 #: virtualization/forms/filtersets.py:138 #: virtualization/forms/model_forms.py:98 msgid "Site group" msgstr "Grupo de sitios" -#: circuits/forms/filtersets.py:62 circuits/forms/filtersets.py:80 -#: circuits/forms/filtersets.py:99 circuits/forms/filtersets.py:114 +#: circuits/forms/filtersets.py:63 circuits/forms/filtersets.py:81 +#: circuits/forms/filtersets.py:100 circuits/forms/filtersets.py:115 #: core/forms/filtersets.py:64 dcim/forms/bulk_edit.py:726 #: dcim/forms/filtersets.py:165 dcim/forms/filtersets.py:197 -#: dcim/forms/filtersets.py:826 dcim/forms/filtersets.py:918 -#: dcim/forms/filtersets.py:1042 dcim/forms/filtersets.py:1150 -#: dcim/forms/filtersets.py:1172 dcim/forms/filtersets.py:1194 -#: dcim/forms/filtersets.py:1211 dcim/forms/filtersets.py:1228 -#: dcim/forms/filtersets.py:1339 dcim/forms/filtersets.py:1361 -#: dcim/forms/filtersets.py:1382 dcim/forms/filtersets.py:1397 -#: dcim/forms/filtersets.py:1410 extras/forms/filtersets.py:43 +#: dcim/forms/filtersets.py:834 dcim/forms/filtersets.py:926 +#: dcim/forms/filtersets.py:1050 dcim/forms/filtersets.py:1158 +#: dcim/forms/filtersets.py:1180 dcim/forms/filtersets.py:1202 +#: dcim/forms/filtersets.py:1219 dcim/forms/filtersets.py:1236 +#: dcim/forms/filtersets.py:1347 dcim/forms/filtersets.py:1369 +#: dcim/forms/filtersets.py:1390 dcim/forms/filtersets.py:1405 +#: dcim/forms/filtersets.py:1418 extras/forms/filtersets.py:43 #: extras/forms/filtersets.py:112 extras/forms/filtersets.py:143 #: extras/forms/filtersets.py:183 extras/forms/filtersets.py:199 #: extras/forms/filtersets.py:230 extras/forms/filtersets.py:254 #: extras/forms/filtersets.py:450 extras/forms/filtersets.py:488 -#: ipam/forms/filtersets.py:99 ipam/forms/filtersets.py:259 -#: ipam/forms/filtersets.py:300 ipam/forms/filtersets.py:375 -#: ipam/forms/filtersets.py:468 ipam/forms/filtersets.py:527 -#: ipam/forms/filtersets.py:545 netbox/tables/tables.py:253 +#: ipam/forms/filtersets.py:99 ipam/forms/filtersets.py:266 +#: ipam/forms/filtersets.py:307 ipam/forms/filtersets.py:382 +#: ipam/forms/filtersets.py:475 ipam/forms/filtersets.py:534 +#: ipam/forms/filtersets.py:552 netbox/tables/tables.py:255 #: virtualization/forms/filtersets.py:45 #: virtualization/forms/filtersets.py:103 #: virtualization/forms/filtersets.py:194 @@ -791,28 +844,15 @@ msgstr "Grupo de sitios" msgid "Attributes" msgstr "Atributos" -#: circuits/forms/filtersets.py:70 circuits/tables/circuits.py:60 +#: circuits/forms/filtersets.py:71 circuits/tables/circuits.py:61 #: circuits/tables/providers.py:66 templates/circuits/circuit.html:22 #: templates/circuits/provideraccount.html:24 msgid "Account" msgstr "Cuenta" -#: circuits/forms/model_forms.py:153 -#: templates/circuits/inc/circuit_termination.html:88 -#: templates/circuits/providernetwork.html:17 -msgid "Provider Network" -msgstr "Red de proveedores" - -#: circuits/forms/model_forms.py:155 -#: templates/circuits/inc/circuit_termination.html:80 -#: templates/dcim/frontport.html:121 templates/dcim/interface.html:193 -#: templates/dcim/rearport.html:111 -msgid "Circuit Termination" -msgstr "Terminación del circuito" - -#: circuits/forms/model_forms.py:157 -msgid "Termination Details" -msgstr "Detalles de terminación" +#: circuits/forms/filtersets.py:215 +msgid "Term Side" +msgstr "Lado del término" #: circuits/models/circuits.py:25 dcim/models/cables.py:67 #: dcim/models/device_component_templates.py:491 @@ -843,8 +883,8 @@ msgstr "ID de circuito único" #: core/models/jobs.py:85 dcim/models/cables.py:49 dcim/models/devices.py:643 #: dcim/models/devices.py:1155 dcim/models/devices.py:1364 #: dcim/models/power.py:96 dcim/models/racks.py:98 dcim/models/sites.py:154 -#: dcim/models/sites.py:266 ipam/models/ip.py:252 ipam/models/ip.py:521 -#: ipam/models/ip.py:729 ipam/models/vlans.py:175 +#: dcim/models/sites.py:266 ipam/models/ip.py:253 ipam/models/ip.py:522 +#: ipam/models/ip.py:730 ipam/models/vlans.py:175 #: virtualization/models/clusters.py:74 #: virtualization/models/virtualmachines.py:84 vpn/models/tunnels.py:40 #: wireless/models.py:94 wireless/models.py:158 @@ -1018,15 +1058,15 @@ msgstr "red de proveedores" msgid "provider networks" msgstr "redes de proveedores" -#: circuits/tables/circuits.py:29 circuits/tables/providers.py:18 +#: circuits/tables/circuits.py:30 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:13 #: core/tables/tasks.py:11 core/tables/tasks.py:115 #: dcim/forms/filtersets.py:61 dcim/forms/object_create.py:43 #: dcim/tables/devices.py:60 dcim/tables/devices.py:97 #: dcim/tables/devices.py:139 dcim/tables/devices.py:294 -#: dcim/tables/devices.py:376 dcim/tables/devices.py:420 -#: dcim/tables/devices.py:472 dcim/tables/devices.py:524 +#: dcim/tables/devices.py:380 dcim/tables/devices.py:424 +#: dcim/tables/devices.py:476 dcim/tables/devices.py:528 #: dcim/tables/devices.py:644 dcim/tables/devices.py:726 #: dcim/tables/devices.py:776 dcim/tables/devices.py:842 #: dcim/tables/devices.py:957 dcim/tables/devices.py:977 @@ -1040,7 +1080,7 @@ msgstr "redes de proveedores" #: extras/tables/tables.py:209 extras/tables/tables.py:256 #: extras/tables/tables.py:279 extras/tables/tables.py:329 #: extras/tables/tables.py:381 extras/tables/tables.py:404 -#: ipam/forms/bulk_edit.py:391 ipam/forms/filtersets.py:379 +#: ipam/forms/bulk_edit.py:391 ipam/forms/filtersets.py:386 #: ipam/tables/asn.py:16 ipam/tables/ip.py:85 ipam/tables/ip.py:159 #: ipam/tables/services.py:15 ipam/tables/services.py:40 #: ipam/tables/vlans.py:64 ipam/tables/vlans.py:110 ipam/tables/vrfs.py:26 @@ -1106,7 +1146,7 @@ msgstr "redes de proveedores" msgid "Name" msgstr "Nombre" -#: circuits/tables/circuits.py:38 circuits/tables/providers.py:45 +#: circuits/tables/circuits.py:39 circuits/tables/providers.py:45 #: circuits/tables/providers.py:79 netbox/navigation/menu.py:253 #: netbox/navigation/menu.py:257 netbox/navigation/menu.py:259 #: templates/circuits/provider.html:57 @@ -1115,23 +1155,23 @@ msgstr "Nombre" msgid "Circuits" msgstr "Circuitos" -#: circuits/tables/circuits.py:52 templates/circuits/circuit.html:26 +#: circuits/tables/circuits.py:53 templates/circuits/circuit.html:26 msgid "Circuit ID" msgstr "ID de circuito" -#: circuits/tables/circuits.py:65 wireless/forms/model_forms.py:160 +#: circuits/tables/circuits.py:66 wireless/forms/model_forms.py:160 msgid "Side A" msgstr "Lado A" -#: circuits/tables/circuits.py:69 +#: circuits/tables/circuits.py:70 msgid "Side Z" msgstr "Lado Z" -#: circuits/tables/circuits.py:72 templates/circuits/circuit.html:55 +#: circuits/tables/circuits.py:73 templates/circuits/circuit.html:55 msgid "Commit Rate" msgstr "Tasa de compromiso" -#: circuits/tables/circuits.py:75 circuits/tables/providers.py:48 +#: circuits/tables/circuits.py:76 circuits/tables/providers.py:48 #: circuits/tables/providers.py:82 circuits/tables/providers.py:107 #: dcim/tables/devices.py:1019 dcim/tables/devicetypes.py:92 #: dcim/tables/modules.py:29 dcim/tables/modules.py:72 dcim/tables/power.py:39 @@ -1187,12 +1227,12 @@ msgstr "Completado" #: core/choices.py:22 core/choices.py:59 core/constants.py:20 #: core/tables/tasks.py:34 dcim/choices.py:176 dcim/choices.py:222 -#: dcim/choices.py:1506 extras/choices.py:226 virtualization/choices.py:47 +#: dcim/choices.py:1534 extras/choices.py:226 virtualization/choices.py:47 msgid "Failed" msgstr "Falló" -#: core/choices.py:35 netbox/navigation/menu.py:319 -#: netbox/navigation/menu.py:323 templates/extras/script/base.html:14 +#: core/choices.py:35 netbox/navigation/menu.py:320 +#: netbox/navigation/menu.py:324 templates/extras/script/base.html:14 #: templates/extras/script_list.html:7 templates/extras/script_list.html:12 #: templates/extras/script_result.html:17 msgid "Scripts" @@ -1287,8 +1327,8 @@ msgstr "Fuente de datos (nombre)" #: core/forms/bulk_edit.py:25 core/forms/filtersets.py:40 #: core/tables/data.py:26 dcim/forms/bulk_edit.py:1020 -#: dcim/forms/bulk_edit.py:1293 dcim/forms/filtersets.py:1268 -#: dcim/tables/devices.py:549 dcim/tables/devicetypes.py:221 +#: dcim/forms/bulk_edit.py:1293 dcim/forms/filtersets.py:1276 +#: dcim/tables/devices.py:553 dcim/tables/devicetypes.py:221 #: extras/forms/bulk_edit.py:98 extras/forms/bulk_edit.py:162 #: extras/forms/bulk_edit.py:221 extras/forms/filtersets.py:120 #: extras/forms/filtersets.py:207 extras/forms/filtersets.py:268 @@ -1426,10 +1466,10 @@ msgstr "" msgid "Rack Elevations" msgstr "Elevaciones de estanterías" -#: core/forms/model_forms.py:157 dcim/choices.py:1417 +#: core/forms/model_forms.py:157 dcim/choices.py:1445 #: dcim/forms/bulk_edit.py:867 dcim/forms/bulk_edit.py:1250 #: dcim/forms/bulk_edit.py:1268 dcim/tables/racks.py:89 -#: netbox/navigation/menu.py:275 netbox/navigation/menu.py:279 +#: netbox/navigation/menu.py:276 netbox/navigation/menu.py:280 msgid "Power" msgstr "Potencia" @@ -1462,7 +1502,7 @@ msgstr "Validación" msgid "User Preferences" msgstr "Preferencias de usuario" -#: core/forms/model_forms.py:167 dcim/forms/filtersets.py:660 +#: core/forms/model_forms.py:167 dcim/forms/filtersets.py:661 #: templates/core/inc/config_data.html:127 users/forms/model_forms.py:65 msgid "Miscellaneous" msgstr "Misceláneo" @@ -1606,7 +1646,7 @@ msgstr "ruta" msgid "File path relative to the data source's root" msgstr "Ruta del archivo relativa a la raíz de la fuente de datos" -#: core/models/data.py:303 ipam/models/ip.py:502 +#: core/models/data.py:303 ipam/models/ip.py:503 msgid "size" msgstr "tamaño" @@ -1725,7 +1765,7 @@ msgstr "Última actualización" #: core/tables/jobs.py:10 core/tables/tasks.py:76 #: dcim/tables/devicetypes.py:161 extras/tables/tables.py:179 -#: extras/tables/tables.py:350 netbox/tables/tables.py:187 +#: extras/tables/tables.py:350 netbox/tables/tables.py:188 #: templates/dcim/virtualchassis_edit.html:52 utilities/forms/forms.py:73 #: wireless/tables/wirelesslink.py:16 msgid "ID" @@ -1734,7 +1774,7 @@ msgstr "ID" #: core/tables/jobs.py:21 extras/choices.py:41 extras/tables/tables.py:241 #: extras/tables/tables.py:287 extras/tables/tables.py:360 #: extras/tables/tables.py:478 extras/tables/tables.py:509 -#: extras/tables/tables.py:574 netbox/tables/tables.py:241 +#: extras/tables/tables.py:574 netbox/tables/tables.py:243 #: templates/extras/eventrule.html:84 templates/extras/journalentry.html:18 #: templates/extras/objectchange.html:57 tenancy/tables/contacts.py:93 #: vpn/tables/l2vpn.py:64 @@ -1779,7 +1819,7 @@ msgstr "Trabajadores" msgid "Host" msgstr "Anfitrión" -#: core/tables/tasks.py:50 ipam/forms/filtersets.py:535 +#: core/tables/tasks.py:50 ipam/forms/filtersets.py:542 msgid "Port" msgstr "Puerto" @@ -1846,7 +1886,7 @@ msgid "Staging" msgstr "Puesta en escena" #: dcim/choices.py:23 dcim/choices.py:178 dcim/choices.py:223 -#: dcim/choices.py:1430 virtualization/choices.py:23 +#: dcim/choices.py:1458 virtualization/choices.py:23 #: virtualization/choices.py:48 msgid "Decommissioning" msgstr "Desmantelamiento" @@ -1906,7 +1946,7 @@ msgstr "Obsoleto" msgid "Millimeters" msgstr "Milímetros" -#: dcim/choices.py:115 dcim/choices.py:1452 +#: dcim/choices.py:115 dcim/choices.py:1480 msgid "Inches" msgstr "Pulgadas" @@ -1981,7 +2021,7 @@ msgstr "De derecha a izquierda" msgid "Side to rear" msgstr "De lado a atrás" -#: dcim/choices.py:198 dcim/choices.py:1225 +#: dcim/choices.py:198 dcim/choices.py:1253 msgid "Passive" msgstr "Pasivo" @@ -1989,56 +2029,56 @@ msgstr "Pasivo" msgid "Mixed" msgstr "Mezclado" -#: dcim/choices.py:443 dcim/choices.py:680 +#: dcim/choices.py:447 dcim/choices.py:693 msgid "NEMA (Non-locking)" msgstr "NEMA (sin bloqueo)" -#: dcim/choices.py:465 dcim/choices.py:702 +#: dcim/choices.py:469 dcim/choices.py:715 msgid "NEMA (Locking)" msgstr "NEMA (Bloqueo)" -#: dcim/choices.py:488 dcim/choices.py:725 +#: dcim/choices.py:492 dcim/choices.py:738 msgid "California Style" msgstr "Estilo californiano" -#: dcim/choices.py:496 +#: dcim/choices.py:500 msgid "International/ITA" msgstr "Internacional/ITA" -#: dcim/choices.py:526 dcim/choices.py:755 +#: dcim/choices.py:535 dcim/choices.py:773 msgid "Proprietary" msgstr "Proprietario" -#: dcim/choices.py:534 dcim/choices.py:764 dcim/choices.py:1141 -#: dcim/choices.py:1143 dcim/choices.py:1348 dcim/choices.py:1350 +#: dcim/choices.py:543 dcim/choices.py:782 dcim/choices.py:1169 +#: dcim/choices.py:1171 dcim/choices.py:1376 dcim/choices.py:1378 #: netbox/navigation/menu.py:187 msgid "Other" msgstr "Otros" -#: dcim/choices.py:733 +#: dcim/choices.py:746 msgid "ITA/International" msgstr "ITA/Internacional" -#: dcim/choices.py:794 +#: dcim/choices.py:812 msgid "Physical" msgstr "Físico" -#: dcim/choices.py:795 dcim/choices.py:954 +#: dcim/choices.py:813 dcim/choices.py:977 msgid "Virtual" msgstr "Virtual" -#: dcim/choices.py:796 dcim/choices.py:1026 dcim/forms/bulk_edit.py:1408 -#: dcim/forms/filtersets.py:1231 dcim/forms/model_forms.py:933 +#: dcim/choices.py:814 dcim/choices.py:1049 dcim/forms/bulk_edit.py:1408 +#: dcim/forms/filtersets.py:1239 dcim/forms/model_forms.py:933 #: dcim/forms/model_forms.py:1341 netbox/navigation/menu.py:127 #: netbox/navigation/menu.py:131 templates/dcim/interface.html:210 msgid "Wireless" msgstr "inalámbrico" -#: dcim/choices.py:952 +#: dcim/choices.py:975 msgid "Virtual interfaces" msgstr "Interfaces virtuales" -#: dcim/choices.py:955 dcim/forms/bulk_edit.py:1303 +#: dcim/choices.py:978 dcim/forms/bulk_edit.py:1303 #: dcim/forms/bulk_import.py:785 dcim/forms/model_forms.py:919 #: dcim/tables/devices.py:656 templates/dcim/interface.html:106 #: templates/virtualization/vminterface.html:43 @@ -2048,152 +2088,152 @@ msgstr "Interfaces virtuales" msgid "Bridge" msgstr "puente" -#: dcim/choices.py:956 +#: dcim/choices.py:979 msgid "Link Aggregation Group (LAG)" msgstr "Grupo de agregación de enlaces (LAG)" -#: dcim/choices.py:960 +#: dcim/choices.py:983 msgid "Ethernet (fixed)" msgstr "Ethernet (fijo)" -#: dcim/choices.py:974 +#: dcim/choices.py:997 msgid "Ethernet (modular)" msgstr "Ethernet (modular)" -#: dcim/choices.py:1010 +#: dcim/choices.py:1033 msgid "Ethernet (backplane)" msgstr "Ethernet (placa base)" -#: dcim/choices.py:1040 +#: dcim/choices.py:1063 msgid "Cellular" msgstr "Celular" -#: dcim/choices.py:1090 dcim/forms/filtersets.py:303 -#: dcim/forms/filtersets.py:737 dcim/forms/filtersets.py:874 -#: dcim/forms/filtersets.py:1426 templates/dcim/inventoryitem.html:52 +#: dcim/choices.py:1115 dcim/forms/filtersets.py:303 +#: dcim/forms/filtersets.py:738 dcim/forms/filtersets.py:882 +#: dcim/forms/filtersets.py:1434 templates/dcim/inventoryitem.html:52 #: templates/dcim/virtualchassis_edit.html:54 msgid "Serial" msgstr "serie" -#: dcim/choices.py:1105 +#: dcim/choices.py:1130 msgid "Coaxial" msgstr "Coaxial" -#: dcim/choices.py:1122 +#: dcim/choices.py:1150 msgid "Stacking" msgstr "Apilamiento" -#: dcim/choices.py:1172 +#: dcim/choices.py:1200 msgid "Half" msgstr "Mitad" -#: dcim/choices.py:1173 +#: dcim/choices.py:1201 msgid "Full" msgstr "Lleno" -#: dcim/choices.py:1174 netbox/preferences.py:31 wireless/choices.py:480 +#: dcim/choices.py:1202 netbox/preferences.py:31 wireless/choices.py:480 msgid "Auto" msgstr "Auto" -#: dcim/choices.py:1185 +#: dcim/choices.py:1213 msgid "Access" msgstr "Acceso" -#: dcim/choices.py:1186 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 +#: dcim/choices.py:1214 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 #: templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "Etiquetado" -#: dcim/choices.py:1187 +#: dcim/choices.py:1215 msgid "Tagged (All)" msgstr "Etiquetado (Todos)" -#: dcim/choices.py:1216 +#: dcim/choices.py:1244 msgid "IEEE Standard" msgstr "Estándar IEEE" -#: dcim/choices.py:1227 +#: dcim/choices.py:1255 msgid "Passive 24V (2-pair)" msgstr "Pasivo 24 V (2 pares)" -#: dcim/choices.py:1228 +#: dcim/choices.py:1256 msgid "Passive 24V (4-pair)" msgstr "Pasivo de 24 V (4 pares)" -#: dcim/choices.py:1229 +#: dcim/choices.py:1257 msgid "Passive 48V (2-pair)" msgstr "Pasivo 48 V (2 pares)" -#: dcim/choices.py:1230 +#: dcim/choices.py:1258 msgid "Passive 48V (4-pair)" msgstr "Pasivo de 48 V (4 pares)" -#: dcim/choices.py:1292 dcim/choices.py:1388 +#: dcim/choices.py:1320 dcim/choices.py:1416 msgid "Copper" msgstr "Cobre" -#: dcim/choices.py:1315 +#: dcim/choices.py:1343 msgid "Fiber Optic" msgstr "Fibra óptica" -#: dcim/choices.py:1404 +#: dcim/choices.py:1432 msgid "Fiber" msgstr "Fibra" -#: dcim/choices.py:1428 dcim/forms/filtersets.py:1138 +#: dcim/choices.py:1456 dcim/forms/filtersets.py:1146 msgid "Connected" msgstr "Conectado" -#: dcim/choices.py:1447 +#: dcim/choices.py:1475 msgid "Kilometers" msgstr "Kilómetros" -#: dcim/choices.py:1448 templates/dcim/cable_trace.html:65 +#: dcim/choices.py:1476 templates/dcim/cable_trace.html:65 msgid "Meters" msgstr "Medidores" -#: dcim/choices.py:1449 +#: dcim/choices.py:1477 msgid "Centimeters" msgstr "Centímetros" -#: dcim/choices.py:1450 +#: dcim/choices.py:1478 msgid "Miles" msgstr "Millas" -#: dcim/choices.py:1451 templates/dcim/cable_trace.html:66 +#: dcim/choices.py:1479 templates/dcim/cable_trace.html:66 msgid "Feet" msgstr "Pies" -#: dcim/choices.py:1467 templates/dcim/device.html:319 +#: dcim/choices.py:1495 templates/dcim/device.html:319 #: templates/dcim/rack.html:152 msgid "Kilograms" msgstr "Kilogramos" -#: dcim/choices.py:1468 +#: dcim/choices.py:1496 msgid "Grams" msgstr "Gramos" -#: dcim/choices.py:1469 templates/dcim/rack.html:153 +#: dcim/choices.py:1497 templates/dcim/rack.html:153 msgid "Pounds" msgstr "Libras" -#: dcim/choices.py:1470 +#: dcim/choices.py:1498 msgid "Ounces" msgstr "Onzas" -#: dcim/choices.py:1516 tenancy/choices.py:17 +#: dcim/choices.py:1544 tenancy/choices.py:17 msgid "Primary" msgstr "Primaria" -#: dcim/choices.py:1517 +#: dcim/choices.py:1545 msgid "Redundant" msgstr "Redundante" -#: dcim/choices.py:1538 +#: dcim/choices.py:1566 msgid "Single phase" msgstr "Monofásico" -#: dcim/choices.py:1539 +#: dcim/choices.py:1567 msgid "Three-phase" msgstr "Trifásico" @@ -2244,30 +2284,30 @@ msgid "Parent location (slug)" msgstr "Ubicación principal (slug)" #: dcim/filtersets.py:257 dcim/filtersets.py:333 dcim/filtersets.py:432 -#: dcim/filtersets.py:1005 dcim/filtersets.py:1331 dcim/filtersets.py:2101 +#: dcim/filtersets.py:1005 dcim/filtersets.py:1341 dcim/filtersets.py:2111 msgid "Location (ID)" msgstr "Ubicación (ID)" #: dcim/filtersets.py:264 dcim/filtersets.py:340 dcim/filtersets.py:439 -#: dcim/filtersets.py:1337 extras/filtersets.py:494 +#: dcim/filtersets.py:1347 extras/filtersets.py:494 msgid "Location (slug)" msgstr "Ubicación (babosa)" #: dcim/filtersets.py:354 dcim/filtersets.py:840 dcim/filtersets.py:942 -#: dcim/filtersets.py:1769 ipam/filtersets.py:381 ipam/filtersets.py:493 +#: dcim/filtersets.py:1779 ipam/filtersets.py:381 ipam/filtersets.py:493 #: ipam/filtersets.py:989 virtualization/filtersets.py:210 msgid "Role (ID)" msgstr "Función (ID)" #: dcim/filtersets.py:360 dcim/filtersets.py:846 dcim/filtersets.py:948 -#: dcim/filtersets.py:1775 extras/filtersets.py:510 ipam/filtersets.py:387 +#: dcim/filtersets.py:1785 extras/filtersets.py:510 ipam/filtersets.py:387 #: ipam/filtersets.py:499 ipam/filtersets.py:995 #: virtualization/filtersets.py:216 msgid "Role (slug)" msgstr "Rol (babosa)" -#: dcim/filtersets.py:389 dcim/filtersets.py:1010 dcim/filtersets.py:1342 -#: dcim/filtersets.py:2163 +#: dcim/filtersets.py:389 dcim/filtersets.py:1010 dcim/filtersets.py:1352 +#: dcim/filtersets.py:2173 msgid "Rack (ID)" msgstr "Rack (ID)" @@ -2282,14 +2322,14 @@ msgid "User (name)" msgstr "Usuario (nombre)" #: dcim/filtersets.py:481 dcim/filtersets.py:620 dcim/filtersets.py:830 -#: dcim/filtersets.py:881 dcim/filtersets.py:921 dcim/filtersets.py:1233 -#: dcim/filtersets.py:1759 +#: dcim/filtersets.py:881 dcim/filtersets.py:921 dcim/filtersets.py:1243 +#: dcim/filtersets.py:1769 msgid "Manufacturer (ID)" msgstr "Fabricante (ID)" #: dcim/filtersets.py:487 dcim/filtersets.py:626 dcim/filtersets.py:836 -#: dcim/filtersets.py:887 dcim/filtersets.py:927 dcim/filtersets.py:1239 -#: dcim/filtersets.py:1765 +#: dcim/filtersets.py:887 dcim/filtersets.py:927 dcim/filtersets.py:1249 +#: dcim/filtersets.py:1775 msgid "Manufacturer (slug)" msgstr "Fabricante (babosa)" @@ -2311,37 +2351,37 @@ msgstr "Tiene una imagen trasera" #: dcim/filtersets.py:509 dcim/filtersets.py:630 dcim/filtersets.py:1068 #: dcim/forms/filtersets.py:466 dcim/forms/filtersets.py:562 -#: dcim/forms/filtersets.py:776 +#: dcim/forms/filtersets.py:777 msgid "Has console ports" msgstr "Tiene puertos de consola" #: dcim/filtersets.py:513 dcim/filtersets.py:634 dcim/filtersets.py:1072 #: dcim/forms/filtersets.py:473 dcim/forms/filtersets.py:569 -#: dcim/forms/filtersets.py:783 +#: dcim/forms/filtersets.py:784 msgid "Has console server ports" msgstr "Tiene puertos de servidor de consola" #: dcim/filtersets.py:517 dcim/filtersets.py:638 dcim/filtersets.py:1076 #: dcim/forms/filtersets.py:480 dcim/forms/filtersets.py:576 -#: dcim/forms/filtersets.py:790 +#: dcim/forms/filtersets.py:791 msgid "Has power ports" msgstr "Tiene puertos de alimentación" #: dcim/filtersets.py:521 dcim/filtersets.py:642 dcim/filtersets.py:1080 #: dcim/forms/filtersets.py:487 dcim/forms/filtersets.py:583 -#: dcim/forms/filtersets.py:797 +#: dcim/forms/filtersets.py:798 msgid "Has power outlets" msgstr "Tiene tomas de corriente" #: dcim/filtersets.py:525 dcim/filtersets.py:646 dcim/filtersets.py:1084 #: dcim/forms/filtersets.py:494 dcim/forms/filtersets.py:590 -#: dcim/forms/filtersets.py:804 +#: dcim/forms/filtersets.py:805 msgid "Has interfaces" msgstr "Tiene interfaces" #: dcim/filtersets.py:529 dcim/filtersets.py:650 dcim/filtersets.py:1088 #: dcim/forms/filtersets.py:501 dcim/forms/filtersets.py:597 -#: dcim/forms/filtersets.py:811 +#: dcim/forms/filtersets.py:812 msgid "Has pass-through ports" msgstr "Tiene puertos de paso" @@ -2357,19 +2397,19 @@ msgstr "Tiene compartimentos para dispositivos" msgid "Has inventory items" msgstr "Tiene artículos de inventario" -#: dcim/filtersets.py:698 dcim/filtersets.py:937 dcim/filtersets.py:1363 +#: dcim/filtersets.py:698 dcim/filtersets.py:937 dcim/filtersets.py:1373 msgid "Device type (ID)" msgstr "Tipo de dispositivo (ID)" -#: dcim/filtersets.py:717 dcim/filtersets.py:1244 +#: dcim/filtersets.py:717 dcim/filtersets.py:1254 msgid "Module type (ID)" msgstr "Tipo de módulo (ID)" -#: dcim/filtersets.py:752 dcim/filtersets.py:1514 +#: dcim/filtersets.py:752 dcim/filtersets.py:1524 msgid "Power port (ID)" msgstr "Puerto de alimentación (ID)" -#: dcim/filtersets.py:826 dcim/filtersets.py:1755 +#: dcim/filtersets.py:826 dcim/filtersets.py:1765 msgid "Parent inventory item (ID)" msgstr "Artículo del inventario principal (ID)" @@ -2395,8 +2435,8 @@ msgstr "Plataforma (ID)" msgid "Platform (slug)" msgstr "Plataforma (babosa)" -#: dcim/filtersets.py:999 dcim/filtersets.py:1326 dcim/filtersets.py:1853 -#: dcim/filtersets.py:2095 dcim/filtersets.py:2154 +#: dcim/filtersets.py:999 dcim/filtersets.py:1336 dcim/filtersets.py:1863 +#: dcim/filtersets.py:2105 dcim/filtersets.py:2164 msgid "Site name (slug)" msgstr "Nombre del sitio (slug)" @@ -2417,15 +2457,15 @@ msgid "Is full depth" msgstr "Es de profundidad total" #: dcim/filtersets.py:1040 dcim/forms/common.py:18 -#: dcim/forms/filtersets.py:746 dcim/forms/filtersets.py:1283 +#: dcim/forms/filtersets.py:747 dcim/forms/filtersets.py:1291 #: dcim/models/device_components.py:519 virtualization/filtersets.py:230 #: virtualization/filtersets.py:297 virtualization/forms/filtersets.py:172 #: virtualization/forms/filtersets.py:219 msgid "MAC address" msgstr "Dirección MAC" -#: dcim/filtersets.py:1047 dcim/filtersets.py:1201 -#: dcim/forms/filtersets.py:755 dcim/forms/filtersets.py:841 +#: dcim/filtersets.py:1047 dcim/filtersets.py:1211 +#: dcim/forms/filtersets.py:756 dcim/forms/filtersets.py:849 #: virtualization/filtersets.py:234 virtualization/forms/filtersets.py:176 msgid "Has a primary IP" msgstr "Tiene una IP principal" @@ -2446,59 +2486,63 @@ msgstr "Es un miembro del chasis virtual" msgid "OOB IP (ID)" msgstr "LOB VIP (ID)" -#: dcim/filtersets.py:1184 +#: dcim/filtersets.py:1105 +msgid "Has virtual device context" +msgstr "Tiene contexto de dispositivo virtual" + +#: dcim/filtersets.py:1194 msgid "VDC (ID)" msgstr "VDC (IDENTIFICACIÓN)" -#: dcim/filtersets.py:1189 +#: dcim/filtersets.py:1199 msgid "Device model" msgstr "Modelo de dispositivo" -#: dcim/filtersets.py:1194 ipam/filtersets.py:632 vpn/filtersets.py:102 +#: dcim/filtersets.py:1204 ipam/filtersets.py:632 vpn/filtersets.py:102 #: vpn/filtersets.py:420 msgid "Interface (ID)" msgstr "Interfaz (ID)" -#: dcim/filtersets.py:1250 +#: dcim/filtersets.py:1260 msgid "Module type (model)" msgstr "Tipo de módulo (modelo)" -#: dcim/filtersets.py:1256 +#: dcim/filtersets.py:1266 msgid "Module Bay (ID)" msgstr "Bahía de módulos (ID)" -#: dcim/filtersets.py:1260 dcim/filtersets.py:1352 ipam/filtersets.py:611 +#: dcim/filtersets.py:1270 dcim/filtersets.py:1362 ipam/filtersets.py:611 #: ipam/filtersets.py:851 ipam/filtersets.py:1075 #: virtualization/filtersets.py:161 vpn/filtersets.py:398 msgid "Device (ID)" msgstr "Dispositivo (ID)" -#: dcim/filtersets.py:1348 +#: dcim/filtersets.py:1358 msgid "Rack (name)" msgstr "Rack (nombre)" -#: dcim/filtersets.py:1358 ipam/filtersets.py:606 ipam/filtersets.py:846 +#: dcim/filtersets.py:1368 ipam/filtersets.py:606 ipam/filtersets.py:846 #: ipam/filtersets.py:1081 vpn/filtersets.py:393 msgid "Device (name)" msgstr "Dispositivo (nombre)" -#: dcim/filtersets.py:1369 +#: dcim/filtersets.py:1379 msgid "Device type (model)" msgstr "Tipo de dispositivo (modelo)" -#: dcim/filtersets.py:1374 +#: dcim/filtersets.py:1384 msgid "Device role (ID)" msgstr "Función del dispositivo (ID)" -#: dcim/filtersets.py:1380 +#: dcim/filtersets.py:1390 msgid "Device role (slug)" msgstr "Función del dispositivo (slug)" -#: dcim/filtersets.py:1385 +#: dcim/filtersets.py:1395 msgid "Virtual Chassis (ID)" msgstr "Chasis virtual (ID)" -#: dcim/filtersets.py:1391 dcim/forms/filtersets.py:107 +#: dcim/filtersets.py:1401 dcim/forms/filtersets.py:107 #: dcim/tables/devices.py:211 netbox/navigation/menu.py:66 #: templates/dcim/device.html:119 templates/dcim/device_edit.html:93 #: templates/dcim/virtualchassis.html:20 @@ -2507,37 +2551,37 @@ msgstr "Chasis virtual (ID)" msgid "Virtual Chassis" msgstr "Chasis virtual" -#: dcim/filtersets.py:1411 +#: dcim/filtersets.py:1421 msgid "Module (ID)" msgstr "Módulo (ID)" -#: dcim/filtersets.py:1418 +#: dcim/filtersets.py:1428 msgid "Cable (ID)" msgstr "Cable (ID)" -#: dcim/filtersets.py:1527 ipam/forms/bulk_import.py:188 +#: dcim/filtersets.py:1537 ipam/forms/bulk_import.py:188 #: vpn/forms/bulk_import.py:308 msgid "Assigned VLAN" msgstr "VLAN asignada" -#: dcim/filtersets.py:1531 +#: dcim/filtersets.py:1541 msgid "Assigned VID" msgstr "VID asignado" -#: dcim/filtersets.py:1536 dcim/forms/bulk_edit.py:1382 -#: dcim/forms/bulk_import.py:836 dcim/forms/filtersets.py:1326 +#: dcim/filtersets.py:1546 dcim/forms/bulk_edit.py:1382 +#: dcim/forms/bulk_import.py:836 dcim/forms/filtersets.py:1334 #: dcim/forms/model_forms.py:1322 dcim/models/device_components.py:712 -#: dcim/tables/devices.py:618 ipam/filtersets.py:316 ipam/filtersets.py:327 +#: dcim/tables/devices.py:622 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:227 ipam/forms/bulk_edit.py:282 #: ipam/forms/bulk_edit.py:324 ipam/forms/bulk_import.py:156 #: ipam/forms/bulk_import.py:242 ipam/forms/bulk_import.py:278 -#: ipam/forms/filtersets.py:67 ipam/forms/filtersets.py:171 -#: ipam/forms/filtersets.py:302 ipam/forms/model_forms.py:60 +#: ipam/forms/filtersets.py:67 ipam/forms/filtersets.py:172 +#: ipam/forms/filtersets.py:309 ipam/forms/model_forms.py:60 #: ipam/forms/model_forms.py:200 ipam/forms/model_forms.py:245 -#: ipam/forms/model_forms.py:298 ipam/forms/model_forms.py:420 -#: ipam/forms/model_forms.py:434 ipam/forms/model_forms.py:448 -#: ipam/models/ip.py:232 ipam/models/ip.py:511 ipam/models/ip.py:719 +#: ipam/forms/model_forms.py:298 ipam/forms/model_forms.py:429 +#: ipam/forms/model_forms.py:443 ipam/forms/model_forms.py:457 +#: ipam/models/ip.py:233 ipam/models/ip.py:512 ipam/models/ip.py:720 #: ipam/models/vrfs.py:62 ipam/tables/ip.py:241 ipam/tables/ip.py:306 #: ipam/tables/ip.py:356 ipam/tables/ip.py:445 #: templates/dcim/interface.html:133 templates/ipam/ipaddress.html:18 @@ -2553,18 +2597,18 @@ msgstr "VID asignado" msgid "VRF" msgstr "VRF" -#: dcim/filtersets.py:1542 ipam/filtersets.py:322 ipam/filtersets.py:333 +#: dcim/filtersets.py:1552 ipam/filtersets.py:322 ipam/filtersets.py:333 #: ipam/filtersets.py:489 ipam/filtersets.py:590 ipam/filtersets.py:601 msgid "VRF (RD)" msgstr "VRF (ROJO)" -#: dcim/filtersets.py:1547 ipam/filtersets.py:1016 vpn/filtersets.py:361 +#: dcim/filtersets.py:1557 ipam/filtersets.py:1016 vpn/filtersets.py:361 msgid "L2VPN (ID)" msgstr "L2VPN (ID)" -#: dcim/filtersets.py:1553 dcim/forms/filtersets.py:1331 -#: dcim/tables/devices.py:566 ipam/filtersets.py:1022 -#: ipam/forms/filtersets.py:518 ipam/tables/vlans.py:133 +#: dcim/filtersets.py:1563 dcim/forms/filtersets.py:1339 +#: dcim/tables/devices.py:570 ipam/filtersets.py:1022 +#: ipam/forms/filtersets.py:525 ipam/tables/vlans.py:133 #: templates/dcim/interface.html:93 templates/ipam/vlan.html:66 #: templates/vpn/l2vpntermination.html:12 #: virtualization/forms/filtersets.py:229 vpn/forms/bulk_import.py:280 @@ -2573,82 +2617,82 @@ msgstr "L2VPN (ID)" msgid "L2VPN" msgstr "L2VPN" -#: dcim/filtersets.py:1585 +#: dcim/filtersets.py:1595 msgid "Virtual Chassis Interfaces for Device" msgstr "Interfaces de chasis virtuales para dispositivos" -#: dcim/filtersets.py:1590 +#: dcim/filtersets.py:1600 msgid "Virtual Chassis Interfaces for Device (ID)" msgstr "Interfaces de chasis virtuales para dispositivos (ID)" -#: dcim/filtersets.py:1594 +#: dcim/filtersets.py:1604 msgid "Kind of interface" msgstr "Tipo de interfaz" -#: dcim/filtersets.py:1599 virtualization/filtersets.py:289 +#: dcim/filtersets.py:1609 virtualization/filtersets.py:289 msgid "Parent interface (ID)" msgstr "Interfaz principal (ID)" -#: dcim/filtersets.py:1604 virtualization/filtersets.py:294 +#: dcim/filtersets.py:1614 virtualization/filtersets.py:294 msgid "Bridged interface (ID)" msgstr "Interfaz puenteada (ID)" -#: dcim/filtersets.py:1609 +#: dcim/filtersets.py:1619 msgid "LAG interface (ID)" msgstr "Interfaz LAG (ID)" -#: dcim/filtersets.py:1636 dcim/filtersets.py:1648 -#: dcim/forms/filtersets.py:1243 dcim/forms/model_forms.py:1634 +#: dcim/filtersets.py:1646 dcim/filtersets.py:1658 +#: dcim/forms/filtersets.py:1251 dcim/forms/model_forms.py:1634 #: templates/dcim/virtualdevicecontext.html:15 msgid "Virtual Device Context" msgstr "Contexto de dispositivo virtual" -#: dcim/filtersets.py:1642 +#: dcim/filtersets.py:1652 msgid "Virtual Device Context (Identifier)" msgstr "Contexto de dispositivo virtual (identificador)" -#: dcim/filtersets.py:1653 templates/wireless/wirelesslan.html:11 +#: dcim/filtersets.py:1663 templates/wireless/wirelesslan.html:11 #: wireless/forms/model_forms.py:53 msgid "Wireless LAN" msgstr "LAN inalámbrica" -#: dcim/filtersets.py:1657 dcim/tables/devices.py:605 +#: dcim/filtersets.py:1667 dcim/tables/devices.py:609 msgid "Wireless link" msgstr "Enlace inalámbrico" -#: dcim/filtersets.py:1727 +#: dcim/filtersets.py:1737 msgid "Installed module (ID)" msgstr "Módulo instalado (ID)" -#: dcim/filtersets.py:1738 +#: dcim/filtersets.py:1748 msgid "Installed device (ID)" msgstr "Dispositivo instalado (ID)" -#: dcim/filtersets.py:1744 +#: dcim/filtersets.py:1754 msgid "Installed device (name)" msgstr "Dispositivo instalado (nombre)" -#: dcim/filtersets.py:1810 +#: dcim/filtersets.py:1820 msgid "Master (ID)" msgstr "Maestro (ID)" -#: dcim/filtersets.py:1816 +#: dcim/filtersets.py:1826 msgid "Master (name)" msgstr "Maestro (nombre)" -#: dcim/filtersets.py:1858 tenancy/filtersets.py:246 +#: dcim/filtersets.py:1868 tenancy/filtersets.py:246 msgid "Tenant (ID)" msgstr "Inquilino (ID)" -#: dcim/filtersets.py:1864 extras/filtersets.py:570 tenancy/filtersets.py:252 +#: dcim/filtersets.py:1874 extras/filtersets.py:570 tenancy/filtersets.py:252 msgid "Tenant (slug)" msgstr "Inquilino (babosa)" -#: dcim/filtersets.py:1900 dcim/forms/filtersets.py:988 +#: dcim/filtersets.py:1910 dcim/forms/filtersets.py:996 msgid "Unterminated" msgstr "Inacabado" -#: dcim/filtersets.py:2158 +#: dcim/filtersets.py:2168 msgid "Power panel (ID)" msgstr "Panel de alimentación (ID)" @@ -2656,13 +2700,13 @@ msgstr "Panel de alimentación (ID)" #: extras/forms/model_forms.py:443 extras/forms/model_forms.py:495 #: netbox/forms/base.py:84 netbox/forms/mixins.py:81 #: netbox/tables/columns.py:458 -#: templates/circuits/inc/circuit_termination.html:118 +#: 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 msgid "Tags" msgstr "Etiquetas" -#: dcim/forms/bulk_create.py:112 dcim/forms/filtersets.py:1388 +#: dcim/forms/bulk_create.py:112 dcim/forms/filtersets.py:1396 #: dcim/forms/model_forms.py:431 dcim/forms/model_forms.py:486 #: dcim/forms/object_create.py:197 dcim/forms/object_create.py:353 #: dcim/tables/devices.py:170 dcim/tables/devices.py:702 @@ -2684,7 +2728,7 @@ msgstr "" #: dcim/forms/bulk_edit.py:116 dcim/forms/bulk_import.py:99 #: dcim/forms/model_forms.py:116 dcim/tables/sites.py:89 #: ipam/filtersets.py:985 ipam/forms/bulk_edit.py:531 -#: ipam/forms/bulk_import.py:444 ipam/forms/model_forms.py:517 +#: ipam/forms/bulk_import.py:444 ipam/forms/model_forms.py:526 #: ipam/tables/fhrp.py:67 ipam/tables/vlans.py:118 ipam/tables/vlans.py:221 #: templates/dcim/interface.html:284 templates/dcim/site.html:36 #: templates/ipam/inc/panels/fhrp_groups.html:23 templates/ipam/vlan.html:27 @@ -2731,7 +2775,7 @@ msgstr "Zona horaria" #: dcim/forms/bulk_edit.py:267 dcim/forms/bulk_edit.py:1160 #: dcim/forms/bulk_edit.py:1548 dcim/forms/bulk_import.py:207 #: dcim/forms/bulk_import.py:1021 dcim/forms/filtersets.py:300 -#: dcim/forms/filtersets.py:705 dcim/forms/filtersets.py:1418 +#: dcim/forms/filtersets.py:706 dcim/forms/filtersets.py:1426 #: dcim/forms/model_forms.py:219 dcim/forms/model_forms.py:1015 #: dcim/forms/model_forms.py:1454 dcim/forms/object_import.py:181 #: dcim/tables/devices.py:174 dcim/tables/devices.py:810 @@ -2741,10 +2785,10 @@ msgstr "Zona horaria" #: ipam/forms/bulk_edit.py:343 ipam/forms/bulk_edit.py:549 #: ipam/forms/bulk_import.py:196 ipam/forms/bulk_import.py:261 #: ipam/forms/bulk_import.py:297 ipam/forms/bulk_import.py:463 -#: ipam/forms/filtersets.py:236 ipam/forms/filtersets.py:282 -#: ipam/forms/filtersets.py:353 ipam/forms/filtersets.py:509 +#: ipam/forms/filtersets.py:237 ipam/forms/filtersets.py:289 +#: ipam/forms/filtersets.py:360 ipam/forms/filtersets.py:516 #: ipam/forms/model_forms.py:186 ipam/forms/model_forms.py:219 -#: ipam/forms/model_forms.py:248 ipam/forms/model_forms.py:680 +#: ipam/forms/model_forms.py:248 ipam/forms/model_forms.py:689 #: ipam/tables/ip.py:257 ipam/tables/ip.py:313 ipam/tables/ip.py:363 #: ipam/tables/vlans.py:126 ipam/tables/vlans.py:230 #: templates/dcim/device.html:179 @@ -2777,8 +2821,8 @@ msgid "Serial Number" msgstr "Número de serie" #: dcim/forms/bulk_edit.py:277 dcim/forms/filtersets.py:307 -#: dcim/forms/filtersets.py:741 dcim/forms/filtersets.py:878 -#: dcim/forms/filtersets.py:1430 +#: dcim/forms/filtersets.py:742 dcim/forms/filtersets.py:886 +#: dcim/forms/filtersets.py:1438 msgid "Asset tag" msgstr "Etiqueta de activo" @@ -2849,14 +2893,14 @@ msgstr "Unidad de peso" #: dcim/forms/bulk_import.py:498 dcim/forms/bulk_import.py:1309 #: dcim/forms/bulk_import.py:1313 dcim/forms/filtersets.py:102 #: dcim/forms/filtersets.py:340 dcim/forms/filtersets.py:354 -#: dcim/forms/filtersets.py:392 dcim/forms/filtersets.py:700 -#: dcim/forms/filtersets.py:946 dcim/forms/filtersets.py:1078 +#: dcim/forms/filtersets.py:392 dcim/forms/filtersets.py:701 +#: dcim/forms/filtersets.py:954 dcim/forms/filtersets.py:1086 #: dcim/forms/model_forms.py:226 dcim/forms/model_forms.py:248 #: dcim/forms/model_forms.py:422 dcim/forms/model_forms.py:700 #: dcim/forms/object_create.py:400 dcim/tables/devices.py:166 #: dcim/tables/power.py:70 dcim/tables/racks.py:148 -#: ipam/forms/bulk_edit.py:465 ipam/forms/filtersets.py:435 -#: ipam/forms/model_forms.py:601 templates/dcim/device.html:29 +#: ipam/forms/bulk_edit.py:465 ipam/forms/filtersets.py:442 +#: ipam/forms/model_forms.py:610 templates/dcim/device.html:29 #: 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 @@ -2868,7 +2912,7 @@ msgstr "Estante" #: dcim/forms/bulk_edit.py:349 dcim/forms/bulk_edit.py:628 #: dcim/forms/filtersets.py:248 dcim/forms/filtersets.py:333 #: dcim/forms/filtersets.py:416 dcim/forms/filtersets.py:543 -#: dcim/forms/filtersets.py:651 dcim/forms/filtersets.py:853 +#: dcim/forms/filtersets.py:651 dcim/forms/filtersets.py:861 #: dcim/forms/model_forms.py:610 dcim/forms/model_forms.py:1524 #: templates/dcim/device_edit.html:20 msgid "Hardware" @@ -2881,8 +2925,8 @@ msgstr "Hardware" #: dcim/forms/bulk_import.py:353 dcim/forms/bulk_import.py:395 #: dcim/forms/bulk_import.py:431 dcim/forms/bulk_import.py:1027 #: dcim/forms/filtersets.py:429 dcim/forms/filtersets.py:554 -#: dcim/forms/filtersets.py:630 dcim/forms/filtersets.py:710 -#: dcim/forms/filtersets.py:858 dcim/forms/filtersets.py:1423 +#: dcim/forms/filtersets.py:630 dcim/forms/filtersets.py:711 +#: dcim/forms/filtersets.py:866 dcim/forms/filtersets.py:1431 #: dcim/forms/model_forms.py:281 dcim/forms/model_forms.py:293 #: dcim/forms/model_forms.py:339 dcim/forms/model_forms.py:379 #: dcim/forms/model_forms.py:1020 dcim/forms/model_forms.py:1459 @@ -2916,7 +2960,7 @@ msgstr "Excluir de la utilización" #: dcim/forms/bulk_edit.py:431 dcim/forms/bulk_edit.py:603 #: dcim/forms/bulk_import.py:525 dcim/forms/filtersets.py:446 -#: dcim/forms/filtersets.py:732 templates/dcim/device.html:97 +#: dcim/forms/filtersets.py:733 templates/dcim/device.html:97 #: templates/dcim/devicetype.html:65 msgid "Airflow" msgstr "Flujo de aire" @@ -2943,7 +2987,7 @@ msgstr "Función de máquina virtual" #: dcim/forms/bulk_import.py:380 dcim/forms/bulk_import.py:402 #: dcim/forms/bulk_import.py:406 dcim/forms/bulk_import.py:531 #: dcim/forms/bulk_import.py:535 dcim/forms/filtersets.py:619 -#: dcim/forms/filtersets.py:635 dcim/forms/filtersets.py:751 +#: dcim/forms/filtersets.py:635 dcim/forms/filtersets.py:752 #: dcim/forms/model_forms.py:358 dcim/forms/model_forms.py:384 #: dcim/forms/model_forms.py:495 virtualization/forms/bulk_import.py:132 #: virtualization/forms/bulk_import.py:133 @@ -2965,7 +3009,7 @@ msgid "Device role" msgstr "Función del dispositivo" #: dcim/forms/bulk_edit.py:593 dcim/forms/bulk_import.py:443 -#: dcim/forms/filtersets.py:724 dcim/forms/model_forms.py:394 +#: dcim/forms/filtersets.py:725 dcim/forms/model_forms.py:394 #: dcim/forms/model_forms.py:456 dcim/tables/devices.py:187 #: extras/filtersets.py:515 templates/dcim/device.html:183 #: templates/dcim/platform.html:26 @@ -2987,28 +3031,28 @@ msgstr "Plataforma" #: dcim/forms/bulk_import.py:956 dcim/forms/bulk_import.py:968 #: dcim/forms/bulk_import.py:1016 dcim/forms/bulk_import.py:1373 #: dcim/forms/connections.py:24 dcim/forms/filtersets.py:129 -#: dcim/forms/filtersets.py:832 dcim/forms/filtersets.py:962 -#: dcim/forms/filtersets.py:1152 dcim/forms/filtersets.py:1174 -#: dcim/forms/filtersets.py:1196 dcim/forms/filtersets.py:1213 -#: dcim/forms/filtersets.py:1233 dcim/forms/filtersets.py:1341 -#: dcim/forms/filtersets.py:1363 dcim/forms/filtersets.py:1384 -#: dcim/forms/filtersets.py:1399 dcim/forms/filtersets.py:1413 -#: dcim/forms/filtersets.py:1476 dcim/forms/filtersets.py:1500 -#: dcim/forms/filtersets.py:1524 dcim/forms/model_forms.py:573 +#: dcim/forms/filtersets.py:840 dcim/forms/filtersets.py:970 +#: dcim/forms/filtersets.py:1160 dcim/forms/filtersets.py:1182 +#: dcim/forms/filtersets.py:1204 dcim/forms/filtersets.py:1221 +#: dcim/forms/filtersets.py:1241 dcim/forms/filtersets.py:1349 +#: dcim/forms/filtersets.py:1371 dcim/forms/filtersets.py:1392 +#: dcim/forms/filtersets.py:1407 dcim/forms/filtersets.py:1421 +#: dcim/forms/filtersets.py:1484 dcim/forms/filtersets.py:1508 +#: dcim/forms/filtersets.py:1532 dcim/forms/model_forms.py:573 #: dcim/forms/model_forms.py:794 dcim/forms/model_forms.py:1153 #: dcim/forms/model_forms.py:1608 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:290 -#: dcim/tables/devices.py:355 dcim/tables/devices.py:399 -#: dcim/tables/devices.py:444 dcim/tables/devices.py:498 -#: dcim/tables/devices.py:590 dcim/tables/devices.py:692 +#: dcim/tables/devices.py:359 dcim/tables/devices.py:403 +#: dcim/tables/devices.py:448 dcim/tables/devices.py:502 +#: dcim/tables/devices.py:594 dcim/tables/devices.py:692 #: dcim/tables/devices.py:752 dcim/tables/devices.py:802 #: dcim/tables/devices.py:862 dcim/tables/devices.py:914 #: dcim/tables/devices.py:1040 dcim/tables/modules.py:52 #: extras/forms/filtersets.py:330 ipam/forms/bulk_import.py:303 -#: ipam/forms/bulk_import.py:489 ipam/forms/filtersets.py:551 -#: ipam/forms/model_forms.py:317 ipam/forms/model_forms.py:716 -#: ipam/forms/model_forms.py:749 ipam/forms/model_forms.py:775 +#: ipam/forms/bulk_import.py:489 ipam/forms/filtersets.py:558 +#: ipam/forms/model_forms.py:317 ipam/forms/model_forms.py:725 +#: ipam/forms/model_forms.py:758 ipam/forms/model_forms.py:784 #: ipam/tables/vlans.py:176 templates/dcim/consoleport.html:20 #: templates/dcim/consoleserverport.html:20 templates/dcim/device.html:14 #: templates/dcim/device.html:128 templates/dcim/device_edit.html:10 @@ -3063,13 +3107,13 @@ msgstr "Tipo de módulo" msgid "Label" msgstr "Etiqueta" -#: dcim/forms/bulk_edit.py:706 dcim/forms/filtersets.py:979 +#: dcim/forms/bulk_edit.py:706 dcim/forms/filtersets.py:987 #: templates/dcim/cable.html:50 msgid "Length" msgstr "Longitud" #: dcim/forms/bulk_edit.py:711 dcim/forms/bulk_import.py:1174 -#: dcim/forms/bulk_import.py:1177 dcim/forms/filtersets.py:983 +#: dcim/forms/bulk_import.py:1177 dcim/forms/filtersets.py:991 msgid "Length unit" msgstr "Unidad de longitud" @@ -3078,41 +3122,34 @@ msgid "Domain" msgstr "Dominio" #: dcim/forms/bulk_edit.py:803 dcim/forms/bulk_import.py:1296 -#: dcim/forms/filtersets.py:1069 dcim/forms/model_forms.py:695 +#: dcim/forms/filtersets.py:1077 dcim/forms/model_forms.py:695 msgid "Power panel" msgstr "Panel de alimentación" #: dcim/forms/bulk_edit.py:825 dcim/forms/bulk_import.py:1332 -#: dcim/forms/filtersets.py:1091 templates/dcim/powerfeed.html:83 +#: dcim/forms/filtersets.py:1099 templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "Suministro" #: dcim/forms/bulk_edit.py:831 dcim/forms/bulk_import.py:1337 -#: dcim/forms/filtersets.py:1096 templates/dcim/powerfeed.html:95 +#: dcim/forms/filtersets.py:1104 templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "Fase" -#: dcim/forms/bulk_edit.py:837 dcim/forms/filtersets.py:1101 +#: dcim/forms/bulk_edit.py:837 dcim/forms/filtersets.py:1109 #: templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "Tensión" -#: dcim/forms/bulk_edit.py:841 dcim/forms/filtersets.py:1105 +#: dcim/forms/bulk_edit.py:841 dcim/forms/filtersets.py:1113 #: templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "Amperaje" -#: dcim/forms/bulk_edit.py:845 dcim/forms/filtersets.py:1109 +#: dcim/forms/bulk_edit.py:845 dcim/forms/filtersets.py:1117 msgid "Max utilization" msgstr "Utilización máxima" -#: dcim/forms/bulk_edit.py:849 dcim/forms/bulk_edit.py:1208 -#: dcim/forms/bulk_edit.py:1225 dcim/forms/bulk_edit.py:1242 -#: dcim/forms/bulk_edit.py:1260 dcim/forms/bulk_edit.py:1348 -#: dcim/forms/bulk_edit.py:1487 dcim/forms/bulk_edit.py:1504 -msgid "Mark connected" -msgstr "Marcar conectado" - #: dcim/forms/bulk_edit.py:934 msgid "Maximum draw" msgstr "Sorteo máximo" @@ -3146,7 +3183,7 @@ msgid "Management only" msgstr "Solo administración" #: dcim/forms/bulk_edit.py:1037 dcim/forms/bulk_edit.py:1339 -#: dcim/forms/bulk_import.py:821 dcim/forms/filtersets.py:1292 +#: dcim/forms/bulk_import.py:821 dcim/forms/filtersets.py:1300 #: dcim/forms/object_import.py:90 #: dcim/models/device_component_templates.py:411 #: dcim/models/device_components.py:671 @@ -3154,14 +3191,14 @@ msgid "PoE mode" msgstr "Modo PoE" #: dcim/forms/bulk_edit.py:1043 dcim/forms/bulk_edit.py:1345 -#: dcim/forms/bulk_import.py:827 dcim/forms/filtersets.py:1297 +#: dcim/forms/bulk_import.py:827 dcim/forms/filtersets.py:1305 #: dcim/forms/object_import.py:95 #: dcim/models/device_component_templates.py:417 #: dcim/models/device_components.py:677 msgid "PoE type" msgstr "Tipo de PoE" -#: dcim/forms/bulk_edit.py:1049 dcim/forms/filtersets.py:1302 +#: dcim/forms/bulk_edit.py:1049 dcim/forms/filtersets.py:1310 #: dcim/forms/object_import.py:100 msgid "Wireless role" msgstr "Función inalámbrica" @@ -3186,10 +3223,10 @@ msgid "Virtual device contexts" msgstr "Contextos de dispositivos virtuales" #: dcim/forms/bulk_edit.py:1324 dcim/forms/bulk_import.py:659 -#: dcim/forms/bulk_import.py:685 dcim/forms/filtersets.py:1161 -#: dcim/forms/filtersets.py:1183 dcim/forms/filtersets.py:1256 -#: dcim/tables/devices.py:602 -#: templates/circuits/inc/circuit_termination.html:93 +#: dcim/forms/bulk_import.py:685 dcim/forms/filtersets.py:1169 +#: dcim/forms/filtersets.py:1191 dcim/forms/filtersets.py:1264 +#: dcim/tables/devices.py:606 +#: templates/circuits/inc/circuit_termination_fields.html:67 #: templates/dcim/consoleport.html:40 templates/dcim/consoleserverport.html:40 msgid "Speed" msgstr "Velocidad" @@ -3206,20 +3243,20 @@ msgid "Mode" msgstr "Modo" #: dcim/forms/bulk_edit.py:1361 dcim/forms/model_forms.py:1299 -#: ipam/forms/bulk_import.py:177 ipam/forms/filtersets.py:498 +#: ipam/forms/bulk_import.py:177 ipam/forms/filtersets.py:505 #: ipam/models/vlans.py:84 virtualization/forms/bulk_edit.py:240 #: virtualization/forms/model_forms.py:321 msgid "VLAN group" msgstr "Grupo de VLAN" #: dcim/forms/bulk_edit.py:1369 dcim/forms/model_forms.py:1304 -#: dcim/tables/devices.py:575 virtualization/forms/bulk_edit.py:248 +#: dcim/tables/devices.py:579 virtualization/forms/bulk_edit.py:248 #: virtualization/forms/model_forms.py:326 msgid "Untagged VLAN" msgstr "VLAN sin etiquetar" #: dcim/forms/bulk_edit.py:1377 dcim/forms/model_forms.py:1313 -#: dcim/tables/devices.py:581 virtualization/forms/bulk_edit.py:256 +#: dcim/tables/devices.py:585 virtualization/forms/bulk_edit.py:256 #: virtualization/forms/model_forms.py:335 msgid "Tagged VLANs" msgstr "VLAN etiquetadas" @@ -3229,12 +3266,12 @@ msgid "Wireless LAN group" msgstr "Grupo LAN inalámbrico" #: dcim/forms/bulk_edit.py:1392 dcim/forms/model_forms.py:1291 -#: dcim/tables/devices.py:611 netbox/navigation/menu.py:133 +#: dcim/tables/devices.py:615 netbox/navigation/menu.py:133 #: templates/dcim/interface.html:280 wireless/tables/wirelesslan.py:24 msgid "Wireless LANs" msgstr "LAN inalámbricas" -#: dcim/forms/bulk_edit.py:1401 dcim/forms/filtersets.py:1229 +#: dcim/forms/bulk_edit.py:1401 dcim/forms/filtersets.py:1237 #: dcim/forms/model_forms.py:1334 ipam/forms/bulk_edit.py:271 #: ipam/forms/bulk_edit.py:362 ipam/forms/filtersets.py:169 #: templates/dcim/interface.html:122 templates/ipam/prefix.html:95 @@ -3247,7 +3284,7 @@ msgstr "Dirigiéndose" msgid "Operation" msgstr "Operación" -#: dcim/forms/bulk_edit.py:1403 dcim/forms/filtersets.py:1230 +#: dcim/forms/bulk_edit.py:1403 dcim/forms/filtersets.py:1238 #: dcim/forms/model_forms.py:932 dcim/forms/model_forms.py:1337 msgid "PoE" msgstr "PoE" @@ -3404,8 +3441,8 @@ msgstr "Chasis virtual" #: dcim/forms/bulk_import.py:462 dcim/forms/model_forms.py:465 #: dcim/tables/devices.py:207 extras/filtersets.py:548 #: extras/forms/filtersets.py:331 ipam/forms/bulk_edit.py:479 -#: ipam/forms/filtersets.py:408 ipam/forms/filtersets.py:452 -#: ipam/forms/model_forms.py:618 templates/dcim/device.html:231 +#: ipam/forms/filtersets.py:415 ipam/forms/filtersets.py:459 +#: ipam/forms/model_forms.py:627 templates/dcim/device.html:231 #: templates/virtualization/cluster.html:10 #: templates/virtualization/virtualmachine.html:88 #: templates/virtualization/virtualmachine.html:97 @@ -3550,7 +3587,7 @@ msgstr "" msgid "Physical medium" msgstr "Medio físico" -#: dcim/forms/bulk_import.py:813 dcim/forms/filtersets.py:1263 +#: dcim/forms/bulk_import.py:813 dcim/forms/filtersets.py:1271 msgid "Duplex" msgstr "Dúplex" @@ -3568,8 +3605,8 @@ msgstr "Modo operativo IEEE 802.1Q (para interfaces L2)" #: dcim/forms/bulk_import.py:840 ipam/forms/bulk_import.py:160 #: ipam/forms/bulk_import.py:246 ipam/forms/bulk_import.py:282 -#: ipam/forms/filtersets.py:200 ipam/forms/filtersets.py:270 -#: ipam/forms/filtersets.py:329 virtualization/forms/bulk_import.py:175 +#: ipam/forms/filtersets.py:201 ipam/forms/filtersets.py:277 +#: ipam/forms/filtersets.py:336 virtualization/forms/bulk_import.py:175 msgid "Assigned VRF" msgstr "VRF asignado" @@ -3796,29 +3833,33 @@ msgstr "Componentes" msgid "Subdevice role" msgstr "Función de subdispositivo" -#: dcim/forms/filtersets.py:718 +#: dcim/forms/filtersets.py:719 msgid "Model" msgstr "modelo" -#: dcim/forms/filtersets.py:762 +#: dcim/forms/filtersets.py:763 msgid "Has an OOB IP" msgstr "Tiene una IP OOB" -#: dcim/forms/filtersets.py:769 +#: dcim/forms/filtersets.py:770 msgid "Virtual chassis member" msgstr "Miembro del chasis virtual" -#: dcim/forms/filtersets.py:1121 +#: dcim/forms/filtersets.py:819 +msgid "Has virtual device contexts" +msgstr "Tiene contextos de dispositivos virtuales" + +#: dcim/forms/filtersets.py:1129 msgid "Cabled" msgstr "Cableado" -#: dcim/forms/filtersets.py:1128 +#: dcim/forms/filtersets.py:1136 msgid "Occupied" msgstr "Ocupado" -#: dcim/forms/filtersets.py:1153 dcim/forms/filtersets.py:1175 -#: dcim/forms/filtersets.py:1197 dcim/forms/filtersets.py:1214 -#: dcim/forms/filtersets.py:1234 dcim/tables/devices.py:348 +#: dcim/forms/filtersets.py:1161 dcim/forms/filtersets.py:1183 +#: dcim/forms/filtersets.py:1205 dcim/forms/filtersets.py:1222 +#: dcim/forms/filtersets.py:1242 dcim/tables/devices.py:352 #: 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 @@ -3826,40 +3867,40 @@ msgstr "Ocupado" msgid "Connection" msgstr "Conexión" -#: dcim/forms/filtersets.py:1246 extras/forms/bulk_edit.py:316 +#: dcim/forms/filtersets.py:1254 extras/forms/bulk_edit.py:316 #: extras/forms/bulk_import.py:242 extras/forms/filtersets.py:476 #: extras/forms/model_forms.py:551 extras/tables/tables.py:512 #: templates/extras/journalentry.html:30 msgid "Kind" msgstr "Amable" -#: dcim/forms/filtersets.py:1275 +#: dcim/forms/filtersets.py:1283 msgid "Mgmt only" msgstr "Solo administración" -#: dcim/forms/filtersets.py:1287 dcim/forms/model_forms.py:1327 +#: dcim/forms/filtersets.py:1295 dcim/forms/model_forms.py:1327 #: dcim/models/device_components.py:630 templates/dcim/interface.html:129 msgid "WWN" msgstr "WWN" -#: dcim/forms/filtersets.py:1307 +#: dcim/forms/filtersets.py:1315 msgid "Wireless channel" msgstr "Canal inalámbrico" -#: dcim/forms/filtersets.py:1311 +#: dcim/forms/filtersets.py:1319 msgid "Channel frequency (MHz)" msgstr "Frecuencia de canal (MHz)" -#: dcim/forms/filtersets.py:1315 +#: dcim/forms/filtersets.py:1323 msgid "Channel width (MHz)" msgstr "Ancho de canal (MHz)" -#: dcim/forms/filtersets.py:1319 templates/dcim/interface.html:85 +#: dcim/forms/filtersets.py:1327 templates/dcim/interface.html:85 msgid "Transmit power (dBm)" msgstr "Potencia de transmisión (dBm)" -#: dcim/forms/filtersets.py:1342 dcim/forms/filtersets.py:1364 -#: dcim/tables/devices.py:320 templates/dcim/cable.html:12 +#: dcim/forms/filtersets.py:1350 dcim/forms/filtersets.py:1372 +#: dcim/tables/devices.py:324 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 @@ -3867,7 +3908,7 @@ msgstr "Potencia de transmisión (dBm)" msgid "Cable" msgstr "Cable" -#: dcim/forms/filtersets.py:1434 dcim/tables/devices.py:933 +#: dcim/forms/filtersets.py:1442 dcim/tables/devices.py:933 msgid "Discovered" msgstr "Descubierto" @@ -3989,7 +4030,7 @@ msgstr "Plantilla de puerto trasero" #: dcim/tables/connections.py:65 ipam/forms/bulk_import.py:317 #: ipam/forms/model_forms.py:278 ipam/forms/model_forms.py:287 #: ipam/tables/fhrp.py:64 ipam/tables/ip.py:368 ipam/tables/vlans.py:165 -#: templates/circuits/inc/circuit_termination.html:77 +#: 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 @@ -4017,7 +4058,7 @@ msgid "Console Server Port" msgstr "Puerto de servidor de consola" #: dcim/forms/model_forms.py:1092 dcim/forms/model_forms.py:1530 -#: templates/circuits/inc/circuit_termination.html:78 +#: 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 @@ -4026,7 +4067,7 @@ msgstr "Puerto frontal" #: dcim/forms/model_forms.py:1093 dcim/forms/model_forms.py:1531 #: dcim/tables/devices.py:705 -#: templates/circuits/inc/circuit_termination.html:79 +#: 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 @@ -4035,7 +4076,7 @@ msgid "Rear Port" msgstr "Puerto trasero" #: dcim/forms/model_forms.py:1094 dcim/forms/model_forms.py:1532 -#: dcim/tables/connections.py:46 dcim/tables/devices.py:505 +#: dcim/tables/connections.py:46 dcim/tables/devices.py:509 #: templates/dcim/poweroutlet.html:44 templates/dcim/powerport.html:17 msgid "Power Port" msgstr "Puerto de alimentación" @@ -5352,7 +5393,7 @@ msgstr "" #: dcim/models/mixins.py:15 extras/models/configs.py:41 #: extras/models/models.py:341 extras/models/models.py:550 -#: extras/models/search.py:48 ipam/models/ip.py:193 +#: extras/models/search.py:48 ipam/models/ip.py:194 msgid "weight" msgstr "peso" @@ -5847,28 +5888,37 @@ msgstr "Artículos de inventario" msgid "Module Bay" msgstr "Bahía de módulos" -#: dcim/tables/devices.py:326 +#: dcim/tables/devices.py:318 dcim/tables/devicetypes.py:48 +#: dcim/tables/devicetypes.py:140 dcim/views.py:1081 dcim/views.py:2024 +#: netbox/navigation/menu.py:90 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 +msgid "Inventory Items" +msgstr "Artículos de inventario" + +#: dcim/tables/devices.py:330 msgid "Cable Color" msgstr "Color del cable" -#: dcim/tables/devices.py:332 +#: dcim/tables/devices.py:336 msgid "Link Peers" msgstr "Vincula a tus compañeros" -#: dcim/tables/devices.py:335 +#: dcim/tables/devices.py:339 msgid "Mark Connected" msgstr "Marcar conectado" -#: dcim/tables/devices.py:451 +#: dcim/tables/devices.py:455 msgid "Maximum draw (W)" msgstr "Consumo máximo (W)" -#: dcim/tables/devices.py:454 +#: dcim/tables/devices.py:458 msgid "Allocated draw (W)" msgstr "Sorteo asignado (W)" -#: dcim/tables/devices.py:554 ipam/forms/model_forms.py:738 -#: ipam/tables/fhrp.py:28 ipam/views.py:596 ipam/views.py:690 +#: dcim/tables/devices.py:558 ipam/forms/model_forms.py:747 +#: ipam/tables/fhrp.py:28 ipam/views.py:602 ipam/views.py:701 #: netbox/navigation/menu.py:145 netbox/navigation/menu.py:147 #: templates/dcim/interface.html:339 templates/ipam/ipaddress_bulk_add.html:15 #: templates/ipam/service.html:40 templates/virtualization/vminterface.html:85 @@ -5876,12 +5926,12 @@ msgstr "Sorteo asignado (W)" msgid "IP Addresses" msgstr "Direcciones IP" -#: dcim/tables/devices.py:560 netbox/navigation/menu.py:189 +#: dcim/tables/devices.py:564 netbox/navigation/menu.py:189 #: templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "Grupos FHRP" -#: dcim/tables/devices.py:572 templates/dcim/interface.html:89 +#: 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 @@ -5890,24 +5940,15 @@ msgstr "Grupos FHRP" msgid "Tunnel" msgstr "Túnel" -#: dcim/tables/devices.py:597 dcim/tables/devicetypes.py:224 +#: dcim/tables/devices.py:601 dcim/tables/devicetypes.py:224 #: templates/dcim/interface.html:65 msgid "Management Only" msgstr "Solo administración" -#: dcim/tables/devices.py:615 +#: dcim/tables/devices.py:619 msgid "VDCs" msgstr "VDC" -#: dcim/tables/devices.py:623 dcim/tables/devicetypes.py:48 -#: dcim/tables/devicetypes.py:140 dcim/views.py:1081 dcim/views.py:2024 -#: netbox/navigation/menu.py:90 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 -msgid "Inventory Items" -msgstr "Artículos de inventario" - #: dcim/tables/devices.py:870 templates/dcim/modulebay.html:49 msgid "Installed Module" msgstr "Módulo instalado" @@ -6023,7 +6064,7 @@ msgstr "Bahías de dispositivos" msgid "Module Bays" msgstr "Bahías de módulos" -#: dcim/tables/power.py:36 netbox/navigation/menu.py:281 +#: dcim/tables/power.py:36 netbox/navigation/menu.py:282 #: templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "Fuentes de alimentación" @@ -6508,7 +6549,7 @@ msgid "Cluster type (slug)" msgstr "Tipo de clúster (babosa)" #: extras/filtersets.py:537 ipam/forms/bulk_edit.py:476 -#: ipam/forms/filtersets.py:457 ipam/forms/model_forms.py:615 +#: ipam/forms/filtersets.py:464 ipam/forms/model_forms.py:624 #: virtualization/forms/filtersets.py:112 msgid "Cluster group" msgstr "Grupo de clústeres" @@ -7016,7 +7057,7 @@ msgid "Tenants" msgstr "Inquilinos" #: extras/forms/model_forms.py:458 ipam/forms/filtersets.py:142 -#: ipam/forms/filtersets.py:546 ipam/forms/model_forms.py:321 +#: ipam/forms/filtersets.py:553 ipam/forms/model_forms.py:321 #: 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:311 @@ -7846,11 +7887,11 @@ msgstr "secuencia de comandos" msgid "scripts" msgstr "scripts" -#: extras/models/scripts.py:110 +#: extras/models/scripts.py:111 msgid "script module" msgstr "módulo de script" -#: extras/models/scripts.py:111 +#: extras/models/scripts.py:112 msgid "script modules" msgstr "módulos de script" @@ -8111,7 +8152,7 @@ msgstr "Widget eliminado: " msgid "Error deleting widget: " msgstr "Error al eliminar el widget: " -#: extras/views.py:1081 +#: extras/views.py:1101 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á " @@ -8261,7 +8302,7 @@ msgid "Prefixes which contain this prefix or IP" msgstr "Prefijos que contienen este prefijo o IP" #: ipam/filtersets.py:304 ipam/filtersets.py:572 ipam/forms/bulk_edit.py:327 -#: ipam/forms/filtersets.py:195 ipam/forms/filtersets.py:324 +#: ipam/forms/filtersets.py:196 ipam/forms/filtersets.py:331 msgid "Mask length" msgstr "Longitud de la máscara" @@ -8274,7 +8315,7 @@ msgid "VLAN number (1-4094)" msgstr "Número de VLAN (1-4094)" #: ipam/filtersets.py:471 ipam/filtersets.py:475 ipam/filtersets.py:567 -#: ipam/forms/model_forms.py:452 templates/tenancy/contact.html:53 +#: ipam/forms/model_forms.py:461 templates/tenancy/contact.html:53 #: tenancy/forms/bulk_edit.py:113 msgid "Address" msgstr "Dirección" @@ -8334,7 +8375,7 @@ msgstr "Dirección IP interna de NAT (ID)" msgid "IP address (ID)" msgstr "Dirección IP (ID)" -#: ipam/filtersets.py:1102 ipam/models/ip.py:787 +#: ipam/filtersets.py:1102 ipam/models/ip.py:788 msgid "IP address" msgstr "dirección IP" @@ -8390,7 +8431,7 @@ msgstr "Es privado" #: ipam/forms/filtersets.py:148 ipam/forms/model_forms.py:94 #: ipam/forms/model_forms.py:107 ipam/forms/model_forms.py:129 #: ipam/forms/model_forms.py:147 ipam/models/asns.py:31 -#: ipam/models/asns.py:103 ipam/models/ip.py:70 ipam/models/ip.py:89 +#: 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 @@ -8405,36 +8446,36 @@ msgstr "Fecha añadida" msgid "Prefix length" msgstr "Longitud del prefijo" -#: ipam/forms/bulk_edit.py:253 ipam/forms/filtersets.py:240 +#: ipam/forms/bulk_edit.py:253 ipam/forms/filtersets.py:241 #: templates/ipam/prefix.html:85 msgid "Is a pool" msgstr "Es una piscina" #: ipam/forms/bulk_edit.py:258 ipam/forms/bulk_edit.py:302 -#: ipam/forms/filtersets.py:247 ipam/forms/filtersets.py:286 -#: ipam/models/ip.py:271 ipam/models/ip.py:538 +#: ipam/forms/filtersets.py:248 ipam/forms/filtersets.py:293 +#: ipam/models/ip.py:272 ipam/models/ip.py:539 msgid "Treat as fully utilized" msgstr "Tratar como si se hubiera utilizado por completo" -#: ipam/forms/bulk_edit.py:350 ipam/models/ip.py:771 +#: ipam/forms/bulk_edit.py:350 ipam/models/ip.py:772 msgid "DNS name" msgstr "Nombre DNS" #: ipam/forms/bulk_edit.py:371 ipam/forms/bulk_edit.py:572 #: ipam/forms/bulk_import.py:393 ipam/forms/bulk_import.py:477 -#: ipam/forms/bulk_import.py:503 ipam/forms/filtersets.py:383 -#: ipam/forms/filtersets.py:530 templates/ipam/fhrpgroup.html:22 +#: ipam/forms/bulk_import.py:503 ipam/forms/filtersets.py:390 +#: ipam/forms/filtersets.py:537 templates/ipam/fhrpgroup.html:22 #: templates/ipam/inc/panels/fhrp_groups.html:24 #: templates/ipam/service.html:32 templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "Protocolo" -#: ipam/forms/bulk_edit.py:378 ipam/forms/filtersets.py:390 +#: ipam/forms/bulk_edit.py:378 ipam/forms/filtersets.py:397 #: ipam/tables/fhrp.py:22 templates/ipam/fhrpgroup.html:26 msgid "Group ID" msgstr "ID de grupo" -#: ipam/forms/bulk_edit.py:383 ipam/forms/filtersets.py:395 +#: ipam/forms/bulk_edit.py:383 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 @@ -8442,12 +8483,12 @@ msgstr "ID de grupo" msgid "Authentication type" msgstr "Tipo de autenticación" -#: ipam/forms/bulk_edit.py:388 ipam/forms/filtersets.py:399 +#: ipam/forms/bulk_edit.py:388 ipam/forms/filtersets.py:406 msgid "Authentication key" msgstr "Clave de autenticación" -#: ipam/forms/bulk_edit.py:405 ipam/forms/filtersets.py:376 -#: ipam/forms/model_forms.py:463 netbox/navigation/menu.py:369 +#: ipam/forms/bulk_edit.py:405 ipam/forms/filtersets.py:383 +#: ipam/forms/model_forms.py:472 netbox/navigation/menu.py:370 #: templates/ipam/fhrpgroup.html:49 #: templates/wireless/inc/authentication_attrs.html:5 #: wireless/forms/bulk_edit.py:91 wireless/forms/bulk_edit.py:138 @@ -8464,11 +8505,11 @@ msgstr "VLAN (VID) secundaria mínima" msgid "Maximum child VLAN VID" msgstr "VLAN (VID) secundaria máxima" -#: ipam/forms/bulk_edit.py:429 ipam/forms/model_forms.py:557 +#: ipam/forms/bulk_edit.py:429 ipam/forms/model_forms.py:566 msgid "Scope type" msgstr "Tipo de ámbito" -#: ipam/forms/bulk_edit.py:491 ipam/forms/model_forms.py:632 +#: ipam/forms/bulk_edit.py:491 ipam/forms/model_forms.py:641 #: ipam/tables/vlans.py:71 templates/ipam/vlangroup.html:38 msgid "Scope" msgstr "Alcance" @@ -8477,8 +8518,8 @@ msgstr "Alcance" msgid "Site & Group" msgstr "Sitio y grupo" -#: ipam/forms/bulk_edit.py:577 ipam/forms/model_forms.py:696 -#: ipam/forms/model_forms.py:728 ipam/tables/services.py:19 +#: ipam/forms/bulk_edit.py:577 ipam/forms/model_forms.py:705 +#: ipam/forms/model_forms.py:737 ipam/tables/services.py:19 #: ipam/tables/services.py:49 templates/ipam/service.html:36 #: templates/ipam/servicetemplate.html:23 msgid "Ports" @@ -8501,15 +8542,15 @@ msgstr "RIR asignado" msgid "VLAN's group (if any)" msgstr "Grupo de VLAN (si lo hay)" -#: ipam/forms/bulk_import.py:184 ipam/forms/model_forms.py:216 -#: ipam/models/vlans.py:214 ipam/tables/ip.py:254 -#: 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:101 +#: ipam/forms/bulk_import.py:184 ipam/forms/filtersets.py:256 +#: ipam/forms/model_forms.py:216 ipam/models/vlans.py:214 +#: ipam/tables/ip.py:254 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:101 msgid "VLAN" msgstr "VLAN" @@ -8518,7 +8559,7 @@ msgid "Parent device of assigned interface (if any)" msgstr "Dispositivo principal de la interfaz asignada (si existe)" #: ipam/forms/bulk_import.py:310 ipam/forms/bulk_import.py:496 -#: ipam/forms/model_forms.py:722 virtualization/filtersets.py:284 +#: ipam/forms/model_forms.py:731 virtualization/filtersets.py:284 #: virtualization/filtersets.py:323 virtualization/forms/bulk_edit.py:200 #: virtualization/forms/bulk_edit.py:326 #: virtualization/forms/bulk_import.py:146 @@ -8623,8 +8664,8 @@ msgstr "Exportado por VRF" msgid "Private" msgstr "Privada" -#: ipam/forms/filtersets.py:105 ipam/forms/filtersets.py:190 -#: ipam/forms/filtersets.py:265 ipam/forms/filtersets.py:319 +#: ipam/forms/filtersets.py:105 ipam/forms/filtersets.py:191 +#: ipam/forms/filtersets.py:272 ipam/forms/filtersets.py:326 msgid "Address family" msgstr "Familia de direcciones" @@ -8640,53 +8681,57 @@ msgstr "Comenzar" msgid "End" msgstr "Fin" -#: ipam/forms/filtersets.py:185 +#: ipam/forms/filtersets.py:171 +msgid "VLAN Assignment" +msgstr "Asignación de VLAN" + +#: ipam/forms/filtersets.py:186 msgid "Search within" msgstr "Busca dentro" -#: ipam/forms/filtersets.py:206 ipam/forms/filtersets.py:335 +#: ipam/forms/filtersets.py:207 ipam/forms/filtersets.py:342 msgid "Present in VRF" msgstr "Presente en VRF" -#: ipam/forms/filtersets.py:304 +#: ipam/forms/filtersets.py:311 msgid "Device/VM" msgstr "Dispositivo/VM" -#: ipam/forms/filtersets.py:314 +#: ipam/forms/filtersets.py:321 msgid "Parent Prefix" msgstr "Prefijo principal" -#: ipam/forms/filtersets.py:340 +#: ipam/forms/filtersets.py:347 msgid "Assigned Device" msgstr "Dispositivo asignado" -#: ipam/forms/filtersets.py:345 +#: ipam/forms/filtersets.py:352 msgid "Assigned VM" msgstr "VM asignada" -#: ipam/forms/filtersets.py:359 +#: ipam/forms/filtersets.py:366 msgid "Assigned to an interface" msgstr "Asignado a una interfaz" -#: ipam/forms/filtersets.py:366 templates/ipam/ipaddress.html:51 +#: ipam/forms/filtersets.py:373 templates/ipam/ipaddress.html:51 msgid "DNS Name" msgstr "Nombre DNS" -#: ipam/forms/filtersets.py:409 ipam/forms/filtersets.py:513 +#: ipam/forms/filtersets.py:416 ipam/forms/filtersets.py:520 #: ipam/models/vlans.py:156 templates/ipam/vlan.html:31 msgid "VLAN ID" msgstr "IDENTIFICADOR DE VLAN" -#: ipam/forms/filtersets.py:441 +#: ipam/forms/filtersets.py:448 msgid "Minimum VID" msgstr "VID mínimo" -#: ipam/forms/filtersets.py:447 +#: ipam/forms/filtersets.py:454 msgid "Maximum VID" msgstr "VID máximo" -#: ipam/forms/filtersets.py:556 ipam/forms/model_forms.py:318 -#: ipam/forms/model_forms.py:750 ipam/forms/model_forms.py:776 +#: ipam/forms/filtersets.py:563 ipam/forms/model_forms.py:318 +#: ipam/forms/model_forms.py:759 ipam/forms/model_forms.py:785 #: ipam/tables/vlans.py:191 templates/virtualization/virtualdisk.html:21 #: templates/virtualization/virtualmachine.html:12 #: templates/virtualization/vminterface.html:21 @@ -8724,7 +8769,7 @@ msgid "IP Range" msgstr "Rango de IP" #: ipam/forms/model_forms.py:293 ipam/forms/model_forms.py:319 -#: ipam/forms/model_forms.py:462 templates/ipam/fhrpgroup.html:19 +#: ipam/forms/model_forms.py:471 templates/ipam/fhrpgroup.html:19 msgid "FHRP Group" msgstr "Grupo FHRP" @@ -8736,11 +8781,11 @@ msgstr "Haga que esta sea la IP principal del dispositivo/VM" msgid "NAT IP (Inside)" msgstr "NAT IP (interior)" -#: ipam/forms/model_forms.py:373 +#: ipam/forms/model_forms.py:382 msgid "An IP address can only be assigned to a single object." msgstr "Solo se puede asignar una dirección IP a un único objeto." -#: ipam/forms/model_forms.py:379 ipam/models/ip.py:896 +#: ipam/forms/model_forms.py:388 ipam/models/ip.py:897 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" @@ -8748,32 +8793,32 @@ msgstr "" "No se puede reasignar la dirección IP mientras esté designada como la IP " "principal del objeto principal" -#: ipam/forms/model_forms.py:389 +#: ipam/forms/model_forms.py:398 msgid "" "Only IP addresses assigned to an interface can be designated as primary IPs." msgstr "" "Solo las direcciones IP asignadas a una interfaz se pueden designar como IP " "principales." -#: ipam/forms/model_forms.py:464 +#: ipam/forms/model_forms.py:473 msgid "Virtual IP Address" msgstr "Dirección IP virtual" -#: ipam/forms/model_forms.py:549 +#: ipam/forms/model_forms.py:558 msgid "Assignment already exists" msgstr "La asignación ya existe" -#: ipam/forms/model_forms.py:628 ipam/forms/model_forms.py:670 +#: ipam/forms/model_forms.py:637 ipam/forms/model_forms.py:679 #: ipam/tables/ip.py:250 templates/ipam/vlan_edit.html:37 #: templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "Grupo VLAN" -#: ipam/forms/model_forms.py:629 +#: ipam/forms/model_forms.py:638 msgid "Child VLANs" msgstr "VLAN secundarias" -#: ipam/forms/model_forms.py:701 ipam/forms/model_forms.py:733 +#: ipam/forms/model_forms.py:710 ipam/forms/model_forms.py:742 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." @@ -8781,32 +8826,32 @@ msgstr "" "Lista separada por comas de uno o más números de puerto. Se puede " "especificar un rango mediante un guión." -#: ipam/forms/model_forms.py:706 templates/ipam/servicetemplate.html:12 +#: ipam/forms/model_forms.py:715 templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "Plantilla de servicio" -#: ipam/forms/model_forms.py:753 +#: ipam/forms/model_forms.py:762 msgid "Port(s)" msgstr "Puerto (s)" -#: ipam/forms/model_forms.py:754 ipam/forms/model_forms.py:782 +#: ipam/forms/model_forms.py:763 ipam/forms/model_forms.py:791 #: templates/ipam/service.html:21 msgid "Service" msgstr "Servicio" -#: ipam/forms/model_forms.py:767 +#: ipam/forms/model_forms.py:776 msgid "Service template" msgstr "Plantilla de servicio" -#: ipam/forms/model_forms.py:779 +#: ipam/forms/model_forms.py:788 msgid "From Template" msgstr "Desde plantilla" -#: ipam/forms/model_forms.py:780 +#: ipam/forms/model_forms.py:789 msgid "Custom" msgstr "Personalizado" -#: ipam/forms/model_forms.py:810 +#: ipam/forms/model_forms.py:819 msgid "" "Must specify name, protocol, and port(s) if not using a service template." msgstr "" @@ -8874,43 +8919,43 @@ msgstr "Asignación grupal de FHRP" msgid "FHRP group assignments" msgstr "Tareas grupales de FHRP" -#: ipam/models/ip.py:64 +#: ipam/models/ip.py:65 msgid "private" msgstr "privado" -#: ipam/models/ip.py:65 +#: ipam/models/ip.py:66 msgid "IP space managed by this RIR is considered private" msgstr "El espacio IP administrado por este RIR se considera privado" -#: ipam/models/ip.py:71 netbox/navigation/menu.py:169 +#: ipam/models/ip.py:72 netbox/navigation/menu.py:169 msgid "RIRs" msgstr "RIR" -#: ipam/models/ip.py:83 +#: ipam/models/ip.py:84 msgid "IPv4 or IPv6 network" msgstr "Red IPv4 o IPv6" -#: ipam/models/ip.py:90 +#: ipam/models/ip.py:91 msgid "Regional Internet Registry responsible for this IP space" msgstr "Registro regional de Internet responsable de este espacio IP" -#: ipam/models/ip.py:100 +#: ipam/models/ip.py:101 msgid "date added" msgstr "fecha añadida" -#: ipam/models/ip.py:114 +#: ipam/models/ip.py:115 msgid "aggregate" msgstr "agregado" -#: ipam/models/ip.py:115 +#: ipam/models/ip.py:116 msgid "aggregates" msgstr "agregados" -#: ipam/models/ip.py:131 +#: ipam/models/ip.py:132 msgid "Cannot create aggregate with /0 mask." msgstr "No se puede crear un agregado con la máscara /0." -#: ipam/models/ip.py:143 +#: ipam/models/ip.py:144 #, python-brace-format msgid "" "Aggregates cannot overlap. {prefix} is already covered by an existing " @@ -8919,7 +8964,7 @@ msgstr "" "Los agregados no pueden superponerse. {prefix} ya está cubierto por un " "agregado existente ({aggregate})." -#: ipam/models/ip.py:157 +#: ipam/models/ip.py:158 #, python-brace-format msgid "" "Prefixes cannot overlap aggregates. {prefix} covers an existing aggregate " @@ -8928,159 +8973,159 @@ msgstr "" "Los prefijos no pueden superponerse a los agregados. {prefix} cubre un " "agregado existente ({aggregate})." -#: ipam/models/ip.py:199 ipam/models/ip.py:736 vpn/models/tunnels.py:114 +#: ipam/models/ip.py:200 ipam/models/ip.py:737 vpn/models/tunnels.py:114 msgid "role" msgstr "papel" -#: ipam/models/ip.py:200 +#: ipam/models/ip.py:201 msgid "roles" msgstr "papeles" -#: ipam/models/ip.py:216 ipam/models/ip.py:292 +#: ipam/models/ip.py:217 ipam/models/ip.py:293 msgid "prefix" msgstr "prefijo" -#: ipam/models/ip.py:217 +#: ipam/models/ip.py:218 msgid "IPv4 or IPv6 network with mask" msgstr "Red IPv4 o IPv6 con máscara" -#: ipam/models/ip.py:253 +#: ipam/models/ip.py:254 msgid "Operational status of this prefix" msgstr "Estado operativo de este prefijo" -#: ipam/models/ip.py:261 +#: ipam/models/ip.py:262 msgid "The primary function of this prefix" msgstr "La función principal de este prefijo" -#: ipam/models/ip.py:264 +#: ipam/models/ip.py:265 msgid "is a pool" msgstr "es una piscina" -#: ipam/models/ip.py:266 +#: ipam/models/ip.py:267 msgid "All IP addresses within this prefix are considered usable" msgstr "" "Todas las direcciones IP incluidas en este prefijo se consideran " "utilizables." -#: ipam/models/ip.py:269 ipam/models/ip.py:536 +#: ipam/models/ip.py:270 ipam/models/ip.py:537 msgid "mark utilized" msgstr "marca utilizada" -#: ipam/models/ip.py:293 +#: ipam/models/ip.py:294 msgid "prefixes" msgstr "prefijos" -#: ipam/models/ip.py:316 +#: ipam/models/ip.py:317 msgid "Cannot create prefix with /0 mask." msgstr "No se puede crear un prefijo con la máscara /0." -#: ipam/models/ip.py:323 ipam/models/ip.py:873 +#: ipam/models/ip.py:324 ipam/models/ip.py:874 #, python-brace-format msgid "VRF {vrf}" msgstr "VRF {vrf}" -#: ipam/models/ip.py:323 ipam/models/ip.py:873 +#: ipam/models/ip.py:324 ipam/models/ip.py:874 msgid "global table" msgstr "tabla global" -#: ipam/models/ip.py:325 +#: ipam/models/ip.py:326 #, python-brace-format msgid "Duplicate prefix found in {table}: {prefix}" msgstr "Se encuentra un prefijo duplicado en {table}: {prefix}" -#: ipam/models/ip.py:494 +#: ipam/models/ip.py:495 msgid "start address" msgstr "dirección de inicio" -#: ipam/models/ip.py:495 ipam/models/ip.py:499 ipam/models/ip.py:711 +#: ipam/models/ip.py:496 ipam/models/ip.py:500 ipam/models/ip.py:712 msgid "IPv4 or IPv6 address (with mask)" msgstr "Dirección IPv4 o IPv6 (con máscara)" -#: ipam/models/ip.py:498 +#: ipam/models/ip.py:499 msgid "end address" msgstr "dirección final" -#: ipam/models/ip.py:525 +#: ipam/models/ip.py:526 msgid "Operational status of this range" msgstr "Estado operativo de esta gama" -#: ipam/models/ip.py:533 +#: ipam/models/ip.py:534 msgid "The primary function of this range" msgstr "La función principal de esta gama" -#: ipam/models/ip.py:547 +#: ipam/models/ip.py:548 msgid "IP range" msgstr "Rango IP" -#: ipam/models/ip.py:548 +#: ipam/models/ip.py:549 msgid "IP ranges" msgstr "Intervalos de IP" -#: ipam/models/ip.py:564 +#: ipam/models/ip.py:565 msgid "Starting and ending IP address versions must match" msgstr "Las versiones de la dirección IP inicial y final deben coincidir" -#: ipam/models/ip.py:570 +#: ipam/models/ip.py:571 msgid "Starting and ending IP address masks must match" msgstr "Las máscaras de direcciones IP iniciales y finales deben coincidir" -#: ipam/models/ip.py:577 +#: ipam/models/ip.py:578 #, python-brace-format msgid "" "Ending address must be greater than the starting address ({start_address})" msgstr "" "La dirección final debe ser mayor que la dirección inicial ({start_address})" -#: ipam/models/ip.py:589 +#: ipam/models/ip.py:590 #, python-brace-format msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}" msgstr "" "Las direcciones definidas se superponen con el rango {overlapping_range} en " "VRF {vrf}" -#: ipam/models/ip.py:598 +#: ipam/models/ip.py:599 #, python-brace-format msgid "Defined range exceeds maximum supported size ({max_size})" msgstr "El rango definido supera el tamaño máximo admitido ({max_size})" -#: ipam/models/ip.py:710 tenancy/models/contacts.py:82 +#: ipam/models/ip.py:711 tenancy/models/contacts.py:82 msgid "address" msgstr "dirección" -#: ipam/models/ip.py:733 +#: ipam/models/ip.py:734 msgid "The operational status of this IP" msgstr "El estado operativo de esta IP" -#: ipam/models/ip.py:740 +#: ipam/models/ip.py:741 msgid "The functional role of this IP" msgstr "La función funcional de esta propiedad intelectual" -#: ipam/models/ip.py:764 templates/ipam/ipaddress.html:72 +#: ipam/models/ip.py:765 templates/ipam/ipaddress.html:72 msgid "NAT (inside)" msgstr "NAT (interior)" -#: ipam/models/ip.py:765 +#: ipam/models/ip.py:766 msgid "The IP for which this address is the \"outside\" IP" msgstr "La IP para la que esta dirección es la IP «externa»" -#: ipam/models/ip.py:772 +#: ipam/models/ip.py:773 msgid "Hostname or FQDN (not case-sensitive)" msgstr "Nombre de host o FQDN (no distingue mayúsculas de minúsculas)" -#: ipam/models/ip.py:788 ipam/models/services.py:93 +#: ipam/models/ip.py:789 ipam/models/services.py:93 msgid "IP addresses" msgstr "direcciones IP" -#: ipam/models/ip.py:844 +#: ipam/models/ip.py:845 msgid "Cannot create IP address with /0 mask." msgstr "No se puede crear una dirección IP con la máscara /0." -#: ipam/models/ip.py:850 +#: ipam/models/ip.py:851 #, python-brace-format msgid "{ip} is a network ID, which may not be assigned to an interface." msgstr "{ip} es un ID de red, que no puede asignarse a una interfaz." -#: ipam/models/ip.py:861 +#: ipam/models/ip.py:862 #, python-brace-format msgid "" "{ip} is a broadcast address, which may not be assigned to an interface." @@ -9088,12 +9133,12 @@ msgstr "" "{ip} es una dirección de transmisión, que puede no estar asignada a una " "interfaz." -#: ipam/models/ip.py:875 +#: ipam/models/ip.py:876 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "Se encontró una dirección IP duplicada en {table}: {ipaddress}" -#: ipam/models/ip.py:902 +#: ipam/models/ip.py:903 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "Solo a las direcciones IPv6 se les puede asignar el estado SLAAC" @@ -9191,7 +9236,7 @@ msgid "The primary function of this VLAN" msgstr "La función principal de esta VLAN" #: ipam/models/vlans.py:215 ipam/tables/ip.py:175 ipam/tables/vlans.py:78 -#: ipam/views.py:957 netbox/navigation/menu.py:180 +#: ipam/views.py:978 netbox/navigation/menu.py:180 #: netbox/navigation/menu.py:182 msgid "VLANs" msgstr "VLAN" @@ -9267,7 +9312,7 @@ msgid "Added" msgstr "Añadido" #: ipam/tables/ip.py:127 ipam/tables/ip.py:165 ipam/tables/vlans.py:138 -#: ipam/views.py:348 netbox/navigation/menu.py:152 +#: ipam/views.py:349 netbox/navigation/menu.py:152 #: netbox/navigation/menu.py:154 templates/ipam/vlan.html:84 msgid "Prefixes" msgstr "Prefijos" @@ -9368,23 +9413,23 @@ msgstr "" "Solo se permiten caracteres alfanuméricos, asteriscos, guiones, puntos y " "guiones bajos en los nombres DNS" -#: ipam/views.py:535 +#: ipam/views.py:541 msgid "Child Prefixes" msgstr "Prefijos infantiles" -#: ipam/views.py:570 +#: ipam/views.py:576 msgid "Child Ranges" msgstr "Rangos infantiles" -#: ipam/views.py:886 +#: ipam/views.py:902 msgid "Related IPs" msgstr "IPs relacionadas" -#: ipam/views.py:1112 +#: ipam/views.py:1133 msgid "Device Interfaces" msgstr "Interfaces de dispositivos" -#: ipam/views.py:1129 +#: ipam/views.py:1150 msgid "VM Interfaces" msgstr "Interfaces de VM" @@ -9953,39 +9998,43 @@ msgstr "Grupos de clústeres" msgid "Circuit Types" msgstr "Tipos de circuitos" -#: netbox/navigation/menu.py:264 netbox/navigation/menu.py:266 +#: netbox/navigation/menu.py:261 +msgid "Circuit Terminations" +msgstr "Terminaciones de circuitos" + +#: netbox/navigation/menu.py:265 netbox/navigation/menu.py:267 msgid "Providers" msgstr "Proveedores" -#: netbox/navigation/menu.py:267 templates/circuits/provider.html:51 +#: netbox/navigation/menu.py:268 templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "Cuentas de proveedores" -#: netbox/navigation/menu.py:268 +#: netbox/navigation/menu.py:269 msgid "Provider Networks" msgstr "Redes de proveedores" -#: netbox/navigation/menu.py:282 +#: netbox/navigation/menu.py:283 msgid "Power Panels" msgstr "Paneles de alimentación" -#: netbox/navigation/menu.py:293 +#: netbox/navigation/menu.py:294 msgid "Configurations" msgstr "Configuraciones" -#: netbox/navigation/menu.py:295 +#: netbox/navigation/menu.py:296 msgid "Config Contexts" msgstr "Contextos de configuración" -#: netbox/navigation/menu.py:296 +#: netbox/navigation/menu.py:297 msgid "Config Templates" msgstr "Plantillas de configuración" -#: netbox/navigation/menu.py:303 netbox/navigation/menu.py:307 +#: netbox/navigation/menu.py:304 netbox/navigation/menu.py:308 msgid "Customization" msgstr "Personalización" -#: netbox/navigation/menu.py:309 templates/dcim/device_edit.html:103 +#: netbox/navigation/menu.py:310 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 @@ -9995,107 +10044,107 @@ msgstr "Personalización" msgid "Custom Fields" msgstr "Campos personalizados" -#: netbox/navigation/menu.py:310 +#: netbox/navigation/menu.py:311 msgid "Custom Field Choices" msgstr "Opciones de campo personalizadas" -#: netbox/navigation/menu.py:311 +#: netbox/navigation/menu.py:312 msgid "Custom Links" msgstr "Vínculos personalizados" -#: netbox/navigation/menu.py:312 +#: netbox/navigation/menu.py:313 msgid "Export Templates" msgstr "Plantillas de exportación" -#: netbox/navigation/menu.py:313 +#: netbox/navigation/menu.py:314 msgid "Saved Filters" msgstr "Filtros guardados" -#: netbox/navigation/menu.py:315 +#: netbox/navigation/menu.py:316 msgid "Image Attachments" msgstr "Adjuntos de imágenes" -#: netbox/navigation/menu.py:333 +#: netbox/navigation/menu.py:334 msgid "Operations" msgstr "Operaciones" -#: netbox/navigation/menu.py:337 +#: netbox/navigation/menu.py:338 msgid "Integrations" msgstr "Integraciones" -#: netbox/navigation/menu.py:339 +#: netbox/navigation/menu.py:340 msgid "Data Sources" msgstr "Fuentes de datos" -#: netbox/navigation/menu.py:340 +#: netbox/navigation/menu.py:341 msgid "Event Rules" msgstr "Reglas del evento" -#: netbox/navigation/menu.py:341 +#: netbox/navigation/menu.py:342 msgid "Webhooks" msgstr "Webhooks" -#: netbox/navigation/menu.py:345 netbox/navigation/menu.py:349 +#: netbox/navigation/menu.py:346 netbox/navigation/menu.py:350 #: netbox/views/generic/feature_views.py:151 #: templates/extras/report/base.html:37 templates/extras/script/base.html:36 msgid "Jobs" msgstr "Trabajos" -#: netbox/navigation/menu.py:355 +#: netbox/navigation/menu.py:356 msgid "Logging" msgstr "Explotación" -#: netbox/navigation/menu.py:357 +#: netbox/navigation/menu.py:358 msgid "Journal Entries" msgstr "Entradas del diario" -#: netbox/navigation/menu.py:358 templates/extras/objectchange.html:8 +#: netbox/navigation/menu.py:359 templates/extras/objectchange.html:8 #: templates/extras/objectchange_list.html:4 msgid "Change Log" msgstr "Registro de cambios" -#: netbox/navigation/menu.py:365 templates/inc/user_menu.html:11 +#: netbox/navigation/menu.py:366 templates/inc/user_menu.html:11 msgid "Admin" msgstr "Admin" -#: netbox/navigation/menu.py:373 templates/users/group.html:29 +#: netbox/navigation/menu.py:374 templates/users/group.html:29 #: users/forms/model_forms.py:233 users/forms/model_forms.py:245 #: users/forms/model_forms.py:297 users/tables.py:102 msgid "Users" msgstr "usuarios" -#: netbox/navigation/menu.py:393 users/forms/model_forms.py:182 +#: netbox/navigation/menu.py:394 users/forms/model_forms.py:182 #: users/forms/model_forms.py:194 users/forms/model_forms.py:302 #: users/tables.py:35 users/tables.py:106 msgid "Groups" msgstr "Grupos" -#: netbox/navigation/menu.py:413 templates/account/base.html:21 +#: netbox/navigation/menu.py:414 templates/account/base.html:21 #: templates/inc/user_menu.html:36 msgid "API Tokens" msgstr "Tokens de API" -#: netbox/navigation/menu.py:420 users/forms/model_forms.py:188 +#: netbox/navigation/menu.py:421 users/forms/model_forms.py:188 #: users/forms/model_forms.py:196 users/forms/model_forms.py:239 #: users/forms/model_forms.py:246 msgid "Permissions" msgstr "Permisos" -#: netbox/navigation/menu.py:428 netbox/navigation/menu.py:432 +#: netbox/navigation/menu.py:429 netbox/navigation/menu.py:433 #: templates/core/system.html:7 msgid "System" msgstr "Sistema" -#: netbox/navigation/menu.py:437 +#: netbox/navigation/menu.py:438 msgid "Configuration History" msgstr "Historial de configuración" -#: netbox/navigation/menu.py:443 templates/core/rq_task.html:8 +#: netbox/navigation/menu.py:444 templates/core/rq_task.html:8 #: templates/core/rq_task_list.html:22 msgid "Background Tasks" msgstr "Tareas en segundo plano" -#: netbox/navigation/menu.py:482 templates/500.html:35 +#: netbox/navigation/menu.py:483 templates/500.html:35 #: templates/account/preferences.html:22 templates/core/system.html:80 msgid "Plugins" msgstr "Plugins" @@ -10233,34 +10282,46 @@ 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/settings.py:715 +#: netbox/settings.py:722 +msgid "German" +msgstr "alemán" + +#: netbox/settings.py:723 msgid "English" msgstr "Inglés" -#: netbox/settings.py:716 +#: netbox/settings.py:724 msgid "Spanish" msgstr "española" -#: netbox/settings.py:717 +#: netbox/settings.py:725 msgid "French" msgstr "francesa" -#: netbox/settings.py:718 +#: netbox/settings.py:726 msgid "Japanese" msgstr "japonés" -#: netbox/settings.py:719 +#: netbox/settings.py:727 msgid "Portuguese" msgstr "portugués" -#: netbox/settings.py:720 +#: netbox/settings.py:728 msgid "Russian" msgstr "rusa" -#: netbox/settings.py:721 +#: netbox/settings.py:729 msgid "Turkish" msgstr "turca" +#: netbox/settings.py:730 +msgid "Ukrainian" +msgstr "ucraniana" + +#: netbox/settings.py:731 +msgid "Chinese" +msgstr "chino" + #: netbox/tables/columns.py:185 msgid "Toggle all" msgstr "Alternar todo" @@ -10273,16 +10334,16 @@ msgstr "Alternar menú desplegable" msgid "Error" msgstr "Error" -#: netbox/tables/tables.py:56 +#: netbox/tables/tables.py:57 #, python-brace-format msgid "No {model_name} found" msgstr "No {model_name} encontrado" -#: netbox/tables/tables.py:246 templates/generic/bulk_import.html:117 +#: netbox/tables/tables.py:248 templates/generic/bulk_import.html:117 msgid "Field" msgstr "Campo" -#: netbox/tables/tables.py:249 +#: netbox/tables/tables.py:251 msgid "Value" msgstr "Valor" @@ -10393,7 +10454,7 @@ msgstr "Cambiar contraseña" #: 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:37 +#: 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 @@ -10486,7 +10547,8 @@ msgstr "Grupos asignados" #: templates/account/profile.html:58 #: templates/circuits/circuit_terminations_swap.html:18 #: templates/circuits/circuit_terminations_swap.html:26 -#: templates/circuits/inc/circuit_termination.html:154 +#: templates/circuits/circuittermination.html:34 +#: templates/circuits/inc/circuit_termination.html:68 #: templates/dcim/devicebay.html:59 #: templates/dcim/inc/panels/inventory_items.html:45 #: templates/dcim/interface.html:296 templates/dcim/modulebay.html:76 @@ -10603,13 +10665,6 @@ msgstr "Agregar circuito" msgid "Circuit Type" msgstr "Tipo de circuito" -#: templates/circuits/inc/circuit_termination.html:6 -#: templates/circuits/inc/circuit_termination.html:41 -#: templates/dcim/cable.html:68 templates/dcim/cable.html:72 -#: vpn/forms/bulk_import.py:100 vpn/forms/filtersets.py:77 -msgid "Termination" -msgstr "Terminación" - #: templates/circuits/inc/circuit_termination.html:10 #: templates/dcim/devicetype/component_templates.html:33 #: templates/dcim/manufacturer.html:11 @@ -10622,7 +10677,7 @@ msgid "Add" msgstr "Añadir" #: templates/circuits/inc/circuit_termination.html:15 -#: templates/circuits/inc/circuit_termination.html:62 +#: 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:32 @@ -10637,33 +10692,33 @@ msgstr "Editar" msgid "Swap" msgstr "Intercambiar" -#: templates/circuits/inc/circuit_termination.html:45 +#: templates/circuits/inc/circuit_termination_fields.html:19 #: templates/dcim/consoleport.html:59 templates/dcim/consoleserverport.html:60 #: templates/dcim/powerfeed.html:114 msgid "Marked as connected" msgstr "Marcado como conectado" -#: templates/circuits/inc/circuit_termination.html:47 +#: templates/circuits/inc/circuit_termination_fields.html:21 msgid "to" msgstr "a" -#: templates/circuits/inc/circuit_termination.html:57 -#: templates/circuits/inc/circuit_termination.html:58 +#: 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 msgid "Trace" msgstr "Rastrear" -#: templates/circuits/inc/circuit_termination.html:61 +#: templates/circuits/inc/circuit_termination_fields.html:35 msgid "Edit cable" msgstr "Editar cable" -#: templates/circuits/inc/circuit_termination.html:66 +#: templates/circuits/inc/circuit_termination_fields.html:40 msgid "Remove cable" msgstr "Quitar el cable" -#: templates/circuits/inc/circuit_termination.html:67 +#: 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 @@ -10675,7 +10730,7 @@ msgstr "Quitar el cable" msgid "Disconnect" msgstr "Desconectar" -#: templates/circuits/inc/circuit_termination.html:74 +#: 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 @@ -10684,19 +10739,19 @@ msgstr "Desconectar" msgid "Connect" msgstr "Conectar" -#: templates/circuits/inc/circuit_termination.html:96 +#: templates/circuits/inc/circuit_termination_fields.html:70 msgid "Downstream" msgstr "Río abajo" -#: templates/circuits/inc/circuit_termination.html:97 +#: templates/circuits/inc/circuit_termination_fields.html:71 msgid "Upstream" msgstr "Aguas arriba" -#: templates/circuits/inc/circuit_termination.html:106 +#: templates/circuits/inc/circuit_termination_fields.html:80 msgid "Cross-Connect" msgstr "Conexión cruzada" -#: templates/circuits/inc/circuit_termination.html:110 +#: templates/circuits/inc/circuit_termination_fields.html:84 msgid "Patch Panel/Port" msgstr "Panel de conexión/puerto" @@ -12115,11 +12170,15 @@ msgstr "Informe" msgid "You do not have permission to run scripts" msgstr "No tiene permiso para ejecutar scripts" -#: templates/extras/script.html:40 templates/extras/script.html:44 +#: templates/extras/script.html:41 templates/extras/script.html:45 #: templates/extras/script_list.html:88 msgid "Run Script" msgstr "Ejecutar script" +#: templates/extras/script.html:51 templates/extras/script/source.html:10 +msgid "Error loading script" +msgstr "Error al cargar el script" + #: templates/extras/script/jobs.html:16 msgid "Script no longer exists in the source file." msgstr "El script ya no existe en el archivo fuente." diff --git a/netbox/translations/fr/LC_MESSAGES/django.po b/netbox/translations/fr/LC_MESSAGES/django.po index 75b5c4e56..97e716619 100644 --- a/netbox/translations/fr/LC_MESSAGES/django.po +++ b/netbox/translations/fr/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-05-14 13:22+0000\n" +"POT-Creation-Date: 2024-05-22 17:41+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" @@ -67,19 +67,19 @@ msgid "Your preferences have been updated." msgstr "Vos préférences ont été mises à jour." #: circuits/choices.py:21 dcim/choices.py:20 dcim/choices.py:102 -#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1429 -#: dcim/choices.py:1505 dcim/choices.py:1555 virtualization/choices.py:20 +#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1457 +#: dcim/choices.py:1533 dcim/choices.py:1583 virtualization/choices.py:20 #: virtualization/choices.py:45 vpn/choices.py:18 msgid "Planned" msgstr "Planifié" -#: circuits/choices.py:22 netbox/navigation/menu.py:289 +#: circuits/choices.py:22 netbox/navigation/menu.py:290 msgid "Provisioning" msgstr "Approvisionnement" #: circuits/choices.py:23 core/tables/tasks.py:22 dcim/choices.py:22 #: dcim/choices.py:103 dcim/choices.py:173 dcim/choices.py:219 -#: dcim/choices.py:1504 dcim/choices.py:1554 extras/tables/tables.py:385 +#: dcim/choices.py:1532 dcim/choices.py:1582 extras/tables/tables.py:385 #: 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 @@ -89,7 +89,7 @@ msgid "Active" msgstr "Actif" #: circuits/choices.py:24 dcim/choices.py:172 dcim/choices.py:218 -#: dcim/choices.py:1503 dcim/choices.py:1556 virtualization/choices.py:24 +#: dcim/choices.py:1531 dcim/choices.py:1584 virtualization/choices.py:24 #: virtualization/choices.py:43 msgid "Offline" msgstr "Hors ligne" @@ -104,8 +104,8 @@ msgstr "Mis hors service" #: circuits/filtersets.py:29 circuits/filtersets.py:196 dcim/filtersets.py:97 #: dcim/filtersets.py:151 dcim/filtersets.py:211 dcim/filtersets.py:297 -#: dcim/filtersets.py:406 dcim/filtersets.py:969 dcim/filtersets.py:1295 -#: dcim/filtersets.py:1822 dcim/filtersets.py:2065 dcim/filtersets.py:2123 +#: dcim/filtersets.py:406 dcim/filtersets.py:969 dcim/filtersets.py:1305 +#: dcim/filtersets.py:1832 dcim/filtersets.py:2075 dcim/filtersets.py:2133 #: ipam/filtersets.py:339 ipam/filtersets.py:945 #: virtualization/filtersets.py:45 virtualization/filtersets.py:173 #: vpn/filtersets.py:377 @@ -114,8 +114,8 @@ msgstr "Région (ID)" #: circuits/filtersets.py:36 circuits/filtersets.py:203 dcim/filtersets.py:104 #: dcim/filtersets.py:157 dcim/filtersets.py:218 dcim/filtersets.py:304 -#: dcim/filtersets.py:413 dcim/filtersets.py:976 dcim/filtersets.py:1302 -#: dcim/filtersets.py:1829 dcim/filtersets.py:2072 dcim/filtersets.py:2130 +#: dcim/filtersets.py:413 dcim/filtersets.py:976 dcim/filtersets.py:1312 +#: dcim/filtersets.py:1839 dcim/filtersets.py:2082 dcim/filtersets.py:2140 #: extras/filtersets.py:461 ipam/filtersets.py:346 ipam/filtersets.py:952 #: virtualization/filtersets.py:52 virtualization/filtersets.py:180 #: vpn/filtersets.py:372 @@ -124,8 +124,8 @@ msgstr "Région (slug)" #: circuits/filtersets.py:42 circuits/filtersets.py:209 dcim/filtersets.py:127 #: dcim/filtersets.py:224 dcim/filtersets.py:310 dcim/filtersets.py:419 -#: dcim/filtersets.py:982 dcim/filtersets.py:1308 dcim/filtersets.py:1835 -#: dcim/filtersets.py:2078 dcim/filtersets.py:2136 ipam/filtersets.py:352 +#: dcim/filtersets.py:982 dcim/filtersets.py:1318 dcim/filtersets.py:1845 +#: dcim/filtersets.py:2088 dcim/filtersets.py:2146 ipam/filtersets.py:352 #: ipam/filtersets.py:958 virtualization/filtersets.py:58 #: virtualization/filtersets.py:186 msgid "Site group (ID)" @@ -133,16 +133,18 @@ msgstr "Groupe de sites (ID)" #: circuits/filtersets.py:49 circuits/filtersets.py:216 dcim/filtersets.py:134 #: dcim/filtersets.py:231 dcim/filtersets.py:317 dcim/filtersets.py:426 -#: dcim/filtersets.py:989 dcim/filtersets.py:1315 dcim/filtersets.py:1842 -#: dcim/filtersets.py:2085 dcim/filtersets.py:2143 extras/filtersets.py:467 +#: dcim/filtersets.py:989 dcim/filtersets.py:1325 dcim/filtersets.py:1852 +#: dcim/filtersets.py:2095 dcim/filtersets.py:2153 extras/filtersets.py:467 #: ipam/filtersets.py:359 ipam/filtersets.py:965 #: virtualization/filtersets.py:65 virtualization/filtersets.py:193 msgid "Site group (slug)" msgstr "Groupe de sites (slug)" -#: circuits/filtersets.py:54 circuits/forms/bulk_import.py:116 -#: circuits/forms/filtersets.py:48 circuits/forms/filtersets.py:168 -#: circuits/forms/model_forms.py:136 circuits/forms/model_forms.py:152 +#: circuits/filtersets.py:54 circuits/forms/bulk_edit.py:186 +#: circuits/forms/bulk_edit.py:214 circuits/forms/bulk_import.py:126 +#: circuits/forms/filtersets.py:49 circuits/forms/filtersets.py:169 +#: circuits/forms/filtersets.py:207 circuits/forms/model_forms.py:136 +#: circuits/forms/model_forms.py:152 circuits/tables/circuits.py:105 #: dcim/forms/bulk_edit.py:167 dcim/forms/bulk_edit.py:239 #: dcim/forms/bulk_edit.py:575 dcim/forms/bulk_edit.py:771 #: dcim/forms/bulk_import.py:130 dcim/forms/bulk_import.py:184 @@ -150,10 +152,10 @@ msgstr "Groupe de sites (slug)" #: dcim/forms/bulk_import.py:1262 dcim/forms/bulk_import.py:1290 #: dcim/forms/filtersets.py:85 dcim/forms/filtersets.py:218 #: dcim/forms/filtersets.py:265 dcim/forms/filtersets.py:374 -#: dcim/forms/filtersets.py:681 dcim/forms/filtersets.py:908 -#: dcim/forms/filtersets.py:932 dcim/forms/filtersets.py:1022 -#: dcim/forms/filtersets.py:1060 dcim/forms/filtersets.py:1468 -#: dcim/forms/filtersets.py:1492 dcim/forms/filtersets.py:1516 +#: dcim/forms/filtersets.py:682 dcim/forms/filtersets.py:916 +#: dcim/forms/filtersets.py:940 dcim/forms/filtersets.py:1030 +#: dcim/forms/filtersets.py:1068 dcim/forms/filtersets.py:1476 +#: dcim/forms/filtersets.py:1500 dcim/forms/filtersets.py:1524 #: dcim/forms/model_forms.py:136 dcim/forms/model_forms.py:164 #: dcim/forms/model_forms.py:206 dcim/forms/model_forms.py:406 #: dcim/forms/model_forms.py:668 dcim/forms/object_create.py:391 @@ -163,11 +165,11 @@ msgstr "Groupe de sites (slug)" #: ipam/forms/bulk_edit.py:270 ipam/forms/bulk_edit.py:448 #: ipam/forms/bulk_edit.py:522 ipam/forms/bulk_import.py:170 #: ipam/forms/bulk_import.py:437 ipam/forms/filtersets.py:153 -#: ipam/forms/filtersets.py:230 ipam/forms/filtersets.py:425 -#: ipam/forms/filtersets.py:489 ipam/forms/model_forms.py:203 -#: ipam/forms/model_forms.py:578 ipam/forms/model_forms.py:673 +#: ipam/forms/filtersets.py:231 ipam/forms/filtersets.py:432 +#: ipam/forms/filtersets.py:496 ipam/forms/model_forms.py:203 +#: ipam/forms/model_forms.py:587 ipam/forms/model_forms.py:682 #: ipam/tables/ip.py:244 ipam/tables/vlans.py:114 ipam/tables/vlans.py:216 -#: templates/circuits/inc/circuit_termination.html:32 +#: templates/circuits/inc/circuit_termination_fields.html:6 #: templates/dcim/device.html:21 templates/dcim/inc/cable_termination.html:8 #: templates/dcim/inc/cable_termination.html:33 #: templates/dcim/location.html:37 templates/dcim/powerpanel.html:22 @@ -204,19 +206,21 @@ msgstr "Site (slug)" msgid "ASN (ID)" msgstr "ASN (ID)" -#: circuits/filtersets.py:71 circuits/forms/filtersets.py:28 +#: circuits/filtersets.py:71 circuits/forms/filtersets.py:29 #: ipam/forms/model_forms.py:157 ipam/models/asns.py:108 #: ipam/models/asns.py:125 ipam/tables/asn.py:41 templates/ipam/asn.html:20 msgid "ASN" msgstr "ASN" #: circuits/filtersets.py:93 circuits/filtersets.py:120 -#: circuits/filtersets.py:154 ipam/filtersets.py:243 +#: circuits/filtersets.py:154 circuits/filtersets.py:281 +#: ipam/filtersets.py:243 msgid "Provider (ID)" msgstr "Fournisseur (ID)" #: circuits/filtersets.py:99 circuits/filtersets.py:126 -#: circuits/filtersets.py:160 ipam/filtersets.py:249 +#: circuits/filtersets.py:160 circuits/filtersets.py:287 +#: ipam/filtersets.py:249 msgid "Provider (slug)" msgstr "Fournisseur (slug)" @@ -242,8 +246,8 @@ msgstr "Type de circuit (slug)" #: circuits/filtersets.py:221 circuits/filtersets.py:266 #: dcim/filtersets.py:235 dcim/filtersets.py:321 dcim/filtersets.py:394 -#: dcim/filtersets.py:993 dcim/filtersets.py:1320 dcim/filtersets.py:1847 -#: dcim/filtersets.py:2089 dcim/filtersets.py:2148 ipam/filtersets.py:232 +#: dcim/filtersets.py:993 dcim/filtersets.py:1330 dcim/filtersets.py:1857 +#: dcim/filtersets.py:2099 dcim/filtersets.py:2158 ipam/filtersets.py:232 #: ipam/filtersets.py:363 ipam/filtersets.py:969 #: virtualization/filtersets.py:69 virtualization/filtersets.py:197 #: vpn/filtersets.py:387 @@ -255,13 +259,13 @@ msgid "Termination A (ID)" msgstr "Résiliation A (ID)" #: circuits/filtersets.py:258 core/filtersets.py:73 core/filtersets.py:132 -#: dcim/filtersets.py:693 dcim/filtersets.py:1289 dcim/filtersets.py:2196 +#: dcim/filtersets.py:693 dcim/filtersets.py:1299 dcim/filtersets.py:2206 #: extras/filtersets.py:41 extras/filtersets.py:63 extras/filtersets.py:92 #: extras/filtersets.py:127 extras/filtersets.py:176 extras/filtersets.py:204 #: extras/filtersets.py:234 extras/filtersets.py:271 extras/filtersets.py:343 #: extras/filtersets.py:390 extras/filtersets.py:450 extras/filtersets.py:613 #: extras/filtersets.py:655 extras/filtersets.py:696 -#: ipam/forms/model_forms.py:438 netbox/filtersets.py:275 +#: ipam/forms/model_forms.py:447 netbox/filtersets.py:275 #: netbox/forms/__init__.py:22 netbox/forms/base.py:165 #: templates/htmx/object_selector.html:28 templates/inc/filter_list.html:45 #: templates/ipam/ipaddress_assign.html:29 templates/search.html:7 @@ -271,9 +275,12 @@ msgstr "Résiliation A (ID)" msgid "Search" msgstr "Rechercher" -#: circuits/filtersets.py:262 circuits/forms/bulk_edit.py:168 -#: circuits/forms/model_forms.py:109 circuits/forms/model_forms.py:131 +#: circuits/filtersets.py:262 circuits/forms/bulk_edit.py:170 +#: circuits/forms/bulk_import.py:117 circuits/forms/filtersets.py:196 +#: circuits/forms/filtersets.py:212 circuits/forms/model_forms.py:109 +#: circuits/forms/model_forms.py:131 circuits/tables/circuits.py:96 #: dcim/forms/connections.py:71 templates/circuits/circuit.html:15 +#: templates/circuits/circuittermination.html:19 #: templates/dcim/inc/cable_termination.html:55 #: templates/dcim/trace/circuit.html:4 msgid "Circuit" @@ -283,48 +290,48 @@ msgstr "Circuit" msgid "ProviderNetwork (ID)" msgstr "Réseau fournisseur (ID)" -#: circuits/forms/bulk_edit.py:26 circuits/forms/filtersets.py:53 +#: circuits/forms/bulk_edit.py:28 circuits/forms/filtersets.py:54 #: circuits/forms/model_forms.py:27 circuits/tables/providers.py:33 #: dcim/forms/bulk_edit.py:127 dcim/forms/filtersets.py:188 #: dcim/forms/model_forms.py:122 dcim/tables/sites.py:94 -#: ipam/models/asns.py:126 ipam/tables/asn.py:27 ipam/views.py:218 +#: ipam/models/asns.py:126 ipam/tables/asn.py:27 ipam/views.py:219 #: netbox/navigation/menu.py:159 netbox/navigation/menu.py:162 #: templates/circuits/provider.html:23 msgid "ASNs" msgstr "Numéros d'AS" -#: circuits/forms/bulk_edit.py:30 circuits/forms/bulk_edit.py:52 -#: circuits/forms/bulk_edit.py:79 circuits/forms/bulk_edit.py:100 -#: circuits/forms/bulk_edit.py:160 core/forms/bulk_edit.py:28 -#: core/tables/plugins.py:29 dcim/forms/bulk_create.py:35 -#: dcim/forms/bulk_edit.py:72 dcim/forms/bulk_edit.py:91 -#: dcim/forms/bulk_edit.py:150 dcim/forms/bulk_edit.py:191 -#: dcim/forms/bulk_edit.py:209 dcim/forms/bulk_edit.py:337 -#: dcim/forms/bulk_edit.py:373 dcim/forms/bulk_edit.py:388 -#: dcim/forms/bulk_edit.py:447 dcim/forms/bulk_edit.py:486 -#: dcim/forms/bulk_edit.py:516 dcim/forms/bulk_edit.py:540 -#: dcim/forms/bulk_edit.py:613 dcim/forms/bulk_edit.py:665 -#: dcim/forms/bulk_edit.py:717 dcim/forms/bulk_edit.py:740 -#: dcim/forms/bulk_edit.py:788 dcim/forms/bulk_edit.py:858 -#: dcim/forms/bulk_edit.py:911 dcim/forms/bulk_edit.py:946 -#: dcim/forms/bulk_edit.py:986 dcim/forms/bulk_edit.py:1030 -#: dcim/forms/bulk_edit.py:1075 dcim/forms/bulk_edit.py:1102 -#: dcim/forms/bulk_edit.py:1120 dcim/forms/bulk_edit.py:1138 -#: dcim/forms/bulk_edit.py:1156 dcim/forms/bulk_edit.py:1575 -#: extras/forms/bulk_edit.py:36 extras/forms/bulk_edit.py:124 -#: extras/forms/bulk_edit.py:153 extras/forms/bulk_edit.py:183 -#: extras/forms/bulk_edit.py:264 extras/forms/bulk_edit.py:288 -#: extras/forms/bulk_edit.py:302 extras/tables/tables.py:58 -#: ipam/forms/bulk_edit.py:51 ipam/forms/bulk_edit.py:71 -#: ipam/forms/bulk_edit.py:91 ipam/forms/bulk_edit.py:115 -#: ipam/forms/bulk_edit.py:144 ipam/forms/bulk_edit.py:173 -#: ipam/forms/bulk_edit.py:192 ipam/forms/bulk_edit.py:261 -#: ipam/forms/bulk_edit.py:305 ipam/forms/bulk_edit.py:353 -#: ipam/forms/bulk_edit.py:396 ipam/forms/bulk_edit.py:424 -#: ipam/forms/bulk_edit.py:554 ipam/forms/bulk_edit.py:585 -#: templates/account/token.html:35 templates/circuits/circuit.html:59 -#: templates/circuits/circuittype.html:26 -#: templates/circuits/inc/circuit_termination.html:114 +#: circuits/forms/bulk_edit.py:32 circuits/forms/bulk_edit.py:54 +#: circuits/forms/bulk_edit.py:81 circuits/forms/bulk_edit.py:102 +#: circuits/forms/bulk_edit.py:162 circuits/forms/bulk_edit.py:181 +#: core/forms/bulk_edit.py:28 core/tables/plugins.py:29 +#: dcim/forms/bulk_create.py:35 dcim/forms/bulk_edit.py:72 +#: dcim/forms/bulk_edit.py:91 dcim/forms/bulk_edit.py:150 +#: dcim/forms/bulk_edit.py:191 dcim/forms/bulk_edit.py:209 +#: dcim/forms/bulk_edit.py:337 dcim/forms/bulk_edit.py:373 +#: dcim/forms/bulk_edit.py:388 dcim/forms/bulk_edit.py:447 +#: dcim/forms/bulk_edit.py:486 dcim/forms/bulk_edit.py:516 +#: dcim/forms/bulk_edit.py:540 dcim/forms/bulk_edit.py:613 +#: dcim/forms/bulk_edit.py:665 dcim/forms/bulk_edit.py:717 +#: dcim/forms/bulk_edit.py:740 dcim/forms/bulk_edit.py:788 +#: dcim/forms/bulk_edit.py:858 dcim/forms/bulk_edit.py:911 +#: dcim/forms/bulk_edit.py:946 dcim/forms/bulk_edit.py:986 +#: dcim/forms/bulk_edit.py:1030 dcim/forms/bulk_edit.py:1075 +#: dcim/forms/bulk_edit.py:1102 dcim/forms/bulk_edit.py:1120 +#: dcim/forms/bulk_edit.py:1138 dcim/forms/bulk_edit.py:1156 +#: dcim/forms/bulk_edit.py:1575 extras/forms/bulk_edit.py:36 +#: extras/forms/bulk_edit.py:124 extras/forms/bulk_edit.py:153 +#: extras/forms/bulk_edit.py:183 extras/forms/bulk_edit.py:264 +#: extras/forms/bulk_edit.py:288 extras/forms/bulk_edit.py:302 +#: extras/tables/tables.py:58 ipam/forms/bulk_edit.py:51 +#: ipam/forms/bulk_edit.py:71 ipam/forms/bulk_edit.py:91 +#: ipam/forms/bulk_edit.py:115 ipam/forms/bulk_edit.py:144 +#: ipam/forms/bulk_edit.py:173 ipam/forms/bulk_edit.py:192 +#: ipam/forms/bulk_edit.py:261 ipam/forms/bulk_edit.py:305 +#: ipam/forms/bulk_edit.py:353 ipam/forms/bulk_edit.py:396 +#: ipam/forms/bulk_edit.py:424 ipam/forms/bulk_edit.py:554 +#: ipam/forms/bulk_edit.py:585 templates/account/token.html:35 +#: templates/circuits/circuit.html:59 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/dcim/cable.html:36 @@ -390,32 +397,35 @@ msgstr "Numéros d'AS" msgid "Description" msgstr "Description" -#: circuits/forms/bulk_edit.py:47 circuits/forms/bulk_edit.py:69 -#: circuits/forms/bulk_edit.py:119 circuits/forms/bulk_import.py:34 -#: circuits/forms/bulk_import.py:49 circuits/forms/bulk_import.py:75 -#: circuits/forms/filtersets.py:67 circuits/forms/filtersets.py:85 -#: circuits/forms/filtersets.py:113 circuits/forms/filtersets.py:128 +#: circuits/forms/bulk_edit.py:49 circuits/forms/bulk_edit.py:71 +#: circuits/forms/bulk_edit.py:121 circuits/forms/bulk_import.py:35 +#: circuits/forms/bulk_import.py:50 circuits/forms/bulk_import.py:76 +#: circuits/forms/filtersets.py:68 circuits/forms/filtersets.py:86 +#: circuits/forms/filtersets.py:114 circuits/forms/filtersets.py:129 +#: circuits/forms/filtersets.py:197 circuits/forms/filtersets.py:230 #: circuits/forms/model_forms.py:45 circuits/forms/model_forms.py:59 -#: circuits/forms/model_forms.py:91 circuits/tables/circuits.py:55 -#: circuits/tables/providers.py:72 circuits/tables/providers.py:103 -#: templates/circuits/circuit.html:18 templates/circuits/provider.html:20 +#: circuits/forms/model_forms.py:91 circuits/tables/circuits.py:56 +#: circuits/tables/circuits.py:100 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 msgid "Provider" msgstr "Prestataire" -#: circuits/forms/bulk_edit.py:76 circuits/forms/filtersets.py:88 +#: circuits/forms/bulk_edit.py:78 circuits/forms/filtersets.py:89 #: templates/circuits/providernetwork.html:28 msgid "Service ID" msgstr "Identifiant du service" -#: circuits/forms/bulk_edit.py:96 circuits/forms/filtersets.py:104 +#: circuits/forms/bulk_edit.py:98 circuits/forms/filtersets.py:105 #: dcim/forms/bulk_edit.py:205 dcim/forms/bulk_edit.py:502 #: dcim/forms/bulk_edit.py:702 dcim/forms/bulk_edit.py:1071 #: dcim/forms/bulk_edit.py:1098 dcim/forms/bulk_edit.py:1571 -#: dcim/forms/filtersets.py:975 dcim/forms/filtersets.py:1351 -#: dcim/forms/filtersets.py:1372 dcim/tables/devices.py:699 +#: dcim/forms/filtersets.py:983 dcim/forms/filtersets.py:1359 +#: dcim/forms/filtersets.py:1380 dcim/tables/devices.py:699 #: dcim/tables/devices.py:759 dcim/tables/devices.py:986 #: dcim/tables/devicetypes.py:245 dcim/tables/devicetypes.py:260 #: dcim/tables/racks.py:32 extras/forms/bulk_edit.py:260 @@ -427,8 +437,8 @@ msgstr "Identifiant du service" msgid "Color" msgstr "Couleur" -#: circuits/forms/bulk_edit.py:114 circuits/forms/bulk_import.py:88 -#: circuits/forms/filtersets.py:123 core/forms/bulk_edit.py:18 +#: circuits/forms/bulk_edit.py:116 circuits/forms/bulk_import.py:89 +#: circuits/forms/filtersets.py:124 core/forms/bulk_edit.py:18 #: core/forms/filtersets.py:30 core/tables/data.py:20 core/tables/jobs.py:18 #: dcim/forms/bulk_edit.py:282 dcim/forms/bulk_edit.py:680 #: dcim/forms/bulk_edit.py:819 dcim/forms/bulk_edit.py:887 @@ -440,18 +450,18 @@ msgstr "Couleur" #: dcim/forms/bulk_import.py:725 dcim/forms/bulk_import.py:808 #: dcim/forms/bulk_import.py:902 dcim/forms/bulk_import.py:944 #: dcim/forms/bulk_import.py:1161 dcim/forms/bulk_import.py:1327 -#: dcim/forms/filtersets.py:287 dcim/forms/filtersets.py:866 -#: dcim/forms/filtersets.py:965 dcim/forms/filtersets.py:1086 -#: dcim/forms/filtersets.py:1156 dcim/forms/filtersets.py:1178 -#: dcim/forms/filtersets.py:1200 dcim/forms/filtersets.py:1217 -#: dcim/forms/filtersets.py:1251 dcim/forms/filtersets.py:1346 -#: dcim/forms/filtersets.py:1367 dcim/forms/model_forms.py:643 +#: dcim/forms/filtersets.py:287 dcim/forms/filtersets.py:874 +#: dcim/forms/filtersets.py:973 dcim/forms/filtersets.py:1094 +#: dcim/forms/filtersets.py:1164 dcim/forms/filtersets.py:1186 +#: dcim/forms/filtersets.py:1208 dcim/forms/filtersets.py:1225 +#: dcim/forms/filtersets.py:1259 dcim/forms/filtersets.py:1354 +#: dcim/forms/filtersets.py:1375 dcim/forms/model_forms.py:643 #: dcim/forms/model_forms.py:649 dcim/forms/object_import.py:84 #: dcim/forms/object_import.py:113 dcim/forms/object_import.py:145 #: dcim/tables/devices.py:183 dcim/tables/devices.py:815 #: dcim/tables/power.py:77 extras/forms/bulk_import.py:39 #: extras/tables/tables.py:283 extras/tables/tables.py:355 -#: extras/tables/tables.py:473 netbox/tables/tables.py:237 +#: extras/tables/tables.py:473 netbox/tables/tables.py:239 #: 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 @@ -472,13 +482,13 @@ msgstr "Couleur" msgid "Type" msgstr "Type" -#: circuits/forms/bulk_edit.py:124 circuits/forms/bulk_import.py:81 -#: circuits/forms/filtersets.py:136 circuits/forms/model_forms.py:96 +#: circuits/forms/bulk_edit.py:126 circuits/forms/bulk_import.py:82 +#: circuits/forms/filtersets.py:137 circuits/forms/model_forms.py:96 msgid "Provider account" msgstr "Identifiant de compte du prestataire" -#: circuits/forms/bulk_edit.py:132 circuits/forms/bulk_import.py:94 -#: circuits/forms/filtersets.py:147 core/forms/filtersets.py:35 +#: circuits/forms/bulk_edit.py:134 circuits/forms/bulk_import.py:95 +#: circuits/forms/filtersets.py:148 core/forms/filtersets.py:35 #: core/forms/filtersets.py:76 core/tables/data.py:23 core/tables/jobs.py:26 #: core/tables/tasks.py:88 dcim/forms/bulk_edit.py:105 #: dcim/forms/bulk_edit.py:180 dcim/forms/bulk_edit.py:261 @@ -490,9 +500,9 @@ msgstr "Identifiant de compte du prestataire" #: dcim/forms/bulk_import.py:1155 dcim/forms/bulk_import.py:1322 #: dcim/forms/bulk_import.py:1386 dcim/forms/filtersets.py:171 #: dcim/forms/filtersets.py:230 dcim/forms/filtersets.py:282 -#: dcim/forms/filtersets.py:727 dcim/forms/filtersets.py:835 -#: dcim/forms/filtersets.py:869 dcim/forms/filtersets.py:970 -#: dcim/forms/filtersets.py:1081 dcim/tables/devices.py:145 +#: dcim/forms/filtersets.py:728 dcim/forms/filtersets.py:843 +#: dcim/forms/filtersets.py:877 dcim/forms/filtersets.py:978 +#: dcim/forms/filtersets.py:1089 dcim/tables/devices.py:145 #: dcim/tables/devices.py:818 dcim/tables/devices.py:1046 #: dcim/tables/modules.py:69 dcim/tables/power.py:74 dcim/tables/racks.py:66 #: dcim/tables/sites.py:82 dcim/tables/sites.py:133 @@ -500,9 +510,9 @@ msgstr "Identifiant de compte du prestataire" #: ipam/forms/bulk_edit.py:338 ipam/forms/bulk_edit.py:544 #: ipam/forms/bulk_import.py:191 ipam/forms/bulk_import.py:256 #: ipam/forms/bulk_import.py:292 ipam/forms/bulk_import.py:458 -#: ipam/forms/filtersets.py:209 ipam/forms/filtersets.py:274 -#: ipam/forms/filtersets.py:348 ipam/forms/filtersets.py:501 -#: ipam/forms/model_forms.py:457 ipam/tables/ip.py:236 ipam/tables/ip.py:309 +#: ipam/forms/filtersets.py:210 ipam/forms/filtersets.py:281 +#: ipam/forms/filtersets.py:355 ipam/forms/filtersets.py:508 +#: ipam/forms/model_forms.py:466 ipam/tables/ip.py:236 ipam/tables/ip.py:309 #: ipam/tables/ip.py:359 ipam/tables/ip.py:421 ipam/tables/ip.py:448 #: ipam/tables/vlans.py:122 ipam/tables/vlans.py:227 #: templates/circuits/circuit.html:34 templates/core/datasource.html:46 @@ -533,8 +543,8 @@ msgstr "Identifiant de compte du prestataire" msgid "Status" msgstr "Statut" -#: circuits/forms/bulk_edit.py:138 circuits/forms/bulk_import.py:99 -#: circuits/forms/filtersets.py:116 dcim/forms/bulk_edit.py:121 +#: circuits/forms/bulk_edit.py:140 circuits/forms/bulk_import.py:100 +#: circuits/forms/filtersets.py:117 dcim/forms/bulk_edit.py:121 #: dcim/forms/bulk_edit.py:186 dcim/forms/bulk_edit.py:256 #: dcim/forms/bulk_edit.py:368 dcim/forms/bulk_edit.py:588 #: dcim/forms/bulk_edit.py:692 dcim/forms/bulk_edit.py:1599 @@ -544,9 +554,9 @@ msgstr "Statut" #: dcim/forms/bulk_import.py:1379 dcim/forms/filtersets.py:166 #: dcim/forms/filtersets.py:198 dcim/forms/filtersets.py:249 #: dcim/forms/filtersets.py:334 dcim/forms/filtersets.py:355 -#: dcim/forms/filtersets.py:652 dcim/forms/filtersets.py:827 -#: dcim/forms/filtersets.py:889 dcim/forms/filtersets.py:919 -#: dcim/forms/filtersets.py:1041 dcim/tables/power.py:88 +#: dcim/forms/filtersets.py:652 dcim/forms/filtersets.py:835 +#: dcim/forms/filtersets.py:897 dcim/forms/filtersets.py:927 +#: dcim/forms/filtersets.py:1049 dcim/tables/power.py:88 #: extras/filtersets.py:564 extras/forms/filtersets.py:332 #: extras/forms/filtersets.py:405 ipam/forms/bulk_edit.py:41 #: ipam/forms/bulk_edit.py:66 ipam/forms/bulk_edit.py:110 @@ -560,8 +570,8 @@ msgstr "Statut" #: ipam/forms/bulk_import.py:451 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:173 ipam/forms/filtersets.py:260 -#: ipam/forms/filtersets.py:303 ipam/forms/filtersets.py:469 +#: ipam/forms/filtersets.py:174 ipam/forms/filtersets.py:267 +#: ipam/forms/filtersets.py:310 ipam/forms/filtersets.py:476 #: ipam/tables/ip.py:451 ipam/tables/vlans.py:224 #: templates/circuits/circuit.html:38 templates/dcim/cable.html:23 #: templates/dcim/device.html:78 templates/dcim/location.html:49 @@ -592,23 +602,23 @@ msgstr "Statut" msgid "Tenant" msgstr "Locataire" -#: circuits/forms/bulk_edit.py:143 circuits/forms/filtersets.py:171 +#: circuits/forms/bulk_edit.py:145 circuits/forms/filtersets.py:172 msgid "Install date" msgstr "Date d'installation" -#: circuits/forms/bulk_edit.py:148 circuits/forms/filtersets.py:176 +#: circuits/forms/bulk_edit.py:150 circuits/forms/filtersets.py:177 msgid "Termination date" msgstr "Date de résiliation" -#: circuits/forms/bulk_edit.py:154 circuits/forms/filtersets.py:183 +#: circuits/forms/bulk_edit.py:156 circuits/forms/filtersets.py:184 msgid "Commit rate (Kbps)" msgstr "Débit engagé (Kbits/s)" -#: circuits/forms/bulk_edit.py:169 circuits/forms/model_forms.py:110 +#: circuits/forms/bulk_edit.py:171 circuits/forms/model_forms.py:110 msgid "Service Parameters" msgstr "Paramètres du service" -#: circuits/forms/bulk_edit.py:170 circuits/forms/model_forms.py:111 +#: circuits/forms/bulk_edit.py:172 circuits/forms/model_forms.py:111 #: dcim/forms/model_forms.py:138 dcim/forms/model_forms.py:180 #: dcim/forms/model_forms.py:228 dcim/forms/model_forms.py:267 #: dcim/forms/model_forms.py:713 dcim/forms/model_forms.py:1636 @@ -627,26 +637,60 @@ msgstr "Paramètres du service" msgid "Tenancy" msgstr "Utilisateur" -#: circuits/forms/bulk_import.py:37 circuits/forms/bulk_import.py:52 -#: circuits/forms/bulk_import.py:78 +#: circuits/forms/bulk_edit.py:191 circuits/forms/bulk_edit.py:215 +#: circuits/forms/model_forms.py:153 circuits/tables/circuits.py:109 +#: templates/circuits/inc/circuit_termination_fields.html:62 +#: templates/circuits/providernetwork.html:17 +msgid "Provider Network" +msgstr "Réseau de fournisseurs" + +#: circuits/forms/bulk_edit.py:197 +msgid "Port speed (Kbps)" +msgstr "Vitesse du port (Kbits/s)" + +#: circuits/forms/bulk_edit.py:201 +msgid "Upstream speed (Kbps)" +msgstr "Vitesse ascendante (Kbits/s)" + +#: circuits/forms/bulk_edit.py:204 dcim/forms/bulk_edit.py:849 +#: dcim/forms/bulk_edit.py:1208 dcim/forms/bulk_edit.py:1225 +#: dcim/forms/bulk_edit.py:1242 dcim/forms/bulk_edit.py:1260 +#: dcim/forms/bulk_edit.py:1348 dcim/forms/bulk_edit.py:1487 +#: dcim/forms/bulk_edit.py:1504 +msgid "Mark connected" +msgstr "Marquer comme connecté" + +#: circuits/forms/bulk_edit.py:217 circuits/forms/model_forms.py:155 +#: templates/circuits/inc/circuit_termination_fields.html:54 +#: templates/dcim/frontport.html:121 templates/dcim/interface.html:193 +#: templates/dcim/rearport.html:111 +msgid "Circuit Termination" +msgstr "Terminaison de circuit" + +#: circuits/forms/bulk_edit.py:219 circuits/forms/model_forms.py:157 +msgid "Termination Details" +msgstr "Détails de terminaison" + +#: circuits/forms/bulk_import.py:38 circuits/forms/bulk_import.py:53 +#: circuits/forms/bulk_import.py:79 msgid "Assigned provider" msgstr "Prestataire assigné" -#: circuits/forms/bulk_import.py:69 dcim/forms/bulk_import.py:178 +#: circuits/forms/bulk_import.py:70 dcim/forms/bulk_import.py:178 #: dcim/forms/bulk_import.py:388 dcim/forms/bulk_import.py:1108 #: dcim/forms/bulk_import.py:1187 extras/forms/bulk_import.py:232 msgid "RGB color in hexadecimal. Example:" msgstr "Couleur RVB en hexadécimal. Exemple :" -#: circuits/forms/bulk_import.py:84 +#: circuits/forms/bulk_import.py:85 msgid "Assigned provider account" msgstr "Compte prestataire attribué" -#: circuits/forms/bulk_import.py:91 +#: circuits/forms/bulk_import.py:92 msgid "Type of circuit" msgstr "Type de circuit" -#: circuits/forms/bulk_import.py:96 dcim/forms/bulk_import.py:89 +#: circuits/forms/bulk_import.py:97 dcim/forms/bulk_import.py:89 #: dcim/forms/bulk_import.py:148 dcim/forms/bulk_import.py:204 #: dcim/forms/bulk_import.py:452 dcim/forms/bulk_import.py:606 #: dcim/forms/bulk_import.py:1324 ipam/forms/bulk_import.py:193 @@ -657,7 +701,7 @@ msgstr "Type de circuit" msgid "Operational status" msgstr "État opérationnel" -#: circuits/forms/bulk_import.py:103 dcim/forms/bulk_import.py:110 +#: circuits/forms/bulk_import.py:104 dcim/forms/bulk_import.py:110 #: dcim/forms/bulk_import.py:155 dcim/forms/bulk_import.py:286 #: dcim/forms/bulk_import.py:428 dcim/forms/bulk_import.py:1171 #: dcim/forms/bulk_import.py:1319 dcim/forms/bulk_import.py:1383 @@ -671,37 +715,46 @@ msgstr "État opérationnel" msgid "Assigned tenant" msgstr "Locataire assigné" -#: circuits/forms/bulk_import.py:122 circuits/forms/filtersets.py:144 -#: circuits/forms/model_forms.py:142 +#: circuits/forms/bulk_import.py:122 +#: 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 +msgid "Termination" +msgstr "Résiliation" + +#: circuits/forms/bulk_import.py:132 circuits/forms/filtersets.py:145 +#: circuits/forms/filtersets.py:225 circuits/forms/model_forms.py:142 msgid "Provider network" msgstr "Réseau de fournisseurs" -#: circuits/forms/filtersets.py:27 circuits/forms/filtersets.py:115 -#: dcim/forms/bulk_edit.py:248 dcim/forms/bulk_edit.py:346 -#: dcim/forms/bulk_edit.py:580 dcim/forms/bulk_edit.py:627 -#: dcim/forms/bulk_edit.py:780 dcim/forms/bulk_import.py:189 -#: dcim/forms/bulk_import.py:263 dcim/forms/bulk_import.py:491 -#: dcim/forms/bulk_import.py:1268 dcim/forms/bulk_import.py:1302 -#: dcim/forms/filtersets.py:93 dcim/forms/filtersets.py:246 -#: dcim/forms/filtersets.py:279 dcim/forms/filtersets.py:331 -#: dcim/forms/filtersets.py:382 dcim/forms/filtersets.py:649 -#: dcim/forms/filtersets.py:690 dcim/forms/filtersets.py:888 -#: dcim/forms/filtersets.py:917 dcim/forms/filtersets.py:937 -#: dcim/forms/filtersets.py:1001 dcim/forms/filtersets.py:1031 -#: dcim/forms/filtersets.py:1040 dcim/forms/filtersets.py:1151 -#: dcim/forms/filtersets.py:1173 dcim/forms/filtersets.py:1195 -#: dcim/forms/filtersets.py:1212 dcim/forms/filtersets.py:1232 -#: dcim/forms/filtersets.py:1340 dcim/forms/filtersets.py:1362 -#: dcim/forms/filtersets.py:1383 dcim/forms/filtersets.py:1398 -#: dcim/forms/filtersets.py:1412 dcim/forms/model_forms.py:179 -#: dcim/forms/model_forms.py:211 dcim/forms/model_forms.py:411 -#: dcim/forms/model_forms.py:673 dcim/tables/devices.py:162 -#: dcim/tables/power.py:30 dcim/tables/racks.py:58 dcim/tables/racks.py:143 -#: extras/filtersets.py:488 extras/forms/filtersets.py:329 -#: ipam/forms/bulk_edit.py:457 ipam/forms/filtersets.py:172 -#: ipam/forms/filtersets.py:407 ipam/forms/filtersets.py:430 -#: ipam/forms/filtersets.py:467 ipam/forms/model_forms.py:590 -#: templates/dcim/device.html:25 templates/dcim/device_edit.html:30 +#: circuits/forms/filtersets.py:28 circuits/forms/filtersets.py:116 +#: circuits/forms/filtersets.py:198 dcim/forms/bulk_edit.py:248 +#: dcim/forms/bulk_edit.py:346 dcim/forms/bulk_edit.py:580 +#: dcim/forms/bulk_edit.py:627 dcim/forms/bulk_edit.py:780 +#: dcim/forms/bulk_import.py:189 dcim/forms/bulk_import.py:263 +#: dcim/forms/bulk_import.py:491 dcim/forms/bulk_import.py:1268 +#: dcim/forms/bulk_import.py:1302 dcim/forms/filtersets.py:93 +#: dcim/forms/filtersets.py:246 dcim/forms/filtersets.py:279 +#: dcim/forms/filtersets.py:331 dcim/forms/filtersets.py:382 +#: dcim/forms/filtersets.py:649 dcim/forms/filtersets.py:691 +#: dcim/forms/filtersets.py:896 dcim/forms/filtersets.py:925 +#: dcim/forms/filtersets.py:945 dcim/forms/filtersets.py:1009 +#: dcim/forms/filtersets.py:1039 dcim/forms/filtersets.py:1048 +#: dcim/forms/filtersets.py:1159 dcim/forms/filtersets.py:1181 +#: dcim/forms/filtersets.py:1203 dcim/forms/filtersets.py:1220 +#: dcim/forms/filtersets.py:1240 dcim/forms/filtersets.py:1348 +#: dcim/forms/filtersets.py:1370 dcim/forms/filtersets.py:1391 +#: dcim/forms/filtersets.py:1406 dcim/forms/filtersets.py:1420 +#: dcim/forms/model_forms.py:179 dcim/forms/model_forms.py:211 +#: dcim/forms/model_forms.py:411 dcim/forms/model_forms.py:673 +#: dcim/tables/devices.py:162 dcim/tables/power.py:30 dcim/tables/racks.py:58 +#: dcim/tables/racks.py:143 extras/filtersets.py:488 +#: extras/forms/filtersets.py:329 ipam/forms/bulk_edit.py:457 +#: ipam/forms/filtersets.py:173 ipam/forms/filtersets.py:414 +#: ipam/forms/filtersets.py:437 ipam/forms/filtersets.py:474 +#: ipam/forms/model_forms.py:599 templates/dcim/device.html:25 +#: 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:26 templates/dcim/rackreservation.html:32 @@ -711,12 +764,12 @@ msgstr "Réseau de fournisseurs" msgid "Location" msgstr "Emplacement" -#: circuits/forms/filtersets.py:29 circuits/forms/filtersets.py:117 +#: circuits/forms/filtersets.py:30 circuits/forms/filtersets.py:118 #: dcim/forms/filtersets.py:137 dcim/forms/filtersets.py:151 #: dcim/forms/filtersets.py:167 dcim/forms/filtersets.py:199 #: dcim/forms/filtersets.py:250 dcim/forms/filtersets.py:335 #: dcim/forms/filtersets.py:406 dcim/forms/filtersets.py:653 -#: dcim/forms/filtersets.py:1002 netbox/navigation/menu.py:44 +#: dcim/forms/filtersets.py:1010 netbox/navigation/menu.py:44 #: netbox/navigation/menu.py:46 tenancy/forms/filtersets.py:42 #: tenancy/tables/columns.py:70 tenancy/tables/contacts.py:25 #: tenancy/views.py:19 virtualization/forms/filtersets.py:37 @@ -725,22 +778,22 @@ msgstr "Emplacement" msgid "Contacts" msgstr "Contacts" -#: circuits/forms/filtersets.py:34 circuits/forms/filtersets.py:154 +#: circuits/forms/filtersets.py:35 circuits/forms/filtersets.py:155 #: dcim/forms/bulk_edit.py:111 dcim/forms/bulk_edit.py:223 #: dcim/forms/bulk_edit.py:755 dcim/forms/bulk_import.py:92 #: dcim/forms/filtersets.py:71 dcim/forms/filtersets.py:178 #: dcim/forms/filtersets.py:204 dcim/forms/filtersets.py:257 -#: dcim/forms/filtersets.py:360 dcim/forms/filtersets.py:667 -#: dcim/forms/filtersets.py:894 dcim/forms/filtersets.py:924 -#: dcim/forms/filtersets.py:1008 dcim/forms/filtersets.py:1047 -#: dcim/forms/filtersets.py:1460 dcim/forms/filtersets.py:1484 -#: dcim/forms/filtersets.py:1508 dcim/forms/model_forms.py:111 +#: dcim/forms/filtersets.py:360 dcim/forms/filtersets.py:668 +#: dcim/forms/filtersets.py:902 dcim/forms/filtersets.py:932 +#: dcim/forms/filtersets.py:1016 dcim/forms/filtersets.py:1055 +#: dcim/forms/filtersets.py:1468 dcim/forms/filtersets.py:1492 +#: dcim/forms/filtersets.py:1516 dcim/forms/model_forms.py:111 #: dcim/forms/object_create.py:375 dcim/tables/devices.py:148 #: dcim/tables/sites.py:85 extras/filtersets.py:455 #: ipam/forms/bulk_edit.py:206 ipam/forms/bulk_edit.py:438 -#: ipam/forms/bulk_edit.py:512 ipam/forms/filtersets.py:216 -#: ipam/forms/filtersets.py:415 ipam/forms/filtersets.py:475 -#: ipam/forms/model_forms.py:562 templates/dcim/device.html:17 +#: ipam/forms/bulk_edit.py:512 ipam/forms/filtersets.py:217 +#: ipam/forms/filtersets.py:422 ipam/forms/filtersets.py:482 +#: ipam/forms/model_forms.py:571 templates/dcim/device.html:17 #: templates/dcim/rack.html:16 templates/dcim/rackreservation.html:22 #: templates/dcim/region.html:26 templates/dcim/site.html:30 #: templates/ipam/prefix.html:49 templates/ipam/vlan.html:16 @@ -750,42 +803,42 @@ msgstr "Contacts" msgid "Region" msgstr "Région" -#: circuits/forms/filtersets.py:39 circuits/forms/filtersets.py:159 +#: circuits/forms/filtersets.py:40 circuits/forms/filtersets.py:160 #: dcim/forms/bulk_edit.py:231 dcim/forms/bulk_edit.py:763 #: dcim/forms/filtersets.py:76 dcim/forms/filtersets.py:183 #: dcim/forms/filtersets.py:209 dcim/forms/filtersets.py:270 -#: dcim/forms/filtersets.py:365 dcim/forms/filtersets.py:672 -#: dcim/forms/filtersets.py:899 dcim/forms/filtersets.py:1013 -#: dcim/forms/filtersets.py:1052 dcim/forms/object_create.py:383 +#: dcim/forms/filtersets.py:365 dcim/forms/filtersets.py:673 +#: dcim/forms/filtersets.py:907 dcim/forms/filtersets.py:1021 +#: dcim/forms/filtersets.py:1060 dcim/forms/object_create.py:383 #: extras/filtersets.py:472 ipam/forms/bulk_edit.py:211 #: ipam/forms/bulk_edit.py:445 ipam/forms/bulk_edit.py:517 -#: ipam/forms/filtersets.py:221 ipam/forms/filtersets.py:420 -#: ipam/forms/filtersets.py:480 ipam/forms/model_forms.py:575 +#: ipam/forms/filtersets.py:222 ipam/forms/filtersets.py:427 +#: ipam/forms/filtersets.py:487 ipam/forms/model_forms.py:584 #: virtualization/forms/bulk_edit.py:86 virtualization/forms/filtersets.py:69 #: virtualization/forms/filtersets.py:138 #: virtualization/forms/model_forms.py:98 msgid "Site group" msgstr "Groupe de sites" -#: circuits/forms/filtersets.py:62 circuits/forms/filtersets.py:80 -#: circuits/forms/filtersets.py:99 circuits/forms/filtersets.py:114 +#: circuits/forms/filtersets.py:63 circuits/forms/filtersets.py:81 +#: circuits/forms/filtersets.py:100 circuits/forms/filtersets.py:115 #: core/forms/filtersets.py:64 dcim/forms/bulk_edit.py:726 #: dcim/forms/filtersets.py:165 dcim/forms/filtersets.py:197 -#: dcim/forms/filtersets.py:826 dcim/forms/filtersets.py:918 -#: dcim/forms/filtersets.py:1042 dcim/forms/filtersets.py:1150 -#: dcim/forms/filtersets.py:1172 dcim/forms/filtersets.py:1194 -#: dcim/forms/filtersets.py:1211 dcim/forms/filtersets.py:1228 -#: dcim/forms/filtersets.py:1339 dcim/forms/filtersets.py:1361 -#: dcim/forms/filtersets.py:1382 dcim/forms/filtersets.py:1397 -#: dcim/forms/filtersets.py:1410 extras/forms/filtersets.py:43 +#: dcim/forms/filtersets.py:834 dcim/forms/filtersets.py:926 +#: dcim/forms/filtersets.py:1050 dcim/forms/filtersets.py:1158 +#: dcim/forms/filtersets.py:1180 dcim/forms/filtersets.py:1202 +#: dcim/forms/filtersets.py:1219 dcim/forms/filtersets.py:1236 +#: dcim/forms/filtersets.py:1347 dcim/forms/filtersets.py:1369 +#: dcim/forms/filtersets.py:1390 dcim/forms/filtersets.py:1405 +#: dcim/forms/filtersets.py:1418 extras/forms/filtersets.py:43 #: extras/forms/filtersets.py:112 extras/forms/filtersets.py:143 #: extras/forms/filtersets.py:183 extras/forms/filtersets.py:199 #: extras/forms/filtersets.py:230 extras/forms/filtersets.py:254 #: extras/forms/filtersets.py:450 extras/forms/filtersets.py:488 -#: ipam/forms/filtersets.py:99 ipam/forms/filtersets.py:259 -#: ipam/forms/filtersets.py:300 ipam/forms/filtersets.py:375 -#: ipam/forms/filtersets.py:468 ipam/forms/filtersets.py:527 -#: ipam/forms/filtersets.py:545 netbox/tables/tables.py:253 +#: ipam/forms/filtersets.py:99 ipam/forms/filtersets.py:266 +#: ipam/forms/filtersets.py:307 ipam/forms/filtersets.py:382 +#: ipam/forms/filtersets.py:475 ipam/forms/filtersets.py:534 +#: ipam/forms/filtersets.py:552 netbox/tables/tables.py:255 #: virtualization/forms/filtersets.py:45 #: virtualization/forms/filtersets.py:103 #: virtualization/forms/filtersets.py:194 @@ -794,28 +847,15 @@ msgstr "Groupe de sites" msgid "Attributes" msgstr "Attributs" -#: circuits/forms/filtersets.py:70 circuits/tables/circuits.py:60 +#: circuits/forms/filtersets.py:71 circuits/tables/circuits.py:61 #: circuits/tables/providers.py:66 templates/circuits/circuit.html:22 #: templates/circuits/provideraccount.html:24 msgid "Account" msgstr "Compte" -#: circuits/forms/model_forms.py:153 -#: templates/circuits/inc/circuit_termination.html:88 -#: templates/circuits/providernetwork.html:17 -msgid "Provider Network" -msgstr "Réseau de fournisseurs" - -#: circuits/forms/model_forms.py:155 -#: templates/circuits/inc/circuit_termination.html:80 -#: templates/dcim/frontport.html:121 templates/dcim/interface.html:193 -#: templates/dcim/rearport.html:111 -msgid "Circuit Termination" -msgstr "Terminaison de circuit" - -#: circuits/forms/model_forms.py:157 -msgid "Termination Details" -msgstr "Détails de terminaison" +#: circuits/forms/filtersets.py:215 +msgid "Term Side" +msgstr "Côté terme" #: circuits/models/circuits.py:25 dcim/models/cables.py:67 #: dcim/models/device_component_templates.py:491 @@ -846,8 +886,8 @@ msgstr "ID de circuit unique" #: core/models/jobs.py:85 dcim/models/cables.py:49 dcim/models/devices.py:643 #: dcim/models/devices.py:1155 dcim/models/devices.py:1364 #: dcim/models/power.py:96 dcim/models/racks.py:98 dcim/models/sites.py:154 -#: dcim/models/sites.py:266 ipam/models/ip.py:252 ipam/models/ip.py:521 -#: ipam/models/ip.py:729 ipam/models/vlans.py:175 +#: dcim/models/sites.py:266 ipam/models/ip.py:253 ipam/models/ip.py:522 +#: ipam/models/ip.py:730 ipam/models/vlans.py:175 #: virtualization/models/clusters.py:74 #: virtualization/models/virtualmachines.py:84 vpn/models/tunnels.py:40 #: wireless/models.py:94 wireless/models.py:158 @@ -1021,15 +1061,15 @@ msgstr "réseau de fournisseurs" msgid "provider networks" msgstr "réseaux de fournisseurs" -#: circuits/tables/circuits.py:29 circuits/tables/providers.py:18 +#: circuits/tables/circuits.py:30 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:13 #: core/tables/tasks.py:11 core/tables/tasks.py:115 #: dcim/forms/filtersets.py:61 dcim/forms/object_create.py:43 #: dcim/tables/devices.py:60 dcim/tables/devices.py:97 #: dcim/tables/devices.py:139 dcim/tables/devices.py:294 -#: dcim/tables/devices.py:376 dcim/tables/devices.py:420 -#: dcim/tables/devices.py:472 dcim/tables/devices.py:524 +#: dcim/tables/devices.py:380 dcim/tables/devices.py:424 +#: dcim/tables/devices.py:476 dcim/tables/devices.py:528 #: dcim/tables/devices.py:644 dcim/tables/devices.py:726 #: dcim/tables/devices.py:776 dcim/tables/devices.py:842 #: dcim/tables/devices.py:957 dcim/tables/devices.py:977 @@ -1043,7 +1083,7 @@ msgstr "réseaux de fournisseurs" #: extras/tables/tables.py:209 extras/tables/tables.py:256 #: extras/tables/tables.py:279 extras/tables/tables.py:329 #: extras/tables/tables.py:381 extras/tables/tables.py:404 -#: ipam/forms/bulk_edit.py:391 ipam/forms/filtersets.py:379 +#: ipam/forms/bulk_edit.py:391 ipam/forms/filtersets.py:386 #: ipam/tables/asn.py:16 ipam/tables/ip.py:85 ipam/tables/ip.py:159 #: ipam/tables/services.py:15 ipam/tables/services.py:40 #: ipam/tables/vlans.py:64 ipam/tables/vlans.py:110 ipam/tables/vrfs.py:26 @@ -1109,7 +1149,7 @@ msgstr "réseaux de fournisseurs" msgid "Name" msgstr "Nom" -#: circuits/tables/circuits.py:38 circuits/tables/providers.py:45 +#: circuits/tables/circuits.py:39 circuits/tables/providers.py:45 #: circuits/tables/providers.py:79 netbox/navigation/menu.py:253 #: netbox/navigation/menu.py:257 netbox/navigation/menu.py:259 #: templates/circuits/provider.html:57 @@ -1118,23 +1158,23 @@ msgstr "Nom" msgid "Circuits" msgstr "Circuits" -#: circuits/tables/circuits.py:52 templates/circuits/circuit.html:26 +#: circuits/tables/circuits.py:53 templates/circuits/circuit.html:26 msgid "Circuit ID" msgstr "Identifiant du circuit" -#: circuits/tables/circuits.py:65 wireless/forms/model_forms.py:160 +#: circuits/tables/circuits.py:66 wireless/forms/model_forms.py:160 msgid "Side A" msgstr "Côté A" -#: circuits/tables/circuits.py:69 +#: circuits/tables/circuits.py:70 msgid "Side Z" msgstr "Côté Z" -#: circuits/tables/circuits.py:72 templates/circuits/circuit.html:55 +#: circuits/tables/circuits.py:73 templates/circuits/circuit.html:55 msgid "Commit Rate" msgstr "Taux d'engagement" -#: circuits/tables/circuits.py:75 circuits/tables/providers.py:48 +#: circuits/tables/circuits.py:76 circuits/tables/providers.py:48 #: circuits/tables/providers.py:82 circuits/tables/providers.py:107 #: dcim/tables/devices.py:1019 dcim/tables/devicetypes.py:92 #: dcim/tables/modules.py:29 dcim/tables/modules.py:72 dcim/tables/power.py:39 @@ -1191,12 +1231,12 @@ msgstr "Terminé" #: core/choices.py:22 core/choices.py:59 core/constants.py:20 #: core/tables/tasks.py:34 dcim/choices.py:176 dcim/choices.py:222 -#: dcim/choices.py:1506 extras/choices.py:226 virtualization/choices.py:47 +#: dcim/choices.py:1534 extras/choices.py:226 virtualization/choices.py:47 msgid "Failed" msgstr "Échoué" -#: core/choices.py:35 netbox/navigation/menu.py:319 -#: netbox/navigation/menu.py:323 templates/extras/script/base.html:14 +#: core/choices.py:35 netbox/navigation/menu.py:320 +#: netbox/navigation/menu.py:324 templates/extras/script/base.html:14 #: templates/extras/script_list.html:7 templates/extras/script_list.html:12 #: templates/extras/script_result.html:17 msgid "Scripts" @@ -1291,8 +1331,8 @@ msgstr "Source de données (nom)" #: core/forms/bulk_edit.py:25 core/forms/filtersets.py:40 #: core/tables/data.py:26 dcim/forms/bulk_edit.py:1020 -#: dcim/forms/bulk_edit.py:1293 dcim/forms/filtersets.py:1268 -#: dcim/tables/devices.py:549 dcim/tables/devicetypes.py:221 +#: dcim/forms/bulk_edit.py:1293 dcim/forms/filtersets.py:1276 +#: dcim/tables/devices.py:553 dcim/tables/devicetypes.py:221 #: extras/forms/bulk_edit.py:98 extras/forms/bulk_edit.py:162 #: extras/forms/bulk_edit.py:221 extras/forms/filtersets.py:120 #: extras/forms/filtersets.py:207 extras/forms/filtersets.py:268 @@ -1432,10 +1472,10 @@ msgstr "" msgid "Rack Elevations" msgstr "Élévations des baies" -#: core/forms/model_forms.py:157 dcim/choices.py:1417 +#: core/forms/model_forms.py:157 dcim/choices.py:1445 #: dcim/forms/bulk_edit.py:867 dcim/forms/bulk_edit.py:1250 #: dcim/forms/bulk_edit.py:1268 dcim/tables/racks.py:89 -#: netbox/navigation/menu.py:275 netbox/navigation/menu.py:279 +#: netbox/navigation/menu.py:276 netbox/navigation/menu.py:280 msgid "Power" msgstr "Pouvoir" @@ -1468,7 +1508,7 @@ msgstr "Validation" msgid "User Preferences" msgstr "Préférences de l'utilisateur" -#: core/forms/model_forms.py:167 dcim/forms/filtersets.py:660 +#: core/forms/model_forms.py:167 dcim/forms/filtersets.py:661 #: templates/core/inc/config_data.html:127 users/forms/model_forms.py:65 msgid "Miscellaneous" msgstr "Divers" @@ -1614,7 +1654,7 @@ msgstr "chemin" msgid "File path relative to the data source's root" msgstr "Chemin du fichier par rapport à la racine de la source de données" -#: core/models/data.py:303 ipam/models/ip.py:502 +#: core/models/data.py:303 ipam/models/ip.py:503 msgid "size" msgstr "taille" @@ -1733,7 +1773,7 @@ msgstr "Dernière mise à jour" #: core/tables/jobs.py:10 core/tables/tasks.py:76 #: dcim/tables/devicetypes.py:161 extras/tables/tables.py:179 -#: extras/tables/tables.py:350 netbox/tables/tables.py:187 +#: extras/tables/tables.py:350 netbox/tables/tables.py:188 #: templates/dcim/virtualchassis_edit.html:52 utilities/forms/forms.py:73 #: wireless/tables/wirelesslink.py:16 msgid "ID" @@ -1742,7 +1782,7 @@ msgstr "IDENTIFIANT" #: core/tables/jobs.py:21 extras/choices.py:41 extras/tables/tables.py:241 #: extras/tables/tables.py:287 extras/tables/tables.py:360 #: extras/tables/tables.py:478 extras/tables/tables.py:509 -#: extras/tables/tables.py:574 netbox/tables/tables.py:241 +#: extras/tables/tables.py:574 netbox/tables/tables.py:243 #: templates/extras/eventrule.html:84 templates/extras/journalentry.html:18 #: templates/extras/objectchange.html:57 tenancy/tables/contacts.py:93 #: vpn/tables/l2vpn.py:64 @@ -1787,7 +1827,7 @@ msgstr "Travailleurs" msgid "Host" msgstr "Hôte" -#: core/tables/tasks.py:50 ipam/forms/filtersets.py:535 +#: core/tables/tasks.py:50 ipam/forms/filtersets.py:542 msgid "Port" msgstr "Port" @@ -1854,7 +1894,7 @@ msgid "Staging" msgstr "Mise en scène" #: dcim/choices.py:23 dcim/choices.py:178 dcim/choices.py:223 -#: dcim/choices.py:1430 virtualization/choices.py:23 +#: dcim/choices.py:1458 virtualization/choices.py:23 #: virtualization/choices.py:48 msgid "Decommissioning" msgstr "Démantèlement" @@ -1914,7 +1954,7 @@ msgstr "Obsolète" msgid "Millimeters" msgstr "Millimètres" -#: dcim/choices.py:115 dcim/choices.py:1452 +#: dcim/choices.py:115 dcim/choices.py:1480 msgid "Inches" msgstr "Pouces" @@ -1989,7 +2029,7 @@ msgstr "De droite à gauche" msgid "Side to rear" msgstr "D'un côté à l'arrière" -#: dcim/choices.py:198 dcim/choices.py:1225 +#: dcim/choices.py:198 dcim/choices.py:1253 msgid "Passive" msgstr "Passif" @@ -1997,56 +2037,56 @@ msgstr "Passif" msgid "Mixed" msgstr "Mixte" -#: dcim/choices.py:443 dcim/choices.py:680 +#: dcim/choices.py:447 dcim/choices.py:693 msgid "NEMA (Non-locking)" msgstr "NEMA (non verrouillable)" -#: dcim/choices.py:465 dcim/choices.py:702 +#: dcim/choices.py:469 dcim/choices.py:715 msgid "NEMA (Locking)" msgstr "NEMA (verrouillage)" -#: dcim/choices.py:488 dcim/choices.py:725 +#: dcim/choices.py:492 dcim/choices.py:738 msgid "California Style" msgstr "Style californien" -#: dcim/choices.py:496 +#: dcim/choices.py:500 msgid "International/ITA" msgstr "International/ITA" -#: dcim/choices.py:526 dcim/choices.py:755 +#: dcim/choices.py:535 dcim/choices.py:773 msgid "Proprietary" msgstr "Propriétaire" -#: dcim/choices.py:534 dcim/choices.py:764 dcim/choices.py:1141 -#: dcim/choices.py:1143 dcim/choices.py:1348 dcim/choices.py:1350 +#: dcim/choices.py:543 dcim/choices.py:782 dcim/choices.py:1169 +#: dcim/choices.py:1171 dcim/choices.py:1376 dcim/choices.py:1378 #: netbox/navigation/menu.py:187 msgid "Other" msgstr "Autres" -#: dcim/choices.py:733 +#: dcim/choices.py:746 msgid "ITA/International" msgstr "ITA/International" -#: dcim/choices.py:794 +#: dcim/choices.py:812 msgid "Physical" msgstr "Physique" -#: dcim/choices.py:795 dcim/choices.py:954 +#: dcim/choices.py:813 dcim/choices.py:977 msgid "Virtual" msgstr "Virtuel" -#: dcim/choices.py:796 dcim/choices.py:1026 dcim/forms/bulk_edit.py:1408 -#: dcim/forms/filtersets.py:1231 dcim/forms/model_forms.py:933 +#: dcim/choices.py:814 dcim/choices.py:1049 dcim/forms/bulk_edit.py:1408 +#: dcim/forms/filtersets.py:1239 dcim/forms/model_forms.py:933 #: dcim/forms/model_forms.py:1341 netbox/navigation/menu.py:127 #: netbox/navigation/menu.py:131 templates/dcim/interface.html:210 msgid "Wireless" msgstr "Sans fil" -#: dcim/choices.py:952 +#: dcim/choices.py:975 msgid "Virtual interfaces" msgstr "Interfaces virtuelles" -#: dcim/choices.py:955 dcim/forms/bulk_edit.py:1303 +#: dcim/choices.py:978 dcim/forms/bulk_edit.py:1303 #: dcim/forms/bulk_import.py:785 dcim/forms/model_forms.py:919 #: dcim/tables/devices.py:656 templates/dcim/interface.html:106 #: templates/virtualization/vminterface.html:43 @@ -2056,152 +2096,152 @@ msgstr "Interfaces virtuelles" msgid "Bridge" msgstr "Passerelle" -#: dcim/choices.py:956 +#: dcim/choices.py:979 msgid "Link Aggregation Group (LAG)" msgstr "Groupe d'agrégation de liens (LAG)" -#: dcim/choices.py:960 +#: dcim/choices.py:983 msgid "Ethernet (fixed)" msgstr "Ethernet (fixe)" -#: dcim/choices.py:974 +#: dcim/choices.py:997 msgid "Ethernet (modular)" msgstr "Ethernet (modulaire)" -#: dcim/choices.py:1010 +#: dcim/choices.py:1033 msgid "Ethernet (backplane)" msgstr "Ethernet (panneau arrière)" -#: dcim/choices.py:1040 +#: dcim/choices.py:1063 msgid "Cellular" msgstr "Cellulaire" -#: dcim/choices.py:1090 dcim/forms/filtersets.py:303 -#: dcim/forms/filtersets.py:737 dcim/forms/filtersets.py:874 -#: dcim/forms/filtersets.py:1426 templates/dcim/inventoryitem.html:52 +#: dcim/choices.py:1115 dcim/forms/filtersets.py:303 +#: dcim/forms/filtersets.py:738 dcim/forms/filtersets.py:882 +#: dcim/forms/filtersets.py:1434 templates/dcim/inventoryitem.html:52 #: templates/dcim/virtualchassis_edit.html:54 msgid "Serial" msgstr "Série" -#: dcim/choices.py:1105 +#: dcim/choices.py:1130 msgid "Coaxial" msgstr "Coaxiale" -#: dcim/choices.py:1122 +#: dcim/choices.py:1150 msgid "Stacking" msgstr "Empilage" -#: dcim/choices.py:1172 +#: dcim/choices.py:1200 msgid "Half" msgstr "La moitié" -#: dcim/choices.py:1173 +#: dcim/choices.py:1201 msgid "Full" msgstr "Complet" -#: dcim/choices.py:1174 netbox/preferences.py:31 wireless/choices.py:480 +#: dcim/choices.py:1202 netbox/preferences.py:31 wireless/choices.py:480 msgid "Auto" msgstr "Automatique" -#: dcim/choices.py:1185 +#: dcim/choices.py:1213 msgid "Access" msgstr "Accès" -#: dcim/choices.py:1186 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 +#: dcim/choices.py:1214 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 #: templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "Tagué" -#: dcim/choices.py:1187 +#: dcim/choices.py:1215 msgid "Tagged (All)" msgstr "Tagué (Tous)" -#: dcim/choices.py:1216 +#: dcim/choices.py:1244 msgid "IEEE Standard" msgstr "Norme IEEE" -#: dcim/choices.py:1227 +#: dcim/choices.py:1255 msgid "Passive 24V (2-pair)" msgstr "24 V passif (2 paires)" -#: dcim/choices.py:1228 +#: dcim/choices.py:1256 msgid "Passive 24V (4-pair)" msgstr "24 V passif (4 paires)" -#: dcim/choices.py:1229 +#: dcim/choices.py:1257 msgid "Passive 48V (2-pair)" msgstr "48 V passif (2 paires)" -#: dcim/choices.py:1230 +#: dcim/choices.py:1258 msgid "Passive 48V (4-pair)" msgstr "48 V passif (4 paires)" -#: dcim/choices.py:1292 dcim/choices.py:1388 +#: dcim/choices.py:1320 dcim/choices.py:1416 msgid "Copper" msgstr "Cuivre" -#: dcim/choices.py:1315 +#: dcim/choices.py:1343 msgid "Fiber Optic" msgstr "fibre optique" -#: dcim/choices.py:1404 +#: dcim/choices.py:1432 msgid "Fiber" msgstr "Fibre" -#: dcim/choices.py:1428 dcim/forms/filtersets.py:1138 +#: dcim/choices.py:1456 dcim/forms/filtersets.py:1146 msgid "Connected" msgstr "Connecté" -#: dcim/choices.py:1447 +#: dcim/choices.py:1475 msgid "Kilometers" msgstr "Kilomètres" -#: dcim/choices.py:1448 templates/dcim/cable_trace.html:65 +#: dcim/choices.py:1476 templates/dcim/cable_trace.html:65 msgid "Meters" msgstr "Compteurs" -#: dcim/choices.py:1449 +#: dcim/choices.py:1477 msgid "Centimeters" msgstr "Centimètres" -#: dcim/choices.py:1450 +#: dcim/choices.py:1478 msgid "Miles" msgstr "Miles" -#: dcim/choices.py:1451 templates/dcim/cable_trace.html:66 +#: dcim/choices.py:1479 templates/dcim/cable_trace.html:66 msgid "Feet" msgstr "Pieds" -#: dcim/choices.py:1467 templates/dcim/device.html:319 +#: dcim/choices.py:1495 templates/dcim/device.html:319 #: templates/dcim/rack.html:152 msgid "Kilograms" msgstr "Kilogrammes" -#: dcim/choices.py:1468 +#: dcim/choices.py:1496 msgid "Grams" msgstr "Grammes" -#: dcim/choices.py:1469 templates/dcim/rack.html:153 +#: dcim/choices.py:1497 templates/dcim/rack.html:153 msgid "Pounds" msgstr "Livres" -#: dcim/choices.py:1470 +#: dcim/choices.py:1498 msgid "Ounces" msgstr "Onces" -#: dcim/choices.py:1516 tenancy/choices.py:17 +#: dcim/choices.py:1544 tenancy/choices.py:17 msgid "Primary" msgstr "Primaire" -#: dcim/choices.py:1517 +#: dcim/choices.py:1545 msgid "Redundant" msgstr "Redondant" -#: dcim/choices.py:1538 +#: dcim/choices.py:1566 msgid "Single phase" msgstr "Monophasé" -#: dcim/choices.py:1539 +#: dcim/choices.py:1567 msgid "Three-phase" msgstr "Triphasé" @@ -2252,30 +2292,30 @@ msgid "Parent location (slug)" msgstr "Localisation du parent (limace)" #: dcim/filtersets.py:257 dcim/filtersets.py:333 dcim/filtersets.py:432 -#: dcim/filtersets.py:1005 dcim/filtersets.py:1331 dcim/filtersets.py:2101 +#: dcim/filtersets.py:1005 dcim/filtersets.py:1341 dcim/filtersets.py:2111 msgid "Location (ID)" msgstr "Lieu (ID)" #: dcim/filtersets.py:264 dcim/filtersets.py:340 dcim/filtersets.py:439 -#: dcim/filtersets.py:1337 extras/filtersets.py:494 +#: dcim/filtersets.py:1347 extras/filtersets.py:494 msgid "Location (slug)" msgstr "Emplacement (limace)" #: dcim/filtersets.py:354 dcim/filtersets.py:840 dcim/filtersets.py:942 -#: dcim/filtersets.py:1769 ipam/filtersets.py:381 ipam/filtersets.py:493 +#: dcim/filtersets.py:1779 ipam/filtersets.py:381 ipam/filtersets.py:493 #: ipam/filtersets.py:989 virtualization/filtersets.py:210 msgid "Role (ID)" msgstr "Rôle (ID)" #: dcim/filtersets.py:360 dcim/filtersets.py:846 dcim/filtersets.py:948 -#: dcim/filtersets.py:1775 extras/filtersets.py:510 ipam/filtersets.py:387 +#: dcim/filtersets.py:1785 extras/filtersets.py:510 ipam/filtersets.py:387 #: ipam/filtersets.py:499 ipam/filtersets.py:995 #: virtualization/filtersets.py:216 msgid "Role (slug)" msgstr "Rôle (limace)" -#: dcim/filtersets.py:389 dcim/filtersets.py:1010 dcim/filtersets.py:1342 -#: dcim/filtersets.py:2163 +#: dcim/filtersets.py:389 dcim/filtersets.py:1010 dcim/filtersets.py:1352 +#: dcim/filtersets.py:2173 msgid "Rack (ID)" msgstr "Baie (ID)" @@ -2290,14 +2330,14 @@ msgid "User (name)" msgstr "Utilisateur (nom)" #: dcim/filtersets.py:481 dcim/filtersets.py:620 dcim/filtersets.py:830 -#: dcim/filtersets.py:881 dcim/filtersets.py:921 dcim/filtersets.py:1233 -#: dcim/filtersets.py:1759 +#: dcim/filtersets.py:881 dcim/filtersets.py:921 dcim/filtersets.py:1243 +#: dcim/filtersets.py:1769 msgid "Manufacturer (ID)" msgstr "Fabricant (ID)" #: dcim/filtersets.py:487 dcim/filtersets.py:626 dcim/filtersets.py:836 -#: dcim/filtersets.py:887 dcim/filtersets.py:927 dcim/filtersets.py:1239 -#: dcim/filtersets.py:1765 +#: dcim/filtersets.py:887 dcim/filtersets.py:927 dcim/filtersets.py:1249 +#: dcim/filtersets.py:1775 msgid "Manufacturer (slug)" msgstr "Fabricant (limace)" @@ -2319,37 +2359,37 @@ msgstr "Possède une image arrière" #: dcim/filtersets.py:509 dcim/filtersets.py:630 dcim/filtersets.py:1068 #: dcim/forms/filtersets.py:466 dcim/forms/filtersets.py:562 -#: dcim/forms/filtersets.py:776 +#: dcim/forms/filtersets.py:777 msgid "Has console ports" msgstr "Possède des ports de console" #: dcim/filtersets.py:513 dcim/filtersets.py:634 dcim/filtersets.py:1072 #: dcim/forms/filtersets.py:473 dcim/forms/filtersets.py:569 -#: dcim/forms/filtersets.py:783 +#: dcim/forms/filtersets.py:784 msgid "Has console server ports" msgstr "Possède des ports de serveur de console" #: dcim/filtersets.py:517 dcim/filtersets.py:638 dcim/filtersets.py:1076 #: dcim/forms/filtersets.py:480 dcim/forms/filtersets.py:576 -#: dcim/forms/filtersets.py:790 +#: dcim/forms/filtersets.py:791 msgid "Has power ports" msgstr "Possède des ports d'alimentation" #: dcim/filtersets.py:521 dcim/filtersets.py:642 dcim/filtersets.py:1080 #: dcim/forms/filtersets.py:487 dcim/forms/filtersets.py:583 -#: dcim/forms/filtersets.py:797 +#: dcim/forms/filtersets.py:798 msgid "Has power outlets" msgstr "Dispose de prises de courant" #: dcim/filtersets.py:525 dcim/filtersets.py:646 dcim/filtersets.py:1084 #: dcim/forms/filtersets.py:494 dcim/forms/filtersets.py:590 -#: dcim/forms/filtersets.py:804 +#: dcim/forms/filtersets.py:805 msgid "Has interfaces" msgstr "Possède des interfaces" #: dcim/filtersets.py:529 dcim/filtersets.py:650 dcim/filtersets.py:1088 #: dcim/forms/filtersets.py:501 dcim/forms/filtersets.py:597 -#: dcim/forms/filtersets.py:811 +#: dcim/forms/filtersets.py:812 msgid "Has pass-through ports" msgstr "Possède des ports d'intercommunication" @@ -2365,19 +2405,19 @@ msgstr "Dispose de baies pour appareils" msgid "Has inventory items" msgstr "Possède des articles en inventaire" -#: dcim/filtersets.py:698 dcim/filtersets.py:937 dcim/filtersets.py:1363 +#: dcim/filtersets.py:698 dcim/filtersets.py:937 dcim/filtersets.py:1373 msgid "Device type (ID)" msgstr "Type d'appareil (ID)" -#: dcim/filtersets.py:717 dcim/filtersets.py:1244 +#: dcim/filtersets.py:717 dcim/filtersets.py:1254 msgid "Module type (ID)" msgstr "Type de module (ID)" -#: dcim/filtersets.py:752 dcim/filtersets.py:1514 +#: dcim/filtersets.py:752 dcim/filtersets.py:1524 msgid "Power port (ID)" msgstr "Port d'alimentation (ID)" -#: dcim/filtersets.py:826 dcim/filtersets.py:1755 +#: dcim/filtersets.py:826 dcim/filtersets.py:1765 msgid "Parent inventory item (ID)" msgstr "Article d'inventaire parent (ID)" @@ -2403,8 +2443,8 @@ msgstr "Plateforme (ID)" msgid "Platform (slug)" msgstr "Plateforme (slug)" -#: dcim/filtersets.py:999 dcim/filtersets.py:1326 dcim/filtersets.py:1853 -#: dcim/filtersets.py:2095 dcim/filtersets.py:2154 +#: dcim/filtersets.py:999 dcim/filtersets.py:1336 dcim/filtersets.py:1863 +#: dcim/filtersets.py:2105 dcim/filtersets.py:2164 msgid "Site name (slug)" msgstr "Nom du site (slug)" @@ -2425,15 +2465,15 @@ msgid "Is full depth" msgstr "Est en pleine profondeur" #: dcim/filtersets.py:1040 dcim/forms/common.py:18 -#: dcim/forms/filtersets.py:746 dcim/forms/filtersets.py:1283 +#: dcim/forms/filtersets.py:747 dcim/forms/filtersets.py:1291 #: dcim/models/device_components.py:519 virtualization/filtersets.py:230 #: virtualization/filtersets.py:297 virtualization/forms/filtersets.py:172 #: virtualization/forms/filtersets.py:219 msgid "MAC address" msgstr "Adresse MAC" -#: dcim/filtersets.py:1047 dcim/filtersets.py:1201 -#: dcim/forms/filtersets.py:755 dcim/forms/filtersets.py:841 +#: dcim/filtersets.py:1047 dcim/filtersets.py:1211 +#: dcim/forms/filtersets.py:756 dcim/forms/filtersets.py:849 #: virtualization/filtersets.py:234 virtualization/forms/filtersets.py:176 msgid "Has a primary IP" msgstr "Possède une adresse IP principale" @@ -2454,59 +2494,63 @@ msgstr "Est un membre virtuel du châssis" msgid "OOB IP (ID)" msgstr "ASTUCE SUR L'EMPLOI (ID)" -#: dcim/filtersets.py:1184 +#: dcim/filtersets.py:1105 +msgid "Has virtual device context" +msgstr "Possède un contexte de périphérique virtuel" + +#: dcim/filtersets.py:1194 msgid "VDC (ID)" msgstr "VDC (IDENTIFIANT)" -#: dcim/filtersets.py:1189 +#: dcim/filtersets.py:1199 msgid "Device model" msgstr "Modèle d'appareil" -#: dcim/filtersets.py:1194 ipam/filtersets.py:632 vpn/filtersets.py:102 +#: dcim/filtersets.py:1204 ipam/filtersets.py:632 vpn/filtersets.py:102 #: vpn/filtersets.py:420 msgid "Interface (ID)" msgstr "Interface (ID)" -#: dcim/filtersets.py:1250 +#: dcim/filtersets.py:1260 msgid "Module type (model)" msgstr "Type de module (modèle)" -#: dcim/filtersets.py:1256 +#: dcim/filtersets.py:1266 msgid "Module Bay (ID)" msgstr "Module Bay (ID)" -#: dcim/filtersets.py:1260 dcim/filtersets.py:1352 ipam/filtersets.py:611 +#: dcim/filtersets.py:1270 dcim/filtersets.py:1362 ipam/filtersets.py:611 #: ipam/filtersets.py:851 ipam/filtersets.py:1075 #: virtualization/filtersets.py:161 vpn/filtersets.py:398 msgid "Device (ID)" msgstr "Appareil (ID)" -#: dcim/filtersets.py:1348 +#: dcim/filtersets.py:1358 msgid "Rack (name)" msgstr "Baie (nom)" -#: dcim/filtersets.py:1358 ipam/filtersets.py:606 ipam/filtersets.py:846 +#: dcim/filtersets.py:1368 ipam/filtersets.py:606 ipam/filtersets.py:846 #: ipam/filtersets.py:1081 vpn/filtersets.py:393 msgid "Device (name)" msgstr "Appareil (nom)" -#: dcim/filtersets.py:1369 +#: dcim/filtersets.py:1379 msgid "Device type (model)" msgstr "Type d'appareil (modèle)" -#: dcim/filtersets.py:1374 +#: dcim/filtersets.py:1384 msgid "Device role (ID)" msgstr "Rôle de l'appareil (ID)" -#: dcim/filtersets.py:1380 +#: dcim/filtersets.py:1390 msgid "Device role (slug)" msgstr "Rôle de l'appareil (slug)" -#: dcim/filtersets.py:1385 +#: dcim/filtersets.py:1395 msgid "Virtual Chassis (ID)" msgstr "Châssis virtuel (ID)" -#: dcim/filtersets.py:1391 dcim/forms/filtersets.py:107 +#: dcim/filtersets.py:1401 dcim/forms/filtersets.py:107 #: dcim/tables/devices.py:211 netbox/navigation/menu.py:66 #: templates/dcim/device.html:119 templates/dcim/device_edit.html:93 #: templates/dcim/virtualchassis.html:20 @@ -2515,37 +2559,37 @@ msgstr "Châssis virtuel (ID)" msgid "Virtual Chassis" msgstr "Châssis virtuel" -#: dcim/filtersets.py:1411 +#: dcim/filtersets.py:1421 msgid "Module (ID)" msgstr "Module (ID)" -#: dcim/filtersets.py:1418 +#: dcim/filtersets.py:1428 msgid "Cable (ID)" msgstr "Câble (ID)" -#: dcim/filtersets.py:1527 ipam/forms/bulk_import.py:188 +#: dcim/filtersets.py:1537 ipam/forms/bulk_import.py:188 #: vpn/forms/bulk_import.py:308 msgid "Assigned VLAN" msgstr "VLAN attribué" -#: dcim/filtersets.py:1531 +#: dcim/filtersets.py:1541 msgid "Assigned VID" msgstr "VID attribué" -#: dcim/filtersets.py:1536 dcim/forms/bulk_edit.py:1382 -#: dcim/forms/bulk_import.py:836 dcim/forms/filtersets.py:1326 +#: dcim/filtersets.py:1546 dcim/forms/bulk_edit.py:1382 +#: dcim/forms/bulk_import.py:836 dcim/forms/filtersets.py:1334 #: dcim/forms/model_forms.py:1322 dcim/models/device_components.py:712 -#: dcim/tables/devices.py:618 ipam/filtersets.py:316 ipam/filtersets.py:327 +#: dcim/tables/devices.py:622 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:227 ipam/forms/bulk_edit.py:282 #: ipam/forms/bulk_edit.py:324 ipam/forms/bulk_import.py:156 #: ipam/forms/bulk_import.py:242 ipam/forms/bulk_import.py:278 -#: ipam/forms/filtersets.py:67 ipam/forms/filtersets.py:171 -#: ipam/forms/filtersets.py:302 ipam/forms/model_forms.py:60 +#: ipam/forms/filtersets.py:67 ipam/forms/filtersets.py:172 +#: ipam/forms/filtersets.py:309 ipam/forms/model_forms.py:60 #: ipam/forms/model_forms.py:200 ipam/forms/model_forms.py:245 -#: ipam/forms/model_forms.py:298 ipam/forms/model_forms.py:420 -#: ipam/forms/model_forms.py:434 ipam/forms/model_forms.py:448 -#: ipam/models/ip.py:232 ipam/models/ip.py:511 ipam/models/ip.py:719 +#: ipam/forms/model_forms.py:298 ipam/forms/model_forms.py:429 +#: ipam/forms/model_forms.py:443 ipam/forms/model_forms.py:457 +#: ipam/models/ip.py:233 ipam/models/ip.py:512 ipam/models/ip.py:720 #: ipam/models/vrfs.py:62 ipam/tables/ip.py:241 ipam/tables/ip.py:306 #: ipam/tables/ip.py:356 ipam/tables/ip.py:445 #: templates/dcim/interface.html:133 templates/ipam/ipaddress.html:18 @@ -2561,18 +2605,18 @@ msgstr "VID attribué" msgid "VRF" msgstr "VRF" -#: dcim/filtersets.py:1542 ipam/filtersets.py:322 ipam/filtersets.py:333 +#: dcim/filtersets.py:1552 ipam/filtersets.py:322 ipam/filtersets.py:333 #: ipam/filtersets.py:489 ipam/filtersets.py:590 ipam/filtersets.py:601 msgid "VRF (RD)" msgstr "VRF (RD)" -#: dcim/filtersets.py:1547 ipam/filtersets.py:1016 vpn/filtersets.py:361 +#: dcim/filtersets.py:1557 ipam/filtersets.py:1016 vpn/filtersets.py:361 msgid "L2VPN (ID)" msgstr "L2VPN (IDENTIFIANT)" -#: dcim/filtersets.py:1553 dcim/forms/filtersets.py:1331 -#: dcim/tables/devices.py:566 ipam/filtersets.py:1022 -#: ipam/forms/filtersets.py:518 ipam/tables/vlans.py:133 +#: dcim/filtersets.py:1563 dcim/forms/filtersets.py:1339 +#: dcim/tables/devices.py:570 ipam/filtersets.py:1022 +#: ipam/forms/filtersets.py:525 ipam/tables/vlans.py:133 #: templates/dcim/interface.html:93 templates/ipam/vlan.html:66 #: templates/vpn/l2vpntermination.html:12 #: virtualization/forms/filtersets.py:229 vpn/forms/bulk_import.py:280 @@ -2581,82 +2625,82 @@ msgstr "L2VPN (IDENTIFIANT)" msgid "L2VPN" msgstr "L2VPN" -#: dcim/filtersets.py:1585 +#: dcim/filtersets.py:1595 msgid "Virtual Chassis Interfaces for Device" msgstr "Interfaces de châssis virtuelles pour appareils" -#: dcim/filtersets.py:1590 +#: dcim/filtersets.py:1600 msgid "Virtual Chassis Interfaces for Device (ID)" msgstr "Interfaces de châssis virtuel pour le périphérique (ID)" -#: dcim/filtersets.py:1594 +#: dcim/filtersets.py:1604 msgid "Kind of interface" msgstr "Type d'interface" -#: dcim/filtersets.py:1599 virtualization/filtersets.py:289 +#: dcim/filtersets.py:1609 virtualization/filtersets.py:289 msgid "Parent interface (ID)" msgstr "Interface parent (ID)" -#: dcim/filtersets.py:1604 virtualization/filtersets.py:294 +#: dcim/filtersets.py:1614 virtualization/filtersets.py:294 msgid "Bridged interface (ID)" msgstr "Interface pontée (ID)" -#: dcim/filtersets.py:1609 +#: dcim/filtersets.py:1619 msgid "LAG interface (ID)" msgstr "Interface LAG (ID)" -#: dcim/filtersets.py:1636 dcim/filtersets.py:1648 -#: dcim/forms/filtersets.py:1243 dcim/forms/model_forms.py:1634 +#: dcim/filtersets.py:1646 dcim/filtersets.py:1658 +#: dcim/forms/filtersets.py:1251 dcim/forms/model_forms.py:1634 #: templates/dcim/virtualdevicecontext.html:15 msgid "Virtual Device Context" msgstr "Contexte du périphérique virtuel" -#: dcim/filtersets.py:1642 +#: dcim/filtersets.py:1652 msgid "Virtual Device Context (Identifier)" msgstr "Contexte du périphérique virtuel (identifiant)" -#: dcim/filtersets.py:1653 templates/wireless/wirelesslan.html:11 +#: dcim/filtersets.py:1663 templates/wireless/wirelesslan.html:11 #: wireless/forms/model_forms.py:53 msgid "Wireless LAN" msgstr "LAN sans fil" -#: dcim/filtersets.py:1657 dcim/tables/devices.py:605 +#: dcim/filtersets.py:1667 dcim/tables/devices.py:609 msgid "Wireless link" msgstr "Liaison sans fil" -#: dcim/filtersets.py:1727 +#: dcim/filtersets.py:1737 msgid "Installed module (ID)" msgstr "Module installé (ID)" -#: dcim/filtersets.py:1738 +#: dcim/filtersets.py:1748 msgid "Installed device (ID)" msgstr "Appareil installé (ID)" -#: dcim/filtersets.py:1744 +#: dcim/filtersets.py:1754 msgid "Installed device (name)" msgstr "Appareil installé (nom)" -#: dcim/filtersets.py:1810 +#: dcim/filtersets.py:1820 msgid "Master (ID)" msgstr "Maître (ID)" -#: dcim/filtersets.py:1816 +#: dcim/filtersets.py:1826 msgid "Master (name)" msgstr "Master (nom)" -#: dcim/filtersets.py:1858 tenancy/filtersets.py:246 +#: dcim/filtersets.py:1868 tenancy/filtersets.py:246 msgid "Tenant (ID)" msgstr "Locataire (ID)" -#: dcim/filtersets.py:1864 extras/filtersets.py:570 tenancy/filtersets.py:252 +#: dcim/filtersets.py:1874 extras/filtersets.py:570 tenancy/filtersets.py:252 msgid "Tenant (slug)" msgstr "Locataire (limace)" -#: dcim/filtersets.py:1900 dcim/forms/filtersets.py:988 +#: dcim/filtersets.py:1910 dcim/forms/filtersets.py:996 msgid "Unterminated" msgstr "Non terminé" -#: dcim/filtersets.py:2158 +#: dcim/filtersets.py:2168 msgid "Power panel (ID)" msgstr "Panneau d'alimentation (ID)" @@ -2664,13 +2708,13 @@ msgstr "Panneau d'alimentation (ID)" #: extras/forms/model_forms.py:443 extras/forms/model_forms.py:495 #: netbox/forms/base.py:84 netbox/forms/mixins.py:81 #: netbox/tables/columns.py:458 -#: templates/circuits/inc/circuit_termination.html:118 +#: 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 msgid "Tags" msgstr "Balises" -#: dcim/forms/bulk_create.py:112 dcim/forms/filtersets.py:1388 +#: dcim/forms/bulk_create.py:112 dcim/forms/filtersets.py:1396 #: dcim/forms/model_forms.py:431 dcim/forms/model_forms.py:486 #: dcim/forms/object_create.py:197 dcim/forms/object_create.py:353 #: dcim/tables/devices.py:170 dcim/tables/devices.py:702 @@ -2692,7 +2736,7 @@ msgstr "" #: dcim/forms/bulk_edit.py:116 dcim/forms/bulk_import.py:99 #: dcim/forms/model_forms.py:116 dcim/tables/sites.py:89 #: ipam/filtersets.py:985 ipam/forms/bulk_edit.py:531 -#: ipam/forms/bulk_import.py:444 ipam/forms/model_forms.py:517 +#: ipam/forms/bulk_import.py:444 ipam/forms/model_forms.py:526 #: ipam/tables/fhrp.py:67 ipam/tables/vlans.py:118 ipam/tables/vlans.py:221 #: templates/dcim/interface.html:284 templates/dcim/site.html:36 #: templates/ipam/inc/panels/fhrp_groups.html:23 templates/ipam/vlan.html:27 @@ -2739,7 +2783,7 @@ msgstr "Fuseau horaire" #: dcim/forms/bulk_edit.py:267 dcim/forms/bulk_edit.py:1160 #: dcim/forms/bulk_edit.py:1548 dcim/forms/bulk_import.py:207 #: dcim/forms/bulk_import.py:1021 dcim/forms/filtersets.py:300 -#: dcim/forms/filtersets.py:705 dcim/forms/filtersets.py:1418 +#: dcim/forms/filtersets.py:706 dcim/forms/filtersets.py:1426 #: dcim/forms/model_forms.py:219 dcim/forms/model_forms.py:1015 #: dcim/forms/model_forms.py:1454 dcim/forms/object_import.py:181 #: dcim/tables/devices.py:174 dcim/tables/devices.py:810 @@ -2749,10 +2793,10 @@ msgstr "Fuseau horaire" #: ipam/forms/bulk_edit.py:343 ipam/forms/bulk_edit.py:549 #: ipam/forms/bulk_import.py:196 ipam/forms/bulk_import.py:261 #: ipam/forms/bulk_import.py:297 ipam/forms/bulk_import.py:463 -#: ipam/forms/filtersets.py:236 ipam/forms/filtersets.py:282 -#: ipam/forms/filtersets.py:353 ipam/forms/filtersets.py:509 +#: ipam/forms/filtersets.py:237 ipam/forms/filtersets.py:289 +#: ipam/forms/filtersets.py:360 ipam/forms/filtersets.py:516 #: ipam/forms/model_forms.py:186 ipam/forms/model_forms.py:219 -#: ipam/forms/model_forms.py:248 ipam/forms/model_forms.py:680 +#: ipam/forms/model_forms.py:248 ipam/forms/model_forms.py:689 #: ipam/tables/ip.py:257 ipam/tables/ip.py:313 ipam/tables/ip.py:363 #: ipam/tables/vlans.py:126 ipam/tables/vlans.py:230 #: templates/dcim/device.html:179 @@ -2785,8 +2829,8 @@ msgid "Serial Number" msgstr "Numéro de série" #: dcim/forms/bulk_edit.py:277 dcim/forms/filtersets.py:307 -#: dcim/forms/filtersets.py:741 dcim/forms/filtersets.py:878 -#: dcim/forms/filtersets.py:1430 +#: dcim/forms/filtersets.py:742 dcim/forms/filtersets.py:886 +#: dcim/forms/filtersets.py:1438 msgid "Asset tag" msgstr "Étiquette d'actif" @@ -2857,14 +2901,14 @@ msgstr "Unité de poids" #: dcim/forms/bulk_import.py:498 dcim/forms/bulk_import.py:1309 #: dcim/forms/bulk_import.py:1313 dcim/forms/filtersets.py:102 #: dcim/forms/filtersets.py:340 dcim/forms/filtersets.py:354 -#: dcim/forms/filtersets.py:392 dcim/forms/filtersets.py:700 -#: dcim/forms/filtersets.py:946 dcim/forms/filtersets.py:1078 +#: dcim/forms/filtersets.py:392 dcim/forms/filtersets.py:701 +#: dcim/forms/filtersets.py:954 dcim/forms/filtersets.py:1086 #: dcim/forms/model_forms.py:226 dcim/forms/model_forms.py:248 #: dcim/forms/model_forms.py:422 dcim/forms/model_forms.py:700 #: dcim/forms/object_create.py:400 dcim/tables/devices.py:166 #: dcim/tables/power.py:70 dcim/tables/racks.py:148 -#: ipam/forms/bulk_edit.py:465 ipam/forms/filtersets.py:435 -#: ipam/forms/model_forms.py:601 templates/dcim/device.html:29 +#: ipam/forms/bulk_edit.py:465 ipam/forms/filtersets.py:442 +#: ipam/forms/model_forms.py:610 templates/dcim/device.html:29 #: 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 @@ -2876,7 +2920,7 @@ msgstr "Baie" #: dcim/forms/bulk_edit.py:349 dcim/forms/bulk_edit.py:628 #: dcim/forms/filtersets.py:248 dcim/forms/filtersets.py:333 #: dcim/forms/filtersets.py:416 dcim/forms/filtersets.py:543 -#: dcim/forms/filtersets.py:651 dcim/forms/filtersets.py:853 +#: dcim/forms/filtersets.py:651 dcim/forms/filtersets.py:861 #: dcim/forms/model_forms.py:610 dcim/forms/model_forms.py:1524 #: templates/dcim/device_edit.html:20 msgid "Hardware" @@ -2889,8 +2933,8 @@ msgstr "Matériel" #: dcim/forms/bulk_import.py:353 dcim/forms/bulk_import.py:395 #: dcim/forms/bulk_import.py:431 dcim/forms/bulk_import.py:1027 #: dcim/forms/filtersets.py:429 dcim/forms/filtersets.py:554 -#: dcim/forms/filtersets.py:630 dcim/forms/filtersets.py:710 -#: dcim/forms/filtersets.py:858 dcim/forms/filtersets.py:1423 +#: dcim/forms/filtersets.py:630 dcim/forms/filtersets.py:711 +#: dcim/forms/filtersets.py:866 dcim/forms/filtersets.py:1431 #: dcim/forms/model_forms.py:281 dcim/forms/model_forms.py:293 #: dcim/forms/model_forms.py:339 dcim/forms/model_forms.py:379 #: dcim/forms/model_forms.py:1020 dcim/forms/model_forms.py:1459 @@ -2924,7 +2968,7 @@ msgstr "Exclure de l'utilisation" #: dcim/forms/bulk_edit.py:431 dcim/forms/bulk_edit.py:603 #: dcim/forms/bulk_import.py:525 dcim/forms/filtersets.py:446 -#: dcim/forms/filtersets.py:732 templates/dcim/device.html:97 +#: dcim/forms/filtersets.py:733 templates/dcim/device.html:97 #: templates/dcim/devicetype.html:65 msgid "Airflow" msgstr "Débit d'air" @@ -2951,7 +2995,7 @@ msgstr "rôle de machine virtuelle" #: dcim/forms/bulk_import.py:380 dcim/forms/bulk_import.py:402 #: dcim/forms/bulk_import.py:406 dcim/forms/bulk_import.py:531 #: dcim/forms/bulk_import.py:535 dcim/forms/filtersets.py:619 -#: dcim/forms/filtersets.py:635 dcim/forms/filtersets.py:751 +#: dcim/forms/filtersets.py:635 dcim/forms/filtersets.py:752 #: dcim/forms/model_forms.py:358 dcim/forms/model_forms.py:384 #: dcim/forms/model_forms.py:495 virtualization/forms/bulk_import.py:132 #: virtualization/forms/bulk_import.py:133 @@ -2973,7 +3017,7 @@ msgid "Device role" msgstr "Rôle de l'appareil" #: dcim/forms/bulk_edit.py:593 dcim/forms/bulk_import.py:443 -#: dcim/forms/filtersets.py:724 dcim/forms/model_forms.py:394 +#: dcim/forms/filtersets.py:725 dcim/forms/model_forms.py:394 #: dcim/forms/model_forms.py:456 dcim/tables/devices.py:187 #: extras/filtersets.py:515 templates/dcim/device.html:183 #: templates/dcim/platform.html:26 @@ -2995,28 +3039,28 @@ msgstr "Plateforme" #: dcim/forms/bulk_import.py:956 dcim/forms/bulk_import.py:968 #: dcim/forms/bulk_import.py:1016 dcim/forms/bulk_import.py:1373 #: dcim/forms/connections.py:24 dcim/forms/filtersets.py:129 -#: dcim/forms/filtersets.py:832 dcim/forms/filtersets.py:962 -#: dcim/forms/filtersets.py:1152 dcim/forms/filtersets.py:1174 -#: dcim/forms/filtersets.py:1196 dcim/forms/filtersets.py:1213 -#: dcim/forms/filtersets.py:1233 dcim/forms/filtersets.py:1341 -#: dcim/forms/filtersets.py:1363 dcim/forms/filtersets.py:1384 -#: dcim/forms/filtersets.py:1399 dcim/forms/filtersets.py:1413 -#: dcim/forms/filtersets.py:1476 dcim/forms/filtersets.py:1500 -#: dcim/forms/filtersets.py:1524 dcim/forms/model_forms.py:573 +#: dcim/forms/filtersets.py:840 dcim/forms/filtersets.py:970 +#: dcim/forms/filtersets.py:1160 dcim/forms/filtersets.py:1182 +#: dcim/forms/filtersets.py:1204 dcim/forms/filtersets.py:1221 +#: dcim/forms/filtersets.py:1241 dcim/forms/filtersets.py:1349 +#: dcim/forms/filtersets.py:1371 dcim/forms/filtersets.py:1392 +#: dcim/forms/filtersets.py:1407 dcim/forms/filtersets.py:1421 +#: dcim/forms/filtersets.py:1484 dcim/forms/filtersets.py:1508 +#: dcim/forms/filtersets.py:1532 dcim/forms/model_forms.py:573 #: dcim/forms/model_forms.py:794 dcim/forms/model_forms.py:1153 #: dcim/forms/model_forms.py:1608 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:290 -#: dcim/tables/devices.py:355 dcim/tables/devices.py:399 -#: dcim/tables/devices.py:444 dcim/tables/devices.py:498 -#: dcim/tables/devices.py:590 dcim/tables/devices.py:692 +#: dcim/tables/devices.py:359 dcim/tables/devices.py:403 +#: dcim/tables/devices.py:448 dcim/tables/devices.py:502 +#: dcim/tables/devices.py:594 dcim/tables/devices.py:692 #: dcim/tables/devices.py:752 dcim/tables/devices.py:802 #: dcim/tables/devices.py:862 dcim/tables/devices.py:914 #: dcim/tables/devices.py:1040 dcim/tables/modules.py:52 #: extras/forms/filtersets.py:330 ipam/forms/bulk_import.py:303 -#: ipam/forms/bulk_import.py:489 ipam/forms/filtersets.py:551 -#: ipam/forms/model_forms.py:317 ipam/forms/model_forms.py:716 -#: ipam/forms/model_forms.py:749 ipam/forms/model_forms.py:775 +#: ipam/forms/bulk_import.py:489 ipam/forms/filtersets.py:558 +#: ipam/forms/model_forms.py:317 ipam/forms/model_forms.py:725 +#: ipam/forms/model_forms.py:758 ipam/forms/model_forms.py:784 #: ipam/tables/vlans.py:176 templates/dcim/consoleport.html:20 #: templates/dcim/consoleserverport.html:20 templates/dcim/device.html:14 #: templates/dcim/device.html:128 templates/dcim/device_edit.html:10 @@ -3071,13 +3115,13 @@ msgstr "Type de module" msgid "Label" msgstr "Libellé" -#: dcim/forms/bulk_edit.py:706 dcim/forms/filtersets.py:979 +#: dcim/forms/bulk_edit.py:706 dcim/forms/filtersets.py:987 #: templates/dcim/cable.html:50 msgid "Length" msgstr "Longueur" #: dcim/forms/bulk_edit.py:711 dcim/forms/bulk_import.py:1174 -#: dcim/forms/bulk_import.py:1177 dcim/forms/filtersets.py:983 +#: dcim/forms/bulk_import.py:1177 dcim/forms/filtersets.py:991 msgid "Length unit" msgstr "Unité de longueur" @@ -3086,41 +3130,34 @@ msgid "Domain" msgstr "Domaine" #: dcim/forms/bulk_edit.py:803 dcim/forms/bulk_import.py:1296 -#: dcim/forms/filtersets.py:1069 dcim/forms/model_forms.py:695 +#: dcim/forms/filtersets.py:1077 dcim/forms/model_forms.py:695 msgid "Power panel" msgstr "panneau d'alimentation" #: dcim/forms/bulk_edit.py:825 dcim/forms/bulk_import.py:1332 -#: dcim/forms/filtersets.py:1091 templates/dcim/powerfeed.html:83 +#: dcim/forms/filtersets.py:1099 templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "Approvisionnement" #: dcim/forms/bulk_edit.py:831 dcim/forms/bulk_import.py:1337 -#: dcim/forms/filtersets.py:1096 templates/dcim/powerfeed.html:95 +#: dcim/forms/filtersets.py:1104 templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "Phase" -#: dcim/forms/bulk_edit.py:837 dcim/forms/filtersets.py:1101 +#: dcim/forms/bulk_edit.py:837 dcim/forms/filtersets.py:1109 #: templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "tension" -#: dcim/forms/bulk_edit.py:841 dcim/forms/filtersets.py:1105 +#: dcim/forms/bulk_edit.py:841 dcim/forms/filtersets.py:1113 #: templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "Ampérage" -#: dcim/forms/bulk_edit.py:845 dcim/forms/filtersets.py:1109 +#: dcim/forms/bulk_edit.py:845 dcim/forms/filtersets.py:1117 msgid "Max utilization" msgstr "Utilisation maximale" -#: dcim/forms/bulk_edit.py:849 dcim/forms/bulk_edit.py:1208 -#: dcim/forms/bulk_edit.py:1225 dcim/forms/bulk_edit.py:1242 -#: dcim/forms/bulk_edit.py:1260 dcim/forms/bulk_edit.py:1348 -#: dcim/forms/bulk_edit.py:1487 dcim/forms/bulk_edit.py:1504 -msgid "Mark connected" -msgstr "Marquer comme connecté" - #: dcim/forms/bulk_edit.py:934 msgid "Maximum draw" msgstr "Tirage maximum" @@ -3154,7 +3191,7 @@ msgid "Management only" msgstr "Gestion uniquement" #: dcim/forms/bulk_edit.py:1037 dcim/forms/bulk_edit.py:1339 -#: dcim/forms/bulk_import.py:821 dcim/forms/filtersets.py:1292 +#: dcim/forms/bulk_import.py:821 dcim/forms/filtersets.py:1300 #: dcim/forms/object_import.py:90 #: dcim/models/device_component_templates.py:411 #: dcim/models/device_components.py:671 @@ -3162,14 +3199,14 @@ msgid "PoE mode" msgstr "Mode PoE" #: dcim/forms/bulk_edit.py:1043 dcim/forms/bulk_edit.py:1345 -#: dcim/forms/bulk_import.py:827 dcim/forms/filtersets.py:1297 +#: dcim/forms/bulk_import.py:827 dcim/forms/filtersets.py:1305 #: dcim/forms/object_import.py:95 #: dcim/models/device_component_templates.py:417 #: dcim/models/device_components.py:677 msgid "PoE type" msgstr "Type PoE" -#: dcim/forms/bulk_edit.py:1049 dcim/forms/filtersets.py:1302 +#: dcim/forms/bulk_edit.py:1049 dcim/forms/filtersets.py:1310 #: dcim/forms/object_import.py:100 msgid "Wireless role" msgstr "Rôle sans fil" @@ -3194,10 +3231,10 @@ msgid "Virtual device contexts" msgstr "Contextes des appareils virtuels" #: dcim/forms/bulk_edit.py:1324 dcim/forms/bulk_import.py:659 -#: dcim/forms/bulk_import.py:685 dcim/forms/filtersets.py:1161 -#: dcim/forms/filtersets.py:1183 dcim/forms/filtersets.py:1256 -#: dcim/tables/devices.py:602 -#: templates/circuits/inc/circuit_termination.html:93 +#: dcim/forms/bulk_import.py:685 dcim/forms/filtersets.py:1169 +#: dcim/forms/filtersets.py:1191 dcim/forms/filtersets.py:1264 +#: dcim/tables/devices.py:606 +#: templates/circuits/inc/circuit_termination_fields.html:67 #: templates/dcim/consoleport.html:40 templates/dcim/consoleserverport.html:40 msgid "Speed" msgstr "Vitesse" @@ -3214,20 +3251,20 @@ msgid "Mode" msgstr "Mode" #: dcim/forms/bulk_edit.py:1361 dcim/forms/model_forms.py:1299 -#: ipam/forms/bulk_import.py:177 ipam/forms/filtersets.py:498 +#: ipam/forms/bulk_import.py:177 ipam/forms/filtersets.py:505 #: ipam/models/vlans.py:84 virtualization/forms/bulk_edit.py:240 #: virtualization/forms/model_forms.py:321 msgid "VLAN group" msgstr "groupe VLAN" #: dcim/forms/bulk_edit.py:1369 dcim/forms/model_forms.py:1304 -#: dcim/tables/devices.py:575 virtualization/forms/bulk_edit.py:248 +#: dcim/tables/devices.py:579 virtualization/forms/bulk_edit.py:248 #: virtualization/forms/model_forms.py:326 msgid "Untagged VLAN" msgstr "VLAN non balisé" #: dcim/forms/bulk_edit.py:1377 dcim/forms/model_forms.py:1313 -#: dcim/tables/devices.py:581 virtualization/forms/bulk_edit.py:256 +#: dcim/tables/devices.py:585 virtualization/forms/bulk_edit.py:256 #: virtualization/forms/model_forms.py:335 msgid "Tagged VLANs" msgstr "VLAN balisés" @@ -3237,12 +3274,12 @@ msgid "Wireless LAN group" msgstr "Groupe LAN sans fil" #: dcim/forms/bulk_edit.py:1392 dcim/forms/model_forms.py:1291 -#: dcim/tables/devices.py:611 netbox/navigation/menu.py:133 +#: dcim/tables/devices.py:615 netbox/navigation/menu.py:133 #: templates/dcim/interface.html:280 wireless/tables/wirelesslan.py:24 msgid "Wireless LANs" msgstr "Réseaux locaux sans fil" -#: dcim/forms/bulk_edit.py:1401 dcim/forms/filtersets.py:1229 +#: dcim/forms/bulk_edit.py:1401 dcim/forms/filtersets.py:1237 #: dcim/forms/model_forms.py:1334 ipam/forms/bulk_edit.py:271 #: ipam/forms/bulk_edit.py:362 ipam/forms/filtersets.py:169 #: templates/dcim/interface.html:122 templates/ipam/prefix.html:95 @@ -3255,7 +3292,7 @@ msgstr "Adressage" msgid "Operation" msgstr "Fonctionnement" -#: dcim/forms/bulk_edit.py:1403 dcim/forms/filtersets.py:1230 +#: dcim/forms/bulk_edit.py:1403 dcim/forms/filtersets.py:1238 #: dcim/forms/model_forms.py:932 dcim/forms/model_forms.py:1337 msgid "PoE" msgstr "PoE" @@ -3412,8 +3449,8 @@ msgstr "Châssis virtuel" #: dcim/forms/bulk_import.py:462 dcim/forms/model_forms.py:465 #: dcim/tables/devices.py:207 extras/filtersets.py:548 #: extras/forms/filtersets.py:331 ipam/forms/bulk_edit.py:479 -#: ipam/forms/filtersets.py:408 ipam/forms/filtersets.py:452 -#: ipam/forms/model_forms.py:618 templates/dcim/device.html:231 +#: ipam/forms/filtersets.py:415 ipam/forms/filtersets.py:459 +#: ipam/forms/model_forms.py:627 templates/dcim/device.html:231 #: templates/virtualization/cluster.html:10 #: templates/virtualization/virtualmachine.html:88 #: templates/virtualization/virtualmachine.html:97 @@ -3557,7 +3594,7 @@ msgstr "" msgid "Physical medium" msgstr "Support physique" -#: dcim/forms/bulk_import.py:813 dcim/forms/filtersets.py:1263 +#: dcim/forms/bulk_import.py:813 dcim/forms/filtersets.py:1271 msgid "Duplex" msgstr "Duplex" @@ -3575,8 +3612,8 @@ msgstr "Mode de fonctionnement IEEE 802.1Q (pour interfaces L2)" #: dcim/forms/bulk_import.py:840 ipam/forms/bulk_import.py:160 #: ipam/forms/bulk_import.py:246 ipam/forms/bulk_import.py:282 -#: ipam/forms/filtersets.py:200 ipam/forms/filtersets.py:270 -#: ipam/forms/filtersets.py:329 virtualization/forms/bulk_import.py:175 +#: ipam/forms/filtersets.py:201 ipam/forms/filtersets.py:277 +#: ipam/forms/filtersets.py:336 virtualization/forms/bulk_import.py:175 msgid "Assigned VRF" msgstr "VRF attribué" @@ -3804,29 +3841,33 @@ msgstr "Composantes" msgid "Subdevice role" msgstr "Rôle du sous-appareil" -#: dcim/forms/filtersets.py:718 +#: dcim/forms/filtersets.py:719 msgid "Model" msgstr "Modèle" -#: dcim/forms/filtersets.py:762 +#: dcim/forms/filtersets.py:763 msgid "Has an OOB IP" msgstr "Possède une adresse IP OOB" -#: dcim/forms/filtersets.py:769 +#: dcim/forms/filtersets.py:770 msgid "Virtual chassis member" msgstr "Membre virtuel du châssis" -#: dcim/forms/filtersets.py:1121 +#: dcim/forms/filtersets.py:819 +msgid "Has virtual device contexts" +msgstr "Possède des contextes de périphériques virtuels" + +#: dcim/forms/filtersets.py:1129 msgid "Cabled" msgstr "câblé" -#: dcim/forms/filtersets.py:1128 +#: dcim/forms/filtersets.py:1136 msgid "Occupied" msgstr "Occupé" -#: dcim/forms/filtersets.py:1153 dcim/forms/filtersets.py:1175 -#: dcim/forms/filtersets.py:1197 dcim/forms/filtersets.py:1214 -#: dcim/forms/filtersets.py:1234 dcim/tables/devices.py:348 +#: dcim/forms/filtersets.py:1161 dcim/forms/filtersets.py:1183 +#: dcim/forms/filtersets.py:1205 dcim/forms/filtersets.py:1222 +#: dcim/forms/filtersets.py:1242 dcim/tables/devices.py:352 #: 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 @@ -3834,40 +3875,40 @@ msgstr "Occupé" msgid "Connection" msgstr "Connexion" -#: dcim/forms/filtersets.py:1246 extras/forms/bulk_edit.py:316 +#: dcim/forms/filtersets.py:1254 extras/forms/bulk_edit.py:316 #: extras/forms/bulk_import.py:242 extras/forms/filtersets.py:476 #: extras/forms/model_forms.py:551 extras/tables/tables.py:512 #: templates/extras/journalentry.html:30 msgid "Kind" msgstr "Type" -#: dcim/forms/filtersets.py:1275 +#: dcim/forms/filtersets.py:1283 msgid "Mgmt only" msgstr "Gestion uniquement" -#: dcim/forms/filtersets.py:1287 dcim/forms/model_forms.py:1327 +#: dcim/forms/filtersets.py:1295 dcim/forms/model_forms.py:1327 #: dcim/models/device_components.py:630 templates/dcim/interface.html:129 msgid "WWN" msgstr "WWN" -#: dcim/forms/filtersets.py:1307 +#: dcim/forms/filtersets.py:1315 msgid "Wireless channel" msgstr "Canal sans fil" -#: dcim/forms/filtersets.py:1311 +#: dcim/forms/filtersets.py:1319 msgid "Channel frequency (MHz)" msgstr "Fréquence du canal (MHz)" -#: dcim/forms/filtersets.py:1315 +#: dcim/forms/filtersets.py:1323 msgid "Channel width (MHz)" msgstr "Largeur du canal (MHz)" -#: dcim/forms/filtersets.py:1319 templates/dcim/interface.html:85 +#: dcim/forms/filtersets.py:1327 templates/dcim/interface.html:85 msgid "Transmit power (dBm)" msgstr "Puissance de transmission (dBm)" -#: dcim/forms/filtersets.py:1342 dcim/forms/filtersets.py:1364 -#: dcim/tables/devices.py:320 templates/dcim/cable.html:12 +#: dcim/forms/filtersets.py:1350 dcim/forms/filtersets.py:1372 +#: dcim/tables/devices.py:324 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 @@ -3875,7 +3916,7 @@ msgstr "Puissance de transmission (dBm)" msgid "Cable" msgstr "câble" -#: dcim/forms/filtersets.py:1434 dcim/tables/devices.py:933 +#: dcim/forms/filtersets.py:1442 dcim/tables/devices.py:933 msgid "Discovered" msgstr "Découvert" @@ -3996,7 +4037,7 @@ msgstr "Modèle de port arrière" #: dcim/tables/connections.py:65 ipam/forms/bulk_import.py:317 #: ipam/forms/model_forms.py:278 ipam/forms/model_forms.py:287 #: ipam/tables/fhrp.py:64 ipam/tables/ip.py:368 ipam/tables/vlans.py:165 -#: templates/circuits/inc/circuit_termination.html:77 +#: 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 @@ -4024,7 +4065,7 @@ msgid "Console Server Port" msgstr "Port du serveur de consoles" #: dcim/forms/model_forms.py:1092 dcim/forms/model_forms.py:1530 -#: templates/circuits/inc/circuit_termination.html:78 +#: 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 @@ -4033,7 +4074,7 @@ msgstr "Port avant" #: dcim/forms/model_forms.py:1093 dcim/forms/model_forms.py:1531 #: dcim/tables/devices.py:705 -#: templates/circuits/inc/circuit_termination.html:79 +#: 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 @@ -4042,7 +4083,7 @@ msgid "Rear Port" msgstr "Port arrière" #: dcim/forms/model_forms.py:1094 dcim/forms/model_forms.py:1532 -#: dcim/tables/connections.py:46 dcim/tables/devices.py:505 +#: dcim/tables/connections.py:46 dcim/tables/devices.py:509 #: templates/dcim/poweroutlet.html:44 templates/dcim/powerport.html:17 msgid "Power Port" msgstr "Port d'alimentation" @@ -5357,7 +5398,7 @@ msgstr "" #: dcim/models/mixins.py:15 extras/models/configs.py:41 #: extras/models/models.py:341 extras/models/models.py:550 -#: extras/models/search.py:48 ipam/models/ip.py:193 +#: extras/models/search.py:48 ipam/models/ip.py:194 msgid "weight" msgstr "poids" @@ -5852,28 +5893,37 @@ msgstr "Articles d'inventaire" msgid "Module Bay" msgstr "Module Bay" -#: dcim/tables/devices.py:326 +#: dcim/tables/devices.py:318 dcim/tables/devicetypes.py:48 +#: dcim/tables/devicetypes.py:140 dcim/views.py:1081 dcim/views.py:2024 +#: netbox/navigation/menu.py:90 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 +msgid "Inventory Items" +msgstr "Articles d'inventaire" + +#: dcim/tables/devices.py:330 msgid "Cable Color" msgstr "Couleur du câble" -#: dcim/tables/devices.py:332 +#: dcim/tables/devices.py:336 msgid "Link Peers" msgstr "Lier les pairs" -#: dcim/tables/devices.py:335 +#: dcim/tables/devices.py:339 msgid "Mark Connected" msgstr "Marquer comme connecté" -#: dcim/tables/devices.py:451 +#: dcim/tables/devices.py:455 msgid "Maximum draw (W)" msgstr "Tirage maximal (W)" -#: dcim/tables/devices.py:454 +#: dcim/tables/devices.py:458 msgid "Allocated draw (W)" msgstr "Tirage alloué (W)" -#: dcim/tables/devices.py:554 ipam/forms/model_forms.py:738 -#: ipam/tables/fhrp.py:28 ipam/views.py:596 ipam/views.py:690 +#: dcim/tables/devices.py:558 ipam/forms/model_forms.py:747 +#: ipam/tables/fhrp.py:28 ipam/views.py:602 ipam/views.py:701 #: netbox/navigation/menu.py:145 netbox/navigation/menu.py:147 #: templates/dcim/interface.html:339 templates/ipam/ipaddress_bulk_add.html:15 #: templates/ipam/service.html:40 templates/virtualization/vminterface.html:85 @@ -5881,12 +5931,12 @@ msgstr "Tirage alloué (W)" msgid "IP Addresses" msgstr "Adresses IP" -#: dcim/tables/devices.py:560 netbox/navigation/menu.py:189 +#: dcim/tables/devices.py:564 netbox/navigation/menu.py:189 #: templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "Groupes FHRP" -#: dcim/tables/devices.py:572 templates/dcim/interface.html:89 +#: 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 @@ -5895,24 +5945,15 @@ msgstr "Groupes FHRP" msgid "Tunnel" msgstr "Tunnel" -#: dcim/tables/devices.py:597 dcim/tables/devicetypes.py:224 +#: dcim/tables/devices.py:601 dcim/tables/devicetypes.py:224 #: templates/dcim/interface.html:65 msgid "Management Only" msgstr "Gestion uniquement" -#: dcim/tables/devices.py:615 +#: dcim/tables/devices.py:619 msgid "VDCs" msgstr "VDC" -#: dcim/tables/devices.py:623 dcim/tables/devicetypes.py:48 -#: dcim/tables/devicetypes.py:140 dcim/views.py:1081 dcim/views.py:2024 -#: netbox/navigation/menu.py:90 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 -msgid "Inventory Items" -msgstr "Articles d'inventaire" - #: dcim/tables/devices.py:870 templates/dcim/modulebay.html:49 msgid "Installed Module" msgstr "Module installé" @@ -6028,7 +6069,7 @@ msgstr "Baies pour appareils" msgid "Module Bays" msgstr "Baies pour modules" -#: dcim/tables/power.py:36 netbox/navigation/menu.py:281 +#: dcim/tables/power.py:36 netbox/navigation/menu.py:282 #: templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "Alimentations" @@ -6518,7 +6559,7 @@ msgid "Cluster type (slug)" msgstr "Type de cluster (slug)" #: extras/filtersets.py:537 ipam/forms/bulk_edit.py:476 -#: ipam/forms/filtersets.py:457 ipam/forms/model_forms.py:615 +#: ipam/forms/filtersets.py:464 ipam/forms/model_forms.py:624 #: virtualization/forms/filtersets.py:112 msgid "Cluster group" msgstr "Groupe de clusters" @@ -7023,7 +7064,7 @@ msgid "Tenants" msgstr "Locataires" #: extras/forms/model_forms.py:458 ipam/forms/filtersets.py:142 -#: ipam/forms/filtersets.py:546 ipam/forms/model_forms.py:321 +#: ipam/forms/filtersets.py:553 ipam/forms/model_forms.py:321 #: 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:311 @@ -7864,11 +7905,11 @@ msgstr "script" msgid "scripts" msgstr "scripts" -#: extras/models/scripts.py:110 +#: extras/models/scripts.py:111 msgid "script module" msgstr "module de script" -#: extras/models/scripts.py:111 +#: extras/models/scripts.py:112 msgid "script modules" msgstr "modules de script" @@ -8134,7 +8175,7 @@ msgstr "Widget supprimé : " msgid "Error deleting widget: " msgstr "Erreur lors de la suppression du widget : " -#: extras/views.py:1081 +#: extras/views.py:1101 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 " @@ -8284,7 +8325,7 @@ msgid "Prefixes which contain this prefix or IP" msgstr "Préfixes contenant ce préfixe ou cette adresse IP" #: ipam/filtersets.py:304 ipam/filtersets.py:572 ipam/forms/bulk_edit.py:327 -#: ipam/forms/filtersets.py:195 ipam/forms/filtersets.py:324 +#: ipam/forms/filtersets.py:196 ipam/forms/filtersets.py:331 msgid "Mask length" msgstr "Longueur du masque" @@ -8297,7 +8338,7 @@ msgid "VLAN number (1-4094)" msgstr "Numéro de VLAN (1-4094)" #: ipam/filtersets.py:471 ipam/filtersets.py:475 ipam/filtersets.py:567 -#: ipam/forms/model_forms.py:452 templates/tenancy/contact.html:53 +#: ipam/forms/model_forms.py:461 templates/tenancy/contact.html:53 #: tenancy/forms/bulk_edit.py:113 msgid "Address" msgstr "Adresse" @@ -8357,7 +8398,7 @@ msgstr "Adresse IP intérieure NAT (ID)" msgid "IP address (ID)" msgstr "Adresse IP (ID)" -#: ipam/filtersets.py:1102 ipam/models/ip.py:787 +#: ipam/filtersets.py:1102 ipam/models/ip.py:788 msgid "IP address" msgstr "Adresse IP" @@ -8413,7 +8454,7 @@ msgstr "Est privé" #: ipam/forms/filtersets.py:148 ipam/forms/model_forms.py:94 #: ipam/forms/model_forms.py:107 ipam/forms/model_forms.py:129 #: ipam/forms/model_forms.py:147 ipam/models/asns.py:31 -#: ipam/models/asns.py:103 ipam/models/ip.py:70 ipam/models/ip.py:89 +#: 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 @@ -8428,36 +8469,36 @@ msgstr "Date d'ajout" msgid "Prefix length" msgstr "Longueur du préfixe" -#: ipam/forms/bulk_edit.py:253 ipam/forms/filtersets.py:240 +#: ipam/forms/bulk_edit.py:253 ipam/forms/filtersets.py:241 #: templates/ipam/prefix.html:85 msgid "Is a pool" msgstr "C'est une piscine" #: ipam/forms/bulk_edit.py:258 ipam/forms/bulk_edit.py:302 -#: ipam/forms/filtersets.py:247 ipam/forms/filtersets.py:286 -#: ipam/models/ip.py:271 ipam/models/ip.py:538 +#: ipam/forms/filtersets.py:248 ipam/forms/filtersets.py:293 +#: ipam/models/ip.py:272 ipam/models/ip.py:539 msgid "Treat as fully utilized" msgstr "Traiter comme s'il avait été pleinement utilisé" -#: ipam/forms/bulk_edit.py:350 ipam/models/ip.py:771 +#: ipam/forms/bulk_edit.py:350 ipam/models/ip.py:772 msgid "DNS name" msgstr "Nom DNS" #: ipam/forms/bulk_edit.py:371 ipam/forms/bulk_edit.py:572 #: ipam/forms/bulk_import.py:393 ipam/forms/bulk_import.py:477 -#: ipam/forms/bulk_import.py:503 ipam/forms/filtersets.py:383 -#: ipam/forms/filtersets.py:530 templates/ipam/fhrpgroup.html:22 +#: ipam/forms/bulk_import.py:503 ipam/forms/filtersets.py:390 +#: ipam/forms/filtersets.py:537 templates/ipam/fhrpgroup.html:22 #: templates/ipam/inc/panels/fhrp_groups.html:24 #: templates/ipam/service.html:32 templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "Protocole" -#: ipam/forms/bulk_edit.py:378 ipam/forms/filtersets.py:390 +#: ipam/forms/bulk_edit.py:378 ipam/forms/filtersets.py:397 #: ipam/tables/fhrp.py:22 templates/ipam/fhrpgroup.html:26 msgid "Group ID" msgstr "ID de groupe" -#: ipam/forms/bulk_edit.py:383 ipam/forms/filtersets.py:395 +#: ipam/forms/bulk_edit.py:383 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 @@ -8465,12 +8506,12 @@ msgstr "ID de groupe" msgid "Authentication type" msgstr "Type d'authentification" -#: ipam/forms/bulk_edit.py:388 ipam/forms/filtersets.py:399 +#: ipam/forms/bulk_edit.py:388 ipam/forms/filtersets.py:406 msgid "Authentication key" msgstr "Clé d'authentification" -#: ipam/forms/bulk_edit.py:405 ipam/forms/filtersets.py:376 -#: ipam/forms/model_forms.py:463 netbox/navigation/menu.py:369 +#: ipam/forms/bulk_edit.py:405 ipam/forms/filtersets.py:383 +#: ipam/forms/model_forms.py:472 netbox/navigation/menu.py:370 #: templates/ipam/fhrpgroup.html:49 #: templates/wireless/inc/authentication_attrs.html:5 #: wireless/forms/bulk_edit.py:91 wireless/forms/bulk_edit.py:138 @@ -8487,11 +8528,11 @@ msgstr "VID VLAN minimum pour enfants" msgid "Maximum child VLAN VID" msgstr "VID VLAN maximum pour enfants" -#: ipam/forms/bulk_edit.py:429 ipam/forms/model_forms.py:557 +#: ipam/forms/bulk_edit.py:429 ipam/forms/model_forms.py:566 msgid "Scope type" msgstr "Type de portée" -#: ipam/forms/bulk_edit.py:491 ipam/forms/model_forms.py:632 +#: ipam/forms/bulk_edit.py:491 ipam/forms/model_forms.py:641 #: ipam/tables/vlans.py:71 templates/ipam/vlangroup.html:38 msgid "Scope" msgstr "Champ" @@ -8500,8 +8541,8 @@ msgstr "Champ" msgid "Site & Group" msgstr "Site et groupe" -#: ipam/forms/bulk_edit.py:577 ipam/forms/model_forms.py:696 -#: ipam/forms/model_forms.py:728 ipam/tables/services.py:19 +#: ipam/forms/bulk_edit.py:577 ipam/forms/model_forms.py:705 +#: ipam/forms/model_forms.py:737 ipam/tables/services.py:19 #: ipam/tables/services.py:49 templates/ipam/service.html:36 #: templates/ipam/servicetemplate.html:23 msgid "Ports" @@ -8524,15 +8565,15 @@ msgstr "RIR attribué" msgid "VLAN's group (if any)" msgstr "Le groupe du VLAN (le cas échéant)" -#: ipam/forms/bulk_import.py:184 ipam/forms/model_forms.py:216 -#: ipam/models/vlans.py:214 ipam/tables/ip.py:254 -#: 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:101 +#: ipam/forms/bulk_import.py:184 ipam/forms/filtersets.py:256 +#: ipam/forms/model_forms.py:216 ipam/models/vlans.py:214 +#: ipam/tables/ip.py:254 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:101 msgid "VLAN" msgstr "VLAN" @@ -8541,7 +8582,7 @@ msgid "Parent device of assigned interface (if any)" msgstr "Appareil parent auquel est attribuée l'interface (le cas échéant)" #: ipam/forms/bulk_import.py:310 ipam/forms/bulk_import.py:496 -#: ipam/forms/model_forms.py:722 virtualization/filtersets.py:284 +#: ipam/forms/model_forms.py:731 virtualization/filtersets.py:284 #: virtualization/filtersets.py:323 virtualization/forms/bulk_edit.py:200 #: virtualization/forms/bulk_edit.py:326 #: virtualization/forms/bulk_import.py:146 @@ -8647,8 +8688,8 @@ msgstr "Exporté par VRF" msgid "Private" msgstr "Privé" -#: ipam/forms/filtersets.py:105 ipam/forms/filtersets.py:190 -#: ipam/forms/filtersets.py:265 ipam/forms/filtersets.py:319 +#: ipam/forms/filtersets.py:105 ipam/forms/filtersets.py:191 +#: ipam/forms/filtersets.py:272 ipam/forms/filtersets.py:326 msgid "Address family" msgstr "Famille d'adresses" @@ -8664,53 +8705,57 @@ msgstr "Démarrer" msgid "End" msgstr "Fin" -#: ipam/forms/filtersets.py:185 +#: ipam/forms/filtersets.py:171 +msgid "VLAN Assignment" +msgstr "Attribution de VLAN" + +#: ipam/forms/filtersets.py:186 msgid "Search within" msgstr "Rechercher dans" -#: ipam/forms/filtersets.py:206 ipam/forms/filtersets.py:335 +#: ipam/forms/filtersets.py:207 ipam/forms/filtersets.py:342 msgid "Present in VRF" msgstr "Présent en VRF" -#: ipam/forms/filtersets.py:304 +#: ipam/forms/filtersets.py:311 msgid "Device/VM" msgstr "Appareil/VM" -#: ipam/forms/filtersets.py:314 +#: ipam/forms/filtersets.py:321 msgid "Parent Prefix" msgstr "Préfixe parent" -#: ipam/forms/filtersets.py:340 +#: ipam/forms/filtersets.py:347 msgid "Assigned Device" msgstr "Appareil attribué" -#: ipam/forms/filtersets.py:345 +#: ipam/forms/filtersets.py:352 msgid "Assigned VM" msgstr "Machine virtuelle attribuée" -#: ipam/forms/filtersets.py:359 +#: ipam/forms/filtersets.py:366 msgid "Assigned to an interface" msgstr "Affecté à une interface" -#: ipam/forms/filtersets.py:366 templates/ipam/ipaddress.html:51 +#: ipam/forms/filtersets.py:373 templates/ipam/ipaddress.html:51 msgid "DNS Name" msgstr "Nom DNS" -#: ipam/forms/filtersets.py:409 ipam/forms/filtersets.py:513 +#: ipam/forms/filtersets.py:416 ipam/forms/filtersets.py:520 #: ipam/models/vlans.py:156 templates/ipam/vlan.html:31 msgid "VLAN ID" msgstr "IDENTIFIANT DE VLAN" -#: ipam/forms/filtersets.py:441 +#: ipam/forms/filtersets.py:448 msgid "Minimum VID" msgstr "VID minimum" -#: ipam/forms/filtersets.py:447 +#: ipam/forms/filtersets.py:454 msgid "Maximum VID" msgstr "VID maximum" -#: ipam/forms/filtersets.py:556 ipam/forms/model_forms.py:318 -#: ipam/forms/model_forms.py:750 ipam/forms/model_forms.py:776 +#: ipam/forms/filtersets.py:563 ipam/forms/model_forms.py:318 +#: ipam/forms/model_forms.py:759 ipam/forms/model_forms.py:785 #: ipam/tables/vlans.py:191 templates/virtualization/virtualdisk.html:21 #: templates/virtualization/virtualmachine.html:12 #: templates/virtualization/vminterface.html:21 @@ -8748,7 +8793,7 @@ msgid "IP Range" msgstr "Plage IP" #: ipam/forms/model_forms.py:293 ipam/forms/model_forms.py:319 -#: ipam/forms/model_forms.py:462 templates/ipam/fhrpgroup.html:19 +#: ipam/forms/model_forms.py:471 templates/ipam/fhrpgroup.html:19 msgid "FHRP Group" msgstr "Groupe FHRP" @@ -8761,11 +8806,11 @@ msgstr "" msgid "NAT IP (Inside)" msgstr "IP NAT (interne)" -#: ipam/forms/model_forms.py:373 +#: ipam/forms/model_forms.py:382 msgid "An IP address can only be assigned to a single object." msgstr "Une adresse IP ne peut être attribuée qu'à un seul objet." -#: ipam/forms/model_forms.py:379 ipam/models/ip.py:896 +#: ipam/forms/model_forms.py:388 ipam/models/ip.py:897 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" @@ -8773,32 +8818,32 @@ msgstr "" "Impossible de réattribuer l'adresse IP lorsqu'elle est désignée comme " "adresse IP principale pour l'objet parent" -#: ipam/forms/model_forms.py:389 +#: ipam/forms/model_forms.py:398 msgid "" "Only IP addresses assigned to an interface can be designated as primary IPs." msgstr "" "Seules les adresses IP attribuées à une interface peuvent être désignées " "comme adresses IP principales." -#: ipam/forms/model_forms.py:464 +#: ipam/forms/model_forms.py:473 msgid "Virtual IP Address" msgstr "Adresse IP virtuelle" -#: ipam/forms/model_forms.py:549 +#: ipam/forms/model_forms.py:558 msgid "Assignment already exists" msgstr "L'affectation existe déjà" -#: ipam/forms/model_forms.py:628 ipam/forms/model_forms.py:670 +#: ipam/forms/model_forms.py:637 ipam/forms/model_forms.py:679 #: ipam/tables/ip.py:250 templates/ipam/vlan_edit.html:37 #: templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "Groupe VLAN" -#: ipam/forms/model_forms.py:629 +#: ipam/forms/model_forms.py:638 msgid "Child VLANs" msgstr "VLAN pour enfants" -#: ipam/forms/model_forms.py:701 ipam/forms/model_forms.py:733 +#: ipam/forms/model_forms.py:710 ipam/forms/model_forms.py:742 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." @@ -8806,32 +8851,32 @@ 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." -#: ipam/forms/model_forms.py:706 templates/ipam/servicetemplate.html:12 +#: ipam/forms/model_forms.py:715 templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "Modèle de service" -#: ipam/forms/model_forms.py:753 +#: ipam/forms/model_forms.py:762 msgid "Port(s)" msgstr "Port (x)" -#: ipam/forms/model_forms.py:754 ipam/forms/model_forms.py:782 +#: ipam/forms/model_forms.py:763 ipam/forms/model_forms.py:791 #: templates/ipam/service.html:21 msgid "Service" msgstr "Service" -#: ipam/forms/model_forms.py:767 +#: ipam/forms/model_forms.py:776 msgid "Service template" msgstr "Modèle de service" -#: ipam/forms/model_forms.py:779 +#: ipam/forms/model_forms.py:788 msgid "From Template" msgstr "À partir du modèle" -#: ipam/forms/model_forms.py:780 +#: ipam/forms/model_forms.py:789 msgid "Custom" msgstr "Personnalisé" -#: ipam/forms/model_forms.py:810 +#: ipam/forms/model_forms.py:819 msgid "" "Must specify name, protocol, and port(s) if not using a service template." msgstr "" @@ -8900,43 +8945,43 @@ msgstr "Affectation au groupe FHRP" msgid "FHRP group assignments" msgstr "Missions du groupe FHRP" -#: ipam/models/ip.py:64 +#: ipam/models/ip.py:65 msgid "private" msgstr "privé" -#: ipam/models/ip.py:65 +#: ipam/models/ip.py:66 msgid "IP space managed by this RIR is considered private" msgstr "L'espace IP géré par ce RIR est considéré comme privé" -#: ipam/models/ip.py:71 netbox/navigation/menu.py:169 +#: ipam/models/ip.py:72 netbox/navigation/menu.py:169 msgid "RIRs" msgstr "IR" -#: ipam/models/ip.py:83 +#: ipam/models/ip.py:84 msgid "IPv4 or IPv6 network" msgstr "Réseau IPv4 ou IPv6" -#: ipam/models/ip.py:90 +#: ipam/models/ip.py:91 msgid "Regional Internet Registry responsible for this IP space" msgstr "Registre Internet régional responsable de cet espace IP" -#: ipam/models/ip.py:100 +#: ipam/models/ip.py:101 msgid "date added" msgstr "date d'ajout" -#: ipam/models/ip.py:114 +#: ipam/models/ip.py:115 msgid "aggregate" msgstr "global" -#: ipam/models/ip.py:115 +#: ipam/models/ip.py:116 msgid "aggregates" msgstr "agrégats" -#: ipam/models/ip.py:131 +#: ipam/models/ip.py:132 msgid "Cannot create aggregate with /0 mask." msgstr "Impossible de créer un agrégat avec le masque /0." -#: ipam/models/ip.py:143 +#: ipam/models/ip.py:144 #, python-brace-format msgid "" "Aggregates cannot overlap. {prefix} is already covered by an existing " @@ -8945,7 +8990,7 @@ msgstr "" "Les agrégats ne peuvent pas se chevaucher. {prefix} est déjà couvert par un " "agrégat existant ({aggregate})." -#: ipam/models/ip.py:157 +#: ipam/models/ip.py:158 #, python-brace-format msgid "" "Prefixes cannot overlap aggregates. {prefix} covers an existing aggregate " @@ -8954,163 +8999,163 @@ msgstr "" "Les préfixes ne peuvent pas chevaucher des agrégats. {prefix} couvre un " "agrégat existant ({aggregate})." -#: ipam/models/ip.py:199 ipam/models/ip.py:736 vpn/models/tunnels.py:114 +#: ipam/models/ip.py:200 ipam/models/ip.py:737 vpn/models/tunnels.py:114 msgid "role" msgstr "rôle" -#: ipam/models/ip.py:200 +#: ipam/models/ip.py:201 msgid "roles" msgstr "rôles" -#: ipam/models/ip.py:216 ipam/models/ip.py:292 +#: ipam/models/ip.py:217 ipam/models/ip.py:293 msgid "prefix" msgstr "préfixe" -#: ipam/models/ip.py:217 +#: ipam/models/ip.py:218 msgid "IPv4 or IPv6 network with mask" msgstr "Réseau IPv4 ou IPv6 avec masque" -#: ipam/models/ip.py:253 +#: ipam/models/ip.py:254 msgid "Operational status of this prefix" msgstr "État opérationnel de ce préfixe" -#: ipam/models/ip.py:261 +#: ipam/models/ip.py:262 msgid "The primary function of this prefix" msgstr "La fonction principale de ce préfixe" -#: ipam/models/ip.py:264 +#: ipam/models/ip.py:265 msgid "is a pool" msgstr "est une piscine" -#: ipam/models/ip.py:266 +#: ipam/models/ip.py:267 msgid "All IP addresses within this prefix are considered usable" msgstr "" "Toutes les adresses IP comprises dans ce préfixe sont considérées comme " "utilisables" -#: ipam/models/ip.py:269 ipam/models/ip.py:536 +#: ipam/models/ip.py:270 ipam/models/ip.py:537 msgid "mark utilized" msgstr "marque utilisée" -#: ipam/models/ip.py:293 +#: ipam/models/ip.py:294 msgid "prefixes" msgstr "préfixes" -#: ipam/models/ip.py:316 +#: ipam/models/ip.py:317 msgid "Cannot create prefix with /0 mask." msgstr "Impossible de créer un préfixe avec le masque /0." -#: ipam/models/ip.py:323 ipam/models/ip.py:873 +#: ipam/models/ip.py:324 ipam/models/ip.py:874 #, python-brace-format msgid "VRF {vrf}" msgstr "VRF {vrf}" -#: ipam/models/ip.py:323 ipam/models/ip.py:873 +#: ipam/models/ip.py:324 ipam/models/ip.py:874 msgid "global table" msgstr "tableau global" -#: ipam/models/ip.py:325 +#: ipam/models/ip.py:326 #, python-brace-format msgid "Duplicate prefix found in {table}: {prefix}" msgstr "Préfixe dupliqué trouvé dans {table}: {prefix}" -#: ipam/models/ip.py:494 +#: ipam/models/ip.py:495 msgid "start address" msgstr "adresse de départ" -#: ipam/models/ip.py:495 ipam/models/ip.py:499 ipam/models/ip.py:711 +#: ipam/models/ip.py:496 ipam/models/ip.py:500 ipam/models/ip.py:712 msgid "IPv4 or IPv6 address (with mask)" msgstr "Adresse IPv4 ou IPv6 (avec masque)" -#: ipam/models/ip.py:498 +#: ipam/models/ip.py:499 msgid "end address" msgstr "adresse finale" -#: ipam/models/ip.py:525 +#: ipam/models/ip.py:526 msgid "Operational status of this range" msgstr "État opérationnel de cette gamme" -#: ipam/models/ip.py:533 +#: ipam/models/ip.py:534 msgid "The primary function of this range" msgstr "La principale fonction de cette gamme" -#: ipam/models/ip.py:547 +#: ipam/models/ip.py:548 msgid "IP range" msgstr "plage IP" -#: ipam/models/ip.py:548 +#: ipam/models/ip.py:549 msgid "IP ranges" msgstr "Plages IP" -#: ipam/models/ip.py:564 +#: ipam/models/ip.py:565 msgid "Starting and ending IP address versions must match" msgstr "Les versions des adresses IP de début et de fin doivent correspondre" -#: ipam/models/ip.py:570 +#: ipam/models/ip.py:571 msgid "Starting and ending IP address masks must match" msgstr "Les masques d'adresse IP de début et de fin doivent correspondre" -#: ipam/models/ip.py:577 +#: ipam/models/ip.py:578 #, python-brace-format msgid "" "Ending address must be greater than the starting address ({start_address})" msgstr "" "L'adresse de fin doit être supérieure à l'adresse de début ({start_address})" -#: ipam/models/ip.py:589 +#: ipam/models/ip.py:590 #, python-brace-format msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}" msgstr "" "Les adresses définies se chevauchent avec la plage {overlapping_range} en " "VRF {vrf}" -#: ipam/models/ip.py:598 +#: ipam/models/ip.py:599 #, python-brace-format msgid "Defined range exceeds maximum supported size ({max_size})" msgstr "" "La plage définie dépasse la taille maximale prise en charge ({max_size})" -#: ipam/models/ip.py:710 tenancy/models/contacts.py:82 +#: ipam/models/ip.py:711 tenancy/models/contacts.py:82 msgid "address" msgstr "adresse" -#: ipam/models/ip.py:733 +#: ipam/models/ip.py:734 msgid "The operational status of this IP" msgstr "L'état opérationnel de cette adresse IP" -#: ipam/models/ip.py:740 +#: ipam/models/ip.py:741 msgid "The functional role of this IP" msgstr "Le rôle fonctionnel de cette propriété intellectuelle" -#: ipam/models/ip.py:764 templates/ipam/ipaddress.html:72 +#: ipam/models/ip.py:765 templates/ipam/ipaddress.html:72 msgid "NAT (inside)" msgstr "NAT (intérieur)" -#: ipam/models/ip.py:765 +#: ipam/models/ip.py:766 msgid "The IP for which this address is the \"outside\" IP" msgstr "" "L'adresse IP pour laquelle cette adresse est l'adresse IP « extérieure »" -#: ipam/models/ip.py:772 +#: ipam/models/ip.py:773 msgid "Hostname or FQDN (not case-sensitive)" msgstr "Nom d'hôte ou FQDN (pas de distinction majuscules/minuscules)" -#: ipam/models/ip.py:788 ipam/models/services.py:93 +#: ipam/models/ip.py:789 ipam/models/services.py:93 msgid "IP addresses" msgstr "Adresses IP" -#: ipam/models/ip.py:844 +#: ipam/models/ip.py:845 msgid "Cannot create IP address with /0 mask." msgstr "Impossible de créer une adresse IP avec le masque /0." -#: ipam/models/ip.py:850 +#: ipam/models/ip.py:851 #, python-brace-format msgid "{ip} is a network ID, which may not be assigned to an interface." msgstr "" "{ip} est un identifiant réseau, qui ne peut pas être attribué à une " "interface." -#: ipam/models/ip.py:861 +#: ipam/models/ip.py:862 #, python-brace-format msgid "" "{ip} is a broadcast address, which may not be assigned to an interface." @@ -9118,12 +9163,12 @@ msgstr "" "{ip} est une adresse de diffusion, qui ne peut pas être attribuée à une " "interface." -#: ipam/models/ip.py:875 +#: ipam/models/ip.py:876 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "Adresse IP dupliquée trouvée dans {table}: {ipaddress}" -#: ipam/models/ip.py:902 +#: ipam/models/ip.py:903 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "Seules les adresses IPv6 peuvent se voir attribuer le statut SLAAC" @@ -9220,7 +9265,7 @@ msgid "The primary function of this VLAN" msgstr "La principale fonction de ce VLAN" #: ipam/models/vlans.py:215 ipam/tables/ip.py:175 ipam/tables/vlans.py:78 -#: ipam/views.py:957 netbox/navigation/menu.py:180 +#: ipam/views.py:978 netbox/navigation/menu.py:180 #: netbox/navigation/menu.py:182 msgid "VLANs" msgstr "VLAN" @@ -9296,7 +9341,7 @@ msgid "Added" msgstr "Ajouté" #: ipam/tables/ip.py:127 ipam/tables/ip.py:165 ipam/tables/vlans.py:138 -#: ipam/views.py:348 netbox/navigation/menu.py:152 +#: ipam/views.py:349 netbox/navigation/menu.py:152 #: netbox/navigation/menu.py:154 templates/ipam/vlan.html:84 msgid "Prefixes" msgstr "Préfixes" @@ -9399,23 +9444,23 @@ msgstr "" "Seuls les caractères alphanumériques, les astérisques, les tirets, les " "points et les traits de soulignement sont autorisés dans les noms DNS" -#: ipam/views.py:535 +#: ipam/views.py:541 msgid "Child Prefixes" msgstr "Préfixes pour enfants" -#: ipam/views.py:570 +#: ipam/views.py:576 msgid "Child Ranges" msgstr "Plages pour enfants" -#: ipam/views.py:886 +#: ipam/views.py:902 msgid "Related IPs" msgstr "IP associées" -#: ipam/views.py:1112 +#: ipam/views.py:1133 msgid "Device Interfaces" msgstr "Interfaces des appareils" -#: ipam/views.py:1129 +#: ipam/views.py:1150 msgid "VM Interfaces" msgstr "Interfaces de machines virtuelles" @@ -9986,39 +10031,43 @@ msgstr "Groupes de clusters" msgid "Circuit Types" msgstr "Types de circuits" -#: netbox/navigation/menu.py:264 netbox/navigation/menu.py:266 +#: netbox/navigation/menu.py:261 +msgid "Circuit Terminations" +msgstr "Terminaisons de circuits" + +#: netbox/navigation/menu.py:265 netbox/navigation/menu.py:267 msgid "Providers" msgstr "Prestataires" -#: netbox/navigation/menu.py:267 templates/circuits/provider.html:51 +#: netbox/navigation/menu.py:268 templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "Comptes des fournisseurs" -#: netbox/navigation/menu.py:268 +#: netbox/navigation/menu.py:269 msgid "Provider Networks" msgstr "Réseaux de fournisseurs" -#: netbox/navigation/menu.py:282 +#: netbox/navigation/menu.py:283 msgid "Power Panels" msgstr "Panneaux d'alimentation" -#: netbox/navigation/menu.py:293 +#: netbox/navigation/menu.py:294 msgid "Configurations" msgstr "Configurations" -#: netbox/navigation/menu.py:295 +#: netbox/navigation/menu.py:296 msgid "Config Contexts" msgstr "Contextes de configuration" -#: netbox/navigation/menu.py:296 +#: netbox/navigation/menu.py:297 msgid "Config Templates" msgstr "Modèles de configuration" -#: netbox/navigation/menu.py:303 netbox/navigation/menu.py:307 +#: netbox/navigation/menu.py:304 netbox/navigation/menu.py:308 msgid "Customization" msgstr "Personnalisation" -#: netbox/navigation/menu.py:309 templates/dcim/device_edit.html:103 +#: netbox/navigation/menu.py:310 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 @@ -10028,107 +10077,107 @@ msgstr "Personnalisation" msgid "Custom Fields" msgstr "Champs personnalisés" -#: netbox/navigation/menu.py:310 +#: netbox/navigation/menu.py:311 msgid "Custom Field Choices" msgstr "Choix de champs personnalisés" -#: netbox/navigation/menu.py:311 +#: netbox/navigation/menu.py:312 msgid "Custom Links" msgstr "Liens personnalisés" -#: netbox/navigation/menu.py:312 +#: netbox/navigation/menu.py:313 msgid "Export Templates" msgstr "Modèles d'exportation" -#: netbox/navigation/menu.py:313 +#: netbox/navigation/menu.py:314 msgid "Saved Filters" msgstr "Filtres enregistrés" -#: netbox/navigation/menu.py:315 +#: netbox/navigation/menu.py:316 msgid "Image Attachments" msgstr "Pièces jointes à des images" -#: netbox/navigation/menu.py:333 +#: netbox/navigation/menu.py:334 msgid "Operations" msgstr "Opérations" -#: netbox/navigation/menu.py:337 +#: netbox/navigation/menu.py:338 msgid "Integrations" msgstr "Intégrations" -#: netbox/navigation/menu.py:339 +#: netbox/navigation/menu.py:340 msgid "Data Sources" msgstr "Sources de données" -#: netbox/navigation/menu.py:340 +#: netbox/navigation/menu.py:341 msgid "Event Rules" msgstr "Règles de l'événement" -#: netbox/navigation/menu.py:341 +#: netbox/navigation/menu.py:342 msgid "Webhooks" msgstr "Webhooks" -#: netbox/navigation/menu.py:345 netbox/navigation/menu.py:349 +#: netbox/navigation/menu.py:346 netbox/navigation/menu.py:350 #: netbox/views/generic/feature_views.py:151 #: templates/extras/report/base.html:37 templates/extras/script/base.html:36 msgid "Jobs" msgstr "Emplois" -#: netbox/navigation/menu.py:355 +#: netbox/navigation/menu.py:356 msgid "Logging" msgstr "Journalisation" -#: netbox/navigation/menu.py:357 +#: netbox/navigation/menu.py:358 msgid "Journal Entries" msgstr "Entrées de journal" -#: netbox/navigation/menu.py:358 templates/extras/objectchange.html:8 +#: netbox/navigation/menu.py:359 templates/extras/objectchange.html:8 #: templates/extras/objectchange_list.html:4 msgid "Change Log" msgstr "Journal des modifications" -#: netbox/navigation/menu.py:365 templates/inc/user_menu.html:11 +#: netbox/navigation/menu.py:366 templates/inc/user_menu.html:11 msgid "Admin" msgstr "Administrateur" -#: netbox/navigation/menu.py:373 templates/users/group.html:29 +#: netbox/navigation/menu.py:374 templates/users/group.html:29 #: users/forms/model_forms.py:233 users/forms/model_forms.py:245 #: users/forms/model_forms.py:297 users/tables.py:102 msgid "Users" msgstr "Utilisateurs" -#: netbox/navigation/menu.py:393 users/forms/model_forms.py:182 +#: netbox/navigation/menu.py:394 users/forms/model_forms.py:182 #: users/forms/model_forms.py:194 users/forms/model_forms.py:302 #: users/tables.py:35 users/tables.py:106 msgid "Groups" msgstr "Groupes" -#: netbox/navigation/menu.py:413 templates/account/base.html:21 +#: netbox/navigation/menu.py:414 templates/account/base.html:21 #: templates/inc/user_menu.html:36 msgid "API Tokens" msgstr "Jetons d'API" -#: netbox/navigation/menu.py:420 users/forms/model_forms.py:188 +#: netbox/navigation/menu.py:421 users/forms/model_forms.py:188 #: users/forms/model_forms.py:196 users/forms/model_forms.py:239 #: users/forms/model_forms.py:246 msgid "Permissions" msgstr "Autorisations" -#: netbox/navigation/menu.py:428 netbox/navigation/menu.py:432 +#: netbox/navigation/menu.py:429 netbox/navigation/menu.py:433 #: templates/core/system.html:7 msgid "System" msgstr "Système" -#: netbox/navigation/menu.py:437 +#: netbox/navigation/menu.py:438 msgid "Configuration History" msgstr "Historique de configuration" -#: netbox/navigation/menu.py:443 templates/core/rq_task.html:8 +#: netbox/navigation/menu.py:444 templates/core/rq_task.html:8 #: templates/core/rq_task_list.html:22 msgid "Background Tasks" msgstr "Tâches d'arrière-plan" -#: netbox/navigation/menu.py:482 templates/500.html:35 +#: netbox/navigation/menu.py:483 templates/500.html:35 #: templates/account/preferences.html:22 templates/core/system.html:80 msgid "Plugins" msgstr "Plug-ins" @@ -10269,34 +10318,46 @@ 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/settings.py:715 +#: netbox/settings.py:722 +msgid "German" +msgstr "allemand" + +#: netbox/settings.py:723 msgid "English" msgstr "Anglais" -#: netbox/settings.py:716 +#: netbox/settings.py:724 msgid "Spanish" msgstr "espagnol" -#: netbox/settings.py:717 +#: netbox/settings.py:725 msgid "French" msgstr "français" -#: netbox/settings.py:718 +#: netbox/settings.py:726 msgid "Japanese" msgstr "japonais" -#: netbox/settings.py:719 +#: netbox/settings.py:727 msgid "Portuguese" msgstr "portugais" -#: netbox/settings.py:720 +#: netbox/settings.py:728 msgid "Russian" msgstr "russe" -#: netbox/settings.py:721 +#: netbox/settings.py:729 msgid "Turkish" msgstr "Turc" +#: netbox/settings.py:730 +msgid "Ukrainian" +msgstr "Ukrainien" + +#: netbox/settings.py:731 +msgid "Chinese" +msgstr "chinois" + #: netbox/tables/columns.py:185 msgid "Toggle all" msgstr "Tout afficher" @@ -10309,16 +10370,16 @@ msgstr "Basculer vers le menu déroulant" msgid "Error" msgstr "Erreur" -#: netbox/tables/tables.py:56 +#: netbox/tables/tables.py:57 #, python-brace-format msgid "No {model_name} found" msgstr "Non {model_name} trouvé" -#: netbox/tables/tables.py:246 templates/generic/bulk_import.html:117 +#: netbox/tables/tables.py:248 templates/generic/bulk_import.html:117 msgid "Field" msgstr "Champ" -#: netbox/tables/tables.py:249 +#: netbox/tables/tables.py:251 msgid "Value" msgstr "Valeur" @@ -10430,7 +10491,7 @@ msgstr "Modifier le mot de passe" #: 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:37 +#: 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 @@ -10523,7 +10584,8 @@ msgstr "Groupes assignés" #: templates/account/profile.html:58 #: templates/circuits/circuit_terminations_swap.html:18 #: templates/circuits/circuit_terminations_swap.html:26 -#: templates/circuits/inc/circuit_termination.html:154 +#: templates/circuits/circuittermination.html:34 +#: templates/circuits/inc/circuit_termination.html:68 #: templates/dcim/devicebay.html:59 #: templates/dcim/inc/panels/inventory_items.html:45 #: templates/dcim/interface.html:296 templates/dcim/modulebay.html:76 @@ -10640,13 +10702,6 @@ msgstr "Ajouter un circuit" msgid "Circuit Type" msgstr "Type de circuit" -#: templates/circuits/inc/circuit_termination.html:6 -#: templates/circuits/inc/circuit_termination.html:41 -#: templates/dcim/cable.html:68 templates/dcim/cable.html:72 -#: vpn/forms/bulk_import.py:100 vpn/forms/filtersets.py:77 -msgid "Termination" -msgstr "Résiliation" - #: templates/circuits/inc/circuit_termination.html:10 #: templates/dcim/devicetype/component_templates.html:33 #: templates/dcim/manufacturer.html:11 @@ -10659,7 +10714,7 @@ msgid "Add" msgstr "Ajouter" #: templates/circuits/inc/circuit_termination.html:15 -#: templates/circuits/inc/circuit_termination.html:62 +#: 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:32 @@ -10674,33 +10729,33 @@ msgstr "Modifier" msgid "Swap" msgstr "Échange" -#: templates/circuits/inc/circuit_termination.html:45 +#: templates/circuits/inc/circuit_termination_fields.html:19 #: templates/dcim/consoleport.html:59 templates/dcim/consoleserverport.html:60 #: templates/dcim/powerfeed.html:114 msgid "Marked as connected" msgstr "Marqué comme connecté" -#: templates/circuits/inc/circuit_termination.html:47 +#: templates/circuits/inc/circuit_termination_fields.html:21 msgid "to" msgstr "pour" -#: templates/circuits/inc/circuit_termination.html:57 -#: templates/circuits/inc/circuit_termination.html:58 +#: 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 msgid "Trace" msgstr "Trace" -#: templates/circuits/inc/circuit_termination.html:61 +#: templates/circuits/inc/circuit_termination_fields.html:35 msgid "Edit cable" msgstr "Modifier le câble" -#: templates/circuits/inc/circuit_termination.html:66 +#: templates/circuits/inc/circuit_termination_fields.html:40 msgid "Remove cable" msgstr "Retirez le câble" -#: templates/circuits/inc/circuit_termination.html:67 +#: 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 @@ -10712,7 +10767,7 @@ msgstr "Retirez le câble" msgid "Disconnect" msgstr "Déconnectez" -#: templates/circuits/inc/circuit_termination.html:74 +#: 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 @@ -10721,19 +10776,19 @@ msgstr "Déconnectez" msgid "Connect" msgstr "Connecter" -#: templates/circuits/inc/circuit_termination.html:96 +#: templates/circuits/inc/circuit_termination_fields.html:70 msgid "Downstream" msgstr "En aval" -#: templates/circuits/inc/circuit_termination.html:97 +#: templates/circuits/inc/circuit_termination_fields.html:71 msgid "Upstream" msgstr "En amont" -#: templates/circuits/inc/circuit_termination.html:106 +#: templates/circuits/inc/circuit_termination_fields.html:80 msgid "Cross-Connect" msgstr "Connexion croisée" -#: templates/circuits/inc/circuit_termination.html:110 +#: templates/circuits/inc/circuit_termination_fields.html:84 msgid "Patch Panel/Port" msgstr "Panneau de raccordement et port" @@ -12153,11 +12208,15 @@ msgstr "Rapport" msgid "You do not have permission to run scripts" msgstr "Vous n'êtes pas autorisé à exécuter des scripts" -#: templates/extras/script.html:40 templates/extras/script.html:44 +#: templates/extras/script.html:41 templates/extras/script.html:45 #: templates/extras/script_list.html:88 msgid "Run Script" msgstr "Exécuter le script" +#: templates/extras/script.html:51 templates/extras/script/source.html:10 +msgid "Error loading script" +msgstr "Erreur lors du chargement du script" + #: templates/extras/script/jobs.html:16 msgid "Script no longer exists in the source file." msgstr "Le script n'existe plus dans le fichier source." diff --git a/netbox/translations/ja/LC_MESSAGES/django.po b/netbox/translations/ja/LC_MESSAGES/django.po index d64b88911..f75189073 100644 --- a/netbox/translations/ja/LC_MESSAGES/django.po +++ b/netbox/translations/ja/LC_MESSAGES/django.po @@ -5,17 +5,17 @@ # # Translators: # Tatsuya Ueda , 2024 -# Jeremy Stretch, 2024 # teapot, 2024 +# Jeremy Stretch, 2024 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-05-14 13:22+0000\n" +"POT-Creation-Date: 2024-05-22 17:41+0000\n" "PO-Revision-Date: 2023-10-30 17:48+0000\n" -"Last-Translator: teapot, 2024\n" +"Last-Translator: Jeremy Stretch, 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" @@ -66,19 +66,19 @@ msgid "Your preferences have been updated." msgstr "設定が更新されました。" #: circuits/choices.py:21 dcim/choices.py:20 dcim/choices.py:102 -#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1429 -#: dcim/choices.py:1505 dcim/choices.py:1555 virtualization/choices.py:20 +#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1457 +#: dcim/choices.py:1533 dcim/choices.py:1583 virtualization/choices.py:20 #: virtualization/choices.py:45 vpn/choices.py:18 msgid "Planned" msgstr "計画中" -#: circuits/choices.py:22 netbox/navigation/menu.py:289 +#: circuits/choices.py:22 netbox/navigation/menu.py:290 msgid "Provisioning" msgstr "プロビジョニング" #: circuits/choices.py:23 core/tables/tasks.py:22 dcim/choices.py:22 #: dcim/choices.py:103 dcim/choices.py:173 dcim/choices.py:219 -#: dcim/choices.py:1504 dcim/choices.py:1554 extras/tables/tables.py:385 +#: dcim/choices.py:1532 dcim/choices.py:1582 extras/tables/tables.py:385 #: 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 @@ -88,7 +88,7 @@ msgid "Active" msgstr "アクティブ" #: circuits/choices.py:24 dcim/choices.py:172 dcim/choices.py:218 -#: dcim/choices.py:1503 dcim/choices.py:1556 virtualization/choices.py:24 +#: dcim/choices.py:1531 dcim/choices.py:1584 virtualization/choices.py:24 #: virtualization/choices.py:43 msgid "Offline" msgstr "オフライン" @@ -103,8 +103,8 @@ msgstr "廃止" #: circuits/filtersets.py:29 circuits/filtersets.py:196 dcim/filtersets.py:97 #: dcim/filtersets.py:151 dcim/filtersets.py:211 dcim/filtersets.py:297 -#: dcim/filtersets.py:406 dcim/filtersets.py:969 dcim/filtersets.py:1295 -#: dcim/filtersets.py:1822 dcim/filtersets.py:2065 dcim/filtersets.py:2123 +#: dcim/filtersets.py:406 dcim/filtersets.py:969 dcim/filtersets.py:1305 +#: dcim/filtersets.py:1832 dcim/filtersets.py:2075 dcim/filtersets.py:2133 #: ipam/filtersets.py:339 ipam/filtersets.py:945 #: virtualization/filtersets.py:45 virtualization/filtersets.py:173 #: vpn/filtersets.py:377 @@ -113,8 +113,8 @@ msgstr "リージョン (ID)" #: circuits/filtersets.py:36 circuits/filtersets.py:203 dcim/filtersets.py:104 #: dcim/filtersets.py:157 dcim/filtersets.py:218 dcim/filtersets.py:304 -#: dcim/filtersets.py:413 dcim/filtersets.py:976 dcim/filtersets.py:1302 -#: dcim/filtersets.py:1829 dcim/filtersets.py:2072 dcim/filtersets.py:2130 +#: dcim/filtersets.py:413 dcim/filtersets.py:976 dcim/filtersets.py:1312 +#: dcim/filtersets.py:1839 dcim/filtersets.py:2082 dcim/filtersets.py:2140 #: extras/filtersets.py:461 ipam/filtersets.py:346 ipam/filtersets.py:952 #: virtualization/filtersets.py:52 virtualization/filtersets.py:180 #: vpn/filtersets.py:372 @@ -123,8 +123,8 @@ msgstr "リージョン (slug)" #: circuits/filtersets.py:42 circuits/filtersets.py:209 dcim/filtersets.py:127 #: dcim/filtersets.py:224 dcim/filtersets.py:310 dcim/filtersets.py:419 -#: dcim/filtersets.py:982 dcim/filtersets.py:1308 dcim/filtersets.py:1835 -#: dcim/filtersets.py:2078 dcim/filtersets.py:2136 ipam/filtersets.py:352 +#: dcim/filtersets.py:982 dcim/filtersets.py:1318 dcim/filtersets.py:1845 +#: dcim/filtersets.py:2088 dcim/filtersets.py:2146 ipam/filtersets.py:352 #: ipam/filtersets.py:958 virtualization/filtersets.py:58 #: virtualization/filtersets.py:186 msgid "Site group (ID)" @@ -132,16 +132,18 @@ msgstr "サイトグループ (ID)" #: circuits/filtersets.py:49 circuits/filtersets.py:216 dcim/filtersets.py:134 #: dcim/filtersets.py:231 dcim/filtersets.py:317 dcim/filtersets.py:426 -#: dcim/filtersets.py:989 dcim/filtersets.py:1315 dcim/filtersets.py:1842 -#: dcim/filtersets.py:2085 dcim/filtersets.py:2143 extras/filtersets.py:467 +#: dcim/filtersets.py:989 dcim/filtersets.py:1325 dcim/filtersets.py:1852 +#: dcim/filtersets.py:2095 dcim/filtersets.py:2153 extras/filtersets.py:467 #: ipam/filtersets.py:359 ipam/filtersets.py:965 #: virtualization/filtersets.py:65 virtualization/filtersets.py:193 msgid "Site group (slug)" msgstr "サイトグループ (slug)" -#: circuits/filtersets.py:54 circuits/forms/bulk_import.py:116 -#: circuits/forms/filtersets.py:48 circuits/forms/filtersets.py:168 -#: circuits/forms/model_forms.py:136 circuits/forms/model_forms.py:152 +#: circuits/filtersets.py:54 circuits/forms/bulk_edit.py:186 +#: circuits/forms/bulk_edit.py:214 circuits/forms/bulk_import.py:126 +#: circuits/forms/filtersets.py:49 circuits/forms/filtersets.py:169 +#: circuits/forms/filtersets.py:207 circuits/forms/model_forms.py:136 +#: circuits/forms/model_forms.py:152 circuits/tables/circuits.py:105 #: dcim/forms/bulk_edit.py:167 dcim/forms/bulk_edit.py:239 #: dcim/forms/bulk_edit.py:575 dcim/forms/bulk_edit.py:771 #: dcim/forms/bulk_import.py:130 dcim/forms/bulk_import.py:184 @@ -149,10 +151,10 @@ msgstr "サイトグループ (slug)" #: dcim/forms/bulk_import.py:1262 dcim/forms/bulk_import.py:1290 #: dcim/forms/filtersets.py:85 dcim/forms/filtersets.py:218 #: dcim/forms/filtersets.py:265 dcim/forms/filtersets.py:374 -#: dcim/forms/filtersets.py:681 dcim/forms/filtersets.py:908 -#: dcim/forms/filtersets.py:932 dcim/forms/filtersets.py:1022 -#: dcim/forms/filtersets.py:1060 dcim/forms/filtersets.py:1468 -#: dcim/forms/filtersets.py:1492 dcim/forms/filtersets.py:1516 +#: dcim/forms/filtersets.py:682 dcim/forms/filtersets.py:916 +#: dcim/forms/filtersets.py:940 dcim/forms/filtersets.py:1030 +#: dcim/forms/filtersets.py:1068 dcim/forms/filtersets.py:1476 +#: dcim/forms/filtersets.py:1500 dcim/forms/filtersets.py:1524 #: dcim/forms/model_forms.py:136 dcim/forms/model_forms.py:164 #: dcim/forms/model_forms.py:206 dcim/forms/model_forms.py:406 #: dcim/forms/model_forms.py:668 dcim/forms/object_create.py:391 @@ -162,11 +164,11 @@ msgstr "サイトグループ (slug)" #: ipam/forms/bulk_edit.py:270 ipam/forms/bulk_edit.py:448 #: ipam/forms/bulk_edit.py:522 ipam/forms/bulk_import.py:170 #: ipam/forms/bulk_import.py:437 ipam/forms/filtersets.py:153 -#: ipam/forms/filtersets.py:230 ipam/forms/filtersets.py:425 -#: ipam/forms/filtersets.py:489 ipam/forms/model_forms.py:203 -#: ipam/forms/model_forms.py:578 ipam/forms/model_forms.py:673 +#: ipam/forms/filtersets.py:231 ipam/forms/filtersets.py:432 +#: ipam/forms/filtersets.py:496 ipam/forms/model_forms.py:203 +#: ipam/forms/model_forms.py:587 ipam/forms/model_forms.py:682 #: ipam/tables/ip.py:244 ipam/tables/vlans.py:114 ipam/tables/vlans.py:216 -#: templates/circuits/inc/circuit_termination.html:32 +#: templates/circuits/inc/circuit_termination_fields.html:6 #: templates/dcim/device.html:21 templates/dcim/inc/cable_termination.html:8 #: templates/dcim/inc/cable_termination.html:33 #: templates/dcim/location.html:37 templates/dcim/powerpanel.html:22 @@ -203,19 +205,21 @@ msgstr "サイト (slug)" msgid "ASN (ID)" msgstr "ASN (ID)" -#: circuits/filtersets.py:71 circuits/forms/filtersets.py:28 +#: circuits/filtersets.py:71 circuits/forms/filtersets.py:29 #: ipam/forms/model_forms.py:157 ipam/models/asns.py:108 #: ipam/models/asns.py:125 ipam/tables/asn.py:41 templates/ipam/asn.html:20 msgid "ASN" msgstr "ASN" #: circuits/filtersets.py:93 circuits/filtersets.py:120 -#: circuits/filtersets.py:154 ipam/filtersets.py:243 +#: circuits/filtersets.py:154 circuits/filtersets.py:281 +#: ipam/filtersets.py:243 msgid "Provider (ID)" msgstr "プロバイダ (ID)" #: circuits/filtersets.py:99 circuits/filtersets.py:126 -#: circuits/filtersets.py:160 ipam/filtersets.py:249 +#: circuits/filtersets.py:160 circuits/filtersets.py:287 +#: ipam/filtersets.py:249 msgid "Provider (slug)" msgstr "プロバイダ (slug)" @@ -241,8 +245,8 @@ msgstr "回線タイプ (slug)" #: circuits/filtersets.py:221 circuits/filtersets.py:266 #: dcim/filtersets.py:235 dcim/filtersets.py:321 dcim/filtersets.py:394 -#: dcim/filtersets.py:993 dcim/filtersets.py:1320 dcim/filtersets.py:1847 -#: dcim/filtersets.py:2089 dcim/filtersets.py:2148 ipam/filtersets.py:232 +#: dcim/filtersets.py:993 dcim/filtersets.py:1330 dcim/filtersets.py:1857 +#: dcim/filtersets.py:2099 dcim/filtersets.py:2158 ipam/filtersets.py:232 #: ipam/filtersets.py:363 ipam/filtersets.py:969 #: virtualization/filtersets.py:69 virtualization/filtersets.py:197 #: vpn/filtersets.py:387 @@ -254,13 +258,13 @@ msgid "Termination A (ID)" msgstr "ターミネーション A (ID)" #: circuits/filtersets.py:258 core/filtersets.py:73 core/filtersets.py:132 -#: dcim/filtersets.py:693 dcim/filtersets.py:1289 dcim/filtersets.py:2196 +#: dcim/filtersets.py:693 dcim/filtersets.py:1299 dcim/filtersets.py:2206 #: extras/filtersets.py:41 extras/filtersets.py:63 extras/filtersets.py:92 #: extras/filtersets.py:127 extras/filtersets.py:176 extras/filtersets.py:204 #: extras/filtersets.py:234 extras/filtersets.py:271 extras/filtersets.py:343 #: extras/filtersets.py:390 extras/filtersets.py:450 extras/filtersets.py:613 #: extras/filtersets.py:655 extras/filtersets.py:696 -#: ipam/forms/model_forms.py:438 netbox/filtersets.py:275 +#: ipam/forms/model_forms.py:447 netbox/filtersets.py:275 #: netbox/forms/__init__.py:22 netbox/forms/base.py:165 #: templates/htmx/object_selector.html:28 templates/inc/filter_list.html:45 #: templates/ipam/ipaddress_assign.html:29 templates/search.html:7 @@ -270,9 +274,12 @@ msgstr "ターミネーション A (ID)" msgid "Search" msgstr "検索" -#: circuits/filtersets.py:262 circuits/forms/bulk_edit.py:168 -#: circuits/forms/model_forms.py:109 circuits/forms/model_forms.py:131 +#: circuits/filtersets.py:262 circuits/forms/bulk_edit.py:170 +#: circuits/forms/bulk_import.py:117 circuits/forms/filtersets.py:196 +#: circuits/forms/filtersets.py:212 circuits/forms/model_forms.py:109 +#: circuits/forms/model_forms.py:131 circuits/tables/circuits.py:96 #: dcim/forms/connections.py:71 templates/circuits/circuit.html:15 +#: templates/circuits/circuittermination.html:19 #: templates/dcim/inc/cable_termination.html:55 #: templates/dcim/trace/circuit.html:4 msgid "Circuit" @@ -282,48 +289,48 @@ msgstr "回線" msgid "ProviderNetwork (ID)" msgstr "プロバイダネットワーク (ID)" -#: circuits/forms/bulk_edit.py:26 circuits/forms/filtersets.py:53 +#: circuits/forms/bulk_edit.py:28 circuits/forms/filtersets.py:54 #: circuits/forms/model_forms.py:27 circuits/tables/providers.py:33 #: dcim/forms/bulk_edit.py:127 dcim/forms/filtersets.py:188 #: dcim/forms/model_forms.py:122 dcim/tables/sites.py:94 -#: ipam/models/asns.py:126 ipam/tables/asn.py:27 ipam/views.py:218 +#: ipam/models/asns.py:126 ipam/tables/asn.py:27 ipam/views.py:219 #: netbox/navigation/menu.py:159 netbox/navigation/menu.py:162 #: templates/circuits/provider.html:23 msgid "ASNs" msgstr "ASN" -#: circuits/forms/bulk_edit.py:30 circuits/forms/bulk_edit.py:52 -#: circuits/forms/bulk_edit.py:79 circuits/forms/bulk_edit.py:100 -#: circuits/forms/bulk_edit.py:160 core/forms/bulk_edit.py:28 -#: core/tables/plugins.py:29 dcim/forms/bulk_create.py:35 -#: dcim/forms/bulk_edit.py:72 dcim/forms/bulk_edit.py:91 -#: dcim/forms/bulk_edit.py:150 dcim/forms/bulk_edit.py:191 -#: dcim/forms/bulk_edit.py:209 dcim/forms/bulk_edit.py:337 -#: dcim/forms/bulk_edit.py:373 dcim/forms/bulk_edit.py:388 -#: dcim/forms/bulk_edit.py:447 dcim/forms/bulk_edit.py:486 -#: dcim/forms/bulk_edit.py:516 dcim/forms/bulk_edit.py:540 -#: dcim/forms/bulk_edit.py:613 dcim/forms/bulk_edit.py:665 -#: dcim/forms/bulk_edit.py:717 dcim/forms/bulk_edit.py:740 -#: dcim/forms/bulk_edit.py:788 dcim/forms/bulk_edit.py:858 -#: dcim/forms/bulk_edit.py:911 dcim/forms/bulk_edit.py:946 -#: dcim/forms/bulk_edit.py:986 dcim/forms/bulk_edit.py:1030 -#: dcim/forms/bulk_edit.py:1075 dcim/forms/bulk_edit.py:1102 -#: dcim/forms/bulk_edit.py:1120 dcim/forms/bulk_edit.py:1138 -#: dcim/forms/bulk_edit.py:1156 dcim/forms/bulk_edit.py:1575 -#: extras/forms/bulk_edit.py:36 extras/forms/bulk_edit.py:124 -#: extras/forms/bulk_edit.py:153 extras/forms/bulk_edit.py:183 -#: extras/forms/bulk_edit.py:264 extras/forms/bulk_edit.py:288 -#: extras/forms/bulk_edit.py:302 extras/tables/tables.py:58 -#: ipam/forms/bulk_edit.py:51 ipam/forms/bulk_edit.py:71 -#: ipam/forms/bulk_edit.py:91 ipam/forms/bulk_edit.py:115 -#: ipam/forms/bulk_edit.py:144 ipam/forms/bulk_edit.py:173 -#: ipam/forms/bulk_edit.py:192 ipam/forms/bulk_edit.py:261 -#: ipam/forms/bulk_edit.py:305 ipam/forms/bulk_edit.py:353 -#: ipam/forms/bulk_edit.py:396 ipam/forms/bulk_edit.py:424 -#: ipam/forms/bulk_edit.py:554 ipam/forms/bulk_edit.py:585 -#: templates/account/token.html:35 templates/circuits/circuit.html:59 -#: templates/circuits/circuittype.html:26 -#: templates/circuits/inc/circuit_termination.html:114 +#: circuits/forms/bulk_edit.py:32 circuits/forms/bulk_edit.py:54 +#: circuits/forms/bulk_edit.py:81 circuits/forms/bulk_edit.py:102 +#: circuits/forms/bulk_edit.py:162 circuits/forms/bulk_edit.py:181 +#: core/forms/bulk_edit.py:28 core/tables/plugins.py:29 +#: dcim/forms/bulk_create.py:35 dcim/forms/bulk_edit.py:72 +#: dcim/forms/bulk_edit.py:91 dcim/forms/bulk_edit.py:150 +#: dcim/forms/bulk_edit.py:191 dcim/forms/bulk_edit.py:209 +#: dcim/forms/bulk_edit.py:337 dcim/forms/bulk_edit.py:373 +#: dcim/forms/bulk_edit.py:388 dcim/forms/bulk_edit.py:447 +#: dcim/forms/bulk_edit.py:486 dcim/forms/bulk_edit.py:516 +#: dcim/forms/bulk_edit.py:540 dcim/forms/bulk_edit.py:613 +#: dcim/forms/bulk_edit.py:665 dcim/forms/bulk_edit.py:717 +#: dcim/forms/bulk_edit.py:740 dcim/forms/bulk_edit.py:788 +#: dcim/forms/bulk_edit.py:858 dcim/forms/bulk_edit.py:911 +#: dcim/forms/bulk_edit.py:946 dcim/forms/bulk_edit.py:986 +#: dcim/forms/bulk_edit.py:1030 dcim/forms/bulk_edit.py:1075 +#: dcim/forms/bulk_edit.py:1102 dcim/forms/bulk_edit.py:1120 +#: dcim/forms/bulk_edit.py:1138 dcim/forms/bulk_edit.py:1156 +#: dcim/forms/bulk_edit.py:1575 extras/forms/bulk_edit.py:36 +#: extras/forms/bulk_edit.py:124 extras/forms/bulk_edit.py:153 +#: extras/forms/bulk_edit.py:183 extras/forms/bulk_edit.py:264 +#: extras/forms/bulk_edit.py:288 extras/forms/bulk_edit.py:302 +#: extras/tables/tables.py:58 ipam/forms/bulk_edit.py:51 +#: ipam/forms/bulk_edit.py:71 ipam/forms/bulk_edit.py:91 +#: ipam/forms/bulk_edit.py:115 ipam/forms/bulk_edit.py:144 +#: ipam/forms/bulk_edit.py:173 ipam/forms/bulk_edit.py:192 +#: ipam/forms/bulk_edit.py:261 ipam/forms/bulk_edit.py:305 +#: ipam/forms/bulk_edit.py:353 ipam/forms/bulk_edit.py:396 +#: ipam/forms/bulk_edit.py:424 ipam/forms/bulk_edit.py:554 +#: ipam/forms/bulk_edit.py:585 templates/account/token.html:35 +#: templates/circuits/circuit.html:59 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/dcim/cable.html:36 @@ -389,32 +396,35 @@ msgstr "ASN" msgid "Description" msgstr "説明" -#: circuits/forms/bulk_edit.py:47 circuits/forms/bulk_edit.py:69 -#: circuits/forms/bulk_edit.py:119 circuits/forms/bulk_import.py:34 -#: circuits/forms/bulk_import.py:49 circuits/forms/bulk_import.py:75 -#: circuits/forms/filtersets.py:67 circuits/forms/filtersets.py:85 -#: circuits/forms/filtersets.py:113 circuits/forms/filtersets.py:128 +#: circuits/forms/bulk_edit.py:49 circuits/forms/bulk_edit.py:71 +#: circuits/forms/bulk_edit.py:121 circuits/forms/bulk_import.py:35 +#: circuits/forms/bulk_import.py:50 circuits/forms/bulk_import.py:76 +#: circuits/forms/filtersets.py:68 circuits/forms/filtersets.py:86 +#: circuits/forms/filtersets.py:114 circuits/forms/filtersets.py:129 +#: circuits/forms/filtersets.py:197 circuits/forms/filtersets.py:230 #: circuits/forms/model_forms.py:45 circuits/forms/model_forms.py:59 -#: circuits/forms/model_forms.py:91 circuits/tables/circuits.py:55 -#: circuits/tables/providers.py:72 circuits/tables/providers.py:103 -#: templates/circuits/circuit.html:18 templates/circuits/provider.html:20 +#: circuits/forms/model_forms.py:91 circuits/tables/circuits.py:56 +#: circuits/tables/circuits.py:100 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 msgid "Provider" msgstr "プロバイダ" -#: circuits/forms/bulk_edit.py:76 circuits/forms/filtersets.py:88 +#: circuits/forms/bulk_edit.py:78 circuits/forms/filtersets.py:89 #: templates/circuits/providernetwork.html:28 msgid "Service ID" msgstr "サービス ID" -#: circuits/forms/bulk_edit.py:96 circuits/forms/filtersets.py:104 +#: circuits/forms/bulk_edit.py:98 circuits/forms/filtersets.py:105 #: dcim/forms/bulk_edit.py:205 dcim/forms/bulk_edit.py:502 #: dcim/forms/bulk_edit.py:702 dcim/forms/bulk_edit.py:1071 #: dcim/forms/bulk_edit.py:1098 dcim/forms/bulk_edit.py:1571 -#: dcim/forms/filtersets.py:975 dcim/forms/filtersets.py:1351 -#: dcim/forms/filtersets.py:1372 dcim/tables/devices.py:699 +#: dcim/forms/filtersets.py:983 dcim/forms/filtersets.py:1359 +#: dcim/forms/filtersets.py:1380 dcim/tables/devices.py:699 #: dcim/tables/devices.py:759 dcim/tables/devices.py:986 #: dcim/tables/devicetypes.py:245 dcim/tables/devicetypes.py:260 #: dcim/tables/racks.py:32 extras/forms/bulk_edit.py:260 @@ -426,8 +436,8 @@ msgstr "サービス ID" msgid "Color" msgstr "色" -#: circuits/forms/bulk_edit.py:114 circuits/forms/bulk_import.py:88 -#: circuits/forms/filtersets.py:123 core/forms/bulk_edit.py:18 +#: circuits/forms/bulk_edit.py:116 circuits/forms/bulk_import.py:89 +#: circuits/forms/filtersets.py:124 core/forms/bulk_edit.py:18 #: core/forms/filtersets.py:30 core/tables/data.py:20 core/tables/jobs.py:18 #: dcim/forms/bulk_edit.py:282 dcim/forms/bulk_edit.py:680 #: dcim/forms/bulk_edit.py:819 dcim/forms/bulk_edit.py:887 @@ -439,18 +449,18 @@ msgstr "色" #: dcim/forms/bulk_import.py:725 dcim/forms/bulk_import.py:808 #: dcim/forms/bulk_import.py:902 dcim/forms/bulk_import.py:944 #: dcim/forms/bulk_import.py:1161 dcim/forms/bulk_import.py:1327 -#: dcim/forms/filtersets.py:287 dcim/forms/filtersets.py:866 -#: dcim/forms/filtersets.py:965 dcim/forms/filtersets.py:1086 -#: dcim/forms/filtersets.py:1156 dcim/forms/filtersets.py:1178 -#: dcim/forms/filtersets.py:1200 dcim/forms/filtersets.py:1217 -#: dcim/forms/filtersets.py:1251 dcim/forms/filtersets.py:1346 -#: dcim/forms/filtersets.py:1367 dcim/forms/model_forms.py:643 +#: dcim/forms/filtersets.py:287 dcim/forms/filtersets.py:874 +#: dcim/forms/filtersets.py:973 dcim/forms/filtersets.py:1094 +#: dcim/forms/filtersets.py:1164 dcim/forms/filtersets.py:1186 +#: dcim/forms/filtersets.py:1208 dcim/forms/filtersets.py:1225 +#: dcim/forms/filtersets.py:1259 dcim/forms/filtersets.py:1354 +#: dcim/forms/filtersets.py:1375 dcim/forms/model_forms.py:643 #: dcim/forms/model_forms.py:649 dcim/forms/object_import.py:84 #: dcim/forms/object_import.py:113 dcim/forms/object_import.py:145 #: dcim/tables/devices.py:183 dcim/tables/devices.py:815 #: dcim/tables/power.py:77 extras/forms/bulk_import.py:39 #: extras/tables/tables.py:283 extras/tables/tables.py:355 -#: extras/tables/tables.py:473 netbox/tables/tables.py:237 +#: extras/tables/tables.py:473 netbox/tables/tables.py:239 #: 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 @@ -471,13 +481,13 @@ msgstr "色" msgid "Type" msgstr "タイプ" -#: circuits/forms/bulk_edit.py:124 circuits/forms/bulk_import.py:81 -#: circuits/forms/filtersets.py:136 circuits/forms/model_forms.py:96 +#: circuits/forms/bulk_edit.py:126 circuits/forms/bulk_import.py:82 +#: circuits/forms/filtersets.py:137 circuits/forms/model_forms.py:96 msgid "Provider account" msgstr "プロバイダアカウント" -#: circuits/forms/bulk_edit.py:132 circuits/forms/bulk_import.py:94 -#: circuits/forms/filtersets.py:147 core/forms/filtersets.py:35 +#: circuits/forms/bulk_edit.py:134 circuits/forms/bulk_import.py:95 +#: circuits/forms/filtersets.py:148 core/forms/filtersets.py:35 #: core/forms/filtersets.py:76 core/tables/data.py:23 core/tables/jobs.py:26 #: core/tables/tasks.py:88 dcim/forms/bulk_edit.py:105 #: dcim/forms/bulk_edit.py:180 dcim/forms/bulk_edit.py:261 @@ -489,9 +499,9 @@ msgstr "プロバイダアカウント" #: dcim/forms/bulk_import.py:1155 dcim/forms/bulk_import.py:1322 #: dcim/forms/bulk_import.py:1386 dcim/forms/filtersets.py:171 #: dcim/forms/filtersets.py:230 dcim/forms/filtersets.py:282 -#: dcim/forms/filtersets.py:727 dcim/forms/filtersets.py:835 -#: dcim/forms/filtersets.py:869 dcim/forms/filtersets.py:970 -#: dcim/forms/filtersets.py:1081 dcim/tables/devices.py:145 +#: dcim/forms/filtersets.py:728 dcim/forms/filtersets.py:843 +#: dcim/forms/filtersets.py:877 dcim/forms/filtersets.py:978 +#: dcim/forms/filtersets.py:1089 dcim/tables/devices.py:145 #: dcim/tables/devices.py:818 dcim/tables/devices.py:1046 #: dcim/tables/modules.py:69 dcim/tables/power.py:74 dcim/tables/racks.py:66 #: dcim/tables/sites.py:82 dcim/tables/sites.py:133 @@ -499,9 +509,9 @@ msgstr "プロバイダアカウント" #: ipam/forms/bulk_edit.py:338 ipam/forms/bulk_edit.py:544 #: ipam/forms/bulk_import.py:191 ipam/forms/bulk_import.py:256 #: ipam/forms/bulk_import.py:292 ipam/forms/bulk_import.py:458 -#: ipam/forms/filtersets.py:209 ipam/forms/filtersets.py:274 -#: ipam/forms/filtersets.py:348 ipam/forms/filtersets.py:501 -#: ipam/forms/model_forms.py:457 ipam/tables/ip.py:236 ipam/tables/ip.py:309 +#: ipam/forms/filtersets.py:210 ipam/forms/filtersets.py:281 +#: ipam/forms/filtersets.py:355 ipam/forms/filtersets.py:508 +#: ipam/forms/model_forms.py:466 ipam/tables/ip.py:236 ipam/tables/ip.py:309 #: ipam/tables/ip.py:359 ipam/tables/ip.py:421 ipam/tables/ip.py:448 #: ipam/tables/vlans.py:122 ipam/tables/vlans.py:227 #: templates/circuits/circuit.html:34 templates/core/datasource.html:46 @@ -532,8 +542,8 @@ msgstr "プロバイダアカウント" msgid "Status" msgstr "ステータス" -#: circuits/forms/bulk_edit.py:138 circuits/forms/bulk_import.py:99 -#: circuits/forms/filtersets.py:116 dcim/forms/bulk_edit.py:121 +#: circuits/forms/bulk_edit.py:140 circuits/forms/bulk_import.py:100 +#: circuits/forms/filtersets.py:117 dcim/forms/bulk_edit.py:121 #: dcim/forms/bulk_edit.py:186 dcim/forms/bulk_edit.py:256 #: dcim/forms/bulk_edit.py:368 dcim/forms/bulk_edit.py:588 #: dcim/forms/bulk_edit.py:692 dcim/forms/bulk_edit.py:1599 @@ -543,9 +553,9 @@ msgstr "ステータス" #: dcim/forms/bulk_import.py:1379 dcim/forms/filtersets.py:166 #: dcim/forms/filtersets.py:198 dcim/forms/filtersets.py:249 #: dcim/forms/filtersets.py:334 dcim/forms/filtersets.py:355 -#: dcim/forms/filtersets.py:652 dcim/forms/filtersets.py:827 -#: dcim/forms/filtersets.py:889 dcim/forms/filtersets.py:919 -#: dcim/forms/filtersets.py:1041 dcim/tables/power.py:88 +#: dcim/forms/filtersets.py:652 dcim/forms/filtersets.py:835 +#: dcim/forms/filtersets.py:897 dcim/forms/filtersets.py:927 +#: dcim/forms/filtersets.py:1049 dcim/tables/power.py:88 #: extras/filtersets.py:564 extras/forms/filtersets.py:332 #: extras/forms/filtersets.py:405 ipam/forms/bulk_edit.py:41 #: ipam/forms/bulk_edit.py:66 ipam/forms/bulk_edit.py:110 @@ -559,8 +569,8 @@ msgstr "ステータス" #: ipam/forms/bulk_import.py:451 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:173 ipam/forms/filtersets.py:260 -#: ipam/forms/filtersets.py:303 ipam/forms/filtersets.py:469 +#: ipam/forms/filtersets.py:174 ipam/forms/filtersets.py:267 +#: ipam/forms/filtersets.py:310 ipam/forms/filtersets.py:476 #: ipam/tables/ip.py:451 ipam/tables/vlans.py:224 #: templates/circuits/circuit.html:38 templates/dcim/cable.html:23 #: templates/dcim/device.html:78 templates/dcim/location.html:49 @@ -591,23 +601,23 @@ msgstr "ステータス" msgid "Tenant" msgstr "テナント" -#: circuits/forms/bulk_edit.py:143 circuits/forms/filtersets.py:171 +#: circuits/forms/bulk_edit.py:145 circuits/forms/filtersets.py:172 msgid "Install date" msgstr "開通日" -#: circuits/forms/bulk_edit.py:148 circuits/forms/filtersets.py:176 +#: circuits/forms/bulk_edit.py:150 circuits/forms/filtersets.py:177 msgid "Termination date" msgstr "終了日" -#: circuits/forms/bulk_edit.py:154 circuits/forms/filtersets.py:183 +#: circuits/forms/bulk_edit.py:156 circuits/forms/filtersets.py:184 msgid "Commit rate (Kbps)" msgstr "保証帯域 (Kbps)" -#: circuits/forms/bulk_edit.py:169 circuits/forms/model_forms.py:110 +#: circuits/forms/bulk_edit.py:171 circuits/forms/model_forms.py:110 msgid "Service Parameters" msgstr "サービス情報" -#: circuits/forms/bulk_edit.py:170 circuits/forms/model_forms.py:111 +#: circuits/forms/bulk_edit.py:172 circuits/forms/model_forms.py:111 #: dcim/forms/model_forms.py:138 dcim/forms/model_forms.py:180 #: dcim/forms/model_forms.py:228 dcim/forms/model_forms.py:267 #: dcim/forms/model_forms.py:713 dcim/forms/model_forms.py:1636 @@ -626,26 +636,60 @@ msgstr "サービス情報" msgid "Tenancy" msgstr "テナンシー" -#: circuits/forms/bulk_import.py:37 circuits/forms/bulk_import.py:52 -#: circuits/forms/bulk_import.py:78 +#: circuits/forms/bulk_edit.py:191 circuits/forms/bulk_edit.py:215 +#: circuits/forms/model_forms.py:153 circuits/tables/circuits.py:109 +#: templates/circuits/inc/circuit_termination_fields.html:62 +#: templates/circuits/providernetwork.html:17 +msgid "Provider Network" +msgstr "プロバイダネットワーク" + +#: circuits/forms/bulk_edit.py:197 +msgid "Port speed (Kbps)" +msgstr "ポートスピード (Kbps)" + +#: circuits/forms/bulk_edit.py:201 +msgid "Upstream speed (Kbps)" +msgstr "アップストリーム速度 (Kbps)" + +#: circuits/forms/bulk_edit.py:204 dcim/forms/bulk_edit.py:849 +#: dcim/forms/bulk_edit.py:1208 dcim/forms/bulk_edit.py:1225 +#: dcim/forms/bulk_edit.py:1242 dcim/forms/bulk_edit.py:1260 +#: dcim/forms/bulk_edit.py:1348 dcim/forms/bulk_edit.py:1487 +#: dcim/forms/bulk_edit.py:1504 +msgid "Mark connected" +msgstr "接続済みにする" + +#: circuits/forms/bulk_edit.py:217 circuits/forms/model_forms.py:155 +#: templates/circuits/inc/circuit_termination_fields.html:54 +#: templates/dcim/frontport.html:121 templates/dcim/interface.html:193 +#: templates/dcim/rearport.html:111 +msgid "Circuit Termination" +msgstr "回線終端" + +#: circuits/forms/bulk_edit.py:219 circuits/forms/model_forms.py:157 +msgid "Termination Details" +msgstr "終了詳細" + +#: circuits/forms/bulk_import.py:38 circuits/forms/bulk_import.py:53 +#: circuits/forms/bulk_import.py:79 msgid "Assigned provider" msgstr "割当プロバイダ" -#: circuits/forms/bulk_import.py:69 dcim/forms/bulk_import.py:178 +#: circuits/forms/bulk_import.py:70 dcim/forms/bulk_import.py:178 #: dcim/forms/bulk_import.py:388 dcim/forms/bulk_import.py:1108 #: dcim/forms/bulk_import.py:1187 extras/forms/bulk_import.py:232 msgid "RGB color in hexadecimal. Example:" msgstr "16 進数の RGB カラーコード。例:" -#: circuits/forms/bulk_import.py:84 +#: circuits/forms/bulk_import.py:85 msgid "Assigned provider account" msgstr "割当プロバイダアカウント" -#: circuits/forms/bulk_import.py:91 +#: circuits/forms/bulk_import.py:92 msgid "Type of circuit" msgstr "回線のタイプ" -#: circuits/forms/bulk_import.py:96 dcim/forms/bulk_import.py:89 +#: circuits/forms/bulk_import.py:97 dcim/forms/bulk_import.py:89 #: dcim/forms/bulk_import.py:148 dcim/forms/bulk_import.py:204 #: dcim/forms/bulk_import.py:452 dcim/forms/bulk_import.py:606 #: dcim/forms/bulk_import.py:1324 ipam/forms/bulk_import.py:193 @@ -656,7 +700,7 @@ msgstr "回線のタイプ" msgid "Operational status" msgstr "運用状況" -#: circuits/forms/bulk_import.py:103 dcim/forms/bulk_import.py:110 +#: circuits/forms/bulk_import.py:104 dcim/forms/bulk_import.py:110 #: dcim/forms/bulk_import.py:155 dcim/forms/bulk_import.py:286 #: dcim/forms/bulk_import.py:428 dcim/forms/bulk_import.py:1171 #: dcim/forms/bulk_import.py:1319 dcim/forms/bulk_import.py:1383 @@ -670,37 +714,46 @@ msgstr "運用状況" msgid "Assigned tenant" msgstr "割当テナント" -#: circuits/forms/bulk_import.py:122 circuits/forms/filtersets.py:144 -#: circuits/forms/model_forms.py:142 +#: circuits/forms/bulk_import.py:122 +#: 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 +msgid "Termination" +msgstr "終了" + +#: circuits/forms/bulk_import.py:132 circuits/forms/filtersets.py:145 +#: circuits/forms/filtersets.py:225 circuits/forms/model_forms.py:142 msgid "Provider network" msgstr "プロバイダネットワーク" -#: circuits/forms/filtersets.py:27 circuits/forms/filtersets.py:115 -#: dcim/forms/bulk_edit.py:248 dcim/forms/bulk_edit.py:346 -#: dcim/forms/bulk_edit.py:580 dcim/forms/bulk_edit.py:627 -#: dcim/forms/bulk_edit.py:780 dcim/forms/bulk_import.py:189 -#: dcim/forms/bulk_import.py:263 dcim/forms/bulk_import.py:491 -#: dcim/forms/bulk_import.py:1268 dcim/forms/bulk_import.py:1302 -#: dcim/forms/filtersets.py:93 dcim/forms/filtersets.py:246 -#: dcim/forms/filtersets.py:279 dcim/forms/filtersets.py:331 -#: dcim/forms/filtersets.py:382 dcim/forms/filtersets.py:649 -#: dcim/forms/filtersets.py:690 dcim/forms/filtersets.py:888 -#: dcim/forms/filtersets.py:917 dcim/forms/filtersets.py:937 -#: dcim/forms/filtersets.py:1001 dcim/forms/filtersets.py:1031 -#: dcim/forms/filtersets.py:1040 dcim/forms/filtersets.py:1151 -#: dcim/forms/filtersets.py:1173 dcim/forms/filtersets.py:1195 -#: dcim/forms/filtersets.py:1212 dcim/forms/filtersets.py:1232 -#: dcim/forms/filtersets.py:1340 dcim/forms/filtersets.py:1362 -#: dcim/forms/filtersets.py:1383 dcim/forms/filtersets.py:1398 -#: dcim/forms/filtersets.py:1412 dcim/forms/model_forms.py:179 -#: dcim/forms/model_forms.py:211 dcim/forms/model_forms.py:411 -#: dcim/forms/model_forms.py:673 dcim/tables/devices.py:162 -#: dcim/tables/power.py:30 dcim/tables/racks.py:58 dcim/tables/racks.py:143 -#: extras/filtersets.py:488 extras/forms/filtersets.py:329 -#: ipam/forms/bulk_edit.py:457 ipam/forms/filtersets.py:172 -#: ipam/forms/filtersets.py:407 ipam/forms/filtersets.py:430 -#: ipam/forms/filtersets.py:467 ipam/forms/model_forms.py:590 -#: templates/dcim/device.html:25 templates/dcim/device_edit.html:30 +#: circuits/forms/filtersets.py:28 circuits/forms/filtersets.py:116 +#: circuits/forms/filtersets.py:198 dcim/forms/bulk_edit.py:248 +#: dcim/forms/bulk_edit.py:346 dcim/forms/bulk_edit.py:580 +#: dcim/forms/bulk_edit.py:627 dcim/forms/bulk_edit.py:780 +#: dcim/forms/bulk_import.py:189 dcim/forms/bulk_import.py:263 +#: dcim/forms/bulk_import.py:491 dcim/forms/bulk_import.py:1268 +#: dcim/forms/bulk_import.py:1302 dcim/forms/filtersets.py:93 +#: dcim/forms/filtersets.py:246 dcim/forms/filtersets.py:279 +#: dcim/forms/filtersets.py:331 dcim/forms/filtersets.py:382 +#: dcim/forms/filtersets.py:649 dcim/forms/filtersets.py:691 +#: dcim/forms/filtersets.py:896 dcim/forms/filtersets.py:925 +#: dcim/forms/filtersets.py:945 dcim/forms/filtersets.py:1009 +#: dcim/forms/filtersets.py:1039 dcim/forms/filtersets.py:1048 +#: dcim/forms/filtersets.py:1159 dcim/forms/filtersets.py:1181 +#: dcim/forms/filtersets.py:1203 dcim/forms/filtersets.py:1220 +#: dcim/forms/filtersets.py:1240 dcim/forms/filtersets.py:1348 +#: dcim/forms/filtersets.py:1370 dcim/forms/filtersets.py:1391 +#: dcim/forms/filtersets.py:1406 dcim/forms/filtersets.py:1420 +#: dcim/forms/model_forms.py:179 dcim/forms/model_forms.py:211 +#: dcim/forms/model_forms.py:411 dcim/forms/model_forms.py:673 +#: dcim/tables/devices.py:162 dcim/tables/power.py:30 dcim/tables/racks.py:58 +#: dcim/tables/racks.py:143 extras/filtersets.py:488 +#: extras/forms/filtersets.py:329 ipam/forms/bulk_edit.py:457 +#: ipam/forms/filtersets.py:173 ipam/forms/filtersets.py:414 +#: ipam/forms/filtersets.py:437 ipam/forms/filtersets.py:474 +#: ipam/forms/model_forms.py:599 templates/dcim/device.html:25 +#: 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:26 templates/dcim/rackreservation.html:32 @@ -710,12 +763,12 @@ msgstr "プロバイダネットワーク" msgid "Location" msgstr "ロケーション" -#: circuits/forms/filtersets.py:29 circuits/forms/filtersets.py:117 +#: circuits/forms/filtersets.py:30 circuits/forms/filtersets.py:118 #: dcim/forms/filtersets.py:137 dcim/forms/filtersets.py:151 #: dcim/forms/filtersets.py:167 dcim/forms/filtersets.py:199 #: dcim/forms/filtersets.py:250 dcim/forms/filtersets.py:335 #: dcim/forms/filtersets.py:406 dcim/forms/filtersets.py:653 -#: dcim/forms/filtersets.py:1002 netbox/navigation/menu.py:44 +#: dcim/forms/filtersets.py:1010 netbox/navigation/menu.py:44 #: netbox/navigation/menu.py:46 tenancy/forms/filtersets.py:42 #: tenancy/tables/columns.py:70 tenancy/tables/contacts.py:25 #: tenancy/views.py:19 virtualization/forms/filtersets.py:37 @@ -724,22 +777,22 @@ msgstr "ロケーション" msgid "Contacts" msgstr "連絡先" -#: circuits/forms/filtersets.py:34 circuits/forms/filtersets.py:154 +#: circuits/forms/filtersets.py:35 circuits/forms/filtersets.py:155 #: dcim/forms/bulk_edit.py:111 dcim/forms/bulk_edit.py:223 #: dcim/forms/bulk_edit.py:755 dcim/forms/bulk_import.py:92 #: dcim/forms/filtersets.py:71 dcim/forms/filtersets.py:178 #: dcim/forms/filtersets.py:204 dcim/forms/filtersets.py:257 -#: dcim/forms/filtersets.py:360 dcim/forms/filtersets.py:667 -#: dcim/forms/filtersets.py:894 dcim/forms/filtersets.py:924 -#: dcim/forms/filtersets.py:1008 dcim/forms/filtersets.py:1047 -#: dcim/forms/filtersets.py:1460 dcim/forms/filtersets.py:1484 -#: dcim/forms/filtersets.py:1508 dcim/forms/model_forms.py:111 +#: dcim/forms/filtersets.py:360 dcim/forms/filtersets.py:668 +#: dcim/forms/filtersets.py:902 dcim/forms/filtersets.py:932 +#: dcim/forms/filtersets.py:1016 dcim/forms/filtersets.py:1055 +#: dcim/forms/filtersets.py:1468 dcim/forms/filtersets.py:1492 +#: dcim/forms/filtersets.py:1516 dcim/forms/model_forms.py:111 #: dcim/forms/object_create.py:375 dcim/tables/devices.py:148 #: dcim/tables/sites.py:85 extras/filtersets.py:455 #: ipam/forms/bulk_edit.py:206 ipam/forms/bulk_edit.py:438 -#: ipam/forms/bulk_edit.py:512 ipam/forms/filtersets.py:216 -#: ipam/forms/filtersets.py:415 ipam/forms/filtersets.py:475 -#: ipam/forms/model_forms.py:562 templates/dcim/device.html:17 +#: ipam/forms/bulk_edit.py:512 ipam/forms/filtersets.py:217 +#: ipam/forms/filtersets.py:422 ipam/forms/filtersets.py:482 +#: ipam/forms/model_forms.py:571 templates/dcim/device.html:17 #: templates/dcim/rack.html:16 templates/dcim/rackreservation.html:22 #: templates/dcim/region.html:26 templates/dcim/site.html:30 #: templates/ipam/prefix.html:49 templates/ipam/vlan.html:16 @@ -749,42 +802,42 @@ msgstr "連絡先" msgid "Region" msgstr "リージョン" -#: circuits/forms/filtersets.py:39 circuits/forms/filtersets.py:159 +#: circuits/forms/filtersets.py:40 circuits/forms/filtersets.py:160 #: dcim/forms/bulk_edit.py:231 dcim/forms/bulk_edit.py:763 #: dcim/forms/filtersets.py:76 dcim/forms/filtersets.py:183 #: dcim/forms/filtersets.py:209 dcim/forms/filtersets.py:270 -#: dcim/forms/filtersets.py:365 dcim/forms/filtersets.py:672 -#: dcim/forms/filtersets.py:899 dcim/forms/filtersets.py:1013 -#: dcim/forms/filtersets.py:1052 dcim/forms/object_create.py:383 +#: dcim/forms/filtersets.py:365 dcim/forms/filtersets.py:673 +#: dcim/forms/filtersets.py:907 dcim/forms/filtersets.py:1021 +#: dcim/forms/filtersets.py:1060 dcim/forms/object_create.py:383 #: extras/filtersets.py:472 ipam/forms/bulk_edit.py:211 #: ipam/forms/bulk_edit.py:445 ipam/forms/bulk_edit.py:517 -#: ipam/forms/filtersets.py:221 ipam/forms/filtersets.py:420 -#: ipam/forms/filtersets.py:480 ipam/forms/model_forms.py:575 +#: ipam/forms/filtersets.py:222 ipam/forms/filtersets.py:427 +#: ipam/forms/filtersets.py:487 ipam/forms/model_forms.py:584 #: virtualization/forms/bulk_edit.py:86 virtualization/forms/filtersets.py:69 #: virtualization/forms/filtersets.py:138 #: virtualization/forms/model_forms.py:98 msgid "Site group" msgstr "サイトグループ" -#: circuits/forms/filtersets.py:62 circuits/forms/filtersets.py:80 -#: circuits/forms/filtersets.py:99 circuits/forms/filtersets.py:114 +#: circuits/forms/filtersets.py:63 circuits/forms/filtersets.py:81 +#: circuits/forms/filtersets.py:100 circuits/forms/filtersets.py:115 #: core/forms/filtersets.py:64 dcim/forms/bulk_edit.py:726 #: dcim/forms/filtersets.py:165 dcim/forms/filtersets.py:197 -#: dcim/forms/filtersets.py:826 dcim/forms/filtersets.py:918 -#: dcim/forms/filtersets.py:1042 dcim/forms/filtersets.py:1150 -#: dcim/forms/filtersets.py:1172 dcim/forms/filtersets.py:1194 -#: dcim/forms/filtersets.py:1211 dcim/forms/filtersets.py:1228 -#: dcim/forms/filtersets.py:1339 dcim/forms/filtersets.py:1361 -#: dcim/forms/filtersets.py:1382 dcim/forms/filtersets.py:1397 -#: dcim/forms/filtersets.py:1410 extras/forms/filtersets.py:43 +#: dcim/forms/filtersets.py:834 dcim/forms/filtersets.py:926 +#: dcim/forms/filtersets.py:1050 dcim/forms/filtersets.py:1158 +#: dcim/forms/filtersets.py:1180 dcim/forms/filtersets.py:1202 +#: dcim/forms/filtersets.py:1219 dcim/forms/filtersets.py:1236 +#: dcim/forms/filtersets.py:1347 dcim/forms/filtersets.py:1369 +#: dcim/forms/filtersets.py:1390 dcim/forms/filtersets.py:1405 +#: dcim/forms/filtersets.py:1418 extras/forms/filtersets.py:43 #: extras/forms/filtersets.py:112 extras/forms/filtersets.py:143 #: extras/forms/filtersets.py:183 extras/forms/filtersets.py:199 #: extras/forms/filtersets.py:230 extras/forms/filtersets.py:254 #: extras/forms/filtersets.py:450 extras/forms/filtersets.py:488 -#: ipam/forms/filtersets.py:99 ipam/forms/filtersets.py:259 -#: ipam/forms/filtersets.py:300 ipam/forms/filtersets.py:375 -#: ipam/forms/filtersets.py:468 ipam/forms/filtersets.py:527 -#: ipam/forms/filtersets.py:545 netbox/tables/tables.py:253 +#: ipam/forms/filtersets.py:99 ipam/forms/filtersets.py:266 +#: ipam/forms/filtersets.py:307 ipam/forms/filtersets.py:382 +#: ipam/forms/filtersets.py:475 ipam/forms/filtersets.py:534 +#: ipam/forms/filtersets.py:552 netbox/tables/tables.py:255 #: virtualization/forms/filtersets.py:45 #: virtualization/forms/filtersets.py:103 #: virtualization/forms/filtersets.py:194 @@ -793,28 +846,15 @@ msgstr "サイトグループ" msgid "Attributes" msgstr "属性" -#: circuits/forms/filtersets.py:70 circuits/tables/circuits.py:60 +#: circuits/forms/filtersets.py:71 circuits/tables/circuits.py:61 #: circuits/tables/providers.py:66 templates/circuits/circuit.html:22 #: templates/circuits/provideraccount.html:24 msgid "Account" msgstr "アカウント" -#: circuits/forms/model_forms.py:153 -#: templates/circuits/inc/circuit_termination.html:88 -#: templates/circuits/providernetwork.html:17 -msgid "Provider Network" -msgstr "プロバイダネットワーク" - -#: circuits/forms/model_forms.py:155 -#: templates/circuits/inc/circuit_termination.html:80 -#: templates/dcim/frontport.html:121 templates/dcim/interface.html:193 -#: templates/dcim/rearport.html:111 -msgid "Circuit Termination" -msgstr "回線終端" - -#: circuits/forms/model_forms.py:157 -msgid "Termination Details" -msgstr "終了詳細" +#: circuits/forms/filtersets.py:215 +msgid "Term Side" +msgstr "タームサイド" #: circuits/models/circuits.py:25 dcim/models/cables.py:67 #: dcim/models/device_component_templates.py:491 @@ -845,8 +885,8 @@ msgstr "一意な回線 ID" #: core/models/jobs.py:85 dcim/models/cables.py:49 dcim/models/devices.py:643 #: dcim/models/devices.py:1155 dcim/models/devices.py:1364 #: dcim/models/power.py:96 dcim/models/racks.py:98 dcim/models/sites.py:154 -#: dcim/models/sites.py:266 ipam/models/ip.py:252 ipam/models/ip.py:521 -#: ipam/models/ip.py:729 ipam/models/vlans.py:175 +#: dcim/models/sites.py:266 ipam/models/ip.py:253 ipam/models/ip.py:522 +#: ipam/models/ip.py:730 ipam/models/vlans.py:175 #: virtualization/models/clusters.py:74 #: virtualization/models/virtualmachines.py:84 vpn/models/tunnels.py:40 #: wireless/models.py:94 wireless/models.py:158 @@ -1016,15 +1056,15 @@ msgstr "プロバイダネットワーク" msgid "provider networks" msgstr "プロバイダネットワーク" -#: circuits/tables/circuits.py:29 circuits/tables/providers.py:18 +#: circuits/tables/circuits.py:30 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:13 #: core/tables/tasks.py:11 core/tables/tasks.py:115 #: dcim/forms/filtersets.py:61 dcim/forms/object_create.py:43 #: dcim/tables/devices.py:60 dcim/tables/devices.py:97 #: dcim/tables/devices.py:139 dcim/tables/devices.py:294 -#: dcim/tables/devices.py:376 dcim/tables/devices.py:420 -#: dcim/tables/devices.py:472 dcim/tables/devices.py:524 +#: dcim/tables/devices.py:380 dcim/tables/devices.py:424 +#: dcim/tables/devices.py:476 dcim/tables/devices.py:528 #: dcim/tables/devices.py:644 dcim/tables/devices.py:726 #: dcim/tables/devices.py:776 dcim/tables/devices.py:842 #: dcim/tables/devices.py:957 dcim/tables/devices.py:977 @@ -1038,7 +1078,7 @@ msgstr "プロバイダネットワーク" #: extras/tables/tables.py:209 extras/tables/tables.py:256 #: extras/tables/tables.py:279 extras/tables/tables.py:329 #: extras/tables/tables.py:381 extras/tables/tables.py:404 -#: ipam/forms/bulk_edit.py:391 ipam/forms/filtersets.py:379 +#: ipam/forms/bulk_edit.py:391 ipam/forms/filtersets.py:386 #: ipam/tables/asn.py:16 ipam/tables/ip.py:85 ipam/tables/ip.py:159 #: ipam/tables/services.py:15 ipam/tables/services.py:40 #: ipam/tables/vlans.py:64 ipam/tables/vlans.py:110 ipam/tables/vrfs.py:26 @@ -1104,7 +1144,7 @@ msgstr "プロバイダネットワーク" msgid "Name" msgstr "名前" -#: circuits/tables/circuits.py:38 circuits/tables/providers.py:45 +#: circuits/tables/circuits.py:39 circuits/tables/providers.py:45 #: circuits/tables/providers.py:79 netbox/navigation/menu.py:253 #: netbox/navigation/menu.py:257 netbox/navigation/menu.py:259 #: templates/circuits/provider.html:57 @@ -1113,23 +1153,23 @@ msgstr "名前" msgid "Circuits" msgstr "回線" -#: circuits/tables/circuits.py:52 templates/circuits/circuit.html:26 +#: circuits/tables/circuits.py:53 templates/circuits/circuit.html:26 msgid "Circuit ID" msgstr "回線 ID" -#: circuits/tables/circuits.py:65 wireless/forms/model_forms.py:160 +#: circuits/tables/circuits.py:66 wireless/forms/model_forms.py:160 msgid "Side A" msgstr "サイド A" -#: circuits/tables/circuits.py:69 +#: circuits/tables/circuits.py:70 msgid "Side Z" msgstr "サイド Z" -#: circuits/tables/circuits.py:72 templates/circuits/circuit.html:55 +#: circuits/tables/circuits.py:73 templates/circuits/circuit.html:55 msgid "Commit Rate" msgstr "保証帯域" -#: circuits/tables/circuits.py:75 circuits/tables/providers.py:48 +#: circuits/tables/circuits.py:76 circuits/tables/providers.py:48 #: circuits/tables/providers.py:82 circuits/tables/providers.py:107 #: dcim/tables/devices.py:1019 dcim/tables/devicetypes.py:92 #: dcim/tables/modules.py:29 dcim/tables/modules.py:72 dcim/tables/power.py:39 @@ -1185,12 +1225,12 @@ msgstr "完了" #: core/choices.py:22 core/choices.py:59 core/constants.py:20 #: core/tables/tasks.py:34 dcim/choices.py:176 dcim/choices.py:222 -#: dcim/choices.py:1506 extras/choices.py:226 virtualization/choices.py:47 +#: dcim/choices.py:1534 extras/choices.py:226 virtualization/choices.py:47 msgid "Failed" msgstr "失敗" -#: core/choices.py:35 netbox/navigation/menu.py:319 -#: netbox/navigation/menu.py:323 templates/extras/script/base.html:14 +#: core/choices.py:35 netbox/navigation/menu.py:320 +#: netbox/navigation/menu.py:324 templates/extras/script/base.html:14 #: templates/extras/script_list.html:7 templates/extras/script_list.html:12 #: templates/extras/script_result.html:17 msgid "Scripts" @@ -1285,8 +1325,8 @@ msgstr "データソース (名前)" #: core/forms/bulk_edit.py:25 core/forms/filtersets.py:40 #: core/tables/data.py:26 dcim/forms/bulk_edit.py:1020 -#: dcim/forms/bulk_edit.py:1293 dcim/forms/filtersets.py:1268 -#: dcim/tables/devices.py:549 dcim/tables/devicetypes.py:221 +#: dcim/forms/bulk_edit.py:1293 dcim/forms/filtersets.py:1276 +#: dcim/tables/devices.py:553 dcim/tables/devicetypes.py:221 #: extras/forms/bulk_edit.py:98 extras/forms/bulk_edit.py:162 #: extras/forms/bulk_edit.py:221 extras/forms/filtersets.py:120 #: extras/forms/filtersets.py:207 extras/forms/filtersets.py:268 @@ -1422,10 +1462,10 @@ msgstr "同期するファイルをアップロードするか、データファ msgid "Rack Elevations" msgstr "ラック図" -#: core/forms/model_forms.py:157 dcim/choices.py:1417 +#: core/forms/model_forms.py:157 dcim/choices.py:1445 #: dcim/forms/bulk_edit.py:867 dcim/forms/bulk_edit.py:1250 #: dcim/forms/bulk_edit.py:1268 dcim/tables/racks.py:89 -#: netbox/navigation/menu.py:275 netbox/navigation/menu.py:279 +#: netbox/navigation/menu.py:276 netbox/navigation/menu.py:280 msgid "Power" msgstr "電源" @@ -1458,7 +1498,7 @@ msgstr "バリデーション" msgid "User Preferences" msgstr "ユーザ設定" -#: core/forms/model_forms.py:167 dcim/forms/filtersets.py:660 +#: core/forms/model_forms.py:167 dcim/forms/filtersets.py:661 #: templates/core/inc/config_data.html:127 users/forms/model_forms.py:65 msgid "Miscellaneous" msgstr "その他" @@ -1597,7 +1637,7 @@ msgstr "パス" msgid "File path relative to the data source's root" msgstr "データソースのルートを基準にしたファイルパス" -#: core/models/data.py:303 ipam/models/ip.py:502 +#: core/models/data.py:303 ipam/models/ip.py:503 msgid "size" msgstr "サイズ" @@ -1714,7 +1754,7 @@ msgstr "最終更新日" #: core/tables/jobs.py:10 core/tables/tasks.py:76 #: dcim/tables/devicetypes.py:161 extras/tables/tables.py:179 -#: extras/tables/tables.py:350 netbox/tables/tables.py:187 +#: extras/tables/tables.py:350 netbox/tables/tables.py:188 #: templates/dcim/virtualchassis_edit.html:52 utilities/forms/forms.py:73 #: wireless/tables/wirelesslink.py:16 msgid "ID" @@ -1723,7 +1763,7 @@ msgstr "ID" #: core/tables/jobs.py:21 extras/choices.py:41 extras/tables/tables.py:241 #: extras/tables/tables.py:287 extras/tables/tables.py:360 #: extras/tables/tables.py:478 extras/tables/tables.py:509 -#: extras/tables/tables.py:574 netbox/tables/tables.py:241 +#: extras/tables/tables.py:574 netbox/tables/tables.py:243 #: templates/extras/eventrule.html:84 templates/extras/journalentry.html:18 #: templates/extras/objectchange.html:57 tenancy/tables/contacts.py:93 #: vpn/tables/l2vpn.py:64 @@ -1768,7 +1808,7 @@ msgstr "労働者" msgid "Host" msgstr "ホスト" -#: core/tables/tasks.py:50 ipam/forms/filtersets.py:535 +#: core/tables/tasks.py:50 ipam/forms/filtersets.py:542 msgid "Port" msgstr "ポート" @@ -1835,7 +1875,7 @@ msgid "Staging" msgstr "ステージング" #: dcim/choices.py:23 dcim/choices.py:178 dcim/choices.py:223 -#: dcim/choices.py:1430 virtualization/choices.py:23 +#: dcim/choices.py:1458 virtualization/choices.py:23 #: virtualization/choices.py:48 msgid "Decommissioning" msgstr "廃止" @@ -1895,7 +1935,7 @@ msgstr "廃止済" msgid "Millimeters" msgstr "ミリメートル" -#: dcim/choices.py:115 dcim/choices.py:1452 +#: dcim/choices.py:115 dcim/choices.py:1480 msgid "Inches" msgstr "インチ" @@ -1970,7 +2010,7 @@ msgstr "右から左" msgid "Side to rear" msgstr "側面から背面" -#: dcim/choices.py:198 dcim/choices.py:1225 +#: dcim/choices.py:198 dcim/choices.py:1253 msgid "Passive" msgstr "パッシブ" @@ -1978,56 +2018,56 @@ msgstr "パッシブ" msgid "Mixed" msgstr "混合" -#: dcim/choices.py:443 dcim/choices.py:680 +#: dcim/choices.py:447 dcim/choices.py:693 msgid "NEMA (Non-locking)" msgstr "NEMA (ロック無)" -#: dcim/choices.py:465 dcim/choices.py:702 +#: dcim/choices.py:469 dcim/choices.py:715 msgid "NEMA (Locking)" msgstr "NEMA (ロック有)" -#: dcim/choices.py:488 dcim/choices.py:725 +#: dcim/choices.py:492 dcim/choices.py:738 msgid "California Style" msgstr "California Style" -#: dcim/choices.py:496 +#: dcim/choices.py:500 msgid "International/ITA" msgstr "International/ITA" -#: dcim/choices.py:526 dcim/choices.py:755 +#: dcim/choices.py:535 dcim/choices.py:773 msgid "Proprietary" msgstr "独自規格" -#: dcim/choices.py:534 dcim/choices.py:764 dcim/choices.py:1141 -#: dcim/choices.py:1143 dcim/choices.py:1348 dcim/choices.py:1350 +#: dcim/choices.py:543 dcim/choices.py:782 dcim/choices.py:1169 +#: dcim/choices.py:1171 dcim/choices.py:1376 dcim/choices.py:1378 #: netbox/navigation/menu.py:187 msgid "Other" msgstr "その他" -#: dcim/choices.py:733 +#: dcim/choices.py:746 msgid "ITA/International" msgstr "ITA/International" -#: dcim/choices.py:794 +#: dcim/choices.py:812 msgid "Physical" msgstr "物理" -#: dcim/choices.py:795 dcim/choices.py:954 +#: dcim/choices.py:813 dcim/choices.py:977 msgid "Virtual" msgstr "仮想" -#: dcim/choices.py:796 dcim/choices.py:1026 dcim/forms/bulk_edit.py:1408 -#: dcim/forms/filtersets.py:1231 dcim/forms/model_forms.py:933 +#: dcim/choices.py:814 dcim/choices.py:1049 dcim/forms/bulk_edit.py:1408 +#: dcim/forms/filtersets.py:1239 dcim/forms/model_forms.py:933 #: dcim/forms/model_forms.py:1341 netbox/navigation/menu.py:127 #: netbox/navigation/menu.py:131 templates/dcim/interface.html:210 msgid "Wireless" msgstr "無線" -#: dcim/choices.py:952 +#: dcim/choices.py:975 msgid "Virtual interfaces" msgstr "仮想インタフェース" -#: dcim/choices.py:955 dcim/forms/bulk_edit.py:1303 +#: dcim/choices.py:978 dcim/forms/bulk_edit.py:1303 #: dcim/forms/bulk_import.py:785 dcim/forms/model_forms.py:919 #: dcim/tables/devices.py:656 templates/dcim/interface.html:106 #: templates/virtualization/vminterface.html:43 @@ -2037,152 +2077,152 @@ msgstr "仮想インタフェース" msgid "Bridge" msgstr "ブリッジ" -#: dcim/choices.py:956 +#: dcim/choices.py:979 msgid "Link Aggregation Group (LAG)" msgstr "リンクアグリゲーション (LAG)" -#: dcim/choices.py:960 +#: dcim/choices.py:983 msgid "Ethernet (fixed)" msgstr "イーサネット (固定)" -#: dcim/choices.py:974 +#: dcim/choices.py:997 msgid "Ethernet (modular)" msgstr "イーサネット (モジュール)" -#: dcim/choices.py:1010 +#: dcim/choices.py:1033 msgid "Ethernet (backplane)" msgstr "イーサネット (バックプレーン)" -#: dcim/choices.py:1040 +#: dcim/choices.py:1063 msgid "Cellular" msgstr "セルラー" -#: dcim/choices.py:1090 dcim/forms/filtersets.py:303 -#: dcim/forms/filtersets.py:737 dcim/forms/filtersets.py:874 -#: dcim/forms/filtersets.py:1426 templates/dcim/inventoryitem.html:52 +#: dcim/choices.py:1115 dcim/forms/filtersets.py:303 +#: dcim/forms/filtersets.py:738 dcim/forms/filtersets.py:882 +#: dcim/forms/filtersets.py:1434 templates/dcim/inventoryitem.html:52 #: templates/dcim/virtualchassis_edit.html:54 msgid "Serial" msgstr "シリアル" -#: dcim/choices.py:1105 +#: dcim/choices.py:1130 msgid "Coaxial" msgstr "同軸" -#: dcim/choices.py:1122 +#: dcim/choices.py:1150 msgid "Stacking" msgstr "スタック" -#: dcim/choices.py:1172 +#: dcim/choices.py:1200 msgid "Half" msgstr "半二重" -#: dcim/choices.py:1173 +#: dcim/choices.py:1201 msgid "Full" msgstr "全二重" -#: dcim/choices.py:1174 netbox/preferences.py:31 wireless/choices.py:480 +#: dcim/choices.py:1202 netbox/preferences.py:31 wireless/choices.py:480 msgid "Auto" msgstr "自動" -#: dcim/choices.py:1185 +#: dcim/choices.py:1213 msgid "Access" msgstr "アクセス" -#: dcim/choices.py:1186 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 +#: dcim/choices.py:1214 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 #: templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "タグ付き" -#: dcim/choices.py:1187 +#: dcim/choices.py:1215 msgid "Tagged (All)" msgstr "タグ付き (全て)" -#: dcim/choices.py:1216 +#: dcim/choices.py:1244 msgid "IEEE Standard" msgstr "IEEE スタンダード" -#: dcim/choices.py:1227 +#: dcim/choices.py:1255 msgid "Passive 24V (2-pair)" msgstr "パッシブ 24V (2 ペア)" -#: dcim/choices.py:1228 +#: dcim/choices.py:1256 msgid "Passive 24V (4-pair)" msgstr "パッシブ 24V (4ペア)" -#: dcim/choices.py:1229 +#: dcim/choices.py:1257 msgid "Passive 48V (2-pair)" msgstr "パッシブ 48V (2 ペア)" -#: dcim/choices.py:1230 +#: dcim/choices.py:1258 msgid "Passive 48V (4-pair)" msgstr "パッシブ 48V (4ペア)" -#: dcim/choices.py:1292 dcim/choices.py:1388 +#: dcim/choices.py:1320 dcim/choices.py:1416 msgid "Copper" msgstr "カッパー" -#: dcim/choices.py:1315 +#: dcim/choices.py:1343 msgid "Fiber Optic" msgstr "光ファイバー" -#: dcim/choices.py:1404 +#: dcim/choices.py:1432 msgid "Fiber" msgstr "ファイバー" -#: dcim/choices.py:1428 dcim/forms/filtersets.py:1138 +#: dcim/choices.py:1456 dcim/forms/filtersets.py:1146 msgid "Connected" msgstr "接続済" -#: dcim/choices.py:1447 +#: dcim/choices.py:1475 msgid "Kilometers" msgstr "キロメートル" -#: dcim/choices.py:1448 templates/dcim/cable_trace.html:65 +#: dcim/choices.py:1476 templates/dcim/cable_trace.html:65 msgid "Meters" msgstr "メートル" -#: dcim/choices.py:1449 +#: dcim/choices.py:1477 msgid "Centimeters" msgstr "センチメートル" -#: dcim/choices.py:1450 +#: dcim/choices.py:1478 msgid "Miles" msgstr "マイル" -#: dcim/choices.py:1451 templates/dcim/cable_trace.html:66 +#: dcim/choices.py:1479 templates/dcim/cable_trace.html:66 msgid "Feet" msgstr "フィート" -#: dcim/choices.py:1467 templates/dcim/device.html:319 +#: dcim/choices.py:1495 templates/dcim/device.html:319 #: templates/dcim/rack.html:152 msgid "Kilograms" msgstr "キログラム" -#: dcim/choices.py:1468 +#: dcim/choices.py:1496 msgid "Grams" msgstr "グラム" -#: dcim/choices.py:1469 templates/dcim/rack.html:153 +#: dcim/choices.py:1497 templates/dcim/rack.html:153 msgid "Pounds" msgstr "ポンド" -#: dcim/choices.py:1470 +#: dcim/choices.py:1498 msgid "Ounces" msgstr "オンス" -#: dcim/choices.py:1516 tenancy/choices.py:17 +#: dcim/choices.py:1544 tenancy/choices.py:17 msgid "Primary" msgstr "プライマリ" -#: dcim/choices.py:1517 +#: dcim/choices.py:1545 msgid "Redundant" msgstr "冗長" -#: dcim/choices.py:1538 +#: dcim/choices.py:1566 msgid "Single phase" msgstr "単相" -#: dcim/choices.py:1539 +#: dcim/choices.py:1567 msgid "Three-phase" msgstr "三相" @@ -2233,30 +2273,30 @@ msgid "Parent location (slug)" msgstr "親の場所 (スラッグ)" #: dcim/filtersets.py:257 dcim/filtersets.py:333 dcim/filtersets.py:432 -#: dcim/filtersets.py:1005 dcim/filtersets.py:1331 dcim/filtersets.py:2101 +#: dcim/filtersets.py:1005 dcim/filtersets.py:1341 dcim/filtersets.py:2111 msgid "Location (ID)" msgstr "ロケーション (ID)" #: dcim/filtersets.py:264 dcim/filtersets.py:340 dcim/filtersets.py:439 -#: dcim/filtersets.py:1337 extras/filtersets.py:494 +#: dcim/filtersets.py:1347 extras/filtersets.py:494 msgid "Location (slug)" msgstr "ロケーション (slug)" #: dcim/filtersets.py:354 dcim/filtersets.py:840 dcim/filtersets.py:942 -#: dcim/filtersets.py:1769 ipam/filtersets.py:381 ipam/filtersets.py:493 +#: dcim/filtersets.py:1779 ipam/filtersets.py:381 ipam/filtersets.py:493 #: ipam/filtersets.py:989 virtualization/filtersets.py:210 msgid "Role (ID)" msgstr "ロール (ID)" #: dcim/filtersets.py:360 dcim/filtersets.py:846 dcim/filtersets.py:948 -#: dcim/filtersets.py:1775 extras/filtersets.py:510 ipam/filtersets.py:387 +#: dcim/filtersets.py:1785 extras/filtersets.py:510 ipam/filtersets.py:387 #: ipam/filtersets.py:499 ipam/filtersets.py:995 #: virtualization/filtersets.py:216 msgid "Role (slug)" msgstr "ロール (slug)" -#: dcim/filtersets.py:389 dcim/filtersets.py:1010 dcim/filtersets.py:1342 -#: dcim/filtersets.py:2163 +#: dcim/filtersets.py:389 dcim/filtersets.py:1010 dcim/filtersets.py:1352 +#: dcim/filtersets.py:2173 msgid "Rack (ID)" msgstr "ラック (ID)" @@ -2271,14 +2311,14 @@ msgid "User (name)" msgstr "ユーザ (名前)" #: dcim/filtersets.py:481 dcim/filtersets.py:620 dcim/filtersets.py:830 -#: dcim/filtersets.py:881 dcim/filtersets.py:921 dcim/filtersets.py:1233 -#: dcim/filtersets.py:1759 +#: dcim/filtersets.py:881 dcim/filtersets.py:921 dcim/filtersets.py:1243 +#: dcim/filtersets.py:1769 msgid "Manufacturer (ID)" msgstr "メーカ (ID)" #: dcim/filtersets.py:487 dcim/filtersets.py:626 dcim/filtersets.py:836 -#: dcim/filtersets.py:887 dcim/filtersets.py:927 dcim/filtersets.py:1239 -#: dcim/filtersets.py:1765 +#: dcim/filtersets.py:887 dcim/filtersets.py:927 dcim/filtersets.py:1249 +#: dcim/filtersets.py:1775 msgid "Manufacturer (slug)" msgstr "メーカ (slug)" @@ -2300,37 +2340,37 @@ msgstr "背面画像がある" #: dcim/filtersets.py:509 dcim/filtersets.py:630 dcim/filtersets.py:1068 #: dcim/forms/filtersets.py:466 dcim/forms/filtersets.py:562 -#: dcim/forms/filtersets.py:776 +#: dcim/forms/filtersets.py:777 msgid "Has console ports" msgstr "コンソールポートがある" #: dcim/filtersets.py:513 dcim/filtersets.py:634 dcim/filtersets.py:1072 #: dcim/forms/filtersets.py:473 dcim/forms/filtersets.py:569 -#: dcim/forms/filtersets.py:783 +#: dcim/forms/filtersets.py:784 msgid "Has console server ports" msgstr "コンソールサーバポートがある" #: dcim/filtersets.py:517 dcim/filtersets.py:638 dcim/filtersets.py:1076 #: dcim/forms/filtersets.py:480 dcim/forms/filtersets.py:576 -#: dcim/forms/filtersets.py:790 +#: dcim/forms/filtersets.py:791 msgid "Has power ports" msgstr "電源ポートがある" #: dcim/filtersets.py:521 dcim/filtersets.py:642 dcim/filtersets.py:1080 #: dcim/forms/filtersets.py:487 dcim/forms/filtersets.py:583 -#: dcim/forms/filtersets.py:797 +#: dcim/forms/filtersets.py:798 msgid "Has power outlets" msgstr "電源コンセントがある" #: dcim/filtersets.py:525 dcim/filtersets.py:646 dcim/filtersets.py:1084 #: dcim/forms/filtersets.py:494 dcim/forms/filtersets.py:590 -#: dcim/forms/filtersets.py:804 +#: dcim/forms/filtersets.py:805 msgid "Has interfaces" msgstr "インタフェースがある" #: dcim/filtersets.py:529 dcim/filtersets.py:650 dcim/filtersets.py:1088 #: dcim/forms/filtersets.py:501 dcim/forms/filtersets.py:597 -#: dcim/forms/filtersets.py:811 +#: dcim/forms/filtersets.py:812 msgid "Has pass-through ports" msgstr "パススルーポートがある" @@ -2346,19 +2386,19 @@ msgstr "デバイスベイがある" msgid "Has inventory items" msgstr "在庫品目がある" -#: dcim/filtersets.py:698 dcim/filtersets.py:937 dcim/filtersets.py:1363 +#: dcim/filtersets.py:698 dcim/filtersets.py:937 dcim/filtersets.py:1373 msgid "Device type (ID)" msgstr "デバイスタイプ (ID)" -#: dcim/filtersets.py:717 dcim/filtersets.py:1244 +#: dcim/filtersets.py:717 dcim/filtersets.py:1254 msgid "Module type (ID)" msgstr "モジュールタイプ (ID)" -#: dcim/filtersets.py:752 dcim/filtersets.py:1514 +#: dcim/filtersets.py:752 dcim/filtersets.py:1524 msgid "Power port (ID)" msgstr "電源ポート (ID)" -#: dcim/filtersets.py:826 dcim/filtersets.py:1755 +#: dcim/filtersets.py:826 dcim/filtersets.py:1765 msgid "Parent inventory item (ID)" msgstr "親在庫品目 (ID)" @@ -2384,8 +2424,8 @@ msgstr "プラットフォーム (ID)" msgid "Platform (slug)" msgstr "プラットフォーム (slug)" -#: dcim/filtersets.py:999 dcim/filtersets.py:1326 dcim/filtersets.py:1853 -#: dcim/filtersets.py:2095 dcim/filtersets.py:2154 +#: dcim/filtersets.py:999 dcim/filtersets.py:1336 dcim/filtersets.py:1863 +#: dcim/filtersets.py:2105 dcim/filtersets.py:2164 msgid "Site name (slug)" msgstr "サイト名 (slug)" @@ -2406,15 +2446,15 @@ msgid "Is full depth" msgstr "奥行きをすべて使うか" #: dcim/filtersets.py:1040 dcim/forms/common.py:18 -#: dcim/forms/filtersets.py:746 dcim/forms/filtersets.py:1283 +#: dcim/forms/filtersets.py:747 dcim/forms/filtersets.py:1291 #: dcim/models/device_components.py:519 virtualization/filtersets.py:230 #: virtualization/filtersets.py:297 virtualization/forms/filtersets.py:172 #: virtualization/forms/filtersets.py:219 msgid "MAC address" msgstr "MAC アドレス" -#: dcim/filtersets.py:1047 dcim/filtersets.py:1201 -#: dcim/forms/filtersets.py:755 dcim/forms/filtersets.py:841 +#: dcim/filtersets.py:1047 dcim/filtersets.py:1211 +#: dcim/forms/filtersets.py:756 dcim/forms/filtersets.py:849 #: virtualization/filtersets.py:234 virtualization/forms/filtersets.py:176 msgid "Has a primary IP" msgstr "プライマリ IP がある" @@ -2435,59 +2475,63 @@ msgstr "バーチャルシャーシのメンバーか" msgid "OOB IP (ID)" msgstr "OOB IP (ID)" -#: dcim/filtersets.py:1184 +#: dcim/filtersets.py:1105 +msgid "Has virtual device context" +msgstr "仮想デバイスコンテキストあり" + +#: dcim/filtersets.py:1194 msgid "VDC (ID)" msgstr "VDC (ID)" -#: dcim/filtersets.py:1189 +#: dcim/filtersets.py:1199 msgid "Device model" msgstr "デバイスモデル" -#: dcim/filtersets.py:1194 ipam/filtersets.py:632 vpn/filtersets.py:102 +#: dcim/filtersets.py:1204 ipam/filtersets.py:632 vpn/filtersets.py:102 #: vpn/filtersets.py:420 msgid "Interface (ID)" msgstr "インタフェース (ID)" -#: dcim/filtersets.py:1250 +#: dcim/filtersets.py:1260 msgid "Module type (model)" msgstr "モジュールタイプ (モデル)" -#: dcim/filtersets.py:1256 +#: dcim/filtersets.py:1266 msgid "Module Bay (ID)" msgstr "モジュールベイ (ID)" -#: dcim/filtersets.py:1260 dcim/filtersets.py:1352 ipam/filtersets.py:611 +#: dcim/filtersets.py:1270 dcim/filtersets.py:1362 ipam/filtersets.py:611 #: ipam/filtersets.py:851 ipam/filtersets.py:1075 #: virtualization/filtersets.py:161 vpn/filtersets.py:398 msgid "Device (ID)" msgstr "デバイス (ID)" -#: dcim/filtersets.py:1348 +#: dcim/filtersets.py:1358 msgid "Rack (name)" msgstr "ラック (名前)" -#: dcim/filtersets.py:1358 ipam/filtersets.py:606 ipam/filtersets.py:846 +#: dcim/filtersets.py:1368 ipam/filtersets.py:606 ipam/filtersets.py:846 #: ipam/filtersets.py:1081 vpn/filtersets.py:393 msgid "Device (name)" msgstr "デバイス (名前)" -#: dcim/filtersets.py:1369 +#: dcim/filtersets.py:1379 msgid "Device type (model)" msgstr "デバイスタイプ (モデル)" -#: dcim/filtersets.py:1374 +#: dcim/filtersets.py:1384 msgid "Device role (ID)" msgstr "デバイスロール (ID)" -#: dcim/filtersets.py:1380 +#: dcim/filtersets.py:1390 msgid "Device role (slug)" msgstr "デバイスロール (slug)" -#: dcim/filtersets.py:1385 +#: dcim/filtersets.py:1395 msgid "Virtual Chassis (ID)" msgstr "バーチャルシャーシ (ID)" -#: dcim/filtersets.py:1391 dcim/forms/filtersets.py:107 +#: dcim/filtersets.py:1401 dcim/forms/filtersets.py:107 #: dcim/tables/devices.py:211 netbox/navigation/menu.py:66 #: templates/dcim/device.html:119 templates/dcim/device_edit.html:93 #: templates/dcim/virtualchassis.html:20 @@ -2496,37 +2540,37 @@ msgstr "バーチャルシャーシ (ID)" msgid "Virtual Chassis" msgstr "バーチャルシャーシ" -#: dcim/filtersets.py:1411 +#: dcim/filtersets.py:1421 msgid "Module (ID)" msgstr "モジュール (ID)" -#: dcim/filtersets.py:1418 +#: dcim/filtersets.py:1428 msgid "Cable (ID)" msgstr "ケーブル (ID)" -#: dcim/filtersets.py:1527 ipam/forms/bulk_import.py:188 +#: dcim/filtersets.py:1537 ipam/forms/bulk_import.py:188 #: vpn/forms/bulk_import.py:308 msgid "Assigned VLAN" msgstr "割当 VLAN" -#: dcim/filtersets.py:1531 +#: dcim/filtersets.py:1541 msgid "Assigned VID" msgstr "割当 VID" -#: dcim/filtersets.py:1536 dcim/forms/bulk_edit.py:1382 -#: dcim/forms/bulk_import.py:836 dcim/forms/filtersets.py:1326 +#: dcim/filtersets.py:1546 dcim/forms/bulk_edit.py:1382 +#: dcim/forms/bulk_import.py:836 dcim/forms/filtersets.py:1334 #: dcim/forms/model_forms.py:1322 dcim/models/device_components.py:712 -#: dcim/tables/devices.py:618 ipam/filtersets.py:316 ipam/filtersets.py:327 +#: dcim/tables/devices.py:622 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:227 ipam/forms/bulk_edit.py:282 #: ipam/forms/bulk_edit.py:324 ipam/forms/bulk_import.py:156 #: ipam/forms/bulk_import.py:242 ipam/forms/bulk_import.py:278 -#: ipam/forms/filtersets.py:67 ipam/forms/filtersets.py:171 -#: ipam/forms/filtersets.py:302 ipam/forms/model_forms.py:60 +#: ipam/forms/filtersets.py:67 ipam/forms/filtersets.py:172 +#: ipam/forms/filtersets.py:309 ipam/forms/model_forms.py:60 #: ipam/forms/model_forms.py:200 ipam/forms/model_forms.py:245 -#: ipam/forms/model_forms.py:298 ipam/forms/model_forms.py:420 -#: ipam/forms/model_forms.py:434 ipam/forms/model_forms.py:448 -#: ipam/models/ip.py:232 ipam/models/ip.py:511 ipam/models/ip.py:719 +#: ipam/forms/model_forms.py:298 ipam/forms/model_forms.py:429 +#: ipam/forms/model_forms.py:443 ipam/forms/model_forms.py:457 +#: ipam/models/ip.py:233 ipam/models/ip.py:512 ipam/models/ip.py:720 #: ipam/models/vrfs.py:62 ipam/tables/ip.py:241 ipam/tables/ip.py:306 #: ipam/tables/ip.py:356 ipam/tables/ip.py:445 #: templates/dcim/interface.html:133 templates/ipam/ipaddress.html:18 @@ -2542,18 +2586,18 @@ msgstr "割当 VID" msgid "VRF" msgstr "VRF" -#: dcim/filtersets.py:1542 ipam/filtersets.py:322 ipam/filtersets.py:333 +#: dcim/filtersets.py:1552 ipam/filtersets.py:322 ipam/filtersets.py:333 #: ipam/filtersets.py:489 ipam/filtersets.py:590 ipam/filtersets.py:601 msgid "VRF (RD)" msgstr "VRF (RD)" -#: dcim/filtersets.py:1547 ipam/filtersets.py:1016 vpn/filtersets.py:361 +#: dcim/filtersets.py:1557 ipam/filtersets.py:1016 vpn/filtersets.py:361 msgid "L2VPN (ID)" msgstr "L2VPN (ID)" -#: dcim/filtersets.py:1553 dcim/forms/filtersets.py:1331 -#: dcim/tables/devices.py:566 ipam/filtersets.py:1022 -#: ipam/forms/filtersets.py:518 ipam/tables/vlans.py:133 +#: dcim/filtersets.py:1563 dcim/forms/filtersets.py:1339 +#: dcim/tables/devices.py:570 ipam/filtersets.py:1022 +#: ipam/forms/filtersets.py:525 ipam/tables/vlans.py:133 #: templates/dcim/interface.html:93 templates/ipam/vlan.html:66 #: templates/vpn/l2vpntermination.html:12 #: virtualization/forms/filtersets.py:229 vpn/forms/bulk_import.py:280 @@ -2562,82 +2606,82 @@ msgstr "L2VPN (ID)" msgid "L2VPN" msgstr "L2VPN" -#: dcim/filtersets.py:1585 +#: dcim/filtersets.py:1595 msgid "Virtual Chassis Interfaces for Device" msgstr "バーチャルシャーシインタフェース" -#: dcim/filtersets.py:1590 +#: dcim/filtersets.py:1600 msgid "Virtual Chassis Interfaces for Device (ID)" msgstr "バーチャルシャーシインタフェース (ID)" -#: dcim/filtersets.py:1594 +#: dcim/filtersets.py:1604 msgid "Kind of interface" msgstr "インタフェースの種類" -#: dcim/filtersets.py:1599 virtualization/filtersets.py:289 +#: dcim/filtersets.py:1609 virtualization/filtersets.py:289 msgid "Parent interface (ID)" msgstr "親インタフェース (ID)" -#: dcim/filtersets.py:1604 virtualization/filtersets.py:294 +#: dcim/filtersets.py:1614 virtualization/filtersets.py:294 msgid "Bridged interface (ID)" msgstr "ブリッジインタフェース (ID)" -#: dcim/filtersets.py:1609 +#: dcim/filtersets.py:1619 msgid "LAG interface (ID)" msgstr "LAG インタフェース (ID)" -#: dcim/filtersets.py:1636 dcim/filtersets.py:1648 -#: dcim/forms/filtersets.py:1243 dcim/forms/model_forms.py:1634 +#: dcim/filtersets.py:1646 dcim/filtersets.py:1658 +#: dcim/forms/filtersets.py:1251 dcim/forms/model_forms.py:1634 #: templates/dcim/virtualdevicecontext.html:15 msgid "Virtual Device Context" msgstr "仮想デバイスコンテキスト" -#: dcim/filtersets.py:1642 +#: dcim/filtersets.py:1652 msgid "Virtual Device Context (Identifier)" msgstr "仮想デバイスコンテキスト (識別子)" -#: dcim/filtersets.py:1653 templates/wireless/wirelesslan.html:11 +#: dcim/filtersets.py:1663 templates/wireless/wirelesslan.html:11 #: wireless/forms/model_forms.py:53 msgid "Wireless LAN" msgstr "無線 LAN" -#: dcim/filtersets.py:1657 dcim/tables/devices.py:605 +#: dcim/filtersets.py:1667 dcim/tables/devices.py:609 msgid "Wireless link" msgstr "無線リンク" -#: dcim/filtersets.py:1727 +#: dcim/filtersets.py:1737 msgid "Installed module (ID)" msgstr "インストール済みモジュール (ID)" -#: dcim/filtersets.py:1738 +#: dcim/filtersets.py:1748 msgid "Installed device (ID)" msgstr "インストール済みデバイス (ID)" -#: dcim/filtersets.py:1744 +#: dcim/filtersets.py:1754 msgid "Installed device (name)" msgstr "インストール済みデバイス (名前)" -#: dcim/filtersets.py:1810 +#: dcim/filtersets.py:1820 msgid "Master (ID)" msgstr "マスター (ID)" -#: dcim/filtersets.py:1816 +#: dcim/filtersets.py:1826 msgid "Master (name)" msgstr "マスター (名前)" -#: dcim/filtersets.py:1858 tenancy/filtersets.py:246 +#: dcim/filtersets.py:1868 tenancy/filtersets.py:246 msgid "Tenant (ID)" msgstr "テナント (ID)" -#: dcim/filtersets.py:1864 extras/filtersets.py:570 tenancy/filtersets.py:252 +#: dcim/filtersets.py:1874 extras/filtersets.py:570 tenancy/filtersets.py:252 msgid "Tenant (slug)" msgstr "テナント (slug)" -#: dcim/filtersets.py:1900 dcim/forms/filtersets.py:988 +#: dcim/filtersets.py:1910 dcim/forms/filtersets.py:996 msgid "Unterminated" msgstr "未終端" -#: dcim/filtersets.py:2158 +#: dcim/filtersets.py:2168 msgid "Power panel (ID)" msgstr "電源盤 (ID)" @@ -2645,13 +2689,13 @@ msgstr "電源盤 (ID)" #: extras/forms/model_forms.py:443 extras/forms/model_forms.py:495 #: netbox/forms/base.py:84 netbox/forms/mixins.py:81 #: netbox/tables/columns.py:458 -#: templates/circuits/inc/circuit_termination.html:118 +#: 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 msgid "Tags" msgstr "タグ" -#: dcim/forms/bulk_create.py:112 dcim/forms/filtersets.py:1388 +#: dcim/forms/bulk_create.py:112 dcim/forms/filtersets.py:1396 #: dcim/forms/model_forms.py:431 dcim/forms/model_forms.py:486 #: dcim/forms/object_create.py:197 dcim/forms/object_create.py:353 #: dcim/tables/devices.py:170 dcim/tables/devices.py:702 @@ -2671,7 +2715,7 @@ msgstr "英数字の範囲が使用できます。(作成する名前の数と #: dcim/forms/bulk_edit.py:116 dcim/forms/bulk_import.py:99 #: dcim/forms/model_forms.py:116 dcim/tables/sites.py:89 #: ipam/filtersets.py:985 ipam/forms/bulk_edit.py:531 -#: ipam/forms/bulk_import.py:444 ipam/forms/model_forms.py:517 +#: ipam/forms/bulk_import.py:444 ipam/forms/model_forms.py:526 #: ipam/tables/fhrp.py:67 ipam/tables/vlans.py:118 ipam/tables/vlans.py:221 #: templates/dcim/interface.html:284 templates/dcim/site.html:36 #: templates/ipam/inc/panels/fhrp_groups.html:23 templates/ipam/vlan.html:27 @@ -2718,7 +2762,7 @@ msgstr "タイムゾーン" #: dcim/forms/bulk_edit.py:267 dcim/forms/bulk_edit.py:1160 #: dcim/forms/bulk_edit.py:1548 dcim/forms/bulk_import.py:207 #: dcim/forms/bulk_import.py:1021 dcim/forms/filtersets.py:300 -#: dcim/forms/filtersets.py:705 dcim/forms/filtersets.py:1418 +#: dcim/forms/filtersets.py:706 dcim/forms/filtersets.py:1426 #: dcim/forms/model_forms.py:219 dcim/forms/model_forms.py:1015 #: dcim/forms/model_forms.py:1454 dcim/forms/object_import.py:181 #: dcim/tables/devices.py:174 dcim/tables/devices.py:810 @@ -2728,10 +2772,10 @@ msgstr "タイムゾーン" #: ipam/forms/bulk_edit.py:343 ipam/forms/bulk_edit.py:549 #: ipam/forms/bulk_import.py:196 ipam/forms/bulk_import.py:261 #: ipam/forms/bulk_import.py:297 ipam/forms/bulk_import.py:463 -#: ipam/forms/filtersets.py:236 ipam/forms/filtersets.py:282 -#: ipam/forms/filtersets.py:353 ipam/forms/filtersets.py:509 +#: ipam/forms/filtersets.py:237 ipam/forms/filtersets.py:289 +#: ipam/forms/filtersets.py:360 ipam/forms/filtersets.py:516 #: ipam/forms/model_forms.py:186 ipam/forms/model_forms.py:219 -#: ipam/forms/model_forms.py:248 ipam/forms/model_forms.py:680 +#: ipam/forms/model_forms.py:248 ipam/forms/model_forms.py:689 #: ipam/tables/ip.py:257 ipam/tables/ip.py:313 ipam/tables/ip.py:363 #: ipam/tables/vlans.py:126 ipam/tables/vlans.py:230 #: templates/dcim/device.html:179 @@ -2764,8 +2808,8 @@ msgid "Serial Number" msgstr "シリアル番号" #: dcim/forms/bulk_edit.py:277 dcim/forms/filtersets.py:307 -#: dcim/forms/filtersets.py:741 dcim/forms/filtersets.py:878 -#: dcim/forms/filtersets.py:1430 +#: dcim/forms/filtersets.py:742 dcim/forms/filtersets.py:886 +#: dcim/forms/filtersets.py:1438 msgid "Asset tag" msgstr "アセットタグ" @@ -2836,14 +2880,14 @@ msgstr "重量単位" #: dcim/forms/bulk_import.py:498 dcim/forms/bulk_import.py:1309 #: dcim/forms/bulk_import.py:1313 dcim/forms/filtersets.py:102 #: dcim/forms/filtersets.py:340 dcim/forms/filtersets.py:354 -#: dcim/forms/filtersets.py:392 dcim/forms/filtersets.py:700 -#: dcim/forms/filtersets.py:946 dcim/forms/filtersets.py:1078 +#: dcim/forms/filtersets.py:392 dcim/forms/filtersets.py:701 +#: dcim/forms/filtersets.py:954 dcim/forms/filtersets.py:1086 #: dcim/forms/model_forms.py:226 dcim/forms/model_forms.py:248 #: dcim/forms/model_forms.py:422 dcim/forms/model_forms.py:700 #: dcim/forms/object_create.py:400 dcim/tables/devices.py:166 #: dcim/tables/power.py:70 dcim/tables/racks.py:148 -#: ipam/forms/bulk_edit.py:465 ipam/forms/filtersets.py:435 -#: ipam/forms/model_forms.py:601 templates/dcim/device.html:29 +#: ipam/forms/bulk_edit.py:465 ipam/forms/filtersets.py:442 +#: ipam/forms/model_forms.py:610 templates/dcim/device.html:29 #: 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 @@ -2855,7 +2899,7 @@ msgstr "ラック" #: dcim/forms/bulk_edit.py:349 dcim/forms/bulk_edit.py:628 #: dcim/forms/filtersets.py:248 dcim/forms/filtersets.py:333 #: dcim/forms/filtersets.py:416 dcim/forms/filtersets.py:543 -#: dcim/forms/filtersets.py:651 dcim/forms/filtersets.py:853 +#: dcim/forms/filtersets.py:651 dcim/forms/filtersets.py:861 #: dcim/forms/model_forms.py:610 dcim/forms/model_forms.py:1524 #: templates/dcim/device_edit.html:20 msgid "Hardware" @@ -2868,8 +2912,8 @@ msgstr "ハードウェア" #: dcim/forms/bulk_import.py:353 dcim/forms/bulk_import.py:395 #: dcim/forms/bulk_import.py:431 dcim/forms/bulk_import.py:1027 #: dcim/forms/filtersets.py:429 dcim/forms/filtersets.py:554 -#: dcim/forms/filtersets.py:630 dcim/forms/filtersets.py:710 -#: dcim/forms/filtersets.py:858 dcim/forms/filtersets.py:1423 +#: dcim/forms/filtersets.py:630 dcim/forms/filtersets.py:711 +#: dcim/forms/filtersets.py:866 dcim/forms/filtersets.py:1431 #: dcim/forms/model_forms.py:281 dcim/forms/model_forms.py:293 #: dcim/forms/model_forms.py:339 dcim/forms/model_forms.py:379 #: dcim/forms/model_forms.py:1020 dcim/forms/model_forms.py:1459 @@ -2903,7 +2947,7 @@ msgstr "ラック利用率に含めない" #: dcim/forms/bulk_edit.py:431 dcim/forms/bulk_edit.py:603 #: dcim/forms/bulk_import.py:525 dcim/forms/filtersets.py:446 -#: dcim/forms/filtersets.py:732 templates/dcim/device.html:97 +#: dcim/forms/filtersets.py:733 templates/dcim/device.html:97 #: templates/dcim/devicetype.html:65 msgid "Airflow" msgstr "エアフロー" @@ -2930,7 +2974,7 @@ msgstr "VMのロール" #: dcim/forms/bulk_import.py:380 dcim/forms/bulk_import.py:402 #: dcim/forms/bulk_import.py:406 dcim/forms/bulk_import.py:531 #: dcim/forms/bulk_import.py:535 dcim/forms/filtersets.py:619 -#: dcim/forms/filtersets.py:635 dcim/forms/filtersets.py:751 +#: dcim/forms/filtersets.py:635 dcim/forms/filtersets.py:752 #: dcim/forms/model_forms.py:358 dcim/forms/model_forms.py:384 #: dcim/forms/model_forms.py:495 virtualization/forms/bulk_import.py:132 #: virtualization/forms/bulk_import.py:133 @@ -2952,7 +2996,7 @@ msgid "Device role" msgstr "デバイスロール" #: dcim/forms/bulk_edit.py:593 dcim/forms/bulk_import.py:443 -#: dcim/forms/filtersets.py:724 dcim/forms/model_forms.py:394 +#: dcim/forms/filtersets.py:725 dcim/forms/model_forms.py:394 #: dcim/forms/model_forms.py:456 dcim/tables/devices.py:187 #: extras/filtersets.py:515 templates/dcim/device.html:183 #: templates/dcim/platform.html:26 @@ -2974,28 +3018,28 @@ msgstr "プラットフォーム" #: dcim/forms/bulk_import.py:956 dcim/forms/bulk_import.py:968 #: dcim/forms/bulk_import.py:1016 dcim/forms/bulk_import.py:1373 #: dcim/forms/connections.py:24 dcim/forms/filtersets.py:129 -#: dcim/forms/filtersets.py:832 dcim/forms/filtersets.py:962 -#: dcim/forms/filtersets.py:1152 dcim/forms/filtersets.py:1174 -#: dcim/forms/filtersets.py:1196 dcim/forms/filtersets.py:1213 -#: dcim/forms/filtersets.py:1233 dcim/forms/filtersets.py:1341 -#: dcim/forms/filtersets.py:1363 dcim/forms/filtersets.py:1384 -#: dcim/forms/filtersets.py:1399 dcim/forms/filtersets.py:1413 -#: dcim/forms/filtersets.py:1476 dcim/forms/filtersets.py:1500 -#: dcim/forms/filtersets.py:1524 dcim/forms/model_forms.py:573 +#: dcim/forms/filtersets.py:840 dcim/forms/filtersets.py:970 +#: dcim/forms/filtersets.py:1160 dcim/forms/filtersets.py:1182 +#: dcim/forms/filtersets.py:1204 dcim/forms/filtersets.py:1221 +#: dcim/forms/filtersets.py:1241 dcim/forms/filtersets.py:1349 +#: dcim/forms/filtersets.py:1371 dcim/forms/filtersets.py:1392 +#: dcim/forms/filtersets.py:1407 dcim/forms/filtersets.py:1421 +#: dcim/forms/filtersets.py:1484 dcim/forms/filtersets.py:1508 +#: dcim/forms/filtersets.py:1532 dcim/forms/model_forms.py:573 #: dcim/forms/model_forms.py:794 dcim/forms/model_forms.py:1153 #: dcim/forms/model_forms.py:1608 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:290 -#: dcim/tables/devices.py:355 dcim/tables/devices.py:399 -#: dcim/tables/devices.py:444 dcim/tables/devices.py:498 -#: dcim/tables/devices.py:590 dcim/tables/devices.py:692 +#: dcim/tables/devices.py:359 dcim/tables/devices.py:403 +#: dcim/tables/devices.py:448 dcim/tables/devices.py:502 +#: dcim/tables/devices.py:594 dcim/tables/devices.py:692 #: dcim/tables/devices.py:752 dcim/tables/devices.py:802 #: dcim/tables/devices.py:862 dcim/tables/devices.py:914 #: dcim/tables/devices.py:1040 dcim/tables/modules.py:52 #: extras/forms/filtersets.py:330 ipam/forms/bulk_import.py:303 -#: ipam/forms/bulk_import.py:489 ipam/forms/filtersets.py:551 -#: ipam/forms/model_forms.py:317 ipam/forms/model_forms.py:716 -#: ipam/forms/model_forms.py:749 ipam/forms/model_forms.py:775 +#: ipam/forms/bulk_import.py:489 ipam/forms/filtersets.py:558 +#: ipam/forms/model_forms.py:317 ipam/forms/model_forms.py:725 +#: ipam/forms/model_forms.py:758 ipam/forms/model_forms.py:784 #: ipam/tables/vlans.py:176 templates/dcim/consoleport.html:20 #: templates/dcim/consoleserverport.html:20 templates/dcim/device.html:14 #: templates/dcim/device.html:128 templates/dcim/device_edit.html:10 @@ -3050,13 +3094,13 @@ msgstr "モジュールタイプ" msgid "Label" msgstr "ラベル" -#: dcim/forms/bulk_edit.py:706 dcim/forms/filtersets.py:979 +#: dcim/forms/bulk_edit.py:706 dcim/forms/filtersets.py:987 #: templates/dcim/cable.html:50 msgid "Length" msgstr "長さ" #: dcim/forms/bulk_edit.py:711 dcim/forms/bulk_import.py:1174 -#: dcim/forms/bulk_import.py:1177 dcim/forms/filtersets.py:983 +#: dcim/forms/bulk_import.py:1177 dcim/forms/filtersets.py:991 msgid "Length unit" msgstr "長さの単位" @@ -3065,41 +3109,34 @@ msgid "Domain" msgstr "ドメイン" #: dcim/forms/bulk_edit.py:803 dcim/forms/bulk_import.py:1296 -#: dcim/forms/filtersets.py:1069 dcim/forms/model_forms.py:695 +#: dcim/forms/filtersets.py:1077 dcim/forms/model_forms.py:695 msgid "Power panel" msgstr "電源盤" #: dcim/forms/bulk_edit.py:825 dcim/forms/bulk_import.py:1332 -#: dcim/forms/filtersets.py:1091 templates/dcim/powerfeed.html:83 +#: dcim/forms/filtersets.py:1099 templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "供給電源" #: dcim/forms/bulk_edit.py:831 dcim/forms/bulk_import.py:1337 -#: dcim/forms/filtersets.py:1096 templates/dcim/powerfeed.html:95 +#: dcim/forms/filtersets.py:1104 templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "電力相" -#: dcim/forms/bulk_edit.py:837 dcim/forms/filtersets.py:1101 +#: dcim/forms/bulk_edit.py:837 dcim/forms/filtersets.py:1109 #: templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "電圧" -#: dcim/forms/bulk_edit.py:841 dcim/forms/filtersets.py:1105 +#: dcim/forms/bulk_edit.py:841 dcim/forms/filtersets.py:1113 #: templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "アンペア数" -#: dcim/forms/bulk_edit.py:845 dcim/forms/filtersets.py:1109 +#: dcim/forms/bulk_edit.py:845 dcim/forms/filtersets.py:1117 msgid "Max utilization" msgstr "最大使用率" -#: dcim/forms/bulk_edit.py:849 dcim/forms/bulk_edit.py:1208 -#: dcim/forms/bulk_edit.py:1225 dcim/forms/bulk_edit.py:1242 -#: dcim/forms/bulk_edit.py:1260 dcim/forms/bulk_edit.py:1348 -#: dcim/forms/bulk_edit.py:1487 dcim/forms/bulk_edit.py:1504 -msgid "Mark connected" -msgstr "接続済みにする" - #: dcim/forms/bulk_edit.py:934 msgid "Maximum draw" msgstr "最大消費電力" @@ -3133,7 +3170,7 @@ msgid "Management only" msgstr "管理のみ" #: dcim/forms/bulk_edit.py:1037 dcim/forms/bulk_edit.py:1339 -#: dcim/forms/bulk_import.py:821 dcim/forms/filtersets.py:1292 +#: dcim/forms/bulk_import.py:821 dcim/forms/filtersets.py:1300 #: dcim/forms/object_import.py:90 #: dcim/models/device_component_templates.py:411 #: dcim/models/device_components.py:671 @@ -3141,14 +3178,14 @@ msgid "PoE mode" msgstr "PoE モード" #: dcim/forms/bulk_edit.py:1043 dcim/forms/bulk_edit.py:1345 -#: dcim/forms/bulk_import.py:827 dcim/forms/filtersets.py:1297 +#: dcim/forms/bulk_import.py:827 dcim/forms/filtersets.py:1305 #: dcim/forms/object_import.py:95 #: dcim/models/device_component_templates.py:417 #: dcim/models/device_components.py:677 msgid "PoE type" msgstr "PoE タイプ" -#: dcim/forms/bulk_edit.py:1049 dcim/forms/filtersets.py:1302 +#: dcim/forms/bulk_edit.py:1049 dcim/forms/filtersets.py:1310 #: dcim/forms/object_import.py:100 msgid "Wireless role" msgstr "無線ロール" @@ -3173,10 +3210,10 @@ msgid "Virtual device contexts" msgstr "仮想デバイスコンテキスト" #: dcim/forms/bulk_edit.py:1324 dcim/forms/bulk_import.py:659 -#: dcim/forms/bulk_import.py:685 dcim/forms/filtersets.py:1161 -#: dcim/forms/filtersets.py:1183 dcim/forms/filtersets.py:1256 -#: dcim/tables/devices.py:602 -#: templates/circuits/inc/circuit_termination.html:93 +#: dcim/forms/bulk_import.py:685 dcim/forms/filtersets.py:1169 +#: dcim/forms/filtersets.py:1191 dcim/forms/filtersets.py:1264 +#: dcim/tables/devices.py:606 +#: templates/circuits/inc/circuit_termination_fields.html:67 #: templates/dcim/consoleport.html:40 templates/dcim/consoleserverport.html:40 msgid "Speed" msgstr "速度" @@ -3193,20 +3230,20 @@ msgid "Mode" msgstr "モード" #: dcim/forms/bulk_edit.py:1361 dcim/forms/model_forms.py:1299 -#: ipam/forms/bulk_import.py:177 ipam/forms/filtersets.py:498 +#: ipam/forms/bulk_import.py:177 ipam/forms/filtersets.py:505 #: ipam/models/vlans.py:84 virtualization/forms/bulk_edit.py:240 #: virtualization/forms/model_forms.py:321 msgid "VLAN group" msgstr "VLAN グループ" #: dcim/forms/bulk_edit.py:1369 dcim/forms/model_forms.py:1304 -#: dcim/tables/devices.py:575 virtualization/forms/bulk_edit.py:248 +#: dcim/tables/devices.py:579 virtualization/forms/bulk_edit.py:248 #: virtualization/forms/model_forms.py:326 msgid "Untagged VLAN" msgstr "タグなし VLAN" #: dcim/forms/bulk_edit.py:1377 dcim/forms/model_forms.py:1313 -#: dcim/tables/devices.py:581 virtualization/forms/bulk_edit.py:256 +#: dcim/tables/devices.py:585 virtualization/forms/bulk_edit.py:256 #: virtualization/forms/model_forms.py:335 msgid "Tagged VLANs" msgstr "タグ付き VLAN" @@ -3216,12 +3253,12 @@ msgid "Wireless LAN group" msgstr "無線 LAN グループ" #: dcim/forms/bulk_edit.py:1392 dcim/forms/model_forms.py:1291 -#: dcim/tables/devices.py:611 netbox/navigation/menu.py:133 +#: dcim/tables/devices.py:615 netbox/navigation/menu.py:133 #: templates/dcim/interface.html:280 wireless/tables/wirelesslan.py:24 msgid "Wireless LANs" msgstr "無線 LAN" -#: dcim/forms/bulk_edit.py:1401 dcim/forms/filtersets.py:1229 +#: dcim/forms/bulk_edit.py:1401 dcim/forms/filtersets.py:1237 #: dcim/forms/model_forms.py:1334 ipam/forms/bulk_edit.py:271 #: ipam/forms/bulk_edit.py:362 ipam/forms/filtersets.py:169 #: templates/dcim/interface.html:122 templates/ipam/prefix.html:95 @@ -3234,7 +3271,7 @@ msgstr "アドレス" msgid "Operation" msgstr "オペレーション" -#: dcim/forms/bulk_edit.py:1403 dcim/forms/filtersets.py:1230 +#: dcim/forms/bulk_edit.py:1403 dcim/forms/filtersets.py:1238 #: dcim/forms/model_forms.py:932 dcim/forms/model_forms.py:1337 msgid "PoE" msgstr "PoE" @@ -3390,8 +3427,8 @@ msgstr "バーチャルシャーシ" #: dcim/forms/bulk_import.py:462 dcim/forms/model_forms.py:465 #: dcim/tables/devices.py:207 extras/filtersets.py:548 #: extras/forms/filtersets.py:331 ipam/forms/bulk_edit.py:479 -#: ipam/forms/filtersets.py:408 ipam/forms/filtersets.py:452 -#: ipam/forms/model_forms.py:618 templates/dcim/device.html:231 +#: ipam/forms/filtersets.py:415 ipam/forms/filtersets.py:459 +#: ipam/forms/model_forms.py:627 templates/dcim/device.html:231 #: templates/virtualization/cluster.html:10 #: templates/virtualization/virtualmachine.html:88 #: templates/virtualization/virtualmachine.html:97 @@ -3530,7 +3567,7 @@ msgstr "VDC 名をコンマで区切り、二重引用符で囲みます。例:" msgid "Physical medium" msgstr "物理媒体" -#: dcim/forms/bulk_import.py:813 dcim/forms/filtersets.py:1263 +#: dcim/forms/bulk_import.py:813 dcim/forms/filtersets.py:1271 msgid "Duplex" msgstr "デュプレックス" @@ -3548,8 +3585,8 @@ msgstr "IEEE 802.1Q モード(L2 インタフェース用)" #: dcim/forms/bulk_import.py:840 ipam/forms/bulk_import.py:160 #: ipam/forms/bulk_import.py:246 ipam/forms/bulk_import.py:282 -#: ipam/forms/filtersets.py:200 ipam/forms/filtersets.py:270 -#: ipam/forms/filtersets.py:329 virtualization/forms/bulk_import.py:175 +#: ipam/forms/filtersets.py:201 ipam/forms/filtersets.py:277 +#: ipam/forms/filtersets.py:336 virtualization/forms/bulk_import.py:175 msgid "Assigned VRF" msgstr "割当 VRF" @@ -3772,29 +3809,33 @@ msgstr "構成要素" msgid "Subdevice role" msgstr "サブデバイスロール" -#: dcim/forms/filtersets.py:718 +#: dcim/forms/filtersets.py:719 msgid "Model" msgstr "モデル" -#: dcim/forms/filtersets.py:762 +#: dcim/forms/filtersets.py:763 msgid "Has an OOB IP" msgstr "OOB IP アドレスを持っている" -#: dcim/forms/filtersets.py:769 +#: dcim/forms/filtersets.py:770 msgid "Virtual chassis member" msgstr "バーチャルシャーシメンバー" -#: dcim/forms/filtersets.py:1121 +#: dcim/forms/filtersets.py:819 +msgid "Has virtual device contexts" +msgstr "仮想デバイスコンテキストがある" + +#: dcim/forms/filtersets.py:1129 msgid "Cabled" msgstr "ケーブル接続済" -#: dcim/forms/filtersets.py:1128 +#: dcim/forms/filtersets.py:1136 msgid "Occupied" msgstr "専有済" -#: dcim/forms/filtersets.py:1153 dcim/forms/filtersets.py:1175 -#: dcim/forms/filtersets.py:1197 dcim/forms/filtersets.py:1214 -#: dcim/forms/filtersets.py:1234 dcim/tables/devices.py:348 +#: dcim/forms/filtersets.py:1161 dcim/forms/filtersets.py:1183 +#: dcim/forms/filtersets.py:1205 dcim/forms/filtersets.py:1222 +#: dcim/forms/filtersets.py:1242 dcim/tables/devices.py:352 #: 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 @@ -3802,40 +3843,40 @@ msgstr "専有済" msgid "Connection" msgstr "接続" -#: dcim/forms/filtersets.py:1246 extras/forms/bulk_edit.py:316 +#: dcim/forms/filtersets.py:1254 extras/forms/bulk_edit.py:316 #: extras/forms/bulk_import.py:242 extras/forms/filtersets.py:476 #: extras/forms/model_forms.py:551 extras/tables/tables.py:512 #: templates/extras/journalentry.html:30 msgid "Kind" msgstr "種類" -#: dcim/forms/filtersets.py:1275 +#: dcim/forms/filtersets.py:1283 msgid "Mgmt only" msgstr "管理のみ" -#: dcim/forms/filtersets.py:1287 dcim/forms/model_forms.py:1327 +#: dcim/forms/filtersets.py:1295 dcim/forms/model_forms.py:1327 #: dcim/models/device_components.py:630 templates/dcim/interface.html:129 msgid "WWN" msgstr "WWN" -#: dcim/forms/filtersets.py:1307 +#: dcim/forms/filtersets.py:1315 msgid "Wireless channel" msgstr "無線チャネル" -#: dcim/forms/filtersets.py:1311 +#: dcim/forms/filtersets.py:1319 msgid "Channel frequency (MHz)" msgstr "チャネル周波数 (MHz)" -#: dcim/forms/filtersets.py:1315 +#: dcim/forms/filtersets.py:1323 msgid "Channel width (MHz)" msgstr "チャネル幅 (MHz)" -#: dcim/forms/filtersets.py:1319 templates/dcim/interface.html:85 +#: dcim/forms/filtersets.py:1327 templates/dcim/interface.html:85 msgid "Transmit power (dBm)" msgstr "送信出力 (dBm)" -#: dcim/forms/filtersets.py:1342 dcim/forms/filtersets.py:1364 -#: dcim/tables/devices.py:320 templates/dcim/cable.html:12 +#: dcim/forms/filtersets.py:1350 dcim/forms/filtersets.py:1372 +#: dcim/tables/devices.py:324 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 @@ -3843,7 +3884,7 @@ msgstr "送信出力 (dBm)" msgid "Cable" msgstr "ケーブル" -#: dcim/forms/filtersets.py:1434 dcim/tables/devices.py:933 +#: dcim/forms/filtersets.py:1442 dcim/tables/devices.py:933 msgid "Discovered" msgstr "自動検出" @@ -3961,7 +4002,7 @@ msgstr "背面ポートテンプレート" #: dcim/tables/connections.py:65 ipam/forms/bulk_import.py:317 #: ipam/forms/model_forms.py:278 ipam/forms/model_forms.py:287 #: ipam/tables/fhrp.py:64 ipam/tables/ip.py:368 ipam/tables/vlans.py:165 -#: templates/circuits/inc/circuit_termination.html:77 +#: 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 @@ -3989,7 +4030,7 @@ msgid "Console Server Port" msgstr "コンソールサーバポート" #: dcim/forms/model_forms.py:1092 dcim/forms/model_forms.py:1530 -#: templates/circuits/inc/circuit_termination.html:78 +#: 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 @@ -3998,7 +4039,7 @@ msgstr "前面ポート" #: dcim/forms/model_forms.py:1093 dcim/forms/model_forms.py:1531 #: dcim/tables/devices.py:705 -#: templates/circuits/inc/circuit_termination.html:79 +#: 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 @@ -4007,7 +4048,7 @@ msgid "Rear Port" msgstr "背面ポート" #: dcim/forms/model_forms.py:1094 dcim/forms/model_forms.py:1532 -#: dcim/tables/connections.py:46 dcim/tables/devices.py:505 +#: dcim/tables/connections.py:46 dcim/tables/devices.py:509 #: templates/dcim/poweroutlet.html:44 templates/dcim/powerport.html:17 msgid "Power Port" msgstr "電源ポート" @@ -5223,7 +5264,7 @@ msgstr "プライマリ IP アドレスは、割当デバイスのインタフ #: dcim/models/mixins.py:15 extras/models/configs.py:41 #: extras/models/models.py:341 extras/models/models.py:550 -#: extras/models/search.py:48 ipam/models/ip.py:193 +#: extras/models/search.py:48 ipam/models/ip.py:194 msgid "weight" msgstr "重量" @@ -5704,28 +5745,37 @@ msgstr "在庫品目" msgid "Module Bay" msgstr "モジュールベイ" -#: dcim/tables/devices.py:326 +#: dcim/tables/devices.py:318 dcim/tables/devicetypes.py:48 +#: dcim/tables/devicetypes.py:140 dcim/views.py:1081 dcim/views.py:2024 +#: netbox/navigation/menu.py:90 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 +msgid "Inventory Items" +msgstr "在庫品目" + +#: dcim/tables/devices.py:330 msgid "Cable Color" msgstr "ケーブル色" -#: dcim/tables/devices.py:332 +#: dcim/tables/devices.py:336 msgid "Link Peers" msgstr "対向" -#: dcim/tables/devices.py:335 +#: dcim/tables/devices.py:339 msgid "Mark Connected" msgstr "接続済みとしてマークする" -#: dcim/tables/devices.py:451 +#: dcim/tables/devices.py:455 msgid "Maximum draw (W)" msgstr "最大電力 (W)" -#: dcim/tables/devices.py:454 +#: dcim/tables/devices.py:458 msgid "Allocated draw (W)" msgstr "割当電力 (W)" -#: dcim/tables/devices.py:554 ipam/forms/model_forms.py:738 -#: ipam/tables/fhrp.py:28 ipam/views.py:596 ipam/views.py:690 +#: dcim/tables/devices.py:558 ipam/forms/model_forms.py:747 +#: ipam/tables/fhrp.py:28 ipam/views.py:602 ipam/views.py:701 #: netbox/navigation/menu.py:145 netbox/navigation/menu.py:147 #: templates/dcim/interface.html:339 templates/ipam/ipaddress_bulk_add.html:15 #: templates/ipam/service.html:40 templates/virtualization/vminterface.html:85 @@ -5733,12 +5783,12 @@ msgstr "割当電力 (W)" msgid "IP Addresses" msgstr "IP アドレス" -#: dcim/tables/devices.py:560 netbox/navigation/menu.py:189 +#: dcim/tables/devices.py:564 netbox/navigation/menu.py:189 #: templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "FHRP グループ" -#: dcim/tables/devices.py:572 templates/dcim/interface.html:89 +#: 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 @@ -5747,24 +5797,15 @@ msgstr "FHRP グループ" msgid "Tunnel" msgstr "トンネル" -#: dcim/tables/devices.py:597 dcim/tables/devicetypes.py:224 +#: dcim/tables/devices.py:601 dcim/tables/devicetypes.py:224 #: templates/dcim/interface.html:65 msgid "Management Only" msgstr "管理のみ" -#: dcim/tables/devices.py:615 +#: dcim/tables/devices.py:619 msgid "VDCs" msgstr "VDC" -#: dcim/tables/devices.py:623 dcim/tables/devicetypes.py:48 -#: dcim/tables/devicetypes.py:140 dcim/views.py:1081 dcim/views.py:2024 -#: netbox/navigation/menu.py:90 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 -msgid "Inventory Items" -msgstr "在庫品目" - #: dcim/tables/devices.py:870 templates/dcim/modulebay.html:49 msgid "Installed Module" msgstr "取付済みモジュール" @@ -5880,7 +5921,7 @@ msgstr "デバイスベイ" msgid "Module Bays" msgstr "モジュールベイ" -#: dcim/tables/power.py:36 netbox/navigation/menu.py:281 +#: dcim/tables/power.py:36 netbox/navigation/menu.py:282 #: templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "電源タップ" @@ -6358,7 +6399,7 @@ msgid "Cluster type (slug)" msgstr "クラスタタイプ (slug)" #: extras/filtersets.py:537 ipam/forms/bulk_edit.py:476 -#: ipam/forms/filtersets.py:457 ipam/forms/model_forms.py:615 +#: ipam/forms/filtersets.py:464 ipam/forms/model_forms.py:624 #: virtualization/forms/filtersets.py:112 msgid "Cluster group" msgstr "クラスタグループ" @@ -6848,7 +6889,7 @@ msgid "Tenants" msgstr "テナント" #: extras/forms/model_forms.py:458 ipam/forms/filtersets.py:142 -#: ipam/forms/filtersets.py:546 ipam/forms/model_forms.py:321 +#: ipam/forms/filtersets.py:553 ipam/forms/model_forms.py:321 #: 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:311 @@ -7627,11 +7668,11 @@ msgstr "脚本" msgid "scripts" msgstr "スクリプト" -#: extras/models/scripts.py:110 +#: extras/models/scripts.py:111 msgid "script module" msgstr "スクリプトモジュール" -#: extras/models/scripts.py:111 +#: extras/models/scripts.py:112 msgid "script modules" msgstr "スクリプトモジュール" @@ -7892,7 +7933,7 @@ msgstr "削除したウィジェット: " msgid "Error deleting widget: " msgstr "ウィジェットの削除中にエラーが発生しました: " -#: extras/views.py:1081 +#: extras/views.py:1101 msgid "Unable to run script: RQ worker process not running." msgstr "スクリプトを実行できません:RQ ワーカープロセスが実行されていません。" @@ -8038,7 +8079,7 @@ msgid "Prefixes which contain this prefix or IP" msgstr "このプレフィックス / IP を含むプレフィックス" #: ipam/filtersets.py:304 ipam/filtersets.py:572 ipam/forms/bulk_edit.py:327 -#: ipam/forms/filtersets.py:195 ipam/forms/filtersets.py:324 +#: ipam/forms/filtersets.py:196 ipam/forms/filtersets.py:331 msgid "Mask length" msgstr "マスクの長さ" @@ -8051,7 +8092,7 @@ msgid "VLAN number (1-4094)" msgstr "VLAN 番号 (1-4094)" #: ipam/filtersets.py:471 ipam/filtersets.py:475 ipam/filtersets.py:567 -#: ipam/forms/model_forms.py:452 templates/tenancy/contact.html:53 +#: ipam/forms/model_forms.py:461 templates/tenancy/contact.html:53 #: tenancy/forms/bulk_edit.py:113 msgid "Address" msgstr "アドレス" @@ -8111,7 +8152,7 @@ msgstr "NAT 内部の IP アドレス (ID)" msgid "IP address (ID)" msgstr "IP アドレス (ID)" -#: ipam/filtersets.py:1102 ipam/models/ip.py:787 +#: ipam/filtersets.py:1102 ipam/models/ip.py:788 msgid "IP address" msgstr "IP アドレス" @@ -8167,7 +8208,7 @@ msgstr "非公開です" #: ipam/forms/filtersets.py:148 ipam/forms/model_forms.py:94 #: ipam/forms/model_forms.py:107 ipam/forms/model_forms.py:129 #: ipam/forms/model_forms.py:147 ipam/models/asns.py:31 -#: ipam/models/asns.py:103 ipam/models/ip.py:70 ipam/models/ip.py:89 +#: 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 @@ -8182,36 +8223,36 @@ msgstr "追加日" msgid "Prefix length" msgstr "プレフィックス長" -#: ipam/forms/bulk_edit.py:253 ipam/forms/filtersets.py:240 +#: ipam/forms/bulk_edit.py:253 ipam/forms/filtersets.py:241 #: templates/ipam/prefix.html:85 msgid "Is a pool" msgstr "プールです" #: ipam/forms/bulk_edit.py:258 ipam/forms/bulk_edit.py:302 -#: ipam/forms/filtersets.py:247 ipam/forms/filtersets.py:286 -#: ipam/models/ip.py:271 ipam/models/ip.py:538 +#: ipam/forms/filtersets.py:248 ipam/forms/filtersets.py:293 +#: ipam/models/ip.py:272 ipam/models/ip.py:539 msgid "Treat as fully utilized" msgstr "すべて使用済として扱う" -#: ipam/forms/bulk_edit.py:350 ipam/models/ip.py:771 +#: ipam/forms/bulk_edit.py:350 ipam/models/ip.py:772 msgid "DNS name" msgstr "DNS ネーム" #: ipam/forms/bulk_edit.py:371 ipam/forms/bulk_edit.py:572 #: ipam/forms/bulk_import.py:393 ipam/forms/bulk_import.py:477 -#: ipam/forms/bulk_import.py:503 ipam/forms/filtersets.py:383 -#: ipam/forms/filtersets.py:530 templates/ipam/fhrpgroup.html:22 +#: ipam/forms/bulk_import.py:503 ipam/forms/filtersets.py:390 +#: ipam/forms/filtersets.py:537 templates/ipam/fhrpgroup.html:22 #: templates/ipam/inc/panels/fhrp_groups.html:24 #: templates/ipam/service.html:32 templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "プロトコル" -#: ipam/forms/bulk_edit.py:378 ipam/forms/filtersets.py:390 +#: ipam/forms/bulk_edit.py:378 ipam/forms/filtersets.py:397 #: ipam/tables/fhrp.py:22 templates/ipam/fhrpgroup.html:26 msgid "Group ID" msgstr "グループ ID" -#: ipam/forms/bulk_edit.py:383 ipam/forms/filtersets.py:395 +#: ipam/forms/bulk_edit.py:383 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 @@ -8219,12 +8260,12 @@ msgstr "グループ ID" msgid "Authentication type" msgstr "認証タイプ" -#: ipam/forms/bulk_edit.py:388 ipam/forms/filtersets.py:399 +#: ipam/forms/bulk_edit.py:388 ipam/forms/filtersets.py:406 msgid "Authentication key" msgstr "認証キー" -#: ipam/forms/bulk_edit.py:405 ipam/forms/filtersets.py:376 -#: ipam/forms/model_forms.py:463 netbox/navigation/menu.py:369 +#: ipam/forms/bulk_edit.py:405 ipam/forms/filtersets.py:383 +#: ipam/forms/model_forms.py:472 netbox/navigation/menu.py:370 #: templates/ipam/fhrpgroup.html:49 #: templates/wireless/inc/authentication_attrs.html:5 #: wireless/forms/bulk_edit.py:91 wireless/forms/bulk_edit.py:138 @@ -8241,11 +8282,11 @@ msgstr "子 VLAN VID の最小値" msgid "Maximum child VLAN VID" msgstr "子 VLAN VID の最大値" -#: ipam/forms/bulk_edit.py:429 ipam/forms/model_forms.py:557 +#: ipam/forms/bulk_edit.py:429 ipam/forms/model_forms.py:566 msgid "Scope type" msgstr "スコープタイプ" -#: ipam/forms/bulk_edit.py:491 ipam/forms/model_forms.py:632 +#: ipam/forms/bulk_edit.py:491 ipam/forms/model_forms.py:641 #: ipam/tables/vlans.py:71 templates/ipam/vlangroup.html:38 msgid "Scope" msgstr "スコープ" @@ -8254,8 +8295,8 @@ msgstr "スコープ" msgid "Site & Group" msgstr "サイトとグループ" -#: ipam/forms/bulk_edit.py:577 ipam/forms/model_forms.py:696 -#: ipam/forms/model_forms.py:728 ipam/tables/services.py:19 +#: ipam/forms/bulk_edit.py:577 ipam/forms/model_forms.py:705 +#: ipam/forms/model_forms.py:737 ipam/tables/services.py:19 #: ipam/tables/services.py:49 templates/ipam/service.html:36 #: templates/ipam/servicetemplate.html:23 msgid "Ports" @@ -8278,15 +8319,15 @@ msgstr "割当 RIR" msgid "VLAN's group (if any)" msgstr "VLAN のグループ (存在する場合)" -#: ipam/forms/bulk_import.py:184 ipam/forms/model_forms.py:216 -#: ipam/models/vlans.py:214 ipam/tables/ip.py:254 -#: 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:101 +#: ipam/forms/bulk_import.py:184 ipam/forms/filtersets.py:256 +#: ipam/forms/model_forms.py:216 ipam/models/vlans.py:214 +#: ipam/tables/ip.py:254 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:101 msgid "VLAN" msgstr "VLAN" @@ -8295,7 +8336,7 @@ msgid "Parent device of assigned interface (if any)" msgstr "割当インタフェースの親デバイス (存在する場合)" #: ipam/forms/bulk_import.py:310 ipam/forms/bulk_import.py:496 -#: ipam/forms/model_forms.py:722 virtualization/filtersets.py:284 +#: ipam/forms/model_forms.py:731 virtualization/filtersets.py:284 #: virtualization/filtersets.py:323 virtualization/forms/bulk_edit.py:200 #: virtualization/forms/bulk_edit.py:326 #: virtualization/forms/bulk_import.py:146 @@ -8397,8 +8438,8 @@ msgstr "VRF によるエクスポート" msgid "Private" msgstr "プライベート" -#: ipam/forms/filtersets.py:105 ipam/forms/filtersets.py:190 -#: ipam/forms/filtersets.py:265 ipam/forms/filtersets.py:319 +#: ipam/forms/filtersets.py:105 ipam/forms/filtersets.py:191 +#: ipam/forms/filtersets.py:272 ipam/forms/filtersets.py:326 msgid "Address family" msgstr "アドレスファミリー" @@ -8414,53 +8455,57 @@ msgstr "開始" msgid "End" msgstr "終了" -#: ipam/forms/filtersets.py:185 +#: ipam/forms/filtersets.py:171 +msgid "VLAN Assignment" +msgstr "VLAN アサイメント" + +#: ipam/forms/filtersets.py:186 msgid "Search within" msgstr "範囲内を検索" -#: ipam/forms/filtersets.py:206 ipam/forms/filtersets.py:335 +#: ipam/forms/filtersets.py:207 ipam/forms/filtersets.py:342 msgid "Present in VRF" msgstr "VRF 内に存在する" -#: ipam/forms/filtersets.py:304 +#: ipam/forms/filtersets.py:311 msgid "Device/VM" msgstr "デバイス/VM" -#: ipam/forms/filtersets.py:314 +#: ipam/forms/filtersets.py:321 msgid "Parent Prefix" msgstr "親プレフィックス" -#: ipam/forms/filtersets.py:340 +#: ipam/forms/filtersets.py:347 msgid "Assigned Device" msgstr "割当デバイス" -#: ipam/forms/filtersets.py:345 +#: ipam/forms/filtersets.py:352 msgid "Assigned VM" msgstr "割当VM" -#: ipam/forms/filtersets.py:359 +#: ipam/forms/filtersets.py:366 msgid "Assigned to an interface" msgstr "インタフェースに割当済" -#: ipam/forms/filtersets.py:366 templates/ipam/ipaddress.html:51 +#: ipam/forms/filtersets.py:373 templates/ipam/ipaddress.html:51 msgid "DNS Name" msgstr "DNS名" -#: ipam/forms/filtersets.py:409 ipam/forms/filtersets.py:513 +#: ipam/forms/filtersets.py:416 ipam/forms/filtersets.py:520 #: ipam/models/vlans.py:156 templates/ipam/vlan.html:31 msgid "VLAN ID" msgstr "VLAN ID" -#: ipam/forms/filtersets.py:441 +#: ipam/forms/filtersets.py:448 msgid "Minimum VID" msgstr "最小 VID" -#: ipam/forms/filtersets.py:447 +#: ipam/forms/filtersets.py:454 msgid "Maximum VID" msgstr "VID の最大値" -#: ipam/forms/filtersets.py:556 ipam/forms/model_forms.py:318 -#: ipam/forms/model_forms.py:750 ipam/forms/model_forms.py:776 +#: ipam/forms/filtersets.py:563 ipam/forms/model_forms.py:318 +#: ipam/forms/model_forms.py:759 ipam/forms/model_forms.py:785 #: ipam/tables/vlans.py:191 templates/virtualization/virtualdisk.html:21 #: templates/virtualization/virtualmachine.html:12 #: templates/virtualization/vminterface.html:21 @@ -8498,7 +8543,7 @@ msgid "IP Range" msgstr "IP アドレス範囲" #: ipam/forms/model_forms.py:293 ipam/forms/model_forms.py:319 -#: ipam/forms/model_forms.py:462 templates/ipam/fhrpgroup.html:19 +#: ipam/forms/model_forms.py:471 templates/ipam/fhrpgroup.html:19 msgid "FHRP Group" msgstr "FHRP グループ" @@ -8510,71 +8555,71 @@ msgstr "デバイス/VMのプライマリIPにする" msgid "NAT IP (Inside)" msgstr "NAT IP (インサイド)" -#: ipam/forms/model_forms.py:373 +#: ipam/forms/model_forms.py:382 msgid "An IP address can only be assigned to a single object." msgstr "IP アドレスは 1 つのオブジェクトにのみ割り当てることができます。" -#: ipam/forms/model_forms.py:379 ipam/models/ip.py:896 +#: ipam/forms/model_forms.py:388 ipam/models/ip.py:897 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" msgstr "親オブジェクトのプライマリ IP として指定されている間は IP アドレスを再割り当てできません" -#: ipam/forms/model_forms.py:389 +#: ipam/forms/model_forms.py:398 msgid "" "Only IP addresses assigned to an interface can be designated as primary IPs." msgstr "プライマリ IP として指定できるのは、インタフェースに割り当てられた IP アドレスのみです。" -#: ipam/forms/model_forms.py:464 +#: ipam/forms/model_forms.py:473 msgid "Virtual IP Address" msgstr "仮想 IP アドレス" -#: ipam/forms/model_forms.py:549 +#: ipam/forms/model_forms.py:558 msgid "Assignment already exists" msgstr "既に割り当てられています" -#: ipam/forms/model_forms.py:628 ipam/forms/model_forms.py:670 +#: ipam/forms/model_forms.py:637 ipam/forms/model_forms.py:679 #: ipam/tables/ip.py:250 templates/ipam/vlan_edit.html:37 #: templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "VLAN グループ" -#: ipam/forms/model_forms.py:629 +#: ipam/forms/model_forms.py:638 msgid "Child VLANs" msgstr "子 VLAN" -#: ipam/forms/model_forms.py:701 ipam/forms/model_forms.py:733 +#: ipam/forms/model_forms.py:710 ipam/forms/model_forms.py:742 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." msgstr "カンマ区切りのポート番号のリスト。範囲はハイフンを使用して指定できます。" -#: ipam/forms/model_forms.py:706 templates/ipam/servicetemplate.html:12 +#: ipam/forms/model_forms.py:715 templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "サービステンプレート" -#: ipam/forms/model_forms.py:753 +#: ipam/forms/model_forms.py:762 msgid "Port(s)" msgstr "ポート (s)" -#: ipam/forms/model_forms.py:754 ipam/forms/model_forms.py:782 +#: ipam/forms/model_forms.py:763 ipam/forms/model_forms.py:791 #: templates/ipam/service.html:21 msgid "Service" msgstr "サービス" -#: ipam/forms/model_forms.py:767 +#: ipam/forms/model_forms.py:776 msgid "Service template" msgstr "サービステンプレート" -#: ipam/forms/model_forms.py:779 +#: ipam/forms/model_forms.py:788 msgid "From Template" msgstr "テンプレートから" -#: ipam/forms/model_forms.py:780 +#: ipam/forms/model_forms.py:789 msgid "Custom" msgstr "カスタム" -#: ipam/forms/model_forms.py:810 +#: ipam/forms/model_forms.py:819 msgid "" "Must specify name, protocol, and port(s) if not using a service template." msgstr "サービステンプレートを使用しない場合は、名前、プロトコル、およびポートを指定する必要があります。" @@ -8640,215 +8685,215 @@ msgstr "FHRP グループ割当" msgid "FHRP group assignments" msgstr "FHRP グループ割当" -#: ipam/models/ip.py:64 +#: ipam/models/ip.py:65 msgid "private" msgstr "プライベート" -#: ipam/models/ip.py:65 +#: ipam/models/ip.py:66 msgid "IP space managed by this RIR is considered private" msgstr "この RIR が管理する IP スペースはプライベートと見なされます" -#: ipam/models/ip.py:71 netbox/navigation/menu.py:169 +#: ipam/models/ip.py:72 netbox/navigation/menu.py:169 msgid "RIRs" msgstr "RIR" -#: ipam/models/ip.py:83 +#: ipam/models/ip.py:84 msgid "IPv4 or IPv6 network" msgstr "IPv4 または IPv6 ネットワーク" -#: ipam/models/ip.py:90 +#: ipam/models/ip.py:91 msgid "Regional Internet Registry responsible for this IP space" msgstr "この IP スペースを管理する地域インターネットレジストリ" -#: ipam/models/ip.py:100 +#: ipam/models/ip.py:101 msgid "date added" msgstr "追加日" -#: ipam/models/ip.py:114 +#: ipam/models/ip.py:115 msgid "aggregate" msgstr "集約" -#: ipam/models/ip.py:115 +#: ipam/models/ip.py:116 msgid "aggregates" msgstr "集約" -#: ipam/models/ip.py:131 +#: ipam/models/ip.py:132 msgid "Cannot create aggregate with /0 mask." msgstr "/0 マスクを使用して集約を作成することはできません。" -#: ipam/models/ip.py:143 +#: ipam/models/ip.py:144 #, python-brace-format msgid "" "Aggregates cannot overlap. {prefix} is already covered by an existing " "aggregate ({aggregate})." msgstr "集約は重複できません。{prefix} は既存の集約({aggregate}) に含まれます。" -#: ipam/models/ip.py:157 +#: ipam/models/ip.py:158 #, python-brace-format msgid "" "Prefixes cannot overlap aggregates. {prefix} covers an existing aggregate " "({aggregate})." msgstr "プレフィックスは集約と重複できません。 {prefix} は既存の集約 ({aggregate}) に含まれます。" -#: ipam/models/ip.py:199 ipam/models/ip.py:736 vpn/models/tunnels.py:114 +#: ipam/models/ip.py:200 ipam/models/ip.py:737 vpn/models/tunnels.py:114 msgid "role" msgstr "ロール" -#: ipam/models/ip.py:200 +#: ipam/models/ip.py:201 msgid "roles" msgstr "ロール" -#: ipam/models/ip.py:216 ipam/models/ip.py:292 +#: ipam/models/ip.py:217 ipam/models/ip.py:293 msgid "prefix" msgstr "プレフィックス" -#: ipam/models/ip.py:217 +#: ipam/models/ip.py:218 msgid "IPv4 or IPv6 network with mask" msgstr "マスク付きの IPv4 または IPv6 ネットワーク" -#: ipam/models/ip.py:253 +#: ipam/models/ip.py:254 msgid "Operational status of this prefix" msgstr "このプレフィックスの動作ステータス" -#: ipam/models/ip.py:261 +#: ipam/models/ip.py:262 msgid "The primary function of this prefix" msgstr "このプレフィックスの主な機能" -#: ipam/models/ip.py:264 +#: ipam/models/ip.py:265 msgid "is a pool" msgstr "プールか" -#: ipam/models/ip.py:266 +#: ipam/models/ip.py:267 msgid "All IP addresses within this prefix are considered usable" msgstr "このプレフィックス内のすべての IP アドレスが使用可能と見なされます。" -#: ipam/models/ip.py:269 ipam/models/ip.py:536 +#: ipam/models/ip.py:270 ipam/models/ip.py:537 msgid "mark utilized" msgstr "使用済み" -#: ipam/models/ip.py:293 +#: ipam/models/ip.py:294 msgid "prefixes" msgstr "プレフィックス" -#: ipam/models/ip.py:316 +#: ipam/models/ip.py:317 msgid "Cannot create prefix with /0 mask." msgstr "/0 マスクではプレフィックスを作成できません。" -#: ipam/models/ip.py:323 ipam/models/ip.py:873 +#: ipam/models/ip.py:324 ipam/models/ip.py:874 #, python-brace-format msgid "VRF {vrf}" msgstr "VRF {vrf}" -#: ipam/models/ip.py:323 ipam/models/ip.py:873 +#: ipam/models/ip.py:324 ipam/models/ip.py:874 msgid "global table" msgstr "グローバルテーブル" -#: ipam/models/ip.py:325 +#: ipam/models/ip.py:326 #, python-brace-format msgid "Duplicate prefix found in {table}: {prefix}" msgstr "重複したプレフィックスが見つかりました {table}: {prefix}" -#: ipam/models/ip.py:494 +#: ipam/models/ip.py:495 msgid "start address" msgstr "開始アドレス" -#: ipam/models/ip.py:495 ipam/models/ip.py:499 ipam/models/ip.py:711 +#: ipam/models/ip.py:496 ipam/models/ip.py:500 ipam/models/ip.py:712 msgid "IPv4 or IPv6 address (with mask)" msgstr "IPv4 または IPv6 アドレス (マスク付き)" -#: ipam/models/ip.py:498 +#: ipam/models/ip.py:499 msgid "end address" msgstr "終了アドレス" -#: ipam/models/ip.py:525 +#: ipam/models/ip.py:526 msgid "Operational status of this range" msgstr "この範囲の動作状況" -#: ipam/models/ip.py:533 +#: ipam/models/ip.py:534 msgid "The primary function of this range" msgstr "この範囲の主な機能" -#: ipam/models/ip.py:547 +#: ipam/models/ip.py:548 msgid "IP range" msgstr "IP アドレス範囲" -#: ipam/models/ip.py:548 +#: ipam/models/ip.py:549 msgid "IP ranges" msgstr "IP アドレス範囲" -#: ipam/models/ip.py:564 +#: ipam/models/ip.py:565 msgid "Starting and ending IP address versions must match" msgstr "開始・終了 IP アドレスのバージョンが一致している必要があります" -#: ipam/models/ip.py:570 +#: ipam/models/ip.py:571 msgid "Starting and ending IP address masks must match" msgstr "開始・終了 IP アドレスマスクは一致する必要があります" -#: ipam/models/ip.py:577 +#: ipam/models/ip.py:578 #, python-brace-format msgid "" "Ending address must be greater than the starting address ({start_address})" msgstr "終了アドレスは開始アドレスより大きくなければなりません ({start_address})" -#: ipam/models/ip.py:589 +#: ipam/models/ip.py:590 #, python-brace-format msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}" msgstr "VRF{vrf}において、定義されたアドレスが範囲{overlapping_range}と重複しています " -#: ipam/models/ip.py:598 +#: ipam/models/ip.py:599 #, python-brace-format msgid "Defined range exceeds maximum supported size ({max_size})" msgstr "定義された範囲がサポートされている最大サイズを超えています ({max_size})" -#: ipam/models/ip.py:710 tenancy/models/contacts.py:82 +#: ipam/models/ip.py:711 tenancy/models/contacts.py:82 msgid "address" msgstr "アドレス" -#: ipam/models/ip.py:733 +#: ipam/models/ip.py:734 msgid "The operational status of this IP" msgstr "この IP の動作ステータス" -#: ipam/models/ip.py:740 +#: ipam/models/ip.py:741 msgid "The functional role of this IP" msgstr "この IP の役割" -#: ipam/models/ip.py:764 templates/ipam/ipaddress.html:72 +#: ipam/models/ip.py:765 templates/ipam/ipaddress.html:72 msgid "NAT (inside)" msgstr "NAT (インサイド)" -#: ipam/models/ip.py:765 +#: ipam/models/ip.py:766 msgid "The IP for which this address is the \"outside\" IP" msgstr "このアドレスが「アウトサイド」IPであるIP" -#: ipam/models/ip.py:772 +#: ipam/models/ip.py:773 msgid "Hostname or FQDN (not case-sensitive)" msgstr "ホスト名または FQDN (大文字と小文字は区別されません)" -#: ipam/models/ip.py:788 ipam/models/services.py:93 +#: ipam/models/ip.py:789 ipam/models/services.py:93 msgid "IP addresses" msgstr "IP アドレス" -#: ipam/models/ip.py:844 +#: ipam/models/ip.py:845 msgid "Cannot create IP address with /0 mask." msgstr "/0 マスクで IP アドレスを作成することはできません。" -#: ipam/models/ip.py:850 +#: ipam/models/ip.py:851 #, python-brace-format msgid "{ip} is a network ID, which may not be assigned to an interface." msgstr "{ip} はネットワーク ID のため、インタフェースに割り当てることはできません。" -#: ipam/models/ip.py:861 +#: ipam/models/ip.py:862 #, python-brace-format msgid "" "{ip} is a broadcast address, which may not be assigned to an interface." msgstr "{ip} はブロードキャストアドレスのため、インタフェースに割り当てることはできません。" -#: ipam/models/ip.py:875 +#: ipam/models/ip.py:876 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "重複した IP アドレスが見つかりました {table}: {ipaddress}" -#: ipam/models/ip.py:902 +#: ipam/models/ip.py:903 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "SLAAC ステータスを割り当てることができるのは IPv6 アドレスのみです" @@ -8939,7 +8984,7 @@ msgid "The primary function of this VLAN" msgstr "この VLAN の主な機能" #: ipam/models/vlans.py:215 ipam/tables/ip.py:175 ipam/tables/vlans.py:78 -#: ipam/views.py:957 netbox/navigation/menu.py:180 +#: ipam/views.py:978 netbox/navigation/menu.py:180 #: netbox/navigation/menu.py:182 msgid "VLANs" msgstr "VLAN" @@ -9011,7 +9056,7 @@ msgid "Added" msgstr "追加日" #: ipam/tables/ip.py:127 ipam/tables/ip.py:165 ipam/tables/vlans.py:138 -#: ipam/views.py:348 netbox/navigation/menu.py:152 +#: ipam/views.py:349 netbox/navigation/menu.py:152 #: netbox/navigation/menu.py:154 templates/ipam/vlan.html:84 msgid "Prefixes" msgstr "プレフィックス" @@ -9110,23 +9155,23 @@ msgid "" "are allowed in DNS names" msgstr "DNS 名に使用できるのは、英数字、アスタリスク、ハイフン、ピリオド、アンダースコアのみです。" -#: ipam/views.py:535 +#: ipam/views.py:541 msgid "Child Prefixes" msgstr "子プレフィックス" -#: ipam/views.py:570 +#: ipam/views.py:576 msgid "Child Ranges" msgstr "子レンジ" -#: ipam/views.py:886 +#: ipam/views.py:902 msgid "Related IPs" msgstr "関連IPアドレス" -#: ipam/views.py:1112 +#: ipam/views.py:1133 msgid "Device Interfaces" msgstr "デバイスインタフェース" -#: ipam/views.py:1129 +#: ipam/views.py:1150 msgid "VM Interfaces" msgstr "VM インタフェース" @@ -9678,39 +9723,43 @@ msgstr "クラスタグループ" msgid "Circuit Types" msgstr "回線タイプ" -#: netbox/navigation/menu.py:264 netbox/navigation/menu.py:266 +#: netbox/navigation/menu.py:261 +msgid "Circuit Terminations" +msgstr "回路終端" + +#: netbox/navigation/menu.py:265 netbox/navigation/menu.py:267 msgid "Providers" msgstr "プロバイダ" -#: netbox/navigation/menu.py:267 templates/circuits/provider.html:51 +#: netbox/navigation/menu.py:268 templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "プロバイダアカウント" -#: netbox/navigation/menu.py:268 +#: netbox/navigation/menu.py:269 msgid "Provider Networks" msgstr "プロバイダネットワーク" -#: netbox/navigation/menu.py:282 +#: netbox/navigation/menu.py:283 msgid "Power Panels" msgstr "電源盤" -#: netbox/navigation/menu.py:293 +#: netbox/navigation/menu.py:294 msgid "Configurations" msgstr "コンフィギュレーション" -#: netbox/navigation/menu.py:295 +#: netbox/navigation/menu.py:296 msgid "Config Contexts" msgstr "コンフィグコンテキスト" -#: netbox/navigation/menu.py:296 +#: netbox/navigation/menu.py:297 msgid "Config Templates" msgstr "設定テンプレート" -#: netbox/navigation/menu.py:303 netbox/navigation/menu.py:307 +#: netbox/navigation/menu.py:304 netbox/navigation/menu.py:308 msgid "Customization" msgstr "カスタマイズ" -#: netbox/navigation/menu.py:309 templates/dcim/device_edit.html:103 +#: netbox/navigation/menu.py:310 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 @@ -9720,107 +9769,107 @@ msgstr "カスタマイズ" msgid "Custom Fields" msgstr "カスタムフィールド" -#: netbox/navigation/menu.py:310 +#: netbox/navigation/menu.py:311 msgid "Custom Field Choices" msgstr "カスタムフィールド選択肢" -#: netbox/navigation/menu.py:311 +#: netbox/navigation/menu.py:312 msgid "Custom Links" msgstr "カスタムリンク" -#: netbox/navigation/menu.py:312 +#: netbox/navigation/menu.py:313 msgid "Export Templates" msgstr "エクスポートテンプレート" -#: netbox/navigation/menu.py:313 +#: netbox/navigation/menu.py:314 msgid "Saved Filters" msgstr "保存済みフィルタ" -#: netbox/navigation/menu.py:315 +#: netbox/navigation/menu.py:316 msgid "Image Attachments" msgstr "画像添付ファイル" -#: netbox/navigation/menu.py:333 +#: netbox/navigation/menu.py:334 msgid "Operations" msgstr "オペレーション" -#: netbox/navigation/menu.py:337 +#: netbox/navigation/menu.py:338 msgid "Integrations" msgstr "インテグレーション" -#: netbox/navigation/menu.py:339 +#: netbox/navigation/menu.py:340 msgid "Data Sources" msgstr "データソース" -#: netbox/navigation/menu.py:340 +#: netbox/navigation/menu.py:341 msgid "Event Rules" msgstr "イベントルール" -#: netbox/navigation/menu.py:341 +#: netbox/navigation/menu.py:342 msgid "Webhooks" msgstr "ウェブフック" -#: netbox/navigation/menu.py:345 netbox/navigation/menu.py:349 +#: netbox/navigation/menu.py:346 netbox/navigation/menu.py:350 #: netbox/views/generic/feature_views.py:151 #: templates/extras/report/base.html:37 templates/extras/script/base.html:36 msgid "Jobs" msgstr "ジョブ" -#: netbox/navigation/menu.py:355 +#: netbox/navigation/menu.py:356 msgid "Logging" msgstr "ロギング" -#: netbox/navigation/menu.py:357 +#: netbox/navigation/menu.py:358 msgid "Journal Entries" msgstr "ジャーナルエントリ" -#: netbox/navigation/menu.py:358 templates/extras/objectchange.html:8 +#: netbox/navigation/menu.py:359 templates/extras/objectchange.html:8 #: templates/extras/objectchange_list.html:4 msgid "Change Log" msgstr "変更ログ" -#: netbox/navigation/menu.py:365 templates/inc/user_menu.html:11 +#: netbox/navigation/menu.py:366 templates/inc/user_menu.html:11 msgid "Admin" msgstr "管理者" -#: netbox/navigation/menu.py:373 templates/users/group.html:29 +#: netbox/navigation/menu.py:374 templates/users/group.html:29 #: users/forms/model_forms.py:233 users/forms/model_forms.py:245 #: users/forms/model_forms.py:297 users/tables.py:102 msgid "Users" msgstr "ユーザ" -#: netbox/navigation/menu.py:393 users/forms/model_forms.py:182 +#: netbox/navigation/menu.py:394 users/forms/model_forms.py:182 #: users/forms/model_forms.py:194 users/forms/model_forms.py:302 #: users/tables.py:35 users/tables.py:106 msgid "Groups" msgstr "グループ" -#: netbox/navigation/menu.py:413 templates/account/base.html:21 +#: netbox/navigation/menu.py:414 templates/account/base.html:21 #: templates/inc/user_menu.html:36 msgid "API Tokens" msgstr "API トークン" -#: netbox/navigation/menu.py:420 users/forms/model_forms.py:188 +#: netbox/navigation/menu.py:421 users/forms/model_forms.py:188 #: users/forms/model_forms.py:196 users/forms/model_forms.py:239 #: users/forms/model_forms.py:246 msgid "Permissions" msgstr "権限" -#: netbox/navigation/menu.py:428 netbox/navigation/menu.py:432 +#: netbox/navigation/menu.py:429 netbox/navigation/menu.py:433 #: templates/core/system.html:7 msgid "System" msgstr "システム" -#: netbox/navigation/menu.py:437 +#: netbox/navigation/menu.py:438 msgid "Configuration History" msgstr "設定履歴" -#: netbox/navigation/menu.py:443 templates/core/rq_task.html:8 +#: netbox/navigation/menu.py:444 templates/core/rq_task.html:8 #: templates/core/rq_task_list.html:22 msgid "Background Tasks" msgstr "バックグラウンドタスク" -#: netbox/navigation/menu.py:482 templates/500.html:35 +#: netbox/navigation/menu.py:483 templates/500.html:35 #: templates/account/preferences.html:22 templates/core/system.html:80 msgid "Plugins" msgstr "プラグイン" @@ -9952,34 +10001,46 @@ msgstr "初期化後にストアをレジストリに追加できません" msgid "Cannot delete stores from registry" msgstr "レジストリからストアを削除できません" -#: netbox/settings.py:715 +#: netbox/settings.py:722 +msgid "German" +msgstr "ドイツ人" + +#: netbox/settings.py:723 msgid "English" msgstr "英語" -#: netbox/settings.py:716 +#: netbox/settings.py:724 msgid "Spanish" msgstr "スペイン語" -#: netbox/settings.py:717 +#: netbox/settings.py:725 msgid "French" msgstr "フランス語" -#: netbox/settings.py:718 +#: netbox/settings.py:726 msgid "Japanese" msgstr "日本語" -#: netbox/settings.py:719 +#: netbox/settings.py:727 msgid "Portuguese" msgstr "ポルトガル語" -#: netbox/settings.py:720 +#: netbox/settings.py:728 msgid "Russian" msgstr "ロシア語" -#: netbox/settings.py:721 +#: netbox/settings.py:729 msgid "Turkish" msgstr "トルコ語" +#: netbox/settings.py:730 +msgid "Ukrainian" +msgstr "ウクライナ語" + +#: netbox/settings.py:731 +msgid "Chinese" +msgstr "中国語" + #: netbox/tables/columns.py:185 msgid "Toggle all" msgstr "すべて切り替え" @@ -9992,16 +10053,16 @@ msgstr "ドロップダウンを切り替え" msgid "Error" msgstr "エラー" -#: netbox/tables/tables.py:56 +#: netbox/tables/tables.py:57 #, python-brace-format msgid "No {model_name} found" msgstr "{model_name} が見つかりません" -#: netbox/tables/tables.py:246 templates/generic/bulk_import.html:117 +#: netbox/tables/tables.py:248 templates/generic/bulk_import.html:117 msgid "Field" msgstr "フィールド" -#: netbox/tables/tables.py:249 +#: netbox/tables/tables.py:251 msgid "Value" msgstr "値" @@ -10108,7 +10169,7 @@ msgstr "パスワードを変更" #: 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:37 +#: 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 @@ -10201,7 +10262,8 @@ msgstr "割当グループ" #: templates/account/profile.html:58 #: templates/circuits/circuit_terminations_swap.html:18 #: templates/circuits/circuit_terminations_swap.html:26 -#: templates/circuits/inc/circuit_termination.html:154 +#: templates/circuits/circuittermination.html:34 +#: templates/circuits/inc/circuit_termination.html:68 #: templates/dcim/devicebay.html:59 #: templates/dcim/inc/panels/inventory_items.html:45 #: templates/dcim/interface.html:296 templates/dcim/modulebay.html:76 @@ -10318,13 +10380,6 @@ msgstr "回線を追加" msgid "Circuit Type" msgstr "回線タイプ" -#: templates/circuits/inc/circuit_termination.html:6 -#: templates/circuits/inc/circuit_termination.html:41 -#: templates/dcim/cable.html:68 templates/dcim/cable.html:72 -#: vpn/forms/bulk_import.py:100 vpn/forms/filtersets.py:77 -msgid "Termination" -msgstr "終了" - #: templates/circuits/inc/circuit_termination.html:10 #: templates/dcim/devicetype/component_templates.html:33 #: templates/dcim/manufacturer.html:11 @@ -10337,7 +10392,7 @@ msgid "Add" msgstr "追加" #: templates/circuits/inc/circuit_termination.html:15 -#: templates/circuits/inc/circuit_termination.html:62 +#: 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:32 @@ -10352,33 +10407,33 @@ msgstr "編集" msgid "Swap" msgstr "スワップ" -#: templates/circuits/inc/circuit_termination.html:45 +#: templates/circuits/inc/circuit_termination_fields.html:19 #: templates/dcim/consoleport.html:59 templates/dcim/consoleserverport.html:60 #: templates/dcim/powerfeed.html:114 msgid "Marked as connected" msgstr "接続済みとしてマークされています" -#: templates/circuits/inc/circuit_termination.html:47 +#: templates/circuits/inc/circuit_termination_fields.html:21 msgid "to" msgstr "に" -#: templates/circuits/inc/circuit_termination.html:57 -#: templates/circuits/inc/circuit_termination.html:58 +#: 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 msgid "Trace" msgstr "トレース" -#: templates/circuits/inc/circuit_termination.html:61 +#: templates/circuits/inc/circuit_termination_fields.html:35 msgid "Edit cable" msgstr "ケーブル編集" -#: templates/circuits/inc/circuit_termination.html:66 +#: templates/circuits/inc/circuit_termination_fields.html:40 msgid "Remove cable" msgstr "ケーブルを取り外す" -#: templates/circuits/inc/circuit_termination.html:67 +#: 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 @@ -10390,7 +10445,7 @@ msgstr "ケーブルを取り外す" msgid "Disconnect" msgstr "接続解除" -#: templates/circuits/inc/circuit_termination.html:74 +#: 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 @@ -10399,19 +10454,19 @@ msgstr "接続解除" msgid "Connect" msgstr "接続" -#: templates/circuits/inc/circuit_termination.html:96 +#: templates/circuits/inc/circuit_termination_fields.html:70 msgid "Downstream" msgstr "ダウンストリーム" -#: templates/circuits/inc/circuit_termination.html:97 +#: templates/circuits/inc/circuit_termination_fields.html:71 msgid "Upstream" msgstr "アップストリーム" -#: templates/circuits/inc/circuit_termination.html:106 +#: templates/circuits/inc/circuit_termination_fields.html:80 msgid "Cross-Connect" msgstr "クロスコネクト" -#: templates/circuits/inc/circuit_termination.html:110 +#: templates/circuits/inc/circuit_termination_fields.html:84 msgid "Patch Panel/Port" msgstr "パッチパネル/ポート" @@ -11803,11 +11858,15 @@ msgstr "報告書" msgid "You do not have permission to run scripts" msgstr "スクリプトを実行する権限がありません" -#: templates/extras/script.html:40 templates/extras/script.html:44 +#: templates/extras/script.html:41 templates/extras/script.html:45 #: templates/extras/script_list.html:88 msgid "Run Script" msgstr "スクリプトを実行" +#: templates/extras/script.html:51 templates/extras/script/source.html:10 +msgid "Error loading script" +msgstr "スクリプトのロード中にエラーが発生しました" + #: templates/extras/script/jobs.html:16 msgid "Script no longer exists in the source file." msgstr "スクリプトはソースファイルに存在しなくなりました。" diff --git a/netbox/translations/pt/LC_MESSAGES/django.po b/netbox/translations/pt/LC_MESSAGES/django.po index ceeef2aa9..baef111ba 100644 --- a/netbox/translations/pt/LC_MESSAGES/django.po +++ b/netbox/translations/pt/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-05-14 13:22+0000\n" +"POT-Creation-Date: 2024-05-22 17:41+0000\n" "PO-Revision-Date: 2023-10-30 17:48+0000\n" "Last-Translator: Jeremy Stretch, 2024\n" "Language-Team: Portuguese (https://app.transifex.com/netbox-community/teams/178115/pt/)\n" @@ -65,19 +65,19 @@ msgid "Your preferences have been updated." msgstr "Suas preferências foram atualizadas." #: circuits/choices.py:21 dcim/choices.py:20 dcim/choices.py:102 -#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1429 -#: dcim/choices.py:1505 dcim/choices.py:1555 virtualization/choices.py:20 +#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1457 +#: dcim/choices.py:1533 dcim/choices.py:1583 virtualization/choices.py:20 #: virtualization/choices.py:45 vpn/choices.py:18 msgid "Planned" msgstr "Planejado" -#: circuits/choices.py:22 netbox/navigation/menu.py:289 +#: circuits/choices.py:22 netbox/navigation/menu.py:290 msgid "Provisioning" msgstr "Provisionamento" #: circuits/choices.py:23 core/tables/tasks.py:22 dcim/choices.py:22 #: dcim/choices.py:103 dcim/choices.py:173 dcim/choices.py:219 -#: dcim/choices.py:1504 dcim/choices.py:1554 extras/tables/tables.py:385 +#: dcim/choices.py:1532 dcim/choices.py:1582 extras/tables/tables.py:385 #: 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 @@ -87,7 +87,7 @@ msgid "Active" msgstr "Ativo" #: circuits/choices.py:24 dcim/choices.py:172 dcim/choices.py:218 -#: dcim/choices.py:1503 dcim/choices.py:1556 virtualization/choices.py:24 +#: dcim/choices.py:1531 dcim/choices.py:1584 virtualization/choices.py:24 #: virtualization/choices.py:43 msgid "Offline" msgstr "Off-line" @@ -102,8 +102,8 @@ msgstr "Desativado" #: circuits/filtersets.py:29 circuits/filtersets.py:196 dcim/filtersets.py:97 #: dcim/filtersets.py:151 dcim/filtersets.py:211 dcim/filtersets.py:297 -#: dcim/filtersets.py:406 dcim/filtersets.py:969 dcim/filtersets.py:1295 -#: dcim/filtersets.py:1822 dcim/filtersets.py:2065 dcim/filtersets.py:2123 +#: dcim/filtersets.py:406 dcim/filtersets.py:969 dcim/filtersets.py:1305 +#: dcim/filtersets.py:1832 dcim/filtersets.py:2075 dcim/filtersets.py:2133 #: ipam/filtersets.py:339 ipam/filtersets.py:945 #: virtualization/filtersets.py:45 virtualization/filtersets.py:173 #: vpn/filtersets.py:377 @@ -112,8 +112,8 @@ msgstr "Região (ID)" #: circuits/filtersets.py:36 circuits/filtersets.py:203 dcim/filtersets.py:104 #: dcim/filtersets.py:157 dcim/filtersets.py:218 dcim/filtersets.py:304 -#: dcim/filtersets.py:413 dcim/filtersets.py:976 dcim/filtersets.py:1302 -#: dcim/filtersets.py:1829 dcim/filtersets.py:2072 dcim/filtersets.py:2130 +#: dcim/filtersets.py:413 dcim/filtersets.py:976 dcim/filtersets.py:1312 +#: dcim/filtersets.py:1839 dcim/filtersets.py:2082 dcim/filtersets.py:2140 #: extras/filtersets.py:461 ipam/filtersets.py:346 ipam/filtersets.py:952 #: virtualization/filtersets.py:52 virtualization/filtersets.py:180 #: vpn/filtersets.py:372 @@ -122,8 +122,8 @@ msgstr "Região (slug)" #: circuits/filtersets.py:42 circuits/filtersets.py:209 dcim/filtersets.py:127 #: dcim/filtersets.py:224 dcim/filtersets.py:310 dcim/filtersets.py:419 -#: dcim/filtersets.py:982 dcim/filtersets.py:1308 dcim/filtersets.py:1835 -#: dcim/filtersets.py:2078 dcim/filtersets.py:2136 ipam/filtersets.py:352 +#: dcim/filtersets.py:982 dcim/filtersets.py:1318 dcim/filtersets.py:1845 +#: dcim/filtersets.py:2088 dcim/filtersets.py:2146 ipam/filtersets.py:352 #: ipam/filtersets.py:958 virtualization/filtersets.py:58 #: virtualization/filtersets.py:186 msgid "Site group (ID)" @@ -131,16 +131,18 @@ msgstr "Grupo de sites (ID)" #: circuits/filtersets.py:49 circuits/filtersets.py:216 dcim/filtersets.py:134 #: dcim/filtersets.py:231 dcim/filtersets.py:317 dcim/filtersets.py:426 -#: dcim/filtersets.py:989 dcim/filtersets.py:1315 dcim/filtersets.py:1842 -#: dcim/filtersets.py:2085 dcim/filtersets.py:2143 extras/filtersets.py:467 +#: dcim/filtersets.py:989 dcim/filtersets.py:1325 dcim/filtersets.py:1852 +#: dcim/filtersets.py:2095 dcim/filtersets.py:2153 extras/filtersets.py:467 #: ipam/filtersets.py:359 ipam/filtersets.py:965 #: virtualization/filtersets.py:65 virtualization/filtersets.py:193 msgid "Site group (slug)" msgstr "Grupo de sites (slug)" -#: circuits/filtersets.py:54 circuits/forms/bulk_import.py:116 -#: circuits/forms/filtersets.py:48 circuits/forms/filtersets.py:168 -#: circuits/forms/model_forms.py:136 circuits/forms/model_forms.py:152 +#: circuits/filtersets.py:54 circuits/forms/bulk_edit.py:186 +#: circuits/forms/bulk_edit.py:214 circuits/forms/bulk_import.py:126 +#: circuits/forms/filtersets.py:49 circuits/forms/filtersets.py:169 +#: circuits/forms/filtersets.py:207 circuits/forms/model_forms.py:136 +#: circuits/forms/model_forms.py:152 circuits/tables/circuits.py:105 #: dcim/forms/bulk_edit.py:167 dcim/forms/bulk_edit.py:239 #: dcim/forms/bulk_edit.py:575 dcim/forms/bulk_edit.py:771 #: dcim/forms/bulk_import.py:130 dcim/forms/bulk_import.py:184 @@ -148,10 +150,10 @@ msgstr "Grupo de sites (slug)" #: dcim/forms/bulk_import.py:1262 dcim/forms/bulk_import.py:1290 #: dcim/forms/filtersets.py:85 dcim/forms/filtersets.py:218 #: dcim/forms/filtersets.py:265 dcim/forms/filtersets.py:374 -#: dcim/forms/filtersets.py:681 dcim/forms/filtersets.py:908 -#: dcim/forms/filtersets.py:932 dcim/forms/filtersets.py:1022 -#: dcim/forms/filtersets.py:1060 dcim/forms/filtersets.py:1468 -#: dcim/forms/filtersets.py:1492 dcim/forms/filtersets.py:1516 +#: dcim/forms/filtersets.py:682 dcim/forms/filtersets.py:916 +#: dcim/forms/filtersets.py:940 dcim/forms/filtersets.py:1030 +#: dcim/forms/filtersets.py:1068 dcim/forms/filtersets.py:1476 +#: dcim/forms/filtersets.py:1500 dcim/forms/filtersets.py:1524 #: dcim/forms/model_forms.py:136 dcim/forms/model_forms.py:164 #: dcim/forms/model_forms.py:206 dcim/forms/model_forms.py:406 #: dcim/forms/model_forms.py:668 dcim/forms/object_create.py:391 @@ -161,11 +163,11 @@ msgstr "Grupo de sites (slug)" #: ipam/forms/bulk_edit.py:270 ipam/forms/bulk_edit.py:448 #: ipam/forms/bulk_edit.py:522 ipam/forms/bulk_import.py:170 #: ipam/forms/bulk_import.py:437 ipam/forms/filtersets.py:153 -#: ipam/forms/filtersets.py:230 ipam/forms/filtersets.py:425 -#: ipam/forms/filtersets.py:489 ipam/forms/model_forms.py:203 -#: ipam/forms/model_forms.py:578 ipam/forms/model_forms.py:673 +#: ipam/forms/filtersets.py:231 ipam/forms/filtersets.py:432 +#: ipam/forms/filtersets.py:496 ipam/forms/model_forms.py:203 +#: ipam/forms/model_forms.py:587 ipam/forms/model_forms.py:682 #: ipam/tables/ip.py:244 ipam/tables/vlans.py:114 ipam/tables/vlans.py:216 -#: templates/circuits/inc/circuit_termination.html:32 +#: templates/circuits/inc/circuit_termination_fields.html:6 #: templates/dcim/device.html:21 templates/dcim/inc/cable_termination.html:8 #: templates/dcim/inc/cable_termination.html:33 #: templates/dcim/location.html:37 templates/dcim/powerpanel.html:22 @@ -202,19 +204,21 @@ msgstr "Site (slug)" msgid "ASN (ID)" msgstr "ASN (ID)" -#: circuits/filtersets.py:71 circuits/forms/filtersets.py:28 +#: circuits/filtersets.py:71 circuits/forms/filtersets.py:29 #: ipam/forms/model_forms.py:157 ipam/models/asns.py:108 #: ipam/models/asns.py:125 ipam/tables/asn.py:41 templates/ipam/asn.html:20 msgid "ASN" msgstr "ASN" #: circuits/filtersets.py:93 circuits/filtersets.py:120 -#: circuits/filtersets.py:154 ipam/filtersets.py:243 +#: circuits/filtersets.py:154 circuits/filtersets.py:281 +#: ipam/filtersets.py:243 msgid "Provider (ID)" msgstr "Provedor (ID)" #: circuits/filtersets.py:99 circuits/filtersets.py:126 -#: circuits/filtersets.py:160 ipam/filtersets.py:249 +#: circuits/filtersets.py:160 circuits/filtersets.py:287 +#: ipam/filtersets.py:249 msgid "Provider (slug)" msgstr "Provedor (slug)" @@ -240,8 +244,8 @@ msgstr "Tipo de circuito (slug)" #: circuits/filtersets.py:221 circuits/filtersets.py:266 #: dcim/filtersets.py:235 dcim/filtersets.py:321 dcim/filtersets.py:394 -#: dcim/filtersets.py:993 dcim/filtersets.py:1320 dcim/filtersets.py:1847 -#: dcim/filtersets.py:2089 dcim/filtersets.py:2148 ipam/filtersets.py:232 +#: dcim/filtersets.py:993 dcim/filtersets.py:1330 dcim/filtersets.py:1857 +#: dcim/filtersets.py:2099 dcim/filtersets.py:2158 ipam/filtersets.py:232 #: ipam/filtersets.py:363 ipam/filtersets.py:969 #: virtualization/filtersets.py:69 virtualization/filtersets.py:197 #: vpn/filtersets.py:387 @@ -253,13 +257,13 @@ msgid "Termination A (ID)" msgstr "Rescisão A (ID)" #: circuits/filtersets.py:258 core/filtersets.py:73 core/filtersets.py:132 -#: dcim/filtersets.py:693 dcim/filtersets.py:1289 dcim/filtersets.py:2196 +#: dcim/filtersets.py:693 dcim/filtersets.py:1299 dcim/filtersets.py:2206 #: extras/filtersets.py:41 extras/filtersets.py:63 extras/filtersets.py:92 #: extras/filtersets.py:127 extras/filtersets.py:176 extras/filtersets.py:204 #: extras/filtersets.py:234 extras/filtersets.py:271 extras/filtersets.py:343 #: extras/filtersets.py:390 extras/filtersets.py:450 extras/filtersets.py:613 #: extras/filtersets.py:655 extras/filtersets.py:696 -#: ipam/forms/model_forms.py:438 netbox/filtersets.py:275 +#: ipam/forms/model_forms.py:447 netbox/filtersets.py:275 #: netbox/forms/__init__.py:22 netbox/forms/base.py:165 #: templates/htmx/object_selector.html:28 templates/inc/filter_list.html:45 #: templates/ipam/ipaddress_assign.html:29 templates/search.html:7 @@ -269,9 +273,12 @@ msgstr "Rescisão A (ID)" msgid "Search" msgstr "Busca" -#: circuits/filtersets.py:262 circuits/forms/bulk_edit.py:168 -#: circuits/forms/model_forms.py:109 circuits/forms/model_forms.py:131 +#: circuits/filtersets.py:262 circuits/forms/bulk_edit.py:170 +#: circuits/forms/bulk_import.py:117 circuits/forms/filtersets.py:196 +#: circuits/forms/filtersets.py:212 circuits/forms/model_forms.py:109 +#: circuits/forms/model_forms.py:131 circuits/tables/circuits.py:96 #: dcim/forms/connections.py:71 templates/circuits/circuit.html:15 +#: templates/circuits/circuittermination.html:19 #: templates/dcim/inc/cable_termination.html:55 #: templates/dcim/trace/circuit.html:4 msgid "Circuit" @@ -281,48 +288,48 @@ msgstr "Circuito" msgid "ProviderNetwork (ID)" msgstr "Rede do provedor (ID)" -#: circuits/forms/bulk_edit.py:26 circuits/forms/filtersets.py:53 +#: circuits/forms/bulk_edit.py:28 circuits/forms/filtersets.py:54 #: circuits/forms/model_forms.py:27 circuits/tables/providers.py:33 #: dcim/forms/bulk_edit.py:127 dcim/forms/filtersets.py:188 #: dcim/forms/model_forms.py:122 dcim/tables/sites.py:94 -#: ipam/models/asns.py:126 ipam/tables/asn.py:27 ipam/views.py:218 +#: ipam/models/asns.py:126 ipam/tables/asn.py:27 ipam/views.py:219 #: netbox/navigation/menu.py:159 netbox/navigation/menu.py:162 #: templates/circuits/provider.html:23 msgid "ASNs" msgstr "ASNs" -#: circuits/forms/bulk_edit.py:30 circuits/forms/bulk_edit.py:52 -#: circuits/forms/bulk_edit.py:79 circuits/forms/bulk_edit.py:100 -#: circuits/forms/bulk_edit.py:160 core/forms/bulk_edit.py:28 -#: core/tables/plugins.py:29 dcim/forms/bulk_create.py:35 -#: dcim/forms/bulk_edit.py:72 dcim/forms/bulk_edit.py:91 -#: dcim/forms/bulk_edit.py:150 dcim/forms/bulk_edit.py:191 -#: dcim/forms/bulk_edit.py:209 dcim/forms/bulk_edit.py:337 -#: dcim/forms/bulk_edit.py:373 dcim/forms/bulk_edit.py:388 -#: dcim/forms/bulk_edit.py:447 dcim/forms/bulk_edit.py:486 -#: dcim/forms/bulk_edit.py:516 dcim/forms/bulk_edit.py:540 -#: dcim/forms/bulk_edit.py:613 dcim/forms/bulk_edit.py:665 -#: dcim/forms/bulk_edit.py:717 dcim/forms/bulk_edit.py:740 -#: dcim/forms/bulk_edit.py:788 dcim/forms/bulk_edit.py:858 -#: dcim/forms/bulk_edit.py:911 dcim/forms/bulk_edit.py:946 -#: dcim/forms/bulk_edit.py:986 dcim/forms/bulk_edit.py:1030 -#: dcim/forms/bulk_edit.py:1075 dcim/forms/bulk_edit.py:1102 -#: dcim/forms/bulk_edit.py:1120 dcim/forms/bulk_edit.py:1138 -#: dcim/forms/bulk_edit.py:1156 dcim/forms/bulk_edit.py:1575 -#: extras/forms/bulk_edit.py:36 extras/forms/bulk_edit.py:124 -#: extras/forms/bulk_edit.py:153 extras/forms/bulk_edit.py:183 -#: extras/forms/bulk_edit.py:264 extras/forms/bulk_edit.py:288 -#: extras/forms/bulk_edit.py:302 extras/tables/tables.py:58 -#: ipam/forms/bulk_edit.py:51 ipam/forms/bulk_edit.py:71 -#: ipam/forms/bulk_edit.py:91 ipam/forms/bulk_edit.py:115 -#: ipam/forms/bulk_edit.py:144 ipam/forms/bulk_edit.py:173 -#: ipam/forms/bulk_edit.py:192 ipam/forms/bulk_edit.py:261 -#: ipam/forms/bulk_edit.py:305 ipam/forms/bulk_edit.py:353 -#: ipam/forms/bulk_edit.py:396 ipam/forms/bulk_edit.py:424 -#: ipam/forms/bulk_edit.py:554 ipam/forms/bulk_edit.py:585 -#: templates/account/token.html:35 templates/circuits/circuit.html:59 -#: templates/circuits/circuittype.html:26 -#: templates/circuits/inc/circuit_termination.html:114 +#: circuits/forms/bulk_edit.py:32 circuits/forms/bulk_edit.py:54 +#: circuits/forms/bulk_edit.py:81 circuits/forms/bulk_edit.py:102 +#: circuits/forms/bulk_edit.py:162 circuits/forms/bulk_edit.py:181 +#: core/forms/bulk_edit.py:28 core/tables/plugins.py:29 +#: dcim/forms/bulk_create.py:35 dcim/forms/bulk_edit.py:72 +#: dcim/forms/bulk_edit.py:91 dcim/forms/bulk_edit.py:150 +#: dcim/forms/bulk_edit.py:191 dcim/forms/bulk_edit.py:209 +#: dcim/forms/bulk_edit.py:337 dcim/forms/bulk_edit.py:373 +#: dcim/forms/bulk_edit.py:388 dcim/forms/bulk_edit.py:447 +#: dcim/forms/bulk_edit.py:486 dcim/forms/bulk_edit.py:516 +#: dcim/forms/bulk_edit.py:540 dcim/forms/bulk_edit.py:613 +#: dcim/forms/bulk_edit.py:665 dcim/forms/bulk_edit.py:717 +#: dcim/forms/bulk_edit.py:740 dcim/forms/bulk_edit.py:788 +#: dcim/forms/bulk_edit.py:858 dcim/forms/bulk_edit.py:911 +#: dcim/forms/bulk_edit.py:946 dcim/forms/bulk_edit.py:986 +#: dcim/forms/bulk_edit.py:1030 dcim/forms/bulk_edit.py:1075 +#: dcim/forms/bulk_edit.py:1102 dcim/forms/bulk_edit.py:1120 +#: dcim/forms/bulk_edit.py:1138 dcim/forms/bulk_edit.py:1156 +#: dcim/forms/bulk_edit.py:1575 extras/forms/bulk_edit.py:36 +#: extras/forms/bulk_edit.py:124 extras/forms/bulk_edit.py:153 +#: extras/forms/bulk_edit.py:183 extras/forms/bulk_edit.py:264 +#: extras/forms/bulk_edit.py:288 extras/forms/bulk_edit.py:302 +#: extras/tables/tables.py:58 ipam/forms/bulk_edit.py:51 +#: ipam/forms/bulk_edit.py:71 ipam/forms/bulk_edit.py:91 +#: ipam/forms/bulk_edit.py:115 ipam/forms/bulk_edit.py:144 +#: ipam/forms/bulk_edit.py:173 ipam/forms/bulk_edit.py:192 +#: ipam/forms/bulk_edit.py:261 ipam/forms/bulk_edit.py:305 +#: ipam/forms/bulk_edit.py:353 ipam/forms/bulk_edit.py:396 +#: ipam/forms/bulk_edit.py:424 ipam/forms/bulk_edit.py:554 +#: ipam/forms/bulk_edit.py:585 templates/account/token.html:35 +#: templates/circuits/circuit.html:59 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/dcim/cable.html:36 @@ -388,32 +395,35 @@ msgstr "ASNs" msgid "Description" msgstr "Descrição" -#: circuits/forms/bulk_edit.py:47 circuits/forms/bulk_edit.py:69 -#: circuits/forms/bulk_edit.py:119 circuits/forms/bulk_import.py:34 -#: circuits/forms/bulk_import.py:49 circuits/forms/bulk_import.py:75 -#: circuits/forms/filtersets.py:67 circuits/forms/filtersets.py:85 -#: circuits/forms/filtersets.py:113 circuits/forms/filtersets.py:128 +#: circuits/forms/bulk_edit.py:49 circuits/forms/bulk_edit.py:71 +#: circuits/forms/bulk_edit.py:121 circuits/forms/bulk_import.py:35 +#: circuits/forms/bulk_import.py:50 circuits/forms/bulk_import.py:76 +#: circuits/forms/filtersets.py:68 circuits/forms/filtersets.py:86 +#: circuits/forms/filtersets.py:114 circuits/forms/filtersets.py:129 +#: circuits/forms/filtersets.py:197 circuits/forms/filtersets.py:230 #: circuits/forms/model_forms.py:45 circuits/forms/model_forms.py:59 -#: circuits/forms/model_forms.py:91 circuits/tables/circuits.py:55 -#: circuits/tables/providers.py:72 circuits/tables/providers.py:103 -#: templates/circuits/circuit.html:18 templates/circuits/provider.html:20 +#: circuits/forms/model_forms.py:91 circuits/tables/circuits.py:56 +#: circuits/tables/circuits.py:100 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 msgid "Provider" msgstr "Provedor" -#: circuits/forms/bulk_edit.py:76 circuits/forms/filtersets.py:88 +#: circuits/forms/bulk_edit.py:78 circuits/forms/filtersets.py:89 #: templates/circuits/providernetwork.html:28 msgid "Service ID" msgstr "ID do serviço" -#: circuits/forms/bulk_edit.py:96 circuits/forms/filtersets.py:104 +#: circuits/forms/bulk_edit.py:98 circuits/forms/filtersets.py:105 #: dcim/forms/bulk_edit.py:205 dcim/forms/bulk_edit.py:502 #: dcim/forms/bulk_edit.py:702 dcim/forms/bulk_edit.py:1071 #: dcim/forms/bulk_edit.py:1098 dcim/forms/bulk_edit.py:1571 -#: dcim/forms/filtersets.py:975 dcim/forms/filtersets.py:1351 -#: dcim/forms/filtersets.py:1372 dcim/tables/devices.py:699 +#: dcim/forms/filtersets.py:983 dcim/forms/filtersets.py:1359 +#: dcim/forms/filtersets.py:1380 dcim/tables/devices.py:699 #: dcim/tables/devices.py:759 dcim/tables/devices.py:986 #: dcim/tables/devicetypes.py:245 dcim/tables/devicetypes.py:260 #: dcim/tables/racks.py:32 extras/forms/bulk_edit.py:260 @@ -425,8 +435,8 @@ msgstr "ID do serviço" msgid "Color" msgstr "Cor" -#: circuits/forms/bulk_edit.py:114 circuits/forms/bulk_import.py:88 -#: circuits/forms/filtersets.py:123 core/forms/bulk_edit.py:18 +#: circuits/forms/bulk_edit.py:116 circuits/forms/bulk_import.py:89 +#: circuits/forms/filtersets.py:124 core/forms/bulk_edit.py:18 #: core/forms/filtersets.py:30 core/tables/data.py:20 core/tables/jobs.py:18 #: dcim/forms/bulk_edit.py:282 dcim/forms/bulk_edit.py:680 #: dcim/forms/bulk_edit.py:819 dcim/forms/bulk_edit.py:887 @@ -438,18 +448,18 @@ msgstr "Cor" #: dcim/forms/bulk_import.py:725 dcim/forms/bulk_import.py:808 #: dcim/forms/bulk_import.py:902 dcim/forms/bulk_import.py:944 #: dcim/forms/bulk_import.py:1161 dcim/forms/bulk_import.py:1327 -#: dcim/forms/filtersets.py:287 dcim/forms/filtersets.py:866 -#: dcim/forms/filtersets.py:965 dcim/forms/filtersets.py:1086 -#: dcim/forms/filtersets.py:1156 dcim/forms/filtersets.py:1178 -#: dcim/forms/filtersets.py:1200 dcim/forms/filtersets.py:1217 -#: dcim/forms/filtersets.py:1251 dcim/forms/filtersets.py:1346 -#: dcim/forms/filtersets.py:1367 dcim/forms/model_forms.py:643 +#: dcim/forms/filtersets.py:287 dcim/forms/filtersets.py:874 +#: dcim/forms/filtersets.py:973 dcim/forms/filtersets.py:1094 +#: dcim/forms/filtersets.py:1164 dcim/forms/filtersets.py:1186 +#: dcim/forms/filtersets.py:1208 dcim/forms/filtersets.py:1225 +#: dcim/forms/filtersets.py:1259 dcim/forms/filtersets.py:1354 +#: dcim/forms/filtersets.py:1375 dcim/forms/model_forms.py:643 #: dcim/forms/model_forms.py:649 dcim/forms/object_import.py:84 #: dcim/forms/object_import.py:113 dcim/forms/object_import.py:145 #: dcim/tables/devices.py:183 dcim/tables/devices.py:815 #: dcim/tables/power.py:77 extras/forms/bulk_import.py:39 #: extras/tables/tables.py:283 extras/tables/tables.py:355 -#: extras/tables/tables.py:473 netbox/tables/tables.py:237 +#: extras/tables/tables.py:473 netbox/tables/tables.py:239 #: 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 @@ -470,13 +480,13 @@ msgstr "Cor" msgid "Type" msgstr "Tipo" -#: circuits/forms/bulk_edit.py:124 circuits/forms/bulk_import.py:81 -#: circuits/forms/filtersets.py:136 circuits/forms/model_forms.py:96 +#: circuits/forms/bulk_edit.py:126 circuits/forms/bulk_import.py:82 +#: circuits/forms/filtersets.py:137 circuits/forms/model_forms.py:96 msgid "Provider account" msgstr "Conta do provedor" -#: circuits/forms/bulk_edit.py:132 circuits/forms/bulk_import.py:94 -#: circuits/forms/filtersets.py:147 core/forms/filtersets.py:35 +#: circuits/forms/bulk_edit.py:134 circuits/forms/bulk_import.py:95 +#: circuits/forms/filtersets.py:148 core/forms/filtersets.py:35 #: core/forms/filtersets.py:76 core/tables/data.py:23 core/tables/jobs.py:26 #: core/tables/tasks.py:88 dcim/forms/bulk_edit.py:105 #: dcim/forms/bulk_edit.py:180 dcim/forms/bulk_edit.py:261 @@ -488,9 +498,9 @@ msgstr "Conta do provedor" #: dcim/forms/bulk_import.py:1155 dcim/forms/bulk_import.py:1322 #: dcim/forms/bulk_import.py:1386 dcim/forms/filtersets.py:171 #: dcim/forms/filtersets.py:230 dcim/forms/filtersets.py:282 -#: dcim/forms/filtersets.py:727 dcim/forms/filtersets.py:835 -#: dcim/forms/filtersets.py:869 dcim/forms/filtersets.py:970 -#: dcim/forms/filtersets.py:1081 dcim/tables/devices.py:145 +#: dcim/forms/filtersets.py:728 dcim/forms/filtersets.py:843 +#: dcim/forms/filtersets.py:877 dcim/forms/filtersets.py:978 +#: dcim/forms/filtersets.py:1089 dcim/tables/devices.py:145 #: dcim/tables/devices.py:818 dcim/tables/devices.py:1046 #: dcim/tables/modules.py:69 dcim/tables/power.py:74 dcim/tables/racks.py:66 #: dcim/tables/sites.py:82 dcim/tables/sites.py:133 @@ -498,9 +508,9 @@ msgstr "Conta do provedor" #: ipam/forms/bulk_edit.py:338 ipam/forms/bulk_edit.py:544 #: ipam/forms/bulk_import.py:191 ipam/forms/bulk_import.py:256 #: ipam/forms/bulk_import.py:292 ipam/forms/bulk_import.py:458 -#: ipam/forms/filtersets.py:209 ipam/forms/filtersets.py:274 -#: ipam/forms/filtersets.py:348 ipam/forms/filtersets.py:501 -#: ipam/forms/model_forms.py:457 ipam/tables/ip.py:236 ipam/tables/ip.py:309 +#: ipam/forms/filtersets.py:210 ipam/forms/filtersets.py:281 +#: ipam/forms/filtersets.py:355 ipam/forms/filtersets.py:508 +#: ipam/forms/model_forms.py:466 ipam/tables/ip.py:236 ipam/tables/ip.py:309 #: ipam/tables/ip.py:359 ipam/tables/ip.py:421 ipam/tables/ip.py:448 #: ipam/tables/vlans.py:122 ipam/tables/vlans.py:227 #: templates/circuits/circuit.html:34 templates/core/datasource.html:46 @@ -531,8 +541,8 @@ msgstr "Conta do provedor" msgid "Status" msgstr "Status" -#: circuits/forms/bulk_edit.py:138 circuits/forms/bulk_import.py:99 -#: circuits/forms/filtersets.py:116 dcim/forms/bulk_edit.py:121 +#: circuits/forms/bulk_edit.py:140 circuits/forms/bulk_import.py:100 +#: circuits/forms/filtersets.py:117 dcim/forms/bulk_edit.py:121 #: dcim/forms/bulk_edit.py:186 dcim/forms/bulk_edit.py:256 #: dcim/forms/bulk_edit.py:368 dcim/forms/bulk_edit.py:588 #: dcim/forms/bulk_edit.py:692 dcim/forms/bulk_edit.py:1599 @@ -542,9 +552,9 @@ msgstr "Status" #: dcim/forms/bulk_import.py:1379 dcim/forms/filtersets.py:166 #: dcim/forms/filtersets.py:198 dcim/forms/filtersets.py:249 #: dcim/forms/filtersets.py:334 dcim/forms/filtersets.py:355 -#: dcim/forms/filtersets.py:652 dcim/forms/filtersets.py:827 -#: dcim/forms/filtersets.py:889 dcim/forms/filtersets.py:919 -#: dcim/forms/filtersets.py:1041 dcim/tables/power.py:88 +#: dcim/forms/filtersets.py:652 dcim/forms/filtersets.py:835 +#: dcim/forms/filtersets.py:897 dcim/forms/filtersets.py:927 +#: dcim/forms/filtersets.py:1049 dcim/tables/power.py:88 #: extras/filtersets.py:564 extras/forms/filtersets.py:332 #: extras/forms/filtersets.py:405 ipam/forms/bulk_edit.py:41 #: ipam/forms/bulk_edit.py:66 ipam/forms/bulk_edit.py:110 @@ -558,8 +568,8 @@ msgstr "Status" #: ipam/forms/bulk_import.py:451 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:173 ipam/forms/filtersets.py:260 -#: ipam/forms/filtersets.py:303 ipam/forms/filtersets.py:469 +#: ipam/forms/filtersets.py:174 ipam/forms/filtersets.py:267 +#: ipam/forms/filtersets.py:310 ipam/forms/filtersets.py:476 #: ipam/tables/ip.py:451 ipam/tables/vlans.py:224 #: templates/circuits/circuit.html:38 templates/dcim/cable.html:23 #: templates/dcim/device.html:78 templates/dcim/location.html:49 @@ -590,23 +600,23 @@ msgstr "Status" msgid "Tenant" msgstr "Inquilino" -#: circuits/forms/bulk_edit.py:143 circuits/forms/filtersets.py:171 +#: circuits/forms/bulk_edit.py:145 circuits/forms/filtersets.py:172 msgid "Install date" msgstr "Data de instalação" -#: circuits/forms/bulk_edit.py:148 circuits/forms/filtersets.py:176 +#: circuits/forms/bulk_edit.py:150 circuits/forms/filtersets.py:177 msgid "Termination date" msgstr "Data de rescisão" -#: circuits/forms/bulk_edit.py:154 circuits/forms/filtersets.py:183 +#: circuits/forms/bulk_edit.py:156 circuits/forms/filtersets.py:184 msgid "Commit rate (Kbps)" msgstr "Taxa de confirmação (Kbps)" -#: circuits/forms/bulk_edit.py:169 circuits/forms/model_forms.py:110 +#: circuits/forms/bulk_edit.py:171 circuits/forms/model_forms.py:110 msgid "Service Parameters" msgstr "Parâmetros de serviço" -#: circuits/forms/bulk_edit.py:170 circuits/forms/model_forms.py:111 +#: circuits/forms/bulk_edit.py:172 circuits/forms/model_forms.py:111 #: dcim/forms/model_forms.py:138 dcim/forms/model_forms.py:180 #: dcim/forms/model_forms.py:228 dcim/forms/model_forms.py:267 #: dcim/forms/model_forms.py:713 dcim/forms/model_forms.py:1636 @@ -625,26 +635,60 @@ msgstr "Parâmetros de serviço" msgid "Tenancy" msgstr "Locação" -#: circuits/forms/bulk_import.py:37 circuits/forms/bulk_import.py:52 -#: circuits/forms/bulk_import.py:78 +#: circuits/forms/bulk_edit.py:191 circuits/forms/bulk_edit.py:215 +#: circuits/forms/model_forms.py:153 circuits/tables/circuits.py:109 +#: templates/circuits/inc/circuit_termination_fields.html:62 +#: templates/circuits/providernetwork.html:17 +msgid "Provider Network" +msgstr "Rede de provedores" + +#: circuits/forms/bulk_edit.py:197 +msgid "Port speed (Kbps)" +msgstr "Velocidade da porta (Kbps)" + +#: circuits/forms/bulk_edit.py:201 +msgid "Upstream speed (Kbps)" +msgstr "Velocidade de upstream (Kbps)" + +#: circuits/forms/bulk_edit.py:204 dcim/forms/bulk_edit.py:849 +#: dcim/forms/bulk_edit.py:1208 dcim/forms/bulk_edit.py:1225 +#: dcim/forms/bulk_edit.py:1242 dcim/forms/bulk_edit.py:1260 +#: dcim/forms/bulk_edit.py:1348 dcim/forms/bulk_edit.py:1487 +#: dcim/forms/bulk_edit.py:1504 +msgid "Mark connected" +msgstr "Marcar conectado" + +#: circuits/forms/bulk_edit.py:217 circuits/forms/model_forms.py:155 +#: templates/circuits/inc/circuit_termination_fields.html:54 +#: templates/dcim/frontport.html:121 templates/dcim/interface.html:193 +#: templates/dcim/rearport.html:111 +msgid "Circuit Termination" +msgstr "Terminação do circuito" + +#: circuits/forms/bulk_edit.py:219 circuits/forms/model_forms.py:157 +msgid "Termination Details" +msgstr "Detalhes da rescisão" + +#: circuits/forms/bulk_import.py:38 circuits/forms/bulk_import.py:53 +#: circuits/forms/bulk_import.py:79 msgid "Assigned provider" msgstr "Provedor atribuído" -#: circuits/forms/bulk_import.py:69 dcim/forms/bulk_import.py:178 +#: circuits/forms/bulk_import.py:70 dcim/forms/bulk_import.py:178 #: dcim/forms/bulk_import.py:388 dcim/forms/bulk_import.py:1108 #: dcim/forms/bulk_import.py:1187 extras/forms/bulk_import.py:232 msgid "RGB color in hexadecimal. Example:" msgstr "Cor RGB em hexadecimal. Exemplo:" -#: circuits/forms/bulk_import.py:84 +#: circuits/forms/bulk_import.py:85 msgid "Assigned provider account" msgstr "Conta de provedor atribuída" -#: circuits/forms/bulk_import.py:91 +#: circuits/forms/bulk_import.py:92 msgid "Type of circuit" msgstr "Tipo de circuito" -#: circuits/forms/bulk_import.py:96 dcim/forms/bulk_import.py:89 +#: circuits/forms/bulk_import.py:97 dcim/forms/bulk_import.py:89 #: dcim/forms/bulk_import.py:148 dcim/forms/bulk_import.py:204 #: dcim/forms/bulk_import.py:452 dcim/forms/bulk_import.py:606 #: dcim/forms/bulk_import.py:1324 ipam/forms/bulk_import.py:193 @@ -655,7 +699,7 @@ msgstr "Tipo de circuito" msgid "Operational status" msgstr "Status operacional" -#: circuits/forms/bulk_import.py:103 dcim/forms/bulk_import.py:110 +#: circuits/forms/bulk_import.py:104 dcim/forms/bulk_import.py:110 #: dcim/forms/bulk_import.py:155 dcim/forms/bulk_import.py:286 #: dcim/forms/bulk_import.py:428 dcim/forms/bulk_import.py:1171 #: dcim/forms/bulk_import.py:1319 dcim/forms/bulk_import.py:1383 @@ -669,37 +713,46 @@ msgstr "Status operacional" msgid "Assigned tenant" msgstr "Inquilino designado" -#: circuits/forms/bulk_import.py:122 circuits/forms/filtersets.py:144 -#: circuits/forms/model_forms.py:142 +#: circuits/forms/bulk_import.py:122 +#: 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 +msgid "Termination" +msgstr "Rescisão" + +#: circuits/forms/bulk_import.py:132 circuits/forms/filtersets.py:145 +#: circuits/forms/filtersets.py:225 circuits/forms/model_forms.py:142 msgid "Provider network" msgstr "Rede de provedores" -#: circuits/forms/filtersets.py:27 circuits/forms/filtersets.py:115 -#: dcim/forms/bulk_edit.py:248 dcim/forms/bulk_edit.py:346 -#: dcim/forms/bulk_edit.py:580 dcim/forms/bulk_edit.py:627 -#: dcim/forms/bulk_edit.py:780 dcim/forms/bulk_import.py:189 -#: dcim/forms/bulk_import.py:263 dcim/forms/bulk_import.py:491 -#: dcim/forms/bulk_import.py:1268 dcim/forms/bulk_import.py:1302 -#: dcim/forms/filtersets.py:93 dcim/forms/filtersets.py:246 -#: dcim/forms/filtersets.py:279 dcim/forms/filtersets.py:331 -#: dcim/forms/filtersets.py:382 dcim/forms/filtersets.py:649 -#: dcim/forms/filtersets.py:690 dcim/forms/filtersets.py:888 -#: dcim/forms/filtersets.py:917 dcim/forms/filtersets.py:937 -#: dcim/forms/filtersets.py:1001 dcim/forms/filtersets.py:1031 -#: dcim/forms/filtersets.py:1040 dcim/forms/filtersets.py:1151 -#: dcim/forms/filtersets.py:1173 dcim/forms/filtersets.py:1195 -#: dcim/forms/filtersets.py:1212 dcim/forms/filtersets.py:1232 -#: dcim/forms/filtersets.py:1340 dcim/forms/filtersets.py:1362 -#: dcim/forms/filtersets.py:1383 dcim/forms/filtersets.py:1398 -#: dcim/forms/filtersets.py:1412 dcim/forms/model_forms.py:179 -#: dcim/forms/model_forms.py:211 dcim/forms/model_forms.py:411 -#: dcim/forms/model_forms.py:673 dcim/tables/devices.py:162 -#: dcim/tables/power.py:30 dcim/tables/racks.py:58 dcim/tables/racks.py:143 -#: extras/filtersets.py:488 extras/forms/filtersets.py:329 -#: ipam/forms/bulk_edit.py:457 ipam/forms/filtersets.py:172 -#: ipam/forms/filtersets.py:407 ipam/forms/filtersets.py:430 -#: ipam/forms/filtersets.py:467 ipam/forms/model_forms.py:590 -#: templates/dcim/device.html:25 templates/dcim/device_edit.html:30 +#: circuits/forms/filtersets.py:28 circuits/forms/filtersets.py:116 +#: circuits/forms/filtersets.py:198 dcim/forms/bulk_edit.py:248 +#: dcim/forms/bulk_edit.py:346 dcim/forms/bulk_edit.py:580 +#: dcim/forms/bulk_edit.py:627 dcim/forms/bulk_edit.py:780 +#: dcim/forms/bulk_import.py:189 dcim/forms/bulk_import.py:263 +#: dcim/forms/bulk_import.py:491 dcim/forms/bulk_import.py:1268 +#: dcim/forms/bulk_import.py:1302 dcim/forms/filtersets.py:93 +#: dcim/forms/filtersets.py:246 dcim/forms/filtersets.py:279 +#: dcim/forms/filtersets.py:331 dcim/forms/filtersets.py:382 +#: dcim/forms/filtersets.py:649 dcim/forms/filtersets.py:691 +#: dcim/forms/filtersets.py:896 dcim/forms/filtersets.py:925 +#: dcim/forms/filtersets.py:945 dcim/forms/filtersets.py:1009 +#: dcim/forms/filtersets.py:1039 dcim/forms/filtersets.py:1048 +#: dcim/forms/filtersets.py:1159 dcim/forms/filtersets.py:1181 +#: dcim/forms/filtersets.py:1203 dcim/forms/filtersets.py:1220 +#: dcim/forms/filtersets.py:1240 dcim/forms/filtersets.py:1348 +#: dcim/forms/filtersets.py:1370 dcim/forms/filtersets.py:1391 +#: dcim/forms/filtersets.py:1406 dcim/forms/filtersets.py:1420 +#: dcim/forms/model_forms.py:179 dcim/forms/model_forms.py:211 +#: dcim/forms/model_forms.py:411 dcim/forms/model_forms.py:673 +#: dcim/tables/devices.py:162 dcim/tables/power.py:30 dcim/tables/racks.py:58 +#: dcim/tables/racks.py:143 extras/filtersets.py:488 +#: extras/forms/filtersets.py:329 ipam/forms/bulk_edit.py:457 +#: ipam/forms/filtersets.py:173 ipam/forms/filtersets.py:414 +#: ipam/forms/filtersets.py:437 ipam/forms/filtersets.py:474 +#: ipam/forms/model_forms.py:599 templates/dcim/device.html:25 +#: 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:26 templates/dcim/rackreservation.html:32 @@ -709,12 +762,12 @@ msgstr "Rede de provedores" msgid "Location" msgstr "Localização" -#: circuits/forms/filtersets.py:29 circuits/forms/filtersets.py:117 +#: circuits/forms/filtersets.py:30 circuits/forms/filtersets.py:118 #: dcim/forms/filtersets.py:137 dcim/forms/filtersets.py:151 #: dcim/forms/filtersets.py:167 dcim/forms/filtersets.py:199 #: dcim/forms/filtersets.py:250 dcim/forms/filtersets.py:335 #: dcim/forms/filtersets.py:406 dcim/forms/filtersets.py:653 -#: dcim/forms/filtersets.py:1002 netbox/navigation/menu.py:44 +#: dcim/forms/filtersets.py:1010 netbox/navigation/menu.py:44 #: netbox/navigation/menu.py:46 tenancy/forms/filtersets.py:42 #: tenancy/tables/columns.py:70 tenancy/tables/contacts.py:25 #: tenancy/views.py:19 virtualization/forms/filtersets.py:37 @@ -723,22 +776,22 @@ msgstr "Localização" msgid "Contacts" msgstr "Contatos" -#: circuits/forms/filtersets.py:34 circuits/forms/filtersets.py:154 +#: circuits/forms/filtersets.py:35 circuits/forms/filtersets.py:155 #: dcim/forms/bulk_edit.py:111 dcim/forms/bulk_edit.py:223 #: dcim/forms/bulk_edit.py:755 dcim/forms/bulk_import.py:92 #: dcim/forms/filtersets.py:71 dcim/forms/filtersets.py:178 #: dcim/forms/filtersets.py:204 dcim/forms/filtersets.py:257 -#: dcim/forms/filtersets.py:360 dcim/forms/filtersets.py:667 -#: dcim/forms/filtersets.py:894 dcim/forms/filtersets.py:924 -#: dcim/forms/filtersets.py:1008 dcim/forms/filtersets.py:1047 -#: dcim/forms/filtersets.py:1460 dcim/forms/filtersets.py:1484 -#: dcim/forms/filtersets.py:1508 dcim/forms/model_forms.py:111 +#: dcim/forms/filtersets.py:360 dcim/forms/filtersets.py:668 +#: dcim/forms/filtersets.py:902 dcim/forms/filtersets.py:932 +#: dcim/forms/filtersets.py:1016 dcim/forms/filtersets.py:1055 +#: dcim/forms/filtersets.py:1468 dcim/forms/filtersets.py:1492 +#: dcim/forms/filtersets.py:1516 dcim/forms/model_forms.py:111 #: dcim/forms/object_create.py:375 dcim/tables/devices.py:148 #: dcim/tables/sites.py:85 extras/filtersets.py:455 #: ipam/forms/bulk_edit.py:206 ipam/forms/bulk_edit.py:438 -#: ipam/forms/bulk_edit.py:512 ipam/forms/filtersets.py:216 -#: ipam/forms/filtersets.py:415 ipam/forms/filtersets.py:475 -#: ipam/forms/model_forms.py:562 templates/dcim/device.html:17 +#: ipam/forms/bulk_edit.py:512 ipam/forms/filtersets.py:217 +#: ipam/forms/filtersets.py:422 ipam/forms/filtersets.py:482 +#: ipam/forms/model_forms.py:571 templates/dcim/device.html:17 #: templates/dcim/rack.html:16 templates/dcim/rackreservation.html:22 #: templates/dcim/region.html:26 templates/dcim/site.html:30 #: templates/ipam/prefix.html:49 templates/ipam/vlan.html:16 @@ -748,42 +801,42 @@ msgstr "Contatos" msgid "Region" msgstr "Região" -#: circuits/forms/filtersets.py:39 circuits/forms/filtersets.py:159 +#: circuits/forms/filtersets.py:40 circuits/forms/filtersets.py:160 #: dcim/forms/bulk_edit.py:231 dcim/forms/bulk_edit.py:763 #: dcim/forms/filtersets.py:76 dcim/forms/filtersets.py:183 #: dcim/forms/filtersets.py:209 dcim/forms/filtersets.py:270 -#: dcim/forms/filtersets.py:365 dcim/forms/filtersets.py:672 -#: dcim/forms/filtersets.py:899 dcim/forms/filtersets.py:1013 -#: dcim/forms/filtersets.py:1052 dcim/forms/object_create.py:383 +#: dcim/forms/filtersets.py:365 dcim/forms/filtersets.py:673 +#: dcim/forms/filtersets.py:907 dcim/forms/filtersets.py:1021 +#: dcim/forms/filtersets.py:1060 dcim/forms/object_create.py:383 #: extras/filtersets.py:472 ipam/forms/bulk_edit.py:211 #: ipam/forms/bulk_edit.py:445 ipam/forms/bulk_edit.py:517 -#: ipam/forms/filtersets.py:221 ipam/forms/filtersets.py:420 -#: ipam/forms/filtersets.py:480 ipam/forms/model_forms.py:575 +#: ipam/forms/filtersets.py:222 ipam/forms/filtersets.py:427 +#: ipam/forms/filtersets.py:487 ipam/forms/model_forms.py:584 #: virtualization/forms/bulk_edit.py:86 virtualization/forms/filtersets.py:69 #: virtualization/forms/filtersets.py:138 #: virtualization/forms/model_forms.py:98 msgid "Site group" msgstr "Grupo de sites" -#: circuits/forms/filtersets.py:62 circuits/forms/filtersets.py:80 -#: circuits/forms/filtersets.py:99 circuits/forms/filtersets.py:114 +#: circuits/forms/filtersets.py:63 circuits/forms/filtersets.py:81 +#: circuits/forms/filtersets.py:100 circuits/forms/filtersets.py:115 #: core/forms/filtersets.py:64 dcim/forms/bulk_edit.py:726 #: dcim/forms/filtersets.py:165 dcim/forms/filtersets.py:197 -#: dcim/forms/filtersets.py:826 dcim/forms/filtersets.py:918 -#: dcim/forms/filtersets.py:1042 dcim/forms/filtersets.py:1150 -#: dcim/forms/filtersets.py:1172 dcim/forms/filtersets.py:1194 -#: dcim/forms/filtersets.py:1211 dcim/forms/filtersets.py:1228 -#: dcim/forms/filtersets.py:1339 dcim/forms/filtersets.py:1361 -#: dcim/forms/filtersets.py:1382 dcim/forms/filtersets.py:1397 -#: dcim/forms/filtersets.py:1410 extras/forms/filtersets.py:43 +#: dcim/forms/filtersets.py:834 dcim/forms/filtersets.py:926 +#: dcim/forms/filtersets.py:1050 dcim/forms/filtersets.py:1158 +#: dcim/forms/filtersets.py:1180 dcim/forms/filtersets.py:1202 +#: dcim/forms/filtersets.py:1219 dcim/forms/filtersets.py:1236 +#: dcim/forms/filtersets.py:1347 dcim/forms/filtersets.py:1369 +#: dcim/forms/filtersets.py:1390 dcim/forms/filtersets.py:1405 +#: dcim/forms/filtersets.py:1418 extras/forms/filtersets.py:43 #: extras/forms/filtersets.py:112 extras/forms/filtersets.py:143 #: extras/forms/filtersets.py:183 extras/forms/filtersets.py:199 #: extras/forms/filtersets.py:230 extras/forms/filtersets.py:254 #: extras/forms/filtersets.py:450 extras/forms/filtersets.py:488 -#: ipam/forms/filtersets.py:99 ipam/forms/filtersets.py:259 -#: ipam/forms/filtersets.py:300 ipam/forms/filtersets.py:375 -#: ipam/forms/filtersets.py:468 ipam/forms/filtersets.py:527 -#: ipam/forms/filtersets.py:545 netbox/tables/tables.py:253 +#: ipam/forms/filtersets.py:99 ipam/forms/filtersets.py:266 +#: ipam/forms/filtersets.py:307 ipam/forms/filtersets.py:382 +#: ipam/forms/filtersets.py:475 ipam/forms/filtersets.py:534 +#: ipam/forms/filtersets.py:552 netbox/tables/tables.py:255 #: virtualization/forms/filtersets.py:45 #: virtualization/forms/filtersets.py:103 #: virtualization/forms/filtersets.py:194 @@ -792,28 +845,15 @@ msgstr "Grupo de sites" msgid "Attributes" msgstr "Atributos" -#: circuits/forms/filtersets.py:70 circuits/tables/circuits.py:60 +#: circuits/forms/filtersets.py:71 circuits/tables/circuits.py:61 #: circuits/tables/providers.py:66 templates/circuits/circuit.html:22 #: templates/circuits/provideraccount.html:24 msgid "Account" msgstr "Conta" -#: circuits/forms/model_forms.py:153 -#: templates/circuits/inc/circuit_termination.html:88 -#: templates/circuits/providernetwork.html:17 -msgid "Provider Network" -msgstr "Rede de provedores" - -#: circuits/forms/model_forms.py:155 -#: templates/circuits/inc/circuit_termination.html:80 -#: templates/dcim/frontport.html:121 templates/dcim/interface.html:193 -#: templates/dcim/rearport.html:111 -msgid "Circuit Termination" -msgstr "Terminação do circuito" - -#: circuits/forms/model_forms.py:157 -msgid "Termination Details" -msgstr "Detalhes da rescisão" +#: circuits/forms/filtersets.py:215 +msgid "Term Side" +msgstr "Lado do termo" #: circuits/models/circuits.py:25 dcim/models/cables.py:67 #: dcim/models/device_component_templates.py:491 @@ -844,8 +884,8 @@ msgstr "ID de circuito exclusivo" #: core/models/jobs.py:85 dcim/models/cables.py:49 dcim/models/devices.py:643 #: dcim/models/devices.py:1155 dcim/models/devices.py:1364 #: dcim/models/power.py:96 dcim/models/racks.py:98 dcim/models/sites.py:154 -#: dcim/models/sites.py:266 ipam/models/ip.py:252 ipam/models/ip.py:521 -#: ipam/models/ip.py:729 ipam/models/vlans.py:175 +#: dcim/models/sites.py:266 ipam/models/ip.py:253 ipam/models/ip.py:522 +#: ipam/models/ip.py:730 ipam/models/vlans.py:175 #: virtualization/models/clusters.py:74 #: virtualization/models/virtualmachines.py:84 vpn/models/tunnels.py:40 #: wireless/models.py:94 wireless/models.py:158 @@ -1019,15 +1059,15 @@ msgstr "rede do provedor" msgid "provider networks" msgstr "redes de provedores" -#: circuits/tables/circuits.py:29 circuits/tables/providers.py:18 +#: circuits/tables/circuits.py:30 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:13 #: core/tables/tasks.py:11 core/tables/tasks.py:115 #: dcim/forms/filtersets.py:61 dcim/forms/object_create.py:43 #: dcim/tables/devices.py:60 dcim/tables/devices.py:97 #: dcim/tables/devices.py:139 dcim/tables/devices.py:294 -#: dcim/tables/devices.py:376 dcim/tables/devices.py:420 -#: dcim/tables/devices.py:472 dcim/tables/devices.py:524 +#: dcim/tables/devices.py:380 dcim/tables/devices.py:424 +#: dcim/tables/devices.py:476 dcim/tables/devices.py:528 #: dcim/tables/devices.py:644 dcim/tables/devices.py:726 #: dcim/tables/devices.py:776 dcim/tables/devices.py:842 #: dcim/tables/devices.py:957 dcim/tables/devices.py:977 @@ -1041,7 +1081,7 @@ msgstr "redes de provedores" #: extras/tables/tables.py:209 extras/tables/tables.py:256 #: extras/tables/tables.py:279 extras/tables/tables.py:329 #: extras/tables/tables.py:381 extras/tables/tables.py:404 -#: ipam/forms/bulk_edit.py:391 ipam/forms/filtersets.py:379 +#: ipam/forms/bulk_edit.py:391 ipam/forms/filtersets.py:386 #: ipam/tables/asn.py:16 ipam/tables/ip.py:85 ipam/tables/ip.py:159 #: ipam/tables/services.py:15 ipam/tables/services.py:40 #: ipam/tables/vlans.py:64 ipam/tables/vlans.py:110 ipam/tables/vrfs.py:26 @@ -1107,7 +1147,7 @@ msgstr "redes de provedores" msgid "Name" msgstr "Nome" -#: circuits/tables/circuits.py:38 circuits/tables/providers.py:45 +#: circuits/tables/circuits.py:39 circuits/tables/providers.py:45 #: circuits/tables/providers.py:79 netbox/navigation/menu.py:253 #: netbox/navigation/menu.py:257 netbox/navigation/menu.py:259 #: templates/circuits/provider.html:57 @@ -1116,23 +1156,23 @@ msgstr "Nome" msgid "Circuits" msgstr "Circuitos" -#: circuits/tables/circuits.py:52 templates/circuits/circuit.html:26 +#: circuits/tables/circuits.py:53 templates/circuits/circuit.html:26 msgid "Circuit ID" msgstr "ID do circuito" -#: circuits/tables/circuits.py:65 wireless/forms/model_forms.py:160 +#: circuits/tables/circuits.py:66 wireless/forms/model_forms.py:160 msgid "Side A" msgstr "Lado A" -#: circuits/tables/circuits.py:69 +#: circuits/tables/circuits.py:70 msgid "Side Z" msgstr "Lado Z" -#: circuits/tables/circuits.py:72 templates/circuits/circuit.html:55 +#: circuits/tables/circuits.py:73 templates/circuits/circuit.html:55 msgid "Commit Rate" msgstr "Taxa de comprometimento" -#: circuits/tables/circuits.py:75 circuits/tables/providers.py:48 +#: circuits/tables/circuits.py:76 circuits/tables/providers.py:48 #: circuits/tables/providers.py:82 circuits/tables/providers.py:107 #: dcim/tables/devices.py:1019 dcim/tables/devicetypes.py:92 #: dcim/tables/modules.py:29 dcim/tables/modules.py:72 dcim/tables/power.py:39 @@ -1188,12 +1228,12 @@ msgstr "Concluído" #: core/choices.py:22 core/choices.py:59 core/constants.py:20 #: core/tables/tasks.py:34 dcim/choices.py:176 dcim/choices.py:222 -#: dcim/choices.py:1506 extras/choices.py:226 virtualization/choices.py:47 +#: dcim/choices.py:1534 extras/choices.py:226 virtualization/choices.py:47 msgid "Failed" msgstr "Falhou" -#: core/choices.py:35 netbox/navigation/menu.py:319 -#: netbox/navigation/menu.py:323 templates/extras/script/base.html:14 +#: core/choices.py:35 netbox/navigation/menu.py:320 +#: netbox/navigation/menu.py:324 templates/extras/script/base.html:14 #: templates/extras/script_list.html:7 templates/extras/script_list.html:12 #: templates/extras/script_result.html:17 msgid "Scripts" @@ -1288,8 +1328,8 @@ msgstr "Fonte de dados (nome)" #: core/forms/bulk_edit.py:25 core/forms/filtersets.py:40 #: core/tables/data.py:26 dcim/forms/bulk_edit.py:1020 -#: dcim/forms/bulk_edit.py:1293 dcim/forms/filtersets.py:1268 -#: dcim/tables/devices.py:549 dcim/tables/devicetypes.py:221 +#: dcim/forms/bulk_edit.py:1293 dcim/forms/filtersets.py:1276 +#: dcim/tables/devices.py:553 dcim/tables/devicetypes.py:221 #: extras/forms/bulk_edit.py:98 extras/forms/bulk_edit.py:162 #: extras/forms/bulk_edit.py:221 extras/forms/filtersets.py:120 #: extras/forms/filtersets.py:207 extras/forms/filtersets.py:268 @@ -1429,10 +1469,10 @@ msgstr "" msgid "Rack Elevations" msgstr "Elevações da cremalheira" -#: core/forms/model_forms.py:157 dcim/choices.py:1417 +#: core/forms/model_forms.py:157 dcim/choices.py:1445 #: dcim/forms/bulk_edit.py:867 dcim/forms/bulk_edit.py:1250 #: dcim/forms/bulk_edit.py:1268 dcim/tables/racks.py:89 -#: netbox/navigation/menu.py:275 netbox/navigation/menu.py:279 +#: netbox/navigation/menu.py:276 netbox/navigation/menu.py:280 msgid "Power" msgstr "Poder" @@ -1465,7 +1505,7 @@ msgstr "Validação" msgid "User Preferences" msgstr "Preferências do usuário" -#: core/forms/model_forms.py:167 dcim/forms/filtersets.py:660 +#: core/forms/model_forms.py:167 dcim/forms/filtersets.py:661 #: templates/core/inc/config_data.html:127 users/forms/model_forms.py:65 msgid "Miscellaneous" msgstr "Diversos" @@ -1610,7 +1650,7 @@ msgstr "caminho" msgid "File path relative to the data source's root" msgstr "Caminho do arquivo relativo à raiz da fonte de dados" -#: core/models/data.py:303 ipam/models/ip.py:502 +#: core/models/data.py:303 ipam/models/ip.py:503 msgid "size" msgstr "tamanho" @@ -1727,7 +1767,7 @@ msgstr "Última atualização" #: core/tables/jobs.py:10 core/tables/tasks.py:76 #: dcim/tables/devicetypes.py:161 extras/tables/tables.py:179 -#: extras/tables/tables.py:350 netbox/tables/tables.py:187 +#: extras/tables/tables.py:350 netbox/tables/tables.py:188 #: templates/dcim/virtualchassis_edit.html:52 utilities/forms/forms.py:73 #: wireless/tables/wirelesslink.py:16 msgid "ID" @@ -1736,7 +1776,7 @@ msgstr "CARTEIRA DE IDENTIDADE" #: core/tables/jobs.py:21 extras/choices.py:41 extras/tables/tables.py:241 #: extras/tables/tables.py:287 extras/tables/tables.py:360 #: extras/tables/tables.py:478 extras/tables/tables.py:509 -#: extras/tables/tables.py:574 netbox/tables/tables.py:241 +#: extras/tables/tables.py:574 netbox/tables/tables.py:243 #: templates/extras/eventrule.html:84 templates/extras/journalentry.html:18 #: templates/extras/objectchange.html:57 tenancy/tables/contacts.py:93 #: vpn/tables/l2vpn.py:64 @@ -1781,7 +1821,7 @@ msgstr "Trabalhadores" msgid "Host" msgstr "Hospedeiro" -#: core/tables/tasks.py:50 ipam/forms/filtersets.py:535 +#: core/tables/tasks.py:50 ipam/forms/filtersets.py:542 msgid "Port" msgstr "Porto" @@ -1848,7 +1888,7 @@ msgid "Staging" msgstr "Encenação" #: dcim/choices.py:23 dcim/choices.py:178 dcim/choices.py:223 -#: dcim/choices.py:1430 virtualization/choices.py:23 +#: dcim/choices.py:1458 virtualization/choices.py:23 #: virtualization/choices.py:48 msgid "Decommissioning" msgstr "Descomissionamento" @@ -1908,7 +1948,7 @@ msgstr "Obsoleto" msgid "Millimeters" msgstr "Milímetros" -#: dcim/choices.py:115 dcim/choices.py:1452 +#: dcim/choices.py:115 dcim/choices.py:1480 msgid "Inches" msgstr "Polegadas" @@ -1983,7 +2023,7 @@ msgstr "Da direita para a esquerda" msgid "Side to rear" msgstr "De lado para trás" -#: dcim/choices.py:198 dcim/choices.py:1225 +#: dcim/choices.py:198 dcim/choices.py:1253 msgid "Passive" msgstr "Passivo" @@ -1991,56 +2031,56 @@ msgstr "Passivo" msgid "Mixed" msgstr "Misto" -#: dcim/choices.py:443 dcim/choices.py:680 +#: dcim/choices.py:447 dcim/choices.py:693 msgid "NEMA (Non-locking)" msgstr "NEMA (sem bloqueio)" -#: dcim/choices.py:465 dcim/choices.py:702 +#: dcim/choices.py:469 dcim/choices.py:715 msgid "NEMA (Locking)" msgstr "NEMA (Bloqueio)" -#: dcim/choices.py:488 dcim/choices.py:725 +#: dcim/choices.py:492 dcim/choices.py:738 msgid "California Style" msgstr "Estilo da Califórnia" -#: dcim/choices.py:496 +#: dcim/choices.py:500 msgid "International/ITA" msgstr "Internacional/ITA" -#: dcim/choices.py:526 dcim/choices.py:755 +#: dcim/choices.py:535 dcim/choices.py:773 msgid "Proprietary" msgstr "Proprietário" -#: dcim/choices.py:534 dcim/choices.py:764 dcim/choices.py:1141 -#: dcim/choices.py:1143 dcim/choices.py:1348 dcim/choices.py:1350 +#: dcim/choices.py:543 dcim/choices.py:782 dcim/choices.py:1169 +#: dcim/choices.py:1171 dcim/choices.py:1376 dcim/choices.py:1378 #: netbox/navigation/menu.py:187 msgid "Other" msgstr "Outros" -#: dcim/choices.py:733 +#: dcim/choices.py:746 msgid "ITA/International" msgstr "ITA/Internacional" -#: dcim/choices.py:794 +#: dcim/choices.py:812 msgid "Physical" msgstr "Físico" -#: dcim/choices.py:795 dcim/choices.py:954 +#: dcim/choices.py:813 dcim/choices.py:977 msgid "Virtual" msgstr "Virtual" -#: dcim/choices.py:796 dcim/choices.py:1026 dcim/forms/bulk_edit.py:1408 -#: dcim/forms/filtersets.py:1231 dcim/forms/model_forms.py:933 +#: dcim/choices.py:814 dcim/choices.py:1049 dcim/forms/bulk_edit.py:1408 +#: dcim/forms/filtersets.py:1239 dcim/forms/model_forms.py:933 #: dcim/forms/model_forms.py:1341 netbox/navigation/menu.py:127 #: netbox/navigation/menu.py:131 templates/dcim/interface.html:210 msgid "Wireless" msgstr "Sem fio" -#: dcim/choices.py:952 +#: dcim/choices.py:975 msgid "Virtual interfaces" msgstr "Interfaces virtuais" -#: dcim/choices.py:955 dcim/forms/bulk_edit.py:1303 +#: dcim/choices.py:978 dcim/forms/bulk_edit.py:1303 #: dcim/forms/bulk_import.py:785 dcim/forms/model_forms.py:919 #: dcim/tables/devices.py:656 templates/dcim/interface.html:106 #: templates/virtualization/vminterface.html:43 @@ -2050,152 +2090,152 @@ msgstr "Interfaces virtuais" msgid "Bridge" msgstr "Ponte" -#: dcim/choices.py:956 +#: dcim/choices.py:979 msgid "Link Aggregation Group (LAG)" msgstr "Grupo de agregação de links (LAG)" -#: dcim/choices.py:960 +#: dcim/choices.py:983 msgid "Ethernet (fixed)" msgstr "Ethernet (fixa)" -#: dcim/choices.py:974 +#: dcim/choices.py:997 msgid "Ethernet (modular)" msgstr "Ethernet (modular)" -#: dcim/choices.py:1010 +#: dcim/choices.py:1033 msgid "Ethernet (backplane)" msgstr "Ethernet (painel traseiro)" -#: dcim/choices.py:1040 +#: dcim/choices.py:1063 msgid "Cellular" msgstr "Celular" -#: dcim/choices.py:1090 dcim/forms/filtersets.py:303 -#: dcim/forms/filtersets.py:737 dcim/forms/filtersets.py:874 -#: dcim/forms/filtersets.py:1426 templates/dcim/inventoryitem.html:52 +#: dcim/choices.py:1115 dcim/forms/filtersets.py:303 +#: dcim/forms/filtersets.py:738 dcim/forms/filtersets.py:882 +#: dcim/forms/filtersets.py:1434 templates/dcim/inventoryitem.html:52 #: templates/dcim/virtualchassis_edit.html:54 msgid "Serial" msgstr "Serial" -#: dcim/choices.py:1105 +#: dcim/choices.py:1130 msgid "Coaxial" msgstr "Coaxial" -#: dcim/choices.py:1122 +#: dcim/choices.py:1150 msgid "Stacking" msgstr "Empilhamento" -#: dcim/choices.py:1172 +#: dcim/choices.py:1200 msgid "Half" msgstr "Metade" -#: dcim/choices.py:1173 +#: dcim/choices.py:1201 msgid "Full" msgstr "Completo" -#: dcim/choices.py:1174 netbox/preferences.py:31 wireless/choices.py:480 +#: dcim/choices.py:1202 netbox/preferences.py:31 wireless/choices.py:480 msgid "Auto" msgstr "Automático" -#: dcim/choices.py:1185 +#: dcim/choices.py:1213 msgid "Access" msgstr "Acesso" -#: dcim/choices.py:1186 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 +#: dcim/choices.py:1214 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 #: templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "Marcado" -#: dcim/choices.py:1187 +#: dcim/choices.py:1215 msgid "Tagged (All)" msgstr "Marcado (Todos)" -#: dcim/choices.py:1216 +#: dcim/choices.py:1244 msgid "IEEE Standard" msgstr "Padrão IEEE" -#: dcim/choices.py:1227 +#: dcim/choices.py:1255 msgid "Passive 24V (2-pair)" msgstr "24V passivo (2 pares)" -#: dcim/choices.py:1228 +#: dcim/choices.py:1256 msgid "Passive 24V (4-pair)" msgstr "24V passivo (4 pares)" -#: dcim/choices.py:1229 +#: dcim/choices.py:1257 msgid "Passive 48V (2-pair)" msgstr "48V passivo (2 pares)" -#: dcim/choices.py:1230 +#: dcim/choices.py:1258 msgid "Passive 48V (4-pair)" msgstr "48V passivo (4 pares)" -#: dcim/choices.py:1292 dcim/choices.py:1388 +#: dcim/choices.py:1320 dcim/choices.py:1416 msgid "Copper" msgstr "Cobre" -#: dcim/choices.py:1315 +#: dcim/choices.py:1343 msgid "Fiber Optic" msgstr "Fibra óptica" -#: dcim/choices.py:1404 +#: dcim/choices.py:1432 msgid "Fiber" msgstr "Fibra" -#: dcim/choices.py:1428 dcim/forms/filtersets.py:1138 +#: dcim/choices.py:1456 dcim/forms/filtersets.py:1146 msgid "Connected" msgstr "Conectado" -#: dcim/choices.py:1447 +#: dcim/choices.py:1475 msgid "Kilometers" msgstr "Quilômetros" -#: dcim/choices.py:1448 templates/dcim/cable_trace.html:65 +#: dcim/choices.py:1476 templates/dcim/cable_trace.html:65 msgid "Meters" msgstr "Metros" -#: dcim/choices.py:1449 +#: dcim/choices.py:1477 msgid "Centimeters" msgstr "Centímetros" -#: dcim/choices.py:1450 +#: dcim/choices.py:1478 msgid "Miles" msgstr "Miles" -#: dcim/choices.py:1451 templates/dcim/cable_trace.html:66 +#: dcim/choices.py:1479 templates/dcim/cable_trace.html:66 msgid "Feet" msgstr "Pés" -#: dcim/choices.py:1467 templates/dcim/device.html:319 +#: dcim/choices.py:1495 templates/dcim/device.html:319 #: templates/dcim/rack.html:152 msgid "Kilograms" msgstr "Quilogramas" -#: dcim/choices.py:1468 +#: dcim/choices.py:1496 msgid "Grams" msgstr "Gramas" -#: dcim/choices.py:1469 templates/dcim/rack.html:153 +#: dcim/choices.py:1497 templates/dcim/rack.html:153 msgid "Pounds" msgstr "Libras" -#: dcim/choices.py:1470 +#: dcim/choices.py:1498 msgid "Ounces" msgstr "Onças" -#: dcim/choices.py:1516 tenancy/choices.py:17 +#: dcim/choices.py:1544 tenancy/choices.py:17 msgid "Primary" msgstr "Primário" -#: dcim/choices.py:1517 +#: dcim/choices.py:1545 msgid "Redundant" msgstr "Redundante" -#: dcim/choices.py:1538 +#: dcim/choices.py:1566 msgid "Single phase" msgstr "Fase única" -#: dcim/choices.py:1539 +#: dcim/choices.py:1567 msgid "Three-phase" msgstr "Trifásico" @@ -2246,30 +2286,30 @@ msgid "Parent location (slug)" msgstr "Localização dos pais (lesma)" #: dcim/filtersets.py:257 dcim/filtersets.py:333 dcim/filtersets.py:432 -#: dcim/filtersets.py:1005 dcim/filtersets.py:1331 dcim/filtersets.py:2101 +#: dcim/filtersets.py:1005 dcim/filtersets.py:1341 dcim/filtersets.py:2111 msgid "Location (ID)" msgstr "Localização (ID)" #: dcim/filtersets.py:264 dcim/filtersets.py:340 dcim/filtersets.py:439 -#: dcim/filtersets.py:1337 extras/filtersets.py:494 +#: dcim/filtersets.py:1347 extras/filtersets.py:494 msgid "Location (slug)" msgstr "Localização (slug)" #: dcim/filtersets.py:354 dcim/filtersets.py:840 dcim/filtersets.py:942 -#: dcim/filtersets.py:1769 ipam/filtersets.py:381 ipam/filtersets.py:493 +#: dcim/filtersets.py:1779 ipam/filtersets.py:381 ipam/filtersets.py:493 #: ipam/filtersets.py:989 virtualization/filtersets.py:210 msgid "Role (ID)" msgstr "Função (ID)" #: dcim/filtersets.py:360 dcim/filtersets.py:846 dcim/filtersets.py:948 -#: dcim/filtersets.py:1775 extras/filtersets.py:510 ipam/filtersets.py:387 +#: dcim/filtersets.py:1785 extras/filtersets.py:510 ipam/filtersets.py:387 #: ipam/filtersets.py:499 ipam/filtersets.py:995 #: virtualization/filtersets.py:216 msgid "Role (slug)" msgstr "Papel (slug)" -#: dcim/filtersets.py:389 dcim/filtersets.py:1010 dcim/filtersets.py:1342 -#: dcim/filtersets.py:2163 +#: dcim/filtersets.py:389 dcim/filtersets.py:1010 dcim/filtersets.py:1352 +#: dcim/filtersets.py:2173 msgid "Rack (ID)" msgstr "Prateleira (ID)" @@ -2284,14 +2324,14 @@ msgid "User (name)" msgstr "Usuário (nome)" #: dcim/filtersets.py:481 dcim/filtersets.py:620 dcim/filtersets.py:830 -#: dcim/filtersets.py:881 dcim/filtersets.py:921 dcim/filtersets.py:1233 -#: dcim/filtersets.py:1759 +#: dcim/filtersets.py:881 dcim/filtersets.py:921 dcim/filtersets.py:1243 +#: dcim/filtersets.py:1769 msgid "Manufacturer (ID)" msgstr "Fabricante (ID)" #: dcim/filtersets.py:487 dcim/filtersets.py:626 dcim/filtersets.py:836 -#: dcim/filtersets.py:887 dcim/filtersets.py:927 dcim/filtersets.py:1239 -#: dcim/filtersets.py:1765 +#: dcim/filtersets.py:887 dcim/filtersets.py:927 dcim/filtersets.py:1249 +#: dcim/filtersets.py:1775 msgid "Manufacturer (slug)" msgstr "Fabricante (slug)" @@ -2313,37 +2353,37 @@ msgstr "Tem uma imagem traseira" #: dcim/filtersets.py:509 dcim/filtersets.py:630 dcim/filtersets.py:1068 #: dcim/forms/filtersets.py:466 dcim/forms/filtersets.py:562 -#: dcim/forms/filtersets.py:776 +#: dcim/forms/filtersets.py:777 msgid "Has console ports" msgstr "Tem portas de console" #: dcim/filtersets.py:513 dcim/filtersets.py:634 dcim/filtersets.py:1072 #: dcim/forms/filtersets.py:473 dcim/forms/filtersets.py:569 -#: dcim/forms/filtersets.py:783 +#: dcim/forms/filtersets.py:784 msgid "Has console server ports" msgstr "Tem portas de servidor de console" #: dcim/filtersets.py:517 dcim/filtersets.py:638 dcim/filtersets.py:1076 #: dcim/forms/filtersets.py:480 dcim/forms/filtersets.py:576 -#: dcim/forms/filtersets.py:790 +#: dcim/forms/filtersets.py:791 msgid "Has power ports" msgstr "Tem portas de alimentação" #: dcim/filtersets.py:521 dcim/filtersets.py:642 dcim/filtersets.py:1080 #: dcim/forms/filtersets.py:487 dcim/forms/filtersets.py:583 -#: dcim/forms/filtersets.py:797 +#: dcim/forms/filtersets.py:798 msgid "Has power outlets" msgstr "Tem tomadas elétricas" #: dcim/filtersets.py:525 dcim/filtersets.py:646 dcim/filtersets.py:1084 #: dcim/forms/filtersets.py:494 dcim/forms/filtersets.py:590 -#: dcim/forms/filtersets.py:804 +#: dcim/forms/filtersets.py:805 msgid "Has interfaces" msgstr "Tem interfaces" #: dcim/filtersets.py:529 dcim/filtersets.py:650 dcim/filtersets.py:1088 #: dcim/forms/filtersets.py:501 dcim/forms/filtersets.py:597 -#: dcim/forms/filtersets.py:811 +#: dcim/forms/filtersets.py:812 msgid "Has pass-through ports" msgstr "Tem portas de passagem" @@ -2359,19 +2399,19 @@ msgstr "Tem compartimentos para dispositivos" msgid "Has inventory items" msgstr "Tem itens de inventário" -#: dcim/filtersets.py:698 dcim/filtersets.py:937 dcim/filtersets.py:1363 +#: dcim/filtersets.py:698 dcim/filtersets.py:937 dcim/filtersets.py:1373 msgid "Device type (ID)" msgstr "Tipo de dispositivo (ID)" -#: dcim/filtersets.py:717 dcim/filtersets.py:1244 +#: dcim/filtersets.py:717 dcim/filtersets.py:1254 msgid "Module type (ID)" msgstr "Tipo de módulo (ID)" -#: dcim/filtersets.py:752 dcim/filtersets.py:1514 +#: dcim/filtersets.py:752 dcim/filtersets.py:1524 msgid "Power port (ID)" msgstr "Porta de alimentação (ID)" -#: dcim/filtersets.py:826 dcim/filtersets.py:1755 +#: dcim/filtersets.py:826 dcim/filtersets.py:1765 msgid "Parent inventory item (ID)" msgstr "Item do inventário principal (ID)" @@ -2397,8 +2437,8 @@ msgstr "Plataforma (ID)" msgid "Platform (slug)" msgstr "Plataforma (slug)" -#: dcim/filtersets.py:999 dcim/filtersets.py:1326 dcim/filtersets.py:1853 -#: dcim/filtersets.py:2095 dcim/filtersets.py:2154 +#: dcim/filtersets.py:999 dcim/filtersets.py:1336 dcim/filtersets.py:1863 +#: dcim/filtersets.py:2105 dcim/filtersets.py:2164 msgid "Site name (slug)" msgstr "Nome do site (slug)" @@ -2419,15 +2459,15 @@ msgid "Is full depth" msgstr "É de profundidade total" #: dcim/filtersets.py:1040 dcim/forms/common.py:18 -#: dcim/forms/filtersets.py:746 dcim/forms/filtersets.py:1283 +#: dcim/forms/filtersets.py:747 dcim/forms/filtersets.py:1291 #: dcim/models/device_components.py:519 virtualization/filtersets.py:230 #: virtualization/filtersets.py:297 virtualization/forms/filtersets.py:172 #: virtualization/forms/filtersets.py:219 msgid "MAC address" msgstr "Endereço MAC" -#: dcim/filtersets.py:1047 dcim/filtersets.py:1201 -#: dcim/forms/filtersets.py:755 dcim/forms/filtersets.py:841 +#: dcim/filtersets.py:1047 dcim/filtersets.py:1211 +#: dcim/forms/filtersets.py:756 dcim/forms/filtersets.py:849 #: virtualization/filtersets.py:234 virtualization/forms/filtersets.py:176 msgid "Has a primary IP" msgstr "Tem um IP primário" @@ -2448,59 +2488,63 @@ msgstr "É membro do chassi virtual" msgid "OOB IP (ID)" msgstr "COTOB IP (ID)" -#: dcim/filtersets.py:1184 +#: dcim/filtersets.py:1105 +msgid "Has virtual device context" +msgstr "Tem contexto de dispositivo virtual" + +#: dcim/filtersets.py:1194 msgid "VDC (ID)" msgstr "VDC (IDENTIFICAÇÃO)" -#: dcim/filtersets.py:1189 +#: dcim/filtersets.py:1199 msgid "Device model" msgstr "Modelo do dispositivo" -#: dcim/filtersets.py:1194 ipam/filtersets.py:632 vpn/filtersets.py:102 +#: dcim/filtersets.py:1204 ipam/filtersets.py:632 vpn/filtersets.py:102 #: vpn/filtersets.py:420 msgid "Interface (ID)" msgstr "Interface (ID)" -#: dcim/filtersets.py:1250 +#: dcim/filtersets.py:1260 msgid "Module type (model)" msgstr "Tipo de módulo (modelo)" -#: dcim/filtersets.py:1256 +#: dcim/filtersets.py:1266 msgid "Module Bay (ID)" msgstr "Compartimento do módulo (ID)" -#: dcim/filtersets.py:1260 dcim/filtersets.py:1352 ipam/filtersets.py:611 +#: dcim/filtersets.py:1270 dcim/filtersets.py:1362 ipam/filtersets.py:611 #: ipam/filtersets.py:851 ipam/filtersets.py:1075 #: virtualization/filtersets.py:161 vpn/filtersets.py:398 msgid "Device (ID)" msgstr "Dispositivo (ID)" -#: dcim/filtersets.py:1348 +#: dcim/filtersets.py:1358 msgid "Rack (name)" msgstr "Rack (nome)" -#: dcim/filtersets.py:1358 ipam/filtersets.py:606 ipam/filtersets.py:846 +#: dcim/filtersets.py:1368 ipam/filtersets.py:606 ipam/filtersets.py:846 #: ipam/filtersets.py:1081 vpn/filtersets.py:393 msgid "Device (name)" msgstr "Dispositivo (nome)" -#: dcim/filtersets.py:1369 +#: dcim/filtersets.py:1379 msgid "Device type (model)" msgstr "Tipo de dispositivo (modelo)" -#: dcim/filtersets.py:1374 +#: dcim/filtersets.py:1384 msgid "Device role (ID)" msgstr "Função do dispositivo (ID)" -#: dcim/filtersets.py:1380 +#: dcim/filtersets.py:1390 msgid "Device role (slug)" msgstr "Função do dispositivo (slug)" -#: dcim/filtersets.py:1385 +#: dcim/filtersets.py:1395 msgid "Virtual Chassis (ID)" msgstr "Chassi virtual (ID)" -#: dcim/filtersets.py:1391 dcim/forms/filtersets.py:107 +#: dcim/filtersets.py:1401 dcim/forms/filtersets.py:107 #: dcim/tables/devices.py:211 netbox/navigation/menu.py:66 #: templates/dcim/device.html:119 templates/dcim/device_edit.html:93 #: templates/dcim/virtualchassis.html:20 @@ -2509,37 +2553,37 @@ msgstr "Chassi virtual (ID)" msgid "Virtual Chassis" msgstr "Chassi virtual" -#: dcim/filtersets.py:1411 +#: dcim/filtersets.py:1421 msgid "Module (ID)" msgstr "Módulo (ID)" -#: dcim/filtersets.py:1418 +#: dcim/filtersets.py:1428 msgid "Cable (ID)" msgstr "Cabo (ID)" -#: dcim/filtersets.py:1527 ipam/forms/bulk_import.py:188 +#: dcim/filtersets.py:1537 ipam/forms/bulk_import.py:188 #: vpn/forms/bulk_import.py:308 msgid "Assigned VLAN" msgstr "VLAN atribuída" -#: dcim/filtersets.py:1531 +#: dcim/filtersets.py:1541 msgid "Assigned VID" msgstr "VID atribuído" -#: dcim/filtersets.py:1536 dcim/forms/bulk_edit.py:1382 -#: dcim/forms/bulk_import.py:836 dcim/forms/filtersets.py:1326 +#: dcim/filtersets.py:1546 dcim/forms/bulk_edit.py:1382 +#: dcim/forms/bulk_import.py:836 dcim/forms/filtersets.py:1334 #: dcim/forms/model_forms.py:1322 dcim/models/device_components.py:712 -#: dcim/tables/devices.py:618 ipam/filtersets.py:316 ipam/filtersets.py:327 +#: dcim/tables/devices.py:622 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:227 ipam/forms/bulk_edit.py:282 #: ipam/forms/bulk_edit.py:324 ipam/forms/bulk_import.py:156 #: ipam/forms/bulk_import.py:242 ipam/forms/bulk_import.py:278 -#: ipam/forms/filtersets.py:67 ipam/forms/filtersets.py:171 -#: ipam/forms/filtersets.py:302 ipam/forms/model_forms.py:60 +#: ipam/forms/filtersets.py:67 ipam/forms/filtersets.py:172 +#: ipam/forms/filtersets.py:309 ipam/forms/model_forms.py:60 #: ipam/forms/model_forms.py:200 ipam/forms/model_forms.py:245 -#: ipam/forms/model_forms.py:298 ipam/forms/model_forms.py:420 -#: ipam/forms/model_forms.py:434 ipam/forms/model_forms.py:448 -#: ipam/models/ip.py:232 ipam/models/ip.py:511 ipam/models/ip.py:719 +#: ipam/forms/model_forms.py:298 ipam/forms/model_forms.py:429 +#: ipam/forms/model_forms.py:443 ipam/forms/model_forms.py:457 +#: ipam/models/ip.py:233 ipam/models/ip.py:512 ipam/models/ip.py:720 #: ipam/models/vrfs.py:62 ipam/tables/ip.py:241 ipam/tables/ip.py:306 #: ipam/tables/ip.py:356 ipam/tables/ip.py:445 #: templates/dcim/interface.html:133 templates/ipam/ipaddress.html:18 @@ -2555,18 +2599,18 @@ msgstr "VID atribuído" msgid "VRF" msgstr "VRF" -#: dcim/filtersets.py:1542 ipam/filtersets.py:322 ipam/filtersets.py:333 +#: dcim/filtersets.py:1552 ipam/filtersets.py:322 ipam/filtersets.py:333 #: ipam/filtersets.py:489 ipam/filtersets.py:590 ipam/filtersets.py:601 msgid "VRF (RD)" msgstr "VRF (VERMELHO)" -#: dcim/filtersets.py:1547 ipam/filtersets.py:1016 vpn/filtersets.py:361 +#: dcim/filtersets.py:1557 ipam/filtersets.py:1016 vpn/filtersets.py:361 msgid "L2VPN (ID)" msgstr "L2VPN (ID)" -#: dcim/filtersets.py:1553 dcim/forms/filtersets.py:1331 -#: dcim/tables/devices.py:566 ipam/filtersets.py:1022 -#: ipam/forms/filtersets.py:518 ipam/tables/vlans.py:133 +#: dcim/filtersets.py:1563 dcim/forms/filtersets.py:1339 +#: dcim/tables/devices.py:570 ipam/filtersets.py:1022 +#: ipam/forms/filtersets.py:525 ipam/tables/vlans.py:133 #: templates/dcim/interface.html:93 templates/ipam/vlan.html:66 #: templates/vpn/l2vpntermination.html:12 #: virtualization/forms/filtersets.py:229 vpn/forms/bulk_import.py:280 @@ -2575,82 +2619,82 @@ msgstr "L2VPN (ID)" msgid "L2VPN" msgstr "L2VPN" -#: dcim/filtersets.py:1585 +#: dcim/filtersets.py:1595 msgid "Virtual Chassis Interfaces for Device" msgstr "Interfaces de chassi virtual para dispositivo" -#: dcim/filtersets.py:1590 +#: dcim/filtersets.py:1600 msgid "Virtual Chassis Interfaces for Device (ID)" msgstr "Interfaces de chassi virtual para dispositivo (ID)" -#: dcim/filtersets.py:1594 +#: dcim/filtersets.py:1604 msgid "Kind of interface" msgstr "Tipo de interface" -#: dcim/filtersets.py:1599 virtualization/filtersets.py:289 +#: dcim/filtersets.py:1609 virtualization/filtersets.py:289 msgid "Parent interface (ID)" msgstr "Interface principal (ID)" -#: dcim/filtersets.py:1604 virtualization/filtersets.py:294 +#: dcim/filtersets.py:1614 virtualization/filtersets.py:294 msgid "Bridged interface (ID)" msgstr "Interface interligada (ID)" -#: dcim/filtersets.py:1609 +#: dcim/filtersets.py:1619 msgid "LAG interface (ID)" msgstr "Interface LAG (ID)" -#: dcim/filtersets.py:1636 dcim/filtersets.py:1648 -#: dcim/forms/filtersets.py:1243 dcim/forms/model_forms.py:1634 +#: dcim/filtersets.py:1646 dcim/filtersets.py:1658 +#: dcim/forms/filtersets.py:1251 dcim/forms/model_forms.py:1634 #: templates/dcim/virtualdevicecontext.html:15 msgid "Virtual Device Context" msgstr "Contexto do dispositivo virtual" -#: dcim/filtersets.py:1642 +#: dcim/filtersets.py:1652 msgid "Virtual Device Context (Identifier)" msgstr "Contexto do dispositivo virtual (identificador)" -#: dcim/filtersets.py:1653 templates/wireless/wirelesslan.html:11 +#: dcim/filtersets.py:1663 templates/wireless/wirelesslan.html:11 #: wireless/forms/model_forms.py:53 msgid "Wireless LAN" msgstr "LAN sem fio" -#: dcim/filtersets.py:1657 dcim/tables/devices.py:605 +#: dcim/filtersets.py:1667 dcim/tables/devices.py:609 msgid "Wireless link" msgstr "Link sem fio" -#: dcim/filtersets.py:1727 +#: dcim/filtersets.py:1737 msgid "Installed module (ID)" msgstr "Módulo instalado (ID)" -#: dcim/filtersets.py:1738 +#: dcim/filtersets.py:1748 msgid "Installed device (ID)" msgstr "Dispositivo instalado (ID)" -#: dcim/filtersets.py:1744 +#: dcim/filtersets.py:1754 msgid "Installed device (name)" msgstr "Dispositivo instalado (nome)" -#: dcim/filtersets.py:1810 +#: dcim/filtersets.py:1820 msgid "Master (ID)" msgstr "Mestre (ID)" -#: dcim/filtersets.py:1816 +#: dcim/filtersets.py:1826 msgid "Master (name)" msgstr "Mestre (nome)" -#: dcim/filtersets.py:1858 tenancy/filtersets.py:246 +#: dcim/filtersets.py:1868 tenancy/filtersets.py:246 msgid "Tenant (ID)" msgstr "Inquilino (ID)" -#: dcim/filtersets.py:1864 extras/filtersets.py:570 tenancy/filtersets.py:252 +#: dcim/filtersets.py:1874 extras/filtersets.py:570 tenancy/filtersets.py:252 msgid "Tenant (slug)" msgstr "Inquilino (lesma)" -#: dcim/filtersets.py:1900 dcim/forms/filtersets.py:988 +#: dcim/filtersets.py:1910 dcim/forms/filtersets.py:996 msgid "Unterminated" msgstr "Não terminado" -#: dcim/filtersets.py:2158 +#: dcim/filtersets.py:2168 msgid "Power panel (ID)" msgstr "Painel de alimentação (ID)" @@ -2658,13 +2702,13 @@ msgstr "Painel de alimentação (ID)" #: extras/forms/model_forms.py:443 extras/forms/model_forms.py:495 #: netbox/forms/base.py:84 netbox/forms/mixins.py:81 #: netbox/tables/columns.py:458 -#: templates/circuits/inc/circuit_termination.html:118 +#: 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 msgid "Tags" msgstr "Etiquetas" -#: dcim/forms/bulk_create.py:112 dcim/forms/filtersets.py:1388 +#: dcim/forms/bulk_create.py:112 dcim/forms/filtersets.py:1396 #: dcim/forms/model_forms.py:431 dcim/forms/model_forms.py:486 #: dcim/forms/object_create.py:197 dcim/forms/object_create.py:353 #: dcim/tables/devices.py:170 dcim/tables/devices.py:702 @@ -2686,7 +2730,7 @@ msgstr "" #: dcim/forms/bulk_edit.py:116 dcim/forms/bulk_import.py:99 #: dcim/forms/model_forms.py:116 dcim/tables/sites.py:89 #: ipam/filtersets.py:985 ipam/forms/bulk_edit.py:531 -#: ipam/forms/bulk_import.py:444 ipam/forms/model_forms.py:517 +#: ipam/forms/bulk_import.py:444 ipam/forms/model_forms.py:526 #: ipam/tables/fhrp.py:67 ipam/tables/vlans.py:118 ipam/tables/vlans.py:221 #: templates/dcim/interface.html:284 templates/dcim/site.html:36 #: templates/ipam/inc/panels/fhrp_groups.html:23 templates/ipam/vlan.html:27 @@ -2733,7 +2777,7 @@ msgstr "Fuso horário" #: dcim/forms/bulk_edit.py:267 dcim/forms/bulk_edit.py:1160 #: dcim/forms/bulk_edit.py:1548 dcim/forms/bulk_import.py:207 #: dcim/forms/bulk_import.py:1021 dcim/forms/filtersets.py:300 -#: dcim/forms/filtersets.py:705 dcim/forms/filtersets.py:1418 +#: dcim/forms/filtersets.py:706 dcim/forms/filtersets.py:1426 #: dcim/forms/model_forms.py:219 dcim/forms/model_forms.py:1015 #: dcim/forms/model_forms.py:1454 dcim/forms/object_import.py:181 #: dcim/tables/devices.py:174 dcim/tables/devices.py:810 @@ -2743,10 +2787,10 @@ msgstr "Fuso horário" #: ipam/forms/bulk_edit.py:343 ipam/forms/bulk_edit.py:549 #: ipam/forms/bulk_import.py:196 ipam/forms/bulk_import.py:261 #: ipam/forms/bulk_import.py:297 ipam/forms/bulk_import.py:463 -#: ipam/forms/filtersets.py:236 ipam/forms/filtersets.py:282 -#: ipam/forms/filtersets.py:353 ipam/forms/filtersets.py:509 +#: ipam/forms/filtersets.py:237 ipam/forms/filtersets.py:289 +#: ipam/forms/filtersets.py:360 ipam/forms/filtersets.py:516 #: ipam/forms/model_forms.py:186 ipam/forms/model_forms.py:219 -#: ipam/forms/model_forms.py:248 ipam/forms/model_forms.py:680 +#: ipam/forms/model_forms.py:248 ipam/forms/model_forms.py:689 #: ipam/tables/ip.py:257 ipam/tables/ip.py:313 ipam/tables/ip.py:363 #: ipam/tables/vlans.py:126 ipam/tables/vlans.py:230 #: templates/dcim/device.html:179 @@ -2779,8 +2823,8 @@ msgid "Serial Number" msgstr "Número de série" #: dcim/forms/bulk_edit.py:277 dcim/forms/filtersets.py:307 -#: dcim/forms/filtersets.py:741 dcim/forms/filtersets.py:878 -#: dcim/forms/filtersets.py:1430 +#: dcim/forms/filtersets.py:742 dcim/forms/filtersets.py:886 +#: dcim/forms/filtersets.py:1438 msgid "Asset tag" msgstr "Etiqueta de ativo" @@ -2851,14 +2895,14 @@ msgstr "Unidade de peso" #: dcim/forms/bulk_import.py:498 dcim/forms/bulk_import.py:1309 #: dcim/forms/bulk_import.py:1313 dcim/forms/filtersets.py:102 #: dcim/forms/filtersets.py:340 dcim/forms/filtersets.py:354 -#: dcim/forms/filtersets.py:392 dcim/forms/filtersets.py:700 -#: dcim/forms/filtersets.py:946 dcim/forms/filtersets.py:1078 +#: dcim/forms/filtersets.py:392 dcim/forms/filtersets.py:701 +#: dcim/forms/filtersets.py:954 dcim/forms/filtersets.py:1086 #: dcim/forms/model_forms.py:226 dcim/forms/model_forms.py:248 #: dcim/forms/model_forms.py:422 dcim/forms/model_forms.py:700 #: dcim/forms/object_create.py:400 dcim/tables/devices.py:166 #: dcim/tables/power.py:70 dcim/tables/racks.py:148 -#: ipam/forms/bulk_edit.py:465 ipam/forms/filtersets.py:435 -#: ipam/forms/model_forms.py:601 templates/dcim/device.html:29 +#: ipam/forms/bulk_edit.py:465 ipam/forms/filtersets.py:442 +#: ipam/forms/model_forms.py:610 templates/dcim/device.html:29 #: 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 @@ -2870,7 +2914,7 @@ msgstr "Rack" #: dcim/forms/bulk_edit.py:349 dcim/forms/bulk_edit.py:628 #: dcim/forms/filtersets.py:248 dcim/forms/filtersets.py:333 #: dcim/forms/filtersets.py:416 dcim/forms/filtersets.py:543 -#: dcim/forms/filtersets.py:651 dcim/forms/filtersets.py:853 +#: dcim/forms/filtersets.py:651 dcim/forms/filtersets.py:861 #: dcim/forms/model_forms.py:610 dcim/forms/model_forms.py:1524 #: templates/dcim/device_edit.html:20 msgid "Hardware" @@ -2883,8 +2927,8 @@ msgstr "Hardware" #: dcim/forms/bulk_import.py:353 dcim/forms/bulk_import.py:395 #: dcim/forms/bulk_import.py:431 dcim/forms/bulk_import.py:1027 #: dcim/forms/filtersets.py:429 dcim/forms/filtersets.py:554 -#: dcim/forms/filtersets.py:630 dcim/forms/filtersets.py:710 -#: dcim/forms/filtersets.py:858 dcim/forms/filtersets.py:1423 +#: dcim/forms/filtersets.py:630 dcim/forms/filtersets.py:711 +#: dcim/forms/filtersets.py:866 dcim/forms/filtersets.py:1431 #: dcim/forms/model_forms.py:281 dcim/forms/model_forms.py:293 #: dcim/forms/model_forms.py:339 dcim/forms/model_forms.py:379 #: dcim/forms/model_forms.py:1020 dcim/forms/model_forms.py:1459 @@ -2918,7 +2962,7 @@ msgstr "Excluir da utilização" #: dcim/forms/bulk_edit.py:431 dcim/forms/bulk_edit.py:603 #: dcim/forms/bulk_import.py:525 dcim/forms/filtersets.py:446 -#: dcim/forms/filtersets.py:732 templates/dcim/device.html:97 +#: dcim/forms/filtersets.py:733 templates/dcim/device.html:97 #: templates/dcim/devicetype.html:65 msgid "Airflow" msgstr "Fluxo de ar" @@ -2945,7 +2989,7 @@ msgstr "Função da VM" #: dcim/forms/bulk_import.py:380 dcim/forms/bulk_import.py:402 #: dcim/forms/bulk_import.py:406 dcim/forms/bulk_import.py:531 #: dcim/forms/bulk_import.py:535 dcim/forms/filtersets.py:619 -#: dcim/forms/filtersets.py:635 dcim/forms/filtersets.py:751 +#: dcim/forms/filtersets.py:635 dcim/forms/filtersets.py:752 #: dcim/forms/model_forms.py:358 dcim/forms/model_forms.py:384 #: dcim/forms/model_forms.py:495 virtualization/forms/bulk_import.py:132 #: virtualization/forms/bulk_import.py:133 @@ -2967,7 +3011,7 @@ msgid "Device role" msgstr "Função do dispositivo" #: dcim/forms/bulk_edit.py:593 dcim/forms/bulk_import.py:443 -#: dcim/forms/filtersets.py:724 dcim/forms/model_forms.py:394 +#: dcim/forms/filtersets.py:725 dcim/forms/model_forms.py:394 #: dcim/forms/model_forms.py:456 dcim/tables/devices.py:187 #: extras/filtersets.py:515 templates/dcim/device.html:183 #: templates/dcim/platform.html:26 @@ -2989,28 +3033,28 @@ msgstr "Plataforma" #: dcim/forms/bulk_import.py:956 dcim/forms/bulk_import.py:968 #: dcim/forms/bulk_import.py:1016 dcim/forms/bulk_import.py:1373 #: dcim/forms/connections.py:24 dcim/forms/filtersets.py:129 -#: dcim/forms/filtersets.py:832 dcim/forms/filtersets.py:962 -#: dcim/forms/filtersets.py:1152 dcim/forms/filtersets.py:1174 -#: dcim/forms/filtersets.py:1196 dcim/forms/filtersets.py:1213 -#: dcim/forms/filtersets.py:1233 dcim/forms/filtersets.py:1341 -#: dcim/forms/filtersets.py:1363 dcim/forms/filtersets.py:1384 -#: dcim/forms/filtersets.py:1399 dcim/forms/filtersets.py:1413 -#: dcim/forms/filtersets.py:1476 dcim/forms/filtersets.py:1500 -#: dcim/forms/filtersets.py:1524 dcim/forms/model_forms.py:573 +#: dcim/forms/filtersets.py:840 dcim/forms/filtersets.py:970 +#: dcim/forms/filtersets.py:1160 dcim/forms/filtersets.py:1182 +#: dcim/forms/filtersets.py:1204 dcim/forms/filtersets.py:1221 +#: dcim/forms/filtersets.py:1241 dcim/forms/filtersets.py:1349 +#: dcim/forms/filtersets.py:1371 dcim/forms/filtersets.py:1392 +#: dcim/forms/filtersets.py:1407 dcim/forms/filtersets.py:1421 +#: dcim/forms/filtersets.py:1484 dcim/forms/filtersets.py:1508 +#: dcim/forms/filtersets.py:1532 dcim/forms/model_forms.py:573 #: dcim/forms/model_forms.py:794 dcim/forms/model_forms.py:1153 #: dcim/forms/model_forms.py:1608 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:290 -#: dcim/tables/devices.py:355 dcim/tables/devices.py:399 -#: dcim/tables/devices.py:444 dcim/tables/devices.py:498 -#: dcim/tables/devices.py:590 dcim/tables/devices.py:692 +#: dcim/tables/devices.py:359 dcim/tables/devices.py:403 +#: dcim/tables/devices.py:448 dcim/tables/devices.py:502 +#: dcim/tables/devices.py:594 dcim/tables/devices.py:692 #: dcim/tables/devices.py:752 dcim/tables/devices.py:802 #: dcim/tables/devices.py:862 dcim/tables/devices.py:914 #: dcim/tables/devices.py:1040 dcim/tables/modules.py:52 #: extras/forms/filtersets.py:330 ipam/forms/bulk_import.py:303 -#: ipam/forms/bulk_import.py:489 ipam/forms/filtersets.py:551 -#: ipam/forms/model_forms.py:317 ipam/forms/model_forms.py:716 -#: ipam/forms/model_forms.py:749 ipam/forms/model_forms.py:775 +#: ipam/forms/bulk_import.py:489 ipam/forms/filtersets.py:558 +#: ipam/forms/model_forms.py:317 ipam/forms/model_forms.py:725 +#: ipam/forms/model_forms.py:758 ipam/forms/model_forms.py:784 #: ipam/tables/vlans.py:176 templates/dcim/consoleport.html:20 #: templates/dcim/consoleserverport.html:20 templates/dcim/device.html:14 #: templates/dcim/device.html:128 templates/dcim/device_edit.html:10 @@ -3065,13 +3109,13 @@ msgstr "Tipo de módulo" msgid "Label" msgstr "Rótulo" -#: dcim/forms/bulk_edit.py:706 dcim/forms/filtersets.py:979 +#: dcim/forms/bulk_edit.py:706 dcim/forms/filtersets.py:987 #: templates/dcim/cable.html:50 msgid "Length" msgstr "Comprimento" #: dcim/forms/bulk_edit.py:711 dcim/forms/bulk_import.py:1174 -#: dcim/forms/bulk_import.py:1177 dcim/forms/filtersets.py:983 +#: dcim/forms/bulk_import.py:1177 dcim/forms/filtersets.py:991 msgid "Length unit" msgstr "Unidade de comprimento" @@ -3080,41 +3124,34 @@ msgid "Domain" msgstr "Domínio" #: dcim/forms/bulk_edit.py:803 dcim/forms/bulk_import.py:1296 -#: dcim/forms/filtersets.py:1069 dcim/forms/model_forms.py:695 +#: dcim/forms/filtersets.py:1077 dcim/forms/model_forms.py:695 msgid "Power panel" msgstr "Painel de alimentação" #: dcim/forms/bulk_edit.py:825 dcim/forms/bulk_import.py:1332 -#: dcim/forms/filtersets.py:1091 templates/dcim/powerfeed.html:83 +#: dcim/forms/filtersets.py:1099 templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "Fornecimento" #: dcim/forms/bulk_edit.py:831 dcim/forms/bulk_import.py:1337 -#: dcim/forms/filtersets.py:1096 templates/dcim/powerfeed.html:95 +#: dcim/forms/filtersets.py:1104 templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "Estágio" -#: dcim/forms/bulk_edit.py:837 dcim/forms/filtersets.py:1101 +#: dcim/forms/bulk_edit.py:837 dcim/forms/filtersets.py:1109 #: templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "Voltagem" -#: dcim/forms/bulk_edit.py:841 dcim/forms/filtersets.py:1105 +#: dcim/forms/bulk_edit.py:841 dcim/forms/filtersets.py:1113 #: templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "Amperagem" -#: dcim/forms/bulk_edit.py:845 dcim/forms/filtersets.py:1109 +#: dcim/forms/bulk_edit.py:845 dcim/forms/filtersets.py:1117 msgid "Max utilization" msgstr "Utilização máxima" -#: dcim/forms/bulk_edit.py:849 dcim/forms/bulk_edit.py:1208 -#: dcim/forms/bulk_edit.py:1225 dcim/forms/bulk_edit.py:1242 -#: dcim/forms/bulk_edit.py:1260 dcim/forms/bulk_edit.py:1348 -#: dcim/forms/bulk_edit.py:1487 dcim/forms/bulk_edit.py:1504 -msgid "Mark connected" -msgstr "Marcar conectado" - #: dcim/forms/bulk_edit.py:934 msgid "Maximum draw" msgstr "Sorteio máximo" @@ -3148,7 +3185,7 @@ msgid "Management only" msgstr "Somente gerenciamento" #: dcim/forms/bulk_edit.py:1037 dcim/forms/bulk_edit.py:1339 -#: dcim/forms/bulk_import.py:821 dcim/forms/filtersets.py:1292 +#: dcim/forms/bulk_import.py:821 dcim/forms/filtersets.py:1300 #: dcim/forms/object_import.py:90 #: dcim/models/device_component_templates.py:411 #: dcim/models/device_components.py:671 @@ -3156,14 +3193,14 @@ msgid "PoE mode" msgstr "Modo PoE" #: dcim/forms/bulk_edit.py:1043 dcim/forms/bulk_edit.py:1345 -#: dcim/forms/bulk_import.py:827 dcim/forms/filtersets.py:1297 +#: dcim/forms/bulk_import.py:827 dcim/forms/filtersets.py:1305 #: dcim/forms/object_import.py:95 #: dcim/models/device_component_templates.py:417 #: dcim/models/device_components.py:677 msgid "PoE type" msgstr "Tipo PoE" -#: dcim/forms/bulk_edit.py:1049 dcim/forms/filtersets.py:1302 +#: dcim/forms/bulk_edit.py:1049 dcim/forms/filtersets.py:1310 #: dcim/forms/object_import.py:100 msgid "Wireless role" msgstr "Função sem fio" @@ -3188,10 +3225,10 @@ msgid "Virtual device contexts" msgstr "Contextos de dispositivos virtuais" #: dcim/forms/bulk_edit.py:1324 dcim/forms/bulk_import.py:659 -#: dcim/forms/bulk_import.py:685 dcim/forms/filtersets.py:1161 -#: dcim/forms/filtersets.py:1183 dcim/forms/filtersets.py:1256 -#: dcim/tables/devices.py:602 -#: templates/circuits/inc/circuit_termination.html:93 +#: dcim/forms/bulk_import.py:685 dcim/forms/filtersets.py:1169 +#: dcim/forms/filtersets.py:1191 dcim/forms/filtersets.py:1264 +#: dcim/tables/devices.py:606 +#: templates/circuits/inc/circuit_termination_fields.html:67 #: templates/dcim/consoleport.html:40 templates/dcim/consoleserverport.html:40 msgid "Speed" msgstr "Rapidez" @@ -3208,20 +3245,20 @@ msgid "Mode" msgstr "Modo" #: dcim/forms/bulk_edit.py:1361 dcim/forms/model_forms.py:1299 -#: ipam/forms/bulk_import.py:177 ipam/forms/filtersets.py:498 +#: ipam/forms/bulk_import.py:177 ipam/forms/filtersets.py:505 #: ipam/models/vlans.py:84 virtualization/forms/bulk_edit.py:240 #: virtualization/forms/model_forms.py:321 msgid "VLAN group" msgstr "Grupo de VLAN" #: dcim/forms/bulk_edit.py:1369 dcim/forms/model_forms.py:1304 -#: dcim/tables/devices.py:575 virtualization/forms/bulk_edit.py:248 +#: dcim/tables/devices.py:579 virtualization/forms/bulk_edit.py:248 #: virtualization/forms/model_forms.py:326 msgid "Untagged VLAN" msgstr "VLAN sem etiqueta" #: dcim/forms/bulk_edit.py:1377 dcim/forms/model_forms.py:1313 -#: dcim/tables/devices.py:581 virtualization/forms/bulk_edit.py:256 +#: dcim/tables/devices.py:585 virtualization/forms/bulk_edit.py:256 #: virtualization/forms/model_forms.py:335 msgid "Tagged VLANs" msgstr "VLANs marcadas" @@ -3231,12 +3268,12 @@ msgid "Wireless LAN group" msgstr "Grupo de LAN sem fio" #: dcim/forms/bulk_edit.py:1392 dcim/forms/model_forms.py:1291 -#: dcim/tables/devices.py:611 netbox/navigation/menu.py:133 +#: dcim/tables/devices.py:615 netbox/navigation/menu.py:133 #: templates/dcim/interface.html:280 wireless/tables/wirelesslan.py:24 msgid "Wireless LANs" msgstr "LANs sem fio" -#: dcim/forms/bulk_edit.py:1401 dcim/forms/filtersets.py:1229 +#: dcim/forms/bulk_edit.py:1401 dcim/forms/filtersets.py:1237 #: dcim/forms/model_forms.py:1334 ipam/forms/bulk_edit.py:271 #: ipam/forms/bulk_edit.py:362 ipam/forms/filtersets.py:169 #: templates/dcim/interface.html:122 templates/ipam/prefix.html:95 @@ -3249,7 +3286,7 @@ msgstr "Endereçando" msgid "Operation" msgstr "Operação" -#: dcim/forms/bulk_edit.py:1403 dcim/forms/filtersets.py:1230 +#: dcim/forms/bulk_edit.py:1403 dcim/forms/filtersets.py:1238 #: dcim/forms/model_forms.py:932 dcim/forms/model_forms.py:1337 msgid "PoE" msgstr "PoE" @@ -3405,8 +3442,8 @@ msgstr "Chassi virtual" #: dcim/forms/bulk_import.py:462 dcim/forms/model_forms.py:465 #: dcim/tables/devices.py:207 extras/filtersets.py:548 #: extras/forms/filtersets.py:331 ipam/forms/bulk_edit.py:479 -#: ipam/forms/filtersets.py:408 ipam/forms/filtersets.py:452 -#: ipam/forms/model_forms.py:618 templates/dcim/device.html:231 +#: ipam/forms/filtersets.py:415 ipam/forms/filtersets.py:459 +#: ipam/forms/model_forms.py:627 templates/dcim/device.html:231 #: templates/virtualization/cluster.html:10 #: templates/virtualization/virtualmachine.html:88 #: templates/virtualization/virtualmachine.html:97 @@ -3549,7 +3586,7 @@ msgstr "Nomes VDC separados por vírgulas, entre aspas duplas. Exemplo:" msgid "Physical medium" msgstr "Meio físico" -#: dcim/forms/bulk_import.py:813 dcim/forms/filtersets.py:1263 +#: dcim/forms/bulk_import.py:813 dcim/forms/filtersets.py:1271 msgid "Duplex" msgstr "Duplex" @@ -3567,8 +3604,8 @@ msgstr "Modo operacional IEEE 802.1Q (para interfaces L2)" #: dcim/forms/bulk_import.py:840 ipam/forms/bulk_import.py:160 #: ipam/forms/bulk_import.py:246 ipam/forms/bulk_import.py:282 -#: ipam/forms/filtersets.py:200 ipam/forms/filtersets.py:270 -#: ipam/forms/filtersets.py:329 virtualization/forms/bulk_import.py:175 +#: ipam/forms/filtersets.py:201 ipam/forms/filtersets.py:277 +#: ipam/forms/filtersets.py:336 virtualization/forms/bulk_import.py:175 msgid "Assigned VRF" msgstr "VRF atribuído" @@ -3795,29 +3832,33 @@ msgstr "Componentes" msgid "Subdevice role" msgstr "Função do subdispositivo" -#: dcim/forms/filtersets.py:718 +#: dcim/forms/filtersets.py:719 msgid "Model" msgstr "modelo" -#: dcim/forms/filtersets.py:762 +#: dcim/forms/filtersets.py:763 msgid "Has an OOB IP" msgstr "Tem um IP OOB" -#: dcim/forms/filtersets.py:769 +#: dcim/forms/filtersets.py:770 msgid "Virtual chassis member" msgstr "Membro do chassi virtual" -#: dcim/forms/filtersets.py:1121 +#: dcim/forms/filtersets.py:819 +msgid "Has virtual device contexts" +msgstr "Tem contextos de dispositivos virtuais" + +#: dcim/forms/filtersets.py:1129 msgid "Cabled" msgstr "Cablado" -#: dcim/forms/filtersets.py:1128 +#: dcim/forms/filtersets.py:1136 msgid "Occupied" msgstr "Ocupado" -#: dcim/forms/filtersets.py:1153 dcim/forms/filtersets.py:1175 -#: dcim/forms/filtersets.py:1197 dcim/forms/filtersets.py:1214 -#: dcim/forms/filtersets.py:1234 dcim/tables/devices.py:348 +#: dcim/forms/filtersets.py:1161 dcim/forms/filtersets.py:1183 +#: dcim/forms/filtersets.py:1205 dcim/forms/filtersets.py:1222 +#: dcim/forms/filtersets.py:1242 dcim/tables/devices.py:352 #: 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 @@ -3825,40 +3866,40 @@ msgstr "Ocupado" msgid "Connection" msgstr "Conexão" -#: dcim/forms/filtersets.py:1246 extras/forms/bulk_edit.py:316 +#: dcim/forms/filtersets.py:1254 extras/forms/bulk_edit.py:316 #: extras/forms/bulk_import.py:242 extras/forms/filtersets.py:476 #: extras/forms/model_forms.py:551 extras/tables/tables.py:512 #: templates/extras/journalentry.html:30 msgid "Kind" msgstr "Gentil" -#: dcim/forms/filtersets.py:1275 +#: dcim/forms/filtersets.py:1283 msgid "Mgmt only" msgstr "Somente gerenciamento" -#: dcim/forms/filtersets.py:1287 dcim/forms/model_forms.py:1327 +#: dcim/forms/filtersets.py:1295 dcim/forms/model_forms.py:1327 #: dcim/models/device_components.py:630 templates/dcim/interface.html:129 msgid "WWN" msgstr "WWN" -#: dcim/forms/filtersets.py:1307 +#: dcim/forms/filtersets.py:1315 msgid "Wireless channel" msgstr "Canal sem fio" -#: dcim/forms/filtersets.py:1311 +#: dcim/forms/filtersets.py:1319 msgid "Channel frequency (MHz)" msgstr "Frequência do canal (MHz)" -#: dcim/forms/filtersets.py:1315 +#: dcim/forms/filtersets.py:1323 msgid "Channel width (MHz)" msgstr "Largura do canal (MHz)" -#: dcim/forms/filtersets.py:1319 templates/dcim/interface.html:85 +#: dcim/forms/filtersets.py:1327 templates/dcim/interface.html:85 msgid "Transmit power (dBm)" msgstr "Potência de transmissão (dBm)" -#: dcim/forms/filtersets.py:1342 dcim/forms/filtersets.py:1364 -#: dcim/tables/devices.py:320 templates/dcim/cable.html:12 +#: dcim/forms/filtersets.py:1350 dcim/forms/filtersets.py:1372 +#: dcim/tables/devices.py:324 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 @@ -3866,7 +3907,7 @@ msgstr "Potência de transmissão (dBm)" msgid "Cable" msgstr "Cabo" -#: dcim/forms/filtersets.py:1434 dcim/tables/devices.py:933 +#: dcim/forms/filtersets.py:1442 dcim/tables/devices.py:933 msgid "Discovered" msgstr "Descoberto" @@ -3987,7 +4028,7 @@ msgstr "Modelo de porta traseira" #: dcim/tables/connections.py:65 ipam/forms/bulk_import.py:317 #: ipam/forms/model_forms.py:278 ipam/forms/model_forms.py:287 #: ipam/tables/fhrp.py:64 ipam/tables/ip.py:368 ipam/tables/vlans.py:165 -#: templates/circuits/inc/circuit_termination.html:77 +#: 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 @@ -4015,7 +4056,7 @@ msgid "Console Server Port" msgstr "Porta do servidor do console" #: dcim/forms/model_forms.py:1092 dcim/forms/model_forms.py:1530 -#: templates/circuits/inc/circuit_termination.html:78 +#: 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 @@ -4024,7 +4065,7 @@ msgstr "Porta frontal" #: dcim/forms/model_forms.py:1093 dcim/forms/model_forms.py:1531 #: dcim/tables/devices.py:705 -#: templates/circuits/inc/circuit_termination.html:79 +#: 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 @@ -4033,7 +4074,7 @@ msgid "Rear Port" msgstr "Porta traseira" #: dcim/forms/model_forms.py:1094 dcim/forms/model_forms.py:1532 -#: dcim/tables/connections.py:46 dcim/tables/devices.py:505 +#: dcim/tables/connections.py:46 dcim/tables/devices.py:509 #: templates/dcim/poweroutlet.html:44 templates/dcim/powerport.html:17 msgid "Power Port" msgstr "Porta de alimentação" @@ -5338,7 +5379,7 @@ msgstr "" #: dcim/models/mixins.py:15 extras/models/configs.py:41 #: extras/models/models.py:341 extras/models/models.py:550 -#: extras/models/search.py:48 ipam/models/ip.py:193 +#: extras/models/search.py:48 ipam/models/ip.py:194 msgid "weight" msgstr "peso" @@ -5829,28 +5870,37 @@ msgstr "Itens de inventário" msgid "Module Bay" msgstr "Compartimento do módulo" -#: dcim/tables/devices.py:326 +#: dcim/tables/devices.py:318 dcim/tables/devicetypes.py:48 +#: dcim/tables/devicetypes.py:140 dcim/views.py:1081 dcim/views.py:2024 +#: netbox/navigation/menu.py:90 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 +msgid "Inventory Items" +msgstr "Itens de inventário" + +#: dcim/tables/devices.py:330 msgid "Cable Color" msgstr "Cor do cabo" -#: dcim/tables/devices.py:332 +#: dcim/tables/devices.py:336 msgid "Link Peers" msgstr "Vincular pares" -#: dcim/tables/devices.py:335 +#: dcim/tables/devices.py:339 msgid "Mark Connected" msgstr "Marcar Conectado" -#: dcim/tables/devices.py:451 +#: dcim/tables/devices.py:455 msgid "Maximum draw (W)" msgstr "Consumo máximo (W)" -#: dcim/tables/devices.py:454 +#: dcim/tables/devices.py:458 msgid "Allocated draw (W)" msgstr "Sorteio alocado (W)" -#: dcim/tables/devices.py:554 ipam/forms/model_forms.py:738 -#: ipam/tables/fhrp.py:28 ipam/views.py:596 ipam/views.py:690 +#: dcim/tables/devices.py:558 ipam/forms/model_forms.py:747 +#: ipam/tables/fhrp.py:28 ipam/views.py:602 ipam/views.py:701 #: netbox/navigation/menu.py:145 netbox/navigation/menu.py:147 #: templates/dcim/interface.html:339 templates/ipam/ipaddress_bulk_add.html:15 #: templates/ipam/service.html:40 templates/virtualization/vminterface.html:85 @@ -5858,12 +5908,12 @@ msgstr "Sorteio alocado (W)" msgid "IP Addresses" msgstr "Endereços IP" -#: dcim/tables/devices.py:560 netbox/navigation/menu.py:189 +#: dcim/tables/devices.py:564 netbox/navigation/menu.py:189 #: templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "Grupos FHRP" -#: dcim/tables/devices.py:572 templates/dcim/interface.html:89 +#: 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 @@ -5872,24 +5922,15 @@ msgstr "Grupos FHRP" msgid "Tunnel" msgstr "Túnel" -#: dcim/tables/devices.py:597 dcim/tables/devicetypes.py:224 +#: dcim/tables/devices.py:601 dcim/tables/devicetypes.py:224 #: templates/dcim/interface.html:65 msgid "Management Only" msgstr "Somente gerenciamento" -#: dcim/tables/devices.py:615 +#: dcim/tables/devices.py:619 msgid "VDCs" msgstr "VDCs" -#: dcim/tables/devices.py:623 dcim/tables/devicetypes.py:48 -#: dcim/tables/devicetypes.py:140 dcim/views.py:1081 dcim/views.py:2024 -#: netbox/navigation/menu.py:90 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 -msgid "Inventory Items" -msgstr "Itens de inventário" - #: dcim/tables/devices.py:870 templates/dcim/modulebay.html:49 msgid "Installed Module" msgstr "Módulo instalado" @@ -6005,7 +6046,7 @@ msgstr "Compartimentos de dispositivos" msgid "Module Bays" msgstr "Compartimentos de módulos" -#: dcim/tables/power.py:36 netbox/navigation/menu.py:281 +#: dcim/tables/power.py:36 netbox/navigation/menu.py:282 #: templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "Alimentações de energia" @@ -6493,7 +6534,7 @@ msgid "Cluster type (slug)" msgstr "Tipo de cluster (slug)" #: extras/filtersets.py:537 ipam/forms/bulk_edit.py:476 -#: ipam/forms/filtersets.py:457 ipam/forms/model_forms.py:615 +#: ipam/forms/filtersets.py:464 ipam/forms/model_forms.py:624 #: virtualization/forms/filtersets.py:112 msgid "Cluster group" msgstr "Grupo de clusters" @@ -6998,7 +7039,7 @@ msgid "Tenants" msgstr "Inquilinos" #: extras/forms/model_forms.py:458 ipam/forms/filtersets.py:142 -#: ipam/forms/filtersets.py:546 ipam/forms/model_forms.py:321 +#: ipam/forms/filtersets.py:553 ipam/forms/model_forms.py:321 #: 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:311 @@ -7823,11 +7864,11 @@ msgstr "roteiro" msgid "scripts" msgstr "scripts" -#: extras/models/scripts.py:110 +#: extras/models/scripts.py:111 msgid "script module" msgstr "módulo de script" -#: extras/models/scripts.py:111 +#: extras/models/scripts.py:112 msgid "script modules" msgstr "módulos de script" @@ -8088,7 +8129,7 @@ msgstr "Widget excluído: " msgid "Error deleting widget: " msgstr "Erro ao excluir o widget: " -#: extras/views.py:1081 +#: extras/views.py:1101 msgid "Unable to run script: RQ worker process not running." msgstr "" "Não é possível executar o script: o processo de trabalho do RQ não está em " @@ -8238,7 +8279,7 @@ msgid "Prefixes which contain this prefix or IP" msgstr "Prefixos que contêm esse prefixo ou IP" #: ipam/filtersets.py:304 ipam/filtersets.py:572 ipam/forms/bulk_edit.py:327 -#: ipam/forms/filtersets.py:195 ipam/forms/filtersets.py:324 +#: ipam/forms/filtersets.py:196 ipam/forms/filtersets.py:331 msgid "Mask length" msgstr "Comprimento da máscara" @@ -8251,7 +8292,7 @@ msgid "VLAN number (1-4094)" msgstr "Número da VLAN (1-4094)" #: ipam/filtersets.py:471 ipam/filtersets.py:475 ipam/filtersets.py:567 -#: ipam/forms/model_forms.py:452 templates/tenancy/contact.html:53 +#: ipam/forms/model_forms.py:461 templates/tenancy/contact.html:53 #: tenancy/forms/bulk_edit.py:113 msgid "Address" msgstr "Endereço" @@ -8311,7 +8352,7 @@ msgstr "NAT dentro do endereço IP (ID)" msgid "IP address (ID)" msgstr "Endereço IP (ID)" -#: ipam/filtersets.py:1102 ipam/models/ip.py:787 +#: ipam/filtersets.py:1102 ipam/models/ip.py:788 msgid "IP address" msgstr "Endereço IP" @@ -8367,7 +8408,7 @@ msgstr "É privado" #: ipam/forms/filtersets.py:148 ipam/forms/model_forms.py:94 #: ipam/forms/model_forms.py:107 ipam/forms/model_forms.py:129 #: ipam/forms/model_forms.py:147 ipam/models/asns.py:31 -#: ipam/models/asns.py:103 ipam/models/ip.py:70 ipam/models/ip.py:89 +#: 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 @@ -8382,36 +8423,36 @@ msgstr "Data adicionada" msgid "Prefix length" msgstr "Comprimento do prefixo" -#: ipam/forms/bulk_edit.py:253 ipam/forms/filtersets.py:240 +#: ipam/forms/bulk_edit.py:253 ipam/forms/filtersets.py:241 #: templates/ipam/prefix.html:85 msgid "Is a pool" msgstr "É uma piscina" #: ipam/forms/bulk_edit.py:258 ipam/forms/bulk_edit.py:302 -#: ipam/forms/filtersets.py:247 ipam/forms/filtersets.py:286 -#: ipam/models/ip.py:271 ipam/models/ip.py:538 +#: ipam/forms/filtersets.py:248 ipam/forms/filtersets.py:293 +#: ipam/models/ip.py:272 ipam/models/ip.py:539 msgid "Treat as fully utilized" msgstr "Trate como totalmente utilizado" -#: ipam/forms/bulk_edit.py:350 ipam/models/ip.py:771 +#: ipam/forms/bulk_edit.py:350 ipam/models/ip.py:772 msgid "DNS name" msgstr "Nome DNS" #: ipam/forms/bulk_edit.py:371 ipam/forms/bulk_edit.py:572 #: ipam/forms/bulk_import.py:393 ipam/forms/bulk_import.py:477 -#: ipam/forms/bulk_import.py:503 ipam/forms/filtersets.py:383 -#: ipam/forms/filtersets.py:530 templates/ipam/fhrpgroup.html:22 +#: ipam/forms/bulk_import.py:503 ipam/forms/filtersets.py:390 +#: ipam/forms/filtersets.py:537 templates/ipam/fhrpgroup.html:22 #: templates/ipam/inc/panels/fhrp_groups.html:24 #: templates/ipam/service.html:32 templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "Protocolo" -#: ipam/forms/bulk_edit.py:378 ipam/forms/filtersets.py:390 +#: ipam/forms/bulk_edit.py:378 ipam/forms/filtersets.py:397 #: ipam/tables/fhrp.py:22 templates/ipam/fhrpgroup.html:26 msgid "Group ID" msgstr "ID do grupo" -#: ipam/forms/bulk_edit.py:383 ipam/forms/filtersets.py:395 +#: ipam/forms/bulk_edit.py:383 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 @@ -8419,12 +8460,12 @@ msgstr "ID do grupo" msgid "Authentication type" msgstr "Tipo de autenticação" -#: ipam/forms/bulk_edit.py:388 ipam/forms/filtersets.py:399 +#: ipam/forms/bulk_edit.py:388 ipam/forms/filtersets.py:406 msgid "Authentication key" msgstr "Chave de autenticação" -#: ipam/forms/bulk_edit.py:405 ipam/forms/filtersets.py:376 -#: ipam/forms/model_forms.py:463 netbox/navigation/menu.py:369 +#: ipam/forms/bulk_edit.py:405 ipam/forms/filtersets.py:383 +#: ipam/forms/model_forms.py:472 netbox/navigation/menu.py:370 #: templates/ipam/fhrpgroup.html:49 #: templates/wireless/inc/authentication_attrs.html:5 #: wireless/forms/bulk_edit.py:91 wireless/forms/bulk_edit.py:138 @@ -8441,11 +8482,11 @@ msgstr "VLAN infantil mínima VID" msgid "Maximum child VLAN VID" msgstr "VLAN infantil máximo VID" -#: ipam/forms/bulk_edit.py:429 ipam/forms/model_forms.py:557 +#: ipam/forms/bulk_edit.py:429 ipam/forms/model_forms.py:566 msgid "Scope type" msgstr "Tipo de escopo" -#: ipam/forms/bulk_edit.py:491 ipam/forms/model_forms.py:632 +#: ipam/forms/bulk_edit.py:491 ipam/forms/model_forms.py:641 #: ipam/tables/vlans.py:71 templates/ipam/vlangroup.html:38 msgid "Scope" msgstr "Escopo" @@ -8454,8 +8495,8 @@ msgstr "Escopo" msgid "Site & Group" msgstr "Site e grupo" -#: ipam/forms/bulk_edit.py:577 ipam/forms/model_forms.py:696 -#: ipam/forms/model_forms.py:728 ipam/tables/services.py:19 +#: ipam/forms/bulk_edit.py:577 ipam/forms/model_forms.py:705 +#: ipam/forms/model_forms.py:737 ipam/tables/services.py:19 #: ipam/tables/services.py:49 templates/ipam/service.html:36 #: templates/ipam/servicetemplate.html:23 msgid "Ports" @@ -8478,15 +8519,15 @@ msgstr "RIR atribuído" msgid "VLAN's group (if any)" msgstr "Grupo de VLANs (se houver)" -#: ipam/forms/bulk_import.py:184 ipam/forms/model_forms.py:216 -#: ipam/models/vlans.py:214 ipam/tables/ip.py:254 -#: 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:101 +#: ipam/forms/bulk_import.py:184 ipam/forms/filtersets.py:256 +#: ipam/forms/model_forms.py:216 ipam/models/vlans.py:214 +#: ipam/tables/ip.py:254 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:101 msgid "VLAN" msgstr "VLAN" @@ -8495,7 +8536,7 @@ msgid "Parent device of assigned interface (if any)" msgstr "Dispositivo principal da interface atribuída (se houver)" #: ipam/forms/bulk_import.py:310 ipam/forms/bulk_import.py:496 -#: ipam/forms/model_forms.py:722 virtualization/filtersets.py:284 +#: ipam/forms/model_forms.py:731 virtualization/filtersets.py:284 #: virtualization/filtersets.py:323 virtualization/forms/bulk_edit.py:200 #: virtualization/forms/bulk_edit.py:326 #: virtualization/forms/bulk_import.py:146 @@ -8600,8 +8641,8 @@ msgstr "Exportado por VRF" msgid "Private" msgstr "Privado" -#: ipam/forms/filtersets.py:105 ipam/forms/filtersets.py:190 -#: ipam/forms/filtersets.py:265 ipam/forms/filtersets.py:319 +#: ipam/forms/filtersets.py:105 ipam/forms/filtersets.py:191 +#: ipam/forms/filtersets.py:272 ipam/forms/filtersets.py:326 msgid "Address family" msgstr "Família de endereços" @@ -8617,53 +8658,57 @@ msgstr "Iniciar" msgid "End" msgstr "Fim" -#: ipam/forms/filtersets.py:185 +#: ipam/forms/filtersets.py:171 +msgid "VLAN Assignment" +msgstr "Atribuição de VLAN" + +#: ipam/forms/filtersets.py:186 msgid "Search within" msgstr "Pesquisar dentro" -#: ipam/forms/filtersets.py:206 ipam/forms/filtersets.py:335 +#: ipam/forms/filtersets.py:207 ipam/forms/filtersets.py:342 msgid "Present in VRF" msgstr "Presente em VRF" -#: ipam/forms/filtersets.py:304 +#: ipam/forms/filtersets.py:311 msgid "Device/VM" msgstr "Dispositivo/VM" -#: ipam/forms/filtersets.py:314 +#: ipam/forms/filtersets.py:321 msgid "Parent Prefix" msgstr "Prefixo principal" -#: ipam/forms/filtersets.py:340 +#: ipam/forms/filtersets.py:347 msgid "Assigned Device" msgstr "Dispositivo atribuído" -#: ipam/forms/filtersets.py:345 +#: ipam/forms/filtersets.py:352 msgid "Assigned VM" msgstr "VM atribuída" -#: ipam/forms/filtersets.py:359 +#: ipam/forms/filtersets.py:366 msgid "Assigned to an interface" msgstr "Atribuído a uma interface" -#: ipam/forms/filtersets.py:366 templates/ipam/ipaddress.html:51 +#: ipam/forms/filtersets.py:373 templates/ipam/ipaddress.html:51 msgid "DNS Name" msgstr "Nome do DNS" -#: ipam/forms/filtersets.py:409 ipam/forms/filtersets.py:513 +#: ipam/forms/filtersets.py:416 ipam/forms/filtersets.py:520 #: ipam/models/vlans.py:156 templates/ipam/vlan.html:31 msgid "VLAN ID" msgstr "ID DA VLAN" -#: ipam/forms/filtersets.py:441 +#: ipam/forms/filtersets.py:448 msgid "Minimum VID" msgstr "VID mínimo" -#: ipam/forms/filtersets.py:447 +#: ipam/forms/filtersets.py:454 msgid "Maximum VID" msgstr "VID máximo" -#: ipam/forms/filtersets.py:556 ipam/forms/model_forms.py:318 -#: ipam/forms/model_forms.py:750 ipam/forms/model_forms.py:776 +#: ipam/forms/filtersets.py:563 ipam/forms/model_forms.py:318 +#: ipam/forms/model_forms.py:759 ipam/forms/model_forms.py:785 #: ipam/tables/vlans.py:191 templates/virtualization/virtualdisk.html:21 #: templates/virtualization/virtualmachine.html:12 #: templates/virtualization/vminterface.html:21 @@ -8701,7 +8746,7 @@ msgid "IP Range" msgstr "Intervalo de IP" #: ipam/forms/model_forms.py:293 ipam/forms/model_forms.py:319 -#: ipam/forms/model_forms.py:462 templates/ipam/fhrpgroup.html:19 +#: ipam/forms/model_forms.py:471 templates/ipam/fhrpgroup.html:19 msgid "FHRP Group" msgstr "Grupo FHRP" @@ -8713,11 +8758,11 @@ msgstr "Torne esse o IP primário do dispositivo/VM" msgid "NAT IP (Inside)" msgstr "NAT IP (interno)" -#: ipam/forms/model_forms.py:373 +#: ipam/forms/model_forms.py:382 msgid "An IP address can only be assigned to a single object." msgstr "Um endereço IP só pode ser atribuído a um único objeto." -#: ipam/forms/model_forms.py:379 ipam/models/ip.py:896 +#: ipam/forms/model_forms.py:388 ipam/models/ip.py:897 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" @@ -8725,32 +8770,32 @@ msgstr "" "Não é possível reatribuir o endereço IP enquanto ele estiver designado como " "o IP principal do objeto pai" -#: ipam/forms/model_forms.py:389 +#: ipam/forms/model_forms.py:398 msgid "" "Only IP addresses assigned to an interface can be designated as primary IPs." msgstr "" "Somente endereços IP atribuídos a uma interface podem ser designados como " "IPs primários." -#: ipam/forms/model_forms.py:464 +#: ipam/forms/model_forms.py:473 msgid "Virtual IP Address" msgstr "Endereço IP virtual" -#: ipam/forms/model_forms.py:549 +#: ipam/forms/model_forms.py:558 msgid "Assignment already exists" msgstr "A atribuição já existe" -#: ipam/forms/model_forms.py:628 ipam/forms/model_forms.py:670 +#: ipam/forms/model_forms.py:637 ipam/forms/model_forms.py:679 #: ipam/tables/ip.py:250 templates/ipam/vlan_edit.html:37 #: templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "Grupo VLAN" -#: ipam/forms/model_forms.py:629 +#: ipam/forms/model_forms.py:638 msgid "Child VLANs" msgstr "VLANs secundários" -#: ipam/forms/model_forms.py:701 ipam/forms/model_forms.py:733 +#: ipam/forms/model_forms.py:710 ipam/forms/model_forms.py:742 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." @@ -8758,32 +8803,32 @@ msgstr "" "Lista separada por vírgula de um ou mais números de porta. Um intervalo pode" " ser especificado usando um hífen." -#: ipam/forms/model_forms.py:706 templates/ipam/servicetemplate.html:12 +#: ipam/forms/model_forms.py:715 templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "Modelo de serviço" -#: ipam/forms/model_forms.py:753 +#: ipam/forms/model_forms.py:762 msgid "Port(s)" msgstr "Porta (s)" -#: ipam/forms/model_forms.py:754 ipam/forms/model_forms.py:782 +#: ipam/forms/model_forms.py:763 ipam/forms/model_forms.py:791 #: templates/ipam/service.html:21 msgid "Service" msgstr "Serviço" -#: ipam/forms/model_forms.py:767 +#: ipam/forms/model_forms.py:776 msgid "Service template" msgstr "Modelo de serviço" -#: ipam/forms/model_forms.py:779 +#: ipam/forms/model_forms.py:788 msgid "From Template" msgstr "Do modelo" -#: ipam/forms/model_forms.py:780 +#: ipam/forms/model_forms.py:789 msgid "Custom" msgstr "Personalizado" -#: ipam/forms/model_forms.py:810 +#: ipam/forms/model_forms.py:819 msgid "" "Must specify name, protocol, and port(s) if not using a service template." msgstr "" @@ -8851,43 +8896,43 @@ msgstr "Atribuição em grupo do FHRP" msgid "FHRP group assignments" msgstr "Atribuições em grupo do FHRP" -#: ipam/models/ip.py:64 +#: ipam/models/ip.py:65 msgid "private" msgstr "privado" -#: ipam/models/ip.py:65 +#: ipam/models/ip.py:66 msgid "IP space managed by this RIR is considered private" msgstr "O espaço IP gerenciado por este RIR é considerado privado" -#: ipam/models/ip.py:71 netbox/navigation/menu.py:169 +#: ipam/models/ip.py:72 netbox/navigation/menu.py:169 msgid "RIRs" msgstr "RIRs" -#: ipam/models/ip.py:83 +#: ipam/models/ip.py:84 msgid "IPv4 or IPv6 network" msgstr "Rede IPv4 ou IPv6" -#: ipam/models/ip.py:90 +#: ipam/models/ip.py:91 msgid "Regional Internet Registry responsible for this IP space" msgstr "Registro regional da Internet responsável por esse espaço IP" -#: ipam/models/ip.py:100 +#: ipam/models/ip.py:101 msgid "date added" msgstr "data adicionada" -#: ipam/models/ip.py:114 +#: ipam/models/ip.py:115 msgid "aggregate" msgstr "agregar" -#: ipam/models/ip.py:115 +#: ipam/models/ip.py:116 msgid "aggregates" msgstr "agregados" -#: ipam/models/ip.py:131 +#: ipam/models/ip.py:132 msgid "Cannot create aggregate with /0 mask." msgstr "Não é possível criar agregação com máscara /0." -#: ipam/models/ip.py:143 +#: ipam/models/ip.py:144 #, python-brace-format msgid "" "Aggregates cannot overlap. {prefix} is already covered by an existing " @@ -8896,7 +8941,7 @@ msgstr "" "Os agregados não podem se sobrepor. {prefix} já está coberto por um agregado" " existente ({aggregate})." -#: ipam/models/ip.py:157 +#: ipam/models/ip.py:158 #, python-brace-format msgid "" "Prefixes cannot overlap aggregates. {prefix} covers an existing aggregate " @@ -8905,158 +8950,158 @@ msgstr "" "Os prefixos não podem se sobrepor aos agregados. {prefix} cobre um agregado " "existente ({aggregate})." -#: ipam/models/ip.py:199 ipam/models/ip.py:736 vpn/models/tunnels.py:114 +#: ipam/models/ip.py:200 ipam/models/ip.py:737 vpn/models/tunnels.py:114 msgid "role" msgstr "função" -#: ipam/models/ip.py:200 +#: ipam/models/ip.py:201 msgid "roles" msgstr "papéis" -#: ipam/models/ip.py:216 ipam/models/ip.py:292 +#: ipam/models/ip.py:217 ipam/models/ip.py:293 msgid "prefix" msgstr "prefixo" -#: ipam/models/ip.py:217 +#: ipam/models/ip.py:218 msgid "IPv4 or IPv6 network with mask" msgstr "Rede IPv4 ou IPv6 com máscara" -#: ipam/models/ip.py:253 +#: ipam/models/ip.py:254 msgid "Operational status of this prefix" msgstr "Status operacional desse prefixo" -#: ipam/models/ip.py:261 +#: ipam/models/ip.py:262 msgid "The primary function of this prefix" msgstr "A função primária desse prefixo" -#: ipam/models/ip.py:264 +#: ipam/models/ip.py:265 msgid "is a pool" msgstr "é uma piscina" -#: ipam/models/ip.py:266 +#: ipam/models/ip.py:267 msgid "All IP addresses within this prefix are considered usable" msgstr "" "Todos os endereços IP dentro desse prefixo são considerados utilizáveis" -#: ipam/models/ip.py:269 ipam/models/ip.py:536 +#: ipam/models/ip.py:270 ipam/models/ip.py:537 msgid "mark utilized" msgstr "marca utilizada" -#: ipam/models/ip.py:293 +#: ipam/models/ip.py:294 msgid "prefixes" msgstr "prefixos" -#: ipam/models/ip.py:316 +#: ipam/models/ip.py:317 msgid "Cannot create prefix with /0 mask." msgstr "Não é possível criar prefixo com a máscara /0." -#: ipam/models/ip.py:323 ipam/models/ip.py:873 +#: ipam/models/ip.py:324 ipam/models/ip.py:874 #, python-brace-format msgid "VRF {vrf}" msgstr "VRF {vrf}" -#: ipam/models/ip.py:323 ipam/models/ip.py:873 +#: ipam/models/ip.py:324 ipam/models/ip.py:874 msgid "global table" msgstr "tabela global" -#: ipam/models/ip.py:325 +#: ipam/models/ip.py:326 #, python-brace-format msgid "Duplicate prefix found in {table}: {prefix}" msgstr "Prefixo duplicado encontrado em {table}: {prefix}" -#: ipam/models/ip.py:494 +#: ipam/models/ip.py:495 msgid "start address" msgstr "endereço inicial" -#: ipam/models/ip.py:495 ipam/models/ip.py:499 ipam/models/ip.py:711 +#: ipam/models/ip.py:496 ipam/models/ip.py:500 ipam/models/ip.py:712 msgid "IPv4 or IPv6 address (with mask)" msgstr "Endereço IPv4 ou IPv6 (com máscara)" -#: ipam/models/ip.py:498 +#: ipam/models/ip.py:499 msgid "end address" msgstr "endereço final" -#: ipam/models/ip.py:525 +#: ipam/models/ip.py:526 msgid "Operational status of this range" msgstr "Status operacional dessa faixa" -#: ipam/models/ip.py:533 +#: ipam/models/ip.py:534 msgid "The primary function of this range" msgstr "A função principal desse intervalo" -#: ipam/models/ip.py:547 +#: ipam/models/ip.py:548 msgid "IP range" msgstr "Intervalo de IP" -#: ipam/models/ip.py:548 +#: ipam/models/ip.py:549 msgid "IP ranges" msgstr "Intervalos de IP" -#: ipam/models/ip.py:564 +#: ipam/models/ip.py:565 msgid "Starting and ending IP address versions must match" msgstr "As versões inicial e final do endereço IP devem corresponder" -#: ipam/models/ip.py:570 +#: ipam/models/ip.py:571 msgid "Starting and ending IP address masks must match" msgstr "As máscaras de endereço IP inicial e final devem corresponder" -#: ipam/models/ip.py:577 +#: ipam/models/ip.py:578 #, python-brace-format msgid "" "Ending address must be greater than the starting address ({start_address})" msgstr "" "O endereço final deve ser maior que o endereço inicial ({start_address})" -#: ipam/models/ip.py:589 +#: ipam/models/ip.py:590 #, python-brace-format msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}" msgstr "" "Endereços definidos se sobrepõem ao intervalo {overlapping_range} em VRF " "{vrf}" -#: ipam/models/ip.py:598 +#: ipam/models/ip.py:599 #, python-brace-format msgid "Defined range exceeds maximum supported size ({max_size})" msgstr "O intervalo definido excede o tamanho máximo suportado ({max_size})" -#: ipam/models/ip.py:710 tenancy/models/contacts.py:82 +#: ipam/models/ip.py:711 tenancy/models/contacts.py:82 msgid "address" msgstr "abordar" -#: ipam/models/ip.py:733 +#: ipam/models/ip.py:734 msgid "The operational status of this IP" msgstr "O status operacional desse IP" -#: ipam/models/ip.py:740 +#: ipam/models/ip.py:741 msgid "The functional role of this IP" msgstr "O papel funcional desse IP" -#: ipam/models/ip.py:764 templates/ipam/ipaddress.html:72 +#: ipam/models/ip.py:765 templates/ipam/ipaddress.html:72 msgid "NAT (inside)" msgstr "NAT (interno)" -#: ipam/models/ip.py:765 +#: ipam/models/ip.py:766 msgid "The IP for which this address is the \"outside\" IP" msgstr "O IP para o qual esse endereço é o IP “externo”" -#: ipam/models/ip.py:772 +#: ipam/models/ip.py:773 msgid "Hostname or FQDN (not case-sensitive)" msgstr "Nome do host ou FQDN (não diferencia maiúsculas de minúsculas)" -#: ipam/models/ip.py:788 ipam/models/services.py:93 +#: ipam/models/ip.py:789 ipam/models/services.py:93 msgid "IP addresses" msgstr "Endereços IP" -#: ipam/models/ip.py:844 +#: ipam/models/ip.py:845 msgid "Cannot create IP address with /0 mask." msgstr "Não é possível criar endereço IP com máscara /0." -#: ipam/models/ip.py:850 +#: ipam/models/ip.py:851 #, python-brace-format msgid "{ip} is a network ID, which may not be assigned to an interface." msgstr "{ip} é uma ID de rede, que não pode ser atribuída a uma interface." -#: ipam/models/ip.py:861 +#: ipam/models/ip.py:862 #, python-brace-format msgid "" "{ip} is a broadcast address, which may not be assigned to an interface." @@ -9064,12 +9109,12 @@ msgstr "" "{ip} é um endereço de transmissão, que não pode ser atribuído a uma " "interface." -#: ipam/models/ip.py:875 +#: ipam/models/ip.py:876 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "Endereço IP duplicado encontrado em {table}: {ipaddress}" -#: ipam/models/ip.py:902 +#: ipam/models/ip.py:903 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "Somente endereços IPv6 podem receber o status SLAAC" @@ -9165,7 +9210,7 @@ msgid "The primary function of this VLAN" msgstr "A função principal desta VLAN" #: ipam/models/vlans.py:215 ipam/tables/ip.py:175 ipam/tables/vlans.py:78 -#: ipam/views.py:957 netbox/navigation/menu.py:180 +#: ipam/views.py:978 netbox/navigation/menu.py:180 #: netbox/navigation/menu.py:182 msgid "VLANs" msgstr "VLANs" @@ -9240,7 +9285,7 @@ msgid "Added" msgstr "Adicionado" #: ipam/tables/ip.py:127 ipam/tables/ip.py:165 ipam/tables/vlans.py:138 -#: ipam/views.py:348 netbox/navigation/menu.py:152 +#: ipam/views.py:349 netbox/navigation/menu.py:152 #: netbox/navigation/menu.py:154 templates/ipam/vlan.html:84 msgid "Prefixes" msgstr "Prefixos" @@ -9341,23 +9386,23 @@ msgstr "" "Somente caracteres alfanuméricos, asteriscos, hífens, pontos e sublinhados " "são permitidos em nomes DNS" -#: ipam/views.py:535 +#: ipam/views.py:541 msgid "Child Prefixes" msgstr "Prefixos infantis" -#: ipam/views.py:570 +#: ipam/views.py:576 msgid "Child Ranges" msgstr "Intervalos para crianças" -#: ipam/views.py:886 +#: ipam/views.py:902 msgid "Related IPs" msgstr "IPs relacionados" -#: ipam/views.py:1112 +#: ipam/views.py:1133 msgid "Device Interfaces" msgstr "Interfaces de dispositivos" -#: ipam/views.py:1129 +#: ipam/views.py:1150 msgid "VM Interfaces" msgstr "Interfaces de VM" @@ -9921,39 +9966,43 @@ msgstr "Grupos de clusters" msgid "Circuit Types" msgstr "Tipos de circuito" -#: netbox/navigation/menu.py:264 netbox/navigation/menu.py:266 +#: netbox/navigation/menu.py:261 +msgid "Circuit Terminations" +msgstr "Terminações de circuito" + +#: netbox/navigation/menu.py:265 netbox/navigation/menu.py:267 msgid "Providers" msgstr "Provedores" -#: netbox/navigation/menu.py:267 templates/circuits/provider.html:51 +#: netbox/navigation/menu.py:268 templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "Contas de provedores" -#: netbox/navigation/menu.py:268 +#: netbox/navigation/menu.py:269 msgid "Provider Networks" msgstr "Redes de provedores" -#: netbox/navigation/menu.py:282 +#: netbox/navigation/menu.py:283 msgid "Power Panels" msgstr "Painéis de energia" -#: netbox/navigation/menu.py:293 +#: netbox/navigation/menu.py:294 msgid "Configurations" msgstr "Configurações" -#: netbox/navigation/menu.py:295 +#: netbox/navigation/menu.py:296 msgid "Config Contexts" msgstr "Contextos de configuração" -#: netbox/navigation/menu.py:296 +#: netbox/navigation/menu.py:297 msgid "Config Templates" msgstr "Modelos de configuração" -#: netbox/navigation/menu.py:303 netbox/navigation/menu.py:307 +#: netbox/navigation/menu.py:304 netbox/navigation/menu.py:308 msgid "Customization" msgstr "Personalização" -#: netbox/navigation/menu.py:309 templates/dcim/device_edit.html:103 +#: netbox/navigation/menu.py:310 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 @@ -9963,107 +10012,107 @@ msgstr "Personalização" msgid "Custom Fields" msgstr "Campos personalizados" -#: netbox/navigation/menu.py:310 +#: netbox/navigation/menu.py:311 msgid "Custom Field Choices" msgstr "Opções de campo personalizadas" -#: netbox/navigation/menu.py:311 +#: netbox/navigation/menu.py:312 msgid "Custom Links" msgstr "Links personalizados" -#: netbox/navigation/menu.py:312 +#: netbox/navigation/menu.py:313 msgid "Export Templates" msgstr "Modelos de exportação" -#: netbox/navigation/menu.py:313 +#: netbox/navigation/menu.py:314 msgid "Saved Filters" msgstr "Filtros salvos" -#: netbox/navigation/menu.py:315 +#: netbox/navigation/menu.py:316 msgid "Image Attachments" msgstr "Anexos de imagem" -#: netbox/navigation/menu.py:333 +#: netbox/navigation/menu.py:334 msgid "Operations" msgstr "Operações" -#: netbox/navigation/menu.py:337 +#: netbox/navigation/menu.py:338 msgid "Integrations" msgstr "Integrações" -#: netbox/navigation/menu.py:339 +#: netbox/navigation/menu.py:340 msgid "Data Sources" msgstr "Fontes de dados" -#: netbox/navigation/menu.py:340 +#: netbox/navigation/menu.py:341 msgid "Event Rules" msgstr "Regras do evento" -#: netbox/navigation/menu.py:341 +#: netbox/navigation/menu.py:342 msgid "Webhooks" msgstr "Webhooks" -#: netbox/navigation/menu.py:345 netbox/navigation/menu.py:349 +#: netbox/navigation/menu.py:346 netbox/navigation/menu.py:350 #: netbox/views/generic/feature_views.py:151 #: templates/extras/report/base.html:37 templates/extras/script/base.html:36 msgid "Jobs" msgstr "Empregos" -#: netbox/navigation/menu.py:355 +#: netbox/navigation/menu.py:356 msgid "Logging" msgstr "Exploração de" -#: netbox/navigation/menu.py:357 +#: netbox/navigation/menu.py:358 msgid "Journal Entries" msgstr "Entradas de diário" -#: netbox/navigation/menu.py:358 templates/extras/objectchange.html:8 +#: netbox/navigation/menu.py:359 templates/extras/objectchange.html:8 #: templates/extras/objectchange_list.html:4 msgid "Change Log" msgstr "Registro de alterações" -#: netbox/navigation/menu.py:365 templates/inc/user_menu.html:11 +#: netbox/navigation/menu.py:366 templates/inc/user_menu.html:11 msgid "Admin" msgstr "Administrador" -#: netbox/navigation/menu.py:373 templates/users/group.html:29 +#: netbox/navigation/menu.py:374 templates/users/group.html:29 #: users/forms/model_forms.py:233 users/forms/model_forms.py:245 #: users/forms/model_forms.py:297 users/tables.py:102 msgid "Users" msgstr "Usuários" -#: netbox/navigation/menu.py:393 users/forms/model_forms.py:182 +#: netbox/navigation/menu.py:394 users/forms/model_forms.py:182 #: users/forms/model_forms.py:194 users/forms/model_forms.py:302 #: users/tables.py:35 users/tables.py:106 msgid "Groups" msgstr "Grupos" -#: netbox/navigation/menu.py:413 templates/account/base.html:21 +#: netbox/navigation/menu.py:414 templates/account/base.html:21 #: templates/inc/user_menu.html:36 msgid "API Tokens" msgstr "Tokens de API" -#: netbox/navigation/menu.py:420 users/forms/model_forms.py:188 +#: netbox/navigation/menu.py:421 users/forms/model_forms.py:188 #: users/forms/model_forms.py:196 users/forms/model_forms.py:239 #: users/forms/model_forms.py:246 msgid "Permissions" msgstr "Permissões" -#: netbox/navigation/menu.py:428 netbox/navigation/menu.py:432 +#: netbox/navigation/menu.py:429 netbox/navigation/menu.py:433 #: templates/core/system.html:7 msgid "System" msgstr "Sistema" -#: netbox/navigation/menu.py:437 +#: netbox/navigation/menu.py:438 msgid "Configuration History" msgstr "Histórico de configuração" -#: netbox/navigation/menu.py:443 templates/core/rq_task.html:8 +#: netbox/navigation/menu.py:444 templates/core/rq_task.html:8 #: templates/core/rq_task_list.html:22 msgid "Background Tasks" msgstr "Tarefas de fundo" -#: netbox/navigation/menu.py:482 templates/500.html:35 +#: netbox/navigation/menu.py:483 templates/500.html:35 #: templates/account/preferences.html:22 templates/core/system.html:80 msgid "Plugins" msgstr "Plugins" @@ -10199,34 +10248,46 @@ msgstr "Não é possível adicionar lojas ao registro após a inicialização" msgid "Cannot delete stores from registry" msgstr "Não é possível excluir lojas do registro" -#: netbox/settings.py:715 +#: netbox/settings.py:722 +msgid "German" +msgstr "alemã" + +#: netbox/settings.py:723 msgid "English" msgstr "Inglês" -#: netbox/settings.py:716 +#: netbox/settings.py:724 msgid "Spanish" msgstr "espanhol" -#: netbox/settings.py:717 +#: netbox/settings.py:725 msgid "French" msgstr "francês" -#: netbox/settings.py:718 +#: netbox/settings.py:726 msgid "Japanese" msgstr "japonesa" -#: netbox/settings.py:719 +#: netbox/settings.py:727 msgid "Portuguese" msgstr "portuguesa" -#: netbox/settings.py:720 +#: netbox/settings.py:728 msgid "Russian" msgstr "russa" -#: netbox/settings.py:721 +#: netbox/settings.py:729 msgid "Turkish" msgstr "turca" +#: netbox/settings.py:730 +msgid "Ukrainian" +msgstr "ucraniano" + +#: netbox/settings.py:731 +msgid "Chinese" +msgstr "chinês" + #: netbox/tables/columns.py:185 msgid "Toggle all" msgstr "Alternar tudo" @@ -10239,16 +10300,16 @@ msgstr "Alternar lista suspensa" msgid "Error" msgstr "Erro" -#: netbox/tables/tables.py:56 +#: netbox/tables/tables.py:57 #, python-brace-format msgid "No {model_name} found" msgstr "Não {model_name} encontrado" -#: netbox/tables/tables.py:246 templates/generic/bulk_import.html:117 +#: netbox/tables/tables.py:248 templates/generic/bulk_import.html:117 msgid "Field" msgstr "Campo" -#: netbox/tables/tables.py:249 +#: netbox/tables/tables.py:251 msgid "Value" msgstr "Valor" @@ -10358,7 +10419,7 @@ msgstr "Alterar senha" #: 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:37 +#: 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 @@ -10451,7 +10512,8 @@ msgstr "Grupos atribuídos" #: templates/account/profile.html:58 #: templates/circuits/circuit_terminations_swap.html:18 #: templates/circuits/circuit_terminations_swap.html:26 -#: templates/circuits/inc/circuit_termination.html:154 +#: templates/circuits/circuittermination.html:34 +#: templates/circuits/inc/circuit_termination.html:68 #: templates/dcim/devicebay.html:59 #: templates/dcim/inc/panels/inventory_items.html:45 #: templates/dcim/interface.html:296 templates/dcim/modulebay.html:76 @@ -10568,13 +10630,6 @@ msgstr "Adicionar circuito" msgid "Circuit Type" msgstr "Tipo de circuito" -#: templates/circuits/inc/circuit_termination.html:6 -#: templates/circuits/inc/circuit_termination.html:41 -#: templates/dcim/cable.html:68 templates/dcim/cable.html:72 -#: vpn/forms/bulk_import.py:100 vpn/forms/filtersets.py:77 -msgid "Termination" -msgstr "Rescisão" - #: templates/circuits/inc/circuit_termination.html:10 #: templates/dcim/devicetype/component_templates.html:33 #: templates/dcim/manufacturer.html:11 @@ -10587,7 +10642,7 @@ msgid "Add" msgstr "Adicionar" #: templates/circuits/inc/circuit_termination.html:15 -#: templates/circuits/inc/circuit_termination.html:62 +#: 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:32 @@ -10602,33 +10657,33 @@ msgstr "Editar" msgid "Swap" msgstr "Troca" -#: templates/circuits/inc/circuit_termination.html:45 +#: templates/circuits/inc/circuit_termination_fields.html:19 #: templates/dcim/consoleport.html:59 templates/dcim/consoleserverport.html:60 #: templates/dcim/powerfeed.html:114 msgid "Marked as connected" msgstr "Marcado como conectado" -#: templates/circuits/inc/circuit_termination.html:47 +#: templates/circuits/inc/circuit_termination_fields.html:21 msgid "to" msgstr "para" -#: templates/circuits/inc/circuit_termination.html:57 -#: templates/circuits/inc/circuit_termination.html:58 +#: 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 msgid "Trace" msgstr "Traço" -#: templates/circuits/inc/circuit_termination.html:61 +#: templates/circuits/inc/circuit_termination_fields.html:35 msgid "Edit cable" msgstr "Editar cabo" -#: templates/circuits/inc/circuit_termination.html:66 +#: templates/circuits/inc/circuit_termination_fields.html:40 msgid "Remove cable" msgstr "Remova o cabo" -#: templates/circuits/inc/circuit_termination.html:67 +#: 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 @@ -10640,7 +10695,7 @@ msgstr "Remova o cabo" msgid "Disconnect" msgstr "Desconectar" -#: templates/circuits/inc/circuit_termination.html:74 +#: 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 @@ -10649,19 +10704,19 @@ msgstr "Desconectar" msgid "Connect" msgstr "Conectar" -#: templates/circuits/inc/circuit_termination.html:96 +#: templates/circuits/inc/circuit_termination_fields.html:70 msgid "Downstream" msgstr "Rio abaixo" -#: templates/circuits/inc/circuit_termination.html:97 +#: templates/circuits/inc/circuit_termination_fields.html:71 msgid "Upstream" msgstr "Rio acima" -#: templates/circuits/inc/circuit_termination.html:106 +#: templates/circuits/inc/circuit_termination_fields.html:80 msgid "Cross-Connect" msgstr "Conexão cruzada" -#: templates/circuits/inc/circuit_termination.html:110 +#: templates/circuits/inc/circuit_termination_fields.html:84 msgid "Patch Panel/Port" msgstr "Painel de remendo/porta" @@ -12076,11 +12131,15 @@ msgstr "Relatório" msgid "You do not have permission to run scripts" msgstr "Você não tem permissão para executar scripts" -#: templates/extras/script.html:40 templates/extras/script.html:44 +#: templates/extras/script.html:41 templates/extras/script.html:45 #: templates/extras/script_list.html:88 msgid "Run Script" msgstr "Executar script" +#: templates/extras/script.html:51 templates/extras/script/source.html:10 +msgid "Error loading script" +msgstr "Erro ao carregar o script" + #: templates/extras/script/jobs.html:16 msgid "Script no longer exists in the source file." msgstr "O script não existe mais no arquivo de origem." diff --git a/netbox/translations/ru/LC_MESSAGES/django.po b/netbox/translations/ru/LC_MESSAGES/django.po index 131d73467..2bcdd9509 100644 --- a/netbox/translations/ru/LC_MESSAGES/django.po +++ b/netbox/translations/ru/LC_MESSAGES/django.po @@ -5,13 +5,13 @@ # # Translators: # Vladyslav V. Prodan, 2024 -# Madi Tuleu, 2024 # Stavr Ognev, 2024 # nvoff, 2024 # Михаил Башкиров, 2024 # Сергей Стрельцов, 2024 # Artem Kotik, 2024 # Ivan Petrov, 2024 +# Madi Tuleu, 2024 # Jeremy Stretch, 2024 # #, fuzzy @@ -19,7 +19,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-05-14 13:22+0000\n" +"POT-Creation-Date: 2024-05-22 17:41+0000\n" "PO-Revision-Date: 2023-10-30 17:48+0000\n" "Last-Translator: Jeremy Stretch, 2024\n" "Language-Team: Russian (https://app.transifex.com/netbox-community/teams/178115/ru/)\n" @@ -72,19 +72,19 @@ msgid "Your preferences have been updated." msgstr "Ваши настройки были обновлены." #: circuits/choices.py:21 dcim/choices.py:20 dcim/choices.py:102 -#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1429 -#: dcim/choices.py:1505 dcim/choices.py:1555 virtualization/choices.py:20 +#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1457 +#: dcim/choices.py:1533 dcim/choices.py:1583 virtualization/choices.py:20 #: virtualization/choices.py:45 vpn/choices.py:18 msgid "Planned" msgstr "Запланировано" -#: circuits/choices.py:22 netbox/navigation/menu.py:289 +#: circuits/choices.py:22 netbox/navigation/menu.py:290 msgid "Provisioning" msgstr "Ввод в эксплутацию" #: circuits/choices.py:23 core/tables/tasks.py:22 dcim/choices.py:22 #: dcim/choices.py:103 dcim/choices.py:173 dcim/choices.py:219 -#: dcim/choices.py:1504 dcim/choices.py:1554 extras/tables/tables.py:385 +#: dcim/choices.py:1532 dcim/choices.py:1582 extras/tables/tables.py:385 #: 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 @@ -94,7 +94,7 @@ msgid "Active" msgstr "Активный" #: circuits/choices.py:24 dcim/choices.py:172 dcim/choices.py:218 -#: dcim/choices.py:1503 dcim/choices.py:1556 virtualization/choices.py:24 +#: dcim/choices.py:1531 dcim/choices.py:1584 virtualization/choices.py:24 #: virtualization/choices.py:43 msgid "Offline" msgstr "Оффлайн" @@ -109,8 +109,8 @@ msgstr "Списан" #: circuits/filtersets.py:29 circuits/filtersets.py:196 dcim/filtersets.py:97 #: dcim/filtersets.py:151 dcim/filtersets.py:211 dcim/filtersets.py:297 -#: dcim/filtersets.py:406 dcim/filtersets.py:969 dcim/filtersets.py:1295 -#: dcim/filtersets.py:1822 dcim/filtersets.py:2065 dcim/filtersets.py:2123 +#: dcim/filtersets.py:406 dcim/filtersets.py:969 dcim/filtersets.py:1305 +#: dcim/filtersets.py:1832 dcim/filtersets.py:2075 dcim/filtersets.py:2133 #: ipam/filtersets.py:339 ipam/filtersets.py:945 #: virtualization/filtersets.py:45 virtualization/filtersets.py:173 #: vpn/filtersets.py:377 @@ -119,8 +119,8 @@ msgstr "Регион (ID)" #: circuits/filtersets.py:36 circuits/filtersets.py:203 dcim/filtersets.py:104 #: dcim/filtersets.py:157 dcim/filtersets.py:218 dcim/filtersets.py:304 -#: dcim/filtersets.py:413 dcim/filtersets.py:976 dcim/filtersets.py:1302 -#: dcim/filtersets.py:1829 dcim/filtersets.py:2072 dcim/filtersets.py:2130 +#: dcim/filtersets.py:413 dcim/filtersets.py:976 dcim/filtersets.py:1312 +#: dcim/filtersets.py:1839 dcim/filtersets.py:2082 dcim/filtersets.py:2140 #: extras/filtersets.py:461 ipam/filtersets.py:346 ipam/filtersets.py:952 #: virtualization/filtersets.py:52 virtualization/filtersets.py:180 #: vpn/filtersets.py:372 @@ -129,8 +129,8 @@ msgstr "Регион (подстрока)" #: circuits/filtersets.py:42 circuits/filtersets.py:209 dcim/filtersets.py:127 #: dcim/filtersets.py:224 dcim/filtersets.py:310 dcim/filtersets.py:419 -#: dcim/filtersets.py:982 dcim/filtersets.py:1308 dcim/filtersets.py:1835 -#: dcim/filtersets.py:2078 dcim/filtersets.py:2136 ipam/filtersets.py:352 +#: dcim/filtersets.py:982 dcim/filtersets.py:1318 dcim/filtersets.py:1845 +#: dcim/filtersets.py:2088 dcim/filtersets.py:2146 ipam/filtersets.py:352 #: ipam/filtersets.py:958 virtualization/filtersets.py:58 #: virtualization/filtersets.py:186 msgid "Site group (ID)" @@ -138,16 +138,18 @@ msgstr "Группа сайтов (ID)" #: circuits/filtersets.py:49 circuits/filtersets.py:216 dcim/filtersets.py:134 #: dcim/filtersets.py:231 dcim/filtersets.py:317 dcim/filtersets.py:426 -#: dcim/filtersets.py:989 dcim/filtersets.py:1315 dcim/filtersets.py:1842 -#: dcim/filtersets.py:2085 dcim/filtersets.py:2143 extras/filtersets.py:467 +#: dcim/filtersets.py:989 dcim/filtersets.py:1325 dcim/filtersets.py:1852 +#: dcim/filtersets.py:2095 dcim/filtersets.py:2153 extras/filtersets.py:467 #: ipam/filtersets.py:359 ipam/filtersets.py:965 #: virtualization/filtersets.py:65 virtualization/filtersets.py:193 msgid "Site group (slug)" msgstr "Группа сайтов (подстрока)" -#: circuits/filtersets.py:54 circuits/forms/bulk_import.py:116 -#: circuits/forms/filtersets.py:48 circuits/forms/filtersets.py:168 -#: circuits/forms/model_forms.py:136 circuits/forms/model_forms.py:152 +#: circuits/filtersets.py:54 circuits/forms/bulk_edit.py:186 +#: circuits/forms/bulk_edit.py:214 circuits/forms/bulk_import.py:126 +#: circuits/forms/filtersets.py:49 circuits/forms/filtersets.py:169 +#: circuits/forms/filtersets.py:207 circuits/forms/model_forms.py:136 +#: circuits/forms/model_forms.py:152 circuits/tables/circuits.py:105 #: dcim/forms/bulk_edit.py:167 dcim/forms/bulk_edit.py:239 #: dcim/forms/bulk_edit.py:575 dcim/forms/bulk_edit.py:771 #: dcim/forms/bulk_import.py:130 dcim/forms/bulk_import.py:184 @@ -155,10 +157,10 @@ msgstr "Группа сайтов (подстрока)" #: dcim/forms/bulk_import.py:1262 dcim/forms/bulk_import.py:1290 #: dcim/forms/filtersets.py:85 dcim/forms/filtersets.py:218 #: dcim/forms/filtersets.py:265 dcim/forms/filtersets.py:374 -#: dcim/forms/filtersets.py:681 dcim/forms/filtersets.py:908 -#: dcim/forms/filtersets.py:932 dcim/forms/filtersets.py:1022 -#: dcim/forms/filtersets.py:1060 dcim/forms/filtersets.py:1468 -#: dcim/forms/filtersets.py:1492 dcim/forms/filtersets.py:1516 +#: dcim/forms/filtersets.py:682 dcim/forms/filtersets.py:916 +#: dcim/forms/filtersets.py:940 dcim/forms/filtersets.py:1030 +#: dcim/forms/filtersets.py:1068 dcim/forms/filtersets.py:1476 +#: dcim/forms/filtersets.py:1500 dcim/forms/filtersets.py:1524 #: dcim/forms/model_forms.py:136 dcim/forms/model_forms.py:164 #: dcim/forms/model_forms.py:206 dcim/forms/model_forms.py:406 #: dcim/forms/model_forms.py:668 dcim/forms/object_create.py:391 @@ -168,11 +170,11 @@ msgstr "Группа сайтов (подстрока)" #: ipam/forms/bulk_edit.py:270 ipam/forms/bulk_edit.py:448 #: ipam/forms/bulk_edit.py:522 ipam/forms/bulk_import.py:170 #: ipam/forms/bulk_import.py:437 ipam/forms/filtersets.py:153 -#: ipam/forms/filtersets.py:230 ipam/forms/filtersets.py:425 -#: ipam/forms/filtersets.py:489 ipam/forms/model_forms.py:203 -#: ipam/forms/model_forms.py:578 ipam/forms/model_forms.py:673 +#: ipam/forms/filtersets.py:231 ipam/forms/filtersets.py:432 +#: ipam/forms/filtersets.py:496 ipam/forms/model_forms.py:203 +#: ipam/forms/model_forms.py:587 ipam/forms/model_forms.py:682 #: ipam/tables/ip.py:244 ipam/tables/vlans.py:114 ipam/tables/vlans.py:216 -#: templates/circuits/inc/circuit_termination.html:32 +#: templates/circuits/inc/circuit_termination_fields.html:6 #: templates/dcim/device.html:21 templates/dcim/inc/cable_termination.html:8 #: templates/dcim/inc/cable_termination.html:33 #: templates/dcim/location.html:37 templates/dcim/powerpanel.html:22 @@ -209,19 +211,21 @@ msgstr "Сайт (подстрока)" msgid "ASN (ID)" msgstr "ASN (ID)" -#: circuits/filtersets.py:71 circuits/forms/filtersets.py:28 +#: circuits/filtersets.py:71 circuits/forms/filtersets.py:29 #: ipam/forms/model_forms.py:157 ipam/models/asns.py:108 #: ipam/models/asns.py:125 ipam/tables/asn.py:41 templates/ipam/asn.html:20 msgid "ASN" msgstr "ASN" #: circuits/filtersets.py:93 circuits/filtersets.py:120 -#: circuits/filtersets.py:154 ipam/filtersets.py:243 +#: circuits/filtersets.py:154 circuits/filtersets.py:281 +#: ipam/filtersets.py:243 msgid "Provider (ID)" msgstr "Провайдер (ID)" #: circuits/filtersets.py:99 circuits/filtersets.py:126 -#: circuits/filtersets.py:160 ipam/filtersets.py:249 +#: circuits/filtersets.py:160 circuits/filtersets.py:287 +#: ipam/filtersets.py:249 msgid "Provider (slug)" msgstr "Провайдер (подстрока)" @@ -247,8 +251,8 @@ msgstr "Тип канала связи (подстрока)" #: circuits/filtersets.py:221 circuits/filtersets.py:266 #: dcim/filtersets.py:235 dcim/filtersets.py:321 dcim/filtersets.py:394 -#: dcim/filtersets.py:993 dcim/filtersets.py:1320 dcim/filtersets.py:1847 -#: dcim/filtersets.py:2089 dcim/filtersets.py:2148 ipam/filtersets.py:232 +#: dcim/filtersets.py:993 dcim/filtersets.py:1330 dcim/filtersets.py:1857 +#: dcim/filtersets.py:2099 dcim/filtersets.py:2158 ipam/filtersets.py:232 #: ipam/filtersets.py:363 ipam/filtersets.py:969 #: virtualization/filtersets.py:69 virtualization/filtersets.py:197 #: vpn/filtersets.py:387 @@ -260,13 +264,13 @@ msgid "Termination A (ID)" msgstr "Прекращение действия A (ID)" #: circuits/filtersets.py:258 core/filtersets.py:73 core/filtersets.py:132 -#: dcim/filtersets.py:693 dcim/filtersets.py:1289 dcim/filtersets.py:2196 +#: dcim/filtersets.py:693 dcim/filtersets.py:1299 dcim/filtersets.py:2206 #: extras/filtersets.py:41 extras/filtersets.py:63 extras/filtersets.py:92 #: extras/filtersets.py:127 extras/filtersets.py:176 extras/filtersets.py:204 #: extras/filtersets.py:234 extras/filtersets.py:271 extras/filtersets.py:343 #: extras/filtersets.py:390 extras/filtersets.py:450 extras/filtersets.py:613 #: extras/filtersets.py:655 extras/filtersets.py:696 -#: ipam/forms/model_forms.py:438 netbox/filtersets.py:275 +#: ipam/forms/model_forms.py:447 netbox/filtersets.py:275 #: netbox/forms/__init__.py:22 netbox/forms/base.py:165 #: templates/htmx/object_selector.html:28 templates/inc/filter_list.html:45 #: templates/ipam/ipaddress_assign.html:29 templates/search.html:7 @@ -276,9 +280,12 @@ msgstr "Прекращение действия A (ID)" msgid "Search" msgstr "Поиск" -#: circuits/filtersets.py:262 circuits/forms/bulk_edit.py:168 -#: circuits/forms/model_forms.py:109 circuits/forms/model_forms.py:131 +#: circuits/filtersets.py:262 circuits/forms/bulk_edit.py:170 +#: circuits/forms/bulk_import.py:117 circuits/forms/filtersets.py:196 +#: circuits/forms/filtersets.py:212 circuits/forms/model_forms.py:109 +#: circuits/forms/model_forms.py:131 circuits/tables/circuits.py:96 #: dcim/forms/connections.py:71 templates/circuits/circuit.html:15 +#: templates/circuits/circuittermination.html:19 #: templates/dcim/inc/cable_termination.html:55 #: templates/dcim/trace/circuit.html:4 msgid "Circuit" @@ -288,48 +295,48 @@ msgstr "Канал связи" msgid "ProviderNetwork (ID)" msgstr "Сеть провайдера (ID)" -#: circuits/forms/bulk_edit.py:26 circuits/forms/filtersets.py:53 +#: circuits/forms/bulk_edit.py:28 circuits/forms/filtersets.py:54 #: circuits/forms/model_forms.py:27 circuits/tables/providers.py:33 #: dcim/forms/bulk_edit.py:127 dcim/forms/filtersets.py:188 #: dcim/forms/model_forms.py:122 dcim/tables/sites.py:94 -#: ipam/models/asns.py:126 ipam/tables/asn.py:27 ipam/views.py:218 +#: ipam/models/asns.py:126 ipam/tables/asn.py:27 ipam/views.py:219 #: netbox/navigation/menu.py:159 netbox/navigation/menu.py:162 #: templates/circuits/provider.html:23 msgid "ASNs" msgstr "ASN" -#: circuits/forms/bulk_edit.py:30 circuits/forms/bulk_edit.py:52 -#: circuits/forms/bulk_edit.py:79 circuits/forms/bulk_edit.py:100 -#: circuits/forms/bulk_edit.py:160 core/forms/bulk_edit.py:28 -#: core/tables/plugins.py:29 dcim/forms/bulk_create.py:35 -#: dcim/forms/bulk_edit.py:72 dcim/forms/bulk_edit.py:91 -#: dcim/forms/bulk_edit.py:150 dcim/forms/bulk_edit.py:191 -#: dcim/forms/bulk_edit.py:209 dcim/forms/bulk_edit.py:337 -#: dcim/forms/bulk_edit.py:373 dcim/forms/bulk_edit.py:388 -#: dcim/forms/bulk_edit.py:447 dcim/forms/bulk_edit.py:486 -#: dcim/forms/bulk_edit.py:516 dcim/forms/bulk_edit.py:540 -#: dcim/forms/bulk_edit.py:613 dcim/forms/bulk_edit.py:665 -#: dcim/forms/bulk_edit.py:717 dcim/forms/bulk_edit.py:740 -#: dcim/forms/bulk_edit.py:788 dcim/forms/bulk_edit.py:858 -#: dcim/forms/bulk_edit.py:911 dcim/forms/bulk_edit.py:946 -#: dcim/forms/bulk_edit.py:986 dcim/forms/bulk_edit.py:1030 -#: dcim/forms/bulk_edit.py:1075 dcim/forms/bulk_edit.py:1102 -#: dcim/forms/bulk_edit.py:1120 dcim/forms/bulk_edit.py:1138 -#: dcim/forms/bulk_edit.py:1156 dcim/forms/bulk_edit.py:1575 -#: extras/forms/bulk_edit.py:36 extras/forms/bulk_edit.py:124 -#: extras/forms/bulk_edit.py:153 extras/forms/bulk_edit.py:183 -#: extras/forms/bulk_edit.py:264 extras/forms/bulk_edit.py:288 -#: extras/forms/bulk_edit.py:302 extras/tables/tables.py:58 -#: ipam/forms/bulk_edit.py:51 ipam/forms/bulk_edit.py:71 -#: ipam/forms/bulk_edit.py:91 ipam/forms/bulk_edit.py:115 -#: ipam/forms/bulk_edit.py:144 ipam/forms/bulk_edit.py:173 -#: ipam/forms/bulk_edit.py:192 ipam/forms/bulk_edit.py:261 -#: ipam/forms/bulk_edit.py:305 ipam/forms/bulk_edit.py:353 -#: ipam/forms/bulk_edit.py:396 ipam/forms/bulk_edit.py:424 -#: ipam/forms/bulk_edit.py:554 ipam/forms/bulk_edit.py:585 -#: templates/account/token.html:35 templates/circuits/circuit.html:59 -#: templates/circuits/circuittype.html:26 -#: templates/circuits/inc/circuit_termination.html:114 +#: circuits/forms/bulk_edit.py:32 circuits/forms/bulk_edit.py:54 +#: circuits/forms/bulk_edit.py:81 circuits/forms/bulk_edit.py:102 +#: circuits/forms/bulk_edit.py:162 circuits/forms/bulk_edit.py:181 +#: core/forms/bulk_edit.py:28 core/tables/plugins.py:29 +#: dcim/forms/bulk_create.py:35 dcim/forms/bulk_edit.py:72 +#: dcim/forms/bulk_edit.py:91 dcim/forms/bulk_edit.py:150 +#: dcim/forms/bulk_edit.py:191 dcim/forms/bulk_edit.py:209 +#: dcim/forms/bulk_edit.py:337 dcim/forms/bulk_edit.py:373 +#: dcim/forms/bulk_edit.py:388 dcim/forms/bulk_edit.py:447 +#: dcim/forms/bulk_edit.py:486 dcim/forms/bulk_edit.py:516 +#: dcim/forms/bulk_edit.py:540 dcim/forms/bulk_edit.py:613 +#: dcim/forms/bulk_edit.py:665 dcim/forms/bulk_edit.py:717 +#: dcim/forms/bulk_edit.py:740 dcim/forms/bulk_edit.py:788 +#: dcim/forms/bulk_edit.py:858 dcim/forms/bulk_edit.py:911 +#: dcim/forms/bulk_edit.py:946 dcim/forms/bulk_edit.py:986 +#: dcim/forms/bulk_edit.py:1030 dcim/forms/bulk_edit.py:1075 +#: dcim/forms/bulk_edit.py:1102 dcim/forms/bulk_edit.py:1120 +#: dcim/forms/bulk_edit.py:1138 dcim/forms/bulk_edit.py:1156 +#: dcim/forms/bulk_edit.py:1575 extras/forms/bulk_edit.py:36 +#: extras/forms/bulk_edit.py:124 extras/forms/bulk_edit.py:153 +#: extras/forms/bulk_edit.py:183 extras/forms/bulk_edit.py:264 +#: extras/forms/bulk_edit.py:288 extras/forms/bulk_edit.py:302 +#: extras/tables/tables.py:58 ipam/forms/bulk_edit.py:51 +#: ipam/forms/bulk_edit.py:71 ipam/forms/bulk_edit.py:91 +#: ipam/forms/bulk_edit.py:115 ipam/forms/bulk_edit.py:144 +#: ipam/forms/bulk_edit.py:173 ipam/forms/bulk_edit.py:192 +#: ipam/forms/bulk_edit.py:261 ipam/forms/bulk_edit.py:305 +#: ipam/forms/bulk_edit.py:353 ipam/forms/bulk_edit.py:396 +#: ipam/forms/bulk_edit.py:424 ipam/forms/bulk_edit.py:554 +#: ipam/forms/bulk_edit.py:585 templates/account/token.html:35 +#: templates/circuits/circuit.html:59 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/dcim/cable.html:36 @@ -395,32 +402,35 @@ msgstr "ASN" msgid "Description" msgstr "Описание" -#: circuits/forms/bulk_edit.py:47 circuits/forms/bulk_edit.py:69 -#: circuits/forms/bulk_edit.py:119 circuits/forms/bulk_import.py:34 -#: circuits/forms/bulk_import.py:49 circuits/forms/bulk_import.py:75 -#: circuits/forms/filtersets.py:67 circuits/forms/filtersets.py:85 -#: circuits/forms/filtersets.py:113 circuits/forms/filtersets.py:128 +#: circuits/forms/bulk_edit.py:49 circuits/forms/bulk_edit.py:71 +#: circuits/forms/bulk_edit.py:121 circuits/forms/bulk_import.py:35 +#: circuits/forms/bulk_import.py:50 circuits/forms/bulk_import.py:76 +#: circuits/forms/filtersets.py:68 circuits/forms/filtersets.py:86 +#: circuits/forms/filtersets.py:114 circuits/forms/filtersets.py:129 +#: circuits/forms/filtersets.py:197 circuits/forms/filtersets.py:230 #: circuits/forms/model_forms.py:45 circuits/forms/model_forms.py:59 -#: circuits/forms/model_forms.py:91 circuits/tables/circuits.py:55 -#: circuits/tables/providers.py:72 circuits/tables/providers.py:103 -#: templates/circuits/circuit.html:18 templates/circuits/provider.html:20 +#: circuits/forms/model_forms.py:91 circuits/tables/circuits.py:56 +#: circuits/tables/circuits.py:100 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 msgid "Provider" msgstr "Провайдер" -#: circuits/forms/bulk_edit.py:76 circuits/forms/filtersets.py:88 +#: circuits/forms/bulk_edit.py:78 circuits/forms/filtersets.py:89 #: templates/circuits/providernetwork.html:28 msgid "Service ID" msgstr "Идентификатор Службы" -#: circuits/forms/bulk_edit.py:96 circuits/forms/filtersets.py:104 +#: circuits/forms/bulk_edit.py:98 circuits/forms/filtersets.py:105 #: dcim/forms/bulk_edit.py:205 dcim/forms/bulk_edit.py:502 #: dcim/forms/bulk_edit.py:702 dcim/forms/bulk_edit.py:1071 #: dcim/forms/bulk_edit.py:1098 dcim/forms/bulk_edit.py:1571 -#: dcim/forms/filtersets.py:975 dcim/forms/filtersets.py:1351 -#: dcim/forms/filtersets.py:1372 dcim/tables/devices.py:699 +#: dcim/forms/filtersets.py:983 dcim/forms/filtersets.py:1359 +#: dcim/forms/filtersets.py:1380 dcim/tables/devices.py:699 #: dcim/tables/devices.py:759 dcim/tables/devices.py:986 #: dcim/tables/devicetypes.py:245 dcim/tables/devicetypes.py:260 #: dcim/tables/racks.py:32 extras/forms/bulk_edit.py:260 @@ -432,8 +442,8 @@ msgstr "Идентификатор Службы" msgid "Color" msgstr "Цвет" -#: circuits/forms/bulk_edit.py:114 circuits/forms/bulk_import.py:88 -#: circuits/forms/filtersets.py:123 core/forms/bulk_edit.py:18 +#: circuits/forms/bulk_edit.py:116 circuits/forms/bulk_import.py:89 +#: circuits/forms/filtersets.py:124 core/forms/bulk_edit.py:18 #: core/forms/filtersets.py:30 core/tables/data.py:20 core/tables/jobs.py:18 #: dcim/forms/bulk_edit.py:282 dcim/forms/bulk_edit.py:680 #: dcim/forms/bulk_edit.py:819 dcim/forms/bulk_edit.py:887 @@ -445,18 +455,18 @@ msgstr "Цвет" #: dcim/forms/bulk_import.py:725 dcim/forms/bulk_import.py:808 #: dcim/forms/bulk_import.py:902 dcim/forms/bulk_import.py:944 #: dcim/forms/bulk_import.py:1161 dcim/forms/bulk_import.py:1327 -#: dcim/forms/filtersets.py:287 dcim/forms/filtersets.py:866 -#: dcim/forms/filtersets.py:965 dcim/forms/filtersets.py:1086 -#: dcim/forms/filtersets.py:1156 dcim/forms/filtersets.py:1178 -#: dcim/forms/filtersets.py:1200 dcim/forms/filtersets.py:1217 -#: dcim/forms/filtersets.py:1251 dcim/forms/filtersets.py:1346 -#: dcim/forms/filtersets.py:1367 dcim/forms/model_forms.py:643 +#: dcim/forms/filtersets.py:287 dcim/forms/filtersets.py:874 +#: dcim/forms/filtersets.py:973 dcim/forms/filtersets.py:1094 +#: dcim/forms/filtersets.py:1164 dcim/forms/filtersets.py:1186 +#: dcim/forms/filtersets.py:1208 dcim/forms/filtersets.py:1225 +#: dcim/forms/filtersets.py:1259 dcim/forms/filtersets.py:1354 +#: dcim/forms/filtersets.py:1375 dcim/forms/model_forms.py:643 #: dcim/forms/model_forms.py:649 dcim/forms/object_import.py:84 #: dcim/forms/object_import.py:113 dcim/forms/object_import.py:145 #: dcim/tables/devices.py:183 dcim/tables/devices.py:815 #: dcim/tables/power.py:77 extras/forms/bulk_import.py:39 #: extras/tables/tables.py:283 extras/tables/tables.py:355 -#: extras/tables/tables.py:473 netbox/tables/tables.py:237 +#: extras/tables/tables.py:473 netbox/tables/tables.py:239 #: 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 @@ -477,13 +487,13 @@ msgstr "Цвет" msgid "Type" msgstr "Тип" -#: circuits/forms/bulk_edit.py:124 circuits/forms/bulk_import.py:81 -#: circuits/forms/filtersets.py:136 circuits/forms/model_forms.py:96 +#: circuits/forms/bulk_edit.py:126 circuits/forms/bulk_import.py:82 +#: circuits/forms/filtersets.py:137 circuits/forms/model_forms.py:96 msgid "Provider account" msgstr "Аккаунт провайдера" -#: circuits/forms/bulk_edit.py:132 circuits/forms/bulk_import.py:94 -#: circuits/forms/filtersets.py:147 core/forms/filtersets.py:35 +#: circuits/forms/bulk_edit.py:134 circuits/forms/bulk_import.py:95 +#: circuits/forms/filtersets.py:148 core/forms/filtersets.py:35 #: core/forms/filtersets.py:76 core/tables/data.py:23 core/tables/jobs.py:26 #: core/tables/tasks.py:88 dcim/forms/bulk_edit.py:105 #: dcim/forms/bulk_edit.py:180 dcim/forms/bulk_edit.py:261 @@ -495,9 +505,9 @@ msgstr "Аккаунт провайдера" #: dcim/forms/bulk_import.py:1155 dcim/forms/bulk_import.py:1322 #: dcim/forms/bulk_import.py:1386 dcim/forms/filtersets.py:171 #: dcim/forms/filtersets.py:230 dcim/forms/filtersets.py:282 -#: dcim/forms/filtersets.py:727 dcim/forms/filtersets.py:835 -#: dcim/forms/filtersets.py:869 dcim/forms/filtersets.py:970 -#: dcim/forms/filtersets.py:1081 dcim/tables/devices.py:145 +#: dcim/forms/filtersets.py:728 dcim/forms/filtersets.py:843 +#: dcim/forms/filtersets.py:877 dcim/forms/filtersets.py:978 +#: dcim/forms/filtersets.py:1089 dcim/tables/devices.py:145 #: dcim/tables/devices.py:818 dcim/tables/devices.py:1046 #: dcim/tables/modules.py:69 dcim/tables/power.py:74 dcim/tables/racks.py:66 #: dcim/tables/sites.py:82 dcim/tables/sites.py:133 @@ -505,9 +515,9 @@ msgstr "Аккаунт провайдера" #: ipam/forms/bulk_edit.py:338 ipam/forms/bulk_edit.py:544 #: ipam/forms/bulk_import.py:191 ipam/forms/bulk_import.py:256 #: ipam/forms/bulk_import.py:292 ipam/forms/bulk_import.py:458 -#: ipam/forms/filtersets.py:209 ipam/forms/filtersets.py:274 -#: ipam/forms/filtersets.py:348 ipam/forms/filtersets.py:501 -#: ipam/forms/model_forms.py:457 ipam/tables/ip.py:236 ipam/tables/ip.py:309 +#: ipam/forms/filtersets.py:210 ipam/forms/filtersets.py:281 +#: ipam/forms/filtersets.py:355 ipam/forms/filtersets.py:508 +#: ipam/forms/model_forms.py:466 ipam/tables/ip.py:236 ipam/tables/ip.py:309 #: ipam/tables/ip.py:359 ipam/tables/ip.py:421 ipam/tables/ip.py:448 #: ipam/tables/vlans.py:122 ipam/tables/vlans.py:227 #: templates/circuits/circuit.html:34 templates/core/datasource.html:46 @@ -538,8 +548,8 @@ msgstr "Аккаунт провайдера" msgid "Status" msgstr "Статус" -#: circuits/forms/bulk_edit.py:138 circuits/forms/bulk_import.py:99 -#: circuits/forms/filtersets.py:116 dcim/forms/bulk_edit.py:121 +#: circuits/forms/bulk_edit.py:140 circuits/forms/bulk_import.py:100 +#: circuits/forms/filtersets.py:117 dcim/forms/bulk_edit.py:121 #: dcim/forms/bulk_edit.py:186 dcim/forms/bulk_edit.py:256 #: dcim/forms/bulk_edit.py:368 dcim/forms/bulk_edit.py:588 #: dcim/forms/bulk_edit.py:692 dcim/forms/bulk_edit.py:1599 @@ -549,9 +559,9 @@ msgstr "Статус" #: dcim/forms/bulk_import.py:1379 dcim/forms/filtersets.py:166 #: dcim/forms/filtersets.py:198 dcim/forms/filtersets.py:249 #: dcim/forms/filtersets.py:334 dcim/forms/filtersets.py:355 -#: dcim/forms/filtersets.py:652 dcim/forms/filtersets.py:827 -#: dcim/forms/filtersets.py:889 dcim/forms/filtersets.py:919 -#: dcim/forms/filtersets.py:1041 dcim/tables/power.py:88 +#: dcim/forms/filtersets.py:652 dcim/forms/filtersets.py:835 +#: dcim/forms/filtersets.py:897 dcim/forms/filtersets.py:927 +#: dcim/forms/filtersets.py:1049 dcim/tables/power.py:88 #: extras/filtersets.py:564 extras/forms/filtersets.py:332 #: extras/forms/filtersets.py:405 ipam/forms/bulk_edit.py:41 #: ipam/forms/bulk_edit.py:66 ipam/forms/bulk_edit.py:110 @@ -565,8 +575,8 @@ msgstr "Статус" #: ipam/forms/bulk_import.py:451 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:173 ipam/forms/filtersets.py:260 -#: ipam/forms/filtersets.py:303 ipam/forms/filtersets.py:469 +#: ipam/forms/filtersets.py:174 ipam/forms/filtersets.py:267 +#: ipam/forms/filtersets.py:310 ipam/forms/filtersets.py:476 #: ipam/tables/ip.py:451 ipam/tables/vlans.py:224 #: templates/circuits/circuit.html:38 templates/dcim/cable.html:23 #: templates/dcim/device.html:78 templates/dcim/location.html:49 @@ -595,25 +605,25 @@ msgstr "Статус" #: wireless/forms/bulk_import.py:55 wireless/forms/bulk_import.py:97 #: wireless/forms/filtersets.py:35 wireless/forms/filtersets.py:75 msgid "Tenant" -msgstr "Тенант" +msgstr "Арендатор " -#: circuits/forms/bulk_edit.py:143 circuits/forms/filtersets.py:171 +#: circuits/forms/bulk_edit.py:145 circuits/forms/filtersets.py:172 msgid "Install date" msgstr "Дата установки" -#: circuits/forms/bulk_edit.py:148 circuits/forms/filtersets.py:176 +#: circuits/forms/bulk_edit.py:150 circuits/forms/filtersets.py:177 msgid "Termination date" msgstr "Дата отключения" -#: circuits/forms/bulk_edit.py:154 circuits/forms/filtersets.py:183 +#: circuits/forms/bulk_edit.py:156 circuits/forms/filtersets.py:184 msgid "Commit rate (Kbps)" msgstr "Гарантированная скорость (Кбит/с)" -#: circuits/forms/bulk_edit.py:169 circuits/forms/model_forms.py:110 +#: circuits/forms/bulk_edit.py:171 circuits/forms/model_forms.py:110 msgid "Service Parameters" msgstr "Параметры Службы" -#: circuits/forms/bulk_edit.py:170 circuits/forms/model_forms.py:111 +#: circuits/forms/bulk_edit.py:172 circuits/forms/model_forms.py:111 #: dcim/forms/model_forms.py:138 dcim/forms/model_forms.py:180 #: dcim/forms/model_forms.py:228 dcim/forms/model_forms.py:267 #: dcim/forms/model_forms.py:713 dcim/forms/model_forms.py:1636 @@ -632,26 +642,60 @@ msgstr "Параметры Службы" msgid "Tenancy" msgstr "Аренда" -#: circuits/forms/bulk_import.py:37 circuits/forms/bulk_import.py:52 -#: circuits/forms/bulk_import.py:78 +#: circuits/forms/bulk_edit.py:191 circuits/forms/bulk_edit.py:215 +#: circuits/forms/model_forms.py:153 circuits/tables/circuits.py:109 +#: templates/circuits/inc/circuit_termination_fields.html:62 +#: templates/circuits/providernetwork.html:17 +msgid "Provider Network" +msgstr "Сеть провайдера" + +#: circuits/forms/bulk_edit.py:197 +msgid "Port speed (Kbps)" +msgstr "Скорость порта (Кбит/с)" + +#: circuits/forms/bulk_edit.py:201 +msgid "Upstream speed (Kbps)" +msgstr "Скорость восходящего потока (Кбит/с)" + +#: circuits/forms/bulk_edit.py:204 dcim/forms/bulk_edit.py:849 +#: dcim/forms/bulk_edit.py:1208 dcim/forms/bulk_edit.py:1225 +#: dcim/forms/bulk_edit.py:1242 dcim/forms/bulk_edit.py:1260 +#: dcim/forms/bulk_edit.py:1348 dcim/forms/bulk_edit.py:1487 +#: dcim/forms/bulk_edit.py:1504 +msgid "Mark connected" +msgstr "Пометить подключенным" + +#: circuits/forms/bulk_edit.py:217 circuits/forms/model_forms.py:155 +#: templates/circuits/inc/circuit_termination_fields.html:54 +#: templates/dcim/frontport.html:121 templates/dcim/interface.html:193 +#: templates/dcim/rearport.html:111 +msgid "Circuit Termination" +msgstr "Прекращение цепи" + +#: circuits/forms/bulk_edit.py:219 circuits/forms/model_forms.py:157 +msgid "Termination Details" +msgstr "Сведения об увольнении" + +#: circuits/forms/bulk_import.py:38 circuits/forms/bulk_import.py:53 +#: circuits/forms/bulk_import.py:79 msgid "Assigned provider" msgstr "Назначенный провайдер" -#: circuits/forms/bulk_import.py:69 dcim/forms/bulk_import.py:178 +#: circuits/forms/bulk_import.py:70 dcim/forms/bulk_import.py:178 #: dcim/forms/bulk_import.py:388 dcim/forms/bulk_import.py:1108 #: dcim/forms/bulk_import.py:1187 extras/forms/bulk_import.py:232 msgid "RGB color in hexadecimal. Example:" msgstr "Цвет RGB в шестнадцатеричном формате. Пример:" -#: circuits/forms/bulk_import.py:84 +#: circuits/forms/bulk_import.py:85 msgid "Assigned provider account" msgstr "Назначенный аккаунт провайдера" -#: circuits/forms/bulk_import.py:91 +#: circuits/forms/bulk_import.py:92 msgid "Type of circuit" msgstr "Тип канала связи" -#: circuits/forms/bulk_import.py:96 dcim/forms/bulk_import.py:89 +#: circuits/forms/bulk_import.py:97 dcim/forms/bulk_import.py:89 #: dcim/forms/bulk_import.py:148 dcim/forms/bulk_import.py:204 #: dcim/forms/bulk_import.py:452 dcim/forms/bulk_import.py:606 #: dcim/forms/bulk_import.py:1324 ipam/forms/bulk_import.py:193 @@ -662,7 +706,7 @@ msgstr "Тип канала связи" msgid "Operational status" msgstr "Операционный статус" -#: circuits/forms/bulk_import.py:103 dcim/forms/bulk_import.py:110 +#: circuits/forms/bulk_import.py:104 dcim/forms/bulk_import.py:110 #: dcim/forms/bulk_import.py:155 dcim/forms/bulk_import.py:286 #: dcim/forms/bulk_import.py:428 dcim/forms/bulk_import.py:1171 #: dcim/forms/bulk_import.py:1319 dcim/forms/bulk_import.py:1383 @@ -676,37 +720,46 @@ msgstr "Операционный статус" msgid "Assigned tenant" msgstr "Назначенный тенант" -#: circuits/forms/bulk_import.py:122 circuits/forms/filtersets.py:144 -#: circuits/forms/model_forms.py:142 +#: circuits/forms/bulk_import.py:122 +#: 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 +msgid "Termination" +msgstr "Прекращение" + +#: circuits/forms/bulk_import.py:132 circuits/forms/filtersets.py:145 +#: circuits/forms/filtersets.py:225 circuits/forms/model_forms.py:142 msgid "Provider network" msgstr "Сеть провайдера" -#: circuits/forms/filtersets.py:27 circuits/forms/filtersets.py:115 -#: dcim/forms/bulk_edit.py:248 dcim/forms/bulk_edit.py:346 -#: dcim/forms/bulk_edit.py:580 dcim/forms/bulk_edit.py:627 -#: dcim/forms/bulk_edit.py:780 dcim/forms/bulk_import.py:189 -#: dcim/forms/bulk_import.py:263 dcim/forms/bulk_import.py:491 -#: dcim/forms/bulk_import.py:1268 dcim/forms/bulk_import.py:1302 -#: dcim/forms/filtersets.py:93 dcim/forms/filtersets.py:246 -#: dcim/forms/filtersets.py:279 dcim/forms/filtersets.py:331 -#: dcim/forms/filtersets.py:382 dcim/forms/filtersets.py:649 -#: dcim/forms/filtersets.py:690 dcim/forms/filtersets.py:888 -#: dcim/forms/filtersets.py:917 dcim/forms/filtersets.py:937 -#: dcim/forms/filtersets.py:1001 dcim/forms/filtersets.py:1031 -#: dcim/forms/filtersets.py:1040 dcim/forms/filtersets.py:1151 -#: dcim/forms/filtersets.py:1173 dcim/forms/filtersets.py:1195 -#: dcim/forms/filtersets.py:1212 dcim/forms/filtersets.py:1232 -#: dcim/forms/filtersets.py:1340 dcim/forms/filtersets.py:1362 -#: dcim/forms/filtersets.py:1383 dcim/forms/filtersets.py:1398 -#: dcim/forms/filtersets.py:1412 dcim/forms/model_forms.py:179 -#: dcim/forms/model_forms.py:211 dcim/forms/model_forms.py:411 -#: dcim/forms/model_forms.py:673 dcim/tables/devices.py:162 -#: dcim/tables/power.py:30 dcim/tables/racks.py:58 dcim/tables/racks.py:143 -#: extras/filtersets.py:488 extras/forms/filtersets.py:329 -#: ipam/forms/bulk_edit.py:457 ipam/forms/filtersets.py:172 -#: ipam/forms/filtersets.py:407 ipam/forms/filtersets.py:430 -#: ipam/forms/filtersets.py:467 ipam/forms/model_forms.py:590 -#: templates/dcim/device.html:25 templates/dcim/device_edit.html:30 +#: circuits/forms/filtersets.py:28 circuits/forms/filtersets.py:116 +#: circuits/forms/filtersets.py:198 dcim/forms/bulk_edit.py:248 +#: dcim/forms/bulk_edit.py:346 dcim/forms/bulk_edit.py:580 +#: dcim/forms/bulk_edit.py:627 dcim/forms/bulk_edit.py:780 +#: dcim/forms/bulk_import.py:189 dcim/forms/bulk_import.py:263 +#: dcim/forms/bulk_import.py:491 dcim/forms/bulk_import.py:1268 +#: dcim/forms/bulk_import.py:1302 dcim/forms/filtersets.py:93 +#: dcim/forms/filtersets.py:246 dcim/forms/filtersets.py:279 +#: dcim/forms/filtersets.py:331 dcim/forms/filtersets.py:382 +#: dcim/forms/filtersets.py:649 dcim/forms/filtersets.py:691 +#: dcim/forms/filtersets.py:896 dcim/forms/filtersets.py:925 +#: dcim/forms/filtersets.py:945 dcim/forms/filtersets.py:1009 +#: dcim/forms/filtersets.py:1039 dcim/forms/filtersets.py:1048 +#: dcim/forms/filtersets.py:1159 dcim/forms/filtersets.py:1181 +#: dcim/forms/filtersets.py:1203 dcim/forms/filtersets.py:1220 +#: dcim/forms/filtersets.py:1240 dcim/forms/filtersets.py:1348 +#: dcim/forms/filtersets.py:1370 dcim/forms/filtersets.py:1391 +#: dcim/forms/filtersets.py:1406 dcim/forms/filtersets.py:1420 +#: dcim/forms/model_forms.py:179 dcim/forms/model_forms.py:211 +#: dcim/forms/model_forms.py:411 dcim/forms/model_forms.py:673 +#: dcim/tables/devices.py:162 dcim/tables/power.py:30 dcim/tables/racks.py:58 +#: dcim/tables/racks.py:143 extras/filtersets.py:488 +#: extras/forms/filtersets.py:329 ipam/forms/bulk_edit.py:457 +#: ipam/forms/filtersets.py:173 ipam/forms/filtersets.py:414 +#: ipam/forms/filtersets.py:437 ipam/forms/filtersets.py:474 +#: ipam/forms/model_forms.py:599 templates/dcim/device.html:25 +#: 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:26 templates/dcim/rackreservation.html:32 @@ -716,12 +769,12 @@ msgstr "Сеть провайдера" msgid "Location" msgstr "Локация" -#: circuits/forms/filtersets.py:29 circuits/forms/filtersets.py:117 +#: circuits/forms/filtersets.py:30 circuits/forms/filtersets.py:118 #: dcim/forms/filtersets.py:137 dcim/forms/filtersets.py:151 #: dcim/forms/filtersets.py:167 dcim/forms/filtersets.py:199 #: dcim/forms/filtersets.py:250 dcim/forms/filtersets.py:335 #: dcim/forms/filtersets.py:406 dcim/forms/filtersets.py:653 -#: dcim/forms/filtersets.py:1002 netbox/navigation/menu.py:44 +#: dcim/forms/filtersets.py:1010 netbox/navigation/menu.py:44 #: netbox/navigation/menu.py:46 tenancy/forms/filtersets.py:42 #: tenancy/tables/columns.py:70 tenancy/tables/contacts.py:25 #: tenancy/views.py:19 virtualization/forms/filtersets.py:37 @@ -730,22 +783,22 @@ msgstr "Локация" msgid "Contacts" msgstr "Контакты" -#: circuits/forms/filtersets.py:34 circuits/forms/filtersets.py:154 +#: circuits/forms/filtersets.py:35 circuits/forms/filtersets.py:155 #: dcim/forms/bulk_edit.py:111 dcim/forms/bulk_edit.py:223 #: dcim/forms/bulk_edit.py:755 dcim/forms/bulk_import.py:92 #: dcim/forms/filtersets.py:71 dcim/forms/filtersets.py:178 #: dcim/forms/filtersets.py:204 dcim/forms/filtersets.py:257 -#: dcim/forms/filtersets.py:360 dcim/forms/filtersets.py:667 -#: dcim/forms/filtersets.py:894 dcim/forms/filtersets.py:924 -#: dcim/forms/filtersets.py:1008 dcim/forms/filtersets.py:1047 -#: dcim/forms/filtersets.py:1460 dcim/forms/filtersets.py:1484 -#: dcim/forms/filtersets.py:1508 dcim/forms/model_forms.py:111 +#: dcim/forms/filtersets.py:360 dcim/forms/filtersets.py:668 +#: dcim/forms/filtersets.py:902 dcim/forms/filtersets.py:932 +#: dcim/forms/filtersets.py:1016 dcim/forms/filtersets.py:1055 +#: dcim/forms/filtersets.py:1468 dcim/forms/filtersets.py:1492 +#: dcim/forms/filtersets.py:1516 dcim/forms/model_forms.py:111 #: dcim/forms/object_create.py:375 dcim/tables/devices.py:148 #: dcim/tables/sites.py:85 extras/filtersets.py:455 #: ipam/forms/bulk_edit.py:206 ipam/forms/bulk_edit.py:438 -#: ipam/forms/bulk_edit.py:512 ipam/forms/filtersets.py:216 -#: ipam/forms/filtersets.py:415 ipam/forms/filtersets.py:475 -#: ipam/forms/model_forms.py:562 templates/dcim/device.html:17 +#: ipam/forms/bulk_edit.py:512 ipam/forms/filtersets.py:217 +#: ipam/forms/filtersets.py:422 ipam/forms/filtersets.py:482 +#: ipam/forms/model_forms.py:571 templates/dcim/device.html:17 #: templates/dcim/rack.html:16 templates/dcim/rackreservation.html:22 #: templates/dcim/region.html:26 templates/dcim/site.html:30 #: templates/ipam/prefix.html:49 templates/ipam/vlan.html:16 @@ -755,42 +808,42 @@ msgstr "Контакты" msgid "Region" msgstr "Регион" -#: circuits/forms/filtersets.py:39 circuits/forms/filtersets.py:159 +#: circuits/forms/filtersets.py:40 circuits/forms/filtersets.py:160 #: dcim/forms/bulk_edit.py:231 dcim/forms/bulk_edit.py:763 #: dcim/forms/filtersets.py:76 dcim/forms/filtersets.py:183 #: dcim/forms/filtersets.py:209 dcim/forms/filtersets.py:270 -#: dcim/forms/filtersets.py:365 dcim/forms/filtersets.py:672 -#: dcim/forms/filtersets.py:899 dcim/forms/filtersets.py:1013 -#: dcim/forms/filtersets.py:1052 dcim/forms/object_create.py:383 +#: dcim/forms/filtersets.py:365 dcim/forms/filtersets.py:673 +#: dcim/forms/filtersets.py:907 dcim/forms/filtersets.py:1021 +#: dcim/forms/filtersets.py:1060 dcim/forms/object_create.py:383 #: extras/filtersets.py:472 ipam/forms/bulk_edit.py:211 #: ipam/forms/bulk_edit.py:445 ipam/forms/bulk_edit.py:517 -#: ipam/forms/filtersets.py:221 ipam/forms/filtersets.py:420 -#: ipam/forms/filtersets.py:480 ipam/forms/model_forms.py:575 +#: ipam/forms/filtersets.py:222 ipam/forms/filtersets.py:427 +#: ipam/forms/filtersets.py:487 ipam/forms/model_forms.py:584 #: virtualization/forms/bulk_edit.py:86 virtualization/forms/filtersets.py:69 #: virtualization/forms/filtersets.py:138 #: virtualization/forms/model_forms.py:98 msgid "Site group" msgstr "Группа сайтов" -#: circuits/forms/filtersets.py:62 circuits/forms/filtersets.py:80 -#: circuits/forms/filtersets.py:99 circuits/forms/filtersets.py:114 +#: circuits/forms/filtersets.py:63 circuits/forms/filtersets.py:81 +#: circuits/forms/filtersets.py:100 circuits/forms/filtersets.py:115 #: core/forms/filtersets.py:64 dcim/forms/bulk_edit.py:726 #: dcim/forms/filtersets.py:165 dcim/forms/filtersets.py:197 -#: dcim/forms/filtersets.py:826 dcim/forms/filtersets.py:918 -#: dcim/forms/filtersets.py:1042 dcim/forms/filtersets.py:1150 -#: dcim/forms/filtersets.py:1172 dcim/forms/filtersets.py:1194 -#: dcim/forms/filtersets.py:1211 dcim/forms/filtersets.py:1228 -#: dcim/forms/filtersets.py:1339 dcim/forms/filtersets.py:1361 -#: dcim/forms/filtersets.py:1382 dcim/forms/filtersets.py:1397 -#: dcim/forms/filtersets.py:1410 extras/forms/filtersets.py:43 +#: dcim/forms/filtersets.py:834 dcim/forms/filtersets.py:926 +#: dcim/forms/filtersets.py:1050 dcim/forms/filtersets.py:1158 +#: dcim/forms/filtersets.py:1180 dcim/forms/filtersets.py:1202 +#: dcim/forms/filtersets.py:1219 dcim/forms/filtersets.py:1236 +#: dcim/forms/filtersets.py:1347 dcim/forms/filtersets.py:1369 +#: dcim/forms/filtersets.py:1390 dcim/forms/filtersets.py:1405 +#: dcim/forms/filtersets.py:1418 extras/forms/filtersets.py:43 #: extras/forms/filtersets.py:112 extras/forms/filtersets.py:143 #: extras/forms/filtersets.py:183 extras/forms/filtersets.py:199 #: extras/forms/filtersets.py:230 extras/forms/filtersets.py:254 #: extras/forms/filtersets.py:450 extras/forms/filtersets.py:488 -#: ipam/forms/filtersets.py:99 ipam/forms/filtersets.py:259 -#: ipam/forms/filtersets.py:300 ipam/forms/filtersets.py:375 -#: ipam/forms/filtersets.py:468 ipam/forms/filtersets.py:527 -#: ipam/forms/filtersets.py:545 netbox/tables/tables.py:253 +#: ipam/forms/filtersets.py:99 ipam/forms/filtersets.py:266 +#: ipam/forms/filtersets.py:307 ipam/forms/filtersets.py:382 +#: ipam/forms/filtersets.py:475 ipam/forms/filtersets.py:534 +#: ipam/forms/filtersets.py:552 netbox/tables/tables.py:255 #: virtualization/forms/filtersets.py:45 #: virtualization/forms/filtersets.py:103 #: virtualization/forms/filtersets.py:194 @@ -799,28 +852,15 @@ msgstr "Группа сайтов" msgid "Attributes" msgstr "Атрибуты" -#: circuits/forms/filtersets.py:70 circuits/tables/circuits.py:60 +#: circuits/forms/filtersets.py:71 circuits/tables/circuits.py:61 #: circuits/tables/providers.py:66 templates/circuits/circuit.html:22 #: templates/circuits/provideraccount.html:24 msgid "Account" msgstr "Аккаунт" -#: circuits/forms/model_forms.py:153 -#: templates/circuits/inc/circuit_termination.html:88 -#: templates/circuits/providernetwork.html:17 -msgid "Provider Network" -msgstr "Сеть провайдера" - -#: circuits/forms/model_forms.py:155 -#: templates/circuits/inc/circuit_termination.html:80 -#: templates/dcim/frontport.html:121 templates/dcim/interface.html:193 -#: templates/dcim/rearport.html:111 -msgid "Circuit Termination" -msgstr "Прекращение цепи" - -#: circuits/forms/model_forms.py:157 -msgid "Termination Details" -msgstr "Сведения об увольнении" +#: circuits/forms/filtersets.py:215 +msgid "Term Side" +msgstr "Терминология" #: circuits/models/circuits.py:25 dcim/models/cables.py:67 #: dcim/models/device_component_templates.py:491 @@ -851,8 +891,8 @@ msgstr "Уникальный ID канала связи" #: core/models/jobs.py:85 dcim/models/cables.py:49 dcim/models/devices.py:643 #: dcim/models/devices.py:1155 dcim/models/devices.py:1364 #: dcim/models/power.py:96 dcim/models/racks.py:98 dcim/models/sites.py:154 -#: dcim/models/sites.py:266 ipam/models/ip.py:252 ipam/models/ip.py:521 -#: ipam/models/ip.py:729 ipam/models/vlans.py:175 +#: dcim/models/sites.py:266 ipam/models/ip.py:253 ipam/models/ip.py:522 +#: ipam/models/ip.py:730 ipam/models/vlans.py:175 #: virtualization/models/clusters.py:74 #: virtualization/models/virtualmachines.py:84 vpn/models/tunnels.py:40 #: wireless/models.py:94 wireless/models.py:158 @@ -1026,15 +1066,15 @@ msgstr "сеть провайдера" msgid "provider networks" msgstr "сети провайдера" -#: circuits/tables/circuits.py:29 circuits/tables/providers.py:18 +#: circuits/tables/circuits.py:30 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:13 #: core/tables/tasks.py:11 core/tables/tasks.py:115 #: dcim/forms/filtersets.py:61 dcim/forms/object_create.py:43 #: dcim/tables/devices.py:60 dcim/tables/devices.py:97 #: dcim/tables/devices.py:139 dcim/tables/devices.py:294 -#: dcim/tables/devices.py:376 dcim/tables/devices.py:420 -#: dcim/tables/devices.py:472 dcim/tables/devices.py:524 +#: dcim/tables/devices.py:380 dcim/tables/devices.py:424 +#: dcim/tables/devices.py:476 dcim/tables/devices.py:528 #: dcim/tables/devices.py:644 dcim/tables/devices.py:726 #: dcim/tables/devices.py:776 dcim/tables/devices.py:842 #: dcim/tables/devices.py:957 dcim/tables/devices.py:977 @@ -1048,7 +1088,7 @@ msgstr "сети провайдера" #: extras/tables/tables.py:209 extras/tables/tables.py:256 #: extras/tables/tables.py:279 extras/tables/tables.py:329 #: extras/tables/tables.py:381 extras/tables/tables.py:404 -#: ipam/forms/bulk_edit.py:391 ipam/forms/filtersets.py:379 +#: ipam/forms/bulk_edit.py:391 ipam/forms/filtersets.py:386 #: ipam/tables/asn.py:16 ipam/tables/ip.py:85 ipam/tables/ip.py:159 #: ipam/tables/services.py:15 ipam/tables/services.py:40 #: ipam/tables/vlans.py:64 ipam/tables/vlans.py:110 ipam/tables/vrfs.py:26 @@ -1114,7 +1154,7 @@ msgstr "сети провайдера" msgid "Name" msgstr "Имя" -#: circuits/tables/circuits.py:38 circuits/tables/providers.py:45 +#: circuits/tables/circuits.py:39 circuits/tables/providers.py:45 #: circuits/tables/providers.py:79 netbox/navigation/menu.py:253 #: netbox/navigation/menu.py:257 netbox/navigation/menu.py:259 #: templates/circuits/provider.html:57 @@ -1123,23 +1163,23 @@ msgstr "Имя" msgid "Circuits" msgstr "Каналы связи" -#: circuits/tables/circuits.py:52 templates/circuits/circuit.html:26 +#: circuits/tables/circuits.py:53 templates/circuits/circuit.html:26 msgid "Circuit ID" msgstr "Идентификатор канала связи" -#: circuits/tables/circuits.py:65 wireless/forms/model_forms.py:160 +#: circuits/tables/circuits.py:66 wireless/forms/model_forms.py:160 msgid "Side A" msgstr "Сторона А" -#: circuits/tables/circuits.py:69 +#: circuits/tables/circuits.py:70 msgid "Side Z" msgstr "Сторона Z" -#: circuits/tables/circuits.py:72 templates/circuits/circuit.html:55 +#: circuits/tables/circuits.py:73 templates/circuits/circuit.html:55 msgid "Commit Rate" msgstr "Гарантированная скорость" -#: circuits/tables/circuits.py:75 circuits/tables/providers.py:48 +#: circuits/tables/circuits.py:76 circuits/tables/providers.py:48 #: circuits/tables/providers.py:82 circuits/tables/providers.py:107 #: dcim/tables/devices.py:1019 dcim/tables/devicetypes.py:92 #: dcim/tables/modules.py:29 dcim/tables/modules.py:72 dcim/tables/power.py:39 @@ -1196,12 +1236,12 @@ msgstr "Завершено" #: core/choices.py:22 core/choices.py:59 core/constants.py:20 #: core/tables/tasks.py:34 dcim/choices.py:176 dcim/choices.py:222 -#: dcim/choices.py:1506 extras/choices.py:226 virtualization/choices.py:47 +#: dcim/choices.py:1534 extras/choices.py:226 virtualization/choices.py:47 msgid "Failed" msgstr "Неисправно" -#: core/choices.py:35 netbox/navigation/menu.py:319 -#: netbox/navigation/menu.py:323 templates/extras/script/base.html:14 +#: core/choices.py:35 netbox/navigation/menu.py:320 +#: netbox/navigation/menu.py:324 templates/extras/script/base.html:14 #: templates/extras/script_list.html:7 templates/extras/script_list.html:12 #: templates/extras/script_result.html:17 msgid "Scripts" @@ -1296,8 +1336,8 @@ msgstr "Источник данных (имя)" #: core/forms/bulk_edit.py:25 core/forms/filtersets.py:40 #: core/tables/data.py:26 dcim/forms/bulk_edit.py:1020 -#: dcim/forms/bulk_edit.py:1293 dcim/forms/filtersets.py:1268 -#: dcim/tables/devices.py:549 dcim/tables/devicetypes.py:221 +#: dcim/forms/bulk_edit.py:1293 dcim/forms/filtersets.py:1276 +#: dcim/tables/devices.py:553 dcim/tables/devicetypes.py:221 #: extras/forms/bulk_edit.py:98 extras/forms/bulk_edit.py:162 #: extras/forms/bulk_edit.py:221 extras/forms/filtersets.py:120 #: extras/forms/filtersets.py:207 extras/forms/filtersets.py:268 @@ -1434,10 +1474,10 @@ msgstr "Необходимо загрузить файл или выбрать msgid "Rack Elevations" msgstr "Фасады стоек" -#: core/forms/model_forms.py:157 dcim/choices.py:1417 +#: core/forms/model_forms.py:157 dcim/choices.py:1445 #: dcim/forms/bulk_edit.py:867 dcim/forms/bulk_edit.py:1250 #: dcim/forms/bulk_edit.py:1268 dcim/tables/racks.py:89 -#: netbox/navigation/menu.py:275 netbox/navigation/menu.py:279 +#: netbox/navigation/menu.py:276 netbox/navigation/menu.py:280 msgid "Power" msgstr "Мощность" @@ -1470,7 +1510,7 @@ msgstr "Валидация" msgid "User Preferences" msgstr "Пользовательские настройки" -#: core/forms/model_forms.py:167 dcim/forms/filtersets.py:660 +#: core/forms/model_forms.py:167 dcim/forms/filtersets.py:661 #: templates/core/inc/config_data.html:127 users/forms/model_forms.py:65 msgid "Miscellaneous" msgstr "Разное" @@ -1613,7 +1653,7 @@ msgstr "путь" msgid "File path relative to the data source's root" msgstr "Путь к файлу относительно корня источника данных" -#: core/models/data.py:303 ipam/models/ip.py:502 +#: core/models/data.py:303 ipam/models/ip.py:503 msgid "size" msgstr "размер" @@ -1732,7 +1772,7 @@ msgstr "Последнее обновление" #: core/tables/jobs.py:10 core/tables/tasks.py:76 #: dcim/tables/devicetypes.py:161 extras/tables/tables.py:179 -#: extras/tables/tables.py:350 netbox/tables/tables.py:187 +#: extras/tables/tables.py:350 netbox/tables/tables.py:188 #: templates/dcim/virtualchassis_edit.html:52 utilities/forms/forms.py:73 #: wireless/tables/wirelesslink.py:16 msgid "ID" @@ -1741,7 +1781,7 @@ msgstr "ID" #: core/tables/jobs.py:21 extras/choices.py:41 extras/tables/tables.py:241 #: extras/tables/tables.py:287 extras/tables/tables.py:360 #: extras/tables/tables.py:478 extras/tables/tables.py:509 -#: extras/tables/tables.py:574 netbox/tables/tables.py:241 +#: extras/tables/tables.py:574 netbox/tables/tables.py:243 #: templates/extras/eventrule.html:84 templates/extras/journalentry.html:18 #: templates/extras/objectchange.html:57 tenancy/tables/contacts.py:93 #: vpn/tables/l2vpn.py:64 @@ -1786,7 +1826,7 @@ msgstr "Рабочие" msgid "Host" msgstr "Хост" -#: core/tables/tasks.py:50 ipam/forms/filtersets.py:535 +#: core/tables/tasks.py:50 ipam/forms/filtersets.py:542 msgid "Port" msgstr "Порт" @@ -1853,7 +1893,7 @@ msgid "Staging" msgstr "Подготовка к развертыванию" #: dcim/choices.py:23 dcim/choices.py:178 dcim/choices.py:223 -#: dcim/choices.py:1430 virtualization/choices.py:23 +#: dcim/choices.py:1458 virtualization/choices.py:23 #: virtualization/choices.py:48 msgid "Decommissioning" msgstr "Вывод из эксплуатации" @@ -1913,7 +1953,7 @@ msgstr "Выведенный(-ая) из использования" msgid "Millimeters" msgstr "Миллиметры" -#: dcim/choices.py:115 dcim/choices.py:1452 +#: dcim/choices.py:115 dcim/choices.py:1480 msgid "Inches" msgstr "Дюймы" @@ -1988,7 +2028,7 @@ msgstr "Справа налево" msgid "Side to rear" msgstr "Бок назад" -#: dcim/choices.py:198 dcim/choices.py:1225 +#: dcim/choices.py:198 dcim/choices.py:1253 msgid "Passive" msgstr "Пассивный" @@ -1996,56 +2036,56 @@ msgstr "Пассивный" msgid "Mixed" msgstr "Смешанный" -#: dcim/choices.py:443 dcim/choices.py:680 +#: dcim/choices.py:447 dcim/choices.py:693 msgid "NEMA (Non-locking)" msgstr "NEMA (не блокирующий)" -#: dcim/choices.py:465 dcim/choices.py:702 +#: dcim/choices.py:469 dcim/choices.py:715 msgid "NEMA (Locking)" msgstr "NEMA (блокирующий)" -#: dcim/choices.py:488 dcim/choices.py:725 +#: dcim/choices.py:492 dcim/choices.py:738 msgid "California Style" msgstr "Калифорнийский стиль" -#: dcim/choices.py:496 +#: dcim/choices.py:500 msgid "International/ITA" msgstr "ITA/Международный" -#: dcim/choices.py:526 dcim/choices.py:755 +#: dcim/choices.py:535 dcim/choices.py:773 msgid "Proprietary" msgstr "Проприетарный" -#: dcim/choices.py:534 dcim/choices.py:764 dcim/choices.py:1141 -#: dcim/choices.py:1143 dcim/choices.py:1348 dcim/choices.py:1350 +#: dcim/choices.py:543 dcim/choices.py:782 dcim/choices.py:1169 +#: dcim/choices.py:1171 dcim/choices.py:1376 dcim/choices.py:1378 #: netbox/navigation/menu.py:187 msgid "Other" msgstr "Другой" -#: dcim/choices.py:733 +#: dcim/choices.py:746 msgid "ITA/International" msgstr "ITA/Международный" -#: dcim/choices.py:794 +#: dcim/choices.py:812 msgid "Physical" msgstr "Физический" -#: dcim/choices.py:795 dcim/choices.py:954 +#: dcim/choices.py:813 dcim/choices.py:977 msgid "Virtual" msgstr "Виртуальный" -#: dcim/choices.py:796 dcim/choices.py:1026 dcim/forms/bulk_edit.py:1408 -#: dcim/forms/filtersets.py:1231 dcim/forms/model_forms.py:933 +#: dcim/choices.py:814 dcim/choices.py:1049 dcim/forms/bulk_edit.py:1408 +#: dcim/forms/filtersets.py:1239 dcim/forms/model_forms.py:933 #: dcim/forms/model_forms.py:1341 netbox/navigation/menu.py:127 #: netbox/navigation/menu.py:131 templates/dcim/interface.html:210 msgid "Wireless" msgstr "Беспроводной" -#: dcim/choices.py:952 +#: dcim/choices.py:975 msgid "Virtual interfaces" msgstr "Виртуальные интерфейсы" -#: dcim/choices.py:955 dcim/forms/bulk_edit.py:1303 +#: dcim/choices.py:978 dcim/forms/bulk_edit.py:1303 #: dcim/forms/bulk_import.py:785 dcim/forms/model_forms.py:919 #: dcim/tables/devices.py:656 templates/dcim/interface.html:106 #: templates/virtualization/vminterface.html:43 @@ -2055,152 +2095,152 @@ msgstr "Виртуальные интерфейсы" msgid "Bridge" msgstr "Мост" -#: dcim/choices.py:956 +#: dcim/choices.py:979 msgid "Link Aggregation Group (LAG)" msgstr "Группа агрегации линков (LAG)" -#: dcim/choices.py:960 +#: dcim/choices.py:983 msgid "Ethernet (fixed)" msgstr "Ethernet (фиксированный)" -#: dcim/choices.py:974 +#: dcim/choices.py:997 msgid "Ethernet (modular)" msgstr "Ethernet (модульный)" -#: dcim/choices.py:1010 +#: dcim/choices.py:1033 msgid "Ethernet (backplane)" msgstr "Ethernet (объединительная плата)" -#: dcim/choices.py:1040 +#: dcim/choices.py:1063 msgid "Cellular" msgstr "Сотовая связь" -#: dcim/choices.py:1090 dcim/forms/filtersets.py:303 -#: dcim/forms/filtersets.py:737 dcim/forms/filtersets.py:874 -#: dcim/forms/filtersets.py:1426 templates/dcim/inventoryitem.html:52 +#: dcim/choices.py:1115 dcim/forms/filtersets.py:303 +#: dcim/forms/filtersets.py:738 dcim/forms/filtersets.py:882 +#: dcim/forms/filtersets.py:1434 templates/dcim/inventoryitem.html:52 #: templates/dcim/virtualchassis_edit.html:54 msgid "Serial" msgstr "Серийный" -#: dcim/choices.py:1105 +#: dcim/choices.py:1130 msgid "Coaxial" msgstr "Коаксиальный" -#: dcim/choices.py:1122 +#: dcim/choices.py:1150 msgid "Stacking" msgstr "Стекирование" -#: dcim/choices.py:1172 +#: dcim/choices.py:1200 msgid "Half" msgstr "Полу" -#: dcim/choices.py:1173 +#: dcim/choices.py:1201 msgid "Full" msgstr "Полный" -#: dcim/choices.py:1174 netbox/preferences.py:31 wireless/choices.py:480 +#: dcim/choices.py:1202 netbox/preferences.py:31 wireless/choices.py:480 msgid "Auto" msgstr "Авто" -#: dcim/choices.py:1185 +#: dcim/choices.py:1213 msgid "Access" msgstr "Доступ" -#: dcim/choices.py:1186 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 +#: dcim/choices.py:1214 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 #: templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "Тегированный" -#: dcim/choices.py:1187 +#: dcim/choices.py:1215 msgid "Tagged (All)" msgstr "Тегированный (все)" -#: dcim/choices.py:1216 +#: dcim/choices.py:1244 msgid "IEEE Standard" msgstr "Стандарт IEEE" -#: dcim/choices.py:1227 +#: dcim/choices.py:1255 msgid "Passive 24V (2-pair)" msgstr "Пассивный режим 24 В (2 пары)" -#: dcim/choices.py:1228 +#: dcim/choices.py:1256 msgid "Passive 24V (4-pair)" msgstr "Пассивное напряжение 24 В (4 пары)" -#: dcim/choices.py:1229 +#: dcim/choices.py:1257 msgid "Passive 48V (2-pair)" msgstr "Пассивное напряжение 48 В (2 пары)" -#: dcim/choices.py:1230 +#: dcim/choices.py:1258 msgid "Passive 48V (4-pair)" msgstr "Пассивное напряжение 48 В (4 пары)" -#: dcim/choices.py:1292 dcim/choices.py:1388 +#: dcim/choices.py:1320 dcim/choices.py:1416 msgid "Copper" msgstr "Медь" -#: dcim/choices.py:1315 +#: dcim/choices.py:1343 msgid "Fiber Optic" msgstr "Оптоволоконное" -#: dcim/choices.py:1404 +#: dcim/choices.py:1432 msgid "Fiber" msgstr "Волокно" -#: dcim/choices.py:1428 dcim/forms/filtersets.py:1138 +#: dcim/choices.py:1456 dcim/forms/filtersets.py:1146 msgid "Connected" msgstr "Подключено" -#: dcim/choices.py:1447 +#: dcim/choices.py:1475 msgid "Kilometers" msgstr "Километры" -#: dcim/choices.py:1448 templates/dcim/cable_trace.html:65 +#: dcim/choices.py:1476 templates/dcim/cable_trace.html:65 msgid "Meters" msgstr "Метры" -#: dcim/choices.py:1449 +#: dcim/choices.py:1477 msgid "Centimeters" msgstr "Сантиметры" -#: dcim/choices.py:1450 +#: dcim/choices.py:1478 msgid "Miles" msgstr "Мили" -#: dcim/choices.py:1451 templates/dcim/cable_trace.html:66 +#: dcim/choices.py:1479 templates/dcim/cable_trace.html:66 msgid "Feet" msgstr "Футы" -#: dcim/choices.py:1467 templates/dcim/device.html:319 +#: dcim/choices.py:1495 templates/dcim/device.html:319 #: templates/dcim/rack.html:152 msgid "Kilograms" msgstr "Килограммы" -#: dcim/choices.py:1468 +#: dcim/choices.py:1496 msgid "Grams" msgstr "Граммы" -#: dcim/choices.py:1469 templates/dcim/rack.html:153 +#: dcim/choices.py:1497 templates/dcim/rack.html:153 msgid "Pounds" msgstr "Фунты" -#: dcim/choices.py:1470 +#: dcim/choices.py:1498 msgid "Ounces" msgstr "Унции" -#: dcim/choices.py:1516 tenancy/choices.py:17 +#: dcim/choices.py:1544 tenancy/choices.py:17 msgid "Primary" msgstr "Основной" -#: dcim/choices.py:1517 +#: dcim/choices.py:1545 msgid "Redundant" msgstr "Резервный" -#: dcim/choices.py:1538 +#: dcim/choices.py:1566 msgid "Single phase" msgstr "Однофазный" -#: dcim/choices.py:1539 +#: dcim/choices.py:1567 msgid "Three-phase" msgstr "Трехфазный" @@ -2251,30 +2291,30 @@ msgid "Parent location (slug)" msgstr "Местонахождение родителя (пуля)" #: dcim/filtersets.py:257 dcim/filtersets.py:333 dcim/filtersets.py:432 -#: dcim/filtersets.py:1005 dcim/filtersets.py:1331 dcim/filtersets.py:2101 +#: dcim/filtersets.py:1005 dcim/filtersets.py:1341 dcim/filtersets.py:2111 msgid "Location (ID)" msgstr "Локация (ID)" #: dcim/filtersets.py:264 dcim/filtersets.py:340 dcim/filtersets.py:439 -#: dcim/filtersets.py:1337 extras/filtersets.py:494 +#: dcim/filtersets.py:1347 extras/filtersets.py:494 msgid "Location (slug)" msgstr "Локация (подстрока)" #: dcim/filtersets.py:354 dcim/filtersets.py:840 dcim/filtersets.py:942 -#: dcim/filtersets.py:1769 ipam/filtersets.py:381 ipam/filtersets.py:493 +#: dcim/filtersets.py:1779 ipam/filtersets.py:381 ipam/filtersets.py:493 #: ipam/filtersets.py:989 virtualization/filtersets.py:210 msgid "Role (ID)" msgstr "Роль (ID)" #: dcim/filtersets.py:360 dcim/filtersets.py:846 dcim/filtersets.py:948 -#: dcim/filtersets.py:1775 extras/filtersets.py:510 ipam/filtersets.py:387 +#: dcim/filtersets.py:1785 extras/filtersets.py:510 ipam/filtersets.py:387 #: ipam/filtersets.py:499 ipam/filtersets.py:995 #: virtualization/filtersets.py:216 msgid "Role (slug)" msgstr "Роль (подстрока)" -#: dcim/filtersets.py:389 dcim/filtersets.py:1010 dcim/filtersets.py:1342 -#: dcim/filtersets.py:2163 +#: dcim/filtersets.py:389 dcim/filtersets.py:1010 dcim/filtersets.py:1352 +#: dcim/filtersets.py:2173 msgid "Rack (ID)" msgstr "Стойка (ID)" @@ -2289,14 +2329,14 @@ msgid "User (name)" msgstr "Пользователь (имя)" #: dcim/filtersets.py:481 dcim/filtersets.py:620 dcim/filtersets.py:830 -#: dcim/filtersets.py:881 dcim/filtersets.py:921 dcim/filtersets.py:1233 -#: dcim/filtersets.py:1759 +#: dcim/filtersets.py:881 dcim/filtersets.py:921 dcim/filtersets.py:1243 +#: dcim/filtersets.py:1769 msgid "Manufacturer (ID)" msgstr "Производитель (ID)" #: dcim/filtersets.py:487 dcim/filtersets.py:626 dcim/filtersets.py:836 -#: dcim/filtersets.py:887 dcim/filtersets.py:927 dcim/filtersets.py:1239 -#: dcim/filtersets.py:1765 +#: dcim/filtersets.py:887 dcim/filtersets.py:927 dcim/filtersets.py:1249 +#: dcim/filtersets.py:1775 msgid "Manufacturer (slug)" msgstr "Производитель (подстрока)" @@ -2318,37 +2358,37 @@ msgstr "Имеет изображение сзади" #: dcim/filtersets.py:509 dcim/filtersets.py:630 dcim/filtersets.py:1068 #: dcim/forms/filtersets.py:466 dcim/forms/filtersets.py:562 -#: dcim/forms/filtersets.py:776 +#: dcim/forms/filtersets.py:777 msgid "Has console ports" msgstr "Имеет консольные порты" #: dcim/filtersets.py:513 dcim/filtersets.py:634 dcim/filtersets.py:1072 #: dcim/forms/filtersets.py:473 dcim/forms/filtersets.py:569 -#: dcim/forms/filtersets.py:783 +#: dcim/forms/filtersets.py:784 msgid "Has console server ports" msgstr "Имеет серверные консольные порты" #: dcim/filtersets.py:517 dcim/filtersets.py:638 dcim/filtersets.py:1076 #: dcim/forms/filtersets.py:480 dcim/forms/filtersets.py:576 -#: dcim/forms/filtersets.py:790 +#: dcim/forms/filtersets.py:791 msgid "Has power ports" msgstr "Имеет порты питания" #: dcim/filtersets.py:521 dcim/filtersets.py:642 dcim/filtersets.py:1080 #: dcim/forms/filtersets.py:487 dcim/forms/filtersets.py:583 -#: dcim/forms/filtersets.py:797 +#: dcim/forms/filtersets.py:798 msgid "Has power outlets" msgstr "Имеет розетки" #: dcim/filtersets.py:525 dcim/filtersets.py:646 dcim/filtersets.py:1084 #: dcim/forms/filtersets.py:494 dcim/forms/filtersets.py:590 -#: dcim/forms/filtersets.py:804 +#: dcim/forms/filtersets.py:805 msgid "Has interfaces" msgstr "Имеет интерфейсы" #: dcim/filtersets.py:529 dcim/filtersets.py:650 dcim/filtersets.py:1088 #: dcim/forms/filtersets.py:501 dcim/forms/filtersets.py:597 -#: dcim/forms/filtersets.py:811 +#: dcim/forms/filtersets.py:812 msgid "Has pass-through ports" msgstr "Имеет сквозные порты" @@ -2364,19 +2404,19 @@ msgstr "Имеет отсеки для устройств" msgid "Has inventory items" msgstr "Имеет инвентарь" -#: dcim/filtersets.py:698 dcim/filtersets.py:937 dcim/filtersets.py:1363 +#: dcim/filtersets.py:698 dcim/filtersets.py:937 dcim/filtersets.py:1373 msgid "Device type (ID)" msgstr "Тип устройства (ID)" -#: dcim/filtersets.py:717 dcim/filtersets.py:1244 +#: dcim/filtersets.py:717 dcim/filtersets.py:1254 msgid "Module type (ID)" msgstr "Тип модуля (ID)" -#: dcim/filtersets.py:752 dcim/filtersets.py:1514 +#: dcim/filtersets.py:752 dcim/filtersets.py:1524 msgid "Power port (ID)" msgstr "Порт питания (ID)" -#: dcim/filtersets.py:826 dcim/filtersets.py:1755 +#: dcim/filtersets.py:826 dcim/filtersets.py:1765 msgid "Parent inventory item (ID)" msgstr "Родительский инвентарь (ID)" @@ -2402,8 +2442,8 @@ msgstr "Платформа (ID)" msgid "Platform (slug)" msgstr "Платформа (подстрока)" -#: dcim/filtersets.py:999 dcim/filtersets.py:1326 dcim/filtersets.py:1853 -#: dcim/filtersets.py:2095 dcim/filtersets.py:2154 +#: dcim/filtersets.py:999 dcim/filtersets.py:1336 dcim/filtersets.py:1863 +#: dcim/filtersets.py:2105 dcim/filtersets.py:2164 msgid "Site name (slug)" msgstr "Имя сайта (подстрока)" @@ -2424,15 +2464,15 @@ msgid "Is full depth" msgstr "Полная глубина" #: dcim/filtersets.py:1040 dcim/forms/common.py:18 -#: dcim/forms/filtersets.py:746 dcim/forms/filtersets.py:1283 +#: dcim/forms/filtersets.py:747 dcim/forms/filtersets.py:1291 #: dcim/models/device_components.py:519 virtualization/filtersets.py:230 #: virtualization/filtersets.py:297 virtualization/forms/filtersets.py:172 #: virtualization/forms/filtersets.py:219 msgid "MAC address" msgstr "MAC-адрес" -#: dcim/filtersets.py:1047 dcim/filtersets.py:1201 -#: dcim/forms/filtersets.py:755 dcim/forms/filtersets.py:841 +#: dcim/filtersets.py:1047 dcim/filtersets.py:1211 +#: dcim/forms/filtersets.py:756 dcim/forms/filtersets.py:849 #: virtualization/filtersets.py:234 virtualization/forms/filtersets.py:176 msgid "Has a primary IP" msgstr "Имеет основной IP-адрес" @@ -2453,59 +2493,63 @@ msgstr "Является членом виртуального шасси" msgid "OOB IP (ID)" msgstr "Сервисный порт (ID)" -#: dcim/filtersets.py:1184 +#: dcim/filtersets.py:1105 +msgid "Has virtual device context" +msgstr "Имеет контекст виртуального устройства" + +#: dcim/filtersets.py:1194 msgid "VDC (ID)" msgstr "VDC (ИДЕНТИФИКАТОР)" -#: dcim/filtersets.py:1189 +#: dcim/filtersets.py:1199 msgid "Device model" msgstr "модель устройства" -#: dcim/filtersets.py:1194 ipam/filtersets.py:632 vpn/filtersets.py:102 +#: dcim/filtersets.py:1204 ipam/filtersets.py:632 vpn/filtersets.py:102 #: vpn/filtersets.py:420 msgid "Interface (ID)" msgstr "Интерфейс (ID)" -#: dcim/filtersets.py:1250 +#: dcim/filtersets.py:1260 msgid "Module type (model)" msgstr "Тип модуля (модель)" -#: dcim/filtersets.py:1256 +#: dcim/filtersets.py:1266 msgid "Module Bay (ID)" msgstr "Отсек для модулей (ID)" -#: dcim/filtersets.py:1260 dcim/filtersets.py:1352 ipam/filtersets.py:611 +#: dcim/filtersets.py:1270 dcim/filtersets.py:1362 ipam/filtersets.py:611 #: ipam/filtersets.py:851 ipam/filtersets.py:1075 #: virtualization/filtersets.py:161 vpn/filtersets.py:398 msgid "Device (ID)" msgstr "Устройство (ID)" -#: dcim/filtersets.py:1348 +#: dcim/filtersets.py:1358 msgid "Rack (name)" msgstr "Стойка (название)" -#: dcim/filtersets.py:1358 ipam/filtersets.py:606 ipam/filtersets.py:846 +#: dcim/filtersets.py:1368 ipam/filtersets.py:606 ipam/filtersets.py:846 #: ipam/filtersets.py:1081 vpn/filtersets.py:393 msgid "Device (name)" msgstr "Устройство (имя)" -#: dcim/filtersets.py:1369 +#: dcim/filtersets.py:1379 msgid "Device type (model)" msgstr "Тип устройства (модель)" -#: dcim/filtersets.py:1374 +#: dcim/filtersets.py:1384 msgid "Device role (ID)" msgstr "Роль устройства (ID)" -#: dcim/filtersets.py:1380 +#: dcim/filtersets.py:1390 msgid "Device role (slug)" msgstr "Роль устройства (подстрока)" -#: dcim/filtersets.py:1385 +#: dcim/filtersets.py:1395 msgid "Virtual Chassis (ID)" msgstr "Виртуальное шасси (ID)" -#: dcim/filtersets.py:1391 dcim/forms/filtersets.py:107 +#: dcim/filtersets.py:1401 dcim/forms/filtersets.py:107 #: dcim/tables/devices.py:211 netbox/navigation/menu.py:66 #: templates/dcim/device.html:119 templates/dcim/device_edit.html:93 #: templates/dcim/virtualchassis.html:20 @@ -2514,37 +2558,37 @@ msgstr "Виртуальное шасси (ID)" msgid "Virtual Chassis" msgstr "Виртуальное шасси" -#: dcim/filtersets.py:1411 +#: dcim/filtersets.py:1421 msgid "Module (ID)" msgstr "Модуль (ID)" -#: dcim/filtersets.py:1418 +#: dcim/filtersets.py:1428 msgid "Cable (ID)" msgstr "Кабель (ID)" -#: dcim/filtersets.py:1527 ipam/forms/bulk_import.py:188 +#: dcim/filtersets.py:1537 ipam/forms/bulk_import.py:188 #: vpn/forms/bulk_import.py:308 msgid "Assigned VLAN" msgstr "Назначенная VLAN" -#: dcim/filtersets.py:1531 +#: dcim/filtersets.py:1541 msgid "Assigned VID" msgstr "Назначенный VID" -#: dcim/filtersets.py:1536 dcim/forms/bulk_edit.py:1382 -#: dcim/forms/bulk_import.py:836 dcim/forms/filtersets.py:1326 +#: dcim/filtersets.py:1546 dcim/forms/bulk_edit.py:1382 +#: dcim/forms/bulk_import.py:836 dcim/forms/filtersets.py:1334 #: dcim/forms/model_forms.py:1322 dcim/models/device_components.py:712 -#: dcim/tables/devices.py:618 ipam/filtersets.py:316 ipam/filtersets.py:327 +#: dcim/tables/devices.py:622 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:227 ipam/forms/bulk_edit.py:282 #: ipam/forms/bulk_edit.py:324 ipam/forms/bulk_import.py:156 #: ipam/forms/bulk_import.py:242 ipam/forms/bulk_import.py:278 -#: ipam/forms/filtersets.py:67 ipam/forms/filtersets.py:171 -#: ipam/forms/filtersets.py:302 ipam/forms/model_forms.py:60 +#: ipam/forms/filtersets.py:67 ipam/forms/filtersets.py:172 +#: ipam/forms/filtersets.py:309 ipam/forms/model_forms.py:60 #: ipam/forms/model_forms.py:200 ipam/forms/model_forms.py:245 -#: ipam/forms/model_forms.py:298 ipam/forms/model_forms.py:420 -#: ipam/forms/model_forms.py:434 ipam/forms/model_forms.py:448 -#: ipam/models/ip.py:232 ipam/models/ip.py:511 ipam/models/ip.py:719 +#: ipam/forms/model_forms.py:298 ipam/forms/model_forms.py:429 +#: ipam/forms/model_forms.py:443 ipam/forms/model_forms.py:457 +#: ipam/models/ip.py:233 ipam/models/ip.py:512 ipam/models/ip.py:720 #: ipam/models/vrfs.py:62 ipam/tables/ip.py:241 ipam/tables/ip.py:306 #: ipam/tables/ip.py:356 ipam/tables/ip.py:445 #: templates/dcim/interface.html:133 templates/ipam/ipaddress.html:18 @@ -2560,18 +2604,18 @@ msgstr "Назначенный VID" msgid "VRF" msgstr "VRF" -#: dcim/filtersets.py:1542 ipam/filtersets.py:322 ipam/filtersets.py:333 +#: dcim/filtersets.py:1552 ipam/filtersets.py:322 ipam/filtersets.py:333 #: ipam/filtersets.py:489 ipam/filtersets.py:590 ipam/filtersets.py:601 msgid "VRF (RD)" msgstr "VRF (КРАСНЫЙ)" -#: dcim/filtersets.py:1547 ipam/filtersets.py:1016 vpn/filtersets.py:361 +#: dcim/filtersets.py:1557 ipam/filtersets.py:1016 vpn/filtersets.py:361 msgid "L2VPN (ID)" msgstr "L2VPN (ID)" -#: dcim/filtersets.py:1553 dcim/forms/filtersets.py:1331 -#: dcim/tables/devices.py:566 ipam/filtersets.py:1022 -#: ipam/forms/filtersets.py:518 ipam/tables/vlans.py:133 +#: dcim/filtersets.py:1563 dcim/forms/filtersets.py:1339 +#: dcim/tables/devices.py:570 ipam/filtersets.py:1022 +#: ipam/forms/filtersets.py:525 ipam/tables/vlans.py:133 #: templates/dcim/interface.html:93 templates/ipam/vlan.html:66 #: templates/vpn/l2vpntermination.html:12 #: virtualization/forms/filtersets.py:229 vpn/forms/bulk_import.py:280 @@ -2580,82 +2624,82 @@ msgstr "L2VPN (ID)" msgid "L2VPN" msgstr "L2VPN" -#: dcim/filtersets.py:1585 +#: dcim/filtersets.py:1595 msgid "Virtual Chassis Interfaces for Device" msgstr "Интерфейсы виртуального шасси для устройства" -#: dcim/filtersets.py:1590 +#: dcim/filtersets.py:1600 msgid "Virtual Chassis Interfaces for Device (ID)" msgstr "Интерфейсы виртуального шасси для устройства (ID)" -#: dcim/filtersets.py:1594 +#: dcim/filtersets.py:1604 msgid "Kind of interface" msgstr "Вид интерфейса" -#: dcim/filtersets.py:1599 virtualization/filtersets.py:289 +#: dcim/filtersets.py:1609 virtualization/filtersets.py:289 msgid "Parent interface (ID)" msgstr "Родительский интерфейс (ID)" -#: dcim/filtersets.py:1604 virtualization/filtersets.py:294 +#: dcim/filtersets.py:1614 virtualization/filtersets.py:294 msgid "Bridged interface (ID)" msgstr "Мостовой интерфейс (ID)" -#: dcim/filtersets.py:1609 +#: dcim/filtersets.py:1619 msgid "LAG interface (ID)" msgstr "Интерфейс LAG (ID)" -#: dcim/filtersets.py:1636 dcim/filtersets.py:1648 -#: dcim/forms/filtersets.py:1243 dcim/forms/model_forms.py:1634 +#: dcim/filtersets.py:1646 dcim/filtersets.py:1658 +#: dcim/forms/filtersets.py:1251 dcim/forms/model_forms.py:1634 #: templates/dcim/virtualdevicecontext.html:15 msgid "Virtual Device Context" msgstr "Виртуальный контекст" -#: dcim/filtersets.py:1642 +#: dcim/filtersets.py:1652 msgid "Virtual Device Context (Identifier)" msgstr "Контекст виртуального устройства (идентификатор)" -#: dcim/filtersets.py:1653 templates/wireless/wirelesslan.html:11 +#: dcim/filtersets.py:1663 templates/wireless/wirelesslan.html:11 #: wireless/forms/model_forms.py:53 msgid "Wireless LAN" msgstr "Беспроводная сеть" -#: dcim/filtersets.py:1657 dcim/tables/devices.py:605 +#: dcim/filtersets.py:1667 dcim/tables/devices.py:609 msgid "Wireless link" msgstr "Беспроводная связь" -#: dcim/filtersets.py:1727 +#: dcim/filtersets.py:1737 msgid "Installed module (ID)" msgstr "Установленный модуль (ID)" -#: dcim/filtersets.py:1738 +#: dcim/filtersets.py:1748 msgid "Installed device (ID)" msgstr "Установленное устройство (ID)" -#: dcim/filtersets.py:1744 +#: dcim/filtersets.py:1754 msgid "Installed device (name)" msgstr "Установленное устройство (имя)" -#: dcim/filtersets.py:1810 +#: dcim/filtersets.py:1820 msgid "Master (ID)" msgstr "Мастер (удостоверение личности)" -#: dcim/filtersets.py:1816 +#: dcim/filtersets.py:1826 msgid "Master (name)" msgstr "Мастер (имя)" -#: dcim/filtersets.py:1858 tenancy/filtersets.py:246 +#: dcim/filtersets.py:1868 tenancy/filtersets.py:246 msgid "Tenant (ID)" msgstr "Тенант (ID)" -#: dcim/filtersets.py:1864 extras/filtersets.py:570 tenancy/filtersets.py:252 +#: dcim/filtersets.py:1874 extras/filtersets.py:570 tenancy/filtersets.py:252 msgid "Tenant (slug)" msgstr "Тенант (подстрока)" -#: dcim/filtersets.py:1900 dcim/forms/filtersets.py:988 +#: dcim/filtersets.py:1910 dcim/forms/filtersets.py:996 msgid "Unterminated" msgstr "Нерасторгнутый" -#: dcim/filtersets.py:2158 +#: dcim/filtersets.py:2168 msgid "Power panel (ID)" msgstr "Панель питания (ID)" @@ -2663,13 +2707,13 @@ msgstr "Панель питания (ID)" #: extras/forms/model_forms.py:443 extras/forms/model_forms.py:495 #: netbox/forms/base.py:84 netbox/forms/mixins.py:81 #: netbox/tables/columns.py:458 -#: templates/circuits/inc/circuit_termination.html:118 +#: 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 msgid "Tags" msgstr "Теги" -#: dcim/forms/bulk_create.py:112 dcim/forms/filtersets.py:1388 +#: dcim/forms/bulk_create.py:112 dcim/forms/filtersets.py:1396 #: dcim/forms/model_forms.py:431 dcim/forms/model_forms.py:486 #: dcim/forms/object_create.py:197 dcim/forms/object_create.py:353 #: dcim/tables/devices.py:170 dcim/tables/devices.py:702 @@ -2691,7 +2735,7 @@ msgstr "" #: dcim/forms/bulk_edit.py:116 dcim/forms/bulk_import.py:99 #: dcim/forms/model_forms.py:116 dcim/tables/sites.py:89 #: ipam/filtersets.py:985 ipam/forms/bulk_edit.py:531 -#: ipam/forms/bulk_import.py:444 ipam/forms/model_forms.py:517 +#: ipam/forms/bulk_import.py:444 ipam/forms/model_forms.py:526 #: ipam/tables/fhrp.py:67 ipam/tables/vlans.py:118 ipam/tables/vlans.py:221 #: templates/dcim/interface.html:284 templates/dcim/site.html:36 #: templates/ipam/inc/panels/fhrp_groups.html:23 templates/ipam/vlan.html:27 @@ -2738,7 +2782,7 @@ msgstr "Часовой пояс" #: dcim/forms/bulk_edit.py:267 dcim/forms/bulk_edit.py:1160 #: dcim/forms/bulk_edit.py:1548 dcim/forms/bulk_import.py:207 #: dcim/forms/bulk_import.py:1021 dcim/forms/filtersets.py:300 -#: dcim/forms/filtersets.py:705 dcim/forms/filtersets.py:1418 +#: dcim/forms/filtersets.py:706 dcim/forms/filtersets.py:1426 #: dcim/forms/model_forms.py:219 dcim/forms/model_forms.py:1015 #: dcim/forms/model_forms.py:1454 dcim/forms/object_import.py:181 #: dcim/tables/devices.py:174 dcim/tables/devices.py:810 @@ -2748,10 +2792,10 @@ msgstr "Часовой пояс" #: ipam/forms/bulk_edit.py:343 ipam/forms/bulk_edit.py:549 #: ipam/forms/bulk_import.py:196 ipam/forms/bulk_import.py:261 #: ipam/forms/bulk_import.py:297 ipam/forms/bulk_import.py:463 -#: ipam/forms/filtersets.py:236 ipam/forms/filtersets.py:282 -#: ipam/forms/filtersets.py:353 ipam/forms/filtersets.py:509 +#: ipam/forms/filtersets.py:237 ipam/forms/filtersets.py:289 +#: ipam/forms/filtersets.py:360 ipam/forms/filtersets.py:516 #: ipam/forms/model_forms.py:186 ipam/forms/model_forms.py:219 -#: ipam/forms/model_forms.py:248 ipam/forms/model_forms.py:680 +#: ipam/forms/model_forms.py:248 ipam/forms/model_forms.py:689 #: ipam/tables/ip.py:257 ipam/tables/ip.py:313 ipam/tables/ip.py:363 #: ipam/tables/vlans.py:126 ipam/tables/vlans.py:230 #: templates/dcim/device.html:179 @@ -2784,8 +2828,8 @@ msgid "Serial Number" msgstr "Серийный номер" #: dcim/forms/bulk_edit.py:277 dcim/forms/filtersets.py:307 -#: dcim/forms/filtersets.py:741 dcim/forms/filtersets.py:878 -#: dcim/forms/filtersets.py:1430 +#: dcim/forms/filtersets.py:742 dcim/forms/filtersets.py:886 +#: dcim/forms/filtersets.py:1438 msgid "Asset tag" msgstr "Инвентарный номер" @@ -2856,14 +2900,14 @@ msgstr "Весовая единица" #: dcim/forms/bulk_import.py:498 dcim/forms/bulk_import.py:1309 #: dcim/forms/bulk_import.py:1313 dcim/forms/filtersets.py:102 #: dcim/forms/filtersets.py:340 dcim/forms/filtersets.py:354 -#: dcim/forms/filtersets.py:392 dcim/forms/filtersets.py:700 -#: dcim/forms/filtersets.py:946 dcim/forms/filtersets.py:1078 +#: dcim/forms/filtersets.py:392 dcim/forms/filtersets.py:701 +#: dcim/forms/filtersets.py:954 dcim/forms/filtersets.py:1086 #: dcim/forms/model_forms.py:226 dcim/forms/model_forms.py:248 #: dcim/forms/model_forms.py:422 dcim/forms/model_forms.py:700 #: dcim/forms/object_create.py:400 dcim/tables/devices.py:166 #: dcim/tables/power.py:70 dcim/tables/racks.py:148 -#: ipam/forms/bulk_edit.py:465 ipam/forms/filtersets.py:435 -#: ipam/forms/model_forms.py:601 templates/dcim/device.html:29 +#: ipam/forms/bulk_edit.py:465 ipam/forms/filtersets.py:442 +#: ipam/forms/model_forms.py:610 templates/dcim/device.html:29 #: 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 @@ -2875,7 +2919,7 @@ msgstr "Стойка" #: dcim/forms/bulk_edit.py:349 dcim/forms/bulk_edit.py:628 #: dcim/forms/filtersets.py:248 dcim/forms/filtersets.py:333 #: dcim/forms/filtersets.py:416 dcim/forms/filtersets.py:543 -#: dcim/forms/filtersets.py:651 dcim/forms/filtersets.py:853 +#: dcim/forms/filtersets.py:651 dcim/forms/filtersets.py:861 #: dcim/forms/model_forms.py:610 dcim/forms/model_forms.py:1524 #: templates/dcim/device_edit.html:20 msgid "Hardware" @@ -2888,8 +2932,8 @@ msgstr "Аппаратное обеспечение" #: dcim/forms/bulk_import.py:353 dcim/forms/bulk_import.py:395 #: dcim/forms/bulk_import.py:431 dcim/forms/bulk_import.py:1027 #: dcim/forms/filtersets.py:429 dcim/forms/filtersets.py:554 -#: dcim/forms/filtersets.py:630 dcim/forms/filtersets.py:710 -#: dcim/forms/filtersets.py:858 dcim/forms/filtersets.py:1423 +#: dcim/forms/filtersets.py:630 dcim/forms/filtersets.py:711 +#: dcim/forms/filtersets.py:866 dcim/forms/filtersets.py:1431 #: dcim/forms/model_forms.py:281 dcim/forms/model_forms.py:293 #: dcim/forms/model_forms.py:339 dcim/forms/model_forms.py:379 #: dcim/forms/model_forms.py:1020 dcim/forms/model_forms.py:1459 @@ -2923,7 +2967,7 @@ msgstr "Исключить из использования" #: dcim/forms/bulk_edit.py:431 dcim/forms/bulk_edit.py:603 #: dcim/forms/bulk_import.py:525 dcim/forms/filtersets.py:446 -#: dcim/forms/filtersets.py:732 templates/dcim/device.html:97 +#: dcim/forms/filtersets.py:733 templates/dcim/device.html:97 #: templates/dcim/devicetype.html:65 msgid "Airflow" msgstr "Воздушный поток" @@ -2950,7 +2994,7 @@ msgstr "Роль виртуальной машины" #: dcim/forms/bulk_import.py:380 dcim/forms/bulk_import.py:402 #: dcim/forms/bulk_import.py:406 dcim/forms/bulk_import.py:531 #: dcim/forms/bulk_import.py:535 dcim/forms/filtersets.py:619 -#: dcim/forms/filtersets.py:635 dcim/forms/filtersets.py:751 +#: dcim/forms/filtersets.py:635 dcim/forms/filtersets.py:752 #: dcim/forms/model_forms.py:358 dcim/forms/model_forms.py:384 #: dcim/forms/model_forms.py:495 virtualization/forms/bulk_import.py:132 #: virtualization/forms/bulk_import.py:133 @@ -2972,7 +3016,7 @@ msgid "Device role" msgstr "Роль устройства" #: dcim/forms/bulk_edit.py:593 dcim/forms/bulk_import.py:443 -#: dcim/forms/filtersets.py:724 dcim/forms/model_forms.py:394 +#: dcim/forms/filtersets.py:725 dcim/forms/model_forms.py:394 #: dcim/forms/model_forms.py:456 dcim/tables/devices.py:187 #: extras/filtersets.py:515 templates/dcim/device.html:183 #: templates/dcim/platform.html:26 @@ -2994,28 +3038,28 @@ msgstr "Платформа" #: dcim/forms/bulk_import.py:956 dcim/forms/bulk_import.py:968 #: dcim/forms/bulk_import.py:1016 dcim/forms/bulk_import.py:1373 #: dcim/forms/connections.py:24 dcim/forms/filtersets.py:129 -#: dcim/forms/filtersets.py:832 dcim/forms/filtersets.py:962 -#: dcim/forms/filtersets.py:1152 dcim/forms/filtersets.py:1174 -#: dcim/forms/filtersets.py:1196 dcim/forms/filtersets.py:1213 -#: dcim/forms/filtersets.py:1233 dcim/forms/filtersets.py:1341 -#: dcim/forms/filtersets.py:1363 dcim/forms/filtersets.py:1384 -#: dcim/forms/filtersets.py:1399 dcim/forms/filtersets.py:1413 -#: dcim/forms/filtersets.py:1476 dcim/forms/filtersets.py:1500 -#: dcim/forms/filtersets.py:1524 dcim/forms/model_forms.py:573 +#: dcim/forms/filtersets.py:840 dcim/forms/filtersets.py:970 +#: dcim/forms/filtersets.py:1160 dcim/forms/filtersets.py:1182 +#: dcim/forms/filtersets.py:1204 dcim/forms/filtersets.py:1221 +#: dcim/forms/filtersets.py:1241 dcim/forms/filtersets.py:1349 +#: dcim/forms/filtersets.py:1371 dcim/forms/filtersets.py:1392 +#: dcim/forms/filtersets.py:1407 dcim/forms/filtersets.py:1421 +#: dcim/forms/filtersets.py:1484 dcim/forms/filtersets.py:1508 +#: dcim/forms/filtersets.py:1532 dcim/forms/model_forms.py:573 #: dcim/forms/model_forms.py:794 dcim/forms/model_forms.py:1153 #: dcim/forms/model_forms.py:1608 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:290 -#: dcim/tables/devices.py:355 dcim/tables/devices.py:399 -#: dcim/tables/devices.py:444 dcim/tables/devices.py:498 -#: dcim/tables/devices.py:590 dcim/tables/devices.py:692 +#: dcim/tables/devices.py:359 dcim/tables/devices.py:403 +#: dcim/tables/devices.py:448 dcim/tables/devices.py:502 +#: dcim/tables/devices.py:594 dcim/tables/devices.py:692 #: dcim/tables/devices.py:752 dcim/tables/devices.py:802 #: dcim/tables/devices.py:862 dcim/tables/devices.py:914 #: dcim/tables/devices.py:1040 dcim/tables/modules.py:52 #: extras/forms/filtersets.py:330 ipam/forms/bulk_import.py:303 -#: ipam/forms/bulk_import.py:489 ipam/forms/filtersets.py:551 -#: ipam/forms/model_forms.py:317 ipam/forms/model_forms.py:716 -#: ipam/forms/model_forms.py:749 ipam/forms/model_forms.py:775 +#: ipam/forms/bulk_import.py:489 ipam/forms/filtersets.py:558 +#: ipam/forms/model_forms.py:317 ipam/forms/model_forms.py:725 +#: ipam/forms/model_forms.py:758 ipam/forms/model_forms.py:784 #: ipam/tables/vlans.py:176 templates/dcim/consoleport.html:20 #: templates/dcim/consoleserverport.html:20 templates/dcim/device.html:14 #: templates/dcim/device.html:128 templates/dcim/device_edit.html:10 @@ -3070,13 +3114,13 @@ msgstr "Тип модуля" msgid "Label" msgstr "Этикетка" -#: dcim/forms/bulk_edit.py:706 dcim/forms/filtersets.py:979 +#: dcim/forms/bulk_edit.py:706 dcim/forms/filtersets.py:987 #: templates/dcim/cable.html:50 msgid "Length" msgstr "Длина" #: dcim/forms/bulk_edit.py:711 dcim/forms/bulk_import.py:1174 -#: dcim/forms/bulk_import.py:1177 dcim/forms/filtersets.py:983 +#: dcim/forms/bulk_import.py:1177 dcim/forms/filtersets.py:991 msgid "Length unit" msgstr "Единица длины" @@ -3085,41 +3129,34 @@ msgid "Domain" msgstr "Домен" #: dcim/forms/bulk_edit.py:803 dcim/forms/bulk_import.py:1296 -#: dcim/forms/filtersets.py:1069 dcim/forms/model_forms.py:695 +#: dcim/forms/filtersets.py:1077 dcim/forms/model_forms.py:695 msgid "Power panel" msgstr "Панель питания" #: dcim/forms/bulk_edit.py:825 dcim/forms/bulk_import.py:1332 -#: dcim/forms/filtersets.py:1091 templates/dcim/powerfeed.html:83 +#: dcim/forms/filtersets.py:1099 templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "Снабжение" #: dcim/forms/bulk_edit.py:831 dcim/forms/bulk_import.py:1337 -#: dcim/forms/filtersets.py:1096 templates/dcim/powerfeed.html:95 +#: dcim/forms/filtersets.py:1104 templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "Фаза" -#: dcim/forms/bulk_edit.py:837 dcim/forms/filtersets.py:1101 +#: dcim/forms/bulk_edit.py:837 dcim/forms/filtersets.py:1109 #: templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "Напряжение" -#: dcim/forms/bulk_edit.py:841 dcim/forms/filtersets.py:1105 +#: dcim/forms/bulk_edit.py:841 dcim/forms/filtersets.py:1113 #: templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "Сила тока" -#: dcim/forms/bulk_edit.py:845 dcim/forms/filtersets.py:1109 +#: dcim/forms/bulk_edit.py:845 dcim/forms/filtersets.py:1117 msgid "Max utilization" msgstr "Максимальное использование" -#: dcim/forms/bulk_edit.py:849 dcim/forms/bulk_edit.py:1208 -#: dcim/forms/bulk_edit.py:1225 dcim/forms/bulk_edit.py:1242 -#: dcim/forms/bulk_edit.py:1260 dcim/forms/bulk_edit.py:1348 -#: dcim/forms/bulk_edit.py:1487 dcim/forms/bulk_edit.py:1504 -msgid "Mark connected" -msgstr "Пометить подключенным" - #: dcim/forms/bulk_edit.py:934 msgid "Maximum draw" msgstr "Максимальное потребление" @@ -3153,7 +3190,7 @@ msgid "Management only" msgstr "Только управление" #: dcim/forms/bulk_edit.py:1037 dcim/forms/bulk_edit.py:1339 -#: dcim/forms/bulk_import.py:821 dcim/forms/filtersets.py:1292 +#: dcim/forms/bulk_import.py:821 dcim/forms/filtersets.py:1300 #: dcim/forms/object_import.py:90 #: dcim/models/device_component_templates.py:411 #: dcim/models/device_components.py:671 @@ -3161,14 +3198,14 @@ msgid "PoE mode" msgstr "Режим PoE" #: dcim/forms/bulk_edit.py:1043 dcim/forms/bulk_edit.py:1345 -#: dcim/forms/bulk_import.py:827 dcim/forms/filtersets.py:1297 +#: dcim/forms/bulk_import.py:827 dcim/forms/filtersets.py:1305 #: dcim/forms/object_import.py:95 #: dcim/models/device_component_templates.py:417 #: dcim/models/device_components.py:677 msgid "PoE type" msgstr "Тип PoE" -#: dcim/forms/bulk_edit.py:1049 dcim/forms/filtersets.py:1302 +#: dcim/forms/bulk_edit.py:1049 dcim/forms/filtersets.py:1310 #: dcim/forms/object_import.py:100 msgid "Wireless role" msgstr "Роль беспроводной связи" @@ -3193,10 +3230,10 @@ msgid "Virtual device contexts" msgstr "Виртуальные контексты" #: dcim/forms/bulk_edit.py:1324 dcim/forms/bulk_import.py:659 -#: dcim/forms/bulk_import.py:685 dcim/forms/filtersets.py:1161 -#: dcim/forms/filtersets.py:1183 dcim/forms/filtersets.py:1256 -#: dcim/tables/devices.py:602 -#: templates/circuits/inc/circuit_termination.html:93 +#: dcim/forms/bulk_import.py:685 dcim/forms/filtersets.py:1169 +#: dcim/forms/filtersets.py:1191 dcim/forms/filtersets.py:1264 +#: dcim/tables/devices.py:606 +#: templates/circuits/inc/circuit_termination_fields.html:67 #: templates/dcim/consoleport.html:40 templates/dcim/consoleserverport.html:40 msgid "Speed" msgstr "Скорость" @@ -3213,20 +3250,20 @@ msgid "Mode" msgstr "Режим" #: dcim/forms/bulk_edit.py:1361 dcim/forms/model_forms.py:1299 -#: ipam/forms/bulk_import.py:177 ipam/forms/filtersets.py:498 +#: ipam/forms/bulk_import.py:177 ipam/forms/filtersets.py:505 #: ipam/models/vlans.py:84 virtualization/forms/bulk_edit.py:240 #: virtualization/forms/model_forms.py:321 msgid "VLAN group" msgstr "Группа VLAN" #: dcim/forms/bulk_edit.py:1369 dcim/forms/model_forms.py:1304 -#: dcim/tables/devices.py:575 virtualization/forms/bulk_edit.py:248 +#: dcim/tables/devices.py:579 virtualization/forms/bulk_edit.py:248 #: virtualization/forms/model_forms.py:326 msgid "Untagged VLAN" msgstr "VLAN без тегов" #: dcim/forms/bulk_edit.py:1377 dcim/forms/model_forms.py:1313 -#: dcim/tables/devices.py:581 virtualization/forms/bulk_edit.py:256 +#: dcim/tables/devices.py:585 virtualization/forms/bulk_edit.py:256 #: virtualization/forms/model_forms.py:335 msgid "Tagged VLANs" msgstr "VLAN с тегами" @@ -3236,12 +3273,12 @@ msgid "Wireless LAN group" msgstr "Беспроводная группа LAN" #: dcim/forms/bulk_edit.py:1392 dcim/forms/model_forms.py:1291 -#: dcim/tables/devices.py:611 netbox/navigation/menu.py:133 +#: dcim/tables/devices.py:615 netbox/navigation/menu.py:133 #: templates/dcim/interface.html:280 wireless/tables/wirelesslan.py:24 msgid "Wireless LANs" msgstr "Беспроводные LANs" -#: dcim/forms/bulk_edit.py:1401 dcim/forms/filtersets.py:1229 +#: dcim/forms/bulk_edit.py:1401 dcim/forms/filtersets.py:1237 #: dcim/forms/model_forms.py:1334 ipam/forms/bulk_edit.py:271 #: ipam/forms/bulk_edit.py:362 ipam/forms/filtersets.py:169 #: templates/dcim/interface.html:122 templates/ipam/prefix.html:95 @@ -3254,7 +3291,7 @@ msgstr "Адресация" msgid "Operation" msgstr "Операция" -#: dcim/forms/bulk_edit.py:1403 dcim/forms/filtersets.py:1230 +#: dcim/forms/bulk_edit.py:1403 dcim/forms/filtersets.py:1238 #: dcim/forms/model_forms.py:932 dcim/forms/model_forms.py:1337 msgid "PoE" msgstr "PoE" @@ -3410,8 +3447,8 @@ msgstr "Виртуальное шасси" #: dcim/forms/bulk_import.py:462 dcim/forms/model_forms.py:465 #: dcim/tables/devices.py:207 extras/filtersets.py:548 #: extras/forms/filtersets.py:331 ipam/forms/bulk_edit.py:479 -#: ipam/forms/filtersets.py:408 ipam/forms/filtersets.py:452 -#: ipam/forms/model_forms.py:618 templates/dcim/device.html:231 +#: ipam/forms/filtersets.py:415 ipam/forms/filtersets.py:459 +#: ipam/forms/model_forms.py:627 templates/dcim/device.html:231 #: templates/virtualization/cluster.html:10 #: templates/virtualization/virtualmachine.html:88 #: templates/virtualization/virtualmachine.html:97 @@ -3554,7 +3591,7 @@ msgstr "Имена VDC разделены запятыми и заключены msgid "Physical medium" msgstr "Физическая среда" -#: dcim/forms/bulk_import.py:813 dcim/forms/filtersets.py:1263 +#: dcim/forms/bulk_import.py:813 dcim/forms/filtersets.py:1271 msgid "Duplex" msgstr "Двухуровневый" @@ -3572,8 +3609,8 @@ msgstr "Рабочий режим IEEE 802.1Q (для интерфейсов L2) #: dcim/forms/bulk_import.py:840 ipam/forms/bulk_import.py:160 #: ipam/forms/bulk_import.py:246 ipam/forms/bulk_import.py:282 -#: ipam/forms/filtersets.py:200 ipam/forms/filtersets.py:270 -#: ipam/forms/filtersets.py:329 virtualization/forms/bulk_import.py:175 +#: ipam/forms/filtersets.py:201 ipam/forms/filtersets.py:277 +#: ipam/forms/filtersets.py:336 virtualization/forms/bulk_import.py:175 msgid "Assigned VRF" msgstr "Назначенный VRF" @@ -3802,29 +3839,33 @@ msgstr "Компоненты" msgid "Subdevice role" msgstr "Роль подустройства" -#: dcim/forms/filtersets.py:718 +#: dcim/forms/filtersets.py:719 msgid "Model" msgstr "Модель" -#: dcim/forms/filtersets.py:762 +#: dcim/forms/filtersets.py:763 msgid "Has an OOB IP" msgstr "Имеет IP-адрес OOB" -#: dcim/forms/filtersets.py:769 +#: dcim/forms/filtersets.py:770 msgid "Virtual chassis member" msgstr "Элемент виртуального шасси" -#: dcim/forms/filtersets.py:1121 +#: dcim/forms/filtersets.py:819 +msgid "Has virtual device contexts" +msgstr "Имеет контексты виртуальных устройств" + +#: dcim/forms/filtersets.py:1129 msgid "Cabled" msgstr "Кабельный" -#: dcim/forms/filtersets.py:1128 +#: dcim/forms/filtersets.py:1136 msgid "Occupied" msgstr "Занятый" -#: dcim/forms/filtersets.py:1153 dcim/forms/filtersets.py:1175 -#: dcim/forms/filtersets.py:1197 dcim/forms/filtersets.py:1214 -#: dcim/forms/filtersets.py:1234 dcim/tables/devices.py:348 +#: dcim/forms/filtersets.py:1161 dcim/forms/filtersets.py:1183 +#: dcim/forms/filtersets.py:1205 dcim/forms/filtersets.py:1222 +#: dcim/forms/filtersets.py:1242 dcim/tables/devices.py:352 #: 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 @@ -3832,40 +3873,40 @@ msgstr "Занятый" msgid "Connection" msgstr "Подключение" -#: dcim/forms/filtersets.py:1246 extras/forms/bulk_edit.py:316 +#: dcim/forms/filtersets.py:1254 extras/forms/bulk_edit.py:316 #: extras/forms/bulk_import.py:242 extras/forms/filtersets.py:476 #: extras/forms/model_forms.py:551 extras/tables/tables.py:512 #: templates/extras/journalentry.html:30 msgid "Kind" msgstr "Вид" -#: dcim/forms/filtersets.py:1275 +#: dcim/forms/filtersets.py:1283 msgid "Mgmt only" msgstr "Только менеджмент" -#: dcim/forms/filtersets.py:1287 dcim/forms/model_forms.py:1327 +#: dcim/forms/filtersets.py:1295 dcim/forms/model_forms.py:1327 #: dcim/models/device_components.py:630 templates/dcim/interface.html:129 msgid "WWN" msgstr "Глобальное уникальное имя" -#: dcim/forms/filtersets.py:1307 +#: dcim/forms/filtersets.py:1315 msgid "Wireless channel" msgstr "Беспроводной канал" -#: dcim/forms/filtersets.py:1311 +#: dcim/forms/filtersets.py:1319 msgid "Channel frequency (MHz)" msgstr "Частота канала (МГц)" -#: dcim/forms/filtersets.py:1315 +#: dcim/forms/filtersets.py:1323 msgid "Channel width (MHz)" msgstr "Ширина канала (МГц)" -#: dcim/forms/filtersets.py:1319 templates/dcim/interface.html:85 +#: dcim/forms/filtersets.py:1327 templates/dcim/interface.html:85 msgid "Transmit power (dBm)" msgstr "Мощность передачи (дБм)" -#: dcim/forms/filtersets.py:1342 dcim/forms/filtersets.py:1364 -#: dcim/tables/devices.py:320 templates/dcim/cable.html:12 +#: dcim/forms/filtersets.py:1350 dcim/forms/filtersets.py:1372 +#: dcim/tables/devices.py:324 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 @@ -3873,7 +3914,7 @@ msgstr "Мощность передачи (дБм)" msgid "Cable" msgstr "Кабель" -#: dcim/forms/filtersets.py:1434 dcim/tables/devices.py:933 +#: dcim/forms/filtersets.py:1442 dcim/tables/devices.py:933 msgid "Discovered" msgstr "Обнаружено" @@ -3993,7 +4034,7 @@ msgstr "Шаблон заднего порта" #: dcim/tables/connections.py:65 ipam/forms/bulk_import.py:317 #: ipam/forms/model_forms.py:278 ipam/forms/model_forms.py:287 #: ipam/tables/fhrp.py:64 ipam/tables/ip.py:368 ipam/tables/vlans.py:165 -#: templates/circuits/inc/circuit_termination.html:77 +#: 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 @@ -4021,7 +4062,7 @@ msgid "Console Server Port" msgstr "Порт консольного сервера" #: dcim/forms/model_forms.py:1092 dcim/forms/model_forms.py:1530 -#: templates/circuits/inc/circuit_termination.html:78 +#: 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 @@ -4030,7 +4071,7 @@ msgstr "Передний порт" #: dcim/forms/model_forms.py:1093 dcim/forms/model_forms.py:1531 #: dcim/tables/devices.py:705 -#: templates/circuits/inc/circuit_termination.html:79 +#: 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 @@ -4039,7 +4080,7 @@ msgid "Rear Port" msgstr "Задний порт" #: dcim/forms/model_forms.py:1094 dcim/forms/model_forms.py:1532 -#: dcim/tables/connections.py:46 dcim/tables/devices.py:505 +#: dcim/tables/connections.py:46 dcim/tables/devices.py:509 #: templates/dcim/poweroutlet.html:44 templates/dcim/powerport.html:17 msgid "Power Port" msgstr "Порт питания" @@ -5336,7 +5377,7 @@ msgstr "" #: dcim/models/mixins.py:15 extras/models/configs.py:41 #: extras/models/models.py:341 extras/models/models.py:550 -#: extras/models/search.py:48 ipam/models/ip.py:193 +#: extras/models/search.py:48 ipam/models/ip.py:194 msgid "weight" msgstr "вес" @@ -5829,28 +5870,37 @@ msgstr "Комплектующие" msgid "Module Bay" msgstr "Модульный отсек" -#: dcim/tables/devices.py:326 +#: dcim/tables/devices.py:318 dcim/tables/devicetypes.py:48 +#: dcim/tables/devicetypes.py:140 dcim/views.py:1081 dcim/views.py:2024 +#: netbox/navigation/menu.py:90 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 +msgid "Inventory Items" +msgstr "Предметы инвентаря" + +#: dcim/tables/devices.py:330 msgid "Cable Color" msgstr "Цвет кабеля" -#: dcim/tables/devices.py:332 +#: dcim/tables/devices.py:336 msgid "Link Peers" msgstr "Связать узлы" -#: dcim/tables/devices.py:335 +#: dcim/tables/devices.py:339 msgid "Mark Connected" msgstr "Отметить подключение" -#: dcim/tables/devices.py:451 +#: dcim/tables/devices.py:455 msgid "Maximum draw (W)" msgstr "Максимальная потребляемая мощность (Вт)" -#: dcim/tables/devices.py:454 +#: dcim/tables/devices.py:458 msgid "Allocated draw (W)" msgstr "Выделенная мощность (Вт)" -#: dcim/tables/devices.py:554 ipam/forms/model_forms.py:738 -#: ipam/tables/fhrp.py:28 ipam/views.py:596 ipam/views.py:690 +#: dcim/tables/devices.py:558 ipam/forms/model_forms.py:747 +#: ipam/tables/fhrp.py:28 ipam/views.py:602 ipam/views.py:701 #: netbox/navigation/menu.py:145 netbox/navigation/menu.py:147 #: templates/dcim/interface.html:339 templates/ipam/ipaddress_bulk_add.html:15 #: templates/ipam/service.html:40 templates/virtualization/vminterface.html:85 @@ -5858,12 +5908,12 @@ msgstr "Выделенная мощность (Вт)" msgid "IP Addresses" msgstr "IP-адреса" -#: dcim/tables/devices.py:560 netbox/navigation/menu.py:189 +#: dcim/tables/devices.py:564 netbox/navigation/menu.py:189 #: templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "Группы FHRP" -#: dcim/tables/devices.py:572 templates/dcim/interface.html:89 +#: 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 @@ -5872,24 +5922,15 @@ msgstr "Группы FHRP" msgid "Tunnel" msgstr "Туннель" -#: dcim/tables/devices.py:597 dcim/tables/devicetypes.py:224 +#: dcim/tables/devices.py:601 dcim/tables/devicetypes.py:224 #: templates/dcim/interface.html:65 msgid "Management Only" msgstr "Только управление" -#: dcim/tables/devices.py:615 +#: dcim/tables/devices.py:619 msgid "VDCs" msgstr "Виртуальные контексты устройств(VDCs)" -#: dcim/tables/devices.py:623 dcim/tables/devicetypes.py:48 -#: dcim/tables/devicetypes.py:140 dcim/views.py:1081 dcim/views.py:2024 -#: netbox/navigation/menu.py:90 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 -msgid "Inventory Items" -msgstr "Предметы инвентаря" - #: dcim/tables/devices.py:870 templates/dcim/modulebay.html:49 msgid "Installed Module" msgstr "Установленный модуль" @@ -6005,7 +6046,7 @@ msgstr "Отсеки для устройств" msgid "Module Bays" msgstr "Отсеки для модулей" -#: dcim/tables/power.py:36 netbox/navigation/menu.py:281 +#: dcim/tables/power.py:36 netbox/navigation/menu.py:282 #: templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "Источники питания" @@ -6492,7 +6533,7 @@ msgid "Cluster type (slug)" msgstr "Тип кластера (подстрока)" #: extras/filtersets.py:537 ipam/forms/bulk_edit.py:476 -#: ipam/forms/filtersets.py:457 ipam/forms/model_forms.py:615 +#: ipam/forms/filtersets.py:464 ipam/forms/model_forms.py:624 #: virtualization/forms/filtersets.py:112 msgid "Cluster group" msgstr "Кластерная группа" @@ -6998,7 +7039,7 @@ msgid "Tenants" msgstr "Тенанты" #: extras/forms/model_forms.py:458 ipam/forms/filtersets.py:142 -#: ipam/forms/filtersets.py:546 ipam/forms/model_forms.py:321 +#: ipam/forms/filtersets.py:553 ipam/forms/model_forms.py:321 #: 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:311 @@ -7817,11 +7858,11 @@ msgstr "сценарий" msgid "scripts" msgstr "сценарии" -#: extras/models/scripts.py:110 +#: extras/models/scripts.py:111 msgid "script module" msgstr "скриптовый модуль" -#: extras/models/scripts.py:111 +#: extras/models/scripts.py:112 msgid "script modules" msgstr "скриптовые модули" @@ -8082,7 +8123,7 @@ msgstr "Удаленный виджет: " msgid "Error deleting widget: " msgstr "Ошибка при удалении виджета: " -#: extras/views.py:1081 +#: extras/views.py:1101 msgid "Unable to run script: RQ worker process not running." msgstr "Невозможно запустить скрипт: рабочий процесс RQ не запущен." @@ -8228,7 +8269,7 @@ msgid "Prefixes which contain this prefix or IP" msgstr "Префиксы, содержащие этот префикс или IP-адрес" #: ipam/filtersets.py:304 ipam/filtersets.py:572 ipam/forms/bulk_edit.py:327 -#: ipam/forms/filtersets.py:195 ipam/forms/filtersets.py:324 +#: ipam/forms/filtersets.py:196 ipam/forms/filtersets.py:331 msgid "Mask length" msgstr "Длина маски" @@ -8241,7 +8282,7 @@ msgid "VLAN number (1-4094)" msgstr "Номер VLAN (1-4094)" #: ipam/filtersets.py:471 ipam/filtersets.py:475 ipam/filtersets.py:567 -#: ipam/forms/model_forms.py:452 templates/tenancy/contact.html:53 +#: ipam/forms/model_forms.py:461 templates/tenancy/contact.html:53 #: tenancy/forms/bulk_edit.py:113 msgid "Address" msgstr "Адрес" @@ -8301,7 +8342,7 @@ msgstr "Внутренний IP-адрес (ID) NAT" msgid "IP address (ID)" msgstr "IP-адрес (ID)" -#: ipam/filtersets.py:1102 ipam/models/ip.py:787 +#: ipam/filtersets.py:1102 ipam/models/ip.py:788 msgid "IP address" msgstr "IP-адрес" @@ -8357,7 +8398,7 @@ msgstr "Является частным" #: ipam/forms/filtersets.py:148 ipam/forms/model_forms.py:94 #: ipam/forms/model_forms.py:107 ipam/forms/model_forms.py:129 #: ipam/forms/model_forms.py:147 ipam/models/asns.py:31 -#: ipam/models/asns.py:103 ipam/models/ip.py:70 ipam/models/ip.py:89 +#: 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 @@ -8372,36 +8413,36 @@ msgstr "Дата добавления" msgid "Prefix length" msgstr "Длина префикса" -#: ipam/forms/bulk_edit.py:253 ipam/forms/filtersets.py:240 +#: ipam/forms/bulk_edit.py:253 ipam/forms/filtersets.py:241 #: templates/ipam/prefix.html:85 msgid "Is a pool" msgstr "Это пул" #: ipam/forms/bulk_edit.py:258 ipam/forms/bulk_edit.py:302 -#: ipam/forms/filtersets.py:247 ipam/forms/filtersets.py:286 -#: ipam/models/ip.py:271 ipam/models/ip.py:538 +#: ipam/forms/filtersets.py:248 ipam/forms/filtersets.py:293 +#: ipam/models/ip.py:272 ipam/models/ip.py:539 msgid "Treat as fully utilized" msgstr "Считать полностью использованным" -#: ipam/forms/bulk_edit.py:350 ipam/models/ip.py:771 +#: ipam/forms/bulk_edit.py:350 ipam/models/ip.py:772 msgid "DNS name" msgstr "DNS-имя" #: ipam/forms/bulk_edit.py:371 ipam/forms/bulk_edit.py:572 #: ipam/forms/bulk_import.py:393 ipam/forms/bulk_import.py:477 -#: ipam/forms/bulk_import.py:503 ipam/forms/filtersets.py:383 -#: ipam/forms/filtersets.py:530 templates/ipam/fhrpgroup.html:22 +#: ipam/forms/bulk_import.py:503 ipam/forms/filtersets.py:390 +#: ipam/forms/filtersets.py:537 templates/ipam/fhrpgroup.html:22 #: templates/ipam/inc/panels/fhrp_groups.html:24 #: templates/ipam/service.html:32 templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "протокол" -#: ipam/forms/bulk_edit.py:378 ipam/forms/filtersets.py:390 +#: ipam/forms/bulk_edit.py:378 ipam/forms/filtersets.py:397 #: ipam/tables/fhrp.py:22 templates/ipam/fhrpgroup.html:26 msgid "Group ID" msgstr "Идентификатор группы" -#: ipam/forms/bulk_edit.py:383 ipam/forms/filtersets.py:395 +#: ipam/forms/bulk_edit.py:383 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 @@ -8409,12 +8450,12 @@ msgstr "Идентификатор группы" msgid "Authentication type" msgstr "Тип аутентификации" -#: ipam/forms/bulk_edit.py:388 ipam/forms/filtersets.py:399 +#: ipam/forms/bulk_edit.py:388 ipam/forms/filtersets.py:406 msgid "Authentication key" msgstr "Ключ аутентификации" -#: ipam/forms/bulk_edit.py:405 ipam/forms/filtersets.py:376 -#: ipam/forms/model_forms.py:463 netbox/navigation/menu.py:369 +#: ipam/forms/bulk_edit.py:405 ipam/forms/filtersets.py:383 +#: ipam/forms/model_forms.py:472 netbox/navigation/menu.py:370 #: templates/ipam/fhrpgroup.html:49 #: templates/wireless/inc/authentication_attrs.html:5 #: wireless/forms/bulk_edit.py:91 wireless/forms/bulk_edit.py:138 @@ -8431,11 +8472,11 @@ msgstr "Минимальное количество VLAN VID для детей" msgid "Maximum child VLAN VID" msgstr "Максимальный ID дочерней VLAN" -#: ipam/forms/bulk_edit.py:429 ipam/forms/model_forms.py:557 +#: ipam/forms/bulk_edit.py:429 ipam/forms/model_forms.py:566 msgid "Scope type" msgstr "Тип прицела" -#: ipam/forms/bulk_edit.py:491 ipam/forms/model_forms.py:632 +#: ipam/forms/bulk_edit.py:491 ipam/forms/model_forms.py:641 #: ipam/tables/vlans.py:71 templates/ipam/vlangroup.html:38 msgid "Scope" msgstr "Область применения" @@ -8444,8 +8485,8 @@ msgstr "Область применения" msgid "Site & Group" msgstr "Сайт и группа" -#: ipam/forms/bulk_edit.py:577 ipam/forms/model_forms.py:696 -#: ipam/forms/model_forms.py:728 ipam/tables/services.py:19 +#: ipam/forms/bulk_edit.py:577 ipam/forms/model_forms.py:705 +#: ipam/forms/model_forms.py:737 ipam/tables/services.py:19 #: ipam/tables/services.py:49 templates/ipam/service.html:36 #: templates/ipam/servicetemplate.html:23 msgid "Ports" @@ -8468,15 +8509,15 @@ msgstr "Назначенный RIR" msgid "VLAN's group (if any)" msgstr "Группа VLAN (если есть)" -#: ipam/forms/bulk_import.py:184 ipam/forms/model_forms.py:216 -#: ipam/models/vlans.py:214 ipam/tables/ip.py:254 -#: 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:101 +#: ipam/forms/bulk_import.py:184 ipam/forms/filtersets.py:256 +#: ipam/forms/model_forms.py:216 ipam/models/vlans.py:214 +#: ipam/tables/ip.py:254 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:101 msgid "VLAN" msgstr "VLAN" @@ -8485,7 +8526,7 @@ msgid "Parent device of assigned interface (if any)" msgstr "Родительское устройство назначенного интерфейса (если есть)" #: ipam/forms/bulk_import.py:310 ipam/forms/bulk_import.py:496 -#: ipam/forms/model_forms.py:722 virtualization/filtersets.py:284 +#: ipam/forms/model_forms.py:731 virtualization/filtersets.py:284 #: virtualization/filtersets.py:323 virtualization/forms/bulk_edit.py:200 #: virtualization/forms/bulk_edit.py:326 #: virtualization/forms/bulk_import.py:146 @@ -8590,8 +8631,8 @@ msgstr "Экспортируется компанией VRF" msgid "Private" msgstr "Частное" -#: ipam/forms/filtersets.py:105 ipam/forms/filtersets.py:190 -#: ipam/forms/filtersets.py:265 ipam/forms/filtersets.py:319 +#: ipam/forms/filtersets.py:105 ipam/forms/filtersets.py:191 +#: ipam/forms/filtersets.py:272 ipam/forms/filtersets.py:326 msgid "Address family" msgstr "Семейство адресов" @@ -8607,53 +8648,57 @@ msgstr "Начало" msgid "End" msgstr "Конец" -#: ipam/forms/filtersets.py:185 +#: ipam/forms/filtersets.py:171 +msgid "VLAN Assignment" +msgstr "Назначение VLAN" + +#: ipam/forms/filtersets.py:186 msgid "Search within" msgstr "Поиск внутри" -#: ipam/forms/filtersets.py:206 ipam/forms/filtersets.py:335 +#: ipam/forms/filtersets.py:207 ipam/forms/filtersets.py:342 msgid "Present in VRF" msgstr "Присутствует в VRF" -#: ipam/forms/filtersets.py:304 +#: ipam/forms/filtersets.py:311 msgid "Device/VM" msgstr "Устройство/виртуальная машина" -#: ipam/forms/filtersets.py:314 +#: ipam/forms/filtersets.py:321 msgid "Parent Prefix" msgstr "Родительский префикс" -#: ipam/forms/filtersets.py:340 +#: ipam/forms/filtersets.py:347 msgid "Assigned Device" msgstr "Назначенное устройство" -#: ipam/forms/filtersets.py:345 +#: ipam/forms/filtersets.py:352 msgid "Assigned VM" msgstr "назначенная виртуальная машина" -#: ipam/forms/filtersets.py:359 +#: ipam/forms/filtersets.py:366 msgid "Assigned to an interface" msgstr "Назначено интерфейсу" -#: ipam/forms/filtersets.py:366 templates/ipam/ipaddress.html:51 +#: ipam/forms/filtersets.py:373 templates/ipam/ipaddress.html:51 msgid "DNS Name" msgstr "DNS-имя" -#: ipam/forms/filtersets.py:409 ipam/forms/filtersets.py:513 +#: ipam/forms/filtersets.py:416 ipam/forms/filtersets.py:520 #: ipam/models/vlans.py:156 templates/ipam/vlan.html:31 msgid "VLAN ID" msgstr "VLAN ID" -#: ipam/forms/filtersets.py:441 +#: ipam/forms/filtersets.py:448 msgid "Minimum VID" msgstr "Минимальный VID" -#: ipam/forms/filtersets.py:447 +#: ipam/forms/filtersets.py:454 msgid "Maximum VID" msgstr "Максимальное значение VID" -#: ipam/forms/filtersets.py:556 ipam/forms/model_forms.py:318 -#: ipam/forms/model_forms.py:750 ipam/forms/model_forms.py:776 +#: ipam/forms/filtersets.py:563 ipam/forms/model_forms.py:318 +#: ipam/forms/model_forms.py:759 ipam/forms/model_forms.py:785 #: ipam/tables/vlans.py:191 templates/virtualization/virtualdisk.html:21 #: templates/virtualization/virtualmachine.html:12 #: templates/virtualization/vminterface.html:21 @@ -8691,7 +8736,7 @@ msgid "IP Range" msgstr "Диапазон IP-адресов" #: ipam/forms/model_forms.py:293 ipam/forms/model_forms.py:319 -#: ipam/forms/model_forms.py:462 templates/ipam/fhrpgroup.html:19 +#: ipam/forms/model_forms.py:471 templates/ipam/fhrpgroup.html:19 msgid "FHRP Group" msgstr "Группа компаний FHRP" @@ -8703,11 +8748,11 @@ msgstr "Сделайте этот IP-адрес основным для устр msgid "NAT IP (Inside)" msgstr "IP-адрес NAT (внутренний)" -#: ipam/forms/model_forms.py:373 +#: ipam/forms/model_forms.py:382 msgid "An IP address can only be assigned to a single object." msgstr "IP-адрес можно присвоить только одному объекту." -#: ipam/forms/model_forms.py:379 ipam/models/ip.py:896 +#: ipam/forms/model_forms.py:388 ipam/models/ip.py:897 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" @@ -8715,32 +8760,32 @@ msgstr "" "Невозможно переназначить IP-адрес, если он назначен основным IP-адресом " "родительского объекта" -#: ipam/forms/model_forms.py:389 +#: ipam/forms/model_forms.py:398 msgid "" "Only IP addresses assigned to an interface can be designated as primary IPs." msgstr "" "В качестве основных IP-адресов можно назначить только IP-адреса, назначенные" " интерфейсу." -#: ipam/forms/model_forms.py:464 +#: ipam/forms/model_forms.py:473 msgid "Virtual IP Address" msgstr "Виртуальный IP-адрес" -#: ipam/forms/model_forms.py:549 +#: ipam/forms/model_forms.py:558 msgid "Assignment already exists" msgstr "Задание уже существует" -#: ipam/forms/model_forms.py:628 ipam/forms/model_forms.py:670 +#: ipam/forms/model_forms.py:637 ipam/forms/model_forms.py:679 #: ipam/tables/ip.py:250 templates/ipam/vlan_edit.html:37 #: templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "Группа VLAN" -#: ipam/forms/model_forms.py:629 +#: ipam/forms/model_forms.py:638 msgid "Child VLANs" msgstr "Детские сети VLAN" -#: ipam/forms/model_forms.py:701 ipam/forms/model_forms.py:733 +#: ipam/forms/model_forms.py:710 ipam/forms/model_forms.py:742 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." @@ -8748,32 +8793,32 @@ msgstr "" "Список одного или нескольких номеров портов, разделенных запятыми. Диапазон " "можно указать с помощью дефиса." -#: ipam/forms/model_forms.py:706 templates/ipam/servicetemplate.html:12 +#: ipam/forms/model_forms.py:715 templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "Шаблон Службы" -#: ipam/forms/model_forms.py:753 +#: ipam/forms/model_forms.py:762 msgid "Port(s)" msgstr "Порт(ы)" -#: ipam/forms/model_forms.py:754 ipam/forms/model_forms.py:782 +#: ipam/forms/model_forms.py:763 ipam/forms/model_forms.py:791 #: templates/ipam/service.html:21 msgid "Service" msgstr "Служба" -#: ipam/forms/model_forms.py:767 +#: ipam/forms/model_forms.py:776 msgid "Service template" msgstr "Шаблон службы" -#: ipam/forms/model_forms.py:779 +#: ipam/forms/model_forms.py:788 msgid "From Template" msgstr "Из шаблона" -#: ipam/forms/model_forms.py:780 +#: ipam/forms/model_forms.py:789 msgid "Custom" msgstr "Настраиваемый" -#: ipam/forms/model_forms.py:810 +#: ipam/forms/model_forms.py:819 msgid "" "Must specify name, protocol, and port(s) if not using a service template." msgstr "" @@ -8842,43 +8887,43 @@ msgstr "Групповое назначение FHRP" msgid "FHRP group assignments" msgstr "Групповые задания FHRP" -#: ipam/models/ip.py:64 +#: ipam/models/ip.py:65 msgid "private" msgstr "частного" -#: ipam/models/ip.py:65 +#: ipam/models/ip.py:66 msgid "IP space managed by this RIR is considered private" msgstr "IP-пространство, управляемое этим RIR, считается частным" -#: ipam/models/ip.py:71 netbox/navigation/menu.py:169 +#: ipam/models/ip.py:72 netbox/navigation/menu.py:169 msgid "RIRs" msgstr "RIR's" -#: ipam/models/ip.py:83 +#: ipam/models/ip.py:84 msgid "IPv4 or IPv6 network" msgstr "Сеть IPv4 или IPv6" -#: ipam/models/ip.py:90 +#: ipam/models/ip.py:91 msgid "Regional Internet Registry responsible for this IP space" msgstr "Региональный реестр Интернета, отвечающий за это IP-пространство" -#: ipam/models/ip.py:100 +#: ipam/models/ip.py:101 msgid "date added" msgstr "дата добавления" -#: ipam/models/ip.py:114 +#: ipam/models/ip.py:115 msgid "aggregate" msgstr "совокупный" -#: ipam/models/ip.py:115 +#: ipam/models/ip.py:116 msgid "aggregates" msgstr "сводные показатели" -#: ipam/models/ip.py:131 +#: ipam/models/ip.py:132 msgid "Cannot create aggregate with /0 mask." msgstr "Невозможно создать агрегат с маской /0." -#: ipam/models/ip.py:143 +#: ipam/models/ip.py:144 #, python-brace-format msgid "" "Aggregates cannot overlap. {prefix} is already covered by an existing " @@ -8887,7 +8932,7 @@ msgstr "" "Агрегаты не могут перекрываться. {prefix} уже покрывается существующим " "агрегатом ({aggregate})." -#: ipam/models/ip.py:157 +#: ipam/models/ip.py:158 #, python-brace-format msgid "" "Prefixes cannot overlap aggregates. {prefix} covers an existing aggregate " @@ -8896,170 +8941,170 @@ msgstr "" "Префиксы не могут перекрывать агрегаты. {prefix} охватывает существующий " "агрегат ({aggregate})." -#: ipam/models/ip.py:199 ipam/models/ip.py:736 vpn/models/tunnels.py:114 +#: ipam/models/ip.py:200 ipam/models/ip.py:737 vpn/models/tunnels.py:114 msgid "role" msgstr "роль" -#: ipam/models/ip.py:200 +#: ipam/models/ip.py:201 msgid "roles" msgstr "ролей" -#: ipam/models/ip.py:216 ipam/models/ip.py:292 +#: ipam/models/ip.py:217 ipam/models/ip.py:293 msgid "prefix" msgstr "префикс" -#: ipam/models/ip.py:217 +#: ipam/models/ip.py:218 msgid "IPv4 or IPv6 network with mask" msgstr "Сеть IPv4 или IPv6 с маской" -#: ipam/models/ip.py:253 +#: ipam/models/ip.py:254 msgid "Operational status of this prefix" msgstr "Рабочий статус этого префикса" -#: ipam/models/ip.py:261 +#: ipam/models/ip.py:262 msgid "The primary function of this prefix" msgstr "Основная функция этого префикса" -#: ipam/models/ip.py:264 +#: ipam/models/ip.py:265 msgid "is a pool" msgstr "это пул" -#: ipam/models/ip.py:266 +#: ipam/models/ip.py:267 msgid "All IP addresses within this prefix are considered usable" msgstr "Все IP-адреса в этом префиксе считаются пригодными для использования" -#: ipam/models/ip.py:269 ipam/models/ip.py:536 +#: ipam/models/ip.py:270 ipam/models/ip.py:537 msgid "mark utilized" msgstr "использованная марка" -#: ipam/models/ip.py:293 +#: ipam/models/ip.py:294 msgid "prefixes" msgstr "префиксы" -#: ipam/models/ip.py:316 +#: ipam/models/ip.py:317 msgid "Cannot create prefix with /0 mask." msgstr "Невозможно создать префикс с маской /0." -#: ipam/models/ip.py:323 ipam/models/ip.py:873 +#: ipam/models/ip.py:324 ipam/models/ip.py:874 #, python-brace-format msgid "VRF {vrf}" msgstr "VRF {vrf}" -#: ipam/models/ip.py:323 ipam/models/ip.py:873 +#: ipam/models/ip.py:324 ipam/models/ip.py:874 msgid "global table" msgstr "глобальная таблица" -#: ipam/models/ip.py:325 +#: ipam/models/ip.py:326 #, python-brace-format msgid "Duplicate prefix found in {table}: {prefix}" msgstr "Дубликат префикса обнаружен в {table}: {prefix}" -#: ipam/models/ip.py:494 +#: ipam/models/ip.py:495 msgid "start address" msgstr "начальный адрес" -#: ipam/models/ip.py:495 ipam/models/ip.py:499 ipam/models/ip.py:711 +#: ipam/models/ip.py:496 ipam/models/ip.py:500 ipam/models/ip.py:712 msgid "IPv4 or IPv6 address (with mask)" msgstr "Адрес IPv4 или IPv6 (с маской)" -#: ipam/models/ip.py:498 +#: ipam/models/ip.py:499 msgid "end address" msgstr "конечный адрес" -#: ipam/models/ip.py:525 +#: ipam/models/ip.py:526 msgid "Operational status of this range" msgstr "Эксплуатационное состояние этой линейки" -#: ipam/models/ip.py:533 +#: ipam/models/ip.py:534 msgid "The primary function of this range" msgstr "Основная функция этого диапазона" -#: ipam/models/ip.py:547 +#: ipam/models/ip.py:548 msgid "IP range" msgstr "Диапазон IP-адресов" -#: ipam/models/ip.py:548 +#: ipam/models/ip.py:549 msgid "IP ranges" msgstr "Диапазоны IP-адресов" -#: ipam/models/ip.py:564 +#: ipam/models/ip.py:565 msgid "Starting and ending IP address versions must match" msgstr "Начальная и конечная версии IP-адресов должны совпадать" -#: ipam/models/ip.py:570 +#: ipam/models/ip.py:571 msgid "Starting and ending IP address masks must match" msgstr "Маски начального и конечного IP-адресов должны совпадать" -#: ipam/models/ip.py:577 +#: ipam/models/ip.py:578 #, python-brace-format msgid "" "Ending address must be greater than the starting address ({start_address})" msgstr "Конечный адрес должен быть больше начального адреса ({start_address})" -#: ipam/models/ip.py:589 +#: ipam/models/ip.py:590 #, python-brace-format msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}" msgstr "" "Определенные адреса пересекаются с диапазоном {overlapping_range} в формате " "VRF {vrf}" -#: ipam/models/ip.py:598 +#: ipam/models/ip.py:599 #, python-brace-format msgid "Defined range exceeds maximum supported size ({max_size})" msgstr "" "Заданный диапазон превышает максимальный поддерживаемый размер ({max_size})" -#: ipam/models/ip.py:710 tenancy/models/contacts.py:82 +#: ipam/models/ip.py:711 tenancy/models/contacts.py:82 msgid "address" msgstr "адрес" -#: ipam/models/ip.py:733 +#: ipam/models/ip.py:734 msgid "The operational status of this IP" msgstr "Рабочий статус этого IP-адреса" -#: ipam/models/ip.py:740 +#: ipam/models/ip.py:741 msgid "The functional role of this IP" msgstr "Функциональная роль этого IP" -#: ipam/models/ip.py:764 templates/ipam/ipaddress.html:72 +#: ipam/models/ip.py:765 templates/ipam/ipaddress.html:72 msgid "NAT (inside)" msgstr "NAT (внутри)" -#: ipam/models/ip.py:765 +#: ipam/models/ip.py:766 msgid "The IP for which this address is the \"outside\" IP" msgstr "IP-адрес, для которого этот адрес является «внешним»" -#: ipam/models/ip.py:772 +#: ipam/models/ip.py:773 msgid "Hostname or FQDN (not case-sensitive)" msgstr "Имя хоста или полное доменное имя (без учета регистра)" -#: ipam/models/ip.py:788 ipam/models/services.py:93 +#: ipam/models/ip.py:789 ipam/models/services.py:93 msgid "IP addresses" msgstr "IP-адреса" -#: ipam/models/ip.py:844 +#: ipam/models/ip.py:845 msgid "Cannot create IP address with /0 mask." msgstr "Невозможно создать IP-адрес с маской /0." -#: ipam/models/ip.py:850 +#: ipam/models/ip.py:851 #, python-brace-format msgid "{ip} is a network ID, which may not be assigned to an interface." msgstr "" "{ip} это идентификатор сети, который не может быть присвоен интерфейсу." -#: ipam/models/ip.py:861 +#: ipam/models/ip.py:862 #, python-brace-format msgid "" "{ip} is a broadcast address, which may not be assigned to an interface." msgstr "" "{ip} это широковещательный адрес, который может не быть присвоен интерфейсу." -#: ipam/models/ip.py:875 +#: ipam/models/ip.py:876 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "Дубликат IP-адреса обнаружен в {table}: {ipaddress}" -#: ipam/models/ip.py:902 +#: ipam/models/ip.py:903 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "Только адресам IPv6 можно присвоить статус SLAAC" @@ -9152,7 +9197,7 @@ msgid "The primary function of this VLAN" msgstr "Основная функция этой VLAN" #: ipam/models/vlans.py:215 ipam/tables/ip.py:175 ipam/tables/vlans.py:78 -#: ipam/views.py:957 netbox/navigation/menu.py:180 +#: ipam/views.py:978 netbox/navigation/menu.py:180 #: netbox/navigation/menu.py:182 msgid "VLANs" msgstr "VLAN" @@ -9228,7 +9273,7 @@ msgid "Added" msgstr "Добавлено" #: ipam/tables/ip.py:127 ipam/tables/ip.py:165 ipam/tables/vlans.py:138 -#: ipam/views.py:348 netbox/navigation/menu.py:152 +#: ipam/views.py:349 netbox/navigation/menu.py:152 #: netbox/navigation/menu.py:154 templates/ipam/vlan.html:84 msgid "Prefixes" msgstr "Префиксы" @@ -9330,23 +9375,23 @@ msgstr "" "В именах DNS разрешены только буквенно-цифровые символы, звездочки, дефисы, " "точки и символы подчеркивания" -#: ipam/views.py:535 +#: ipam/views.py:541 msgid "Child Prefixes" msgstr "Дочерние префиксы" -#: ipam/views.py:570 +#: ipam/views.py:576 msgid "Child Ranges" msgstr "Детские диапазоны" -#: ipam/views.py:886 +#: ipam/views.py:902 msgid "Related IPs" msgstr "Связанные IP-адреса" -#: ipam/views.py:1112 +#: ipam/views.py:1133 msgid "Device Interfaces" msgstr "Интерфейсы устройств" -#: ipam/views.py:1129 +#: ipam/views.py:1150 msgid "VM Interfaces" msgstr "Интерфейсы виртуальных машин" @@ -9910,39 +9955,43 @@ msgstr "Группы кластеров" msgid "Circuit Types" msgstr "Типы каналов связи" -#: netbox/navigation/menu.py:264 netbox/navigation/menu.py:266 +#: netbox/navigation/menu.py:261 +msgid "Circuit Terminations" +msgstr "Прерывания цепей" + +#: netbox/navigation/menu.py:265 netbox/navigation/menu.py:267 msgid "Providers" msgstr "Провайдеры" -#: netbox/navigation/menu.py:267 templates/circuits/provider.html:51 +#: netbox/navigation/menu.py:268 templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "Аккаунты провайдеров" -#: netbox/navigation/menu.py:268 +#: netbox/navigation/menu.py:269 msgid "Provider Networks" msgstr "Сети провайдеров" -#: netbox/navigation/menu.py:282 +#: netbox/navigation/menu.py:283 msgid "Power Panels" msgstr "Панели питания" -#: netbox/navigation/menu.py:293 +#: netbox/navigation/menu.py:294 msgid "Configurations" msgstr "Конфигурации" -#: netbox/navigation/menu.py:295 +#: netbox/navigation/menu.py:296 msgid "Config Contexts" msgstr "Контексты конфигурации" -#: netbox/navigation/menu.py:296 +#: netbox/navigation/menu.py:297 msgid "Config Templates" msgstr "Шаблоны конфигурации" -#: netbox/navigation/menu.py:303 netbox/navigation/menu.py:307 +#: netbox/navigation/menu.py:304 netbox/navigation/menu.py:308 msgid "Customization" msgstr "Настройка" -#: netbox/navigation/menu.py:309 templates/dcim/device_edit.html:103 +#: netbox/navigation/menu.py:310 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 @@ -9952,107 +10001,107 @@ msgstr "Настройка" msgid "Custom Fields" msgstr "Настраиваемые Поля" -#: netbox/navigation/menu.py:310 +#: netbox/navigation/menu.py:311 msgid "Custom Field Choices" msgstr "Варианты для Настраиваемых Полей" -#: netbox/navigation/menu.py:311 +#: netbox/navigation/menu.py:312 msgid "Custom Links" msgstr "Настраиваемые Ссылки" -#: netbox/navigation/menu.py:312 +#: netbox/navigation/menu.py:313 msgid "Export Templates" msgstr "Шаблоны экспорта" -#: netbox/navigation/menu.py:313 +#: netbox/navigation/menu.py:314 msgid "Saved Filters" msgstr "Сохраненные фильтры" -#: netbox/navigation/menu.py:315 +#: netbox/navigation/menu.py:316 msgid "Image Attachments" msgstr "Прикрепленные Изображения" -#: netbox/navigation/menu.py:333 +#: netbox/navigation/menu.py:334 msgid "Operations" msgstr "Операции" -#: netbox/navigation/menu.py:337 +#: netbox/navigation/menu.py:338 msgid "Integrations" msgstr "Интеграции" -#: netbox/navigation/menu.py:339 +#: netbox/navigation/menu.py:340 msgid "Data Sources" msgstr "Источники данных" -#: netbox/navigation/menu.py:340 +#: netbox/navigation/menu.py:341 msgid "Event Rules" msgstr "Правила мероприятия" -#: netbox/navigation/menu.py:341 +#: netbox/navigation/menu.py:342 msgid "Webhooks" msgstr "Вебхуки" -#: netbox/navigation/menu.py:345 netbox/navigation/menu.py:349 +#: netbox/navigation/menu.py:346 netbox/navigation/menu.py:350 #: netbox/views/generic/feature_views.py:151 #: templates/extras/report/base.html:37 templates/extras/script/base.html:36 msgid "Jobs" msgstr "Задачи" -#: netbox/navigation/menu.py:355 +#: netbox/navigation/menu.py:356 msgid "Logging" msgstr "Ведение журнала" -#: netbox/navigation/menu.py:357 +#: netbox/navigation/menu.py:358 msgid "Journal Entries" msgstr "Записи в журнале" -#: netbox/navigation/menu.py:358 templates/extras/objectchange.html:8 +#: netbox/navigation/menu.py:359 templates/extras/objectchange.html:8 #: templates/extras/objectchange_list.html:4 msgid "Change Log" msgstr "Журнал изменений" -#: netbox/navigation/menu.py:365 templates/inc/user_menu.html:11 +#: netbox/navigation/menu.py:366 templates/inc/user_menu.html:11 msgid "Admin" msgstr "Администратор" -#: netbox/navigation/menu.py:373 templates/users/group.html:29 +#: netbox/navigation/menu.py:374 templates/users/group.html:29 #: users/forms/model_forms.py:233 users/forms/model_forms.py:245 #: users/forms/model_forms.py:297 users/tables.py:102 msgid "Users" msgstr "Пользователи" -#: netbox/navigation/menu.py:393 users/forms/model_forms.py:182 +#: netbox/navigation/menu.py:394 users/forms/model_forms.py:182 #: users/forms/model_forms.py:194 users/forms/model_forms.py:302 #: users/tables.py:35 users/tables.py:106 msgid "Groups" msgstr "Группы" -#: netbox/navigation/menu.py:413 templates/account/base.html:21 +#: netbox/navigation/menu.py:414 templates/account/base.html:21 #: templates/inc/user_menu.html:36 msgid "API Tokens" msgstr "Токены API" -#: netbox/navigation/menu.py:420 users/forms/model_forms.py:188 +#: netbox/navigation/menu.py:421 users/forms/model_forms.py:188 #: users/forms/model_forms.py:196 users/forms/model_forms.py:239 #: users/forms/model_forms.py:246 msgid "Permissions" msgstr "Разрешения" -#: netbox/navigation/menu.py:428 netbox/navigation/menu.py:432 +#: netbox/navigation/menu.py:429 netbox/navigation/menu.py:433 #: templates/core/system.html:7 msgid "System" msgstr "система" -#: netbox/navigation/menu.py:437 +#: netbox/navigation/menu.py:438 msgid "Configuration History" msgstr "История конфигурации" -#: netbox/navigation/menu.py:443 templates/core/rq_task.html:8 +#: netbox/navigation/menu.py:444 templates/core/rq_task.html:8 #: templates/core/rq_task_list.html:22 msgid "Background Tasks" msgstr "Фоновые задачи" -#: netbox/navigation/menu.py:482 templates/500.html:35 +#: netbox/navigation/menu.py:483 templates/500.html:35 #: templates/account/preferences.html:22 templates/core/system.html:80 msgid "Plugins" msgstr "Плагины" @@ -10192,34 +10241,46 @@ msgstr "Невозможно добавить магазины в реестр msgid "Cannot delete stores from registry" msgstr "Невозможно удалить магазины из реестра" -#: netbox/settings.py:715 +#: netbox/settings.py:722 +msgid "German" +msgstr "Немецкий" + +#: netbox/settings.py:723 msgid "English" msgstr "Английский" -#: netbox/settings.py:716 +#: netbox/settings.py:724 msgid "Spanish" msgstr "Испанский" -#: netbox/settings.py:717 +#: netbox/settings.py:725 msgid "French" msgstr "Французский" -#: netbox/settings.py:718 +#: netbox/settings.py:726 msgid "Japanese" msgstr "Японский" -#: netbox/settings.py:719 +#: netbox/settings.py:727 msgid "Portuguese" msgstr "Португальский" -#: netbox/settings.py:720 +#: netbox/settings.py:728 msgid "Russian" msgstr "Русский" -#: netbox/settings.py:721 +#: netbox/settings.py:729 msgid "Turkish" msgstr "Турецкий" +#: netbox/settings.py:730 +msgid "Ukrainian" +msgstr "украинский" + +#: netbox/settings.py:731 +msgid "Chinese" +msgstr "Китайский" + #: netbox/tables/columns.py:185 msgid "Toggle all" msgstr "Переключить все" @@ -10232,16 +10293,16 @@ msgstr "Переключить выпадающий список" msgid "Error" msgstr "Ошибка" -#: netbox/tables/tables.py:56 +#: netbox/tables/tables.py:57 #, python-brace-format msgid "No {model_name} found" -msgstr "Нет {model_name} основать" +msgstr "{model_name} не найдена" -#: netbox/tables/tables.py:246 templates/generic/bulk_import.html:117 +#: netbox/tables/tables.py:248 templates/generic/bulk_import.html:117 msgid "Field" msgstr "Поле" -#: netbox/tables/tables.py:249 +#: netbox/tables/tables.py:251 msgid "Value" msgstr "Ценность" @@ -10350,7 +10411,7 @@ msgstr "Изменить пароль" #: 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:37 +#: 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 @@ -10443,7 +10504,8 @@ msgstr "Назначенные группы" #: templates/account/profile.html:58 #: templates/circuits/circuit_terminations_swap.html:18 #: templates/circuits/circuit_terminations_swap.html:26 -#: templates/circuits/inc/circuit_termination.html:154 +#: templates/circuits/circuittermination.html:34 +#: templates/circuits/inc/circuit_termination.html:68 #: templates/dcim/devicebay.html:59 #: templates/dcim/inc/panels/inventory_items.html:45 #: templates/dcim/interface.html:296 templates/dcim/modulebay.html:76 @@ -10560,13 +10622,6 @@ msgstr "Добавить канал связи" msgid "Circuit Type" msgstr "Тип канала связи" -#: templates/circuits/inc/circuit_termination.html:6 -#: templates/circuits/inc/circuit_termination.html:41 -#: templates/dcim/cable.html:68 templates/dcim/cable.html:72 -#: vpn/forms/bulk_import.py:100 vpn/forms/filtersets.py:77 -msgid "Termination" -msgstr "Прекращение" - #: templates/circuits/inc/circuit_termination.html:10 #: templates/dcim/devicetype/component_templates.html:33 #: templates/dcim/manufacturer.html:11 @@ -10579,7 +10634,7 @@ msgid "Add" msgstr "Добавить" #: templates/circuits/inc/circuit_termination.html:15 -#: templates/circuits/inc/circuit_termination.html:62 +#: 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:32 @@ -10594,33 +10649,33 @@ msgstr "Редактировать" msgid "Swap" msgstr "Обмен" -#: templates/circuits/inc/circuit_termination.html:45 +#: templates/circuits/inc/circuit_termination_fields.html:19 #: templates/dcim/consoleport.html:59 templates/dcim/consoleserverport.html:60 #: templates/dcim/powerfeed.html:114 msgid "Marked as connected" msgstr "Отмечено как подключенное" -#: templates/circuits/inc/circuit_termination.html:47 +#: templates/circuits/inc/circuit_termination_fields.html:21 msgid "to" msgstr "к" -#: templates/circuits/inc/circuit_termination.html:57 -#: templates/circuits/inc/circuit_termination.html:58 +#: 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 msgid "Trace" msgstr "Следить" -#: templates/circuits/inc/circuit_termination.html:61 +#: templates/circuits/inc/circuit_termination_fields.html:35 msgid "Edit cable" msgstr "Редактирование кабеля" -#: templates/circuits/inc/circuit_termination.html:66 +#: templates/circuits/inc/circuit_termination_fields.html:40 msgid "Remove cable" msgstr "Извлеките кабель" -#: templates/circuits/inc/circuit_termination.html:67 +#: 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 @@ -10632,7 +10687,7 @@ msgstr "Извлеките кабель" msgid "Disconnect" msgstr "Отключить" -#: templates/circuits/inc/circuit_termination.html:74 +#: 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 @@ -10641,19 +10696,19 @@ msgstr "Отключить" msgid "Connect" msgstr "Подключить" -#: templates/circuits/inc/circuit_termination.html:96 +#: templates/circuits/inc/circuit_termination_fields.html:70 msgid "Downstream" msgstr "Ниже по течению" -#: templates/circuits/inc/circuit_termination.html:97 +#: templates/circuits/inc/circuit_termination_fields.html:71 msgid "Upstream" msgstr "Вверх по течению" -#: templates/circuits/inc/circuit_termination.html:106 +#: templates/circuits/inc/circuit_termination_fields.html:80 msgid "Cross-Connect" msgstr "Кросс-коннект" -#: templates/circuits/inc/circuit_termination.html:110 +#: templates/circuits/inc/circuit_termination_fields.html:84 msgid "Patch Panel/Port" msgstr "Патч-панель/порт" @@ -12068,11 +12123,15 @@ msgstr "Отчет" msgid "You do not have permission to run scripts" msgstr "У вас нет разрешения на запуск скриптов" -#: templates/extras/script.html:40 templates/extras/script.html:44 +#: templates/extras/script.html:41 templates/extras/script.html:45 #: templates/extras/script_list.html:88 msgid "Run Script" msgstr "Запустить скрипт" +#: templates/extras/script.html:51 templates/extras/script/source.html:10 +msgid "Error loading script" +msgstr "Ошибка при загрузке скрипта" + #: templates/extras/script/jobs.html:16 msgid "Script no longer exists in the source file." msgstr "Скрипт больше не существует в исходном файле." @@ -13636,8 +13695,8 @@ msgstr "Используйте регулярные выражения" msgid "" "Numeric ID of an existing object to update (if not creating a new object)" msgstr "" -"Цифровой идентификатор существующего объекта для обновления (если не " -"создается новый объект)" +"Числовой ID существующего объекта для обновления (если не создается новый " +"объект)" #: utilities/forms/forms.py:92 #, python-brace-format diff --git a/netbox/translations/tr/LC_MESSAGES/django.po b/netbox/translations/tr/LC_MESSAGES/django.po index ee0317364..d08c0c680 100644 --- a/netbox/translations/tr/LC_MESSAGES/django.po +++ b/netbox/translations/tr/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-05-14 13:22+0000\n" +"POT-Creation-Date: 2024-05-22 17:41+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" @@ -65,19 +65,19 @@ msgid "Your preferences have been updated." msgstr "Tercihleriniz güncellendi." #: circuits/choices.py:21 dcim/choices.py:20 dcim/choices.py:102 -#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1429 -#: dcim/choices.py:1505 dcim/choices.py:1555 virtualization/choices.py:20 +#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1457 +#: dcim/choices.py:1533 dcim/choices.py:1583 virtualization/choices.py:20 #: virtualization/choices.py:45 vpn/choices.py:18 msgid "Planned" msgstr "Planlanan" -#: circuits/choices.py:22 netbox/navigation/menu.py:289 +#: circuits/choices.py:22 netbox/navigation/menu.py:290 msgid "Provisioning" msgstr "Tedarik" #: circuits/choices.py:23 core/tables/tasks.py:22 dcim/choices.py:22 #: dcim/choices.py:103 dcim/choices.py:173 dcim/choices.py:219 -#: dcim/choices.py:1504 dcim/choices.py:1554 extras/tables/tables.py:385 +#: dcim/choices.py:1532 dcim/choices.py:1582 extras/tables/tables.py:385 #: 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 @@ -87,7 +87,7 @@ msgid "Active" msgstr "Aktif" #: circuits/choices.py:24 dcim/choices.py:172 dcim/choices.py:218 -#: dcim/choices.py:1503 dcim/choices.py:1556 virtualization/choices.py:24 +#: dcim/choices.py:1531 dcim/choices.py:1584 virtualization/choices.py:24 #: virtualization/choices.py:43 msgid "Offline" msgstr "Çevrim dışı" @@ -102,8 +102,8 @@ msgstr "Hizmet dışı bırakıldı" #: circuits/filtersets.py:29 circuits/filtersets.py:196 dcim/filtersets.py:97 #: dcim/filtersets.py:151 dcim/filtersets.py:211 dcim/filtersets.py:297 -#: dcim/filtersets.py:406 dcim/filtersets.py:969 dcim/filtersets.py:1295 -#: dcim/filtersets.py:1822 dcim/filtersets.py:2065 dcim/filtersets.py:2123 +#: dcim/filtersets.py:406 dcim/filtersets.py:969 dcim/filtersets.py:1305 +#: dcim/filtersets.py:1832 dcim/filtersets.py:2075 dcim/filtersets.py:2133 #: ipam/filtersets.py:339 ipam/filtersets.py:945 #: virtualization/filtersets.py:45 virtualization/filtersets.py:173 #: vpn/filtersets.py:377 @@ -112,8 +112,8 @@ msgstr "Bölge (ID)" #: circuits/filtersets.py:36 circuits/filtersets.py:203 dcim/filtersets.py:104 #: dcim/filtersets.py:157 dcim/filtersets.py:218 dcim/filtersets.py:304 -#: dcim/filtersets.py:413 dcim/filtersets.py:976 dcim/filtersets.py:1302 -#: dcim/filtersets.py:1829 dcim/filtersets.py:2072 dcim/filtersets.py:2130 +#: dcim/filtersets.py:413 dcim/filtersets.py:976 dcim/filtersets.py:1312 +#: dcim/filtersets.py:1839 dcim/filtersets.py:2082 dcim/filtersets.py:2140 #: extras/filtersets.py:461 ipam/filtersets.py:346 ipam/filtersets.py:952 #: virtualization/filtersets.py:52 virtualization/filtersets.py:180 #: vpn/filtersets.py:372 @@ -122,8 +122,8 @@ msgstr "Bölge (kısa ad)" #: circuits/filtersets.py:42 circuits/filtersets.py:209 dcim/filtersets.py:127 #: dcim/filtersets.py:224 dcim/filtersets.py:310 dcim/filtersets.py:419 -#: dcim/filtersets.py:982 dcim/filtersets.py:1308 dcim/filtersets.py:1835 -#: dcim/filtersets.py:2078 dcim/filtersets.py:2136 ipam/filtersets.py:352 +#: dcim/filtersets.py:982 dcim/filtersets.py:1318 dcim/filtersets.py:1845 +#: dcim/filtersets.py:2088 dcim/filtersets.py:2146 ipam/filtersets.py:352 #: ipam/filtersets.py:958 virtualization/filtersets.py:58 #: virtualization/filtersets.py:186 msgid "Site group (ID)" @@ -131,16 +131,18 @@ msgstr "Site grubu (ID)" #: circuits/filtersets.py:49 circuits/filtersets.py:216 dcim/filtersets.py:134 #: dcim/filtersets.py:231 dcim/filtersets.py:317 dcim/filtersets.py:426 -#: dcim/filtersets.py:989 dcim/filtersets.py:1315 dcim/filtersets.py:1842 -#: dcim/filtersets.py:2085 dcim/filtersets.py:2143 extras/filtersets.py:467 +#: dcim/filtersets.py:989 dcim/filtersets.py:1325 dcim/filtersets.py:1852 +#: dcim/filtersets.py:2095 dcim/filtersets.py:2153 extras/filtersets.py:467 #: ipam/filtersets.py:359 ipam/filtersets.py:965 #: virtualization/filtersets.py:65 virtualization/filtersets.py:193 msgid "Site group (slug)" msgstr "Site grubu (kısa ad)" -#: circuits/filtersets.py:54 circuits/forms/bulk_import.py:116 -#: circuits/forms/filtersets.py:48 circuits/forms/filtersets.py:168 -#: circuits/forms/model_forms.py:136 circuits/forms/model_forms.py:152 +#: circuits/filtersets.py:54 circuits/forms/bulk_edit.py:186 +#: circuits/forms/bulk_edit.py:214 circuits/forms/bulk_import.py:126 +#: circuits/forms/filtersets.py:49 circuits/forms/filtersets.py:169 +#: circuits/forms/filtersets.py:207 circuits/forms/model_forms.py:136 +#: circuits/forms/model_forms.py:152 circuits/tables/circuits.py:105 #: dcim/forms/bulk_edit.py:167 dcim/forms/bulk_edit.py:239 #: dcim/forms/bulk_edit.py:575 dcim/forms/bulk_edit.py:771 #: dcim/forms/bulk_import.py:130 dcim/forms/bulk_import.py:184 @@ -148,10 +150,10 @@ msgstr "Site grubu (kısa ad)" #: dcim/forms/bulk_import.py:1262 dcim/forms/bulk_import.py:1290 #: dcim/forms/filtersets.py:85 dcim/forms/filtersets.py:218 #: dcim/forms/filtersets.py:265 dcim/forms/filtersets.py:374 -#: dcim/forms/filtersets.py:681 dcim/forms/filtersets.py:908 -#: dcim/forms/filtersets.py:932 dcim/forms/filtersets.py:1022 -#: dcim/forms/filtersets.py:1060 dcim/forms/filtersets.py:1468 -#: dcim/forms/filtersets.py:1492 dcim/forms/filtersets.py:1516 +#: dcim/forms/filtersets.py:682 dcim/forms/filtersets.py:916 +#: dcim/forms/filtersets.py:940 dcim/forms/filtersets.py:1030 +#: dcim/forms/filtersets.py:1068 dcim/forms/filtersets.py:1476 +#: dcim/forms/filtersets.py:1500 dcim/forms/filtersets.py:1524 #: dcim/forms/model_forms.py:136 dcim/forms/model_forms.py:164 #: dcim/forms/model_forms.py:206 dcim/forms/model_forms.py:406 #: dcim/forms/model_forms.py:668 dcim/forms/object_create.py:391 @@ -161,11 +163,11 @@ msgstr "Site grubu (kısa ad)" #: ipam/forms/bulk_edit.py:270 ipam/forms/bulk_edit.py:448 #: ipam/forms/bulk_edit.py:522 ipam/forms/bulk_import.py:170 #: ipam/forms/bulk_import.py:437 ipam/forms/filtersets.py:153 -#: ipam/forms/filtersets.py:230 ipam/forms/filtersets.py:425 -#: ipam/forms/filtersets.py:489 ipam/forms/model_forms.py:203 -#: ipam/forms/model_forms.py:578 ipam/forms/model_forms.py:673 +#: ipam/forms/filtersets.py:231 ipam/forms/filtersets.py:432 +#: ipam/forms/filtersets.py:496 ipam/forms/model_forms.py:203 +#: ipam/forms/model_forms.py:587 ipam/forms/model_forms.py:682 #: ipam/tables/ip.py:244 ipam/tables/vlans.py:114 ipam/tables/vlans.py:216 -#: templates/circuits/inc/circuit_termination.html:32 +#: templates/circuits/inc/circuit_termination_fields.html:6 #: templates/dcim/device.html:21 templates/dcim/inc/cable_termination.html:8 #: templates/dcim/inc/cable_termination.html:33 #: templates/dcim/location.html:37 templates/dcim/powerpanel.html:22 @@ -202,19 +204,21 @@ msgstr "Site (kısa ad)" msgid "ASN (ID)" msgstr "ASN (ID)" -#: circuits/filtersets.py:71 circuits/forms/filtersets.py:28 +#: circuits/filtersets.py:71 circuits/forms/filtersets.py:29 #: ipam/forms/model_forms.py:157 ipam/models/asns.py:108 #: ipam/models/asns.py:125 ipam/tables/asn.py:41 templates/ipam/asn.html:20 msgid "ASN" msgstr "ASN" #: circuits/filtersets.py:93 circuits/filtersets.py:120 -#: circuits/filtersets.py:154 ipam/filtersets.py:243 +#: circuits/filtersets.py:154 circuits/filtersets.py:281 +#: ipam/filtersets.py:243 msgid "Provider (ID)" msgstr "Sağlayıcı (ID)" #: circuits/filtersets.py:99 circuits/filtersets.py:126 -#: circuits/filtersets.py:160 ipam/filtersets.py:249 +#: circuits/filtersets.py:160 circuits/filtersets.py:287 +#: ipam/filtersets.py:249 msgid "Provider (slug)" msgstr "Sağlayıcı (kısa ad)" @@ -240,8 +244,8 @@ msgstr "Devre tipi (kısa ad)" #: circuits/filtersets.py:221 circuits/filtersets.py:266 #: dcim/filtersets.py:235 dcim/filtersets.py:321 dcim/filtersets.py:394 -#: dcim/filtersets.py:993 dcim/filtersets.py:1320 dcim/filtersets.py:1847 -#: dcim/filtersets.py:2089 dcim/filtersets.py:2148 ipam/filtersets.py:232 +#: dcim/filtersets.py:993 dcim/filtersets.py:1330 dcim/filtersets.py:1857 +#: dcim/filtersets.py:2099 dcim/filtersets.py:2158 ipam/filtersets.py:232 #: ipam/filtersets.py:363 ipam/filtersets.py:969 #: virtualization/filtersets.py:69 virtualization/filtersets.py:197 #: vpn/filtersets.py:387 @@ -253,13 +257,13 @@ msgid "Termination A (ID)" msgstr "Fesih A (ID)" #: circuits/filtersets.py:258 core/filtersets.py:73 core/filtersets.py:132 -#: dcim/filtersets.py:693 dcim/filtersets.py:1289 dcim/filtersets.py:2196 +#: dcim/filtersets.py:693 dcim/filtersets.py:1299 dcim/filtersets.py:2206 #: extras/filtersets.py:41 extras/filtersets.py:63 extras/filtersets.py:92 #: extras/filtersets.py:127 extras/filtersets.py:176 extras/filtersets.py:204 #: extras/filtersets.py:234 extras/filtersets.py:271 extras/filtersets.py:343 #: extras/filtersets.py:390 extras/filtersets.py:450 extras/filtersets.py:613 #: extras/filtersets.py:655 extras/filtersets.py:696 -#: ipam/forms/model_forms.py:438 netbox/filtersets.py:275 +#: ipam/forms/model_forms.py:447 netbox/filtersets.py:275 #: netbox/forms/__init__.py:22 netbox/forms/base.py:165 #: templates/htmx/object_selector.html:28 templates/inc/filter_list.html:45 #: templates/ipam/ipaddress_assign.html:29 templates/search.html:7 @@ -269,9 +273,12 @@ msgstr "Fesih A (ID)" msgid "Search" msgstr "Arama" -#: circuits/filtersets.py:262 circuits/forms/bulk_edit.py:168 -#: circuits/forms/model_forms.py:109 circuits/forms/model_forms.py:131 +#: circuits/filtersets.py:262 circuits/forms/bulk_edit.py:170 +#: circuits/forms/bulk_import.py:117 circuits/forms/filtersets.py:196 +#: circuits/forms/filtersets.py:212 circuits/forms/model_forms.py:109 +#: circuits/forms/model_forms.py:131 circuits/tables/circuits.py:96 #: dcim/forms/connections.py:71 templates/circuits/circuit.html:15 +#: templates/circuits/circuittermination.html:19 #: templates/dcim/inc/cable_termination.html:55 #: templates/dcim/trace/circuit.html:4 msgid "Circuit" @@ -281,48 +288,48 @@ msgstr "Devre" msgid "ProviderNetwork (ID)" msgstr "Sağlayıcı Ağı (ID)" -#: circuits/forms/bulk_edit.py:26 circuits/forms/filtersets.py:53 +#: circuits/forms/bulk_edit.py:28 circuits/forms/filtersets.py:54 #: circuits/forms/model_forms.py:27 circuits/tables/providers.py:33 #: dcim/forms/bulk_edit.py:127 dcim/forms/filtersets.py:188 #: dcim/forms/model_forms.py:122 dcim/tables/sites.py:94 -#: ipam/models/asns.py:126 ipam/tables/asn.py:27 ipam/views.py:218 +#: ipam/models/asns.py:126 ipam/tables/asn.py:27 ipam/views.py:219 #: netbox/navigation/menu.py:159 netbox/navigation/menu.py:162 #: templates/circuits/provider.html:23 msgid "ASNs" msgstr "ASN'ler" -#: circuits/forms/bulk_edit.py:30 circuits/forms/bulk_edit.py:52 -#: circuits/forms/bulk_edit.py:79 circuits/forms/bulk_edit.py:100 -#: circuits/forms/bulk_edit.py:160 core/forms/bulk_edit.py:28 -#: core/tables/plugins.py:29 dcim/forms/bulk_create.py:35 -#: dcim/forms/bulk_edit.py:72 dcim/forms/bulk_edit.py:91 -#: dcim/forms/bulk_edit.py:150 dcim/forms/bulk_edit.py:191 -#: dcim/forms/bulk_edit.py:209 dcim/forms/bulk_edit.py:337 -#: dcim/forms/bulk_edit.py:373 dcim/forms/bulk_edit.py:388 -#: dcim/forms/bulk_edit.py:447 dcim/forms/bulk_edit.py:486 -#: dcim/forms/bulk_edit.py:516 dcim/forms/bulk_edit.py:540 -#: dcim/forms/bulk_edit.py:613 dcim/forms/bulk_edit.py:665 -#: dcim/forms/bulk_edit.py:717 dcim/forms/bulk_edit.py:740 -#: dcim/forms/bulk_edit.py:788 dcim/forms/bulk_edit.py:858 -#: dcim/forms/bulk_edit.py:911 dcim/forms/bulk_edit.py:946 -#: dcim/forms/bulk_edit.py:986 dcim/forms/bulk_edit.py:1030 -#: dcim/forms/bulk_edit.py:1075 dcim/forms/bulk_edit.py:1102 -#: dcim/forms/bulk_edit.py:1120 dcim/forms/bulk_edit.py:1138 -#: dcim/forms/bulk_edit.py:1156 dcim/forms/bulk_edit.py:1575 -#: extras/forms/bulk_edit.py:36 extras/forms/bulk_edit.py:124 -#: extras/forms/bulk_edit.py:153 extras/forms/bulk_edit.py:183 -#: extras/forms/bulk_edit.py:264 extras/forms/bulk_edit.py:288 -#: extras/forms/bulk_edit.py:302 extras/tables/tables.py:58 -#: ipam/forms/bulk_edit.py:51 ipam/forms/bulk_edit.py:71 -#: ipam/forms/bulk_edit.py:91 ipam/forms/bulk_edit.py:115 -#: ipam/forms/bulk_edit.py:144 ipam/forms/bulk_edit.py:173 -#: ipam/forms/bulk_edit.py:192 ipam/forms/bulk_edit.py:261 -#: ipam/forms/bulk_edit.py:305 ipam/forms/bulk_edit.py:353 -#: ipam/forms/bulk_edit.py:396 ipam/forms/bulk_edit.py:424 -#: ipam/forms/bulk_edit.py:554 ipam/forms/bulk_edit.py:585 -#: templates/account/token.html:35 templates/circuits/circuit.html:59 -#: templates/circuits/circuittype.html:26 -#: templates/circuits/inc/circuit_termination.html:114 +#: circuits/forms/bulk_edit.py:32 circuits/forms/bulk_edit.py:54 +#: circuits/forms/bulk_edit.py:81 circuits/forms/bulk_edit.py:102 +#: circuits/forms/bulk_edit.py:162 circuits/forms/bulk_edit.py:181 +#: core/forms/bulk_edit.py:28 core/tables/plugins.py:29 +#: dcim/forms/bulk_create.py:35 dcim/forms/bulk_edit.py:72 +#: dcim/forms/bulk_edit.py:91 dcim/forms/bulk_edit.py:150 +#: dcim/forms/bulk_edit.py:191 dcim/forms/bulk_edit.py:209 +#: dcim/forms/bulk_edit.py:337 dcim/forms/bulk_edit.py:373 +#: dcim/forms/bulk_edit.py:388 dcim/forms/bulk_edit.py:447 +#: dcim/forms/bulk_edit.py:486 dcim/forms/bulk_edit.py:516 +#: dcim/forms/bulk_edit.py:540 dcim/forms/bulk_edit.py:613 +#: dcim/forms/bulk_edit.py:665 dcim/forms/bulk_edit.py:717 +#: dcim/forms/bulk_edit.py:740 dcim/forms/bulk_edit.py:788 +#: dcim/forms/bulk_edit.py:858 dcim/forms/bulk_edit.py:911 +#: dcim/forms/bulk_edit.py:946 dcim/forms/bulk_edit.py:986 +#: dcim/forms/bulk_edit.py:1030 dcim/forms/bulk_edit.py:1075 +#: dcim/forms/bulk_edit.py:1102 dcim/forms/bulk_edit.py:1120 +#: dcim/forms/bulk_edit.py:1138 dcim/forms/bulk_edit.py:1156 +#: dcim/forms/bulk_edit.py:1575 extras/forms/bulk_edit.py:36 +#: extras/forms/bulk_edit.py:124 extras/forms/bulk_edit.py:153 +#: extras/forms/bulk_edit.py:183 extras/forms/bulk_edit.py:264 +#: extras/forms/bulk_edit.py:288 extras/forms/bulk_edit.py:302 +#: extras/tables/tables.py:58 ipam/forms/bulk_edit.py:51 +#: ipam/forms/bulk_edit.py:71 ipam/forms/bulk_edit.py:91 +#: ipam/forms/bulk_edit.py:115 ipam/forms/bulk_edit.py:144 +#: ipam/forms/bulk_edit.py:173 ipam/forms/bulk_edit.py:192 +#: ipam/forms/bulk_edit.py:261 ipam/forms/bulk_edit.py:305 +#: ipam/forms/bulk_edit.py:353 ipam/forms/bulk_edit.py:396 +#: ipam/forms/bulk_edit.py:424 ipam/forms/bulk_edit.py:554 +#: ipam/forms/bulk_edit.py:585 templates/account/token.html:35 +#: templates/circuits/circuit.html:59 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/dcim/cable.html:36 @@ -388,32 +395,35 @@ msgstr "ASN'ler" msgid "Description" msgstr "Açıklama" -#: circuits/forms/bulk_edit.py:47 circuits/forms/bulk_edit.py:69 -#: circuits/forms/bulk_edit.py:119 circuits/forms/bulk_import.py:34 -#: circuits/forms/bulk_import.py:49 circuits/forms/bulk_import.py:75 -#: circuits/forms/filtersets.py:67 circuits/forms/filtersets.py:85 -#: circuits/forms/filtersets.py:113 circuits/forms/filtersets.py:128 +#: circuits/forms/bulk_edit.py:49 circuits/forms/bulk_edit.py:71 +#: circuits/forms/bulk_edit.py:121 circuits/forms/bulk_import.py:35 +#: circuits/forms/bulk_import.py:50 circuits/forms/bulk_import.py:76 +#: circuits/forms/filtersets.py:68 circuits/forms/filtersets.py:86 +#: circuits/forms/filtersets.py:114 circuits/forms/filtersets.py:129 +#: circuits/forms/filtersets.py:197 circuits/forms/filtersets.py:230 #: circuits/forms/model_forms.py:45 circuits/forms/model_forms.py:59 -#: circuits/forms/model_forms.py:91 circuits/tables/circuits.py:55 -#: circuits/tables/providers.py:72 circuits/tables/providers.py:103 -#: templates/circuits/circuit.html:18 templates/circuits/provider.html:20 +#: circuits/forms/model_forms.py:91 circuits/tables/circuits.py:56 +#: circuits/tables/circuits.py:100 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 msgid "Provider" msgstr "Sağlayıcı" -#: circuits/forms/bulk_edit.py:76 circuits/forms/filtersets.py:88 +#: circuits/forms/bulk_edit.py:78 circuits/forms/filtersets.py:89 #: templates/circuits/providernetwork.html:28 msgid "Service ID" msgstr "Servis ID" -#: circuits/forms/bulk_edit.py:96 circuits/forms/filtersets.py:104 +#: circuits/forms/bulk_edit.py:98 circuits/forms/filtersets.py:105 #: dcim/forms/bulk_edit.py:205 dcim/forms/bulk_edit.py:502 #: dcim/forms/bulk_edit.py:702 dcim/forms/bulk_edit.py:1071 #: dcim/forms/bulk_edit.py:1098 dcim/forms/bulk_edit.py:1571 -#: dcim/forms/filtersets.py:975 dcim/forms/filtersets.py:1351 -#: dcim/forms/filtersets.py:1372 dcim/tables/devices.py:699 +#: dcim/forms/filtersets.py:983 dcim/forms/filtersets.py:1359 +#: dcim/forms/filtersets.py:1380 dcim/tables/devices.py:699 #: dcim/tables/devices.py:759 dcim/tables/devices.py:986 #: dcim/tables/devicetypes.py:245 dcim/tables/devicetypes.py:260 #: dcim/tables/racks.py:32 extras/forms/bulk_edit.py:260 @@ -425,8 +435,8 @@ msgstr "Servis ID" msgid "Color" msgstr "Renk" -#: circuits/forms/bulk_edit.py:114 circuits/forms/bulk_import.py:88 -#: circuits/forms/filtersets.py:123 core/forms/bulk_edit.py:18 +#: circuits/forms/bulk_edit.py:116 circuits/forms/bulk_import.py:89 +#: circuits/forms/filtersets.py:124 core/forms/bulk_edit.py:18 #: core/forms/filtersets.py:30 core/tables/data.py:20 core/tables/jobs.py:18 #: dcim/forms/bulk_edit.py:282 dcim/forms/bulk_edit.py:680 #: dcim/forms/bulk_edit.py:819 dcim/forms/bulk_edit.py:887 @@ -438,18 +448,18 @@ msgstr "Renk" #: dcim/forms/bulk_import.py:725 dcim/forms/bulk_import.py:808 #: dcim/forms/bulk_import.py:902 dcim/forms/bulk_import.py:944 #: dcim/forms/bulk_import.py:1161 dcim/forms/bulk_import.py:1327 -#: dcim/forms/filtersets.py:287 dcim/forms/filtersets.py:866 -#: dcim/forms/filtersets.py:965 dcim/forms/filtersets.py:1086 -#: dcim/forms/filtersets.py:1156 dcim/forms/filtersets.py:1178 -#: dcim/forms/filtersets.py:1200 dcim/forms/filtersets.py:1217 -#: dcim/forms/filtersets.py:1251 dcim/forms/filtersets.py:1346 -#: dcim/forms/filtersets.py:1367 dcim/forms/model_forms.py:643 +#: dcim/forms/filtersets.py:287 dcim/forms/filtersets.py:874 +#: dcim/forms/filtersets.py:973 dcim/forms/filtersets.py:1094 +#: dcim/forms/filtersets.py:1164 dcim/forms/filtersets.py:1186 +#: dcim/forms/filtersets.py:1208 dcim/forms/filtersets.py:1225 +#: dcim/forms/filtersets.py:1259 dcim/forms/filtersets.py:1354 +#: dcim/forms/filtersets.py:1375 dcim/forms/model_forms.py:643 #: dcim/forms/model_forms.py:649 dcim/forms/object_import.py:84 #: dcim/forms/object_import.py:113 dcim/forms/object_import.py:145 #: dcim/tables/devices.py:183 dcim/tables/devices.py:815 #: dcim/tables/power.py:77 extras/forms/bulk_import.py:39 #: extras/tables/tables.py:283 extras/tables/tables.py:355 -#: extras/tables/tables.py:473 netbox/tables/tables.py:237 +#: extras/tables/tables.py:473 netbox/tables/tables.py:239 #: 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 @@ -470,13 +480,13 @@ msgstr "Renk" msgid "Type" msgstr "Tür" -#: circuits/forms/bulk_edit.py:124 circuits/forms/bulk_import.py:81 -#: circuits/forms/filtersets.py:136 circuits/forms/model_forms.py:96 +#: circuits/forms/bulk_edit.py:126 circuits/forms/bulk_import.py:82 +#: circuits/forms/filtersets.py:137 circuits/forms/model_forms.py:96 msgid "Provider account" msgstr "Sağlayıcı hesabı" -#: circuits/forms/bulk_edit.py:132 circuits/forms/bulk_import.py:94 -#: circuits/forms/filtersets.py:147 core/forms/filtersets.py:35 +#: circuits/forms/bulk_edit.py:134 circuits/forms/bulk_import.py:95 +#: circuits/forms/filtersets.py:148 core/forms/filtersets.py:35 #: core/forms/filtersets.py:76 core/tables/data.py:23 core/tables/jobs.py:26 #: core/tables/tasks.py:88 dcim/forms/bulk_edit.py:105 #: dcim/forms/bulk_edit.py:180 dcim/forms/bulk_edit.py:261 @@ -488,9 +498,9 @@ msgstr "Sağlayıcı hesabı" #: dcim/forms/bulk_import.py:1155 dcim/forms/bulk_import.py:1322 #: dcim/forms/bulk_import.py:1386 dcim/forms/filtersets.py:171 #: dcim/forms/filtersets.py:230 dcim/forms/filtersets.py:282 -#: dcim/forms/filtersets.py:727 dcim/forms/filtersets.py:835 -#: dcim/forms/filtersets.py:869 dcim/forms/filtersets.py:970 -#: dcim/forms/filtersets.py:1081 dcim/tables/devices.py:145 +#: dcim/forms/filtersets.py:728 dcim/forms/filtersets.py:843 +#: dcim/forms/filtersets.py:877 dcim/forms/filtersets.py:978 +#: dcim/forms/filtersets.py:1089 dcim/tables/devices.py:145 #: dcim/tables/devices.py:818 dcim/tables/devices.py:1046 #: dcim/tables/modules.py:69 dcim/tables/power.py:74 dcim/tables/racks.py:66 #: dcim/tables/sites.py:82 dcim/tables/sites.py:133 @@ -498,9 +508,9 @@ msgstr "Sağlayıcı hesabı" #: ipam/forms/bulk_edit.py:338 ipam/forms/bulk_edit.py:544 #: ipam/forms/bulk_import.py:191 ipam/forms/bulk_import.py:256 #: ipam/forms/bulk_import.py:292 ipam/forms/bulk_import.py:458 -#: ipam/forms/filtersets.py:209 ipam/forms/filtersets.py:274 -#: ipam/forms/filtersets.py:348 ipam/forms/filtersets.py:501 -#: ipam/forms/model_forms.py:457 ipam/tables/ip.py:236 ipam/tables/ip.py:309 +#: ipam/forms/filtersets.py:210 ipam/forms/filtersets.py:281 +#: ipam/forms/filtersets.py:355 ipam/forms/filtersets.py:508 +#: ipam/forms/model_forms.py:466 ipam/tables/ip.py:236 ipam/tables/ip.py:309 #: ipam/tables/ip.py:359 ipam/tables/ip.py:421 ipam/tables/ip.py:448 #: ipam/tables/vlans.py:122 ipam/tables/vlans.py:227 #: templates/circuits/circuit.html:34 templates/core/datasource.html:46 @@ -531,8 +541,8 @@ msgstr "Sağlayıcı hesabı" msgid "Status" msgstr "Durum" -#: circuits/forms/bulk_edit.py:138 circuits/forms/bulk_import.py:99 -#: circuits/forms/filtersets.py:116 dcim/forms/bulk_edit.py:121 +#: circuits/forms/bulk_edit.py:140 circuits/forms/bulk_import.py:100 +#: circuits/forms/filtersets.py:117 dcim/forms/bulk_edit.py:121 #: dcim/forms/bulk_edit.py:186 dcim/forms/bulk_edit.py:256 #: dcim/forms/bulk_edit.py:368 dcim/forms/bulk_edit.py:588 #: dcim/forms/bulk_edit.py:692 dcim/forms/bulk_edit.py:1599 @@ -542,9 +552,9 @@ msgstr "Durum" #: dcim/forms/bulk_import.py:1379 dcim/forms/filtersets.py:166 #: dcim/forms/filtersets.py:198 dcim/forms/filtersets.py:249 #: dcim/forms/filtersets.py:334 dcim/forms/filtersets.py:355 -#: dcim/forms/filtersets.py:652 dcim/forms/filtersets.py:827 -#: dcim/forms/filtersets.py:889 dcim/forms/filtersets.py:919 -#: dcim/forms/filtersets.py:1041 dcim/tables/power.py:88 +#: dcim/forms/filtersets.py:652 dcim/forms/filtersets.py:835 +#: dcim/forms/filtersets.py:897 dcim/forms/filtersets.py:927 +#: dcim/forms/filtersets.py:1049 dcim/tables/power.py:88 #: extras/filtersets.py:564 extras/forms/filtersets.py:332 #: extras/forms/filtersets.py:405 ipam/forms/bulk_edit.py:41 #: ipam/forms/bulk_edit.py:66 ipam/forms/bulk_edit.py:110 @@ -558,8 +568,8 @@ msgstr "Durum" #: ipam/forms/bulk_import.py:451 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:173 ipam/forms/filtersets.py:260 -#: ipam/forms/filtersets.py:303 ipam/forms/filtersets.py:469 +#: ipam/forms/filtersets.py:174 ipam/forms/filtersets.py:267 +#: ipam/forms/filtersets.py:310 ipam/forms/filtersets.py:476 #: ipam/tables/ip.py:451 ipam/tables/vlans.py:224 #: templates/circuits/circuit.html:38 templates/dcim/cable.html:23 #: templates/dcim/device.html:78 templates/dcim/location.html:49 @@ -590,23 +600,23 @@ msgstr "Durum" msgid "Tenant" msgstr "Kiracı" -#: circuits/forms/bulk_edit.py:143 circuits/forms/filtersets.py:171 +#: circuits/forms/bulk_edit.py:145 circuits/forms/filtersets.py:172 msgid "Install date" msgstr "Yükleme tarihi" -#: circuits/forms/bulk_edit.py:148 circuits/forms/filtersets.py:176 +#: circuits/forms/bulk_edit.py:150 circuits/forms/filtersets.py:177 msgid "Termination date" msgstr "Fesih tarihi" -#: circuits/forms/bulk_edit.py:154 circuits/forms/filtersets.py:183 +#: circuits/forms/bulk_edit.py:156 circuits/forms/filtersets.py:184 msgid "Commit rate (Kbps)" msgstr "Taahhüt oranı (Kbps)" -#: circuits/forms/bulk_edit.py:169 circuits/forms/model_forms.py:110 +#: circuits/forms/bulk_edit.py:171 circuits/forms/model_forms.py:110 msgid "Service Parameters" msgstr "Servis Parametreleri" -#: circuits/forms/bulk_edit.py:170 circuits/forms/model_forms.py:111 +#: circuits/forms/bulk_edit.py:172 circuits/forms/model_forms.py:111 #: dcim/forms/model_forms.py:138 dcim/forms/model_forms.py:180 #: dcim/forms/model_forms.py:228 dcim/forms/model_forms.py:267 #: dcim/forms/model_forms.py:713 dcim/forms/model_forms.py:1636 @@ -625,26 +635,60 @@ msgstr "Servis Parametreleri" msgid "Tenancy" msgstr "Kiracılık" -#: circuits/forms/bulk_import.py:37 circuits/forms/bulk_import.py:52 -#: circuits/forms/bulk_import.py:78 +#: circuits/forms/bulk_edit.py:191 circuits/forms/bulk_edit.py:215 +#: circuits/forms/model_forms.py:153 circuits/tables/circuits.py:109 +#: templates/circuits/inc/circuit_termination_fields.html:62 +#: templates/circuits/providernetwork.html:17 +msgid "Provider Network" +msgstr "Sağlayıcı Ağı" + +#: circuits/forms/bulk_edit.py:197 +msgid "Port speed (Kbps)" +msgstr "Bağlantı noktası hızı (Kbps)" + +#: circuits/forms/bulk_edit.py:201 +msgid "Upstream speed (Kbps)" +msgstr "Yukarı akış hızı (Kbps)" + +#: circuits/forms/bulk_edit.py:204 dcim/forms/bulk_edit.py:849 +#: dcim/forms/bulk_edit.py:1208 dcim/forms/bulk_edit.py:1225 +#: dcim/forms/bulk_edit.py:1242 dcim/forms/bulk_edit.py:1260 +#: dcim/forms/bulk_edit.py:1348 dcim/forms/bulk_edit.py:1487 +#: dcim/forms/bulk_edit.py:1504 +msgid "Mark connected" +msgstr "Bağlı olarak işaretle" + +#: circuits/forms/bulk_edit.py:217 circuits/forms/model_forms.py:155 +#: templates/circuits/inc/circuit_termination_fields.html:54 +#: templates/dcim/frontport.html:121 templates/dcim/interface.html:193 +#: templates/dcim/rearport.html:111 +msgid "Circuit Termination" +msgstr "Devre Sonlandırma" + +#: circuits/forms/bulk_edit.py:219 circuits/forms/model_forms.py:157 +msgid "Termination Details" +msgstr "Fesih Ayrıntıları" + +#: circuits/forms/bulk_import.py:38 circuits/forms/bulk_import.py:53 +#: circuits/forms/bulk_import.py:79 msgid "Assigned provider" msgstr "Atanan sağlayıcı" -#: circuits/forms/bulk_import.py:69 dcim/forms/bulk_import.py:178 +#: circuits/forms/bulk_import.py:70 dcim/forms/bulk_import.py:178 #: dcim/forms/bulk_import.py:388 dcim/forms/bulk_import.py:1108 #: dcim/forms/bulk_import.py:1187 extras/forms/bulk_import.py:232 msgid "RGB color in hexadecimal. Example:" msgstr "Onaltılık değerde RGB rengi. Örnek:" -#: circuits/forms/bulk_import.py:84 +#: circuits/forms/bulk_import.py:85 msgid "Assigned provider account" msgstr "Atanan sağlayıcı hesabı" -#: circuits/forms/bulk_import.py:91 +#: circuits/forms/bulk_import.py:92 msgid "Type of circuit" msgstr "Devre tipi" -#: circuits/forms/bulk_import.py:96 dcim/forms/bulk_import.py:89 +#: circuits/forms/bulk_import.py:97 dcim/forms/bulk_import.py:89 #: dcim/forms/bulk_import.py:148 dcim/forms/bulk_import.py:204 #: dcim/forms/bulk_import.py:452 dcim/forms/bulk_import.py:606 #: dcim/forms/bulk_import.py:1324 ipam/forms/bulk_import.py:193 @@ -655,7 +699,7 @@ msgstr "Devre tipi" msgid "Operational status" msgstr "Operasyonel durum" -#: circuits/forms/bulk_import.py:103 dcim/forms/bulk_import.py:110 +#: circuits/forms/bulk_import.py:104 dcim/forms/bulk_import.py:110 #: dcim/forms/bulk_import.py:155 dcim/forms/bulk_import.py:286 #: dcim/forms/bulk_import.py:428 dcim/forms/bulk_import.py:1171 #: dcim/forms/bulk_import.py:1319 dcim/forms/bulk_import.py:1383 @@ -669,37 +713,46 @@ msgstr "Operasyonel durum" msgid "Assigned tenant" msgstr "Atanan kiracı" -#: circuits/forms/bulk_import.py:122 circuits/forms/filtersets.py:144 -#: circuits/forms/model_forms.py:142 +#: circuits/forms/bulk_import.py:122 +#: 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 +msgid "Termination" +msgstr "Fesih" + +#: circuits/forms/bulk_import.py:132 circuits/forms/filtersets.py:145 +#: circuits/forms/filtersets.py:225 circuits/forms/model_forms.py:142 msgid "Provider network" msgstr "Sağlayıcı ağı" -#: circuits/forms/filtersets.py:27 circuits/forms/filtersets.py:115 -#: dcim/forms/bulk_edit.py:248 dcim/forms/bulk_edit.py:346 -#: dcim/forms/bulk_edit.py:580 dcim/forms/bulk_edit.py:627 -#: dcim/forms/bulk_edit.py:780 dcim/forms/bulk_import.py:189 -#: dcim/forms/bulk_import.py:263 dcim/forms/bulk_import.py:491 -#: dcim/forms/bulk_import.py:1268 dcim/forms/bulk_import.py:1302 -#: dcim/forms/filtersets.py:93 dcim/forms/filtersets.py:246 -#: dcim/forms/filtersets.py:279 dcim/forms/filtersets.py:331 -#: dcim/forms/filtersets.py:382 dcim/forms/filtersets.py:649 -#: dcim/forms/filtersets.py:690 dcim/forms/filtersets.py:888 -#: dcim/forms/filtersets.py:917 dcim/forms/filtersets.py:937 -#: dcim/forms/filtersets.py:1001 dcim/forms/filtersets.py:1031 -#: dcim/forms/filtersets.py:1040 dcim/forms/filtersets.py:1151 -#: dcim/forms/filtersets.py:1173 dcim/forms/filtersets.py:1195 -#: dcim/forms/filtersets.py:1212 dcim/forms/filtersets.py:1232 -#: dcim/forms/filtersets.py:1340 dcim/forms/filtersets.py:1362 -#: dcim/forms/filtersets.py:1383 dcim/forms/filtersets.py:1398 -#: dcim/forms/filtersets.py:1412 dcim/forms/model_forms.py:179 -#: dcim/forms/model_forms.py:211 dcim/forms/model_forms.py:411 -#: dcim/forms/model_forms.py:673 dcim/tables/devices.py:162 -#: dcim/tables/power.py:30 dcim/tables/racks.py:58 dcim/tables/racks.py:143 -#: extras/filtersets.py:488 extras/forms/filtersets.py:329 -#: ipam/forms/bulk_edit.py:457 ipam/forms/filtersets.py:172 -#: ipam/forms/filtersets.py:407 ipam/forms/filtersets.py:430 -#: ipam/forms/filtersets.py:467 ipam/forms/model_forms.py:590 -#: templates/dcim/device.html:25 templates/dcim/device_edit.html:30 +#: circuits/forms/filtersets.py:28 circuits/forms/filtersets.py:116 +#: circuits/forms/filtersets.py:198 dcim/forms/bulk_edit.py:248 +#: dcim/forms/bulk_edit.py:346 dcim/forms/bulk_edit.py:580 +#: dcim/forms/bulk_edit.py:627 dcim/forms/bulk_edit.py:780 +#: dcim/forms/bulk_import.py:189 dcim/forms/bulk_import.py:263 +#: dcim/forms/bulk_import.py:491 dcim/forms/bulk_import.py:1268 +#: dcim/forms/bulk_import.py:1302 dcim/forms/filtersets.py:93 +#: dcim/forms/filtersets.py:246 dcim/forms/filtersets.py:279 +#: dcim/forms/filtersets.py:331 dcim/forms/filtersets.py:382 +#: dcim/forms/filtersets.py:649 dcim/forms/filtersets.py:691 +#: dcim/forms/filtersets.py:896 dcim/forms/filtersets.py:925 +#: dcim/forms/filtersets.py:945 dcim/forms/filtersets.py:1009 +#: dcim/forms/filtersets.py:1039 dcim/forms/filtersets.py:1048 +#: dcim/forms/filtersets.py:1159 dcim/forms/filtersets.py:1181 +#: dcim/forms/filtersets.py:1203 dcim/forms/filtersets.py:1220 +#: dcim/forms/filtersets.py:1240 dcim/forms/filtersets.py:1348 +#: dcim/forms/filtersets.py:1370 dcim/forms/filtersets.py:1391 +#: dcim/forms/filtersets.py:1406 dcim/forms/filtersets.py:1420 +#: dcim/forms/model_forms.py:179 dcim/forms/model_forms.py:211 +#: dcim/forms/model_forms.py:411 dcim/forms/model_forms.py:673 +#: dcim/tables/devices.py:162 dcim/tables/power.py:30 dcim/tables/racks.py:58 +#: dcim/tables/racks.py:143 extras/filtersets.py:488 +#: extras/forms/filtersets.py:329 ipam/forms/bulk_edit.py:457 +#: ipam/forms/filtersets.py:173 ipam/forms/filtersets.py:414 +#: ipam/forms/filtersets.py:437 ipam/forms/filtersets.py:474 +#: ipam/forms/model_forms.py:599 templates/dcim/device.html:25 +#: 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:26 templates/dcim/rackreservation.html:32 @@ -709,12 +762,12 @@ msgstr "Sağlayıcı ağı" msgid "Location" msgstr "Konum" -#: circuits/forms/filtersets.py:29 circuits/forms/filtersets.py:117 +#: circuits/forms/filtersets.py:30 circuits/forms/filtersets.py:118 #: dcim/forms/filtersets.py:137 dcim/forms/filtersets.py:151 #: dcim/forms/filtersets.py:167 dcim/forms/filtersets.py:199 #: dcim/forms/filtersets.py:250 dcim/forms/filtersets.py:335 #: dcim/forms/filtersets.py:406 dcim/forms/filtersets.py:653 -#: dcim/forms/filtersets.py:1002 netbox/navigation/menu.py:44 +#: dcim/forms/filtersets.py:1010 netbox/navigation/menu.py:44 #: netbox/navigation/menu.py:46 tenancy/forms/filtersets.py:42 #: tenancy/tables/columns.py:70 tenancy/tables/contacts.py:25 #: tenancy/views.py:19 virtualization/forms/filtersets.py:37 @@ -723,22 +776,22 @@ msgstr "Konum" msgid "Contacts" msgstr "İletişim" -#: circuits/forms/filtersets.py:34 circuits/forms/filtersets.py:154 +#: circuits/forms/filtersets.py:35 circuits/forms/filtersets.py:155 #: dcim/forms/bulk_edit.py:111 dcim/forms/bulk_edit.py:223 #: dcim/forms/bulk_edit.py:755 dcim/forms/bulk_import.py:92 #: dcim/forms/filtersets.py:71 dcim/forms/filtersets.py:178 #: dcim/forms/filtersets.py:204 dcim/forms/filtersets.py:257 -#: dcim/forms/filtersets.py:360 dcim/forms/filtersets.py:667 -#: dcim/forms/filtersets.py:894 dcim/forms/filtersets.py:924 -#: dcim/forms/filtersets.py:1008 dcim/forms/filtersets.py:1047 -#: dcim/forms/filtersets.py:1460 dcim/forms/filtersets.py:1484 -#: dcim/forms/filtersets.py:1508 dcim/forms/model_forms.py:111 +#: dcim/forms/filtersets.py:360 dcim/forms/filtersets.py:668 +#: dcim/forms/filtersets.py:902 dcim/forms/filtersets.py:932 +#: dcim/forms/filtersets.py:1016 dcim/forms/filtersets.py:1055 +#: dcim/forms/filtersets.py:1468 dcim/forms/filtersets.py:1492 +#: dcim/forms/filtersets.py:1516 dcim/forms/model_forms.py:111 #: dcim/forms/object_create.py:375 dcim/tables/devices.py:148 #: dcim/tables/sites.py:85 extras/filtersets.py:455 #: ipam/forms/bulk_edit.py:206 ipam/forms/bulk_edit.py:438 -#: ipam/forms/bulk_edit.py:512 ipam/forms/filtersets.py:216 -#: ipam/forms/filtersets.py:415 ipam/forms/filtersets.py:475 -#: ipam/forms/model_forms.py:562 templates/dcim/device.html:17 +#: ipam/forms/bulk_edit.py:512 ipam/forms/filtersets.py:217 +#: ipam/forms/filtersets.py:422 ipam/forms/filtersets.py:482 +#: ipam/forms/model_forms.py:571 templates/dcim/device.html:17 #: templates/dcim/rack.html:16 templates/dcim/rackreservation.html:22 #: templates/dcim/region.html:26 templates/dcim/site.html:30 #: templates/ipam/prefix.html:49 templates/ipam/vlan.html:16 @@ -748,42 +801,42 @@ msgstr "İletişim" msgid "Region" msgstr "Bölge" -#: circuits/forms/filtersets.py:39 circuits/forms/filtersets.py:159 +#: circuits/forms/filtersets.py:40 circuits/forms/filtersets.py:160 #: dcim/forms/bulk_edit.py:231 dcim/forms/bulk_edit.py:763 #: dcim/forms/filtersets.py:76 dcim/forms/filtersets.py:183 #: dcim/forms/filtersets.py:209 dcim/forms/filtersets.py:270 -#: dcim/forms/filtersets.py:365 dcim/forms/filtersets.py:672 -#: dcim/forms/filtersets.py:899 dcim/forms/filtersets.py:1013 -#: dcim/forms/filtersets.py:1052 dcim/forms/object_create.py:383 +#: dcim/forms/filtersets.py:365 dcim/forms/filtersets.py:673 +#: dcim/forms/filtersets.py:907 dcim/forms/filtersets.py:1021 +#: dcim/forms/filtersets.py:1060 dcim/forms/object_create.py:383 #: extras/filtersets.py:472 ipam/forms/bulk_edit.py:211 #: ipam/forms/bulk_edit.py:445 ipam/forms/bulk_edit.py:517 -#: ipam/forms/filtersets.py:221 ipam/forms/filtersets.py:420 -#: ipam/forms/filtersets.py:480 ipam/forms/model_forms.py:575 +#: ipam/forms/filtersets.py:222 ipam/forms/filtersets.py:427 +#: ipam/forms/filtersets.py:487 ipam/forms/model_forms.py:584 #: virtualization/forms/bulk_edit.py:86 virtualization/forms/filtersets.py:69 #: virtualization/forms/filtersets.py:138 #: virtualization/forms/model_forms.py:98 msgid "Site group" msgstr "Site grubu" -#: circuits/forms/filtersets.py:62 circuits/forms/filtersets.py:80 -#: circuits/forms/filtersets.py:99 circuits/forms/filtersets.py:114 +#: circuits/forms/filtersets.py:63 circuits/forms/filtersets.py:81 +#: circuits/forms/filtersets.py:100 circuits/forms/filtersets.py:115 #: core/forms/filtersets.py:64 dcim/forms/bulk_edit.py:726 #: dcim/forms/filtersets.py:165 dcim/forms/filtersets.py:197 -#: dcim/forms/filtersets.py:826 dcim/forms/filtersets.py:918 -#: dcim/forms/filtersets.py:1042 dcim/forms/filtersets.py:1150 -#: dcim/forms/filtersets.py:1172 dcim/forms/filtersets.py:1194 -#: dcim/forms/filtersets.py:1211 dcim/forms/filtersets.py:1228 -#: dcim/forms/filtersets.py:1339 dcim/forms/filtersets.py:1361 -#: dcim/forms/filtersets.py:1382 dcim/forms/filtersets.py:1397 -#: dcim/forms/filtersets.py:1410 extras/forms/filtersets.py:43 +#: dcim/forms/filtersets.py:834 dcim/forms/filtersets.py:926 +#: dcim/forms/filtersets.py:1050 dcim/forms/filtersets.py:1158 +#: dcim/forms/filtersets.py:1180 dcim/forms/filtersets.py:1202 +#: dcim/forms/filtersets.py:1219 dcim/forms/filtersets.py:1236 +#: dcim/forms/filtersets.py:1347 dcim/forms/filtersets.py:1369 +#: dcim/forms/filtersets.py:1390 dcim/forms/filtersets.py:1405 +#: dcim/forms/filtersets.py:1418 extras/forms/filtersets.py:43 #: extras/forms/filtersets.py:112 extras/forms/filtersets.py:143 #: extras/forms/filtersets.py:183 extras/forms/filtersets.py:199 #: extras/forms/filtersets.py:230 extras/forms/filtersets.py:254 #: extras/forms/filtersets.py:450 extras/forms/filtersets.py:488 -#: ipam/forms/filtersets.py:99 ipam/forms/filtersets.py:259 -#: ipam/forms/filtersets.py:300 ipam/forms/filtersets.py:375 -#: ipam/forms/filtersets.py:468 ipam/forms/filtersets.py:527 -#: ipam/forms/filtersets.py:545 netbox/tables/tables.py:253 +#: ipam/forms/filtersets.py:99 ipam/forms/filtersets.py:266 +#: ipam/forms/filtersets.py:307 ipam/forms/filtersets.py:382 +#: ipam/forms/filtersets.py:475 ipam/forms/filtersets.py:534 +#: ipam/forms/filtersets.py:552 netbox/tables/tables.py:255 #: virtualization/forms/filtersets.py:45 #: virtualization/forms/filtersets.py:103 #: virtualization/forms/filtersets.py:194 @@ -792,28 +845,15 @@ msgstr "Site grubu" msgid "Attributes" msgstr "Öznitellikler" -#: circuits/forms/filtersets.py:70 circuits/tables/circuits.py:60 +#: circuits/forms/filtersets.py:71 circuits/tables/circuits.py:61 #: circuits/tables/providers.py:66 templates/circuits/circuit.html:22 #: templates/circuits/provideraccount.html:24 msgid "Account" msgstr "Hesap" -#: circuits/forms/model_forms.py:153 -#: templates/circuits/inc/circuit_termination.html:88 -#: templates/circuits/providernetwork.html:17 -msgid "Provider Network" -msgstr "Sağlayıcı Ağı" - -#: circuits/forms/model_forms.py:155 -#: templates/circuits/inc/circuit_termination.html:80 -#: templates/dcim/frontport.html:121 templates/dcim/interface.html:193 -#: templates/dcim/rearport.html:111 -msgid "Circuit Termination" -msgstr "Devre Sonlandırma" - -#: circuits/forms/model_forms.py:157 -msgid "Termination Details" -msgstr "Fesih Ayrıntıları" +#: circuits/forms/filtersets.py:215 +msgid "Term Side" +msgstr "Dönem Tarafı" #: circuits/models/circuits.py:25 dcim/models/cables.py:67 #: dcim/models/device_component_templates.py:491 @@ -844,8 +884,8 @@ msgstr "Benzersiz devre ID" #: core/models/jobs.py:85 dcim/models/cables.py:49 dcim/models/devices.py:643 #: dcim/models/devices.py:1155 dcim/models/devices.py:1364 #: dcim/models/power.py:96 dcim/models/racks.py:98 dcim/models/sites.py:154 -#: dcim/models/sites.py:266 ipam/models/ip.py:252 ipam/models/ip.py:521 -#: ipam/models/ip.py:729 ipam/models/vlans.py:175 +#: dcim/models/sites.py:266 ipam/models/ip.py:253 ipam/models/ip.py:522 +#: ipam/models/ip.py:730 ipam/models/vlans.py:175 #: virtualization/models/clusters.py:74 #: virtualization/models/virtualmachines.py:84 vpn/models/tunnels.py:40 #: wireless/models.py:94 wireless/models.py:158 @@ -1016,15 +1056,15 @@ msgstr "sağlayıcı ağı" msgid "provider networks" msgstr "sağlayıcı ağları" -#: circuits/tables/circuits.py:29 circuits/tables/providers.py:18 +#: circuits/tables/circuits.py:30 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:13 #: core/tables/tasks.py:11 core/tables/tasks.py:115 #: dcim/forms/filtersets.py:61 dcim/forms/object_create.py:43 #: dcim/tables/devices.py:60 dcim/tables/devices.py:97 #: dcim/tables/devices.py:139 dcim/tables/devices.py:294 -#: dcim/tables/devices.py:376 dcim/tables/devices.py:420 -#: dcim/tables/devices.py:472 dcim/tables/devices.py:524 +#: dcim/tables/devices.py:380 dcim/tables/devices.py:424 +#: dcim/tables/devices.py:476 dcim/tables/devices.py:528 #: dcim/tables/devices.py:644 dcim/tables/devices.py:726 #: dcim/tables/devices.py:776 dcim/tables/devices.py:842 #: dcim/tables/devices.py:957 dcim/tables/devices.py:977 @@ -1038,7 +1078,7 @@ msgstr "sağlayıcı ağları" #: extras/tables/tables.py:209 extras/tables/tables.py:256 #: extras/tables/tables.py:279 extras/tables/tables.py:329 #: extras/tables/tables.py:381 extras/tables/tables.py:404 -#: ipam/forms/bulk_edit.py:391 ipam/forms/filtersets.py:379 +#: ipam/forms/bulk_edit.py:391 ipam/forms/filtersets.py:386 #: ipam/tables/asn.py:16 ipam/tables/ip.py:85 ipam/tables/ip.py:159 #: ipam/tables/services.py:15 ipam/tables/services.py:40 #: ipam/tables/vlans.py:64 ipam/tables/vlans.py:110 ipam/tables/vrfs.py:26 @@ -1104,7 +1144,7 @@ msgstr "sağlayıcı ağları" msgid "Name" msgstr "İsim" -#: circuits/tables/circuits.py:38 circuits/tables/providers.py:45 +#: circuits/tables/circuits.py:39 circuits/tables/providers.py:45 #: circuits/tables/providers.py:79 netbox/navigation/menu.py:253 #: netbox/navigation/menu.py:257 netbox/navigation/menu.py:259 #: templates/circuits/provider.html:57 @@ -1113,23 +1153,23 @@ msgstr "İsim" msgid "Circuits" msgstr "Devreler" -#: circuits/tables/circuits.py:52 templates/circuits/circuit.html:26 +#: circuits/tables/circuits.py:53 templates/circuits/circuit.html:26 msgid "Circuit ID" msgstr "Devre ID" -#: circuits/tables/circuits.py:65 wireless/forms/model_forms.py:160 +#: circuits/tables/circuits.py:66 wireless/forms/model_forms.py:160 msgid "Side A" msgstr "A Tarafı" -#: circuits/tables/circuits.py:69 +#: circuits/tables/circuits.py:70 msgid "Side Z" msgstr "Z Tarafı" -#: circuits/tables/circuits.py:72 templates/circuits/circuit.html:55 +#: circuits/tables/circuits.py:73 templates/circuits/circuit.html:55 msgid "Commit Rate" msgstr "Taahhüt Oranı" -#: circuits/tables/circuits.py:75 circuits/tables/providers.py:48 +#: circuits/tables/circuits.py:76 circuits/tables/providers.py:48 #: circuits/tables/providers.py:82 circuits/tables/providers.py:107 #: dcim/tables/devices.py:1019 dcim/tables/devicetypes.py:92 #: dcim/tables/modules.py:29 dcim/tables/modules.py:72 dcim/tables/power.py:39 @@ -1185,12 +1225,12 @@ msgstr "Tamamlandı" #: core/choices.py:22 core/choices.py:59 core/constants.py:20 #: core/tables/tasks.py:34 dcim/choices.py:176 dcim/choices.py:222 -#: dcim/choices.py:1506 extras/choices.py:226 virtualization/choices.py:47 +#: dcim/choices.py:1534 extras/choices.py:226 virtualization/choices.py:47 msgid "Failed" msgstr "Başarısız" -#: core/choices.py:35 netbox/navigation/menu.py:319 -#: netbox/navigation/menu.py:323 templates/extras/script/base.html:14 +#: core/choices.py:35 netbox/navigation/menu.py:320 +#: netbox/navigation/menu.py:324 templates/extras/script/base.html:14 #: templates/extras/script_list.html:7 templates/extras/script_list.html:12 #: templates/extras/script_result.html:17 msgid "Scripts" @@ -1285,8 +1325,8 @@ msgstr "Veri kaynağı (isim)" #: core/forms/bulk_edit.py:25 core/forms/filtersets.py:40 #: core/tables/data.py:26 dcim/forms/bulk_edit.py:1020 -#: dcim/forms/bulk_edit.py:1293 dcim/forms/filtersets.py:1268 -#: dcim/tables/devices.py:549 dcim/tables/devicetypes.py:221 +#: dcim/forms/bulk_edit.py:1293 dcim/forms/filtersets.py:1276 +#: dcim/tables/devices.py:553 dcim/tables/devicetypes.py:221 #: extras/forms/bulk_edit.py:98 extras/forms/bulk_edit.py:162 #: extras/forms/bulk_edit.py:221 extras/forms/filtersets.py:120 #: extras/forms/filtersets.py:207 extras/forms/filtersets.py:268 @@ -1424,10 +1464,10 @@ msgstr "" msgid "Rack Elevations" msgstr "Raf Yükseltmeleri" -#: core/forms/model_forms.py:157 dcim/choices.py:1417 +#: core/forms/model_forms.py:157 dcim/choices.py:1445 #: dcim/forms/bulk_edit.py:867 dcim/forms/bulk_edit.py:1250 #: dcim/forms/bulk_edit.py:1268 dcim/tables/racks.py:89 -#: netbox/navigation/menu.py:275 netbox/navigation/menu.py:279 +#: netbox/navigation/menu.py:276 netbox/navigation/menu.py:280 msgid "Power" msgstr "Güç" @@ -1460,7 +1500,7 @@ msgstr "Doğrulama" msgid "User Preferences" msgstr "Kullanıcı Tercihleri" -#: core/forms/model_forms.py:167 dcim/forms/filtersets.py:660 +#: core/forms/model_forms.py:167 dcim/forms/filtersets.py:661 #: templates/core/inc/config_data.html:127 users/forms/model_forms.py:65 msgid "Miscellaneous" msgstr "Çeşitli" @@ -1603,7 +1643,7 @@ msgstr "yol" msgid "File path relative to the data source's root" msgstr "Veri kaynağının köküne göre dosya yolu" -#: core/models/data.py:303 ipam/models/ip.py:502 +#: core/models/data.py:303 ipam/models/ip.py:503 msgid "size" msgstr "boyut" @@ -1721,7 +1761,7 @@ msgstr "Son Güncelleme" #: core/tables/jobs.py:10 core/tables/tasks.py:76 #: dcim/tables/devicetypes.py:161 extras/tables/tables.py:179 -#: extras/tables/tables.py:350 netbox/tables/tables.py:187 +#: extras/tables/tables.py:350 netbox/tables/tables.py:188 #: templates/dcim/virtualchassis_edit.html:52 utilities/forms/forms.py:73 #: wireless/tables/wirelesslink.py:16 msgid "ID" @@ -1730,7 +1770,7 @@ msgstr "KİMLİK" #: core/tables/jobs.py:21 extras/choices.py:41 extras/tables/tables.py:241 #: extras/tables/tables.py:287 extras/tables/tables.py:360 #: extras/tables/tables.py:478 extras/tables/tables.py:509 -#: extras/tables/tables.py:574 netbox/tables/tables.py:241 +#: extras/tables/tables.py:574 netbox/tables/tables.py:243 #: templates/extras/eventrule.html:84 templates/extras/journalentry.html:18 #: templates/extras/objectchange.html:57 tenancy/tables/contacts.py:93 #: vpn/tables/l2vpn.py:64 @@ -1775,7 +1815,7 @@ msgstr "İşçiler" msgid "Host" msgstr "Ana bilgisayar" -#: core/tables/tasks.py:50 ipam/forms/filtersets.py:535 +#: core/tables/tasks.py:50 ipam/forms/filtersets.py:542 msgid "Port" msgstr "Liman" @@ -1842,7 +1882,7 @@ msgid "Staging" msgstr "Sahneleme" #: dcim/choices.py:23 dcim/choices.py:178 dcim/choices.py:223 -#: dcim/choices.py:1430 virtualization/choices.py:23 +#: dcim/choices.py:1458 virtualization/choices.py:23 #: virtualization/choices.py:48 msgid "Decommissioning" msgstr "Hizmetten çıkarma" @@ -1902,7 +1942,7 @@ msgstr "Kullanımdan kaldırıldı" msgid "Millimeters" msgstr "Milimetre" -#: dcim/choices.py:115 dcim/choices.py:1452 +#: dcim/choices.py:115 dcim/choices.py:1480 msgid "Inches" msgstr "İnç" @@ -1977,7 +2017,7 @@ msgstr "Sağdan sola" msgid "Side to rear" msgstr "Yandan arkaya" -#: dcim/choices.py:198 dcim/choices.py:1225 +#: dcim/choices.py:198 dcim/choices.py:1253 msgid "Passive" msgstr "Pasif" @@ -1985,56 +2025,56 @@ msgstr "Pasif" msgid "Mixed" msgstr "Karışık" -#: dcim/choices.py:443 dcim/choices.py:680 +#: dcim/choices.py:447 dcim/choices.py:693 msgid "NEMA (Non-locking)" msgstr "NEMA (Kilitsiz)" -#: dcim/choices.py:465 dcim/choices.py:702 +#: dcim/choices.py:469 dcim/choices.py:715 msgid "NEMA (Locking)" msgstr "NEMA (Kilitleme)" -#: dcim/choices.py:488 dcim/choices.py:725 +#: dcim/choices.py:492 dcim/choices.py:738 msgid "California Style" msgstr "Kaliforniya Tarzı" -#: dcim/choices.py:496 +#: dcim/choices.py:500 msgid "International/ITA" msgstr "Uluslararası/ITA" -#: dcim/choices.py:526 dcim/choices.py:755 +#: dcim/choices.py:535 dcim/choices.py:773 msgid "Proprietary" msgstr "Tescilli" -#: dcim/choices.py:534 dcim/choices.py:764 dcim/choices.py:1141 -#: dcim/choices.py:1143 dcim/choices.py:1348 dcim/choices.py:1350 +#: dcim/choices.py:543 dcim/choices.py:782 dcim/choices.py:1169 +#: dcim/choices.py:1171 dcim/choices.py:1376 dcim/choices.py:1378 #: netbox/navigation/menu.py:187 msgid "Other" msgstr "Diğer" -#: dcim/choices.py:733 +#: dcim/choices.py:746 msgid "ITA/International" msgstr "ITA/Uluslararası" -#: dcim/choices.py:794 +#: dcim/choices.py:812 msgid "Physical" msgstr "Fiziksel" -#: dcim/choices.py:795 dcim/choices.py:954 +#: dcim/choices.py:813 dcim/choices.py:977 msgid "Virtual" msgstr "Sanal" -#: dcim/choices.py:796 dcim/choices.py:1026 dcim/forms/bulk_edit.py:1408 -#: dcim/forms/filtersets.py:1231 dcim/forms/model_forms.py:933 +#: dcim/choices.py:814 dcim/choices.py:1049 dcim/forms/bulk_edit.py:1408 +#: dcim/forms/filtersets.py:1239 dcim/forms/model_forms.py:933 #: dcim/forms/model_forms.py:1341 netbox/navigation/menu.py:127 #: netbox/navigation/menu.py:131 templates/dcim/interface.html:210 msgid "Wireless" msgstr "Kablosuz" -#: dcim/choices.py:952 +#: dcim/choices.py:975 msgid "Virtual interfaces" msgstr "Sanal arayüzler" -#: dcim/choices.py:955 dcim/forms/bulk_edit.py:1303 +#: dcim/choices.py:978 dcim/forms/bulk_edit.py:1303 #: dcim/forms/bulk_import.py:785 dcim/forms/model_forms.py:919 #: dcim/tables/devices.py:656 templates/dcim/interface.html:106 #: templates/virtualization/vminterface.html:43 @@ -2044,152 +2084,152 @@ msgstr "Sanal arayüzler" msgid "Bridge" msgstr "Köprü" -#: dcim/choices.py:956 +#: dcim/choices.py:979 msgid "Link Aggregation Group (LAG)" msgstr "Bağlantı Toplama Grubu (LAG)" -#: dcim/choices.py:960 +#: dcim/choices.py:983 msgid "Ethernet (fixed)" msgstr "Ethernet (sabit)" -#: dcim/choices.py:974 +#: dcim/choices.py:997 msgid "Ethernet (modular)" msgstr "Ethernet (modüler)" -#: dcim/choices.py:1010 +#: dcim/choices.py:1033 msgid "Ethernet (backplane)" msgstr "Ethernet (arka panel)" -#: dcim/choices.py:1040 +#: dcim/choices.py:1063 msgid "Cellular" msgstr "Hücresel" -#: dcim/choices.py:1090 dcim/forms/filtersets.py:303 -#: dcim/forms/filtersets.py:737 dcim/forms/filtersets.py:874 -#: dcim/forms/filtersets.py:1426 templates/dcim/inventoryitem.html:52 +#: dcim/choices.py:1115 dcim/forms/filtersets.py:303 +#: dcim/forms/filtersets.py:738 dcim/forms/filtersets.py:882 +#: dcim/forms/filtersets.py:1434 templates/dcim/inventoryitem.html:52 #: templates/dcim/virtualchassis_edit.html:54 msgid "Serial" msgstr "Seri" -#: dcim/choices.py:1105 +#: dcim/choices.py:1130 msgid "Coaxial" msgstr "Koaksiyel" -#: dcim/choices.py:1122 +#: dcim/choices.py:1150 msgid "Stacking" msgstr "İstifleme" -#: dcim/choices.py:1172 +#: dcim/choices.py:1200 msgid "Half" msgstr "Yarım" -#: dcim/choices.py:1173 +#: dcim/choices.py:1201 msgid "Full" msgstr "Dolu" -#: dcim/choices.py:1174 netbox/preferences.py:31 wireless/choices.py:480 +#: dcim/choices.py:1202 netbox/preferences.py:31 wireless/choices.py:480 msgid "Auto" msgstr "Oto" -#: dcim/choices.py:1185 +#: dcim/choices.py:1213 msgid "Access" msgstr "Erişim" -#: dcim/choices.py:1186 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 +#: dcim/choices.py:1214 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 #: templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "Etiketlenmiş" -#: dcim/choices.py:1187 +#: dcim/choices.py:1215 msgid "Tagged (All)" msgstr "Etiketlenmiş (Tümü)" -#: dcim/choices.py:1216 +#: dcim/choices.py:1244 msgid "IEEE Standard" msgstr "IEEE Standardı" -#: dcim/choices.py:1227 +#: dcim/choices.py:1255 msgid "Passive 24V (2-pair)" msgstr "Pasif 24V (2 çift)" -#: dcim/choices.py:1228 +#: dcim/choices.py:1256 msgid "Passive 24V (4-pair)" msgstr "Pasif 24V (4 çift)" -#: dcim/choices.py:1229 +#: dcim/choices.py:1257 msgid "Passive 48V (2-pair)" msgstr "Pasif 48V (2 çift)" -#: dcim/choices.py:1230 +#: dcim/choices.py:1258 msgid "Passive 48V (4-pair)" msgstr "Pasif 48V (4 çift)" -#: dcim/choices.py:1292 dcim/choices.py:1388 +#: dcim/choices.py:1320 dcim/choices.py:1416 msgid "Copper" msgstr "Bakır" -#: dcim/choices.py:1315 +#: dcim/choices.py:1343 msgid "Fiber Optic" msgstr "Fiber Optik" -#: dcim/choices.py:1404 +#: dcim/choices.py:1432 msgid "Fiber" msgstr "Elyaf" -#: dcim/choices.py:1428 dcim/forms/filtersets.py:1138 +#: dcim/choices.py:1456 dcim/forms/filtersets.py:1146 msgid "Connected" msgstr "Bağlı" -#: dcim/choices.py:1447 +#: dcim/choices.py:1475 msgid "Kilometers" msgstr "Kilometre" -#: dcim/choices.py:1448 templates/dcim/cable_trace.html:65 +#: dcim/choices.py:1476 templates/dcim/cable_trace.html:65 msgid "Meters" msgstr "Sayaçlar" -#: dcim/choices.py:1449 +#: dcim/choices.py:1477 msgid "Centimeters" msgstr "Santimetre" -#: dcim/choices.py:1450 +#: dcim/choices.py:1478 msgid "Miles" msgstr "Mil" -#: dcim/choices.py:1451 templates/dcim/cable_trace.html:66 +#: dcim/choices.py:1479 templates/dcim/cable_trace.html:66 msgid "Feet" msgstr "Ayaklar" -#: dcim/choices.py:1467 templates/dcim/device.html:319 +#: dcim/choices.py:1495 templates/dcim/device.html:319 #: templates/dcim/rack.html:152 msgid "Kilograms" msgstr "Kilogram" -#: dcim/choices.py:1468 +#: dcim/choices.py:1496 msgid "Grams" msgstr "Gramlar" -#: dcim/choices.py:1469 templates/dcim/rack.html:153 +#: dcim/choices.py:1497 templates/dcim/rack.html:153 msgid "Pounds" msgstr "Pound'lar" -#: dcim/choices.py:1470 +#: dcim/choices.py:1498 msgid "Ounces" msgstr "ons" -#: dcim/choices.py:1516 tenancy/choices.py:17 +#: dcim/choices.py:1544 tenancy/choices.py:17 msgid "Primary" msgstr "Birincil" -#: dcim/choices.py:1517 +#: dcim/choices.py:1545 msgid "Redundant" msgstr "Yedekli" -#: dcim/choices.py:1538 +#: dcim/choices.py:1566 msgid "Single phase" msgstr "Tek fazlı" -#: dcim/choices.py:1539 +#: dcim/choices.py:1567 msgid "Three-phase" msgstr "Üç fazlı" @@ -2240,30 +2280,30 @@ msgid "Parent location (slug)" msgstr "Ana konum (sümüklü böcek)" #: dcim/filtersets.py:257 dcim/filtersets.py:333 dcim/filtersets.py:432 -#: dcim/filtersets.py:1005 dcim/filtersets.py:1331 dcim/filtersets.py:2101 +#: dcim/filtersets.py:1005 dcim/filtersets.py:1341 dcim/filtersets.py:2111 msgid "Location (ID)" msgstr "Konum (ID)" #: dcim/filtersets.py:264 dcim/filtersets.py:340 dcim/filtersets.py:439 -#: dcim/filtersets.py:1337 extras/filtersets.py:494 +#: dcim/filtersets.py:1347 extras/filtersets.py:494 msgid "Location (slug)" msgstr "Konum (kısa ad)" #: dcim/filtersets.py:354 dcim/filtersets.py:840 dcim/filtersets.py:942 -#: dcim/filtersets.py:1769 ipam/filtersets.py:381 ipam/filtersets.py:493 +#: dcim/filtersets.py:1779 ipam/filtersets.py:381 ipam/filtersets.py:493 #: ipam/filtersets.py:989 virtualization/filtersets.py:210 msgid "Role (ID)" msgstr "Rol (ID)" #: dcim/filtersets.py:360 dcim/filtersets.py:846 dcim/filtersets.py:948 -#: dcim/filtersets.py:1775 extras/filtersets.py:510 ipam/filtersets.py:387 +#: dcim/filtersets.py:1785 extras/filtersets.py:510 ipam/filtersets.py:387 #: ipam/filtersets.py:499 ipam/filtersets.py:995 #: virtualization/filtersets.py:216 msgid "Role (slug)" msgstr "Rol (kısa ad)" -#: dcim/filtersets.py:389 dcim/filtersets.py:1010 dcim/filtersets.py:1342 -#: dcim/filtersets.py:2163 +#: dcim/filtersets.py:389 dcim/filtersets.py:1010 dcim/filtersets.py:1352 +#: dcim/filtersets.py:2173 msgid "Rack (ID)" msgstr "Raf (ID)" @@ -2278,14 +2318,14 @@ msgid "User (name)" msgstr "Kullanıcı (isim)" #: dcim/filtersets.py:481 dcim/filtersets.py:620 dcim/filtersets.py:830 -#: dcim/filtersets.py:881 dcim/filtersets.py:921 dcim/filtersets.py:1233 -#: dcim/filtersets.py:1759 +#: dcim/filtersets.py:881 dcim/filtersets.py:921 dcim/filtersets.py:1243 +#: dcim/filtersets.py:1769 msgid "Manufacturer (ID)" msgstr "Üretici (ID)" #: dcim/filtersets.py:487 dcim/filtersets.py:626 dcim/filtersets.py:836 -#: dcim/filtersets.py:887 dcim/filtersets.py:927 dcim/filtersets.py:1239 -#: dcim/filtersets.py:1765 +#: dcim/filtersets.py:887 dcim/filtersets.py:927 dcim/filtersets.py:1249 +#: dcim/filtersets.py:1775 msgid "Manufacturer (slug)" msgstr "Üretici (kısa ad)" @@ -2307,37 +2347,37 @@ msgstr "Arka görüntüsü var" #: dcim/filtersets.py:509 dcim/filtersets.py:630 dcim/filtersets.py:1068 #: dcim/forms/filtersets.py:466 dcim/forms/filtersets.py:562 -#: dcim/forms/filtersets.py:776 +#: dcim/forms/filtersets.py:777 msgid "Has console ports" msgstr "Konsol bağlantı noktaları vardır" #: dcim/filtersets.py:513 dcim/filtersets.py:634 dcim/filtersets.py:1072 #: dcim/forms/filtersets.py:473 dcim/forms/filtersets.py:569 -#: dcim/forms/filtersets.py:783 +#: dcim/forms/filtersets.py:784 msgid "Has console server ports" msgstr "Konsol sunucusu bağlantı noktaları vardır" #: dcim/filtersets.py:517 dcim/filtersets.py:638 dcim/filtersets.py:1076 #: dcim/forms/filtersets.py:480 dcim/forms/filtersets.py:576 -#: dcim/forms/filtersets.py:790 +#: dcim/forms/filtersets.py:791 msgid "Has power ports" msgstr "Güç bağlantı noktaları vardır" #: dcim/filtersets.py:521 dcim/filtersets.py:642 dcim/filtersets.py:1080 #: dcim/forms/filtersets.py:487 dcim/forms/filtersets.py:583 -#: dcim/forms/filtersets.py:797 +#: dcim/forms/filtersets.py:798 msgid "Has power outlets" msgstr "Elektrik prizleri var" #: dcim/filtersets.py:525 dcim/filtersets.py:646 dcim/filtersets.py:1084 #: dcim/forms/filtersets.py:494 dcim/forms/filtersets.py:590 -#: dcim/forms/filtersets.py:804 +#: dcim/forms/filtersets.py:805 msgid "Has interfaces" msgstr "Arayüzleri vardır" #: dcim/filtersets.py:529 dcim/filtersets.py:650 dcim/filtersets.py:1088 #: dcim/forms/filtersets.py:501 dcim/forms/filtersets.py:597 -#: dcim/forms/filtersets.py:811 +#: dcim/forms/filtersets.py:812 msgid "Has pass-through ports" msgstr "Geçiş bağlantı noktaları vardır" @@ -2353,19 +2393,19 @@ msgstr "Aygıt yuvaları vardır" msgid "Has inventory items" msgstr "Envanter kalemleri var" -#: dcim/filtersets.py:698 dcim/filtersets.py:937 dcim/filtersets.py:1363 +#: dcim/filtersets.py:698 dcim/filtersets.py:937 dcim/filtersets.py:1373 msgid "Device type (ID)" msgstr "Aygıt tipi (ID)" -#: dcim/filtersets.py:717 dcim/filtersets.py:1244 +#: dcim/filtersets.py:717 dcim/filtersets.py:1254 msgid "Module type (ID)" msgstr "Modül tipi (ID)" -#: dcim/filtersets.py:752 dcim/filtersets.py:1514 +#: dcim/filtersets.py:752 dcim/filtersets.py:1524 msgid "Power port (ID)" msgstr "Güç bağlantı noktası (ID)" -#: dcim/filtersets.py:826 dcim/filtersets.py:1755 +#: dcim/filtersets.py:826 dcim/filtersets.py:1765 msgid "Parent inventory item (ID)" msgstr "Ana envanter kalemi (ID)" @@ -2391,8 +2431,8 @@ msgstr "Platform (ID)" msgid "Platform (slug)" msgstr "Platform (kısa ad)" -#: dcim/filtersets.py:999 dcim/filtersets.py:1326 dcim/filtersets.py:1853 -#: dcim/filtersets.py:2095 dcim/filtersets.py:2154 +#: dcim/filtersets.py:999 dcim/filtersets.py:1336 dcim/filtersets.py:1863 +#: dcim/filtersets.py:2105 dcim/filtersets.py:2164 msgid "Site name (slug)" msgstr "Site adı (kısa ad)" @@ -2413,15 +2453,15 @@ msgid "Is full depth" msgstr "Tam derinlik mi" #: dcim/filtersets.py:1040 dcim/forms/common.py:18 -#: dcim/forms/filtersets.py:746 dcim/forms/filtersets.py:1283 +#: dcim/forms/filtersets.py:747 dcim/forms/filtersets.py:1291 #: dcim/models/device_components.py:519 virtualization/filtersets.py:230 #: virtualization/filtersets.py:297 virtualization/forms/filtersets.py:172 #: virtualization/forms/filtersets.py:219 msgid "MAC address" msgstr "MAC adresi" -#: dcim/filtersets.py:1047 dcim/filtersets.py:1201 -#: dcim/forms/filtersets.py:755 dcim/forms/filtersets.py:841 +#: dcim/filtersets.py:1047 dcim/filtersets.py:1211 +#: dcim/forms/filtersets.py:756 dcim/forms/filtersets.py:849 #: virtualization/filtersets.py:234 virtualization/forms/filtersets.py:176 msgid "Has a primary IP" msgstr "Birincil IP'ye sahiptir" @@ -2442,59 +2482,63 @@ msgstr "Sanal bir şasi üyesidir" msgid "OOB IP (ID)" msgstr "OOB İP (KİMLİĞİ)" -#: dcim/filtersets.py:1184 +#: dcim/filtersets.py:1105 +msgid "Has virtual device context" +msgstr "Sanal cihaz bağlamına sahiptir" + +#: dcim/filtersets.py:1194 msgid "VDC (ID)" msgstr "VDC (KİMLİK)" -#: dcim/filtersets.py:1189 +#: dcim/filtersets.py:1199 msgid "Device model" msgstr "Cihaz modeli" -#: dcim/filtersets.py:1194 ipam/filtersets.py:632 vpn/filtersets.py:102 +#: dcim/filtersets.py:1204 ipam/filtersets.py:632 vpn/filtersets.py:102 #: vpn/filtersets.py:420 msgid "Interface (ID)" msgstr "Arayüz (ID)" -#: dcim/filtersets.py:1250 +#: dcim/filtersets.py:1260 msgid "Module type (model)" msgstr "Modül tipi (model)" -#: dcim/filtersets.py:1256 +#: dcim/filtersets.py:1266 msgid "Module Bay (ID)" msgstr "Modül Yuvası (ID)" -#: dcim/filtersets.py:1260 dcim/filtersets.py:1352 ipam/filtersets.py:611 +#: dcim/filtersets.py:1270 dcim/filtersets.py:1362 ipam/filtersets.py:611 #: ipam/filtersets.py:851 ipam/filtersets.py:1075 #: virtualization/filtersets.py:161 vpn/filtersets.py:398 msgid "Device (ID)" msgstr "Aygıt (ID)" -#: dcim/filtersets.py:1348 +#: dcim/filtersets.py:1358 msgid "Rack (name)" msgstr "Raf (isim)" -#: dcim/filtersets.py:1358 ipam/filtersets.py:606 ipam/filtersets.py:846 +#: dcim/filtersets.py:1368 ipam/filtersets.py:606 ipam/filtersets.py:846 #: ipam/filtersets.py:1081 vpn/filtersets.py:393 msgid "Device (name)" msgstr "Aygıt (isim)" -#: dcim/filtersets.py:1369 +#: dcim/filtersets.py:1379 msgid "Device type (model)" msgstr "Aygıt tipi (model)" -#: dcim/filtersets.py:1374 +#: dcim/filtersets.py:1384 msgid "Device role (ID)" msgstr "Aygıt rolü (ID)" -#: dcim/filtersets.py:1380 +#: dcim/filtersets.py:1390 msgid "Device role (slug)" msgstr "Aygıt rolü (kısa ad)" -#: dcim/filtersets.py:1385 +#: dcim/filtersets.py:1395 msgid "Virtual Chassis (ID)" msgstr "Sanal Kasa (ID)" -#: dcim/filtersets.py:1391 dcim/forms/filtersets.py:107 +#: dcim/filtersets.py:1401 dcim/forms/filtersets.py:107 #: dcim/tables/devices.py:211 netbox/navigation/menu.py:66 #: templates/dcim/device.html:119 templates/dcim/device_edit.html:93 #: templates/dcim/virtualchassis.html:20 @@ -2503,37 +2547,37 @@ msgstr "Sanal Kasa (ID)" msgid "Virtual Chassis" msgstr "Sanal Şasi" -#: dcim/filtersets.py:1411 +#: dcim/filtersets.py:1421 msgid "Module (ID)" msgstr "Modül (ID)" -#: dcim/filtersets.py:1418 +#: dcim/filtersets.py:1428 msgid "Cable (ID)" msgstr "Kablo (ID)" -#: dcim/filtersets.py:1527 ipam/forms/bulk_import.py:188 +#: dcim/filtersets.py:1537 ipam/forms/bulk_import.py:188 #: vpn/forms/bulk_import.py:308 msgid "Assigned VLAN" msgstr "Atanmış VLAN" -#: dcim/filtersets.py:1531 +#: dcim/filtersets.py:1541 msgid "Assigned VID" msgstr "Atanmış VID" -#: dcim/filtersets.py:1536 dcim/forms/bulk_edit.py:1382 -#: dcim/forms/bulk_import.py:836 dcim/forms/filtersets.py:1326 +#: dcim/filtersets.py:1546 dcim/forms/bulk_edit.py:1382 +#: dcim/forms/bulk_import.py:836 dcim/forms/filtersets.py:1334 #: dcim/forms/model_forms.py:1322 dcim/models/device_components.py:712 -#: dcim/tables/devices.py:618 ipam/filtersets.py:316 ipam/filtersets.py:327 +#: dcim/tables/devices.py:622 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:227 ipam/forms/bulk_edit.py:282 #: ipam/forms/bulk_edit.py:324 ipam/forms/bulk_import.py:156 #: ipam/forms/bulk_import.py:242 ipam/forms/bulk_import.py:278 -#: ipam/forms/filtersets.py:67 ipam/forms/filtersets.py:171 -#: ipam/forms/filtersets.py:302 ipam/forms/model_forms.py:60 +#: ipam/forms/filtersets.py:67 ipam/forms/filtersets.py:172 +#: ipam/forms/filtersets.py:309 ipam/forms/model_forms.py:60 #: ipam/forms/model_forms.py:200 ipam/forms/model_forms.py:245 -#: ipam/forms/model_forms.py:298 ipam/forms/model_forms.py:420 -#: ipam/forms/model_forms.py:434 ipam/forms/model_forms.py:448 -#: ipam/models/ip.py:232 ipam/models/ip.py:511 ipam/models/ip.py:719 +#: ipam/forms/model_forms.py:298 ipam/forms/model_forms.py:429 +#: ipam/forms/model_forms.py:443 ipam/forms/model_forms.py:457 +#: ipam/models/ip.py:233 ipam/models/ip.py:512 ipam/models/ip.py:720 #: ipam/models/vrfs.py:62 ipam/tables/ip.py:241 ipam/tables/ip.py:306 #: ipam/tables/ip.py:356 ipam/tables/ip.py:445 #: templates/dcim/interface.html:133 templates/ipam/ipaddress.html:18 @@ -2549,18 +2593,18 @@ msgstr "Atanmış VID" msgid "VRF" msgstr "VRF" -#: dcim/filtersets.py:1542 ipam/filtersets.py:322 ipam/filtersets.py:333 +#: dcim/filtersets.py:1552 ipam/filtersets.py:322 ipam/filtersets.py:333 #: ipam/filtersets.py:489 ipam/filtersets.py:590 ipam/filtersets.py:601 msgid "VRF (RD)" msgstr "VRF (RD)" -#: dcim/filtersets.py:1547 ipam/filtersets.py:1016 vpn/filtersets.py:361 +#: dcim/filtersets.py:1557 ipam/filtersets.py:1016 vpn/filtersets.py:361 msgid "L2VPN (ID)" msgstr "L2VPN (KİMLİĞİ)" -#: dcim/filtersets.py:1553 dcim/forms/filtersets.py:1331 -#: dcim/tables/devices.py:566 ipam/filtersets.py:1022 -#: ipam/forms/filtersets.py:518 ipam/tables/vlans.py:133 +#: dcim/filtersets.py:1563 dcim/forms/filtersets.py:1339 +#: dcim/tables/devices.py:570 ipam/filtersets.py:1022 +#: ipam/forms/filtersets.py:525 ipam/tables/vlans.py:133 #: templates/dcim/interface.html:93 templates/ipam/vlan.html:66 #: templates/vpn/l2vpntermination.html:12 #: virtualization/forms/filtersets.py:229 vpn/forms/bulk_import.py:280 @@ -2569,82 +2613,82 @@ msgstr "L2VPN (KİMLİĞİ)" msgid "L2VPN" msgstr "L2VPN" -#: dcim/filtersets.py:1585 +#: dcim/filtersets.py:1595 msgid "Virtual Chassis Interfaces for Device" msgstr "Aygıt için Sanal Kasa Arabirimleri" -#: dcim/filtersets.py:1590 +#: dcim/filtersets.py:1600 msgid "Virtual Chassis Interfaces for Device (ID)" msgstr "Aygıt için Sanal Kasa Arabirimleri (ID)" -#: dcim/filtersets.py:1594 +#: dcim/filtersets.py:1604 msgid "Kind of interface" msgstr "Arayüz türü" -#: dcim/filtersets.py:1599 virtualization/filtersets.py:289 +#: dcim/filtersets.py:1609 virtualization/filtersets.py:289 msgid "Parent interface (ID)" msgstr "Ebeveyn arabirimi (ID)" -#: dcim/filtersets.py:1604 virtualization/filtersets.py:294 +#: dcim/filtersets.py:1614 virtualization/filtersets.py:294 msgid "Bridged interface (ID)" msgstr "Köprülü arayüz (ID)" -#: dcim/filtersets.py:1609 +#: dcim/filtersets.py:1619 msgid "LAG interface (ID)" msgstr "LAG arabirimi (ID)" -#: dcim/filtersets.py:1636 dcim/filtersets.py:1648 -#: dcim/forms/filtersets.py:1243 dcim/forms/model_forms.py:1634 +#: dcim/filtersets.py:1646 dcim/filtersets.py:1658 +#: dcim/forms/filtersets.py:1251 dcim/forms/model_forms.py:1634 #: templates/dcim/virtualdevicecontext.html:15 msgid "Virtual Device Context" msgstr "Sanal Aygıt Bağlamı" -#: dcim/filtersets.py:1642 +#: dcim/filtersets.py:1652 msgid "Virtual Device Context (Identifier)" msgstr "Sanal Aygıt Bağlamı (Tanımlayıcı)" -#: dcim/filtersets.py:1653 templates/wireless/wirelesslan.html:11 +#: dcim/filtersets.py:1663 templates/wireless/wirelesslan.html:11 #: wireless/forms/model_forms.py:53 msgid "Wireless LAN" msgstr "Kablosuz LAN" -#: dcim/filtersets.py:1657 dcim/tables/devices.py:605 +#: dcim/filtersets.py:1667 dcim/tables/devices.py:609 msgid "Wireless link" msgstr "Kablosuz bağlantı" -#: dcim/filtersets.py:1727 +#: dcim/filtersets.py:1737 msgid "Installed module (ID)" msgstr "Yüklü modül (ID)" -#: dcim/filtersets.py:1738 +#: dcim/filtersets.py:1748 msgid "Installed device (ID)" msgstr "Yüklü cihaz (ID)" -#: dcim/filtersets.py:1744 +#: dcim/filtersets.py:1754 msgid "Installed device (name)" msgstr "Yüklü cihaz (isim)" -#: dcim/filtersets.py:1810 +#: dcim/filtersets.py:1820 msgid "Master (ID)" msgstr "Master (ID)" -#: dcim/filtersets.py:1816 +#: dcim/filtersets.py:1826 msgid "Master (name)" msgstr "Master (isim)" -#: dcim/filtersets.py:1858 tenancy/filtersets.py:246 +#: dcim/filtersets.py:1868 tenancy/filtersets.py:246 msgid "Tenant (ID)" msgstr "Kiracı (ID)" -#: dcim/filtersets.py:1864 extras/filtersets.py:570 tenancy/filtersets.py:252 +#: dcim/filtersets.py:1874 extras/filtersets.py:570 tenancy/filtersets.py:252 msgid "Tenant (slug)" msgstr "Kiracı (kısa ad)" -#: dcim/filtersets.py:1900 dcim/forms/filtersets.py:988 +#: dcim/filtersets.py:1910 dcim/forms/filtersets.py:996 msgid "Unterminated" msgstr "Sonlandırılmamış" -#: dcim/filtersets.py:2158 +#: dcim/filtersets.py:2168 msgid "Power panel (ID)" msgstr "Güç paneli (ID)" @@ -2652,13 +2696,13 @@ msgstr "Güç paneli (ID)" #: extras/forms/model_forms.py:443 extras/forms/model_forms.py:495 #: netbox/forms/base.py:84 netbox/forms/mixins.py:81 #: netbox/tables/columns.py:458 -#: templates/circuits/inc/circuit_termination.html:118 +#: 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 msgid "Tags" msgstr "Etiketler" -#: dcim/forms/bulk_create.py:112 dcim/forms/filtersets.py:1388 +#: dcim/forms/bulk_create.py:112 dcim/forms/filtersets.py:1396 #: dcim/forms/model_forms.py:431 dcim/forms/model_forms.py:486 #: dcim/forms/object_create.py:197 dcim/forms/object_create.py:353 #: dcim/tables/devices.py:170 dcim/tables/devices.py:702 @@ -2680,7 +2724,7 @@ msgstr "" #: dcim/forms/bulk_edit.py:116 dcim/forms/bulk_import.py:99 #: dcim/forms/model_forms.py:116 dcim/tables/sites.py:89 #: ipam/filtersets.py:985 ipam/forms/bulk_edit.py:531 -#: ipam/forms/bulk_import.py:444 ipam/forms/model_forms.py:517 +#: ipam/forms/bulk_import.py:444 ipam/forms/model_forms.py:526 #: ipam/tables/fhrp.py:67 ipam/tables/vlans.py:118 ipam/tables/vlans.py:221 #: templates/dcim/interface.html:284 templates/dcim/site.html:36 #: templates/ipam/inc/panels/fhrp_groups.html:23 templates/ipam/vlan.html:27 @@ -2727,7 +2771,7 @@ msgstr "Saat dilimi" #: dcim/forms/bulk_edit.py:267 dcim/forms/bulk_edit.py:1160 #: dcim/forms/bulk_edit.py:1548 dcim/forms/bulk_import.py:207 #: dcim/forms/bulk_import.py:1021 dcim/forms/filtersets.py:300 -#: dcim/forms/filtersets.py:705 dcim/forms/filtersets.py:1418 +#: dcim/forms/filtersets.py:706 dcim/forms/filtersets.py:1426 #: dcim/forms/model_forms.py:219 dcim/forms/model_forms.py:1015 #: dcim/forms/model_forms.py:1454 dcim/forms/object_import.py:181 #: dcim/tables/devices.py:174 dcim/tables/devices.py:810 @@ -2737,10 +2781,10 @@ msgstr "Saat dilimi" #: ipam/forms/bulk_edit.py:343 ipam/forms/bulk_edit.py:549 #: ipam/forms/bulk_import.py:196 ipam/forms/bulk_import.py:261 #: ipam/forms/bulk_import.py:297 ipam/forms/bulk_import.py:463 -#: ipam/forms/filtersets.py:236 ipam/forms/filtersets.py:282 -#: ipam/forms/filtersets.py:353 ipam/forms/filtersets.py:509 +#: ipam/forms/filtersets.py:237 ipam/forms/filtersets.py:289 +#: ipam/forms/filtersets.py:360 ipam/forms/filtersets.py:516 #: ipam/forms/model_forms.py:186 ipam/forms/model_forms.py:219 -#: ipam/forms/model_forms.py:248 ipam/forms/model_forms.py:680 +#: ipam/forms/model_forms.py:248 ipam/forms/model_forms.py:689 #: ipam/tables/ip.py:257 ipam/tables/ip.py:313 ipam/tables/ip.py:363 #: ipam/tables/vlans.py:126 ipam/tables/vlans.py:230 #: templates/dcim/device.html:179 @@ -2773,8 +2817,8 @@ msgid "Serial Number" msgstr "Seri Numarası" #: dcim/forms/bulk_edit.py:277 dcim/forms/filtersets.py:307 -#: dcim/forms/filtersets.py:741 dcim/forms/filtersets.py:878 -#: dcim/forms/filtersets.py:1430 +#: dcim/forms/filtersets.py:742 dcim/forms/filtersets.py:886 +#: dcim/forms/filtersets.py:1438 msgid "Asset tag" msgstr "Varlık etiketi" @@ -2845,14 +2889,14 @@ msgstr "Ağırlık birimi" #: dcim/forms/bulk_import.py:498 dcim/forms/bulk_import.py:1309 #: dcim/forms/bulk_import.py:1313 dcim/forms/filtersets.py:102 #: dcim/forms/filtersets.py:340 dcim/forms/filtersets.py:354 -#: dcim/forms/filtersets.py:392 dcim/forms/filtersets.py:700 -#: dcim/forms/filtersets.py:946 dcim/forms/filtersets.py:1078 +#: dcim/forms/filtersets.py:392 dcim/forms/filtersets.py:701 +#: dcim/forms/filtersets.py:954 dcim/forms/filtersets.py:1086 #: dcim/forms/model_forms.py:226 dcim/forms/model_forms.py:248 #: dcim/forms/model_forms.py:422 dcim/forms/model_forms.py:700 #: dcim/forms/object_create.py:400 dcim/tables/devices.py:166 #: dcim/tables/power.py:70 dcim/tables/racks.py:148 -#: ipam/forms/bulk_edit.py:465 ipam/forms/filtersets.py:435 -#: ipam/forms/model_forms.py:601 templates/dcim/device.html:29 +#: ipam/forms/bulk_edit.py:465 ipam/forms/filtersets.py:442 +#: ipam/forms/model_forms.py:610 templates/dcim/device.html:29 #: 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 @@ -2864,7 +2908,7 @@ msgstr "Raf" #: dcim/forms/bulk_edit.py:349 dcim/forms/bulk_edit.py:628 #: dcim/forms/filtersets.py:248 dcim/forms/filtersets.py:333 #: dcim/forms/filtersets.py:416 dcim/forms/filtersets.py:543 -#: dcim/forms/filtersets.py:651 dcim/forms/filtersets.py:853 +#: dcim/forms/filtersets.py:651 dcim/forms/filtersets.py:861 #: dcim/forms/model_forms.py:610 dcim/forms/model_forms.py:1524 #: templates/dcim/device_edit.html:20 msgid "Hardware" @@ -2877,8 +2921,8 @@ msgstr "Donanım" #: dcim/forms/bulk_import.py:353 dcim/forms/bulk_import.py:395 #: dcim/forms/bulk_import.py:431 dcim/forms/bulk_import.py:1027 #: dcim/forms/filtersets.py:429 dcim/forms/filtersets.py:554 -#: dcim/forms/filtersets.py:630 dcim/forms/filtersets.py:710 -#: dcim/forms/filtersets.py:858 dcim/forms/filtersets.py:1423 +#: dcim/forms/filtersets.py:630 dcim/forms/filtersets.py:711 +#: dcim/forms/filtersets.py:866 dcim/forms/filtersets.py:1431 #: dcim/forms/model_forms.py:281 dcim/forms/model_forms.py:293 #: dcim/forms/model_forms.py:339 dcim/forms/model_forms.py:379 #: dcim/forms/model_forms.py:1020 dcim/forms/model_forms.py:1459 @@ -2912,7 +2956,7 @@ msgstr "Kullanımdan hariç tut" #: dcim/forms/bulk_edit.py:431 dcim/forms/bulk_edit.py:603 #: dcim/forms/bulk_import.py:525 dcim/forms/filtersets.py:446 -#: dcim/forms/filtersets.py:732 templates/dcim/device.html:97 +#: dcim/forms/filtersets.py:733 templates/dcim/device.html:97 #: templates/dcim/devicetype.html:65 msgid "Airflow" msgstr "Hava akışı" @@ -2939,7 +2983,7 @@ msgstr "VM rolü" #: dcim/forms/bulk_import.py:380 dcim/forms/bulk_import.py:402 #: dcim/forms/bulk_import.py:406 dcim/forms/bulk_import.py:531 #: dcim/forms/bulk_import.py:535 dcim/forms/filtersets.py:619 -#: dcim/forms/filtersets.py:635 dcim/forms/filtersets.py:751 +#: dcim/forms/filtersets.py:635 dcim/forms/filtersets.py:752 #: dcim/forms/model_forms.py:358 dcim/forms/model_forms.py:384 #: dcim/forms/model_forms.py:495 virtualization/forms/bulk_import.py:132 #: virtualization/forms/bulk_import.py:133 @@ -2961,7 +3005,7 @@ msgid "Device role" msgstr "Aygıt rolü" #: dcim/forms/bulk_edit.py:593 dcim/forms/bulk_import.py:443 -#: dcim/forms/filtersets.py:724 dcim/forms/model_forms.py:394 +#: dcim/forms/filtersets.py:725 dcim/forms/model_forms.py:394 #: dcim/forms/model_forms.py:456 dcim/tables/devices.py:187 #: extras/filtersets.py:515 templates/dcim/device.html:183 #: templates/dcim/platform.html:26 @@ -2983,28 +3027,28 @@ msgstr "Platform" #: dcim/forms/bulk_import.py:956 dcim/forms/bulk_import.py:968 #: dcim/forms/bulk_import.py:1016 dcim/forms/bulk_import.py:1373 #: dcim/forms/connections.py:24 dcim/forms/filtersets.py:129 -#: dcim/forms/filtersets.py:832 dcim/forms/filtersets.py:962 -#: dcim/forms/filtersets.py:1152 dcim/forms/filtersets.py:1174 -#: dcim/forms/filtersets.py:1196 dcim/forms/filtersets.py:1213 -#: dcim/forms/filtersets.py:1233 dcim/forms/filtersets.py:1341 -#: dcim/forms/filtersets.py:1363 dcim/forms/filtersets.py:1384 -#: dcim/forms/filtersets.py:1399 dcim/forms/filtersets.py:1413 -#: dcim/forms/filtersets.py:1476 dcim/forms/filtersets.py:1500 -#: dcim/forms/filtersets.py:1524 dcim/forms/model_forms.py:573 +#: dcim/forms/filtersets.py:840 dcim/forms/filtersets.py:970 +#: dcim/forms/filtersets.py:1160 dcim/forms/filtersets.py:1182 +#: dcim/forms/filtersets.py:1204 dcim/forms/filtersets.py:1221 +#: dcim/forms/filtersets.py:1241 dcim/forms/filtersets.py:1349 +#: dcim/forms/filtersets.py:1371 dcim/forms/filtersets.py:1392 +#: dcim/forms/filtersets.py:1407 dcim/forms/filtersets.py:1421 +#: dcim/forms/filtersets.py:1484 dcim/forms/filtersets.py:1508 +#: dcim/forms/filtersets.py:1532 dcim/forms/model_forms.py:573 #: dcim/forms/model_forms.py:794 dcim/forms/model_forms.py:1153 #: dcim/forms/model_forms.py:1608 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:290 -#: dcim/tables/devices.py:355 dcim/tables/devices.py:399 -#: dcim/tables/devices.py:444 dcim/tables/devices.py:498 -#: dcim/tables/devices.py:590 dcim/tables/devices.py:692 +#: dcim/tables/devices.py:359 dcim/tables/devices.py:403 +#: dcim/tables/devices.py:448 dcim/tables/devices.py:502 +#: dcim/tables/devices.py:594 dcim/tables/devices.py:692 #: dcim/tables/devices.py:752 dcim/tables/devices.py:802 #: dcim/tables/devices.py:862 dcim/tables/devices.py:914 #: dcim/tables/devices.py:1040 dcim/tables/modules.py:52 #: extras/forms/filtersets.py:330 ipam/forms/bulk_import.py:303 -#: ipam/forms/bulk_import.py:489 ipam/forms/filtersets.py:551 -#: ipam/forms/model_forms.py:317 ipam/forms/model_forms.py:716 -#: ipam/forms/model_forms.py:749 ipam/forms/model_forms.py:775 +#: ipam/forms/bulk_import.py:489 ipam/forms/filtersets.py:558 +#: ipam/forms/model_forms.py:317 ipam/forms/model_forms.py:725 +#: ipam/forms/model_forms.py:758 ipam/forms/model_forms.py:784 #: ipam/tables/vlans.py:176 templates/dcim/consoleport.html:20 #: templates/dcim/consoleserverport.html:20 templates/dcim/device.html:14 #: templates/dcim/device.html:128 templates/dcim/device_edit.html:10 @@ -3059,13 +3103,13 @@ msgstr "Modül tipi" msgid "Label" msgstr "etiket" -#: dcim/forms/bulk_edit.py:706 dcim/forms/filtersets.py:979 +#: dcim/forms/bulk_edit.py:706 dcim/forms/filtersets.py:987 #: templates/dcim/cable.html:50 msgid "Length" msgstr "Uzunluk" #: dcim/forms/bulk_edit.py:711 dcim/forms/bulk_import.py:1174 -#: dcim/forms/bulk_import.py:1177 dcim/forms/filtersets.py:983 +#: dcim/forms/bulk_import.py:1177 dcim/forms/filtersets.py:991 msgid "Length unit" msgstr "Uzunluk birimi" @@ -3074,41 +3118,34 @@ msgid "Domain" msgstr "Alan adı" #: dcim/forms/bulk_edit.py:803 dcim/forms/bulk_import.py:1296 -#: dcim/forms/filtersets.py:1069 dcim/forms/model_forms.py:695 +#: dcim/forms/filtersets.py:1077 dcim/forms/model_forms.py:695 msgid "Power panel" msgstr "Güç paneli" #: dcim/forms/bulk_edit.py:825 dcim/forms/bulk_import.py:1332 -#: dcim/forms/filtersets.py:1091 templates/dcim/powerfeed.html:83 +#: dcim/forms/filtersets.py:1099 templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "Tedarik" #: dcim/forms/bulk_edit.py:831 dcim/forms/bulk_import.py:1337 -#: dcim/forms/filtersets.py:1096 templates/dcim/powerfeed.html:95 +#: dcim/forms/filtersets.py:1104 templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "Faz" -#: dcim/forms/bulk_edit.py:837 dcim/forms/filtersets.py:1101 +#: dcim/forms/bulk_edit.py:837 dcim/forms/filtersets.py:1109 #: templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "Gerilim" -#: dcim/forms/bulk_edit.py:841 dcim/forms/filtersets.py:1105 +#: dcim/forms/bulk_edit.py:841 dcim/forms/filtersets.py:1113 #: templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "Amper" -#: dcim/forms/bulk_edit.py:845 dcim/forms/filtersets.py:1109 +#: dcim/forms/bulk_edit.py:845 dcim/forms/filtersets.py:1117 msgid "Max utilization" msgstr "Maksimum kullanım" -#: dcim/forms/bulk_edit.py:849 dcim/forms/bulk_edit.py:1208 -#: dcim/forms/bulk_edit.py:1225 dcim/forms/bulk_edit.py:1242 -#: dcim/forms/bulk_edit.py:1260 dcim/forms/bulk_edit.py:1348 -#: dcim/forms/bulk_edit.py:1487 dcim/forms/bulk_edit.py:1504 -msgid "Mark connected" -msgstr "Bağlı olarak işaretle" - #: dcim/forms/bulk_edit.py:934 msgid "Maximum draw" msgstr "Maksimum çekiliş" @@ -3142,7 +3179,7 @@ msgid "Management only" msgstr "Yalnızca yönetim" #: dcim/forms/bulk_edit.py:1037 dcim/forms/bulk_edit.py:1339 -#: dcim/forms/bulk_import.py:821 dcim/forms/filtersets.py:1292 +#: dcim/forms/bulk_import.py:821 dcim/forms/filtersets.py:1300 #: dcim/forms/object_import.py:90 #: dcim/models/device_component_templates.py:411 #: dcim/models/device_components.py:671 @@ -3150,14 +3187,14 @@ msgid "PoE mode" msgstr "PoE modu" #: dcim/forms/bulk_edit.py:1043 dcim/forms/bulk_edit.py:1345 -#: dcim/forms/bulk_import.py:827 dcim/forms/filtersets.py:1297 +#: dcim/forms/bulk_import.py:827 dcim/forms/filtersets.py:1305 #: dcim/forms/object_import.py:95 #: dcim/models/device_component_templates.py:417 #: dcim/models/device_components.py:677 msgid "PoE type" msgstr "PoE tipi" -#: dcim/forms/bulk_edit.py:1049 dcim/forms/filtersets.py:1302 +#: dcim/forms/bulk_edit.py:1049 dcim/forms/filtersets.py:1310 #: dcim/forms/object_import.py:100 msgid "Wireless role" msgstr "Kablosuz rolü" @@ -3182,10 +3219,10 @@ msgid "Virtual device contexts" msgstr "Sanal cihaz bağlamları" #: dcim/forms/bulk_edit.py:1324 dcim/forms/bulk_import.py:659 -#: dcim/forms/bulk_import.py:685 dcim/forms/filtersets.py:1161 -#: dcim/forms/filtersets.py:1183 dcim/forms/filtersets.py:1256 -#: dcim/tables/devices.py:602 -#: templates/circuits/inc/circuit_termination.html:93 +#: dcim/forms/bulk_import.py:685 dcim/forms/filtersets.py:1169 +#: dcim/forms/filtersets.py:1191 dcim/forms/filtersets.py:1264 +#: dcim/tables/devices.py:606 +#: templates/circuits/inc/circuit_termination_fields.html:67 #: templates/dcim/consoleport.html:40 templates/dcim/consoleserverport.html:40 msgid "Speed" msgstr "Hız" @@ -3202,20 +3239,20 @@ msgid "Mode" msgstr "Modu" #: dcim/forms/bulk_edit.py:1361 dcim/forms/model_forms.py:1299 -#: ipam/forms/bulk_import.py:177 ipam/forms/filtersets.py:498 +#: ipam/forms/bulk_import.py:177 ipam/forms/filtersets.py:505 #: ipam/models/vlans.py:84 virtualization/forms/bulk_edit.py:240 #: virtualization/forms/model_forms.py:321 msgid "VLAN group" msgstr "VLAN grubu" #: dcim/forms/bulk_edit.py:1369 dcim/forms/model_forms.py:1304 -#: dcim/tables/devices.py:575 virtualization/forms/bulk_edit.py:248 +#: dcim/tables/devices.py:579 virtualization/forms/bulk_edit.py:248 #: virtualization/forms/model_forms.py:326 msgid "Untagged VLAN" msgstr "Etiketsiz VLAN" #: dcim/forms/bulk_edit.py:1377 dcim/forms/model_forms.py:1313 -#: dcim/tables/devices.py:581 virtualization/forms/bulk_edit.py:256 +#: dcim/tables/devices.py:585 virtualization/forms/bulk_edit.py:256 #: virtualization/forms/model_forms.py:335 msgid "Tagged VLANs" msgstr "Etiketli VLAN'lar" @@ -3225,12 +3262,12 @@ msgid "Wireless LAN group" msgstr "Kablosuz LAN grubu" #: dcim/forms/bulk_edit.py:1392 dcim/forms/model_forms.py:1291 -#: dcim/tables/devices.py:611 netbox/navigation/menu.py:133 +#: dcim/tables/devices.py:615 netbox/navigation/menu.py:133 #: templates/dcim/interface.html:280 wireless/tables/wirelesslan.py:24 msgid "Wireless LANs" msgstr "Kablosuz LAN'lar" -#: dcim/forms/bulk_edit.py:1401 dcim/forms/filtersets.py:1229 +#: dcim/forms/bulk_edit.py:1401 dcim/forms/filtersets.py:1237 #: dcim/forms/model_forms.py:1334 ipam/forms/bulk_edit.py:271 #: ipam/forms/bulk_edit.py:362 ipam/forms/filtersets.py:169 #: templates/dcim/interface.html:122 templates/ipam/prefix.html:95 @@ -3243,7 +3280,7 @@ msgstr "Adresleme" msgid "Operation" msgstr "Operasyon" -#: dcim/forms/bulk_edit.py:1403 dcim/forms/filtersets.py:1230 +#: dcim/forms/bulk_edit.py:1403 dcim/forms/filtersets.py:1238 #: dcim/forms/model_forms.py:932 dcim/forms/model_forms.py:1337 msgid "PoE" msgstr "PoE" @@ -3399,8 +3436,8 @@ msgstr "Sanal şasi" #: dcim/forms/bulk_import.py:462 dcim/forms/model_forms.py:465 #: dcim/tables/devices.py:207 extras/filtersets.py:548 #: extras/forms/filtersets.py:331 ipam/forms/bulk_edit.py:479 -#: ipam/forms/filtersets.py:408 ipam/forms/filtersets.py:452 -#: ipam/forms/model_forms.py:618 templates/dcim/device.html:231 +#: ipam/forms/filtersets.py:415 ipam/forms/filtersets.py:459 +#: ipam/forms/model_forms.py:627 templates/dcim/device.html:231 #: templates/virtualization/cluster.html:10 #: templates/virtualization/virtualmachine.html:88 #: templates/virtualization/virtualmachine.html:97 @@ -3543,7 +3580,7 @@ msgstr "" msgid "Physical medium" msgstr "Fiziksel ortam" -#: dcim/forms/bulk_import.py:813 dcim/forms/filtersets.py:1263 +#: dcim/forms/bulk_import.py:813 dcim/forms/filtersets.py:1271 msgid "Duplex" msgstr "Dubleks" @@ -3561,8 +3598,8 @@ msgstr "IEEE 802.1Q çalışma modu (L2 arayüzleri için)" #: dcim/forms/bulk_import.py:840 ipam/forms/bulk_import.py:160 #: ipam/forms/bulk_import.py:246 ipam/forms/bulk_import.py:282 -#: ipam/forms/filtersets.py:200 ipam/forms/filtersets.py:270 -#: ipam/forms/filtersets.py:329 virtualization/forms/bulk_import.py:175 +#: ipam/forms/filtersets.py:201 ipam/forms/filtersets.py:277 +#: ipam/forms/filtersets.py:336 virtualization/forms/bulk_import.py:175 msgid "Assigned VRF" msgstr "Atanmış VRF" @@ -3789,29 +3826,33 @@ msgstr "Bileşenleri" msgid "Subdevice role" msgstr "Alt aygıt rolü" -#: dcim/forms/filtersets.py:718 +#: dcim/forms/filtersets.py:719 msgid "Model" msgstr "Modeli" -#: dcim/forms/filtersets.py:762 +#: dcim/forms/filtersets.py:763 msgid "Has an OOB IP" msgstr "OOB IP'ye sahiptir" -#: dcim/forms/filtersets.py:769 +#: dcim/forms/filtersets.py:770 msgid "Virtual chassis member" msgstr "Sanal şasi elemanı" -#: dcim/forms/filtersets.py:1121 +#: dcim/forms/filtersets.py:819 +msgid "Has virtual device contexts" +msgstr "Sanal cihaz bağlamlarına sahiptir" + +#: dcim/forms/filtersets.py:1129 msgid "Cabled" msgstr "Kablolu" -#: dcim/forms/filtersets.py:1128 +#: dcim/forms/filtersets.py:1136 msgid "Occupied" msgstr "işgal" -#: dcim/forms/filtersets.py:1153 dcim/forms/filtersets.py:1175 -#: dcim/forms/filtersets.py:1197 dcim/forms/filtersets.py:1214 -#: dcim/forms/filtersets.py:1234 dcim/tables/devices.py:348 +#: dcim/forms/filtersets.py:1161 dcim/forms/filtersets.py:1183 +#: dcim/forms/filtersets.py:1205 dcim/forms/filtersets.py:1222 +#: dcim/forms/filtersets.py:1242 dcim/tables/devices.py:352 #: 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 @@ -3819,40 +3860,40 @@ msgstr "işgal" msgid "Connection" msgstr "Bağlantı" -#: dcim/forms/filtersets.py:1246 extras/forms/bulk_edit.py:316 +#: dcim/forms/filtersets.py:1254 extras/forms/bulk_edit.py:316 #: extras/forms/bulk_import.py:242 extras/forms/filtersets.py:476 #: extras/forms/model_forms.py:551 extras/tables/tables.py:512 #: templates/extras/journalentry.html:30 msgid "Kind" msgstr "Tür" -#: dcim/forms/filtersets.py:1275 +#: dcim/forms/filtersets.py:1283 msgid "Mgmt only" msgstr "Sadece Mgmt" -#: dcim/forms/filtersets.py:1287 dcim/forms/model_forms.py:1327 +#: dcim/forms/filtersets.py:1295 dcim/forms/model_forms.py:1327 #: dcim/models/device_components.py:630 templates/dcim/interface.html:129 msgid "WWN" msgstr "WWN" -#: dcim/forms/filtersets.py:1307 +#: dcim/forms/filtersets.py:1315 msgid "Wireless channel" msgstr "Kablosuz kanal" -#: dcim/forms/filtersets.py:1311 +#: dcim/forms/filtersets.py:1319 msgid "Channel frequency (MHz)" msgstr "Kanal frekansı (MHz)" -#: dcim/forms/filtersets.py:1315 +#: dcim/forms/filtersets.py:1323 msgid "Channel width (MHz)" msgstr "Kanal genişliği (MHz)" -#: dcim/forms/filtersets.py:1319 templates/dcim/interface.html:85 +#: dcim/forms/filtersets.py:1327 templates/dcim/interface.html:85 msgid "Transmit power (dBm)" msgstr "İletim gücü (dBm)" -#: dcim/forms/filtersets.py:1342 dcim/forms/filtersets.py:1364 -#: dcim/tables/devices.py:320 templates/dcim/cable.html:12 +#: dcim/forms/filtersets.py:1350 dcim/forms/filtersets.py:1372 +#: dcim/tables/devices.py:324 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 @@ -3860,7 +3901,7 @@ msgstr "İletim gücü (dBm)" msgid "Cable" msgstr "Kablo" -#: dcim/forms/filtersets.py:1434 dcim/tables/devices.py:933 +#: dcim/forms/filtersets.py:1442 dcim/tables/devices.py:933 msgid "Discovered" msgstr "Keşfedildi" @@ -3980,7 +4021,7 @@ msgstr "Arka bağlantı noktası şablonu" #: dcim/tables/connections.py:65 ipam/forms/bulk_import.py:317 #: ipam/forms/model_forms.py:278 ipam/forms/model_forms.py:287 #: ipam/tables/fhrp.py:64 ipam/tables/ip.py:368 ipam/tables/vlans.py:165 -#: templates/circuits/inc/circuit_termination.html:77 +#: 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 @@ -4008,7 +4049,7 @@ msgid "Console Server Port" msgstr "Konsol Sunucusu Bağlantı Noktası" #: dcim/forms/model_forms.py:1092 dcim/forms/model_forms.py:1530 -#: templates/circuits/inc/circuit_termination.html:78 +#: 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 @@ -4017,7 +4058,7 @@ msgstr "Ön Bağlantı Noktası" #: dcim/forms/model_forms.py:1093 dcim/forms/model_forms.py:1531 #: dcim/tables/devices.py:705 -#: templates/circuits/inc/circuit_termination.html:79 +#: 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 @@ -4026,7 +4067,7 @@ msgid "Rear Port" msgstr "Arka Bağlantı Noktası" #: dcim/forms/model_forms.py:1094 dcim/forms/model_forms.py:1532 -#: dcim/tables/connections.py:46 dcim/tables/devices.py:505 +#: dcim/tables/connections.py:46 dcim/tables/devices.py:509 #: templates/dcim/poweroutlet.html:44 templates/dcim/powerport.html:17 msgid "Power Port" msgstr "Güç Bağlantı Noktası" @@ -5284,7 +5325,7 @@ msgstr "Birincil IP adresi, atanan cihazdaki bir arayüze ait olmalıdır." #: dcim/models/mixins.py:15 extras/models/configs.py:41 #: extras/models/models.py:341 extras/models/models.py:550 -#: extras/models/search.py:48 ipam/models/ip.py:193 +#: extras/models/search.py:48 ipam/models/ip.py:194 msgid "weight" msgstr "ağırlık" @@ -5772,28 +5813,37 @@ msgstr "Envanter kalemleri" msgid "Module Bay" msgstr "Modül Yuvası" -#: dcim/tables/devices.py:326 +#: dcim/tables/devices.py:318 dcim/tables/devicetypes.py:48 +#: dcim/tables/devicetypes.py:140 dcim/views.py:1081 dcim/views.py:2024 +#: netbox/navigation/menu.py:90 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 +msgid "Inventory Items" +msgstr "Envanter Öğeleri" + +#: dcim/tables/devices.py:330 msgid "Cable Color" msgstr "Kablo Rengi" -#: dcim/tables/devices.py:332 +#: dcim/tables/devices.py:336 msgid "Link Peers" msgstr "Meslektaşları Bağla" -#: dcim/tables/devices.py:335 +#: dcim/tables/devices.py:339 msgid "Mark Connected" msgstr "Bağlı İşaretle" -#: dcim/tables/devices.py:451 +#: dcim/tables/devices.py:455 msgid "Maximum draw (W)" msgstr "Maksimum çekim (W)" -#: dcim/tables/devices.py:454 +#: dcim/tables/devices.py:458 msgid "Allocated draw (W)" msgstr "Tahsis edilen çekiliş (W)" -#: dcim/tables/devices.py:554 ipam/forms/model_forms.py:738 -#: ipam/tables/fhrp.py:28 ipam/views.py:596 ipam/views.py:690 +#: dcim/tables/devices.py:558 ipam/forms/model_forms.py:747 +#: ipam/tables/fhrp.py:28 ipam/views.py:602 ipam/views.py:701 #: netbox/navigation/menu.py:145 netbox/navigation/menu.py:147 #: templates/dcim/interface.html:339 templates/ipam/ipaddress_bulk_add.html:15 #: templates/ipam/service.html:40 templates/virtualization/vminterface.html:85 @@ -5801,12 +5851,12 @@ msgstr "Tahsis edilen çekiliş (W)" msgid "IP Addresses" msgstr "IP Adresleri" -#: dcim/tables/devices.py:560 netbox/navigation/menu.py:189 +#: dcim/tables/devices.py:564 netbox/navigation/menu.py:189 #: templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "FHRP Grupları" -#: dcim/tables/devices.py:572 templates/dcim/interface.html:89 +#: 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 @@ -5815,24 +5865,15 @@ msgstr "FHRP Grupları" msgid "Tunnel" msgstr "Tünel" -#: dcim/tables/devices.py:597 dcim/tables/devicetypes.py:224 +#: dcim/tables/devices.py:601 dcim/tables/devicetypes.py:224 #: templates/dcim/interface.html:65 msgid "Management Only" msgstr "Yalnızca Yönetim" -#: dcim/tables/devices.py:615 +#: dcim/tables/devices.py:619 msgid "VDCs" msgstr "VDC'ler" -#: dcim/tables/devices.py:623 dcim/tables/devicetypes.py:48 -#: dcim/tables/devicetypes.py:140 dcim/views.py:1081 dcim/views.py:2024 -#: netbox/navigation/menu.py:90 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 -msgid "Inventory Items" -msgstr "Envanter Öğeleri" - #: dcim/tables/devices.py:870 templates/dcim/modulebay.html:49 msgid "Installed Module" msgstr "Yüklü Modül" @@ -5948,7 +5989,7 @@ msgstr "Aygıt Yuvaları" msgid "Module Bays" msgstr "Modül Bölmeleri" -#: dcim/tables/power.py:36 netbox/navigation/menu.py:281 +#: dcim/tables/power.py:36 netbox/navigation/menu.py:282 #: templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "Güç Beslemeleri" @@ -6431,7 +6472,7 @@ msgid "Cluster type (slug)" msgstr "Küme tipi (kısa ad)" #: extras/filtersets.py:537 ipam/forms/bulk_edit.py:476 -#: ipam/forms/filtersets.py:457 ipam/forms/model_forms.py:615 +#: ipam/forms/filtersets.py:464 ipam/forms/model_forms.py:624 #: virtualization/forms/filtersets.py:112 msgid "Cluster group" msgstr "Küme grubu" @@ -6933,7 +6974,7 @@ msgid "Tenants" msgstr "Kiracılar" #: extras/forms/model_forms.py:458 ipam/forms/filtersets.py:142 -#: ipam/forms/filtersets.py:546 ipam/forms/model_forms.py:321 +#: ipam/forms/filtersets.py:553 ipam/forms/model_forms.py:321 #: 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:311 @@ -7747,11 +7788,11 @@ msgstr "senaryo" msgid "scripts" msgstr "senaryolar" -#: extras/models/scripts.py:110 +#: extras/models/scripts.py:111 msgid "script module" msgstr "komut dosyası modülü" -#: extras/models/scripts.py:111 +#: extras/models/scripts.py:112 msgid "script modules" msgstr "komut dosyası modülleri" @@ -8012,7 +8053,7 @@ msgstr "Silinen widget: " msgid "Error deleting widget: " msgstr "Widget silinirken hata oluştu: " -#: extras/views.py:1081 +#: extras/views.py:1101 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." @@ -8158,7 +8199,7 @@ msgid "Prefixes which contain this prefix or IP" msgstr "Bu önek veya IP'yi içeren önekler" #: ipam/filtersets.py:304 ipam/filtersets.py:572 ipam/forms/bulk_edit.py:327 -#: ipam/forms/filtersets.py:195 ipam/forms/filtersets.py:324 +#: ipam/forms/filtersets.py:196 ipam/forms/filtersets.py:331 msgid "Mask length" msgstr "Maske uzunluğu" @@ -8171,7 +8212,7 @@ msgid "VLAN number (1-4094)" msgstr "VLAN numarası (1-4094)" #: ipam/filtersets.py:471 ipam/filtersets.py:475 ipam/filtersets.py:567 -#: ipam/forms/model_forms.py:452 templates/tenancy/contact.html:53 +#: ipam/forms/model_forms.py:461 templates/tenancy/contact.html:53 #: tenancy/forms/bulk_edit.py:113 msgid "Address" msgstr "Adres" @@ -8231,7 +8272,7 @@ msgstr "IP adresi içinde NAT (ID)" msgid "IP address (ID)" msgstr "IP adresi (ID)" -#: ipam/filtersets.py:1102 ipam/models/ip.py:787 +#: ipam/filtersets.py:1102 ipam/models/ip.py:788 msgid "IP address" msgstr "IP adresi" @@ -8287,7 +8328,7 @@ msgstr "Özeldir" #: ipam/forms/filtersets.py:148 ipam/forms/model_forms.py:94 #: ipam/forms/model_forms.py:107 ipam/forms/model_forms.py:129 #: ipam/forms/model_forms.py:147 ipam/models/asns.py:31 -#: ipam/models/asns.py:103 ipam/models/ip.py:70 ipam/models/ip.py:89 +#: 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 @@ -8302,36 +8343,36 @@ msgstr "Eklenen tarih" msgid "Prefix length" msgstr "Önek uzunluğu" -#: ipam/forms/bulk_edit.py:253 ipam/forms/filtersets.py:240 +#: ipam/forms/bulk_edit.py:253 ipam/forms/filtersets.py:241 #: templates/ipam/prefix.html:85 msgid "Is a pool" msgstr "Havuz mu" #: ipam/forms/bulk_edit.py:258 ipam/forms/bulk_edit.py:302 -#: ipam/forms/filtersets.py:247 ipam/forms/filtersets.py:286 -#: ipam/models/ip.py:271 ipam/models/ip.py:538 +#: ipam/forms/filtersets.py:248 ipam/forms/filtersets.py:293 +#: ipam/models/ip.py:272 ipam/models/ip.py:539 msgid "Treat as fully utilized" msgstr "Tamamen kullanılmış gibi davran" -#: ipam/forms/bulk_edit.py:350 ipam/models/ip.py:771 +#: ipam/forms/bulk_edit.py:350 ipam/models/ip.py:772 msgid "DNS name" msgstr "DNS adı" #: ipam/forms/bulk_edit.py:371 ipam/forms/bulk_edit.py:572 #: ipam/forms/bulk_import.py:393 ipam/forms/bulk_import.py:477 -#: ipam/forms/bulk_import.py:503 ipam/forms/filtersets.py:383 -#: ipam/forms/filtersets.py:530 templates/ipam/fhrpgroup.html:22 +#: ipam/forms/bulk_import.py:503 ipam/forms/filtersets.py:390 +#: ipam/forms/filtersets.py:537 templates/ipam/fhrpgroup.html:22 #: templates/ipam/inc/panels/fhrp_groups.html:24 #: templates/ipam/service.html:32 templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "Protokol" -#: ipam/forms/bulk_edit.py:378 ipam/forms/filtersets.py:390 +#: ipam/forms/bulk_edit.py:378 ipam/forms/filtersets.py:397 #: ipam/tables/fhrp.py:22 templates/ipam/fhrpgroup.html:26 msgid "Group ID" msgstr "Grup Kimliği" -#: ipam/forms/bulk_edit.py:383 ipam/forms/filtersets.py:395 +#: ipam/forms/bulk_edit.py:383 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 @@ -8339,12 +8380,12 @@ msgstr "Grup Kimliği" msgid "Authentication type" msgstr "Kimlik doğrulama türü" -#: ipam/forms/bulk_edit.py:388 ipam/forms/filtersets.py:399 +#: ipam/forms/bulk_edit.py:388 ipam/forms/filtersets.py:406 msgid "Authentication key" msgstr "Kimlik doğrulama anahtarı" -#: ipam/forms/bulk_edit.py:405 ipam/forms/filtersets.py:376 -#: ipam/forms/model_forms.py:463 netbox/navigation/menu.py:369 +#: ipam/forms/bulk_edit.py:405 ipam/forms/filtersets.py:383 +#: ipam/forms/model_forms.py:472 netbox/navigation/menu.py:370 #: templates/ipam/fhrpgroup.html:49 #: templates/wireless/inc/authentication_attrs.html:5 #: wireless/forms/bulk_edit.py:91 wireless/forms/bulk_edit.py:138 @@ -8361,11 +8402,11 @@ msgstr "Minimum çocuk VLAN VID" msgid "Maximum child VLAN VID" msgstr "Maksimum çocuk VLAN VID" -#: ipam/forms/bulk_edit.py:429 ipam/forms/model_forms.py:557 +#: ipam/forms/bulk_edit.py:429 ipam/forms/model_forms.py:566 msgid "Scope type" msgstr "Kapsam türü" -#: ipam/forms/bulk_edit.py:491 ipam/forms/model_forms.py:632 +#: ipam/forms/bulk_edit.py:491 ipam/forms/model_forms.py:641 #: ipam/tables/vlans.py:71 templates/ipam/vlangroup.html:38 msgid "Scope" msgstr "Kapsam" @@ -8374,8 +8415,8 @@ msgstr "Kapsam" msgid "Site & Group" msgstr "Site ve Grup" -#: ipam/forms/bulk_edit.py:577 ipam/forms/model_forms.py:696 -#: ipam/forms/model_forms.py:728 ipam/tables/services.py:19 +#: ipam/forms/bulk_edit.py:577 ipam/forms/model_forms.py:705 +#: ipam/forms/model_forms.py:737 ipam/tables/services.py:19 #: ipam/tables/services.py:49 templates/ipam/service.html:36 #: templates/ipam/servicetemplate.html:23 msgid "Ports" @@ -8398,15 +8439,15 @@ msgstr "Atanmış RIR" msgid "VLAN's group (if any)" msgstr "VLAN grubu (varsa)" -#: ipam/forms/bulk_import.py:184 ipam/forms/model_forms.py:216 -#: ipam/models/vlans.py:214 ipam/tables/ip.py:254 -#: 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:101 +#: ipam/forms/bulk_import.py:184 ipam/forms/filtersets.py:256 +#: ipam/forms/model_forms.py:216 ipam/models/vlans.py:214 +#: ipam/tables/ip.py:254 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:101 msgid "VLAN" msgstr "VLAN" @@ -8415,7 +8456,7 @@ msgid "Parent device of assigned interface (if any)" msgstr "Atanan arayüzün ana cihazı (varsa)" #: ipam/forms/bulk_import.py:310 ipam/forms/bulk_import.py:496 -#: ipam/forms/model_forms.py:722 virtualization/filtersets.py:284 +#: ipam/forms/model_forms.py:731 virtualization/filtersets.py:284 #: virtualization/filtersets.py:323 virtualization/forms/bulk_edit.py:200 #: virtualization/forms/bulk_edit.py:326 #: virtualization/forms/bulk_import.py:146 @@ -8518,8 +8559,8 @@ msgstr "VRF tarafından ihraç edildi" msgid "Private" msgstr "Özel" -#: ipam/forms/filtersets.py:105 ipam/forms/filtersets.py:190 -#: ipam/forms/filtersets.py:265 ipam/forms/filtersets.py:319 +#: ipam/forms/filtersets.py:105 ipam/forms/filtersets.py:191 +#: ipam/forms/filtersets.py:272 ipam/forms/filtersets.py:326 msgid "Address family" msgstr "Adres ailesi" @@ -8535,53 +8576,57 @@ msgstr "Başlat" msgid "End" msgstr "Bitiş" -#: ipam/forms/filtersets.py:185 +#: ipam/forms/filtersets.py:171 +msgid "VLAN Assignment" +msgstr "VLAN Ataması" + +#: ipam/forms/filtersets.py:186 msgid "Search within" msgstr "İçinde ara" -#: ipam/forms/filtersets.py:206 ipam/forms/filtersets.py:335 +#: ipam/forms/filtersets.py:207 ipam/forms/filtersets.py:342 msgid "Present in VRF" msgstr "VRF'de mevcut" -#: ipam/forms/filtersets.py:304 +#: ipam/forms/filtersets.py:311 msgid "Device/VM" msgstr "Aygıt/VM" -#: ipam/forms/filtersets.py:314 +#: ipam/forms/filtersets.py:321 msgid "Parent Prefix" msgstr "Ebeveyn Öneki" -#: ipam/forms/filtersets.py:340 +#: ipam/forms/filtersets.py:347 msgid "Assigned Device" msgstr "Atanan Aygıt" -#: ipam/forms/filtersets.py:345 +#: ipam/forms/filtersets.py:352 msgid "Assigned VM" msgstr "Atanmış VM" -#: ipam/forms/filtersets.py:359 +#: ipam/forms/filtersets.py:366 msgid "Assigned to an interface" msgstr "Bir arayüze atandı" -#: ipam/forms/filtersets.py:366 templates/ipam/ipaddress.html:51 +#: ipam/forms/filtersets.py:373 templates/ipam/ipaddress.html:51 msgid "DNS Name" msgstr "DNS Adı" -#: ipam/forms/filtersets.py:409 ipam/forms/filtersets.py:513 +#: ipam/forms/filtersets.py:416 ipam/forms/filtersets.py:520 #: ipam/models/vlans.py:156 templates/ipam/vlan.html:31 msgid "VLAN ID" msgstr "VLAN KİMLİĞİ" -#: ipam/forms/filtersets.py:441 +#: ipam/forms/filtersets.py:448 msgid "Minimum VID" msgstr "Minimum VID" -#: ipam/forms/filtersets.py:447 +#: ipam/forms/filtersets.py:454 msgid "Maximum VID" msgstr "Maksimum VID" -#: ipam/forms/filtersets.py:556 ipam/forms/model_forms.py:318 -#: ipam/forms/model_forms.py:750 ipam/forms/model_forms.py:776 +#: ipam/forms/filtersets.py:563 ipam/forms/model_forms.py:318 +#: ipam/forms/model_forms.py:759 ipam/forms/model_forms.py:785 #: ipam/tables/vlans.py:191 templates/virtualization/virtualdisk.html:21 #: templates/virtualization/virtualmachine.html:12 #: templates/virtualization/vminterface.html:21 @@ -8619,7 +8664,7 @@ msgid "IP Range" msgstr "IP Aralığı" #: ipam/forms/model_forms.py:293 ipam/forms/model_forms.py:319 -#: ipam/forms/model_forms.py:462 templates/ipam/fhrpgroup.html:19 +#: ipam/forms/model_forms.py:471 templates/ipam/fhrpgroup.html:19 msgid "FHRP Group" msgstr "FHRP Grubu" @@ -8631,42 +8676,42 @@ msgstr "Bunu cihaz/VM için birincil IP yapın" msgid "NAT IP (Inside)" msgstr "NAT IP (İç)" -#: ipam/forms/model_forms.py:373 +#: ipam/forms/model_forms.py:382 msgid "An IP address can only be assigned to a single object." msgstr "IP adresi yalnızca tek bir nesneye atanabilir." -#: ipam/forms/model_forms.py:379 ipam/models/ip.py:896 +#: ipam/forms/model_forms.py:388 ipam/models/ip.py:897 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" msgstr "" "Üst nesne için birincil IP olarak belirlenirken IP adresi yeniden atanamıyor" -#: ipam/forms/model_forms.py:389 +#: ipam/forms/model_forms.py:398 msgid "" "Only IP addresses assigned to an interface can be designated as primary IPs." msgstr "" "Yalnızca bir arayüze atanan IP adresleri birincil IP olarak belirlenebilir." -#: ipam/forms/model_forms.py:464 +#: ipam/forms/model_forms.py:473 msgid "Virtual IP Address" msgstr "Sanal IP Adresi" -#: ipam/forms/model_forms.py:549 +#: ipam/forms/model_forms.py:558 msgid "Assignment already exists" msgstr "Atama zaten var" -#: ipam/forms/model_forms.py:628 ipam/forms/model_forms.py:670 +#: ipam/forms/model_forms.py:637 ipam/forms/model_forms.py:679 #: ipam/tables/ip.py:250 templates/ipam/vlan_edit.html:37 #: templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "VLAN Grubu" -#: ipam/forms/model_forms.py:629 +#: ipam/forms/model_forms.py:638 msgid "Child VLANs" msgstr "Çocuk VLAN'ları" -#: ipam/forms/model_forms.py:701 ipam/forms/model_forms.py:733 +#: ipam/forms/model_forms.py:710 ipam/forms/model_forms.py:742 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." @@ -8674,32 +8719,32 @@ msgstr "" "Bir veya daha fazla bağlantı noktası numarasının virgülle ayrılmış listesi. " "Bir aralık bir tire kullanılarak belirtilebilir." -#: ipam/forms/model_forms.py:706 templates/ipam/servicetemplate.html:12 +#: ipam/forms/model_forms.py:715 templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "Hizmet Şablonu" -#: ipam/forms/model_forms.py:753 +#: ipam/forms/model_forms.py:762 msgid "Port(s)" msgstr "Liman (lar)" -#: ipam/forms/model_forms.py:754 ipam/forms/model_forms.py:782 +#: ipam/forms/model_forms.py:763 ipam/forms/model_forms.py:791 #: templates/ipam/service.html:21 msgid "Service" msgstr "Hizmet" -#: ipam/forms/model_forms.py:767 +#: ipam/forms/model_forms.py:776 msgid "Service template" msgstr "Hizmet şablonu" -#: ipam/forms/model_forms.py:779 +#: ipam/forms/model_forms.py:788 msgid "From Template" msgstr "Şablondan" -#: ipam/forms/model_forms.py:780 +#: ipam/forms/model_forms.py:789 msgid "Custom" msgstr "Özel" -#: ipam/forms/model_forms.py:810 +#: ipam/forms/model_forms.py:819 msgid "" "Must specify name, protocol, and port(s) if not using a service template." msgstr "" @@ -8767,43 +8812,43 @@ msgstr "FHRP grup ataması" msgid "FHRP group assignments" msgstr "FHRP grup ödevleri" -#: ipam/models/ip.py:64 +#: ipam/models/ip.py:65 msgid "private" msgstr "özel" -#: ipam/models/ip.py:65 +#: ipam/models/ip.py:66 msgid "IP space managed by this RIR is considered private" msgstr "Bu RIR tarafından yönetilen IP alanı özel olarak kabul edilir" -#: ipam/models/ip.py:71 netbox/navigation/menu.py:169 +#: ipam/models/ip.py:72 netbox/navigation/menu.py:169 msgid "RIRs" msgstr "RIR'ler" -#: ipam/models/ip.py:83 +#: ipam/models/ip.py:84 msgid "IPv4 or IPv6 network" msgstr "IPv4 veya IPv6 ağı" -#: ipam/models/ip.py:90 +#: ipam/models/ip.py:91 msgid "Regional Internet Registry responsible for this IP space" msgstr "Bu IP alanından sorumlu Bölgesel İnternet Kaydı" -#: ipam/models/ip.py:100 +#: ipam/models/ip.py:101 msgid "date added" msgstr "tarih eklendi" -#: ipam/models/ip.py:114 +#: ipam/models/ip.py:115 msgid "aggregate" msgstr "toplamak" -#: ipam/models/ip.py:115 +#: ipam/models/ip.py:116 msgid "aggregates" msgstr "toplar" -#: ipam/models/ip.py:131 +#: ipam/models/ip.py:132 msgid "Cannot create aggregate with /0 mask." msgstr "/0 maskesi ile toplama oluşturulamıyor." -#: ipam/models/ip.py:143 +#: ipam/models/ip.py:144 #, python-brace-format msgid "" "Aggregates cannot overlap. {prefix} is already covered by an existing " @@ -8812,7 +8857,7 @@ msgstr "" "Agremalar üst üste gelemez. {prefix} zaten mevcut bir toplama tarafından " "kapsanmıştır ({aggregate})." -#: ipam/models/ip.py:157 +#: ipam/models/ip.py:158 #, python-brace-format msgid "" "Prefixes cannot overlap aggregates. {prefix} covers an existing aggregate " @@ -8821,167 +8866,167 @@ msgstr "" "Önekler toplamalarla örtüşemez. {prefix} mevcut bir toplamı kapsar " "({aggregate})." -#: ipam/models/ip.py:199 ipam/models/ip.py:736 vpn/models/tunnels.py:114 +#: ipam/models/ip.py:200 ipam/models/ip.py:737 vpn/models/tunnels.py:114 msgid "role" msgstr "rol" -#: ipam/models/ip.py:200 +#: ipam/models/ip.py:201 msgid "roles" msgstr "rolleri" -#: ipam/models/ip.py:216 ipam/models/ip.py:292 +#: ipam/models/ip.py:217 ipam/models/ip.py:293 msgid "prefix" msgstr "önek" -#: ipam/models/ip.py:217 +#: ipam/models/ip.py:218 msgid "IPv4 or IPv6 network with mask" msgstr "Maskeli IPv4 veya IPv6 ağı" -#: ipam/models/ip.py:253 +#: ipam/models/ip.py:254 msgid "Operational status of this prefix" msgstr "Bu önekin operasyonel durumu" -#: ipam/models/ip.py:261 +#: ipam/models/ip.py:262 msgid "The primary function of this prefix" msgstr "Bu önekin birincil işlevi" -#: ipam/models/ip.py:264 +#: ipam/models/ip.py:265 msgid "is a pool" msgstr "bir havuz" -#: ipam/models/ip.py:266 +#: ipam/models/ip.py:267 msgid "All IP addresses within this prefix are considered usable" msgstr "Bu önek içindeki tüm IP adresleri kullanılabilir kabul edilir" -#: ipam/models/ip.py:269 ipam/models/ip.py:536 +#: ipam/models/ip.py:270 ipam/models/ip.py:537 msgid "mark utilized" msgstr "kullanılan işaret" -#: ipam/models/ip.py:293 +#: ipam/models/ip.py:294 msgid "prefixes" msgstr "önekleri" -#: ipam/models/ip.py:316 +#: ipam/models/ip.py:317 msgid "Cannot create prefix with /0 mask." msgstr "/0 maskesi ile önek oluşturulamıyor." -#: ipam/models/ip.py:323 ipam/models/ip.py:873 +#: ipam/models/ip.py:324 ipam/models/ip.py:874 #, python-brace-format msgid "VRF {vrf}" msgstr "VRF {vrf}" -#: ipam/models/ip.py:323 ipam/models/ip.py:873 +#: ipam/models/ip.py:324 ipam/models/ip.py:874 msgid "global table" msgstr "küresel tablo" -#: ipam/models/ip.py:325 +#: ipam/models/ip.py:326 #, python-brace-format msgid "Duplicate prefix found in {table}: {prefix}" msgstr "Yinelenen önek şurada bulundu {table}: {prefix}" -#: ipam/models/ip.py:494 +#: ipam/models/ip.py:495 msgid "start address" msgstr "başlangıç adresi" -#: ipam/models/ip.py:495 ipam/models/ip.py:499 ipam/models/ip.py:711 +#: ipam/models/ip.py:496 ipam/models/ip.py:500 ipam/models/ip.py:712 msgid "IPv4 or IPv6 address (with mask)" msgstr "IPv4 veya IPv6 adresi (maske ile)" -#: ipam/models/ip.py:498 +#: ipam/models/ip.py:499 msgid "end address" msgstr "bitiş adresi" -#: ipam/models/ip.py:525 +#: ipam/models/ip.py:526 msgid "Operational status of this range" msgstr "Bu aralığın çalışma durumu" -#: ipam/models/ip.py:533 +#: ipam/models/ip.py:534 msgid "The primary function of this range" msgstr "Bu aralığın birincil işlevi" -#: ipam/models/ip.py:547 +#: ipam/models/ip.py:548 msgid "IP range" msgstr "IP aralığı" -#: ipam/models/ip.py:548 +#: ipam/models/ip.py:549 msgid "IP ranges" msgstr "IP aralıkları" -#: ipam/models/ip.py:564 +#: ipam/models/ip.py:565 msgid "Starting and ending IP address versions must match" msgstr "Başlangıç ve bitiş IP adresi sürümleri eşleşmelidir" -#: ipam/models/ip.py:570 +#: ipam/models/ip.py:571 msgid "Starting and ending IP address masks must match" msgstr "Başlangıç ve bitiş IP adresi maskeleri eşleşmelidir" -#: ipam/models/ip.py:577 +#: ipam/models/ip.py:578 #, python-brace-format msgid "" "Ending address must be greater than the starting address ({start_address})" msgstr "" "Bitiş adresi başlangıç adresinden daha büyük olmalıdır ({start_address})" -#: ipam/models/ip.py:589 +#: ipam/models/ip.py:590 #, python-brace-format msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}" msgstr "" "Tanımlanan adresler aralık ile örtüşüyor {overlapping_range} VRF'de {vrf}" -#: ipam/models/ip.py:598 +#: ipam/models/ip.py:599 #, python-brace-format msgid "Defined range exceeds maximum supported size ({max_size})" msgstr "Tanımlanan aralık maksimum desteklenen boyutu aşıyor ({max_size})" -#: ipam/models/ip.py:710 tenancy/models/contacts.py:82 +#: ipam/models/ip.py:711 tenancy/models/contacts.py:82 msgid "address" msgstr "adres" -#: ipam/models/ip.py:733 +#: ipam/models/ip.py:734 msgid "The operational status of this IP" msgstr "Bu IP'nin operasyonel durumu" -#: ipam/models/ip.py:740 +#: ipam/models/ip.py:741 msgid "The functional role of this IP" msgstr "Bu IP'nin işlevsel rolü" -#: ipam/models/ip.py:764 templates/ipam/ipaddress.html:72 +#: ipam/models/ip.py:765 templates/ipam/ipaddress.html:72 msgid "NAT (inside)" msgstr "NAT (iç)" -#: ipam/models/ip.py:765 +#: ipam/models/ip.py:766 msgid "The IP for which this address is the \"outside\" IP" msgstr "Bu adresin “dış” IP olduğu IP" -#: ipam/models/ip.py:772 +#: ipam/models/ip.py:773 msgid "Hostname or FQDN (not case-sensitive)" msgstr "Ana bilgisayar adı veya FQDN (büyük/küçük harfe duyarlı değil)" -#: ipam/models/ip.py:788 ipam/models/services.py:93 +#: ipam/models/ip.py:789 ipam/models/services.py:93 msgid "IP addresses" msgstr "IP adresleri" -#: ipam/models/ip.py:844 +#: ipam/models/ip.py:845 msgid "Cannot create IP address with /0 mask." msgstr "/0 maskesi ile IP adresi oluşturulamıyor." -#: ipam/models/ip.py:850 +#: ipam/models/ip.py:851 #, python-brace-format msgid "{ip} is a network ID, which may not be assigned to an interface." msgstr "{ip} bir arayüze atanamayacak bir ağ kimliğidir." -#: ipam/models/ip.py:861 +#: ipam/models/ip.py:862 #, python-brace-format msgid "" "{ip} is a broadcast address, which may not be assigned to an interface." msgstr "{ip} bir arayüze atanamayacak bir yayın adresidir." -#: ipam/models/ip.py:875 +#: ipam/models/ip.py:876 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "Yinelenen IP adresi şurada bulundu {table}: {ipaddress}" -#: ipam/models/ip.py:902 +#: ipam/models/ip.py:903 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "Yalnızca IPv6 adreslerine SLAAC durumu atanabilir" @@ -9073,7 +9118,7 @@ msgid "The primary function of this VLAN" msgstr "Bu VLAN'ın birincil işlevi" #: ipam/models/vlans.py:215 ipam/tables/ip.py:175 ipam/tables/vlans.py:78 -#: ipam/views.py:957 netbox/navigation/menu.py:180 +#: ipam/views.py:978 netbox/navigation/menu.py:180 #: netbox/navigation/menu.py:182 msgid "VLANs" msgstr "VLAN'lar" @@ -9148,7 +9193,7 @@ msgid "Added" msgstr "Eklendi" #: ipam/tables/ip.py:127 ipam/tables/ip.py:165 ipam/tables/vlans.py:138 -#: ipam/views.py:348 netbox/navigation/menu.py:152 +#: ipam/views.py:349 netbox/navigation/menu.py:152 #: netbox/navigation/menu.py:154 templates/ipam/vlan.html:84 msgid "Prefixes" msgstr "Önekler" @@ -9249,23 +9294,23 @@ msgstr "" "DNS adlarında yalnızca alfanümerik karakterlere, yıldızlara, tirelere, " "noktalara ve alt çizgilere izin verilir" -#: ipam/views.py:535 +#: ipam/views.py:541 msgid "Child Prefixes" msgstr "Çocuk Önekleri" -#: ipam/views.py:570 +#: ipam/views.py:576 msgid "Child Ranges" msgstr "Çocuk Aralıkları" -#: ipam/views.py:886 +#: ipam/views.py:902 msgid "Related IPs" msgstr "İlgili IP'ler" -#: ipam/views.py:1112 +#: ipam/views.py:1133 msgid "Device Interfaces" msgstr "Aygıt Arayüzleri" -#: ipam/views.py:1129 +#: ipam/views.py:1150 msgid "VM Interfaces" msgstr "VM Arayüzleri" @@ -9828,39 +9873,43 @@ msgstr "Küme Grupları" msgid "Circuit Types" msgstr "Devre Türleri" -#: netbox/navigation/menu.py:264 netbox/navigation/menu.py:266 +#: netbox/navigation/menu.py:261 +msgid "Circuit Terminations" +msgstr "Devre Sonlandırmaları" + +#: netbox/navigation/menu.py:265 netbox/navigation/menu.py:267 msgid "Providers" msgstr "Sağlayıcılar" -#: netbox/navigation/menu.py:267 templates/circuits/provider.html:51 +#: netbox/navigation/menu.py:268 templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "Sağlayıcı Hesapları" -#: netbox/navigation/menu.py:268 +#: netbox/navigation/menu.py:269 msgid "Provider Networks" msgstr "Sağlayıcı Ağları" -#: netbox/navigation/menu.py:282 +#: netbox/navigation/menu.py:283 msgid "Power Panels" msgstr "Güç Panelleri" -#: netbox/navigation/menu.py:293 +#: netbox/navigation/menu.py:294 msgid "Configurations" msgstr "Yapılandırmalar" -#: netbox/navigation/menu.py:295 +#: netbox/navigation/menu.py:296 msgid "Config Contexts" msgstr "Yapılandırma Bağlamları" -#: netbox/navigation/menu.py:296 +#: netbox/navigation/menu.py:297 msgid "Config Templates" msgstr "Yapılandırma Şablonları" -#: netbox/navigation/menu.py:303 netbox/navigation/menu.py:307 +#: netbox/navigation/menu.py:304 netbox/navigation/menu.py:308 msgid "Customization" msgstr "Özelleştirme" -#: netbox/navigation/menu.py:309 templates/dcim/device_edit.html:103 +#: netbox/navigation/menu.py:310 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 @@ -9870,107 +9919,107 @@ msgstr "Özelleştirme" msgid "Custom Fields" msgstr "Özel Alanlar" -#: netbox/navigation/menu.py:310 +#: netbox/navigation/menu.py:311 msgid "Custom Field Choices" msgstr "Özel Alan Seçenekleri" -#: netbox/navigation/menu.py:311 +#: netbox/navigation/menu.py:312 msgid "Custom Links" msgstr "Özel Bağlantılar" -#: netbox/navigation/menu.py:312 +#: netbox/navigation/menu.py:313 msgid "Export Templates" msgstr "Şablonları Dışa Aktar" -#: netbox/navigation/menu.py:313 +#: netbox/navigation/menu.py:314 msgid "Saved Filters" msgstr "Kaydedilen Filtreler" -#: netbox/navigation/menu.py:315 +#: netbox/navigation/menu.py:316 msgid "Image Attachments" msgstr "Görüntü Ekleri" -#: netbox/navigation/menu.py:333 +#: netbox/navigation/menu.py:334 msgid "Operations" msgstr "Operasyonlar" -#: netbox/navigation/menu.py:337 +#: netbox/navigation/menu.py:338 msgid "Integrations" msgstr "Entegrasyonlar" -#: netbox/navigation/menu.py:339 +#: netbox/navigation/menu.py:340 msgid "Data Sources" msgstr "Veri Kaynakları" -#: netbox/navigation/menu.py:340 +#: netbox/navigation/menu.py:341 msgid "Event Rules" msgstr "Etkinlik Kuralları" -#: netbox/navigation/menu.py:341 +#: netbox/navigation/menu.py:342 msgid "Webhooks" msgstr "Web kancaları" -#: netbox/navigation/menu.py:345 netbox/navigation/menu.py:349 +#: netbox/navigation/menu.py:346 netbox/navigation/menu.py:350 #: netbox/views/generic/feature_views.py:151 #: templates/extras/report/base.html:37 templates/extras/script/base.html:36 msgid "Jobs" msgstr "Meslekler" -#: netbox/navigation/menu.py:355 +#: netbox/navigation/menu.py:356 msgid "Logging" msgstr "Günlüğe kaydetme" -#: netbox/navigation/menu.py:357 +#: netbox/navigation/menu.py:358 msgid "Journal Entries" msgstr "Dergi Girişleri" -#: netbox/navigation/menu.py:358 templates/extras/objectchange.html:8 +#: netbox/navigation/menu.py:359 templates/extras/objectchange.html:8 #: templates/extras/objectchange_list.html:4 msgid "Change Log" msgstr "Değişim Günlüğü" -#: netbox/navigation/menu.py:365 templates/inc/user_menu.html:11 +#: netbox/navigation/menu.py:366 templates/inc/user_menu.html:11 msgid "Admin" msgstr "Yönetici" -#: netbox/navigation/menu.py:373 templates/users/group.html:29 +#: netbox/navigation/menu.py:374 templates/users/group.html:29 #: users/forms/model_forms.py:233 users/forms/model_forms.py:245 #: users/forms/model_forms.py:297 users/tables.py:102 msgid "Users" msgstr "Kullanıcılar" -#: netbox/navigation/menu.py:393 users/forms/model_forms.py:182 +#: netbox/navigation/menu.py:394 users/forms/model_forms.py:182 #: users/forms/model_forms.py:194 users/forms/model_forms.py:302 #: users/tables.py:35 users/tables.py:106 msgid "Groups" msgstr "Gruplar" -#: netbox/navigation/menu.py:413 templates/account/base.html:21 +#: netbox/navigation/menu.py:414 templates/account/base.html:21 #: templates/inc/user_menu.html:36 msgid "API Tokens" msgstr "API Belirteçleri" -#: netbox/navigation/menu.py:420 users/forms/model_forms.py:188 +#: netbox/navigation/menu.py:421 users/forms/model_forms.py:188 #: users/forms/model_forms.py:196 users/forms/model_forms.py:239 #: users/forms/model_forms.py:246 msgid "Permissions" msgstr "İzinler" -#: netbox/navigation/menu.py:428 netbox/navigation/menu.py:432 +#: netbox/navigation/menu.py:429 netbox/navigation/menu.py:433 #: templates/core/system.html:7 msgid "System" msgstr "Sistem" -#: netbox/navigation/menu.py:437 +#: netbox/navigation/menu.py:438 msgid "Configuration History" msgstr "Yapılandırma Geçmişi" -#: netbox/navigation/menu.py:443 templates/core/rq_task.html:8 +#: netbox/navigation/menu.py:444 templates/core/rq_task.html:8 #: templates/core/rq_task_list.html:22 msgid "Background Tasks" msgstr "Arka Plan Görevleri" -#: netbox/navigation/menu.py:482 templates/500.html:35 +#: netbox/navigation/menu.py:483 templates/500.html:35 #: templates/account/preferences.html:22 templates/core/system.html:80 msgid "Plugins" msgstr "Eklentiler" @@ -10108,34 +10157,46 @@ 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/settings.py:715 +#: netbox/settings.py:722 +msgid "German" +msgstr "Alman" + +#: netbox/settings.py:723 msgid "English" msgstr "İngilizce" -#: netbox/settings.py:716 +#: netbox/settings.py:724 msgid "Spanish" msgstr "İspanyolca" -#: netbox/settings.py:717 +#: netbox/settings.py:725 msgid "French" msgstr "Fransızca" -#: netbox/settings.py:718 +#: netbox/settings.py:726 msgid "Japanese" msgstr "Japonca" -#: netbox/settings.py:719 +#: netbox/settings.py:727 msgid "Portuguese" msgstr "Portekizce" -#: netbox/settings.py:720 +#: netbox/settings.py:728 msgid "Russian" msgstr "Rusça" -#: netbox/settings.py:721 +#: netbox/settings.py:729 msgid "Turkish" msgstr "Türkçe" +#: netbox/settings.py:730 +msgid "Ukrainian" +msgstr "Ukraynalı" + +#: netbox/settings.py:731 +msgid "Chinese" +msgstr "Çince" + #: netbox/tables/columns.py:185 msgid "Toggle all" msgstr "Tümünü değiştir" @@ -10148,16 +10209,16 @@ msgstr "Açılır menüyü Aç/Kapat" msgid "Error" msgstr "Hata" -#: netbox/tables/tables.py:56 +#: netbox/tables/tables.py:57 #, python-brace-format msgid "No {model_name} found" msgstr "Hayır {model_name} bulunan" -#: netbox/tables/tables.py:246 templates/generic/bulk_import.html:117 +#: netbox/tables/tables.py:248 templates/generic/bulk_import.html:117 msgid "Field" msgstr "Tarla" -#: netbox/tables/tables.py:249 +#: netbox/tables/tables.py:251 msgid "Value" msgstr "Değer" @@ -10266,7 +10327,7 @@ msgstr "Şifreyi Değiştir" #: 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:37 +#: 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 @@ -10359,7 +10420,8 @@ msgstr "Atanan Gruplar" #: templates/account/profile.html:58 #: templates/circuits/circuit_terminations_swap.html:18 #: templates/circuits/circuit_terminations_swap.html:26 -#: templates/circuits/inc/circuit_termination.html:154 +#: templates/circuits/circuittermination.html:34 +#: templates/circuits/inc/circuit_termination.html:68 #: templates/dcim/devicebay.html:59 #: templates/dcim/inc/panels/inventory_items.html:45 #: templates/dcim/interface.html:296 templates/dcim/modulebay.html:76 @@ -10476,13 +10538,6 @@ msgstr "Devre Ekle" msgid "Circuit Type" msgstr "Devre Tipi" -#: templates/circuits/inc/circuit_termination.html:6 -#: templates/circuits/inc/circuit_termination.html:41 -#: templates/dcim/cable.html:68 templates/dcim/cable.html:72 -#: vpn/forms/bulk_import.py:100 vpn/forms/filtersets.py:77 -msgid "Termination" -msgstr "Fesih" - #: templates/circuits/inc/circuit_termination.html:10 #: templates/dcim/devicetype/component_templates.html:33 #: templates/dcim/manufacturer.html:11 @@ -10495,7 +10550,7 @@ msgid "Add" msgstr "Ekle" #: templates/circuits/inc/circuit_termination.html:15 -#: templates/circuits/inc/circuit_termination.html:62 +#: 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:32 @@ -10510,33 +10565,33 @@ msgstr "Düzenle" msgid "Swap" msgstr "Takas" -#: templates/circuits/inc/circuit_termination.html:45 +#: templates/circuits/inc/circuit_termination_fields.html:19 #: templates/dcim/consoleport.html:59 templates/dcim/consoleserverport.html:60 #: templates/dcim/powerfeed.html:114 msgid "Marked as connected" msgstr "Bağlı olarak işaretlendi" -#: templates/circuits/inc/circuit_termination.html:47 +#: templates/circuits/inc/circuit_termination_fields.html:21 msgid "to" msgstr "doğru" -#: templates/circuits/inc/circuit_termination.html:57 -#: templates/circuits/inc/circuit_termination.html:58 +#: 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 msgid "Trace" msgstr "İzleme" -#: templates/circuits/inc/circuit_termination.html:61 +#: templates/circuits/inc/circuit_termination_fields.html:35 msgid "Edit cable" msgstr "Kabloyu düzenle" -#: templates/circuits/inc/circuit_termination.html:66 +#: templates/circuits/inc/circuit_termination_fields.html:40 msgid "Remove cable" msgstr "Kabloyu çıkarın" -#: templates/circuits/inc/circuit_termination.html:67 +#: 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 @@ -10548,7 +10603,7 @@ msgstr "Kabloyu çıkarın" msgid "Disconnect" msgstr "Bağlantıyı kes" -#: templates/circuits/inc/circuit_termination.html:74 +#: 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 @@ -10557,19 +10612,19 @@ msgstr "Bağlantıyı kes" msgid "Connect" msgstr "Bağlan" -#: templates/circuits/inc/circuit_termination.html:96 +#: templates/circuits/inc/circuit_termination_fields.html:70 msgid "Downstream" msgstr "Aşağı doğru" -#: templates/circuits/inc/circuit_termination.html:97 +#: templates/circuits/inc/circuit_termination_fields.html:71 msgid "Upstream" msgstr "Yukarı akış" -#: templates/circuits/inc/circuit_termination.html:106 +#: templates/circuits/inc/circuit_termination_fields.html:80 msgid "Cross-Connect" msgstr "Çapraz Bağlantı" -#: templates/circuits/inc/circuit_termination.html:110 +#: templates/circuits/inc/circuit_termination_fields.html:84 msgid "Patch Panel/Port" msgstr "Yama Paneli/Bağlantı Noktası" @@ -11985,11 +12040,15 @@ msgstr "Rapor" msgid "You do not have permission to run scripts" msgstr "Komut dosyalarını çalıştırma izniniz yok" -#: templates/extras/script.html:40 templates/extras/script.html:44 +#: templates/extras/script.html:41 templates/extras/script.html:45 #: templates/extras/script_list.html:88 msgid "Run Script" msgstr "Komut Dosyasını Çalıştır" +#: templates/extras/script.html:51 templates/extras/script/source.html:10 +msgid "Error loading script" +msgstr "Komut dosyası yüklenirken hata oluştu" + #: templates/extras/script/jobs.html:16 msgid "Script no longer exists in the source file." msgstr "Kaynak dosyada komut dosyası artık mevcut değil." diff --git a/netbox/translations/uk/LC_MESSAGES/django.po b/netbox/translations/uk/LC_MESSAGES/django.po index f4b8924fa..b863b8192 100644 --- a/netbox/translations/uk/LC_MESSAGES/django.po +++ b/netbox/translations/uk/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-05-14 13:22+0000\n" +"POT-Creation-Date: 2024-05-22 17:41+0000\n" "PO-Revision-Date: 2023-10-30 17:48+0000\n" "Last-Translator: Jeremy Stretch, 2024\n" "Language-Team: Ukrainian (https://app.transifex.com/netbox-community/teams/178115/uk/)\n" @@ -64,19 +64,19 @@ msgid "Your preferences have been updated." msgstr "Ваші налаштування були оновлені." #: circuits/choices.py:21 dcim/choices.py:20 dcim/choices.py:102 -#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1429 -#: dcim/choices.py:1505 dcim/choices.py:1555 virtualization/choices.py:20 +#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1457 +#: dcim/choices.py:1533 dcim/choices.py:1583 virtualization/choices.py:20 #: virtualization/choices.py:45 vpn/choices.py:18 msgid "Planned" msgstr "Заплановано" -#: circuits/choices.py:22 netbox/navigation/menu.py:289 +#: circuits/choices.py:22 netbox/navigation/menu.py:290 msgid "Provisioning" msgstr "Забезпечення" #: circuits/choices.py:23 core/tables/tasks.py:22 dcim/choices.py:22 #: dcim/choices.py:103 dcim/choices.py:173 dcim/choices.py:219 -#: dcim/choices.py:1504 dcim/choices.py:1554 extras/tables/tables.py:385 +#: dcim/choices.py:1532 dcim/choices.py:1582 extras/tables/tables.py:385 #: 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 @@ -86,7 +86,7 @@ msgid "Active" msgstr "Активний" #: circuits/choices.py:24 dcim/choices.py:172 dcim/choices.py:218 -#: dcim/choices.py:1503 dcim/choices.py:1556 virtualization/choices.py:24 +#: dcim/choices.py:1531 dcim/choices.py:1584 virtualization/choices.py:24 #: virtualization/choices.py:43 msgid "Offline" msgstr "Офлайн" @@ -101,8 +101,8 @@ msgstr "Зняті з експлуатації" #: circuits/filtersets.py:29 circuits/filtersets.py:196 dcim/filtersets.py:97 #: dcim/filtersets.py:151 dcim/filtersets.py:211 dcim/filtersets.py:297 -#: dcim/filtersets.py:406 dcim/filtersets.py:969 dcim/filtersets.py:1295 -#: dcim/filtersets.py:1822 dcim/filtersets.py:2065 dcim/filtersets.py:2123 +#: dcim/filtersets.py:406 dcim/filtersets.py:969 dcim/filtersets.py:1305 +#: dcim/filtersets.py:1832 dcim/filtersets.py:2075 dcim/filtersets.py:2133 #: ipam/filtersets.py:339 ipam/filtersets.py:945 #: virtualization/filtersets.py:45 virtualization/filtersets.py:173 #: vpn/filtersets.py:377 @@ -111,8 +111,8 @@ msgstr "Регіон (ID)" #: circuits/filtersets.py:36 circuits/filtersets.py:203 dcim/filtersets.py:104 #: dcim/filtersets.py:157 dcim/filtersets.py:218 dcim/filtersets.py:304 -#: dcim/filtersets.py:413 dcim/filtersets.py:976 dcim/filtersets.py:1302 -#: dcim/filtersets.py:1829 dcim/filtersets.py:2072 dcim/filtersets.py:2130 +#: dcim/filtersets.py:413 dcim/filtersets.py:976 dcim/filtersets.py:1312 +#: dcim/filtersets.py:1839 dcim/filtersets.py:2082 dcim/filtersets.py:2140 #: extras/filtersets.py:461 ipam/filtersets.py:346 ipam/filtersets.py:952 #: virtualization/filtersets.py:52 virtualization/filtersets.py:180 #: vpn/filtersets.py:372 @@ -121,8 +121,8 @@ msgstr "Регіон (слимак)" #: circuits/filtersets.py:42 circuits/filtersets.py:209 dcim/filtersets.py:127 #: dcim/filtersets.py:224 dcim/filtersets.py:310 dcim/filtersets.py:419 -#: dcim/filtersets.py:982 dcim/filtersets.py:1308 dcim/filtersets.py:1835 -#: dcim/filtersets.py:2078 dcim/filtersets.py:2136 ipam/filtersets.py:352 +#: dcim/filtersets.py:982 dcim/filtersets.py:1318 dcim/filtersets.py:1845 +#: dcim/filtersets.py:2088 dcim/filtersets.py:2146 ipam/filtersets.py:352 #: ipam/filtersets.py:958 virtualization/filtersets.py:58 #: virtualization/filtersets.py:186 msgid "Site group (ID)" @@ -130,16 +130,18 @@ msgstr "Група сайту (ID)" #: circuits/filtersets.py:49 circuits/filtersets.py:216 dcim/filtersets.py:134 #: dcim/filtersets.py:231 dcim/filtersets.py:317 dcim/filtersets.py:426 -#: dcim/filtersets.py:989 dcim/filtersets.py:1315 dcim/filtersets.py:1842 -#: dcim/filtersets.py:2085 dcim/filtersets.py:2143 extras/filtersets.py:467 +#: dcim/filtersets.py:989 dcim/filtersets.py:1325 dcim/filtersets.py:1852 +#: dcim/filtersets.py:2095 dcim/filtersets.py:2153 extras/filtersets.py:467 #: ipam/filtersets.py:359 ipam/filtersets.py:965 #: virtualization/filtersets.py:65 virtualization/filtersets.py:193 msgid "Site group (slug)" msgstr "Група ділянок (слимак)" -#: circuits/filtersets.py:54 circuits/forms/bulk_import.py:116 -#: circuits/forms/filtersets.py:48 circuits/forms/filtersets.py:168 -#: circuits/forms/model_forms.py:136 circuits/forms/model_forms.py:152 +#: circuits/filtersets.py:54 circuits/forms/bulk_edit.py:186 +#: circuits/forms/bulk_edit.py:214 circuits/forms/bulk_import.py:126 +#: circuits/forms/filtersets.py:49 circuits/forms/filtersets.py:169 +#: circuits/forms/filtersets.py:207 circuits/forms/model_forms.py:136 +#: circuits/forms/model_forms.py:152 circuits/tables/circuits.py:105 #: dcim/forms/bulk_edit.py:167 dcim/forms/bulk_edit.py:239 #: dcim/forms/bulk_edit.py:575 dcim/forms/bulk_edit.py:771 #: dcim/forms/bulk_import.py:130 dcim/forms/bulk_import.py:184 @@ -147,10 +149,10 @@ msgstr "Група ділянок (слимак)" #: dcim/forms/bulk_import.py:1262 dcim/forms/bulk_import.py:1290 #: dcim/forms/filtersets.py:85 dcim/forms/filtersets.py:218 #: dcim/forms/filtersets.py:265 dcim/forms/filtersets.py:374 -#: dcim/forms/filtersets.py:681 dcim/forms/filtersets.py:908 -#: dcim/forms/filtersets.py:932 dcim/forms/filtersets.py:1022 -#: dcim/forms/filtersets.py:1060 dcim/forms/filtersets.py:1468 -#: dcim/forms/filtersets.py:1492 dcim/forms/filtersets.py:1516 +#: dcim/forms/filtersets.py:682 dcim/forms/filtersets.py:916 +#: dcim/forms/filtersets.py:940 dcim/forms/filtersets.py:1030 +#: dcim/forms/filtersets.py:1068 dcim/forms/filtersets.py:1476 +#: dcim/forms/filtersets.py:1500 dcim/forms/filtersets.py:1524 #: dcim/forms/model_forms.py:136 dcim/forms/model_forms.py:164 #: dcim/forms/model_forms.py:206 dcim/forms/model_forms.py:406 #: dcim/forms/model_forms.py:668 dcim/forms/object_create.py:391 @@ -160,11 +162,11 @@ msgstr "Група ділянок (слимак)" #: ipam/forms/bulk_edit.py:270 ipam/forms/bulk_edit.py:448 #: ipam/forms/bulk_edit.py:522 ipam/forms/bulk_import.py:170 #: ipam/forms/bulk_import.py:437 ipam/forms/filtersets.py:153 -#: ipam/forms/filtersets.py:230 ipam/forms/filtersets.py:425 -#: ipam/forms/filtersets.py:489 ipam/forms/model_forms.py:203 -#: ipam/forms/model_forms.py:578 ipam/forms/model_forms.py:673 +#: ipam/forms/filtersets.py:231 ipam/forms/filtersets.py:432 +#: ipam/forms/filtersets.py:496 ipam/forms/model_forms.py:203 +#: ipam/forms/model_forms.py:587 ipam/forms/model_forms.py:682 #: ipam/tables/ip.py:244 ipam/tables/vlans.py:114 ipam/tables/vlans.py:216 -#: templates/circuits/inc/circuit_termination.html:32 +#: templates/circuits/inc/circuit_termination_fields.html:6 #: templates/dcim/device.html:21 templates/dcim/inc/cable_termination.html:8 #: templates/dcim/inc/cable_termination.html:33 #: templates/dcim/location.html:37 templates/dcim/powerpanel.html:22 @@ -201,19 +203,21 @@ msgstr "Ділянка (слимак)" msgid "ASN (ID)" msgstr "АСН (ІДЕНТИФІКАТОР)" -#: circuits/filtersets.py:71 circuits/forms/filtersets.py:28 +#: circuits/filtersets.py:71 circuits/forms/filtersets.py:29 #: ipam/forms/model_forms.py:157 ipam/models/asns.py:108 #: ipam/models/asns.py:125 ipam/tables/asn.py:41 templates/ipam/asn.html:20 msgid "ASN" msgstr "АСН" #: circuits/filtersets.py:93 circuits/filtersets.py:120 -#: circuits/filtersets.py:154 ipam/filtersets.py:243 +#: circuits/filtersets.py:154 circuits/filtersets.py:281 +#: ipam/filtersets.py:243 msgid "Provider (ID)" msgstr "Провайдер (ID)" #: circuits/filtersets.py:99 circuits/filtersets.py:126 -#: circuits/filtersets.py:160 ipam/filtersets.py:249 +#: circuits/filtersets.py:160 circuits/filtersets.py:287 +#: ipam/filtersets.py:249 msgid "Provider (slug)" msgstr "Провайдер (слимак)" @@ -239,8 +243,8 @@ msgstr "Тип схеми (слимак)" #: circuits/filtersets.py:221 circuits/filtersets.py:266 #: dcim/filtersets.py:235 dcim/filtersets.py:321 dcim/filtersets.py:394 -#: dcim/filtersets.py:993 dcim/filtersets.py:1320 dcim/filtersets.py:1847 -#: dcim/filtersets.py:2089 dcim/filtersets.py:2148 ipam/filtersets.py:232 +#: dcim/filtersets.py:993 dcim/filtersets.py:1330 dcim/filtersets.py:1857 +#: dcim/filtersets.py:2099 dcim/filtersets.py:2158 ipam/filtersets.py:232 #: ipam/filtersets.py:363 ipam/filtersets.py:969 #: virtualization/filtersets.py:69 virtualization/filtersets.py:197 #: vpn/filtersets.py:387 @@ -252,13 +256,13 @@ msgid "Termination A (ID)" msgstr "Припинення A (ID)" #: circuits/filtersets.py:258 core/filtersets.py:73 core/filtersets.py:132 -#: dcim/filtersets.py:693 dcim/filtersets.py:1289 dcim/filtersets.py:2196 +#: dcim/filtersets.py:693 dcim/filtersets.py:1299 dcim/filtersets.py:2206 #: extras/filtersets.py:41 extras/filtersets.py:63 extras/filtersets.py:92 #: extras/filtersets.py:127 extras/filtersets.py:176 extras/filtersets.py:204 #: extras/filtersets.py:234 extras/filtersets.py:271 extras/filtersets.py:343 #: extras/filtersets.py:390 extras/filtersets.py:450 extras/filtersets.py:613 #: extras/filtersets.py:655 extras/filtersets.py:696 -#: ipam/forms/model_forms.py:438 netbox/filtersets.py:275 +#: ipam/forms/model_forms.py:447 netbox/filtersets.py:275 #: netbox/forms/__init__.py:22 netbox/forms/base.py:165 #: templates/htmx/object_selector.html:28 templates/inc/filter_list.html:45 #: templates/ipam/ipaddress_assign.html:29 templates/search.html:7 @@ -268,9 +272,12 @@ msgstr "Припинення A (ID)" msgid "Search" msgstr "Пошук" -#: circuits/filtersets.py:262 circuits/forms/bulk_edit.py:168 -#: circuits/forms/model_forms.py:109 circuits/forms/model_forms.py:131 +#: circuits/filtersets.py:262 circuits/forms/bulk_edit.py:170 +#: circuits/forms/bulk_import.py:117 circuits/forms/filtersets.py:196 +#: circuits/forms/filtersets.py:212 circuits/forms/model_forms.py:109 +#: circuits/forms/model_forms.py:131 circuits/tables/circuits.py:96 #: dcim/forms/connections.py:71 templates/circuits/circuit.html:15 +#: templates/circuits/circuittermination.html:19 #: templates/dcim/inc/cable_termination.html:55 #: templates/dcim/trace/circuit.html:4 msgid "Circuit" @@ -280,48 +287,48 @@ msgstr "Схема" msgid "ProviderNetwork (ID)" msgstr "Мережа провайдера (ID)" -#: circuits/forms/bulk_edit.py:26 circuits/forms/filtersets.py:53 +#: circuits/forms/bulk_edit.py:28 circuits/forms/filtersets.py:54 #: circuits/forms/model_forms.py:27 circuits/tables/providers.py:33 #: dcim/forms/bulk_edit.py:127 dcim/forms/filtersets.py:188 #: dcim/forms/model_forms.py:122 dcim/tables/sites.py:94 -#: ipam/models/asns.py:126 ipam/tables/asn.py:27 ipam/views.py:218 +#: ipam/models/asns.py:126 ipam/tables/asn.py:27 ipam/views.py:219 #: netbox/navigation/menu.py:159 netbox/navigation/menu.py:162 #: templates/circuits/provider.html:23 msgid "ASNs" msgstr "АСН" -#: circuits/forms/bulk_edit.py:30 circuits/forms/bulk_edit.py:52 -#: circuits/forms/bulk_edit.py:79 circuits/forms/bulk_edit.py:100 -#: circuits/forms/bulk_edit.py:160 core/forms/bulk_edit.py:28 -#: core/tables/plugins.py:29 dcim/forms/bulk_create.py:35 -#: dcim/forms/bulk_edit.py:72 dcim/forms/bulk_edit.py:91 -#: dcim/forms/bulk_edit.py:150 dcim/forms/bulk_edit.py:191 -#: dcim/forms/bulk_edit.py:209 dcim/forms/bulk_edit.py:337 -#: dcim/forms/bulk_edit.py:373 dcim/forms/bulk_edit.py:388 -#: dcim/forms/bulk_edit.py:447 dcim/forms/bulk_edit.py:486 -#: dcim/forms/bulk_edit.py:516 dcim/forms/bulk_edit.py:540 -#: dcim/forms/bulk_edit.py:613 dcim/forms/bulk_edit.py:665 -#: dcim/forms/bulk_edit.py:717 dcim/forms/bulk_edit.py:740 -#: dcim/forms/bulk_edit.py:788 dcim/forms/bulk_edit.py:858 -#: dcim/forms/bulk_edit.py:911 dcim/forms/bulk_edit.py:946 -#: dcim/forms/bulk_edit.py:986 dcim/forms/bulk_edit.py:1030 -#: dcim/forms/bulk_edit.py:1075 dcim/forms/bulk_edit.py:1102 -#: dcim/forms/bulk_edit.py:1120 dcim/forms/bulk_edit.py:1138 -#: dcim/forms/bulk_edit.py:1156 dcim/forms/bulk_edit.py:1575 -#: extras/forms/bulk_edit.py:36 extras/forms/bulk_edit.py:124 -#: extras/forms/bulk_edit.py:153 extras/forms/bulk_edit.py:183 -#: extras/forms/bulk_edit.py:264 extras/forms/bulk_edit.py:288 -#: extras/forms/bulk_edit.py:302 extras/tables/tables.py:58 -#: ipam/forms/bulk_edit.py:51 ipam/forms/bulk_edit.py:71 -#: ipam/forms/bulk_edit.py:91 ipam/forms/bulk_edit.py:115 -#: ipam/forms/bulk_edit.py:144 ipam/forms/bulk_edit.py:173 -#: ipam/forms/bulk_edit.py:192 ipam/forms/bulk_edit.py:261 -#: ipam/forms/bulk_edit.py:305 ipam/forms/bulk_edit.py:353 -#: ipam/forms/bulk_edit.py:396 ipam/forms/bulk_edit.py:424 -#: ipam/forms/bulk_edit.py:554 ipam/forms/bulk_edit.py:585 -#: templates/account/token.html:35 templates/circuits/circuit.html:59 -#: templates/circuits/circuittype.html:26 -#: templates/circuits/inc/circuit_termination.html:114 +#: circuits/forms/bulk_edit.py:32 circuits/forms/bulk_edit.py:54 +#: circuits/forms/bulk_edit.py:81 circuits/forms/bulk_edit.py:102 +#: circuits/forms/bulk_edit.py:162 circuits/forms/bulk_edit.py:181 +#: core/forms/bulk_edit.py:28 core/tables/plugins.py:29 +#: dcim/forms/bulk_create.py:35 dcim/forms/bulk_edit.py:72 +#: dcim/forms/bulk_edit.py:91 dcim/forms/bulk_edit.py:150 +#: dcim/forms/bulk_edit.py:191 dcim/forms/bulk_edit.py:209 +#: dcim/forms/bulk_edit.py:337 dcim/forms/bulk_edit.py:373 +#: dcim/forms/bulk_edit.py:388 dcim/forms/bulk_edit.py:447 +#: dcim/forms/bulk_edit.py:486 dcim/forms/bulk_edit.py:516 +#: dcim/forms/bulk_edit.py:540 dcim/forms/bulk_edit.py:613 +#: dcim/forms/bulk_edit.py:665 dcim/forms/bulk_edit.py:717 +#: dcim/forms/bulk_edit.py:740 dcim/forms/bulk_edit.py:788 +#: dcim/forms/bulk_edit.py:858 dcim/forms/bulk_edit.py:911 +#: dcim/forms/bulk_edit.py:946 dcim/forms/bulk_edit.py:986 +#: dcim/forms/bulk_edit.py:1030 dcim/forms/bulk_edit.py:1075 +#: dcim/forms/bulk_edit.py:1102 dcim/forms/bulk_edit.py:1120 +#: dcim/forms/bulk_edit.py:1138 dcim/forms/bulk_edit.py:1156 +#: dcim/forms/bulk_edit.py:1575 extras/forms/bulk_edit.py:36 +#: extras/forms/bulk_edit.py:124 extras/forms/bulk_edit.py:153 +#: extras/forms/bulk_edit.py:183 extras/forms/bulk_edit.py:264 +#: extras/forms/bulk_edit.py:288 extras/forms/bulk_edit.py:302 +#: extras/tables/tables.py:58 ipam/forms/bulk_edit.py:51 +#: ipam/forms/bulk_edit.py:71 ipam/forms/bulk_edit.py:91 +#: ipam/forms/bulk_edit.py:115 ipam/forms/bulk_edit.py:144 +#: ipam/forms/bulk_edit.py:173 ipam/forms/bulk_edit.py:192 +#: ipam/forms/bulk_edit.py:261 ipam/forms/bulk_edit.py:305 +#: ipam/forms/bulk_edit.py:353 ipam/forms/bulk_edit.py:396 +#: ipam/forms/bulk_edit.py:424 ipam/forms/bulk_edit.py:554 +#: ipam/forms/bulk_edit.py:585 templates/account/token.html:35 +#: templates/circuits/circuit.html:59 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/dcim/cable.html:36 @@ -387,32 +394,35 @@ msgstr "АСН" msgid "Description" msgstr "Опис" -#: circuits/forms/bulk_edit.py:47 circuits/forms/bulk_edit.py:69 -#: circuits/forms/bulk_edit.py:119 circuits/forms/bulk_import.py:34 -#: circuits/forms/bulk_import.py:49 circuits/forms/bulk_import.py:75 -#: circuits/forms/filtersets.py:67 circuits/forms/filtersets.py:85 -#: circuits/forms/filtersets.py:113 circuits/forms/filtersets.py:128 +#: circuits/forms/bulk_edit.py:49 circuits/forms/bulk_edit.py:71 +#: circuits/forms/bulk_edit.py:121 circuits/forms/bulk_import.py:35 +#: circuits/forms/bulk_import.py:50 circuits/forms/bulk_import.py:76 +#: circuits/forms/filtersets.py:68 circuits/forms/filtersets.py:86 +#: circuits/forms/filtersets.py:114 circuits/forms/filtersets.py:129 +#: circuits/forms/filtersets.py:197 circuits/forms/filtersets.py:230 #: circuits/forms/model_forms.py:45 circuits/forms/model_forms.py:59 -#: circuits/forms/model_forms.py:91 circuits/tables/circuits.py:55 -#: circuits/tables/providers.py:72 circuits/tables/providers.py:103 -#: templates/circuits/circuit.html:18 templates/circuits/provider.html:20 +#: circuits/forms/model_forms.py:91 circuits/tables/circuits.py:56 +#: circuits/tables/circuits.py:100 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 msgid "Provider" msgstr "провайдер" -#: circuits/forms/bulk_edit.py:76 circuits/forms/filtersets.py:88 +#: circuits/forms/bulk_edit.py:78 circuits/forms/filtersets.py:89 #: templates/circuits/providernetwork.html:28 msgid "Service ID" msgstr "Ідентифікатор служби" -#: circuits/forms/bulk_edit.py:96 circuits/forms/filtersets.py:104 +#: circuits/forms/bulk_edit.py:98 circuits/forms/filtersets.py:105 #: dcim/forms/bulk_edit.py:205 dcim/forms/bulk_edit.py:502 #: dcim/forms/bulk_edit.py:702 dcim/forms/bulk_edit.py:1071 #: dcim/forms/bulk_edit.py:1098 dcim/forms/bulk_edit.py:1571 -#: dcim/forms/filtersets.py:975 dcim/forms/filtersets.py:1351 -#: dcim/forms/filtersets.py:1372 dcim/tables/devices.py:699 +#: dcim/forms/filtersets.py:983 dcim/forms/filtersets.py:1359 +#: dcim/forms/filtersets.py:1380 dcim/tables/devices.py:699 #: dcim/tables/devices.py:759 dcim/tables/devices.py:986 #: dcim/tables/devicetypes.py:245 dcim/tables/devicetypes.py:260 #: dcim/tables/racks.py:32 extras/forms/bulk_edit.py:260 @@ -424,8 +434,8 @@ msgstr "Ідентифікатор служби" msgid "Color" msgstr "колір" -#: circuits/forms/bulk_edit.py:114 circuits/forms/bulk_import.py:88 -#: circuits/forms/filtersets.py:123 core/forms/bulk_edit.py:18 +#: circuits/forms/bulk_edit.py:116 circuits/forms/bulk_import.py:89 +#: circuits/forms/filtersets.py:124 core/forms/bulk_edit.py:18 #: core/forms/filtersets.py:30 core/tables/data.py:20 core/tables/jobs.py:18 #: dcim/forms/bulk_edit.py:282 dcim/forms/bulk_edit.py:680 #: dcim/forms/bulk_edit.py:819 dcim/forms/bulk_edit.py:887 @@ -437,18 +447,18 @@ msgstr "колір" #: dcim/forms/bulk_import.py:725 dcim/forms/bulk_import.py:808 #: dcim/forms/bulk_import.py:902 dcim/forms/bulk_import.py:944 #: dcim/forms/bulk_import.py:1161 dcim/forms/bulk_import.py:1327 -#: dcim/forms/filtersets.py:287 dcim/forms/filtersets.py:866 -#: dcim/forms/filtersets.py:965 dcim/forms/filtersets.py:1086 -#: dcim/forms/filtersets.py:1156 dcim/forms/filtersets.py:1178 -#: dcim/forms/filtersets.py:1200 dcim/forms/filtersets.py:1217 -#: dcim/forms/filtersets.py:1251 dcim/forms/filtersets.py:1346 -#: dcim/forms/filtersets.py:1367 dcim/forms/model_forms.py:643 +#: dcim/forms/filtersets.py:287 dcim/forms/filtersets.py:874 +#: dcim/forms/filtersets.py:973 dcim/forms/filtersets.py:1094 +#: dcim/forms/filtersets.py:1164 dcim/forms/filtersets.py:1186 +#: dcim/forms/filtersets.py:1208 dcim/forms/filtersets.py:1225 +#: dcim/forms/filtersets.py:1259 dcim/forms/filtersets.py:1354 +#: dcim/forms/filtersets.py:1375 dcim/forms/model_forms.py:643 #: dcim/forms/model_forms.py:649 dcim/forms/object_import.py:84 #: dcim/forms/object_import.py:113 dcim/forms/object_import.py:145 #: dcim/tables/devices.py:183 dcim/tables/devices.py:815 #: dcim/tables/power.py:77 extras/forms/bulk_import.py:39 #: extras/tables/tables.py:283 extras/tables/tables.py:355 -#: extras/tables/tables.py:473 netbox/tables/tables.py:237 +#: extras/tables/tables.py:473 netbox/tables/tables.py:239 #: 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 @@ -469,13 +479,13 @@ msgstr "колір" msgid "Type" msgstr "Тип" -#: circuits/forms/bulk_edit.py:124 circuits/forms/bulk_import.py:81 -#: circuits/forms/filtersets.py:136 circuits/forms/model_forms.py:96 +#: circuits/forms/bulk_edit.py:126 circuits/forms/bulk_import.py:82 +#: circuits/forms/filtersets.py:137 circuits/forms/model_forms.py:96 msgid "Provider account" msgstr "Обліковий запис постачальника" -#: circuits/forms/bulk_edit.py:132 circuits/forms/bulk_import.py:94 -#: circuits/forms/filtersets.py:147 core/forms/filtersets.py:35 +#: circuits/forms/bulk_edit.py:134 circuits/forms/bulk_import.py:95 +#: circuits/forms/filtersets.py:148 core/forms/filtersets.py:35 #: core/forms/filtersets.py:76 core/tables/data.py:23 core/tables/jobs.py:26 #: core/tables/tasks.py:88 dcim/forms/bulk_edit.py:105 #: dcim/forms/bulk_edit.py:180 dcim/forms/bulk_edit.py:261 @@ -487,9 +497,9 @@ msgstr "Обліковий запис постачальника" #: dcim/forms/bulk_import.py:1155 dcim/forms/bulk_import.py:1322 #: dcim/forms/bulk_import.py:1386 dcim/forms/filtersets.py:171 #: dcim/forms/filtersets.py:230 dcim/forms/filtersets.py:282 -#: dcim/forms/filtersets.py:727 dcim/forms/filtersets.py:835 -#: dcim/forms/filtersets.py:869 dcim/forms/filtersets.py:970 -#: dcim/forms/filtersets.py:1081 dcim/tables/devices.py:145 +#: dcim/forms/filtersets.py:728 dcim/forms/filtersets.py:843 +#: dcim/forms/filtersets.py:877 dcim/forms/filtersets.py:978 +#: dcim/forms/filtersets.py:1089 dcim/tables/devices.py:145 #: dcim/tables/devices.py:818 dcim/tables/devices.py:1046 #: dcim/tables/modules.py:69 dcim/tables/power.py:74 dcim/tables/racks.py:66 #: dcim/tables/sites.py:82 dcim/tables/sites.py:133 @@ -497,9 +507,9 @@ msgstr "Обліковий запис постачальника" #: ipam/forms/bulk_edit.py:338 ipam/forms/bulk_edit.py:544 #: ipam/forms/bulk_import.py:191 ipam/forms/bulk_import.py:256 #: ipam/forms/bulk_import.py:292 ipam/forms/bulk_import.py:458 -#: ipam/forms/filtersets.py:209 ipam/forms/filtersets.py:274 -#: ipam/forms/filtersets.py:348 ipam/forms/filtersets.py:501 -#: ipam/forms/model_forms.py:457 ipam/tables/ip.py:236 ipam/tables/ip.py:309 +#: ipam/forms/filtersets.py:210 ipam/forms/filtersets.py:281 +#: ipam/forms/filtersets.py:355 ipam/forms/filtersets.py:508 +#: ipam/forms/model_forms.py:466 ipam/tables/ip.py:236 ipam/tables/ip.py:309 #: ipam/tables/ip.py:359 ipam/tables/ip.py:421 ipam/tables/ip.py:448 #: ipam/tables/vlans.py:122 ipam/tables/vlans.py:227 #: templates/circuits/circuit.html:34 templates/core/datasource.html:46 @@ -530,8 +540,8 @@ msgstr "Обліковий запис постачальника" msgid "Status" msgstr "Статус" -#: circuits/forms/bulk_edit.py:138 circuits/forms/bulk_import.py:99 -#: circuits/forms/filtersets.py:116 dcim/forms/bulk_edit.py:121 +#: circuits/forms/bulk_edit.py:140 circuits/forms/bulk_import.py:100 +#: circuits/forms/filtersets.py:117 dcim/forms/bulk_edit.py:121 #: dcim/forms/bulk_edit.py:186 dcim/forms/bulk_edit.py:256 #: dcim/forms/bulk_edit.py:368 dcim/forms/bulk_edit.py:588 #: dcim/forms/bulk_edit.py:692 dcim/forms/bulk_edit.py:1599 @@ -541,9 +551,9 @@ msgstr "Статус" #: dcim/forms/bulk_import.py:1379 dcim/forms/filtersets.py:166 #: dcim/forms/filtersets.py:198 dcim/forms/filtersets.py:249 #: dcim/forms/filtersets.py:334 dcim/forms/filtersets.py:355 -#: dcim/forms/filtersets.py:652 dcim/forms/filtersets.py:827 -#: dcim/forms/filtersets.py:889 dcim/forms/filtersets.py:919 -#: dcim/forms/filtersets.py:1041 dcim/tables/power.py:88 +#: dcim/forms/filtersets.py:652 dcim/forms/filtersets.py:835 +#: dcim/forms/filtersets.py:897 dcim/forms/filtersets.py:927 +#: dcim/forms/filtersets.py:1049 dcim/tables/power.py:88 #: extras/filtersets.py:564 extras/forms/filtersets.py:332 #: extras/forms/filtersets.py:405 ipam/forms/bulk_edit.py:41 #: ipam/forms/bulk_edit.py:66 ipam/forms/bulk_edit.py:110 @@ -557,8 +567,8 @@ msgstr "Статус" #: ipam/forms/bulk_import.py:451 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:173 ipam/forms/filtersets.py:260 -#: ipam/forms/filtersets.py:303 ipam/forms/filtersets.py:469 +#: ipam/forms/filtersets.py:174 ipam/forms/filtersets.py:267 +#: ipam/forms/filtersets.py:310 ipam/forms/filtersets.py:476 #: ipam/tables/ip.py:451 ipam/tables/vlans.py:224 #: templates/circuits/circuit.html:38 templates/dcim/cable.html:23 #: templates/dcim/device.html:78 templates/dcim/location.html:49 @@ -589,23 +599,23 @@ msgstr "Статус" msgid "Tenant" msgstr "орендар" -#: circuits/forms/bulk_edit.py:143 circuits/forms/filtersets.py:171 +#: circuits/forms/bulk_edit.py:145 circuits/forms/filtersets.py:172 msgid "Install date" msgstr "Дата встановлення" -#: circuits/forms/bulk_edit.py:148 circuits/forms/filtersets.py:176 +#: circuits/forms/bulk_edit.py:150 circuits/forms/filtersets.py:177 msgid "Termination date" msgstr "Дата припинення дії" -#: circuits/forms/bulk_edit.py:154 circuits/forms/filtersets.py:183 +#: circuits/forms/bulk_edit.py:156 circuits/forms/filtersets.py:184 msgid "Commit rate (Kbps)" msgstr "Швидкість комісії (Кбіт/с)" -#: circuits/forms/bulk_edit.py:169 circuits/forms/model_forms.py:110 +#: circuits/forms/bulk_edit.py:171 circuits/forms/model_forms.py:110 msgid "Service Parameters" msgstr "Параметри обслуговування" -#: circuits/forms/bulk_edit.py:170 circuits/forms/model_forms.py:111 +#: circuits/forms/bulk_edit.py:172 circuits/forms/model_forms.py:111 #: dcim/forms/model_forms.py:138 dcim/forms/model_forms.py:180 #: dcim/forms/model_forms.py:228 dcim/forms/model_forms.py:267 #: dcim/forms/model_forms.py:713 dcim/forms/model_forms.py:1636 @@ -624,26 +634,60 @@ msgstr "Параметри обслуговування" msgid "Tenancy" msgstr "Оренда житла" -#: circuits/forms/bulk_import.py:37 circuits/forms/bulk_import.py:52 -#: circuits/forms/bulk_import.py:78 +#: circuits/forms/bulk_edit.py:191 circuits/forms/bulk_edit.py:215 +#: circuits/forms/model_forms.py:153 circuits/tables/circuits.py:109 +#: templates/circuits/inc/circuit_termination_fields.html:62 +#: templates/circuits/providernetwork.html:17 +msgid "Provider Network" +msgstr "Мережа провайдерів" + +#: circuits/forms/bulk_edit.py:197 +msgid "Port speed (Kbps)" +msgstr "Швидкість порту (Кбіт/с)" + +#: circuits/forms/bulk_edit.py:201 +msgid "Upstream speed (Kbps)" +msgstr "Швидкість висхідного потоку (Кбіт/с)" + +#: circuits/forms/bulk_edit.py:204 dcim/forms/bulk_edit.py:849 +#: dcim/forms/bulk_edit.py:1208 dcim/forms/bulk_edit.py:1225 +#: dcim/forms/bulk_edit.py:1242 dcim/forms/bulk_edit.py:1260 +#: dcim/forms/bulk_edit.py:1348 dcim/forms/bulk_edit.py:1487 +#: dcim/forms/bulk_edit.py:1504 +msgid "Mark connected" +msgstr "Позначка підключена" + +#: circuits/forms/bulk_edit.py:217 circuits/forms/model_forms.py:155 +#: templates/circuits/inc/circuit_termination_fields.html:54 +#: templates/dcim/frontport.html:121 templates/dcim/interface.html:193 +#: templates/dcim/rearport.html:111 +msgid "Circuit Termination" +msgstr "Закриття схеми" + +#: circuits/forms/bulk_edit.py:219 circuits/forms/model_forms.py:157 +msgid "Termination Details" +msgstr "Деталі припинення" + +#: circuits/forms/bulk_import.py:38 circuits/forms/bulk_import.py:53 +#: circuits/forms/bulk_import.py:79 msgid "Assigned provider" msgstr "Призначений провайдер" -#: circuits/forms/bulk_import.py:69 dcim/forms/bulk_import.py:178 +#: circuits/forms/bulk_import.py:70 dcim/forms/bulk_import.py:178 #: dcim/forms/bulk_import.py:388 dcim/forms/bulk_import.py:1108 #: dcim/forms/bulk_import.py:1187 extras/forms/bulk_import.py:232 msgid "RGB color in hexadecimal. Example:" msgstr "RGB-колір шістнадцятковим. Приклад:" -#: circuits/forms/bulk_import.py:84 +#: circuits/forms/bulk_import.py:85 msgid "Assigned provider account" msgstr "Призначений обліковий запис постачальника" -#: circuits/forms/bulk_import.py:91 +#: circuits/forms/bulk_import.py:92 msgid "Type of circuit" msgstr "Тип схеми" -#: circuits/forms/bulk_import.py:96 dcim/forms/bulk_import.py:89 +#: circuits/forms/bulk_import.py:97 dcim/forms/bulk_import.py:89 #: dcim/forms/bulk_import.py:148 dcim/forms/bulk_import.py:204 #: dcim/forms/bulk_import.py:452 dcim/forms/bulk_import.py:606 #: dcim/forms/bulk_import.py:1324 ipam/forms/bulk_import.py:193 @@ -654,7 +698,7 @@ msgstr "Тип схеми" msgid "Operational status" msgstr "Операційний стан" -#: circuits/forms/bulk_import.py:103 dcim/forms/bulk_import.py:110 +#: circuits/forms/bulk_import.py:104 dcim/forms/bulk_import.py:110 #: dcim/forms/bulk_import.py:155 dcim/forms/bulk_import.py:286 #: dcim/forms/bulk_import.py:428 dcim/forms/bulk_import.py:1171 #: dcim/forms/bulk_import.py:1319 dcim/forms/bulk_import.py:1383 @@ -668,37 +712,46 @@ msgstr "Операційний стан" msgid "Assigned tenant" msgstr "Призначений орендар" -#: circuits/forms/bulk_import.py:122 circuits/forms/filtersets.py:144 -#: circuits/forms/model_forms.py:142 +#: circuits/forms/bulk_import.py:122 +#: 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 +msgid "Termination" +msgstr "Припинення" + +#: circuits/forms/bulk_import.py:132 circuits/forms/filtersets.py:145 +#: circuits/forms/filtersets.py:225 circuits/forms/model_forms.py:142 msgid "Provider network" msgstr "Мережа провайдерів" -#: circuits/forms/filtersets.py:27 circuits/forms/filtersets.py:115 -#: dcim/forms/bulk_edit.py:248 dcim/forms/bulk_edit.py:346 -#: dcim/forms/bulk_edit.py:580 dcim/forms/bulk_edit.py:627 -#: dcim/forms/bulk_edit.py:780 dcim/forms/bulk_import.py:189 -#: dcim/forms/bulk_import.py:263 dcim/forms/bulk_import.py:491 -#: dcim/forms/bulk_import.py:1268 dcim/forms/bulk_import.py:1302 -#: dcim/forms/filtersets.py:93 dcim/forms/filtersets.py:246 -#: dcim/forms/filtersets.py:279 dcim/forms/filtersets.py:331 -#: dcim/forms/filtersets.py:382 dcim/forms/filtersets.py:649 -#: dcim/forms/filtersets.py:690 dcim/forms/filtersets.py:888 -#: dcim/forms/filtersets.py:917 dcim/forms/filtersets.py:937 -#: dcim/forms/filtersets.py:1001 dcim/forms/filtersets.py:1031 -#: dcim/forms/filtersets.py:1040 dcim/forms/filtersets.py:1151 -#: dcim/forms/filtersets.py:1173 dcim/forms/filtersets.py:1195 -#: dcim/forms/filtersets.py:1212 dcim/forms/filtersets.py:1232 -#: dcim/forms/filtersets.py:1340 dcim/forms/filtersets.py:1362 -#: dcim/forms/filtersets.py:1383 dcim/forms/filtersets.py:1398 -#: dcim/forms/filtersets.py:1412 dcim/forms/model_forms.py:179 -#: dcim/forms/model_forms.py:211 dcim/forms/model_forms.py:411 -#: dcim/forms/model_forms.py:673 dcim/tables/devices.py:162 -#: dcim/tables/power.py:30 dcim/tables/racks.py:58 dcim/tables/racks.py:143 -#: extras/filtersets.py:488 extras/forms/filtersets.py:329 -#: ipam/forms/bulk_edit.py:457 ipam/forms/filtersets.py:172 -#: ipam/forms/filtersets.py:407 ipam/forms/filtersets.py:430 -#: ipam/forms/filtersets.py:467 ipam/forms/model_forms.py:590 -#: templates/dcim/device.html:25 templates/dcim/device_edit.html:30 +#: circuits/forms/filtersets.py:28 circuits/forms/filtersets.py:116 +#: circuits/forms/filtersets.py:198 dcim/forms/bulk_edit.py:248 +#: dcim/forms/bulk_edit.py:346 dcim/forms/bulk_edit.py:580 +#: dcim/forms/bulk_edit.py:627 dcim/forms/bulk_edit.py:780 +#: dcim/forms/bulk_import.py:189 dcim/forms/bulk_import.py:263 +#: dcim/forms/bulk_import.py:491 dcim/forms/bulk_import.py:1268 +#: dcim/forms/bulk_import.py:1302 dcim/forms/filtersets.py:93 +#: dcim/forms/filtersets.py:246 dcim/forms/filtersets.py:279 +#: dcim/forms/filtersets.py:331 dcim/forms/filtersets.py:382 +#: dcim/forms/filtersets.py:649 dcim/forms/filtersets.py:691 +#: dcim/forms/filtersets.py:896 dcim/forms/filtersets.py:925 +#: dcim/forms/filtersets.py:945 dcim/forms/filtersets.py:1009 +#: dcim/forms/filtersets.py:1039 dcim/forms/filtersets.py:1048 +#: dcim/forms/filtersets.py:1159 dcim/forms/filtersets.py:1181 +#: dcim/forms/filtersets.py:1203 dcim/forms/filtersets.py:1220 +#: dcim/forms/filtersets.py:1240 dcim/forms/filtersets.py:1348 +#: dcim/forms/filtersets.py:1370 dcim/forms/filtersets.py:1391 +#: dcim/forms/filtersets.py:1406 dcim/forms/filtersets.py:1420 +#: dcim/forms/model_forms.py:179 dcim/forms/model_forms.py:211 +#: dcim/forms/model_forms.py:411 dcim/forms/model_forms.py:673 +#: dcim/tables/devices.py:162 dcim/tables/power.py:30 dcim/tables/racks.py:58 +#: dcim/tables/racks.py:143 extras/filtersets.py:488 +#: extras/forms/filtersets.py:329 ipam/forms/bulk_edit.py:457 +#: ipam/forms/filtersets.py:173 ipam/forms/filtersets.py:414 +#: ipam/forms/filtersets.py:437 ipam/forms/filtersets.py:474 +#: ipam/forms/model_forms.py:599 templates/dcim/device.html:25 +#: 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:26 templates/dcim/rackreservation.html:32 @@ -708,12 +761,12 @@ msgstr "Мережа провайдерів" msgid "Location" msgstr "Розташування" -#: circuits/forms/filtersets.py:29 circuits/forms/filtersets.py:117 +#: circuits/forms/filtersets.py:30 circuits/forms/filtersets.py:118 #: dcim/forms/filtersets.py:137 dcim/forms/filtersets.py:151 #: dcim/forms/filtersets.py:167 dcim/forms/filtersets.py:199 #: dcim/forms/filtersets.py:250 dcim/forms/filtersets.py:335 #: dcim/forms/filtersets.py:406 dcim/forms/filtersets.py:653 -#: dcim/forms/filtersets.py:1002 netbox/navigation/menu.py:44 +#: dcim/forms/filtersets.py:1010 netbox/navigation/menu.py:44 #: netbox/navigation/menu.py:46 tenancy/forms/filtersets.py:42 #: tenancy/tables/columns.py:70 tenancy/tables/contacts.py:25 #: tenancy/views.py:19 virtualization/forms/filtersets.py:37 @@ -722,22 +775,22 @@ msgstr "Розташування" msgid "Contacts" msgstr "Контакти" -#: circuits/forms/filtersets.py:34 circuits/forms/filtersets.py:154 +#: circuits/forms/filtersets.py:35 circuits/forms/filtersets.py:155 #: dcim/forms/bulk_edit.py:111 dcim/forms/bulk_edit.py:223 #: dcim/forms/bulk_edit.py:755 dcim/forms/bulk_import.py:92 #: dcim/forms/filtersets.py:71 dcim/forms/filtersets.py:178 #: dcim/forms/filtersets.py:204 dcim/forms/filtersets.py:257 -#: dcim/forms/filtersets.py:360 dcim/forms/filtersets.py:667 -#: dcim/forms/filtersets.py:894 dcim/forms/filtersets.py:924 -#: dcim/forms/filtersets.py:1008 dcim/forms/filtersets.py:1047 -#: dcim/forms/filtersets.py:1460 dcim/forms/filtersets.py:1484 -#: dcim/forms/filtersets.py:1508 dcim/forms/model_forms.py:111 +#: dcim/forms/filtersets.py:360 dcim/forms/filtersets.py:668 +#: dcim/forms/filtersets.py:902 dcim/forms/filtersets.py:932 +#: dcim/forms/filtersets.py:1016 dcim/forms/filtersets.py:1055 +#: dcim/forms/filtersets.py:1468 dcim/forms/filtersets.py:1492 +#: dcim/forms/filtersets.py:1516 dcim/forms/model_forms.py:111 #: dcim/forms/object_create.py:375 dcim/tables/devices.py:148 #: dcim/tables/sites.py:85 extras/filtersets.py:455 #: ipam/forms/bulk_edit.py:206 ipam/forms/bulk_edit.py:438 -#: ipam/forms/bulk_edit.py:512 ipam/forms/filtersets.py:216 -#: ipam/forms/filtersets.py:415 ipam/forms/filtersets.py:475 -#: ipam/forms/model_forms.py:562 templates/dcim/device.html:17 +#: ipam/forms/bulk_edit.py:512 ipam/forms/filtersets.py:217 +#: ipam/forms/filtersets.py:422 ipam/forms/filtersets.py:482 +#: ipam/forms/model_forms.py:571 templates/dcim/device.html:17 #: templates/dcim/rack.html:16 templates/dcim/rackreservation.html:22 #: templates/dcim/region.html:26 templates/dcim/site.html:30 #: templates/ipam/prefix.html:49 templates/ipam/vlan.html:16 @@ -747,42 +800,42 @@ msgstr "Контакти" msgid "Region" msgstr "Регіон" -#: circuits/forms/filtersets.py:39 circuits/forms/filtersets.py:159 +#: circuits/forms/filtersets.py:40 circuits/forms/filtersets.py:160 #: dcim/forms/bulk_edit.py:231 dcim/forms/bulk_edit.py:763 #: dcim/forms/filtersets.py:76 dcim/forms/filtersets.py:183 #: dcim/forms/filtersets.py:209 dcim/forms/filtersets.py:270 -#: dcim/forms/filtersets.py:365 dcim/forms/filtersets.py:672 -#: dcim/forms/filtersets.py:899 dcim/forms/filtersets.py:1013 -#: dcim/forms/filtersets.py:1052 dcim/forms/object_create.py:383 +#: dcim/forms/filtersets.py:365 dcim/forms/filtersets.py:673 +#: dcim/forms/filtersets.py:907 dcim/forms/filtersets.py:1021 +#: dcim/forms/filtersets.py:1060 dcim/forms/object_create.py:383 #: extras/filtersets.py:472 ipam/forms/bulk_edit.py:211 #: ipam/forms/bulk_edit.py:445 ipam/forms/bulk_edit.py:517 -#: ipam/forms/filtersets.py:221 ipam/forms/filtersets.py:420 -#: ipam/forms/filtersets.py:480 ipam/forms/model_forms.py:575 +#: ipam/forms/filtersets.py:222 ipam/forms/filtersets.py:427 +#: ipam/forms/filtersets.py:487 ipam/forms/model_forms.py:584 #: virtualization/forms/bulk_edit.py:86 virtualization/forms/filtersets.py:69 #: virtualization/forms/filtersets.py:138 #: virtualization/forms/model_forms.py:98 msgid "Site group" msgstr "Група сайтів" -#: circuits/forms/filtersets.py:62 circuits/forms/filtersets.py:80 -#: circuits/forms/filtersets.py:99 circuits/forms/filtersets.py:114 +#: circuits/forms/filtersets.py:63 circuits/forms/filtersets.py:81 +#: circuits/forms/filtersets.py:100 circuits/forms/filtersets.py:115 #: core/forms/filtersets.py:64 dcim/forms/bulk_edit.py:726 #: dcim/forms/filtersets.py:165 dcim/forms/filtersets.py:197 -#: dcim/forms/filtersets.py:826 dcim/forms/filtersets.py:918 -#: dcim/forms/filtersets.py:1042 dcim/forms/filtersets.py:1150 -#: dcim/forms/filtersets.py:1172 dcim/forms/filtersets.py:1194 -#: dcim/forms/filtersets.py:1211 dcim/forms/filtersets.py:1228 -#: dcim/forms/filtersets.py:1339 dcim/forms/filtersets.py:1361 -#: dcim/forms/filtersets.py:1382 dcim/forms/filtersets.py:1397 -#: dcim/forms/filtersets.py:1410 extras/forms/filtersets.py:43 +#: dcim/forms/filtersets.py:834 dcim/forms/filtersets.py:926 +#: dcim/forms/filtersets.py:1050 dcim/forms/filtersets.py:1158 +#: dcim/forms/filtersets.py:1180 dcim/forms/filtersets.py:1202 +#: dcim/forms/filtersets.py:1219 dcim/forms/filtersets.py:1236 +#: dcim/forms/filtersets.py:1347 dcim/forms/filtersets.py:1369 +#: dcim/forms/filtersets.py:1390 dcim/forms/filtersets.py:1405 +#: dcim/forms/filtersets.py:1418 extras/forms/filtersets.py:43 #: extras/forms/filtersets.py:112 extras/forms/filtersets.py:143 #: extras/forms/filtersets.py:183 extras/forms/filtersets.py:199 #: extras/forms/filtersets.py:230 extras/forms/filtersets.py:254 #: extras/forms/filtersets.py:450 extras/forms/filtersets.py:488 -#: ipam/forms/filtersets.py:99 ipam/forms/filtersets.py:259 -#: ipam/forms/filtersets.py:300 ipam/forms/filtersets.py:375 -#: ipam/forms/filtersets.py:468 ipam/forms/filtersets.py:527 -#: ipam/forms/filtersets.py:545 netbox/tables/tables.py:253 +#: ipam/forms/filtersets.py:99 ipam/forms/filtersets.py:266 +#: ipam/forms/filtersets.py:307 ipam/forms/filtersets.py:382 +#: ipam/forms/filtersets.py:475 ipam/forms/filtersets.py:534 +#: ipam/forms/filtersets.py:552 netbox/tables/tables.py:255 #: virtualization/forms/filtersets.py:45 #: virtualization/forms/filtersets.py:103 #: virtualization/forms/filtersets.py:194 @@ -791,28 +844,15 @@ msgstr "Група сайтів" msgid "Attributes" msgstr "атрибути" -#: circuits/forms/filtersets.py:70 circuits/tables/circuits.py:60 +#: circuits/forms/filtersets.py:71 circuits/tables/circuits.py:61 #: circuits/tables/providers.py:66 templates/circuits/circuit.html:22 #: templates/circuits/provideraccount.html:24 msgid "Account" msgstr "Рахунок" -#: circuits/forms/model_forms.py:153 -#: templates/circuits/inc/circuit_termination.html:88 -#: templates/circuits/providernetwork.html:17 -msgid "Provider Network" -msgstr "Мережа провайдерів" - -#: circuits/forms/model_forms.py:155 -#: templates/circuits/inc/circuit_termination.html:80 -#: templates/dcim/frontport.html:121 templates/dcim/interface.html:193 -#: templates/dcim/rearport.html:111 -msgid "Circuit Termination" -msgstr "Закриття схеми" - -#: circuits/forms/model_forms.py:157 -msgid "Termination Details" -msgstr "Деталі припинення" +#: circuits/forms/filtersets.py:215 +msgid "Term Side" +msgstr "Сторона терміну" #: circuits/models/circuits.py:25 dcim/models/cables.py:67 #: dcim/models/device_component_templates.py:491 @@ -843,8 +883,8 @@ msgstr "Унікальний ідентифікатор схеми" #: core/models/jobs.py:85 dcim/models/cables.py:49 dcim/models/devices.py:643 #: dcim/models/devices.py:1155 dcim/models/devices.py:1364 #: dcim/models/power.py:96 dcim/models/racks.py:98 dcim/models/sites.py:154 -#: dcim/models/sites.py:266 ipam/models/ip.py:252 ipam/models/ip.py:521 -#: ipam/models/ip.py:729 ipam/models/vlans.py:175 +#: dcim/models/sites.py:266 ipam/models/ip.py:253 ipam/models/ip.py:522 +#: ipam/models/ip.py:730 ipam/models/vlans.py:175 #: virtualization/models/clusters.py:74 #: virtualization/models/virtualmachines.py:84 vpn/models/tunnels.py:40 #: wireless/models.py:94 wireless/models.py:158 @@ -1017,15 +1057,15 @@ msgstr "мережа провайдера" msgid "provider networks" msgstr "мережі провайдерів" -#: circuits/tables/circuits.py:29 circuits/tables/providers.py:18 +#: circuits/tables/circuits.py:30 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:13 #: core/tables/tasks.py:11 core/tables/tasks.py:115 #: dcim/forms/filtersets.py:61 dcim/forms/object_create.py:43 #: dcim/tables/devices.py:60 dcim/tables/devices.py:97 #: dcim/tables/devices.py:139 dcim/tables/devices.py:294 -#: dcim/tables/devices.py:376 dcim/tables/devices.py:420 -#: dcim/tables/devices.py:472 dcim/tables/devices.py:524 +#: dcim/tables/devices.py:380 dcim/tables/devices.py:424 +#: dcim/tables/devices.py:476 dcim/tables/devices.py:528 #: dcim/tables/devices.py:644 dcim/tables/devices.py:726 #: dcim/tables/devices.py:776 dcim/tables/devices.py:842 #: dcim/tables/devices.py:957 dcim/tables/devices.py:977 @@ -1039,7 +1079,7 @@ msgstr "мережі провайдерів" #: extras/tables/tables.py:209 extras/tables/tables.py:256 #: extras/tables/tables.py:279 extras/tables/tables.py:329 #: extras/tables/tables.py:381 extras/tables/tables.py:404 -#: ipam/forms/bulk_edit.py:391 ipam/forms/filtersets.py:379 +#: ipam/forms/bulk_edit.py:391 ipam/forms/filtersets.py:386 #: ipam/tables/asn.py:16 ipam/tables/ip.py:85 ipam/tables/ip.py:159 #: ipam/tables/services.py:15 ipam/tables/services.py:40 #: ipam/tables/vlans.py:64 ipam/tables/vlans.py:110 ipam/tables/vrfs.py:26 @@ -1105,7 +1145,7 @@ msgstr "мережі провайдерів" msgid "Name" msgstr "Назва" -#: circuits/tables/circuits.py:38 circuits/tables/providers.py:45 +#: circuits/tables/circuits.py:39 circuits/tables/providers.py:45 #: circuits/tables/providers.py:79 netbox/navigation/menu.py:253 #: netbox/navigation/menu.py:257 netbox/navigation/menu.py:259 #: templates/circuits/provider.html:57 @@ -1114,23 +1154,23 @@ msgstr "Назва" msgid "Circuits" msgstr "Схеми" -#: circuits/tables/circuits.py:52 templates/circuits/circuit.html:26 +#: circuits/tables/circuits.py:53 templates/circuits/circuit.html:26 msgid "Circuit ID" msgstr "Ідентифікатор схеми" -#: circuits/tables/circuits.py:65 wireless/forms/model_forms.py:160 +#: circuits/tables/circuits.py:66 wireless/forms/model_forms.py:160 msgid "Side A" msgstr "Сторона А" -#: circuits/tables/circuits.py:69 +#: circuits/tables/circuits.py:70 msgid "Side Z" msgstr "Сторона Z" -#: circuits/tables/circuits.py:72 templates/circuits/circuit.html:55 +#: circuits/tables/circuits.py:73 templates/circuits/circuit.html:55 msgid "Commit Rate" msgstr "Коефіцієнт комісії" -#: circuits/tables/circuits.py:75 circuits/tables/providers.py:48 +#: circuits/tables/circuits.py:76 circuits/tables/providers.py:48 #: circuits/tables/providers.py:82 circuits/tables/providers.py:107 #: dcim/tables/devices.py:1019 dcim/tables/devicetypes.py:92 #: dcim/tables/modules.py:29 dcim/tables/modules.py:72 dcim/tables/power.py:39 @@ -1186,12 +1226,12 @@ msgstr "Завершено" #: core/choices.py:22 core/choices.py:59 core/constants.py:20 #: core/tables/tasks.py:34 dcim/choices.py:176 dcim/choices.py:222 -#: dcim/choices.py:1506 extras/choices.py:226 virtualization/choices.py:47 +#: dcim/choices.py:1534 extras/choices.py:226 virtualization/choices.py:47 msgid "Failed" msgstr "провалився" -#: core/choices.py:35 netbox/navigation/menu.py:319 -#: netbox/navigation/menu.py:323 templates/extras/script/base.html:14 +#: core/choices.py:35 netbox/navigation/menu.py:320 +#: netbox/navigation/menu.py:324 templates/extras/script/base.html:14 #: templates/extras/script_list.html:7 templates/extras/script_list.html:12 #: templates/extras/script_result.html:17 msgid "Scripts" @@ -1286,8 +1326,8 @@ msgstr "Джерело даних (назва)" #: core/forms/bulk_edit.py:25 core/forms/filtersets.py:40 #: core/tables/data.py:26 dcim/forms/bulk_edit.py:1020 -#: dcim/forms/bulk_edit.py:1293 dcim/forms/filtersets.py:1268 -#: dcim/tables/devices.py:549 dcim/tables/devicetypes.py:221 +#: dcim/forms/bulk_edit.py:1293 dcim/forms/filtersets.py:1276 +#: dcim/tables/devices.py:553 dcim/tables/devicetypes.py:221 #: extras/forms/bulk_edit.py:98 extras/forms/bulk_edit.py:162 #: extras/forms/bulk_edit.py:221 extras/forms/filtersets.py:120 #: extras/forms/filtersets.py:207 extras/forms/filtersets.py:268 @@ -1423,10 +1463,10 @@ msgstr "Потрібно завантажити файл або вибрати msgid "Rack Elevations" msgstr "Висота стелажів" -#: core/forms/model_forms.py:157 dcim/choices.py:1417 +#: core/forms/model_forms.py:157 dcim/choices.py:1445 #: dcim/forms/bulk_edit.py:867 dcim/forms/bulk_edit.py:1250 #: dcim/forms/bulk_edit.py:1268 dcim/tables/racks.py:89 -#: netbox/navigation/menu.py:275 netbox/navigation/menu.py:279 +#: netbox/navigation/menu.py:276 netbox/navigation/menu.py:280 msgid "Power" msgstr "Потужність" @@ -1459,7 +1499,7 @@ msgstr "Перевірка" msgid "User Preferences" msgstr "Параметри користувача" -#: core/forms/model_forms.py:167 dcim/forms/filtersets.py:660 +#: core/forms/model_forms.py:167 dcim/forms/filtersets.py:661 #: templates/core/inc/config_data.html:127 users/forms/model_forms.py:65 msgid "Miscellaneous" msgstr "Різне" @@ -1601,7 +1641,7 @@ msgstr "доріжка" msgid "File path relative to the data source's root" msgstr "Шляху до файлу відносно кореня джерела даних" -#: core/models/data.py:303 ipam/models/ip.py:502 +#: core/models/data.py:303 ipam/models/ip.py:503 msgid "size" msgstr "розмір" @@ -1718,7 +1758,7 @@ msgstr "Останнє оновлення" #: core/tables/jobs.py:10 core/tables/tasks.py:76 #: dcim/tables/devicetypes.py:161 extras/tables/tables.py:179 -#: extras/tables/tables.py:350 netbox/tables/tables.py:187 +#: extras/tables/tables.py:350 netbox/tables/tables.py:188 #: templates/dcim/virtualchassis_edit.html:52 utilities/forms/forms.py:73 #: wireless/tables/wirelesslink.py:16 msgid "ID" @@ -1727,7 +1767,7 @@ msgstr "ІД" #: core/tables/jobs.py:21 extras/choices.py:41 extras/tables/tables.py:241 #: extras/tables/tables.py:287 extras/tables/tables.py:360 #: extras/tables/tables.py:478 extras/tables/tables.py:509 -#: extras/tables/tables.py:574 netbox/tables/tables.py:241 +#: extras/tables/tables.py:574 netbox/tables/tables.py:243 #: templates/extras/eventrule.html:84 templates/extras/journalentry.html:18 #: templates/extras/objectchange.html:57 tenancy/tables/contacts.py:93 #: vpn/tables/l2vpn.py:64 @@ -1772,7 +1812,7 @@ msgstr "Робітники" msgid "Host" msgstr "Ведучий" -#: core/tables/tasks.py:50 ipam/forms/filtersets.py:535 +#: core/tables/tasks.py:50 ipam/forms/filtersets.py:542 msgid "Port" msgstr "Порт" @@ -1839,7 +1879,7 @@ msgid "Staging" msgstr "Постановка" #: dcim/choices.py:23 dcim/choices.py:178 dcim/choices.py:223 -#: dcim/choices.py:1430 virtualization/choices.py:23 +#: dcim/choices.py:1458 virtualization/choices.py:23 #: virtualization/choices.py:48 msgid "Decommissioning" msgstr "Виведення з експлуатації" @@ -1899,7 +1939,7 @@ msgstr "Застарілий" msgid "Millimeters" msgstr "Міліметри" -#: dcim/choices.py:115 dcim/choices.py:1452 +#: dcim/choices.py:115 dcim/choices.py:1480 msgid "Inches" msgstr "Дюйми" @@ -1974,7 +2014,7 @@ msgstr "Праворуч наліво" msgid "Side to rear" msgstr "Збоку ззаду" -#: dcim/choices.py:198 dcim/choices.py:1225 +#: dcim/choices.py:198 dcim/choices.py:1253 msgid "Passive" msgstr "пасивний" @@ -1982,56 +2022,56 @@ msgstr "пасивний" msgid "Mixed" msgstr "Змішаний" -#: dcim/choices.py:443 dcim/choices.py:680 +#: dcim/choices.py:447 dcim/choices.py:693 msgid "NEMA (Non-locking)" msgstr "NEMA (без блокування)" -#: dcim/choices.py:465 dcim/choices.py:702 +#: dcim/choices.py:469 dcim/choices.py:715 msgid "NEMA (Locking)" msgstr "NEMA (блокування)" -#: dcim/choices.py:488 dcim/choices.py:725 +#: dcim/choices.py:492 dcim/choices.py:738 msgid "California Style" msgstr "Каліфорнійський стиль" -#: dcim/choices.py:496 +#: dcim/choices.py:500 msgid "International/ITA" msgstr "Міжнародний/ITA" -#: dcim/choices.py:526 dcim/choices.py:755 +#: dcim/choices.py:535 dcim/choices.py:773 msgid "Proprietary" msgstr "Пропрієтарний" -#: dcim/choices.py:534 dcim/choices.py:764 dcim/choices.py:1141 -#: dcim/choices.py:1143 dcim/choices.py:1348 dcim/choices.py:1350 +#: dcim/choices.py:543 dcim/choices.py:782 dcim/choices.py:1169 +#: dcim/choices.py:1171 dcim/choices.py:1376 dcim/choices.py:1378 #: netbox/navigation/menu.py:187 msgid "Other" msgstr "Інше" -#: dcim/choices.py:733 +#: dcim/choices.py:746 msgid "ITA/International" msgstr "ITA/Міжнародні" -#: dcim/choices.py:794 +#: dcim/choices.py:812 msgid "Physical" msgstr "Фізичний" -#: dcim/choices.py:795 dcim/choices.py:954 +#: dcim/choices.py:813 dcim/choices.py:977 msgid "Virtual" msgstr "Віртуальний" -#: dcim/choices.py:796 dcim/choices.py:1026 dcim/forms/bulk_edit.py:1408 -#: dcim/forms/filtersets.py:1231 dcim/forms/model_forms.py:933 +#: dcim/choices.py:814 dcim/choices.py:1049 dcim/forms/bulk_edit.py:1408 +#: dcim/forms/filtersets.py:1239 dcim/forms/model_forms.py:933 #: dcim/forms/model_forms.py:1341 netbox/navigation/menu.py:127 #: netbox/navigation/menu.py:131 templates/dcim/interface.html:210 msgid "Wireless" msgstr "Бездротовий" -#: dcim/choices.py:952 +#: dcim/choices.py:975 msgid "Virtual interfaces" msgstr "Віртуальні інтерфейси" -#: dcim/choices.py:955 dcim/forms/bulk_edit.py:1303 +#: dcim/choices.py:978 dcim/forms/bulk_edit.py:1303 #: dcim/forms/bulk_import.py:785 dcim/forms/model_forms.py:919 #: dcim/tables/devices.py:656 templates/dcim/interface.html:106 #: templates/virtualization/vminterface.html:43 @@ -2041,152 +2081,152 @@ msgstr "Віртуальні інтерфейси" msgid "Bridge" msgstr "міст" -#: dcim/choices.py:956 +#: dcim/choices.py:979 msgid "Link Aggregation Group (LAG)" msgstr "Група агрегації посилань (LAG)" -#: dcim/choices.py:960 +#: dcim/choices.py:983 msgid "Ethernet (fixed)" msgstr "Ethernet (фіксований)" -#: dcim/choices.py:974 +#: dcim/choices.py:997 msgid "Ethernet (modular)" msgstr "Ethernet (модульний)" -#: dcim/choices.py:1010 +#: dcim/choices.py:1033 msgid "Ethernet (backplane)" msgstr "Ethernet (бечна панель)" -#: dcim/choices.py:1040 +#: dcim/choices.py:1063 msgid "Cellular" msgstr "Стільниковий" -#: dcim/choices.py:1090 dcim/forms/filtersets.py:303 -#: dcim/forms/filtersets.py:737 dcim/forms/filtersets.py:874 -#: dcim/forms/filtersets.py:1426 templates/dcim/inventoryitem.html:52 +#: dcim/choices.py:1115 dcim/forms/filtersets.py:303 +#: dcim/forms/filtersets.py:738 dcim/forms/filtersets.py:882 +#: dcim/forms/filtersets.py:1434 templates/dcim/inventoryitem.html:52 #: templates/dcim/virtualchassis_edit.html:54 msgid "Serial" msgstr "Серійний" -#: dcim/choices.py:1105 +#: dcim/choices.py:1130 msgid "Coaxial" msgstr "Коаксіальний" -#: dcim/choices.py:1122 +#: dcim/choices.py:1150 msgid "Stacking" msgstr "укладання" -#: dcim/choices.py:1172 +#: dcim/choices.py:1200 msgid "Half" msgstr "Половина" -#: dcim/choices.py:1173 +#: dcim/choices.py:1201 msgid "Full" msgstr "Повний" -#: dcim/choices.py:1174 netbox/preferences.py:31 wireless/choices.py:480 +#: dcim/choices.py:1202 netbox/preferences.py:31 wireless/choices.py:480 msgid "Auto" msgstr "Авто" -#: dcim/choices.py:1185 +#: dcim/choices.py:1213 msgid "Access" msgstr "Доступ" -#: dcim/choices.py:1186 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 +#: dcim/choices.py:1214 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 #: templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "Теги" -#: dcim/choices.py:1187 +#: dcim/choices.py:1215 msgid "Tagged (All)" msgstr "Теги (Всі)" -#: dcim/choices.py:1216 +#: dcim/choices.py:1244 msgid "IEEE Standard" msgstr "Стандарт IEEE" -#: dcim/choices.py:1227 +#: dcim/choices.py:1255 msgid "Passive 24V (2-pair)" msgstr "Пасивний 24В (2-парний)" -#: dcim/choices.py:1228 +#: dcim/choices.py:1256 msgid "Passive 24V (4-pair)" msgstr "Пасивний 24В (4-парний)" -#: dcim/choices.py:1229 +#: dcim/choices.py:1257 msgid "Passive 48V (2-pair)" msgstr "Пасивний 48В (2-парний)" -#: dcim/choices.py:1230 +#: dcim/choices.py:1258 msgid "Passive 48V (4-pair)" msgstr "Пасивний 48В (4-парний)" -#: dcim/choices.py:1292 dcim/choices.py:1388 +#: dcim/choices.py:1320 dcim/choices.py:1416 msgid "Copper" msgstr "Мідь" -#: dcim/choices.py:1315 +#: dcim/choices.py:1343 msgid "Fiber Optic" msgstr "Волоконно-оптичні" -#: dcim/choices.py:1404 +#: dcim/choices.py:1432 msgid "Fiber" msgstr "Клітковина" -#: dcim/choices.py:1428 dcim/forms/filtersets.py:1138 +#: dcim/choices.py:1456 dcim/forms/filtersets.py:1146 msgid "Connected" msgstr "Підключений" -#: dcim/choices.py:1447 +#: dcim/choices.py:1475 msgid "Kilometers" msgstr "кілометри" -#: dcim/choices.py:1448 templates/dcim/cable_trace.html:65 +#: dcim/choices.py:1476 templates/dcim/cable_trace.html:65 msgid "Meters" msgstr "Лічильники" -#: dcim/choices.py:1449 +#: dcim/choices.py:1477 msgid "Centimeters" msgstr "Сантиметри" -#: dcim/choices.py:1450 +#: dcim/choices.py:1478 msgid "Miles" msgstr "Майлз" -#: dcim/choices.py:1451 templates/dcim/cable_trace.html:66 +#: dcim/choices.py:1479 templates/dcim/cable_trace.html:66 msgid "Feet" msgstr "Ноги" -#: dcim/choices.py:1467 templates/dcim/device.html:319 +#: dcim/choices.py:1495 templates/dcim/device.html:319 #: templates/dcim/rack.html:152 msgid "Kilograms" msgstr "Кілограми" -#: dcim/choices.py:1468 +#: dcim/choices.py:1496 msgid "Grams" msgstr "Грам" -#: dcim/choices.py:1469 templates/dcim/rack.html:153 +#: dcim/choices.py:1497 templates/dcim/rack.html:153 msgid "Pounds" msgstr "фунтів" -#: dcim/choices.py:1470 +#: dcim/choices.py:1498 msgid "Ounces" msgstr "Унції" -#: dcim/choices.py:1516 tenancy/choices.py:17 +#: dcim/choices.py:1544 tenancy/choices.py:17 msgid "Primary" msgstr "первинний" -#: dcim/choices.py:1517 +#: dcim/choices.py:1545 msgid "Redundant" msgstr "Надлишковий" -#: dcim/choices.py:1538 +#: dcim/choices.py:1566 msgid "Single phase" msgstr "Однофазний" -#: dcim/choices.py:1539 +#: dcim/choices.py:1567 msgid "Three-phase" msgstr "Трифазний" @@ -2237,30 +2277,30 @@ msgid "Parent location (slug)" msgstr "Батьківське розташування (слимак)" #: dcim/filtersets.py:257 dcim/filtersets.py:333 dcim/filtersets.py:432 -#: dcim/filtersets.py:1005 dcim/filtersets.py:1331 dcim/filtersets.py:2101 +#: dcim/filtersets.py:1005 dcim/filtersets.py:1341 dcim/filtersets.py:2111 msgid "Location (ID)" msgstr "Місцезнаходження (ID)" #: dcim/filtersets.py:264 dcim/filtersets.py:340 dcim/filtersets.py:439 -#: dcim/filtersets.py:1337 extras/filtersets.py:494 +#: dcim/filtersets.py:1347 extras/filtersets.py:494 msgid "Location (slug)" msgstr "Розташування (слимак)" #: dcim/filtersets.py:354 dcim/filtersets.py:840 dcim/filtersets.py:942 -#: dcim/filtersets.py:1769 ipam/filtersets.py:381 ipam/filtersets.py:493 +#: dcim/filtersets.py:1779 ipam/filtersets.py:381 ipam/filtersets.py:493 #: ipam/filtersets.py:989 virtualization/filtersets.py:210 msgid "Role (ID)" msgstr "Роль (ID)" #: dcim/filtersets.py:360 dcim/filtersets.py:846 dcim/filtersets.py:948 -#: dcim/filtersets.py:1775 extras/filtersets.py:510 ipam/filtersets.py:387 +#: dcim/filtersets.py:1785 extras/filtersets.py:510 ipam/filtersets.py:387 #: ipam/filtersets.py:499 ipam/filtersets.py:995 #: virtualization/filtersets.py:216 msgid "Role (slug)" msgstr "Роль (слимак)" -#: dcim/filtersets.py:389 dcim/filtersets.py:1010 dcim/filtersets.py:1342 -#: dcim/filtersets.py:2163 +#: dcim/filtersets.py:389 dcim/filtersets.py:1010 dcim/filtersets.py:1352 +#: dcim/filtersets.py:2173 msgid "Rack (ID)" msgstr "Стелаж (ID)" @@ -2275,14 +2315,14 @@ msgid "User (name)" msgstr "Користувач (ім'я)" #: dcim/filtersets.py:481 dcim/filtersets.py:620 dcim/filtersets.py:830 -#: dcim/filtersets.py:881 dcim/filtersets.py:921 dcim/filtersets.py:1233 -#: dcim/filtersets.py:1759 +#: dcim/filtersets.py:881 dcim/filtersets.py:921 dcim/filtersets.py:1243 +#: dcim/filtersets.py:1769 msgid "Manufacturer (ID)" msgstr "Виробник (ID)" #: dcim/filtersets.py:487 dcim/filtersets.py:626 dcim/filtersets.py:836 -#: dcim/filtersets.py:887 dcim/filtersets.py:927 dcim/filtersets.py:1239 -#: dcim/filtersets.py:1765 +#: dcim/filtersets.py:887 dcim/filtersets.py:927 dcim/filtersets.py:1249 +#: dcim/filtersets.py:1775 msgid "Manufacturer (slug)" msgstr "Виробник (слимак)" @@ -2304,37 +2344,37 @@ msgstr "Має тилове зображення" #: dcim/filtersets.py:509 dcim/filtersets.py:630 dcim/filtersets.py:1068 #: dcim/forms/filtersets.py:466 dcim/forms/filtersets.py:562 -#: dcim/forms/filtersets.py:776 +#: dcim/forms/filtersets.py:777 msgid "Has console ports" msgstr "Має консольні порти" #: dcim/filtersets.py:513 dcim/filtersets.py:634 dcim/filtersets.py:1072 #: dcim/forms/filtersets.py:473 dcim/forms/filtersets.py:569 -#: dcim/forms/filtersets.py:783 +#: dcim/forms/filtersets.py:784 msgid "Has console server ports" msgstr "Має порти консольного сервера" #: dcim/filtersets.py:517 dcim/filtersets.py:638 dcim/filtersets.py:1076 #: dcim/forms/filtersets.py:480 dcim/forms/filtersets.py:576 -#: dcim/forms/filtersets.py:790 +#: dcim/forms/filtersets.py:791 msgid "Has power ports" msgstr "Має порти живлення" #: dcim/filtersets.py:521 dcim/filtersets.py:642 dcim/filtersets.py:1080 #: dcim/forms/filtersets.py:487 dcim/forms/filtersets.py:583 -#: dcim/forms/filtersets.py:797 +#: dcim/forms/filtersets.py:798 msgid "Has power outlets" msgstr "Має розетки" #: dcim/filtersets.py:525 dcim/filtersets.py:646 dcim/filtersets.py:1084 #: dcim/forms/filtersets.py:494 dcim/forms/filtersets.py:590 -#: dcim/forms/filtersets.py:804 +#: dcim/forms/filtersets.py:805 msgid "Has interfaces" msgstr "Має інтерфейси" #: dcim/filtersets.py:529 dcim/filtersets.py:650 dcim/filtersets.py:1088 #: dcim/forms/filtersets.py:501 dcim/forms/filtersets.py:597 -#: dcim/forms/filtersets.py:811 +#: dcim/forms/filtersets.py:812 msgid "Has pass-through ports" msgstr "Має прохідні порти" @@ -2350,19 +2390,19 @@ msgstr "Має відсіки для пристроїв" msgid "Has inventory items" msgstr "Має предмети інвентарю" -#: dcim/filtersets.py:698 dcim/filtersets.py:937 dcim/filtersets.py:1363 +#: dcim/filtersets.py:698 dcim/filtersets.py:937 dcim/filtersets.py:1373 msgid "Device type (ID)" msgstr "Тип пристрою (ID)" -#: dcim/filtersets.py:717 dcim/filtersets.py:1244 +#: dcim/filtersets.py:717 dcim/filtersets.py:1254 msgid "Module type (ID)" msgstr "Тип модуля (ID)" -#: dcim/filtersets.py:752 dcim/filtersets.py:1514 +#: dcim/filtersets.py:752 dcim/filtersets.py:1524 msgid "Power port (ID)" msgstr "Порт живлення (ID)" -#: dcim/filtersets.py:826 dcim/filtersets.py:1755 +#: dcim/filtersets.py:826 dcim/filtersets.py:1765 msgid "Parent inventory item (ID)" msgstr "Батьківський товарний товар (ID)" @@ -2388,8 +2428,8 @@ msgstr "Платформа (ID)" msgid "Platform (slug)" msgstr "Платформа (слимак)" -#: dcim/filtersets.py:999 dcim/filtersets.py:1326 dcim/filtersets.py:1853 -#: dcim/filtersets.py:2095 dcim/filtersets.py:2154 +#: dcim/filtersets.py:999 dcim/filtersets.py:1336 dcim/filtersets.py:1863 +#: dcim/filtersets.py:2105 dcim/filtersets.py:2164 msgid "Site name (slug)" msgstr "Назва сайту (слимак)" @@ -2410,15 +2450,15 @@ msgid "Is full depth" msgstr "Це повна глибина" #: dcim/filtersets.py:1040 dcim/forms/common.py:18 -#: dcim/forms/filtersets.py:746 dcim/forms/filtersets.py:1283 +#: dcim/forms/filtersets.py:747 dcim/forms/filtersets.py:1291 #: dcim/models/device_components.py:519 virtualization/filtersets.py:230 #: virtualization/filtersets.py:297 virtualization/forms/filtersets.py:172 #: virtualization/forms/filtersets.py:219 msgid "MAC address" msgstr "MAC-адреса" -#: dcim/filtersets.py:1047 dcim/filtersets.py:1201 -#: dcim/forms/filtersets.py:755 dcim/forms/filtersets.py:841 +#: dcim/filtersets.py:1047 dcim/filtersets.py:1211 +#: dcim/forms/filtersets.py:756 dcim/forms/filtersets.py:849 #: virtualization/filtersets.py:234 virtualization/forms/filtersets.py:176 msgid "Has a primary IP" msgstr "Має основний IP" @@ -2439,59 +2479,63 @@ msgstr "Є віртуальним членом шасі" msgid "OOB IP (ID)" msgstr "OOB IP (ІДЕНТИФІКАТОР)" -#: dcim/filtersets.py:1184 +#: dcim/filtersets.py:1105 +msgid "Has virtual device context" +msgstr "Має контекст віртуального пристрою" + +#: dcim/filtersets.py:1194 msgid "VDC (ID)" msgstr "В ПОСТІЙНОГО СТРУМУ (ІДЕНТИФІКАТОР)" -#: dcim/filtersets.py:1189 +#: dcim/filtersets.py:1199 msgid "Device model" msgstr "Модель пристрою" -#: dcim/filtersets.py:1194 ipam/filtersets.py:632 vpn/filtersets.py:102 +#: dcim/filtersets.py:1204 ipam/filtersets.py:632 vpn/filtersets.py:102 #: vpn/filtersets.py:420 msgid "Interface (ID)" msgstr "Інтерфейс (ID)" -#: dcim/filtersets.py:1250 +#: dcim/filtersets.py:1260 msgid "Module type (model)" msgstr "Тип модуля (модель)" -#: dcim/filtersets.py:1256 +#: dcim/filtersets.py:1266 msgid "Module Bay (ID)" msgstr "Відсік модулів (ID)" -#: dcim/filtersets.py:1260 dcim/filtersets.py:1352 ipam/filtersets.py:611 +#: dcim/filtersets.py:1270 dcim/filtersets.py:1362 ipam/filtersets.py:611 #: ipam/filtersets.py:851 ipam/filtersets.py:1075 #: virtualization/filtersets.py:161 vpn/filtersets.py:398 msgid "Device (ID)" msgstr "Пристрій (ID)" -#: dcim/filtersets.py:1348 +#: dcim/filtersets.py:1358 msgid "Rack (name)" msgstr "Стелаж (назва)" -#: dcim/filtersets.py:1358 ipam/filtersets.py:606 ipam/filtersets.py:846 +#: dcim/filtersets.py:1368 ipam/filtersets.py:606 ipam/filtersets.py:846 #: ipam/filtersets.py:1081 vpn/filtersets.py:393 msgid "Device (name)" msgstr "Пристрій (назва)" -#: dcim/filtersets.py:1369 +#: dcim/filtersets.py:1379 msgid "Device type (model)" msgstr "Тип пристрою (модель)" -#: dcim/filtersets.py:1374 +#: dcim/filtersets.py:1384 msgid "Device role (ID)" msgstr "Роль пристрою (ID)" -#: dcim/filtersets.py:1380 +#: dcim/filtersets.py:1390 msgid "Device role (slug)" msgstr "Роль пристрою (слимак)" -#: dcim/filtersets.py:1385 +#: dcim/filtersets.py:1395 msgid "Virtual Chassis (ID)" msgstr "Віртуальне шасі (ID)" -#: dcim/filtersets.py:1391 dcim/forms/filtersets.py:107 +#: dcim/filtersets.py:1401 dcim/forms/filtersets.py:107 #: dcim/tables/devices.py:211 netbox/navigation/menu.py:66 #: templates/dcim/device.html:119 templates/dcim/device_edit.html:93 #: templates/dcim/virtualchassis.html:20 @@ -2500,37 +2544,37 @@ msgstr "Віртуальне шасі (ID)" msgid "Virtual Chassis" msgstr "Віртуальне шасі" -#: dcim/filtersets.py:1411 +#: dcim/filtersets.py:1421 msgid "Module (ID)" msgstr "Модуль (ID)" -#: dcim/filtersets.py:1418 +#: dcim/filtersets.py:1428 msgid "Cable (ID)" msgstr "Кабель (ID)" -#: dcim/filtersets.py:1527 ipam/forms/bulk_import.py:188 +#: dcim/filtersets.py:1537 ipam/forms/bulk_import.py:188 #: vpn/forms/bulk_import.py:308 msgid "Assigned VLAN" msgstr "Призначена VLAN" -#: dcim/filtersets.py:1531 +#: dcim/filtersets.py:1541 msgid "Assigned VID" msgstr "Призначений VID" -#: dcim/filtersets.py:1536 dcim/forms/bulk_edit.py:1382 -#: dcim/forms/bulk_import.py:836 dcim/forms/filtersets.py:1326 +#: dcim/filtersets.py:1546 dcim/forms/bulk_edit.py:1382 +#: dcim/forms/bulk_import.py:836 dcim/forms/filtersets.py:1334 #: dcim/forms/model_forms.py:1322 dcim/models/device_components.py:712 -#: dcim/tables/devices.py:618 ipam/filtersets.py:316 ipam/filtersets.py:327 +#: dcim/tables/devices.py:622 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:227 ipam/forms/bulk_edit.py:282 #: ipam/forms/bulk_edit.py:324 ipam/forms/bulk_import.py:156 #: ipam/forms/bulk_import.py:242 ipam/forms/bulk_import.py:278 -#: ipam/forms/filtersets.py:67 ipam/forms/filtersets.py:171 -#: ipam/forms/filtersets.py:302 ipam/forms/model_forms.py:60 +#: ipam/forms/filtersets.py:67 ipam/forms/filtersets.py:172 +#: ipam/forms/filtersets.py:309 ipam/forms/model_forms.py:60 #: ipam/forms/model_forms.py:200 ipam/forms/model_forms.py:245 -#: ipam/forms/model_forms.py:298 ipam/forms/model_forms.py:420 -#: ipam/forms/model_forms.py:434 ipam/forms/model_forms.py:448 -#: ipam/models/ip.py:232 ipam/models/ip.py:511 ipam/models/ip.py:719 +#: ipam/forms/model_forms.py:298 ipam/forms/model_forms.py:429 +#: ipam/forms/model_forms.py:443 ipam/forms/model_forms.py:457 +#: ipam/models/ip.py:233 ipam/models/ip.py:512 ipam/models/ip.py:720 #: ipam/models/vrfs.py:62 ipam/tables/ip.py:241 ipam/tables/ip.py:306 #: ipam/tables/ip.py:356 ipam/tables/ip.py:445 #: templates/dcim/interface.html:133 templates/ipam/ipaddress.html:18 @@ -2546,18 +2590,18 @@ msgstr "Призначений VID" msgid "VRF" msgstr "ВРФ" -#: dcim/filtersets.py:1542 ipam/filtersets.py:322 ipam/filtersets.py:333 +#: dcim/filtersets.py:1552 ipam/filtersets.py:322 ipam/filtersets.py:333 #: ipam/filtersets.py:489 ipam/filtersets.py:590 ipam/filtersets.py:601 msgid "VRF (RD)" msgstr "VRF (ДРУГИЙ)" -#: dcim/filtersets.py:1547 ipam/filtersets.py:1016 vpn/filtersets.py:361 +#: dcim/filtersets.py:1557 ipam/filtersets.py:1016 vpn/filtersets.py:361 msgid "L2VPN (ID)" msgstr "L2VPN (ІДЕНТИФІКАТОР)" -#: dcim/filtersets.py:1553 dcim/forms/filtersets.py:1331 -#: dcim/tables/devices.py:566 ipam/filtersets.py:1022 -#: ipam/forms/filtersets.py:518 ipam/tables/vlans.py:133 +#: dcim/filtersets.py:1563 dcim/forms/filtersets.py:1339 +#: dcim/tables/devices.py:570 ipam/filtersets.py:1022 +#: ipam/forms/filtersets.py:525 ipam/tables/vlans.py:133 #: templates/dcim/interface.html:93 templates/ipam/vlan.html:66 #: templates/vpn/l2vpntermination.html:12 #: virtualization/forms/filtersets.py:229 vpn/forms/bulk_import.py:280 @@ -2566,82 +2610,82 @@ msgstr "L2VPN (ІДЕНТИФІКАТОР)" msgid "L2VPN" msgstr "L2VPN" -#: dcim/filtersets.py:1585 +#: dcim/filtersets.py:1595 msgid "Virtual Chassis Interfaces for Device" msgstr "Віртуальні інтерфейси шасі для пристрою" -#: dcim/filtersets.py:1590 +#: dcim/filtersets.py:1600 msgid "Virtual Chassis Interfaces for Device (ID)" msgstr "Віртуальні інтерфейси шасі для пристрою (ID)" -#: dcim/filtersets.py:1594 +#: dcim/filtersets.py:1604 msgid "Kind of interface" msgstr "Вид інтерфейсу" -#: dcim/filtersets.py:1599 virtualization/filtersets.py:289 +#: dcim/filtersets.py:1609 virtualization/filtersets.py:289 msgid "Parent interface (ID)" msgstr "Батьківський інтерфейс (ID)" -#: dcim/filtersets.py:1604 virtualization/filtersets.py:294 +#: dcim/filtersets.py:1614 virtualization/filtersets.py:294 msgid "Bridged interface (ID)" msgstr "Мостовий інтерфейс (ID)" -#: dcim/filtersets.py:1609 +#: dcim/filtersets.py:1619 msgid "LAG interface (ID)" msgstr "Інтерфейс LAG (ID)" -#: dcim/filtersets.py:1636 dcim/filtersets.py:1648 -#: dcim/forms/filtersets.py:1243 dcim/forms/model_forms.py:1634 +#: dcim/filtersets.py:1646 dcim/filtersets.py:1658 +#: dcim/forms/filtersets.py:1251 dcim/forms/model_forms.py:1634 #: templates/dcim/virtualdevicecontext.html:15 msgid "Virtual Device Context" msgstr "Контекст віртуального пристрою" -#: dcim/filtersets.py:1642 +#: dcim/filtersets.py:1652 msgid "Virtual Device Context (Identifier)" msgstr "Контекст віртуального пристрою (ідентифікатор)" -#: dcim/filtersets.py:1653 templates/wireless/wirelesslan.html:11 +#: dcim/filtersets.py:1663 templates/wireless/wirelesslan.html:11 #: wireless/forms/model_forms.py:53 msgid "Wireless LAN" msgstr "Бездротова локальна мережа" -#: dcim/filtersets.py:1657 dcim/tables/devices.py:605 +#: dcim/filtersets.py:1667 dcim/tables/devices.py:609 msgid "Wireless link" msgstr "Бездротова зв'язок" -#: dcim/filtersets.py:1727 +#: dcim/filtersets.py:1737 msgid "Installed module (ID)" msgstr "Встановлений модуль (ID)" -#: dcim/filtersets.py:1738 +#: dcim/filtersets.py:1748 msgid "Installed device (ID)" msgstr "Встановлений пристрій (ID)" -#: dcim/filtersets.py:1744 +#: dcim/filtersets.py:1754 msgid "Installed device (name)" msgstr "Встановлений пристрій (назва)" -#: dcim/filtersets.py:1810 +#: dcim/filtersets.py:1820 msgid "Master (ID)" msgstr "Майстер (ID)" -#: dcim/filtersets.py:1816 +#: dcim/filtersets.py:1826 msgid "Master (name)" msgstr "Майстер (ім'я)" -#: dcim/filtersets.py:1858 tenancy/filtersets.py:246 +#: dcim/filtersets.py:1868 tenancy/filtersets.py:246 msgid "Tenant (ID)" msgstr "Орендар (ID)" -#: dcim/filtersets.py:1864 extras/filtersets.py:570 tenancy/filtersets.py:252 +#: dcim/filtersets.py:1874 extras/filtersets.py:570 tenancy/filtersets.py:252 msgid "Tenant (slug)" msgstr "Орендар (слимак)" -#: dcim/filtersets.py:1900 dcim/forms/filtersets.py:988 +#: dcim/filtersets.py:1910 dcim/forms/filtersets.py:996 msgid "Unterminated" msgstr "Незакінчений" -#: dcim/filtersets.py:2158 +#: dcim/filtersets.py:2168 msgid "Power panel (ID)" msgstr "Панель живлення (ID)" @@ -2649,13 +2693,13 @@ msgstr "Панель живлення (ID)" #: extras/forms/model_forms.py:443 extras/forms/model_forms.py:495 #: netbox/forms/base.py:84 netbox/forms/mixins.py:81 #: netbox/tables/columns.py:458 -#: templates/circuits/inc/circuit_termination.html:118 +#: 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 msgid "Tags" msgstr "Теги" -#: dcim/forms/bulk_create.py:112 dcim/forms/filtersets.py:1388 +#: dcim/forms/bulk_create.py:112 dcim/forms/filtersets.py:1396 #: dcim/forms/model_forms.py:431 dcim/forms/model_forms.py:486 #: dcim/forms/object_create.py:197 dcim/forms/object_create.py:353 #: dcim/tables/devices.py:170 dcim/tables/devices.py:702 @@ -2677,7 +2721,7 @@ msgstr "" #: dcim/forms/bulk_edit.py:116 dcim/forms/bulk_import.py:99 #: dcim/forms/model_forms.py:116 dcim/tables/sites.py:89 #: ipam/filtersets.py:985 ipam/forms/bulk_edit.py:531 -#: ipam/forms/bulk_import.py:444 ipam/forms/model_forms.py:517 +#: ipam/forms/bulk_import.py:444 ipam/forms/model_forms.py:526 #: ipam/tables/fhrp.py:67 ipam/tables/vlans.py:118 ipam/tables/vlans.py:221 #: templates/dcim/interface.html:284 templates/dcim/site.html:36 #: templates/ipam/inc/panels/fhrp_groups.html:23 templates/ipam/vlan.html:27 @@ -2724,7 +2768,7 @@ msgstr "Часовий пояс" #: dcim/forms/bulk_edit.py:267 dcim/forms/bulk_edit.py:1160 #: dcim/forms/bulk_edit.py:1548 dcim/forms/bulk_import.py:207 #: dcim/forms/bulk_import.py:1021 dcim/forms/filtersets.py:300 -#: dcim/forms/filtersets.py:705 dcim/forms/filtersets.py:1418 +#: dcim/forms/filtersets.py:706 dcim/forms/filtersets.py:1426 #: dcim/forms/model_forms.py:219 dcim/forms/model_forms.py:1015 #: dcim/forms/model_forms.py:1454 dcim/forms/object_import.py:181 #: dcim/tables/devices.py:174 dcim/tables/devices.py:810 @@ -2734,10 +2778,10 @@ msgstr "Часовий пояс" #: ipam/forms/bulk_edit.py:343 ipam/forms/bulk_edit.py:549 #: ipam/forms/bulk_import.py:196 ipam/forms/bulk_import.py:261 #: ipam/forms/bulk_import.py:297 ipam/forms/bulk_import.py:463 -#: ipam/forms/filtersets.py:236 ipam/forms/filtersets.py:282 -#: ipam/forms/filtersets.py:353 ipam/forms/filtersets.py:509 +#: ipam/forms/filtersets.py:237 ipam/forms/filtersets.py:289 +#: ipam/forms/filtersets.py:360 ipam/forms/filtersets.py:516 #: ipam/forms/model_forms.py:186 ipam/forms/model_forms.py:219 -#: ipam/forms/model_forms.py:248 ipam/forms/model_forms.py:680 +#: ipam/forms/model_forms.py:248 ipam/forms/model_forms.py:689 #: ipam/tables/ip.py:257 ipam/tables/ip.py:313 ipam/tables/ip.py:363 #: ipam/tables/vlans.py:126 ipam/tables/vlans.py:230 #: templates/dcim/device.html:179 @@ -2770,8 +2814,8 @@ msgid "Serial Number" msgstr "Серійний номер" #: dcim/forms/bulk_edit.py:277 dcim/forms/filtersets.py:307 -#: dcim/forms/filtersets.py:741 dcim/forms/filtersets.py:878 -#: dcim/forms/filtersets.py:1430 +#: dcim/forms/filtersets.py:742 dcim/forms/filtersets.py:886 +#: dcim/forms/filtersets.py:1438 msgid "Asset tag" msgstr "Тег активів" @@ -2842,14 +2886,14 @@ msgstr "Вагова одиниця" #: dcim/forms/bulk_import.py:498 dcim/forms/bulk_import.py:1309 #: dcim/forms/bulk_import.py:1313 dcim/forms/filtersets.py:102 #: dcim/forms/filtersets.py:340 dcim/forms/filtersets.py:354 -#: dcim/forms/filtersets.py:392 dcim/forms/filtersets.py:700 -#: dcim/forms/filtersets.py:946 dcim/forms/filtersets.py:1078 +#: dcim/forms/filtersets.py:392 dcim/forms/filtersets.py:701 +#: dcim/forms/filtersets.py:954 dcim/forms/filtersets.py:1086 #: dcim/forms/model_forms.py:226 dcim/forms/model_forms.py:248 #: dcim/forms/model_forms.py:422 dcim/forms/model_forms.py:700 #: dcim/forms/object_create.py:400 dcim/tables/devices.py:166 #: dcim/tables/power.py:70 dcim/tables/racks.py:148 -#: ipam/forms/bulk_edit.py:465 ipam/forms/filtersets.py:435 -#: ipam/forms/model_forms.py:601 templates/dcim/device.html:29 +#: ipam/forms/bulk_edit.py:465 ipam/forms/filtersets.py:442 +#: ipam/forms/model_forms.py:610 templates/dcim/device.html:29 #: 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 @@ -2861,7 +2905,7 @@ msgstr "Стелаж" #: dcim/forms/bulk_edit.py:349 dcim/forms/bulk_edit.py:628 #: dcim/forms/filtersets.py:248 dcim/forms/filtersets.py:333 #: dcim/forms/filtersets.py:416 dcim/forms/filtersets.py:543 -#: dcim/forms/filtersets.py:651 dcim/forms/filtersets.py:853 +#: dcim/forms/filtersets.py:651 dcim/forms/filtersets.py:861 #: dcim/forms/model_forms.py:610 dcim/forms/model_forms.py:1524 #: templates/dcim/device_edit.html:20 msgid "Hardware" @@ -2874,8 +2918,8 @@ msgstr "Апаратне забезпечення" #: dcim/forms/bulk_import.py:353 dcim/forms/bulk_import.py:395 #: dcim/forms/bulk_import.py:431 dcim/forms/bulk_import.py:1027 #: dcim/forms/filtersets.py:429 dcim/forms/filtersets.py:554 -#: dcim/forms/filtersets.py:630 dcim/forms/filtersets.py:710 -#: dcim/forms/filtersets.py:858 dcim/forms/filtersets.py:1423 +#: dcim/forms/filtersets.py:630 dcim/forms/filtersets.py:711 +#: dcim/forms/filtersets.py:866 dcim/forms/filtersets.py:1431 #: dcim/forms/model_forms.py:281 dcim/forms/model_forms.py:293 #: dcim/forms/model_forms.py:339 dcim/forms/model_forms.py:379 #: dcim/forms/model_forms.py:1020 dcim/forms/model_forms.py:1459 @@ -2909,7 +2953,7 @@ msgstr "Виключити з утилізації" #: dcim/forms/bulk_edit.py:431 dcim/forms/bulk_edit.py:603 #: dcim/forms/bulk_import.py:525 dcim/forms/filtersets.py:446 -#: dcim/forms/filtersets.py:732 templates/dcim/device.html:97 +#: dcim/forms/filtersets.py:733 templates/dcim/device.html:97 #: templates/dcim/devicetype.html:65 msgid "Airflow" msgstr "Потік повітря" @@ -2936,7 +2980,7 @@ msgstr "Роль ВМ" #: dcim/forms/bulk_import.py:380 dcim/forms/bulk_import.py:402 #: dcim/forms/bulk_import.py:406 dcim/forms/bulk_import.py:531 #: dcim/forms/bulk_import.py:535 dcim/forms/filtersets.py:619 -#: dcim/forms/filtersets.py:635 dcim/forms/filtersets.py:751 +#: dcim/forms/filtersets.py:635 dcim/forms/filtersets.py:752 #: dcim/forms/model_forms.py:358 dcim/forms/model_forms.py:384 #: dcim/forms/model_forms.py:495 virtualization/forms/bulk_import.py:132 #: virtualization/forms/bulk_import.py:133 @@ -2958,7 +3002,7 @@ msgid "Device role" msgstr "Роль пристрою" #: dcim/forms/bulk_edit.py:593 dcim/forms/bulk_import.py:443 -#: dcim/forms/filtersets.py:724 dcim/forms/model_forms.py:394 +#: dcim/forms/filtersets.py:725 dcim/forms/model_forms.py:394 #: dcim/forms/model_forms.py:456 dcim/tables/devices.py:187 #: extras/filtersets.py:515 templates/dcim/device.html:183 #: templates/dcim/platform.html:26 @@ -2980,28 +3024,28 @@ msgstr "Платформа" #: dcim/forms/bulk_import.py:956 dcim/forms/bulk_import.py:968 #: dcim/forms/bulk_import.py:1016 dcim/forms/bulk_import.py:1373 #: dcim/forms/connections.py:24 dcim/forms/filtersets.py:129 -#: dcim/forms/filtersets.py:832 dcim/forms/filtersets.py:962 -#: dcim/forms/filtersets.py:1152 dcim/forms/filtersets.py:1174 -#: dcim/forms/filtersets.py:1196 dcim/forms/filtersets.py:1213 -#: dcim/forms/filtersets.py:1233 dcim/forms/filtersets.py:1341 -#: dcim/forms/filtersets.py:1363 dcim/forms/filtersets.py:1384 -#: dcim/forms/filtersets.py:1399 dcim/forms/filtersets.py:1413 -#: dcim/forms/filtersets.py:1476 dcim/forms/filtersets.py:1500 -#: dcim/forms/filtersets.py:1524 dcim/forms/model_forms.py:573 +#: dcim/forms/filtersets.py:840 dcim/forms/filtersets.py:970 +#: dcim/forms/filtersets.py:1160 dcim/forms/filtersets.py:1182 +#: dcim/forms/filtersets.py:1204 dcim/forms/filtersets.py:1221 +#: dcim/forms/filtersets.py:1241 dcim/forms/filtersets.py:1349 +#: dcim/forms/filtersets.py:1371 dcim/forms/filtersets.py:1392 +#: dcim/forms/filtersets.py:1407 dcim/forms/filtersets.py:1421 +#: dcim/forms/filtersets.py:1484 dcim/forms/filtersets.py:1508 +#: dcim/forms/filtersets.py:1532 dcim/forms/model_forms.py:573 #: dcim/forms/model_forms.py:794 dcim/forms/model_forms.py:1153 #: dcim/forms/model_forms.py:1608 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:290 -#: dcim/tables/devices.py:355 dcim/tables/devices.py:399 -#: dcim/tables/devices.py:444 dcim/tables/devices.py:498 -#: dcim/tables/devices.py:590 dcim/tables/devices.py:692 +#: dcim/tables/devices.py:359 dcim/tables/devices.py:403 +#: dcim/tables/devices.py:448 dcim/tables/devices.py:502 +#: dcim/tables/devices.py:594 dcim/tables/devices.py:692 #: dcim/tables/devices.py:752 dcim/tables/devices.py:802 #: dcim/tables/devices.py:862 dcim/tables/devices.py:914 #: dcim/tables/devices.py:1040 dcim/tables/modules.py:52 #: extras/forms/filtersets.py:330 ipam/forms/bulk_import.py:303 -#: ipam/forms/bulk_import.py:489 ipam/forms/filtersets.py:551 -#: ipam/forms/model_forms.py:317 ipam/forms/model_forms.py:716 -#: ipam/forms/model_forms.py:749 ipam/forms/model_forms.py:775 +#: ipam/forms/bulk_import.py:489 ipam/forms/filtersets.py:558 +#: ipam/forms/model_forms.py:317 ipam/forms/model_forms.py:725 +#: ipam/forms/model_forms.py:758 ipam/forms/model_forms.py:784 #: ipam/tables/vlans.py:176 templates/dcim/consoleport.html:20 #: templates/dcim/consoleserverport.html:20 templates/dcim/device.html:14 #: templates/dcim/device.html:128 templates/dcim/device_edit.html:10 @@ -3056,13 +3100,13 @@ msgstr "Тип модуля" msgid "Label" msgstr "Етикетка" -#: dcim/forms/bulk_edit.py:706 dcim/forms/filtersets.py:979 +#: dcim/forms/bulk_edit.py:706 dcim/forms/filtersets.py:987 #: templates/dcim/cable.html:50 msgid "Length" msgstr "Довжина" #: dcim/forms/bulk_edit.py:711 dcim/forms/bulk_import.py:1174 -#: dcim/forms/bulk_import.py:1177 dcim/forms/filtersets.py:983 +#: dcim/forms/bulk_import.py:1177 dcim/forms/filtersets.py:991 msgid "Length unit" msgstr "одиниця довжини" @@ -3071,41 +3115,34 @@ msgid "Domain" msgstr "Домен" #: dcim/forms/bulk_edit.py:803 dcim/forms/bulk_import.py:1296 -#: dcim/forms/filtersets.py:1069 dcim/forms/model_forms.py:695 +#: dcim/forms/filtersets.py:1077 dcim/forms/model_forms.py:695 msgid "Power panel" msgstr "Панель живлення" #: dcim/forms/bulk_edit.py:825 dcim/forms/bulk_import.py:1332 -#: dcim/forms/filtersets.py:1091 templates/dcim/powerfeed.html:83 +#: dcim/forms/filtersets.py:1099 templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "Постачання" #: dcim/forms/bulk_edit.py:831 dcim/forms/bulk_import.py:1337 -#: dcim/forms/filtersets.py:1096 templates/dcim/powerfeed.html:95 +#: dcim/forms/filtersets.py:1104 templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "Фаза" -#: dcim/forms/bulk_edit.py:837 dcim/forms/filtersets.py:1101 +#: dcim/forms/bulk_edit.py:837 dcim/forms/filtersets.py:1109 #: templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "Напруга" -#: dcim/forms/bulk_edit.py:841 dcim/forms/filtersets.py:1105 +#: dcim/forms/bulk_edit.py:841 dcim/forms/filtersets.py:1113 #: templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "Сила струму" -#: dcim/forms/bulk_edit.py:845 dcim/forms/filtersets.py:1109 +#: dcim/forms/bulk_edit.py:845 dcim/forms/filtersets.py:1117 msgid "Max utilization" msgstr "Максимальне використання" -#: dcim/forms/bulk_edit.py:849 dcim/forms/bulk_edit.py:1208 -#: dcim/forms/bulk_edit.py:1225 dcim/forms/bulk_edit.py:1242 -#: dcim/forms/bulk_edit.py:1260 dcim/forms/bulk_edit.py:1348 -#: dcim/forms/bulk_edit.py:1487 dcim/forms/bulk_edit.py:1504 -msgid "Mark connected" -msgstr "Позначка підключена" - #: dcim/forms/bulk_edit.py:934 msgid "Maximum draw" msgstr "Максимальна нічия" @@ -3139,7 +3176,7 @@ msgid "Management only" msgstr "Тільки управління" #: dcim/forms/bulk_edit.py:1037 dcim/forms/bulk_edit.py:1339 -#: dcim/forms/bulk_import.py:821 dcim/forms/filtersets.py:1292 +#: dcim/forms/bulk_import.py:821 dcim/forms/filtersets.py:1300 #: dcim/forms/object_import.py:90 #: dcim/models/device_component_templates.py:411 #: dcim/models/device_components.py:671 @@ -3147,14 +3184,14 @@ msgid "PoE mode" msgstr "Режим PoE" #: dcim/forms/bulk_edit.py:1043 dcim/forms/bulk_edit.py:1345 -#: dcim/forms/bulk_import.py:827 dcim/forms/filtersets.py:1297 +#: dcim/forms/bulk_import.py:827 dcim/forms/filtersets.py:1305 #: dcim/forms/object_import.py:95 #: dcim/models/device_component_templates.py:417 #: dcim/models/device_components.py:677 msgid "PoE type" msgstr "Тип PoE" -#: dcim/forms/bulk_edit.py:1049 dcim/forms/filtersets.py:1302 +#: dcim/forms/bulk_edit.py:1049 dcim/forms/filtersets.py:1310 #: dcim/forms/object_import.py:100 msgid "Wireless role" msgstr "Бездротова роль" @@ -3179,10 +3216,10 @@ msgid "Virtual device contexts" msgstr "Контексти віртуальних пристроїв" #: dcim/forms/bulk_edit.py:1324 dcim/forms/bulk_import.py:659 -#: dcim/forms/bulk_import.py:685 dcim/forms/filtersets.py:1161 -#: dcim/forms/filtersets.py:1183 dcim/forms/filtersets.py:1256 -#: dcim/tables/devices.py:602 -#: templates/circuits/inc/circuit_termination.html:93 +#: dcim/forms/bulk_import.py:685 dcim/forms/filtersets.py:1169 +#: dcim/forms/filtersets.py:1191 dcim/forms/filtersets.py:1264 +#: dcim/tables/devices.py:606 +#: templates/circuits/inc/circuit_termination_fields.html:67 #: templates/dcim/consoleport.html:40 templates/dcim/consoleserverport.html:40 msgid "Speed" msgstr "Швидкість" @@ -3199,20 +3236,20 @@ msgid "Mode" msgstr "Режим" #: dcim/forms/bulk_edit.py:1361 dcim/forms/model_forms.py:1299 -#: ipam/forms/bulk_import.py:177 ipam/forms/filtersets.py:498 +#: ipam/forms/bulk_import.py:177 ipam/forms/filtersets.py:505 #: ipam/models/vlans.py:84 virtualization/forms/bulk_edit.py:240 #: virtualization/forms/model_forms.py:321 msgid "VLAN group" msgstr "Група VLAN" #: dcim/forms/bulk_edit.py:1369 dcim/forms/model_forms.py:1304 -#: dcim/tables/devices.py:575 virtualization/forms/bulk_edit.py:248 +#: dcim/tables/devices.py:579 virtualization/forms/bulk_edit.py:248 #: virtualization/forms/model_forms.py:326 msgid "Untagged VLAN" msgstr "Без тегів VLAN" #: dcim/forms/bulk_edit.py:1377 dcim/forms/model_forms.py:1313 -#: dcim/tables/devices.py:581 virtualization/forms/bulk_edit.py:256 +#: dcim/tables/devices.py:585 virtualization/forms/bulk_edit.py:256 #: virtualization/forms/model_forms.py:335 msgid "Tagged VLANs" msgstr "Теги VLAN" @@ -3222,12 +3259,12 @@ msgid "Wireless LAN group" msgstr "Група бездротової локальної мережі" #: dcim/forms/bulk_edit.py:1392 dcim/forms/model_forms.py:1291 -#: dcim/tables/devices.py:611 netbox/navigation/menu.py:133 +#: dcim/tables/devices.py:615 netbox/navigation/menu.py:133 #: templates/dcim/interface.html:280 wireless/tables/wirelesslan.py:24 msgid "Wireless LANs" msgstr "Бездротові локальні мережі" -#: dcim/forms/bulk_edit.py:1401 dcim/forms/filtersets.py:1229 +#: dcim/forms/bulk_edit.py:1401 dcim/forms/filtersets.py:1237 #: dcim/forms/model_forms.py:1334 ipam/forms/bulk_edit.py:271 #: ipam/forms/bulk_edit.py:362 ipam/forms/filtersets.py:169 #: templates/dcim/interface.html:122 templates/ipam/prefix.html:95 @@ -3240,7 +3277,7 @@ msgstr "Адресація" msgid "Operation" msgstr "Операція" -#: dcim/forms/bulk_edit.py:1403 dcim/forms/filtersets.py:1230 +#: dcim/forms/bulk_edit.py:1403 dcim/forms/filtersets.py:1238 #: dcim/forms/model_forms.py:932 dcim/forms/model_forms.py:1337 msgid "PoE" msgstr "PoE" @@ -3396,8 +3433,8 @@ msgstr "Віртуальне шасі" #: dcim/forms/bulk_import.py:462 dcim/forms/model_forms.py:465 #: dcim/tables/devices.py:207 extras/filtersets.py:548 #: extras/forms/filtersets.py:331 ipam/forms/bulk_edit.py:479 -#: ipam/forms/filtersets.py:408 ipam/forms/filtersets.py:452 -#: ipam/forms/model_forms.py:618 templates/dcim/device.html:231 +#: ipam/forms/filtersets.py:415 ipam/forms/filtersets.py:459 +#: ipam/forms/model_forms.py:627 templates/dcim/device.html:231 #: templates/virtualization/cluster.html:10 #: templates/virtualization/virtualmachine.html:88 #: templates/virtualization/virtualmachine.html:97 @@ -3539,7 +3576,7 @@ msgstr "Імена VDC, розділені комами, укладені под msgid "Physical medium" msgstr "Фізичне середовище" -#: dcim/forms/bulk_import.py:813 dcim/forms/filtersets.py:1263 +#: dcim/forms/bulk_import.py:813 dcim/forms/filtersets.py:1271 msgid "Duplex" msgstr "Дуплекс" @@ -3557,8 +3594,8 @@ msgstr "Режим роботи IEEE 802.1Q (для інтерфейсів L2)" #: dcim/forms/bulk_import.py:840 ipam/forms/bulk_import.py:160 #: ipam/forms/bulk_import.py:246 ipam/forms/bulk_import.py:282 -#: ipam/forms/filtersets.py:200 ipam/forms/filtersets.py:270 -#: ipam/forms/filtersets.py:329 virtualization/forms/bulk_import.py:175 +#: ipam/forms/filtersets.py:201 ipam/forms/filtersets.py:277 +#: ipam/forms/filtersets.py:336 virtualization/forms/bulk_import.py:175 msgid "Assigned VRF" msgstr "Призначений VRF" @@ -3785,29 +3822,33 @@ msgstr "Компоненти" msgid "Subdevice role" msgstr "Роль підпристрою" -#: dcim/forms/filtersets.py:718 +#: dcim/forms/filtersets.py:719 msgid "Model" msgstr "Модель" -#: dcim/forms/filtersets.py:762 +#: dcim/forms/filtersets.py:763 msgid "Has an OOB IP" msgstr "Має IP-адресу OOB" -#: dcim/forms/filtersets.py:769 +#: dcim/forms/filtersets.py:770 msgid "Virtual chassis member" msgstr "Віртуальний елемент шасі" -#: dcim/forms/filtersets.py:1121 +#: dcim/forms/filtersets.py:819 +msgid "Has virtual device contexts" +msgstr "Має контексти віртуальних пристроїв" + +#: dcim/forms/filtersets.py:1129 msgid "Cabled" msgstr "Кабельний" -#: dcim/forms/filtersets.py:1128 +#: dcim/forms/filtersets.py:1136 msgid "Occupied" msgstr "Окупований" -#: dcim/forms/filtersets.py:1153 dcim/forms/filtersets.py:1175 -#: dcim/forms/filtersets.py:1197 dcim/forms/filtersets.py:1214 -#: dcim/forms/filtersets.py:1234 dcim/tables/devices.py:348 +#: dcim/forms/filtersets.py:1161 dcim/forms/filtersets.py:1183 +#: dcim/forms/filtersets.py:1205 dcim/forms/filtersets.py:1222 +#: dcim/forms/filtersets.py:1242 dcim/tables/devices.py:352 #: 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 @@ -3815,40 +3856,40 @@ msgstr "Окупований" msgid "Connection" msgstr "Підключення" -#: dcim/forms/filtersets.py:1246 extras/forms/bulk_edit.py:316 +#: dcim/forms/filtersets.py:1254 extras/forms/bulk_edit.py:316 #: extras/forms/bulk_import.py:242 extras/forms/filtersets.py:476 #: extras/forms/model_forms.py:551 extras/tables/tables.py:512 #: templates/extras/journalentry.html:30 msgid "Kind" msgstr "Вид" -#: dcim/forms/filtersets.py:1275 +#: dcim/forms/filtersets.py:1283 msgid "Mgmt only" msgstr "Тільки управління" -#: dcim/forms/filtersets.py:1287 dcim/forms/model_forms.py:1327 +#: dcim/forms/filtersets.py:1295 dcim/forms/model_forms.py:1327 #: dcim/models/device_components.py:630 templates/dcim/interface.html:129 msgid "WWN" msgstr "ВОН" -#: dcim/forms/filtersets.py:1307 +#: dcim/forms/filtersets.py:1315 msgid "Wireless channel" msgstr "Бездротовий канал" -#: dcim/forms/filtersets.py:1311 +#: dcim/forms/filtersets.py:1319 msgid "Channel frequency (MHz)" msgstr "Частота каналу (МГц)" -#: dcim/forms/filtersets.py:1315 +#: dcim/forms/filtersets.py:1323 msgid "Channel width (MHz)" msgstr "Ширина каналу (МГц)" -#: dcim/forms/filtersets.py:1319 templates/dcim/interface.html:85 +#: dcim/forms/filtersets.py:1327 templates/dcim/interface.html:85 msgid "Transmit power (dBm)" msgstr "Потужність передачі (дБм)" -#: dcim/forms/filtersets.py:1342 dcim/forms/filtersets.py:1364 -#: dcim/tables/devices.py:320 templates/dcim/cable.html:12 +#: dcim/forms/filtersets.py:1350 dcim/forms/filtersets.py:1372 +#: dcim/tables/devices.py:324 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 @@ -3856,7 +3897,7 @@ msgstr "Потужність передачі (дБм)" msgid "Cable" msgstr "кабель" -#: dcim/forms/filtersets.py:1434 dcim/tables/devices.py:933 +#: dcim/forms/filtersets.py:1442 dcim/tables/devices.py:933 msgid "Discovered" msgstr "Виявлено" @@ -3976,7 +4017,7 @@ msgstr "Шаблон заднього порту" #: dcim/tables/connections.py:65 ipam/forms/bulk_import.py:317 #: ipam/forms/model_forms.py:278 ipam/forms/model_forms.py:287 #: ipam/tables/fhrp.py:64 ipam/tables/ip.py:368 ipam/tables/vlans.py:165 -#: templates/circuits/inc/circuit_termination.html:77 +#: 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 @@ -4004,7 +4045,7 @@ msgid "Console Server Port" msgstr "Порт консольного сервера" #: dcim/forms/model_forms.py:1092 dcim/forms/model_forms.py:1530 -#: templates/circuits/inc/circuit_termination.html:78 +#: 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 @@ -4013,7 +4054,7 @@ msgstr "Передній порт" #: dcim/forms/model_forms.py:1093 dcim/forms/model_forms.py:1531 #: dcim/tables/devices.py:705 -#: templates/circuits/inc/circuit_termination.html:79 +#: 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 @@ -4022,7 +4063,7 @@ msgid "Rear Port" msgstr "Задній порт" #: dcim/forms/model_forms.py:1094 dcim/forms/model_forms.py:1532 -#: dcim/tables/connections.py:46 dcim/tables/devices.py:505 +#: dcim/tables/connections.py:46 dcim/tables/devices.py:509 #: templates/dcim/poweroutlet.html:44 templates/dcim/powerport.html:17 msgid "Power Port" msgstr "Порт живлення" @@ -5311,7 +5352,7 @@ msgstr "" #: dcim/models/mixins.py:15 extras/models/configs.py:41 #: extras/models/models.py:341 extras/models/models.py:550 -#: extras/models/search.py:48 ipam/models/ip.py:193 +#: extras/models/search.py:48 ipam/models/ip.py:194 msgid "weight" msgstr "вага" @@ -5804,28 +5845,37 @@ msgstr "Товари інвентаризації" msgid "Module Bay" msgstr "Резервуар модулів" -#: dcim/tables/devices.py:326 +#: dcim/tables/devices.py:318 dcim/tables/devicetypes.py:48 +#: dcim/tables/devicetypes.py:140 dcim/views.py:1081 dcim/views.py:2024 +#: netbox/navigation/menu.py:90 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 +msgid "Inventory Items" +msgstr "Товари інвентаризації" + +#: dcim/tables/devices.py:330 msgid "Cable Color" msgstr "Колір кабелю" -#: dcim/tables/devices.py:332 +#: dcim/tables/devices.py:336 msgid "Link Peers" msgstr "Посилання однолітків" -#: dcim/tables/devices.py:335 +#: dcim/tables/devices.py:339 msgid "Mark Connected" msgstr "Позначте підключене" -#: dcim/tables/devices.py:451 +#: dcim/tables/devices.py:455 msgid "Maximum draw (W)" msgstr "Максимальна витримка (W)" -#: dcim/tables/devices.py:454 +#: dcim/tables/devices.py:458 msgid "Allocated draw (W)" msgstr "Виділений розіграш (W)" -#: dcim/tables/devices.py:554 ipam/forms/model_forms.py:738 -#: ipam/tables/fhrp.py:28 ipam/views.py:596 ipam/views.py:690 +#: dcim/tables/devices.py:558 ipam/forms/model_forms.py:747 +#: ipam/tables/fhrp.py:28 ipam/views.py:602 ipam/views.py:701 #: netbox/navigation/menu.py:145 netbox/navigation/menu.py:147 #: templates/dcim/interface.html:339 templates/ipam/ipaddress_bulk_add.html:15 #: templates/ipam/service.html:40 templates/virtualization/vminterface.html:85 @@ -5833,12 +5883,12 @@ msgstr "Виділений розіграш (W)" msgid "IP Addresses" msgstr "IP-адреси" -#: dcim/tables/devices.py:560 netbox/navigation/menu.py:189 +#: dcim/tables/devices.py:564 netbox/navigation/menu.py:189 #: templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "Групи FHRP" -#: dcim/tables/devices.py:572 templates/dcim/interface.html:89 +#: 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 @@ -5847,24 +5897,15 @@ msgstr "Групи FHRP" msgid "Tunnel" msgstr "Тунель" -#: dcim/tables/devices.py:597 dcim/tables/devicetypes.py:224 +#: dcim/tables/devices.py:601 dcim/tables/devicetypes.py:224 #: templates/dcim/interface.html:65 msgid "Management Only" msgstr "Тільки управління" -#: dcim/tables/devices.py:615 +#: dcim/tables/devices.py:619 msgid "VDCs" msgstr "ВДК" -#: dcim/tables/devices.py:623 dcim/tables/devicetypes.py:48 -#: dcim/tables/devicetypes.py:140 dcim/views.py:1081 dcim/views.py:2024 -#: netbox/navigation/menu.py:90 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 -msgid "Inventory Items" -msgstr "Товари інвентаризації" - #: dcim/tables/devices.py:870 templates/dcim/modulebay.html:49 msgid "Installed Module" msgstr "Встановлений модуль" @@ -5980,7 +6021,7 @@ msgstr "Відсіки для пристроїв" msgid "Module Bays" msgstr "Модульні відсіки" -#: dcim/tables/power.py:36 netbox/navigation/menu.py:281 +#: dcim/tables/power.py:36 netbox/navigation/menu.py:282 #: templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "Живлення живлення" @@ -6464,7 +6505,7 @@ msgid "Cluster type (slug)" msgstr "Кластерний тип (слимак)" #: extras/filtersets.py:537 ipam/forms/bulk_edit.py:476 -#: ipam/forms/filtersets.py:457 ipam/forms/model_forms.py:615 +#: ipam/forms/filtersets.py:464 ipam/forms/model_forms.py:624 #: virtualization/forms/filtersets.py:112 msgid "Cluster group" msgstr "Кластерна група" @@ -6966,7 +7007,7 @@ msgid "Tenants" msgstr "Орендарі" #: extras/forms/model_forms.py:458 ipam/forms/filtersets.py:142 -#: ipam/forms/filtersets.py:546 ipam/forms/model_forms.py:321 +#: ipam/forms/filtersets.py:553 ipam/forms/model_forms.py:321 #: 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:311 @@ -7777,11 +7818,11 @@ msgstr "сценарій" msgid "scripts" msgstr "скриптів" -#: extras/models/scripts.py:110 +#: extras/models/scripts.py:111 msgid "script module" msgstr "модуль сценарію" -#: extras/models/scripts.py:111 +#: extras/models/scripts.py:112 msgid "script modules" msgstr "модулі скриптів" @@ -8042,7 +8083,7 @@ msgstr "Видалений віджет: " msgid "Error deleting widget: " msgstr "Помилка при видаленні віджета: " -#: extras/views.py:1081 +#: extras/views.py:1101 msgid "Unable to run script: RQ worker process not running." msgstr "Неможливо запустити скрипт: робочий процес RQ не запущений." @@ -8188,7 +8229,7 @@ msgid "Prefixes which contain this prefix or IP" msgstr "Префікси, які містять цей префікс або IP" #: ipam/filtersets.py:304 ipam/filtersets.py:572 ipam/forms/bulk_edit.py:327 -#: ipam/forms/filtersets.py:195 ipam/forms/filtersets.py:324 +#: ipam/forms/filtersets.py:196 ipam/forms/filtersets.py:331 msgid "Mask length" msgstr "Довжина маски" @@ -8201,7 +8242,7 @@ msgid "VLAN number (1-4094)" msgstr "Номер VLAN (1-4094)" #: ipam/filtersets.py:471 ipam/filtersets.py:475 ipam/filtersets.py:567 -#: ipam/forms/model_forms.py:452 templates/tenancy/contact.html:53 +#: ipam/forms/model_forms.py:461 templates/tenancy/contact.html:53 #: tenancy/forms/bulk_edit.py:113 msgid "Address" msgstr "Адреса" @@ -8261,7 +8302,7 @@ msgstr "NAT всередині IP-адреси (ID)" msgid "IP address (ID)" msgstr "IP-адреса (ID)" -#: ipam/filtersets.py:1102 ipam/models/ip.py:787 +#: ipam/filtersets.py:1102 ipam/models/ip.py:788 msgid "IP address" msgstr "IP-адреса" @@ -8317,7 +8358,7 @@ msgstr "Є приватним" #: ipam/forms/filtersets.py:148 ipam/forms/model_forms.py:94 #: ipam/forms/model_forms.py:107 ipam/forms/model_forms.py:129 #: ipam/forms/model_forms.py:147 ipam/models/asns.py:31 -#: ipam/models/asns.py:103 ipam/models/ip.py:70 ipam/models/ip.py:89 +#: 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 @@ -8332,36 +8373,36 @@ msgstr "Дата додавання" msgid "Prefix length" msgstr "Довжина префікса" -#: ipam/forms/bulk_edit.py:253 ipam/forms/filtersets.py:240 +#: ipam/forms/bulk_edit.py:253 ipam/forms/filtersets.py:241 #: templates/ipam/prefix.html:85 msgid "Is a pool" msgstr "Чи є басейн" #: ipam/forms/bulk_edit.py:258 ipam/forms/bulk_edit.py:302 -#: ipam/forms/filtersets.py:247 ipam/forms/filtersets.py:286 -#: ipam/models/ip.py:271 ipam/models/ip.py:538 +#: ipam/forms/filtersets.py:248 ipam/forms/filtersets.py:293 +#: ipam/models/ip.py:272 ipam/models/ip.py:539 msgid "Treat as fully utilized" msgstr "Ставтеся до повного використання" -#: ipam/forms/bulk_edit.py:350 ipam/models/ip.py:771 +#: ipam/forms/bulk_edit.py:350 ipam/models/ip.py:772 msgid "DNS name" msgstr "Ім'я DNS" #: ipam/forms/bulk_edit.py:371 ipam/forms/bulk_edit.py:572 #: ipam/forms/bulk_import.py:393 ipam/forms/bulk_import.py:477 -#: ipam/forms/bulk_import.py:503 ipam/forms/filtersets.py:383 -#: ipam/forms/filtersets.py:530 templates/ipam/fhrpgroup.html:22 +#: ipam/forms/bulk_import.py:503 ipam/forms/filtersets.py:390 +#: ipam/forms/filtersets.py:537 templates/ipam/fhrpgroup.html:22 #: templates/ipam/inc/panels/fhrp_groups.html:24 #: templates/ipam/service.html:32 templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "Протокол" -#: ipam/forms/bulk_edit.py:378 ipam/forms/filtersets.py:390 +#: ipam/forms/bulk_edit.py:378 ipam/forms/filtersets.py:397 #: ipam/tables/fhrp.py:22 templates/ipam/fhrpgroup.html:26 msgid "Group ID" msgstr "Ідентифікатор групи" -#: ipam/forms/bulk_edit.py:383 ipam/forms/filtersets.py:395 +#: ipam/forms/bulk_edit.py:383 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 @@ -8369,12 +8410,12 @@ msgstr "Ідентифікатор групи" msgid "Authentication type" msgstr "Тип аутентифікації" -#: ipam/forms/bulk_edit.py:388 ipam/forms/filtersets.py:399 +#: ipam/forms/bulk_edit.py:388 ipam/forms/filtersets.py:406 msgid "Authentication key" msgstr "Ключ автентифікації" -#: ipam/forms/bulk_edit.py:405 ipam/forms/filtersets.py:376 -#: ipam/forms/model_forms.py:463 netbox/navigation/menu.py:369 +#: ipam/forms/bulk_edit.py:405 ipam/forms/filtersets.py:383 +#: ipam/forms/model_forms.py:472 netbox/navigation/menu.py:370 #: templates/ipam/fhrpgroup.html:49 #: templates/wireless/inc/authentication_attrs.html:5 #: wireless/forms/bulk_edit.py:91 wireless/forms/bulk_edit.py:138 @@ -8391,11 +8432,11 @@ msgstr "Мінімальний дитячий VLAN VID" msgid "Maximum child VLAN VID" msgstr "Максимальний рівень дитячого VLAN VID" -#: ipam/forms/bulk_edit.py:429 ipam/forms/model_forms.py:557 +#: ipam/forms/bulk_edit.py:429 ipam/forms/model_forms.py:566 msgid "Scope type" msgstr "Тип сфери застосування" -#: ipam/forms/bulk_edit.py:491 ipam/forms/model_forms.py:632 +#: ipam/forms/bulk_edit.py:491 ipam/forms/model_forms.py:641 #: ipam/tables/vlans.py:71 templates/ipam/vlangroup.html:38 msgid "Scope" msgstr "Сфера застосування" @@ -8404,8 +8445,8 @@ msgstr "Сфера застосування" msgid "Site & Group" msgstr "Сайт і група" -#: ipam/forms/bulk_edit.py:577 ipam/forms/model_forms.py:696 -#: ipam/forms/model_forms.py:728 ipam/tables/services.py:19 +#: ipam/forms/bulk_edit.py:577 ipam/forms/model_forms.py:705 +#: ipam/forms/model_forms.py:737 ipam/tables/services.py:19 #: ipam/tables/services.py:49 templates/ipam/service.html:36 #: templates/ipam/servicetemplate.html:23 msgid "Ports" @@ -8428,15 +8469,15 @@ msgstr "Призначений RIR" msgid "VLAN's group (if any)" msgstr "Група VLAN (якщо така є)" -#: ipam/forms/bulk_import.py:184 ipam/forms/model_forms.py:216 -#: ipam/models/vlans.py:214 ipam/tables/ip.py:254 -#: 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:101 +#: ipam/forms/bulk_import.py:184 ipam/forms/filtersets.py:256 +#: ipam/forms/model_forms.py:216 ipam/models/vlans.py:214 +#: ipam/tables/ip.py:254 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:101 msgid "VLAN" msgstr "VLAN" @@ -8445,7 +8486,7 @@ msgid "Parent device of assigned interface (if any)" msgstr "Батьківський пристрій призначеного інтерфейсу (якщо є)" #: ipam/forms/bulk_import.py:310 ipam/forms/bulk_import.py:496 -#: ipam/forms/model_forms.py:722 virtualization/filtersets.py:284 +#: ipam/forms/model_forms.py:731 virtualization/filtersets.py:284 #: virtualization/filtersets.py:323 virtualization/forms/bulk_edit.py:200 #: virtualization/forms/bulk_edit.py:326 #: virtualization/forms/bulk_import.py:146 @@ -8549,8 +8590,8 @@ msgstr "Експортується VRF" msgid "Private" msgstr "Приватний" -#: ipam/forms/filtersets.py:105 ipam/forms/filtersets.py:190 -#: ipam/forms/filtersets.py:265 ipam/forms/filtersets.py:319 +#: ipam/forms/filtersets.py:105 ipam/forms/filtersets.py:191 +#: ipam/forms/filtersets.py:272 ipam/forms/filtersets.py:326 msgid "Address family" msgstr "Адреса сім'ї" @@ -8566,53 +8607,57 @@ msgstr "Початок" msgid "End" msgstr "Кінець" -#: ipam/forms/filtersets.py:185 +#: ipam/forms/filtersets.py:171 +msgid "VLAN Assignment" +msgstr "Призначення VLAN" + +#: ipam/forms/filtersets.py:186 msgid "Search within" msgstr "Пошук всередині" -#: ipam/forms/filtersets.py:206 ipam/forms/filtersets.py:335 +#: ipam/forms/filtersets.py:207 ipam/forms/filtersets.py:342 msgid "Present in VRF" msgstr "Присутній у VRF" -#: ipam/forms/filtersets.py:304 +#: ipam/forms/filtersets.py:311 msgid "Device/VM" msgstr "Пристрой/VM" -#: ipam/forms/filtersets.py:314 +#: ipam/forms/filtersets.py:321 msgid "Parent Prefix" msgstr "Батьківський префікс" -#: ipam/forms/filtersets.py:340 +#: ipam/forms/filtersets.py:347 msgid "Assigned Device" msgstr "Призначений пристрій" -#: ipam/forms/filtersets.py:345 +#: ipam/forms/filtersets.py:352 msgid "Assigned VM" msgstr "Призначена VM" -#: ipam/forms/filtersets.py:359 +#: ipam/forms/filtersets.py:366 msgid "Assigned to an interface" msgstr "Призначено до інтерфейсу" -#: ipam/forms/filtersets.py:366 templates/ipam/ipaddress.html:51 +#: ipam/forms/filtersets.py:373 templates/ipam/ipaddress.html:51 msgid "DNS Name" msgstr "Ім'я DNS" -#: ipam/forms/filtersets.py:409 ipam/forms/filtersets.py:513 +#: ipam/forms/filtersets.py:416 ipam/forms/filtersets.py:520 #: ipam/models/vlans.py:156 templates/ipam/vlan.html:31 msgid "VLAN ID" msgstr "ІДЕНТИФІКАТОР VLAN" -#: ipam/forms/filtersets.py:441 +#: ipam/forms/filtersets.py:448 msgid "Minimum VID" msgstr "Мінімальний VID" -#: ipam/forms/filtersets.py:447 +#: ipam/forms/filtersets.py:454 msgid "Maximum VID" msgstr "Максимальний VID" -#: ipam/forms/filtersets.py:556 ipam/forms/model_forms.py:318 -#: ipam/forms/model_forms.py:750 ipam/forms/model_forms.py:776 +#: ipam/forms/filtersets.py:563 ipam/forms/model_forms.py:318 +#: ipam/forms/model_forms.py:759 ipam/forms/model_forms.py:785 #: ipam/tables/vlans.py:191 templates/virtualization/virtualdisk.html:21 #: templates/virtualization/virtualmachine.html:12 #: templates/virtualization/vminterface.html:21 @@ -8650,7 +8695,7 @@ msgid "IP Range" msgstr "Діапазон IP" #: ipam/forms/model_forms.py:293 ipam/forms/model_forms.py:319 -#: ipam/forms/model_forms.py:462 templates/ipam/fhrpgroup.html:19 +#: ipam/forms/model_forms.py:471 templates/ipam/fhrpgroup.html:19 msgid "FHRP Group" msgstr "Група ФРП" @@ -8662,11 +8707,11 @@ msgstr "Зробіть це основним IP для пристрою/вірт msgid "NAT IP (Inside)" msgstr "NAT IP (всередині)" -#: ipam/forms/model_forms.py:373 +#: ipam/forms/model_forms.py:382 msgid "An IP address can only be assigned to a single object." msgstr "IP-адреса може бути призначена лише одному об'єкту." -#: ipam/forms/model_forms.py:379 ipam/models/ip.py:896 +#: ipam/forms/model_forms.py:388 ipam/models/ip.py:897 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" @@ -8674,32 +8719,32 @@ msgstr "" "Не вдається перепризначити IP-адресу, поки вона призначена як основний IP " "для батьківського об'єкта" -#: ipam/forms/model_forms.py:389 +#: ipam/forms/model_forms.py:398 msgid "" "Only IP addresses assigned to an interface can be designated as primary IPs." msgstr "" "Тільки IP-адреси, призначені інтерфейсу, можуть бути визначені основними IP-" "адресами." -#: ipam/forms/model_forms.py:464 +#: ipam/forms/model_forms.py:473 msgid "Virtual IP Address" msgstr "Віртуальна IP-адреса" -#: ipam/forms/model_forms.py:549 +#: ipam/forms/model_forms.py:558 msgid "Assignment already exists" msgstr "Призначення вже існує" -#: ipam/forms/model_forms.py:628 ipam/forms/model_forms.py:670 +#: ipam/forms/model_forms.py:637 ipam/forms/model_forms.py:679 #: ipam/tables/ip.py:250 templates/ipam/vlan_edit.html:37 #: templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "Група VLAN" -#: ipam/forms/model_forms.py:629 +#: ipam/forms/model_forms.py:638 msgid "Child VLANs" msgstr "Дитячі VLAN" -#: ipam/forms/model_forms.py:701 ipam/forms/model_forms.py:733 +#: ipam/forms/model_forms.py:710 ipam/forms/model_forms.py:742 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." @@ -8707,32 +8752,32 @@ msgstr "" "Список одного або декількох номерів портів, розділених комами. Діапазон " "можна вказати за допомогою дефіса." -#: ipam/forms/model_forms.py:706 templates/ipam/servicetemplate.html:12 +#: ipam/forms/model_forms.py:715 templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "Шаблон сервісу" -#: ipam/forms/model_forms.py:753 +#: ipam/forms/model_forms.py:762 msgid "Port(s)" msgstr "Порт (и)" -#: ipam/forms/model_forms.py:754 ipam/forms/model_forms.py:782 +#: ipam/forms/model_forms.py:763 ipam/forms/model_forms.py:791 #: templates/ipam/service.html:21 msgid "Service" msgstr "Сервіс" -#: ipam/forms/model_forms.py:767 +#: ipam/forms/model_forms.py:776 msgid "Service template" msgstr "Шаблон сервісу" -#: ipam/forms/model_forms.py:779 +#: ipam/forms/model_forms.py:788 msgid "From Template" msgstr "З шаблону" -#: ipam/forms/model_forms.py:780 +#: ipam/forms/model_forms.py:789 msgid "Custom" msgstr "Користувальницькі" -#: ipam/forms/model_forms.py:810 +#: ipam/forms/model_forms.py:819 msgid "" "Must specify name, protocol, and port(s) if not using a service template." msgstr "" @@ -8800,43 +8845,43 @@ msgstr "Групове призначення FHRP" msgid "FHRP group assignments" msgstr "Групові завдання FHRP" -#: ipam/models/ip.py:64 +#: ipam/models/ip.py:65 msgid "private" msgstr "приватне" -#: ipam/models/ip.py:65 +#: ipam/models/ip.py:66 msgid "IP space managed by this RIR is considered private" msgstr "Простір IP, керований цим RIR, вважається приватним" -#: ipam/models/ip.py:71 netbox/navigation/menu.py:169 +#: ipam/models/ip.py:72 netbox/navigation/menu.py:169 msgid "RIRs" msgstr "RIR" -#: ipam/models/ip.py:83 +#: ipam/models/ip.py:84 msgid "IPv4 or IPv6 network" msgstr "Мережа IPv4 або IPv6" -#: ipam/models/ip.py:90 +#: ipam/models/ip.py:91 msgid "Regional Internet Registry responsible for this IP space" msgstr "Регіональний Інтернет-реєстр, відповідальний за цей IP-простір" -#: ipam/models/ip.py:100 +#: ipam/models/ip.py:101 msgid "date added" msgstr "дата додавання" -#: ipam/models/ip.py:114 +#: ipam/models/ip.py:115 msgid "aggregate" msgstr "сукупний" -#: ipam/models/ip.py:115 +#: ipam/models/ip.py:116 msgid "aggregates" msgstr "агрегати" -#: ipam/models/ip.py:131 +#: ipam/models/ip.py:132 msgid "Cannot create aggregate with /0 mask." msgstr "Не вдається створити агрегат з маскою /0." -#: ipam/models/ip.py:143 +#: ipam/models/ip.py:144 #, python-brace-format msgid "" "Aggregates cannot overlap. {prefix} is already covered by an existing " @@ -8845,7 +8890,7 @@ msgstr "" "Агрегати не можуть перекриватися. {prefix} вже покривається існуючим " "агрегатом ({aggregate})." -#: ipam/models/ip.py:157 +#: ipam/models/ip.py:158 #, python-brace-format msgid "" "Prefixes cannot overlap aggregates. {prefix} covers an existing aggregate " @@ -8854,169 +8899,169 @@ msgstr "" "Префікси не можуть перекривати агрегати. {prefix} охоплює існуючий агрегат " "({aggregate})." -#: ipam/models/ip.py:199 ipam/models/ip.py:736 vpn/models/tunnels.py:114 +#: ipam/models/ip.py:200 ipam/models/ip.py:737 vpn/models/tunnels.py:114 msgid "role" msgstr "роль" -#: ipam/models/ip.py:200 +#: ipam/models/ip.py:201 msgid "roles" msgstr "ролі" -#: ipam/models/ip.py:216 ipam/models/ip.py:292 +#: ipam/models/ip.py:217 ipam/models/ip.py:293 msgid "prefix" msgstr "префікс" -#: ipam/models/ip.py:217 +#: ipam/models/ip.py:218 msgid "IPv4 or IPv6 network with mask" msgstr "Мережа IPv4 або IPv6 з маскою" -#: ipam/models/ip.py:253 +#: ipam/models/ip.py:254 msgid "Operational status of this prefix" msgstr "Операційний стан цього префікса" -#: ipam/models/ip.py:261 +#: ipam/models/ip.py:262 msgid "The primary function of this prefix" msgstr "Основна функція цього префікса" -#: ipam/models/ip.py:264 +#: ipam/models/ip.py:265 msgid "is a pool" msgstr "є басейном" -#: ipam/models/ip.py:266 +#: ipam/models/ip.py:267 msgid "All IP addresses within this prefix are considered usable" msgstr "Усі IP-адреси в цьому префіксі вважаються придатними для використання" -#: ipam/models/ip.py:269 ipam/models/ip.py:536 +#: ipam/models/ip.py:270 ipam/models/ip.py:537 msgid "mark utilized" msgstr "використовувана марка" -#: ipam/models/ip.py:293 +#: ipam/models/ip.py:294 msgid "prefixes" msgstr "префікси" -#: ipam/models/ip.py:316 +#: ipam/models/ip.py:317 msgid "Cannot create prefix with /0 mask." msgstr "Неможливо створити префікс з маскою /0." -#: ipam/models/ip.py:323 ipam/models/ip.py:873 +#: ipam/models/ip.py:324 ipam/models/ip.py:874 #, python-brace-format msgid "VRF {vrf}" msgstr "ВРФ {vrf}" -#: ipam/models/ip.py:323 ipam/models/ip.py:873 +#: ipam/models/ip.py:324 ipam/models/ip.py:874 msgid "global table" msgstr "глобальна таблиця" -#: ipam/models/ip.py:325 +#: ipam/models/ip.py:326 #, python-brace-format msgid "Duplicate prefix found in {table}: {prefix}" msgstr "Дублікат префікса знайдений у {table}: {prefix}" -#: ipam/models/ip.py:494 +#: ipam/models/ip.py:495 msgid "start address" msgstr "стартова адреса" -#: ipam/models/ip.py:495 ipam/models/ip.py:499 ipam/models/ip.py:711 +#: ipam/models/ip.py:496 ipam/models/ip.py:500 ipam/models/ip.py:712 msgid "IPv4 or IPv6 address (with mask)" msgstr "Адреса IPv4 або IPv6 (з маскою)" -#: ipam/models/ip.py:498 +#: ipam/models/ip.py:499 msgid "end address" msgstr "кінцева адреса" -#: ipam/models/ip.py:525 +#: ipam/models/ip.py:526 msgid "Operational status of this range" msgstr "Експлуатаційний стан даного діапазону" -#: ipam/models/ip.py:533 +#: ipam/models/ip.py:534 msgid "The primary function of this range" msgstr "Основна функція цього діапазону" -#: ipam/models/ip.py:547 +#: ipam/models/ip.py:548 msgid "IP range" msgstr "Діапазон IP" -#: ipam/models/ip.py:548 +#: ipam/models/ip.py:549 msgid "IP ranges" msgstr "Діапазони IP" -#: ipam/models/ip.py:564 +#: ipam/models/ip.py:565 msgid "Starting and ending IP address versions must match" msgstr "Початкова та кінцева версії IP-адреси повинні збігатися" -#: ipam/models/ip.py:570 +#: ipam/models/ip.py:571 msgid "Starting and ending IP address masks must match" msgstr "Початкові та кінцеві маски IP-адреси повинні збігатися" -#: ipam/models/ip.py:577 +#: ipam/models/ip.py:578 #, python-brace-format msgid "" "Ending address must be greater than the starting address ({start_address})" msgstr "" "Кінцева адреса повинна бути більшою за початкову адресу ({start_address})" -#: ipam/models/ip.py:589 +#: ipam/models/ip.py:590 #, python-brace-format msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}" msgstr "" "Визначені адреси перекриваються з діапазоном {overlapping_range} в ВРФ {vrf}" -#: ipam/models/ip.py:598 +#: ipam/models/ip.py:599 #, python-brace-format msgid "Defined range exceeds maximum supported size ({max_size})" msgstr "" "Визначений діапазон перевищує максимальний підтримуваний розмір ({max_size})" -#: ipam/models/ip.py:710 tenancy/models/contacts.py:82 +#: ipam/models/ip.py:711 tenancy/models/contacts.py:82 msgid "address" msgstr "адреса" -#: ipam/models/ip.py:733 +#: ipam/models/ip.py:734 msgid "The operational status of this IP" msgstr "Операційний стан цього ІП" -#: ipam/models/ip.py:740 +#: ipam/models/ip.py:741 msgid "The functional role of this IP" msgstr "Функціональна роль цього ІП" -#: ipam/models/ip.py:764 templates/ipam/ipaddress.html:72 +#: ipam/models/ip.py:765 templates/ipam/ipaddress.html:72 msgid "NAT (inside)" msgstr "NAT (всередині)" -#: ipam/models/ip.py:765 +#: ipam/models/ip.py:766 msgid "The IP for which this address is the \"outside\" IP" msgstr "IP, для якого ця адреса є «зовнішнім» IP" -#: ipam/models/ip.py:772 +#: ipam/models/ip.py:773 msgid "Hostname or FQDN (not case-sensitive)" msgstr "Ім'я хоста або FQDN (не залежить від регістру регістру)" -#: ipam/models/ip.py:788 ipam/models/services.py:93 +#: ipam/models/ip.py:789 ipam/models/services.py:93 msgid "IP addresses" msgstr "IP-адреси" -#: ipam/models/ip.py:844 +#: ipam/models/ip.py:845 msgid "Cannot create IP address with /0 mask." msgstr "Не вдається створити IP-адресу з маскою /0." -#: ipam/models/ip.py:850 +#: ipam/models/ip.py:851 #, python-brace-format msgid "{ip} is a network ID, which may not be assigned to an interface." msgstr "" "{ip} це ідентифікатор мережі, який не може бути присвоєний інтерфейсу." -#: ipam/models/ip.py:861 +#: ipam/models/ip.py:862 #, python-brace-format msgid "" "{ip} is a broadcast address, which may not be assigned to an interface." msgstr "{ip} це адреса трансляції, яка може не бути присвоєна інтерфейсу." -#: ipam/models/ip.py:875 +#: ipam/models/ip.py:876 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "Дублікати IP-адреси знайдено в {table}: {ipaddress}" -#: ipam/models/ip.py:902 +#: ipam/models/ip.py:903 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "Статус SLAAC може бути призначений лише адресам IPv6" @@ -9111,7 +9156,7 @@ msgid "The primary function of this VLAN" msgstr "Основна функція цього VLAN" #: ipam/models/vlans.py:215 ipam/tables/ip.py:175 ipam/tables/vlans.py:78 -#: ipam/views.py:957 netbox/navigation/menu.py:180 +#: ipam/views.py:978 netbox/navigation/menu.py:180 #: netbox/navigation/menu.py:182 msgid "VLANs" msgstr "ВЛН" @@ -9185,7 +9230,7 @@ msgid "Added" msgstr "Додано" #: ipam/tables/ip.py:127 ipam/tables/ip.py:165 ipam/tables/vlans.py:138 -#: ipam/views.py:348 netbox/navigation/menu.py:152 +#: ipam/views.py:349 netbox/navigation/menu.py:152 #: netbox/navigation/menu.py:154 templates/ipam/vlan.html:84 msgid "Prefixes" msgstr "Префікси" @@ -9286,23 +9331,23 @@ msgstr "" "У назвах DNS дозволені лише буквено-цифрові символи, зірочки, дефіси, крапки" " та підкреслення" -#: ipam/views.py:535 +#: ipam/views.py:541 msgid "Child Prefixes" msgstr "Дитячі префікси" -#: ipam/views.py:570 +#: ipam/views.py:576 msgid "Child Ranges" msgstr "Дитячі діапазони" -#: ipam/views.py:886 +#: ipam/views.py:902 msgid "Related IPs" msgstr "Пов'язані IP-адреси" -#: ipam/views.py:1112 +#: ipam/views.py:1133 msgid "Device Interfaces" msgstr "Інтерфейси пристроїв" -#: ipam/views.py:1129 +#: ipam/views.py:1150 msgid "VM Interfaces" msgstr "Інтерфейси VM" @@ -9862,39 +9907,43 @@ msgstr "Кластерні групи" msgid "Circuit Types" msgstr "Типи схем" -#: netbox/navigation/menu.py:264 netbox/navigation/menu.py:266 +#: netbox/navigation/menu.py:261 +msgid "Circuit Terminations" +msgstr "Закінчення схем" + +#: netbox/navigation/menu.py:265 netbox/navigation/menu.py:267 msgid "Providers" msgstr "Провайдери" -#: netbox/navigation/menu.py:267 templates/circuits/provider.html:51 +#: netbox/navigation/menu.py:268 templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "Облікові записи постачальника" -#: netbox/navigation/menu.py:268 +#: netbox/navigation/menu.py:269 msgid "Provider Networks" msgstr "Мережі провайдерів" -#: netbox/navigation/menu.py:282 +#: netbox/navigation/menu.py:283 msgid "Power Panels" msgstr "Панелі живлення" -#: netbox/navigation/menu.py:293 +#: netbox/navigation/menu.py:294 msgid "Configurations" msgstr "Конфігурації" -#: netbox/navigation/menu.py:295 +#: netbox/navigation/menu.py:296 msgid "Config Contexts" msgstr "Контексти конфігурації" -#: netbox/navigation/menu.py:296 +#: netbox/navigation/menu.py:297 msgid "Config Templates" msgstr "Конфігураційні шаблони" -#: netbox/navigation/menu.py:303 netbox/navigation/menu.py:307 +#: netbox/navigation/menu.py:304 netbox/navigation/menu.py:308 msgid "Customization" msgstr "Налаштування" -#: netbox/navigation/menu.py:309 templates/dcim/device_edit.html:103 +#: netbox/navigation/menu.py:310 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 @@ -9904,107 +9953,107 @@ msgstr "Налаштування" msgid "Custom Fields" msgstr "Користувальницькі поля" -#: netbox/navigation/menu.py:310 +#: netbox/navigation/menu.py:311 msgid "Custom Field Choices" msgstr "Вибір спеціальних полів" -#: netbox/navigation/menu.py:311 +#: netbox/navigation/menu.py:312 msgid "Custom Links" msgstr "Користувальницькі посилання" -#: netbox/navigation/menu.py:312 +#: netbox/navigation/menu.py:313 msgid "Export Templates" msgstr "Експортувати шаблони" -#: netbox/navigation/menu.py:313 +#: netbox/navigation/menu.py:314 msgid "Saved Filters" msgstr "Збережені фільтри" -#: netbox/navigation/menu.py:315 +#: netbox/navigation/menu.py:316 msgid "Image Attachments" msgstr "Вкладення зображень" -#: netbox/navigation/menu.py:333 +#: netbox/navigation/menu.py:334 msgid "Operations" msgstr "Операції" -#: netbox/navigation/menu.py:337 +#: netbox/navigation/menu.py:338 msgid "Integrations" msgstr "Інтеграція" -#: netbox/navigation/menu.py:339 +#: netbox/navigation/menu.py:340 msgid "Data Sources" msgstr "Джерела даних" -#: netbox/navigation/menu.py:340 +#: netbox/navigation/menu.py:341 msgid "Event Rules" msgstr "Правила події" -#: netbox/navigation/menu.py:341 +#: netbox/navigation/menu.py:342 msgid "Webhooks" msgstr "Вебхуки" -#: netbox/navigation/menu.py:345 netbox/navigation/menu.py:349 +#: netbox/navigation/menu.py:346 netbox/navigation/menu.py:350 #: netbox/views/generic/feature_views.py:151 #: templates/extras/report/base.html:37 templates/extras/script/base.html:36 msgid "Jobs" msgstr "Вакансії" -#: netbox/navigation/menu.py:355 +#: netbox/navigation/menu.py:356 msgid "Logging" msgstr "Лісозаготівля" -#: netbox/navigation/menu.py:357 +#: netbox/navigation/menu.py:358 msgid "Journal Entries" msgstr "Записи журналу" -#: netbox/navigation/menu.py:358 templates/extras/objectchange.html:8 +#: netbox/navigation/menu.py:359 templates/extras/objectchange.html:8 #: templates/extras/objectchange_list.html:4 msgid "Change Log" msgstr "Журнал змін" -#: netbox/navigation/menu.py:365 templates/inc/user_menu.html:11 +#: netbox/navigation/menu.py:366 templates/inc/user_menu.html:11 msgid "Admin" msgstr "Адміністратор" -#: netbox/navigation/menu.py:373 templates/users/group.html:29 +#: netbox/navigation/menu.py:374 templates/users/group.html:29 #: users/forms/model_forms.py:233 users/forms/model_forms.py:245 #: users/forms/model_forms.py:297 users/tables.py:102 msgid "Users" msgstr "Користувачі" -#: netbox/navigation/menu.py:393 users/forms/model_forms.py:182 +#: netbox/navigation/menu.py:394 users/forms/model_forms.py:182 #: users/forms/model_forms.py:194 users/forms/model_forms.py:302 #: users/tables.py:35 users/tables.py:106 msgid "Groups" msgstr "Групи" -#: netbox/navigation/menu.py:413 templates/account/base.html:21 +#: netbox/navigation/menu.py:414 templates/account/base.html:21 #: templates/inc/user_menu.html:36 msgid "API Tokens" msgstr "Токени API" -#: netbox/navigation/menu.py:420 users/forms/model_forms.py:188 +#: netbox/navigation/menu.py:421 users/forms/model_forms.py:188 #: users/forms/model_forms.py:196 users/forms/model_forms.py:239 #: users/forms/model_forms.py:246 msgid "Permissions" msgstr "Дозволи" -#: netbox/navigation/menu.py:428 netbox/navigation/menu.py:432 +#: netbox/navigation/menu.py:429 netbox/navigation/menu.py:433 #: templates/core/system.html:7 msgid "System" msgstr "Система" -#: netbox/navigation/menu.py:437 +#: netbox/navigation/menu.py:438 msgid "Configuration History" msgstr "Історія конфігурації" -#: netbox/navigation/menu.py:443 templates/core/rq_task.html:8 +#: netbox/navigation/menu.py:444 templates/core/rq_task.html:8 #: templates/core/rq_task_list.html:22 msgid "Background Tasks" msgstr "Фонові завдання" -#: netbox/navigation/menu.py:482 templates/500.html:35 +#: netbox/navigation/menu.py:483 templates/500.html:35 #: templates/account/preferences.html:22 templates/core/system.html:80 msgid "Plugins" msgstr "плагіни" @@ -10139,34 +10188,46 @@ msgstr "Не вдається додати магазини до реєстру msgid "Cannot delete stores from registry" msgstr "Неможливо видалити магазини з реєстру" -#: netbox/settings.py:715 +#: netbox/settings.py:722 +msgid "German" +msgstr "Німецька" + +#: netbox/settings.py:723 msgid "English" msgstr "Англійська мова" -#: netbox/settings.py:716 +#: netbox/settings.py:724 msgid "Spanish" msgstr "Іспанська" -#: netbox/settings.py:717 +#: netbox/settings.py:725 msgid "French" msgstr "Французький" -#: netbox/settings.py:718 +#: netbox/settings.py:726 msgid "Japanese" msgstr "Японці" -#: netbox/settings.py:719 +#: netbox/settings.py:727 msgid "Portuguese" msgstr "Португальська" -#: netbox/settings.py:720 +#: netbox/settings.py:728 msgid "Russian" msgstr "Російська мова" -#: netbox/settings.py:721 +#: netbox/settings.py:729 msgid "Turkish" msgstr "Турецька" +#: netbox/settings.py:730 +msgid "Ukrainian" +msgstr "Українська" + +#: netbox/settings.py:731 +msgid "Chinese" +msgstr "Китайська" + #: netbox/tables/columns.py:185 msgid "Toggle all" msgstr "Перемкнути всі" @@ -10179,16 +10240,16 @@ msgstr "Переключити випадаюче меню" msgid "Error" msgstr "Помилка" -#: netbox/tables/tables.py:56 +#: netbox/tables/tables.py:57 #, python-brace-format msgid "No {model_name} found" msgstr "Ні {model_name} знайдено" -#: netbox/tables/tables.py:246 templates/generic/bulk_import.html:117 +#: netbox/tables/tables.py:248 templates/generic/bulk_import.html:117 msgid "Field" msgstr "Поле" -#: netbox/tables/tables.py:249 +#: netbox/tables/tables.py:251 msgid "Value" msgstr "Значення" @@ -10299,7 +10360,7 @@ msgstr "Змінити пароль" #: 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:37 +#: 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 @@ -10392,7 +10453,8 @@ msgstr "Призначені групи" #: templates/account/profile.html:58 #: templates/circuits/circuit_terminations_swap.html:18 #: templates/circuits/circuit_terminations_swap.html:26 -#: templates/circuits/inc/circuit_termination.html:154 +#: templates/circuits/circuittermination.html:34 +#: templates/circuits/inc/circuit_termination.html:68 #: templates/dcim/devicebay.html:59 #: templates/dcim/inc/panels/inventory_items.html:45 #: templates/dcim/interface.html:296 templates/dcim/modulebay.html:76 @@ -10509,13 +10571,6 @@ msgstr "Додати схему" msgid "Circuit Type" msgstr "Тип схеми" -#: templates/circuits/inc/circuit_termination.html:6 -#: templates/circuits/inc/circuit_termination.html:41 -#: templates/dcim/cable.html:68 templates/dcim/cable.html:72 -#: vpn/forms/bulk_import.py:100 vpn/forms/filtersets.py:77 -msgid "Termination" -msgstr "Припинення" - #: templates/circuits/inc/circuit_termination.html:10 #: templates/dcim/devicetype/component_templates.html:33 #: templates/dcim/manufacturer.html:11 @@ -10528,7 +10583,7 @@ msgid "Add" msgstr "Додати" #: templates/circuits/inc/circuit_termination.html:15 -#: templates/circuits/inc/circuit_termination.html:62 +#: 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:32 @@ -10543,33 +10598,33 @@ msgstr "Редагувати" msgid "Swap" msgstr "Обмін" -#: templates/circuits/inc/circuit_termination.html:45 +#: templates/circuits/inc/circuit_termination_fields.html:19 #: templates/dcim/consoleport.html:59 templates/dcim/consoleserverport.html:60 #: templates/dcim/powerfeed.html:114 msgid "Marked as connected" msgstr "Позначено як підключений" -#: templates/circuits/inc/circuit_termination.html:47 +#: templates/circuits/inc/circuit_termination_fields.html:21 msgid "to" msgstr "до" -#: templates/circuits/inc/circuit_termination.html:57 -#: templates/circuits/inc/circuit_termination.html:58 +#: 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 msgid "Trace" msgstr "Слід" -#: templates/circuits/inc/circuit_termination.html:61 +#: templates/circuits/inc/circuit_termination_fields.html:35 msgid "Edit cable" msgstr "Редагувати кабель" -#: templates/circuits/inc/circuit_termination.html:66 +#: templates/circuits/inc/circuit_termination_fields.html:40 msgid "Remove cable" msgstr "Видаліть кабель" -#: templates/circuits/inc/circuit_termination.html:67 +#: 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 @@ -10581,7 +10636,7 @@ msgstr "Видаліть кабель" msgid "Disconnect" msgstr "Відключити" -#: templates/circuits/inc/circuit_termination.html:74 +#: 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 @@ -10590,19 +10645,19 @@ msgstr "Відключити" msgid "Connect" msgstr "Підключити" -#: templates/circuits/inc/circuit_termination.html:96 +#: templates/circuits/inc/circuit_termination_fields.html:70 msgid "Downstream" msgstr "За течією" -#: templates/circuits/inc/circuit_termination.html:97 +#: templates/circuits/inc/circuit_termination_fields.html:71 msgid "Upstream" msgstr "Вгору за течією" -#: templates/circuits/inc/circuit_termination.html:106 +#: templates/circuits/inc/circuit_termination_fields.html:80 msgid "Cross-Connect" msgstr "Перехресне з'єднання" -#: templates/circuits/inc/circuit_termination.html:110 +#: templates/circuits/inc/circuit_termination_fields.html:84 msgid "Patch Panel/Port" msgstr "Патч-панель/порт" @@ -12014,11 +12069,15 @@ msgstr "Звіт" msgid "You do not have permission to run scripts" msgstr "У вас немає дозволу на запуск скриптів" -#: templates/extras/script.html:40 templates/extras/script.html:44 +#: templates/extras/script.html:41 templates/extras/script.html:45 #: templates/extras/script_list.html:88 msgid "Run Script" msgstr "Запустити скрипт" +#: templates/extras/script.html:51 templates/extras/script/source.html:10 +msgid "Error loading script" +msgstr "Помилка завантаження сценарію" + #: templates/extras/script/jobs.html:16 msgid "Script no longer exists in the source file." msgstr "Скрипт більше не існує у вихідному файлі." diff --git a/netbox/translations/zh/LC_MESSAGES/django.po b/netbox/translations/zh/LC_MESSAGES/django.po index 6bcbb0076..80efa12b7 100644 --- a/netbox/translations/zh/LC_MESSAGES/django.po +++ b/netbox/translations/zh/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-05-14 13:22+0000\n" +"POT-Creation-Date: 2024-05-22 17:41+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" @@ -64,19 +64,19 @@ msgid "Your preferences have been updated." msgstr "您的首选项已更新。" #: circuits/choices.py:21 dcim/choices.py:20 dcim/choices.py:102 -#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1429 -#: dcim/choices.py:1505 dcim/choices.py:1555 virtualization/choices.py:20 +#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1457 +#: dcim/choices.py:1533 dcim/choices.py:1583 virtualization/choices.py:20 #: virtualization/choices.py:45 vpn/choices.py:18 msgid "Planned" msgstr "计划中" -#: circuits/choices.py:22 netbox/navigation/menu.py:289 +#: circuits/choices.py:22 netbox/navigation/menu.py:290 msgid "Provisioning" msgstr "资源调配" #: circuits/choices.py:23 core/tables/tasks.py:22 dcim/choices.py:22 #: dcim/choices.py:103 dcim/choices.py:173 dcim/choices.py:219 -#: dcim/choices.py:1504 dcim/choices.py:1554 extras/tables/tables.py:385 +#: dcim/choices.py:1532 dcim/choices.py:1582 extras/tables/tables.py:385 #: 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 @@ -86,7 +86,7 @@ msgid "Active" msgstr "活跃" #: circuits/choices.py:24 dcim/choices.py:172 dcim/choices.py:218 -#: dcim/choices.py:1503 dcim/choices.py:1556 virtualization/choices.py:24 +#: dcim/choices.py:1531 dcim/choices.py:1584 virtualization/choices.py:24 #: virtualization/choices.py:43 msgid "Offline" msgstr "离线" @@ -101,8 +101,8 @@ msgstr "已退役" #: circuits/filtersets.py:29 circuits/filtersets.py:196 dcim/filtersets.py:97 #: dcim/filtersets.py:151 dcim/filtersets.py:211 dcim/filtersets.py:297 -#: dcim/filtersets.py:406 dcim/filtersets.py:969 dcim/filtersets.py:1295 -#: dcim/filtersets.py:1822 dcim/filtersets.py:2065 dcim/filtersets.py:2123 +#: dcim/filtersets.py:406 dcim/filtersets.py:969 dcim/filtersets.py:1305 +#: dcim/filtersets.py:1832 dcim/filtersets.py:2075 dcim/filtersets.py:2133 #: ipam/filtersets.py:339 ipam/filtersets.py:945 #: virtualization/filtersets.py:45 virtualization/filtersets.py:173 #: vpn/filtersets.py:377 @@ -111,8 +111,8 @@ msgstr "地区 (ID)" #: circuits/filtersets.py:36 circuits/filtersets.py:203 dcim/filtersets.py:104 #: dcim/filtersets.py:157 dcim/filtersets.py:218 dcim/filtersets.py:304 -#: dcim/filtersets.py:413 dcim/filtersets.py:976 dcim/filtersets.py:1302 -#: dcim/filtersets.py:1829 dcim/filtersets.py:2072 dcim/filtersets.py:2130 +#: dcim/filtersets.py:413 dcim/filtersets.py:976 dcim/filtersets.py:1312 +#: dcim/filtersets.py:1839 dcim/filtersets.py:2082 dcim/filtersets.py:2140 #: extras/filtersets.py:461 ipam/filtersets.py:346 ipam/filtersets.py:952 #: virtualization/filtersets.py:52 virtualization/filtersets.py:180 #: vpn/filtersets.py:372 @@ -121,8 +121,8 @@ msgstr "区域(slug)" #: circuits/filtersets.py:42 circuits/filtersets.py:209 dcim/filtersets.py:127 #: dcim/filtersets.py:224 dcim/filtersets.py:310 dcim/filtersets.py:419 -#: dcim/filtersets.py:982 dcim/filtersets.py:1308 dcim/filtersets.py:1835 -#: dcim/filtersets.py:2078 dcim/filtersets.py:2136 ipam/filtersets.py:352 +#: dcim/filtersets.py:982 dcim/filtersets.py:1318 dcim/filtersets.py:1845 +#: dcim/filtersets.py:2088 dcim/filtersets.py:2146 ipam/filtersets.py:352 #: ipam/filtersets.py:958 virtualization/filtersets.py:58 #: virtualization/filtersets.py:186 msgid "Site group (ID)" @@ -130,16 +130,18 @@ msgstr "站点组 (ID)" #: circuits/filtersets.py:49 circuits/filtersets.py:216 dcim/filtersets.py:134 #: dcim/filtersets.py:231 dcim/filtersets.py:317 dcim/filtersets.py:426 -#: dcim/filtersets.py:989 dcim/filtersets.py:1315 dcim/filtersets.py:1842 -#: dcim/filtersets.py:2085 dcim/filtersets.py:2143 extras/filtersets.py:467 +#: dcim/filtersets.py:989 dcim/filtersets.py:1325 dcim/filtersets.py:1852 +#: dcim/filtersets.py:2095 dcim/filtersets.py:2153 extras/filtersets.py:467 #: ipam/filtersets.py:359 ipam/filtersets.py:965 #: virtualization/filtersets.py:65 virtualization/filtersets.py:193 msgid "Site group (slug)" msgstr "站点组(slug)" -#: circuits/filtersets.py:54 circuits/forms/bulk_import.py:116 -#: circuits/forms/filtersets.py:48 circuits/forms/filtersets.py:168 -#: circuits/forms/model_forms.py:136 circuits/forms/model_forms.py:152 +#: circuits/filtersets.py:54 circuits/forms/bulk_edit.py:186 +#: circuits/forms/bulk_edit.py:214 circuits/forms/bulk_import.py:126 +#: circuits/forms/filtersets.py:49 circuits/forms/filtersets.py:169 +#: circuits/forms/filtersets.py:207 circuits/forms/model_forms.py:136 +#: circuits/forms/model_forms.py:152 circuits/tables/circuits.py:105 #: dcim/forms/bulk_edit.py:167 dcim/forms/bulk_edit.py:239 #: dcim/forms/bulk_edit.py:575 dcim/forms/bulk_edit.py:771 #: dcim/forms/bulk_import.py:130 dcim/forms/bulk_import.py:184 @@ -147,10 +149,10 @@ msgstr "站点组(slug)" #: dcim/forms/bulk_import.py:1262 dcim/forms/bulk_import.py:1290 #: dcim/forms/filtersets.py:85 dcim/forms/filtersets.py:218 #: dcim/forms/filtersets.py:265 dcim/forms/filtersets.py:374 -#: dcim/forms/filtersets.py:681 dcim/forms/filtersets.py:908 -#: dcim/forms/filtersets.py:932 dcim/forms/filtersets.py:1022 -#: dcim/forms/filtersets.py:1060 dcim/forms/filtersets.py:1468 -#: dcim/forms/filtersets.py:1492 dcim/forms/filtersets.py:1516 +#: dcim/forms/filtersets.py:682 dcim/forms/filtersets.py:916 +#: dcim/forms/filtersets.py:940 dcim/forms/filtersets.py:1030 +#: dcim/forms/filtersets.py:1068 dcim/forms/filtersets.py:1476 +#: dcim/forms/filtersets.py:1500 dcim/forms/filtersets.py:1524 #: dcim/forms/model_forms.py:136 dcim/forms/model_forms.py:164 #: dcim/forms/model_forms.py:206 dcim/forms/model_forms.py:406 #: dcim/forms/model_forms.py:668 dcim/forms/object_create.py:391 @@ -160,11 +162,11 @@ msgstr "站点组(slug)" #: ipam/forms/bulk_edit.py:270 ipam/forms/bulk_edit.py:448 #: ipam/forms/bulk_edit.py:522 ipam/forms/bulk_import.py:170 #: ipam/forms/bulk_import.py:437 ipam/forms/filtersets.py:153 -#: ipam/forms/filtersets.py:230 ipam/forms/filtersets.py:425 -#: ipam/forms/filtersets.py:489 ipam/forms/model_forms.py:203 -#: ipam/forms/model_forms.py:578 ipam/forms/model_forms.py:673 +#: ipam/forms/filtersets.py:231 ipam/forms/filtersets.py:432 +#: ipam/forms/filtersets.py:496 ipam/forms/model_forms.py:203 +#: ipam/forms/model_forms.py:587 ipam/forms/model_forms.py:682 #: ipam/tables/ip.py:244 ipam/tables/vlans.py:114 ipam/tables/vlans.py:216 -#: templates/circuits/inc/circuit_termination.html:32 +#: templates/circuits/inc/circuit_termination_fields.html:6 #: templates/dcim/device.html:21 templates/dcim/inc/cable_termination.html:8 #: templates/dcim/inc/cable_termination.html:33 #: templates/dcim/location.html:37 templates/dcim/powerpanel.html:22 @@ -201,19 +203,21 @@ msgstr "网站(slug)" msgid "ASN (ID)" msgstr "ASN (ID)" -#: circuits/filtersets.py:71 circuits/forms/filtersets.py:28 +#: circuits/filtersets.py:71 circuits/forms/filtersets.py:29 #: ipam/forms/model_forms.py:157 ipam/models/asns.py:108 #: ipam/models/asns.py:125 ipam/tables/asn.py:41 templates/ipam/asn.html:20 msgid "ASN" msgstr "ASN" #: circuits/filtersets.py:93 circuits/filtersets.py:120 -#: circuits/filtersets.py:154 ipam/filtersets.py:243 +#: circuits/filtersets.py:154 circuits/filtersets.py:281 +#: ipam/filtersets.py:243 msgid "Provider (ID)" msgstr "提供商 (ID)" #: circuits/filtersets.py:99 circuits/filtersets.py:126 -#: circuits/filtersets.py:160 ipam/filtersets.py:249 +#: circuits/filtersets.py:160 circuits/filtersets.py:287 +#: ipam/filtersets.py:249 msgid "Provider (slug)" msgstr "提供商(slug)" @@ -239,8 +243,8 @@ msgstr "电路类型(弹头)" #: circuits/filtersets.py:221 circuits/filtersets.py:266 #: dcim/filtersets.py:235 dcim/filtersets.py:321 dcim/filtersets.py:394 -#: dcim/filtersets.py:993 dcim/filtersets.py:1320 dcim/filtersets.py:1847 -#: dcim/filtersets.py:2089 dcim/filtersets.py:2148 ipam/filtersets.py:232 +#: dcim/filtersets.py:993 dcim/filtersets.py:1330 dcim/filtersets.py:1857 +#: dcim/filtersets.py:2099 dcim/filtersets.py:2158 ipam/filtersets.py:232 #: ipam/filtersets.py:363 ipam/filtersets.py:969 #: virtualization/filtersets.py:69 virtualization/filtersets.py:197 #: vpn/filtersets.py:387 @@ -252,13 +256,13 @@ msgid "Termination A (ID)" msgstr "终止 A (ID)" #: circuits/filtersets.py:258 core/filtersets.py:73 core/filtersets.py:132 -#: dcim/filtersets.py:693 dcim/filtersets.py:1289 dcim/filtersets.py:2196 +#: dcim/filtersets.py:693 dcim/filtersets.py:1299 dcim/filtersets.py:2206 #: extras/filtersets.py:41 extras/filtersets.py:63 extras/filtersets.py:92 #: extras/filtersets.py:127 extras/filtersets.py:176 extras/filtersets.py:204 #: extras/filtersets.py:234 extras/filtersets.py:271 extras/filtersets.py:343 #: extras/filtersets.py:390 extras/filtersets.py:450 extras/filtersets.py:613 #: extras/filtersets.py:655 extras/filtersets.py:696 -#: ipam/forms/model_forms.py:438 netbox/filtersets.py:275 +#: ipam/forms/model_forms.py:447 netbox/filtersets.py:275 #: netbox/forms/__init__.py:22 netbox/forms/base.py:165 #: templates/htmx/object_selector.html:28 templates/inc/filter_list.html:45 #: templates/ipam/ipaddress_assign.html:29 templates/search.html:7 @@ -268,9 +272,12 @@ msgstr "终止 A (ID)" msgid "Search" msgstr "搜寻" -#: circuits/filtersets.py:262 circuits/forms/bulk_edit.py:168 -#: circuits/forms/model_forms.py:109 circuits/forms/model_forms.py:131 +#: circuits/filtersets.py:262 circuits/forms/bulk_edit.py:170 +#: circuits/forms/bulk_import.py:117 circuits/forms/filtersets.py:196 +#: circuits/forms/filtersets.py:212 circuits/forms/model_forms.py:109 +#: circuits/forms/model_forms.py:131 circuits/tables/circuits.py:96 #: dcim/forms/connections.py:71 templates/circuits/circuit.html:15 +#: templates/circuits/circuittermination.html:19 #: templates/dcim/inc/cable_termination.html:55 #: templates/dcim/trace/circuit.html:4 msgid "Circuit" @@ -280,48 +287,48 @@ msgstr "电路" msgid "ProviderNetwork (ID)" msgstr "提供商网络 (ID)" -#: circuits/forms/bulk_edit.py:26 circuits/forms/filtersets.py:53 +#: circuits/forms/bulk_edit.py:28 circuits/forms/filtersets.py:54 #: circuits/forms/model_forms.py:27 circuits/tables/providers.py:33 #: dcim/forms/bulk_edit.py:127 dcim/forms/filtersets.py:188 #: dcim/forms/model_forms.py:122 dcim/tables/sites.py:94 -#: ipam/models/asns.py:126 ipam/tables/asn.py:27 ipam/views.py:218 +#: ipam/models/asns.py:126 ipam/tables/asn.py:27 ipam/views.py:219 #: netbox/navigation/menu.py:159 netbox/navigation/menu.py:162 #: templates/circuits/provider.html:23 msgid "ASNs" msgstr "ASN" -#: circuits/forms/bulk_edit.py:30 circuits/forms/bulk_edit.py:52 -#: circuits/forms/bulk_edit.py:79 circuits/forms/bulk_edit.py:100 -#: circuits/forms/bulk_edit.py:160 core/forms/bulk_edit.py:28 -#: core/tables/plugins.py:29 dcim/forms/bulk_create.py:35 -#: dcim/forms/bulk_edit.py:72 dcim/forms/bulk_edit.py:91 -#: dcim/forms/bulk_edit.py:150 dcim/forms/bulk_edit.py:191 -#: dcim/forms/bulk_edit.py:209 dcim/forms/bulk_edit.py:337 -#: dcim/forms/bulk_edit.py:373 dcim/forms/bulk_edit.py:388 -#: dcim/forms/bulk_edit.py:447 dcim/forms/bulk_edit.py:486 -#: dcim/forms/bulk_edit.py:516 dcim/forms/bulk_edit.py:540 -#: dcim/forms/bulk_edit.py:613 dcim/forms/bulk_edit.py:665 -#: dcim/forms/bulk_edit.py:717 dcim/forms/bulk_edit.py:740 -#: dcim/forms/bulk_edit.py:788 dcim/forms/bulk_edit.py:858 -#: dcim/forms/bulk_edit.py:911 dcim/forms/bulk_edit.py:946 -#: dcim/forms/bulk_edit.py:986 dcim/forms/bulk_edit.py:1030 -#: dcim/forms/bulk_edit.py:1075 dcim/forms/bulk_edit.py:1102 -#: dcim/forms/bulk_edit.py:1120 dcim/forms/bulk_edit.py:1138 -#: dcim/forms/bulk_edit.py:1156 dcim/forms/bulk_edit.py:1575 -#: extras/forms/bulk_edit.py:36 extras/forms/bulk_edit.py:124 -#: extras/forms/bulk_edit.py:153 extras/forms/bulk_edit.py:183 -#: extras/forms/bulk_edit.py:264 extras/forms/bulk_edit.py:288 -#: extras/forms/bulk_edit.py:302 extras/tables/tables.py:58 -#: ipam/forms/bulk_edit.py:51 ipam/forms/bulk_edit.py:71 -#: ipam/forms/bulk_edit.py:91 ipam/forms/bulk_edit.py:115 -#: ipam/forms/bulk_edit.py:144 ipam/forms/bulk_edit.py:173 -#: ipam/forms/bulk_edit.py:192 ipam/forms/bulk_edit.py:261 -#: ipam/forms/bulk_edit.py:305 ipam/forms/bulk_edit.py:353 -#: ipam/forms/bulk_edit.py:396 ipam/forms/bulk_edit.py:424 -#: ipam/forms/bulk_edit.py:554 ipam/forms/bulk_edit.py:585 -#: templates/account/token.html:35 templates/circuits/circuit.html:59 -#: templates/circuits/circuittype.html:26 -#: templates/circuits/inc/circuit_termination.html:114 +#: circuits/forms/bulk_edit.py:32 circuits/forms/bulk_edit.py:54 +#: circuits/forms/bulk_edit.py:81 circuits/forms/bulk_edit.py:102 +#: circuits/forms/bulk_edit.py:162 circuits/forms/bulk_edit.py:181 +#: core/forms/bulk_edit.py:28 core/tables/plugins.py:29 +#: dcim/forms/bulk_create.py:35 dcim/forms/bulk_edit.py:72 +#: dcim/forms/bulk_edit.py:91 dcim/forms/bulk_edit.py:150 +#: dcim/forms/bulk_edit.py:191 dcim/forms/bulk_edit.py:209 +#: dcim/forms/bulk_edit.py:337 dcim/forms/bulk_edit.py:373 +#: dcim/forms/bulk_edit.py:388 dcim/forms/bulk_edit.py:447 +#: dcim/forms/bulk_edit.py:486 dcim/forms/bulk_edit.py:516 +#: dcim/forms/bulk_edit.py:540 dcim/forms/bulk_edit.py:613 +#: dcim/forms/bulk_edit.py:665 dcim/forms/bulk_edit.py:717 +#: dcim/forms/bulk_edit.py:740 dcim/forms/bulk_edit.py:788 +#: dcim/forms/bulk_edit.py:858 dcim/forms/bulk_edit.py:911 +#: dcim/forms/bulk_edit.py:946 dcim/forms/bulk_edit.py:986 +#: dcim/forms/bulk_edit.py:1030 dcim/forms/bulk_edit.py:1075 +#: dcim/forms/bulk_edit.py:1102 dcim/forms/bulk_edit.py:1120 +#: dcim/forms/bulk_edit.py:1138 dcim/forms/bulk_edit.py:1156 +#: dcim/forms/bulk_edit.py:1575 extras/forms/bulk_edit.py:36 +#: extras/forms/bulk_edit.py:124 extras/forms/bulk_edit.py:153 +#: extras/forms/bulk_edit.py:183 extras/forms/bulk_edit.py:264 +#: extras/forms/bulk_edit.py:288 extras/forms/bulk_edit.py:302 +#: extras/tables/tables.py:58 ipam/forms/bulk_edit.py:51 +#: ipam/forms/bulk_edit.py:71 ipam/forms/bulk_edit.py:91 +#: ipam/forms/bulk_edit.py:115 ipam/forms/bulk_edit.py:144 +#: ipam/forms/bulk_edit.py:173 ipam/forms/bulk_edit.py:192 +#: ipam/forms/bulk_edit.py:261 ipam/forms/bulk_edit.py:305 +#: ipam/forms/bulk_edit.py:353 ipam/forms/bulk_edit.py:396 +#: ipam/forms/bulk_edit.py:424 ipam/forms/bulk_edit.py:554 +#: ipam/forms/bulk_edit.py:585 templates/account/token.html:35 +#: templates/circuits/circuit.html:59 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/dcim/cable.html:36 @@ -387,32 +394,35 @@ msgstr "ASN" msgid "Description" msgstr "描述" -#: circuits/forms/bulk_edit.py:47 circuits/forms/bulk_edit.py:69 -#: circuits/forms/bulk_edit.py:119 circuits/forms/bulk_import.py:34 -#: circuits/forms/bulk_import.py:49 circuits/forms/bulk_import.py:75 -#: circuits/forms/filtersets.py:67 circuits/forms/filtersets.py:85 -#: circuits/forms/filtersets.py:113 circuits/forms/filtersets.py:128 +#: circuits/forms/bulk_edit.py:49 circuits/forms/bulk_edit.py:71 +#: circuits/forms/bulk_edit.py:121 circuits/forms/bulk_import.py:35 +#: circuits/forms/bulk_import.py:50 circuits/forms/bulk_import.py:76 +#: circuits/forms/filtersets.py:68 circuits/forms/filtersets.py:86 +#: circuits/forms/filtersets.py:114 circuits/forms/filtersets.py:129 +#: circuits/forms/filtersets.py:197 circuits/forms/filtersets.py:230 #: circuits/forms/model_forms.py:45 circuits/forms/model_forms.py:59 -#: circuits/forms/model_forms.py:91 circuits/tables/circuits.py:55 -#: circuits/tables/providers.py:72 circuits/tables/providers.py:103 -#: templates/circuits/circuit.html:18 templates/circuits/provider.html:20 +#: circuits/forms/model_forms.py:91 circuits/tables/circuits.py:56 +#: circuits/tables/circuits.py:100 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 msgid "Provider" msgstr "提供商" -#: circuits/forms/bulk_edit.py:76 circuits/forms/filtersets.py:88 +#: circuits/forms/bulk_edit.py:78 circuits/forms/filtersets.py:89 #: templates/circuits/providernetwork.html:28 msgid "Service ID" msgstr "服务 ID" -#: circuits/forms/bulk_edit.py:96 circuits/forms/filtersets.py:104 +#: circuits/forms/bulk_edit.py:98 circuits/forms/filtersets.py:105 #: dcim/forms/bulk_edit.py:205 dcim/forms/bulk_edit.py:502 #: dcim/forms/bulk_edit.py:702 dcim/forms/bulk_edit.py:1071 #: dcim/forms/bulk_edit.py:1098 dcim/forms/bulk_edit.py:1571 -#: dcim/forms/filtersets.py:975 dcim/forms/filtersets.py:1351 -#: dcim/forms/filtersets.py:1372 dcim/tables/devices.py:699 +#: dcim/forms/filtersets.py:983 dcim/forms/filtersets.py:1359 +#: dcim/forms/filtersets.py:1380 dcim/tables/devices.py:699 #: dcim/tables/devices.py:759 dcim/tables/devices.py:986 #: dcim/tables/devicetypes.py:245 dcim/tables/devicetypes.py:260 #: dcim/tables/racks.py:32 extras/forms/bulk_edit.py:260 @@ -424,8 +434,8 @@ msgstr "服务 ID" msgid "Color" msgstr "颜色" -#: circuits/forms/bulk_edit.py:114 circuits/forms/bulk_import.py:88 -#: circuits/forms/filtersets.py:123 core/forms/bulk_edit.py:18 +#: circuits/forms/bulk_edit.py:116 circuits/forms/bulk_import.py:89 +#: circuits/forms/filtersets.py:124 core/forms/bulk_edit.py:18 #: core/forms/filtersets.py:30 core/tables/data.py:20 core/tables/jobs.py:18 #: dcim/forms/bulk_edit.py:282 dcim/forms/bulk_edit.py:680 #: dcim/forms/bulk_edit.py:819 dcim/forms/bulk_edit.py:887 @@ -437,18 +447,18 @@ msgstr "颜色" #: dcim/forms/bulk_import.py:725 dcim/forms/bulk_import.py:808 #: dcim/forms/bulk_import.py:902 dcim/forms/bulk_import.py:944 #: dcim/forms/bulk_import.py:1161 dcim/forms/bulk_import.py:1327 -#: dcim/forms/filtersets.py:287 dcim/forms/filtersets.py:866 -#: dcim/forms/filtersets.py:965 dcim/forms/filtersets.py:1086 -#: dcim/forms/filtersets.py:1156 dcim/forms/filtersets.py:1178 -#: dcim/forms/filtersets.py:1200 dcim/forms/filtersets.py:1217 -#: dcim/forms/filtersets.py:1251 dcim/forms/filtersets.py:1346 -#: dcim/forms/filtersets.py:1367 dcim/forms/model_forms.py:643 +#: dcim/forms/filtersets.py:287 dcim/forms/filtersets.py:874 +#: dcim/forms/filtersets.py:973 dcim/forms/filtersets.py:1094 +#: dcim/forms/filtersets.py:1164 dcim/forms/filtersets.py:1186 +#: dcim/forms/filtersets.py:1208 dcim/forms/filtersets.py:1225 +#: dcim/forms/filtersets.py:1259 dcim/forms/filtersets.py:1354 +#: dcim/forms/filtersets.py:1375 dcim/forms/model_forms.py:643 #: dcim/forms/model_forms.py:649 dcim/forms/object_import.py:84 #: dcim/forms/object_import.py:113 dcim/forms/object_import.py:145 #: dcim/tables/devices.py:183 dcim/tables/devices.py:815 #: dcim/tables/power.py:77 extras/forms/bulk_import.py:39 #: extras/tables/tables.py:283 extras/tables/tables.py:355 -#: extras/tables/tables.py:473 netbox/tables/tables.py:237 +#: extras/tables/tables.py:473 netbox/tables/tables.py:239 #: 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 @@ -469,13 +479,13 @@ msgstr "颜色" msgid "Type" msgstr "类型" -#: circuits/forms/bulk_edit.py:124 circuits/forms/bulk_import.py:81 -#: circuits/forms/filtersets.py:136 circuits/forms/model_forms.py:96 +#: circuits/forms/bulk_edit.py:126 circuits/forms/bulk_import.py:82 +#: circuits/forms/filtersets.py:137 circuits/forms/model_forms.py:96 msgid "Provider account" msgstr "提供商账户" -#: circuits/forms/bulk_edit.py:132 circuits/forms/bulk_import.py:94 -#: circuits/forms/filtersets.py:147 core/forms/filtersets.py:35 +#: circuits/forms/bulk_edit.py:134 circuits/forms/bulk_import.py:95 +#: circuits/forms/filtersets.py:148 core/forms/filtersets.py:35 #: core/forms/filtersets.py:76 core/tables/data.py:23 core/tables/jobs.py:26 #: core/tables/tasks.py:88 dcim/forms/bulk_edit.py:105 #: dcim/forms/bulk_edit.py:180 dcim/forms/bulk_edit.py:261 @@ -487,9 +497,9 @@ msgstr "提供商账户" #: dcim/forms/bulk_import.py:1155 dcim/forms/bulk_import.py:1322 #: dcim/forms/bulk_import.py:1386 dcim/forms/filtersets.py:171 #: dcim/forms/filtersets.py:230 dcim/forms/filtersets.py:282 -#: dcim/forms/filtersets.py:727 dcim/forms/filtersets.py:835 -#: dcim/forms/filtersets.py:869 dcim/forms/filtersets.py:970 -#: dcim/forms/filtersets.py:1081 dcim/tables/devices.py:145 +#: dcim/forms/filtersets.py:728 dcim/forms/filtersets.py:843 +#: dcim/forms/filtersets.py:877 dcim/forms/filtersets.py:978 +#: dcim/forms/filtersets.py:1089 dcim/tables/devices.py:145 #: dcim/tables/devices.py:818 dcim/tables/devices.py:1046 #: dcim/tables/modules.py:69 dcim/tables/power.py:74 dcim/tables/racks.py:66 #: dcim/tables/sites.py:82 dcim/tables/sites.py:133 @@ -497,9 +507,9 @@ msgstr "提供商账户" #: ipam/forms/bulk_edit.py:338 ipam/forms/bulk_edit.py:544 #: ipam/forms/bulk_import.py:191 ipam/forms/bulk_import.py:256 #: ipam/forms/bulk_import.py:292 ipam/forms/bulk_import.py:458 -#: ipam/forms/filtersets.py:209 ipam/forms/filtersets.py:274 -#: ipam/forms/filtersets.py:348 ipam/forms/filtersets.py:501 -#: ipam/forms/model_forms.py:457 ipam/tables/ip.py:236 ipam/tables/ip.py:309 +#: ipam/forms/filtersets.py:210 ipam/forms/filtersets.py:281 +#: ipam/forms/filtersets.py:355 ipam/forms/filtersets.py:508 +#: ipam/forms/model_forms.py:466 ipam/tables/ip.py:236 ipam/tables/ip.py:309 #: ipam/tables/ip.py:359 ipam/tables/ip.py:421 ipam/tables/ip.py:448 #: ipam/tables/vlans.py:122 ipam/tables/vlans.py:227 #: templates/circuits/circuit.html:34 templates/core/datasource.html:46 @@ -530,8 +540,8 @@ msgstr "提供商账户" msgid "Status" msgstr "状态" -#: circuits/forms/bulk_edit.py:138 circuits/forms/bulk_import.py:99 -#: circuits/forms/filtersets.py:116 dcim/forms/bulk_edit.py:121 +#: circuits/forms/bulk_edit.py:140 circuits/forms/bulk_import.py:100 +#: circuits/forms/filtersets.py:117 dcim/forms/bulk_edit.py:121 #: dcim/forms/bulk_edit.py:186 dcim/forms/bulk_edit.py:256 #: dcim/forms/bulk_edit.py:368 dcim/forms/bulk_edit.py:588 #: dcim/forms/bulk_edit.py:692 dcim/forms/bulk_edit.py:1599 @@ -541,9 +551,9 @@ msgstr "状态" #: dcim/forms/bulk_import.py:1379 dcim/forms/filtersets.py:166 #: dcim/forms/filtersets.py:198 dcim/forms/filtersets.py:249 #: dcim/forms/filtersets.py:334 dcim/forms/filtersets.py:355 -#: dcim/forms/filtersets.py:652 dcim/forms/filtersets.py:827 -#: dcim/forms/filtersets.py:889 dcim/forms/filtersets.py:919 -#: dcim/forms/filtersets.py:1041 dcim/tables/power.py:88 +#: dcim/forms/filtersets.py:652 dcim/forms/filtersets.py:835 +#: dcim/forms/filtersets.py:897 dcim/forms/filtersets.py:927 +#: dcim/forms/filtersets.py:1049 dcim/tables/power.py:88 #: extras/filtersets.py:564 extras/forms/filtersets.py:332 #: extras/forms/filtersets.py:405 ipam/forms/bulk_edit.py:41 #: ipam/forms/bulk_edit.py:66 ipam/forms/bulk_edit.py:110 @@ -557,8 +567,8 @@ msgstr "状态" #: ipam/forms/bulk_import.py:451 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:173 ipam/forms/filtersets.py:260 -#: ipam/forms/filtersets.py:303 ipam/forms/filtersets.py:469 +#: ipam/forms/filtersets.py:174 ipam/forms/filtersets.py:267 +#: ipam/forms/filtersets.py:310 ipam/forms/filtersets.py:476 #: ipam/tables/ip.py:451 ipam/tables/vlans.py:224 #: templates/circuits/circuit.html:38 templates/dcim/cable.html:23 #: templates/dcim/device.html:78 templates/dcim/location.html:49 @@ -589,23 +599,23 @@ msgstr "状态" msgid "Tenant" msgstr "租户" -#: circuits/forms/bulk_edit.py:143 circuits/forms/filtersets.py:171 +#: circuits/forms/bulk_edit.py:145 circuits/forms/filtersets.py:172 msgid "Install date" msgstr "安装日期" -#: circuits/forms/bulk_edit.py:148 circuits/forms/filtersets.py:176 +#: circuits/forms/bulk_edit.py:150 circuits/forms/filtersets.py:177 msgid "Termination date" msgstr "终止日期" -#: circuits/forms/bulk_edit.py:154 circuits/forms/filtersets.py:183 +#: circuits/forms/bulk_edit.py:156 circuits/forms/filtersets.py:184 msgid "Commit rate (Kbps)" msgstr "提交速率 (Kbps)" -#: circuits/forms/bulk_edit.py:169 circuits/forms/model_forms.py:110 +#: circuits/forms/bulk_edit.py:171 circuits/forms/model_forms.py:110 msgid "Service Parameters" msgstr "服务参数" -#: circuits/forms/bulk_edit.py:170 circuits/forms/model_forms.py:111 +#: circuits/forms/bulk_edit.py:172 circuits/forms/model_forms.py:111 #: dcim/forms/model_forms.py:138 dcim/forms/model_forms.py:180 #: dcim/forms/model_forms.py:228 dcim/forms/model_forms.py:267 #: dcim/forms/model_forms.py:713 dcim/forms/model_forms.py:1636 @@ -624,26 +634,60 @@ msgstr "服务参数" msgid "Tenancy" msgstr "租赁" -#: circuits/forms/bulk_import.py:37 circuits/forms/bulk_import.py:52 -#: circuits/forms/bulk_import.py:78 +#: circuits/forms/bulk_edit.py:191 circuits/forms/bulk_edit.py:215 +#: circuits/forms/model_forms.py:153 circuits/tables/circuits.py:109 +#: templates/circuits/inc/circuit_termination_fields.html:62 +#: templates/circuits/providernetwork.html:17 +msgid "Provider Network" +msgstr "提供商网络" + +#: circuits/forms/bulk_edit.py:197 +msgid "Port speed (Kbps)" +msgstr "端口速度 (Kbps)" + +#: circuits/forms/bulk_edit.py:201 +msgid "Upstream speed (Kbps)" +msgstr "上行速度 (Kbps)" + +#: circuits/forms/bulk_edit.py:204 dcim/forms/bulk_edit.py:849 +#: dcim/forms/bulk_edit.py:1208 dcim/forms/bulk_edit.py:1225 +#: dcim/forms/bulk_edit.py:1242 dcim/forms/bulk_edit.py:1260 +#: dcim/forms/bulk_edit.py:1348 dcim/forms/bulk_edit.py:1487 +#: dcim/forms/bulk_edit.py:1504 +msgid "Mark connected" +msgstr "标记已连接" + +#: circuits/forms/bulk_edit.py:217 circuits/forms/model_forms.py:155 +#: templates/circuits/inc/circuit_termination_fields.html:54 +#: templates/dcim/frontport.html:121 templates/dcim/interface.html:193 +#: templates/dcim/rearport.html:111 +msgid "Circuit Termination" +msgstr "电路终止" + +#: circuits/forms/bulk_edit.py:219 circuits/forms/model_forms.py:157 +msgid "Termination Details" +msgstr "终止详情" + +#: circuits/forms/bulk_import.py:38 circuits/forms/bulk_import.py:53 +#: circuits/forms/bulk_import.py:79 msgid "Assigned provider" msgstr "指定的提供商" -#: circuits/forms/bulk_import.py:69 dcim/forms/bulk_import.py:178 +#: circuits/forms/bulk_import.py:70 dcim/forms/bulk_import.py:178 #: dcim/forms/bulk_import.py:388 dcim/forms/bulk_import.py:1108 #: dcim/forms/bulk_import.py:1187 extras/forms/bulk_import.py:232 msgid "RGB color in hexadecimal. Example:" msgstr "十六进制的 RGB 颜色。示例:" -#: circuits/forms/bulk_import.py:84 +#: circuits/forms/bulk_import.py:85 msgid "Assigned provider account" msgstr "分配的提供商账户" -#: circuits/forms/bulk_import.py:91 +#: circuits/forms/bulk_import.py:92 msgid "Type of circuit" msgstr "电路类型" -#: circuits/forms/bulk_import.py:96 dcim/forms/bulk_import.py:89 +#: circuits/forms/bulk_import.py:97 dcim/forms/bulk_import.py:89 #: dcim/forms/bulk_import.py:148 dcim/forms/bulk_import.py:204 #: dcim/forms/bulk_import.py:452 dcim/forms/bulk_import.py:606 #: dcim/forms/bulk_import.py:1324 ipam/forms/bulk_import.py:193 @@ -654,7 +698,7 @@ msgstr "电路类型" msgid "Operational status" msgstr "运行状态" -#: circuits/forms/bulk_import.py:103 dcim/forms/bulk_import.py:110 +#: circuits/forms/bulk_import.py:104 dcim/forms/bulk_import.py:110 #: dcim/forms/bulk_import.py:155 dcim/forms/bulk_import.py:286 #: dcim/forms/bulk_import.py:428 dcim/forms/bulk_import.py:1171 #: dcim/forms/bulk_import.py:1319 dcim/forms/bulk_import.py:1383 @@ -668,37 +712,46 @@ msgstr "运行状态" msgid "Assigned tenant" msgstr "分配的租户" -#: circuits/forms/bulk_import.py:122 circuits/forms/filtersets.py:144 -#: circuits/forms/model_forms.py:142 +#: circuits/forms/bulk_import.py:122 +#: 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 +msgid "Termination" +msgstr "终止" + +#: circuits/forms/bulk_import.py:132 circuits/forms/filtersets.py:145 +#: circuits/forms/filtersets.py:225 circuits/forms/model_forms.py:142 msgid "Provider network" msgstr "提供商网络" -#: circuits/forms/filtersets.py:27 circuits/forms/filtersets.py:115 -#: dcim/forms/bulk_edit.py:248 dcim/forms/bulk_edit.py:346 -#: dcim/forms/bulk_edit.py:580 dcim/forms/bulk_edit.py:627 -#: dcim/forms/bulk_edit.py:780 dcim/forms/bulk_import.py:189 -#: dcim/forms/bulk_import.py:263 dcim/forms/bulk_import.py:491 -#: dcim/forms/bulk_import.py:1268 dcim/forms/bulk_import.py:1302 -#: dcim/forms/filtersets.py:93 dcim/forms/filtersets.py:246 -#: dcim/forms/filtersets.py:279 dcim/forms/filtersets.py:331 -#: dcim/forms/filtersets.py:382 dcim/forms/filtersets.py:649 -#: dcim/forms/filtersets.py:690 dcim/forms/filtersets.py:888 -#: dcim/forms/filtersets.py:917 dcim/forms/filtersets.py:937 -#: dcim/forms/filtersets.py:1001 dcim/forms/filtersets.py:1031 -#: dcim/forms/filtersets.py:1040 dcim/forms/filtersets.py:1151 -#: dcim/forms/filtersets.py:1173 dcim/forms/filtersets.py:1195 -#: dcim/forms/filtersets.py:1212 dcim/forms/filtersets.py:1232 -#: dcim/forms/filtersets.py:1340 dcim/forms/filtersets.py:1362 -#: dcim/forms/filtersets.py:1383 dcim/forms/filtersets.py:1398 -#: dcim/forms/filtersets.py:1412 dcim/forms/model_forms.py:179 -#: dcim/forms/model_forms.py:211 dcim/forms/model_forms.py:411 -#: dcim/forms/model_forms.py:673 dcim/tables/devices.py:162 -#: dcim/tables/power.py:30 dcim/tables/racks.py:58 dcim/tables/racks.py:143 -#: extras/filtersets.py:488 extras/forms/filtersets.py:329 -#: ipam/forms/bulk_edit.py:457 ipam/forms/filtersets.py:172 -#: ipam/forms/filtersets.py:407 ipam/forms/filtersets.py:430 -#: ipam/forms/filtersets.py:467 ipam/forms/model_forms.py:590 -#: templates/dcim/device.html:25 templates/dcim/device_edit.html:30 +#: circuits/forms/filtersets.py:28 circuits/forms/filtersets.py:116 +#: circuits/forms/filtersets.py:198 dcim/forms/bulk_edit.py:248 +#: dcim/forms/bulk_edit.py:346 dcim/forms/bulk_edit.py:580 +#: dcim/forms/bulk_edit.py:627 dcim/forms/bulk_edit.py:780 +#: dcim/forms/bulk_import.py:189 dcim/forms/bulk_import.py:263 +#: dcim/forms/bulk_import.py:491 dcim/forms/bulk_import.py:1268 +#: dcim/forms/bulk_import.py:1302 dcim/forms/filtersets.py:93 +#: dcim/forms/filtersets.py:246 dcim/forms/filtersets.py:279 +#: dcim/forms/filtersets.py:331 dcim/forms/filtersets.py:382 +#: dcim/forms/filtersets.py:649 dcim/forms/filtersets.py:691 +#: dcim/forms/filtersets.py:896 dcim/forms/filtersets.py:925 +#: dcim/forms/filtersets.py:945 dcim/forms/filtersets.py:1009 +#: dcim/forms/filtersets.py:1039 dcim/forms/filtersets.py:1048 +#: dcim/forms/filtersets.py:1159 dcim/forms/filtersets.py:1181 +#: dcim/forms/filtersets.py:1203 dcim/forms/filtersets.py:1220 +#: dcim/forms/filtersets.py:1240 dcim/forms/filtersets.py:1348 +#: dcim/forms/filtersets.py:1370 dcim/forms/filtersets.py:1391 +#: dcim/forms/filtersets.py:1406 dcim/forms/filtersets.py:1420 +#: dcim/forms/model_forms.py:179 dcim/forms/model_forms.py:211 +#: dcim/forms/model_forms.py:411 dcim/forms/model_forms.py:673 +#: dcim/tables/devices.py:162 dcim/tables/power.py:30 dcim/tables/racks.py:58 +#: dcim/tables/racks.py:143 extras/filtersets.py:488 +#: extras/forms/filtersets.py:329 ipam/forms/bulk_edit.py:457 +#: ipam/forms/filtersets.py:173 ipam/forms/filtersets.py:414 +#: ipam/forms/filtersets.py:437 ipam/forms/filtersets.py:474 +#: ipam/forms/model_forms.py:599 templates/dcim/device.html:25 +#: 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:26 templates/dcim/rackreservation.html:32 @@ -708,12 +761,12 @@ msgstr "提供商网络" msgid "Location" msgstr "地点" -#: circuits/forms/filtersets.py:29 circuits/forms/filtersets.py:117 +#: circuits/forms/filtersets.py:30 circuits/forms/filtersets.py:118 #: dcim/forms/filtersets.py:137 dcim/forms/filtersets.py:151 #: dcim/forms/filtersets.py:167 dcim/forms/filtersets.py:199 #: dcim/forms/filtersets.py:250 dcim/forms/filtersets.py:335 #: dcim/forms/filtersets.py:406 dcim/forms/filtersets.py:653 -#: dcim/forms/filtersets.py:1002 netbox/navigation/menu.py:44 +#: dcim/forms/filtersets.py:1010 netbox/navigation/menu.py:44 #: netbox/navigation/menu.py:46 tenancy/forms/filtersets.py:42 #: tenancy/tables/columns.py:70 tenancy/tables/contacts.py:25 #: tenancy/views.py:19 virtualization/forms/filtersets.py:37 @@ -722,22 +775,22 @@ msgstr "地点" msgid "Contacts" msgstr "联系人" -#: circuits/forms/filtersets.py:34 circuits/forms/filtersets.py:154 +#: circuits/forms/filtersets.py:35 circuits/forms/filtersets.py:155 #: dcim/forms/bulk_edit.py:111 dcim/forms/bulk_edit.py:223 #: dcim/forms/bulk_edit.py:755 dcim/forms/bulk_import.py:92 #: dcim/forms/filtersets.py:71 dcim/forms/filtersets.py:178 #: dcim/forms/filtersets.py:204 dcim/forms/filtersets.py:257 -#: dcim/forms/filtersets.py:360 dcim/forms/filtersets.py:667 -#: dcim/forms/filtersets.py:894 dcim/forms/filtersets.py:924 -#: dcim/forms/filtersets.py:1008 dcim/forms/filtersets.py:1047 -#: dcim/forms/filtersets.py:1460 dcim/forms/filtersets.py:1484 -#: dcim/forms/filtersets.py:1508 dcim/forms/model_forms.py:111 +#: dcim/forms/filtersets.py:360 dcim/forms/filtersets.py:668 +#: dcim/forms/filtersets.py:902 dcim/forms/filtersets.py:932 +#: dcim/forms/filtersets.py:1016 dcim/forms/filtersets.py:1055 +#: dcim/forms/filtersets.py:1468 dcim/forms/filtersets.py:1492 +#: dcim/forms/filtersets.py:1516 dcim/forms/model_forms.py:111 #: dcim/forms/object_create.py:375 dcim/tables/devices.py:148 #: dcim/tables/sites.py:85 extras/filtersets.py:455 #: ipam/forms/bulk_edit.py:206 ipam/forms/bulk_edit.py:438 -#: ipam/forms/bulk_edit.py:512 ipam/forms/filtersets.py:216 -#: ipam/forms/filtersets.py:415 ipam/forms/filtersets.py:475 -#: ipam/forms/model_forms.py:562 templates/dcim/device.html:17 +#: ipam/forms/bulk_edit.py:512 ipam/forms/filtersets.py:217 +#: ipam/forms/filtersets.py:422 ipam/forms/filtersets.py:482 +#: ipam/forms/model_forms.py:571 templates/dcim/device.html:17 #: templates/dcim/rack.html:16 templates/dcim/rackreservation.html:22 #: templates/dcim/region.html:26 templates/dcim/site.html:30 #: templates/ipam/prefix.html:49 templates/ipam/vlan.html:16 @@ -747,42 +800,42 @@ msgstr "联系人" msgid "Region" msgstr "区域" -#: circuits/forms/filtersets.py:39 circuits/forms/filtersets.py:159 +#: circuits/forms/filtersets.py:40 circuits/forms/filtersets.py:160 #: dcim/forms/bulk_edit.py:231 dcim/forms/bulk_edit.py:763 #: dcim/forms/filtersets.py:76 dcim/forms/filtersets.py:183 #: dcim/forms/filtersets.py:209 dcim/forms/filtersets.py:270 -#: dcim/forms/filtersets.py:365 dcim/forms/filtersets.py:672 -#: dcim/forms/filtersets.py:899 dcim/forms/filtersets.py:1013 -#: dcim/forms/filtersets.py:1052 dcim/forms/object_create.py:383 +#: dcim/forms/filtersets.py:365 dcim/forms/filtersets.py:673 +#: dcim/forms/filtersets.py:907 dcim/forms/filtersets.py:1021 +#: dcim/forms/filtersets.py:1060 dcim/forms/object_create.py:383 #: extras/filtersets.py:472 ipam/forms/bulk_edit.py:211 #: ipam/forms/bulk_edit.py:445 ipam/forms/bulk_edit.py:517 -#: ipam/forms/filtersets.py:221 ipam/forms/filtersets.py:420 -#: ipam/forms/filtersets.py:480 ipam/forms/model_forms.py:575 +#: ipam/forms/filtersets.py:222 ipam/forms/filtersets.py:427 +#: ipam/forms/filtersets.py:487 ipam/forms/model_forms.py:584 #: virtualization/forms/bulk_edit.py:86 virtualization/forms/filtersets.py:69 #: virtualization/forms/filtersets.py:138 #: virtualization/forms/model_forms.py:98 msgid "Site group" msgstr "站点组" -#: circuits/forms/filtersets.py:62 circuits/forms/filtersets.py:80 -#: circuits/forms/filtersets.py:99 circuits/forms/filtersets.py:114 +#: circuits/forms/filtersets.py:63 circuits/forms/filtersets.py:81 +#: circuits/forms/filtersets.py:100 circuits/forms/filtersets.py:115 #: core/forms/filtersets.py:64 dcim/forms/bulk_edit.py:726 #: dcim/forms/filtersets.py:165 dcim/forms/filtersets.py:197 -#: dcim/forms/filtersets.py:826 dcim/forms/filtersets.py:918 -#: dcim/forms/filtersets.py:1042 dcim/forms/filtersets.py:1150 -#: dcim/forms/filtersets.py:1172 dcim/forms/filtersets.py:1194 -#: dcim/forms/filtersets.py:1211 dcim/forms/filtersets.py:1228 -#: dcim/forms/filtersets.py:1339 dcim/forms/filtersets.py:1361 -#: dcim/forms/filtersets.py:1382 dcim/forms/filtersets.py:1397 -#: dcim/forms/filtersets.py:1410 extras/forms/filtersets.py:43 +#: dcim/forms/filtersets.py:834 dcim/forms/filtersets.py:926 +#: dcim/forms/filtersets.py:1050 dcim/forms/filtersets.py:1158 +#: dcim/forms/filtersets.py:1180 dcim/forms/filtersets.py:1202 +#: dcim/forms/filtersets.py:1219 dcim/forms/filtersets.py:1236 +#: dcim/forms/filtersets.py:1347 dcim/forms/filtersets.py:1369 +#: dcim/forms/filtersets.py:1390 dcim/forms/filtersets.py:1405 +#: dcim/forms/filtersets.py:1418 extras/forms/filtersets.py:43 #: extras/forms/filtersets.py:112 extras/forms/filtersets.py:143 #: extras/forms/filtersets.py:183 extras/forms/filtersets.py:199 #: extras/forms/filtersets.py:230 extras/forms/filtersets.py:254 #: extras/forms/filtersets.py:450 extras/forms/filtersets.py:488 -#: ipam/forms/filtersets.py:99 ipam/forms/filtersets.py:259 -#: ipam/forms/filtersets.py:300 ipam/forms/filtersets.py:375 -#: ipam/forms/filtersets.py:468 ipam/forms/filtersets.py:527 -#: ipam/forms/filtersets.py:545 netbox/tables/tables.py:253 +#: ipam/forms/filtersets.py:99 ipam/forms/filtersets.py:266 +#: ipam/forms/filtersets.py:307 ipam/forms/filtersets.py:382 +#: ipam/forms/filtersets.py:475 ipam/forms/filtersets.py:534 +#: ipam/forms/filtersets.py:552 netbox/tables/tables.py:255 #: virtualization/forms/filtersets.py:45 #: virtualization/forms/filtersets.py:103 #: virtualization/forms/filtersets.py:194 @@ -791,28 +844,15 @@ msgstr "站点组" msgid "Attributes" msgstr "属性" -#: circuits/forms/filtersets.py:70 circuits/tables/circuits.py:60 +#: circuits/forms/filtersets.py:71 circuits/tables/circuits.py:61 #: circuits/tables/providers.py:66 templates/circuits/circuit.html:22 #: templates/circuits/provideraccount.html:24 msgid "Account" msgstr "账户" -#: circuits/forms/model_forms.py:153 -#: templates/circuits/inc/circuit_termination.html:88 -#: templates/circuits/providernetwork.html:17 -msgid "Provider Network" -msgstr "提供商网络" - -#: circuits/forms/model_forms.py:155 -#: templates/circuits/inc/circuit_termination.html:80 -#: templates/dcim/frontport.html:121 templates/dcim/interface.html:193 -#: templates/dcim/rearport.html:111 -msgid "Circuit Termination" -msgstr "电路终止" - -#: circuits/forms/model_forms.py:157 -msgid "Termination Details" -msgstr "终止详情" +#: circuits/forms/filtersets.py:215 +msgid "Term Side" +msgstr "学期方面" #: circuits/models/circuits.py:25 dcim/models/cables.py:67 #: dcim/models/device_component_templates.py:491 @@ -843,8 +883,8 @@ msgstr "唯一的电路 ID" #: core/models/jobs.py:85 dcim/models/cables.py:49 dcim/models/devices.py:643 #: dcim/models/devices.py:1155 dcim/models/devices.py:1364 #: dcim/models/power.py:96 dcim/models/racks.py:98 dcim/models/sites.py:154 -#: dcim/models/sites.py:266 ipam/models/ip.py:252 ipam/models/ip.py:521 -#: ipam/models/ip.py:729 ipam/models/vlans.py:175 +#: dcim/models/sites.py:266 ipam/models/ip.py:253 ipam/models/ip.py:522 +#: ipam/models/ip.py:730 ipam/models/vlans.py:175 #: virtualization/models/clusters.py:74 #: virtualization/models/virtualmachines.py:84 vpn/models/tunnels.py:40 #: wireless/models.py:94 wireless/models.py:158 @@ -1014,15 +1054,15 @@ msgstr "提供商网络" msgid "provider networks" msgstr "提供商网络" -#: circuits/tables/circuits.py:29 circuits/tables/providers.py:18 +#: circuits/tables/circuits.py:30 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:13 #: core/tables/tasks.py:11 core/tables/tasks.py:115 #: dcim/forms/filtersets.py:61 dcim/forms/object_create.py:43 #: dcim/tables/devices.py:60 dcim/tables/devices.py:97 #: dcim/tables/devices.py:139 dcim/tables/devices.py:294 -#: dcim/tables/devices.py:376 dcim/tables/devices.py:420 -#: dcim/tables/devices.py:472 dcim/tables/devices.py:524 +#: dcim/tables/devices.py:380 dcim/tables/devices.py:424 +#: dcim/tables/devices.py:476 dcim/tables/devices.py:528 #: dcim/tables/devices.py:644 dcim/tables/devices.py:726 #: dcim/tables/devices.py:776 dcim/tables/devices.py:842 #: dcim/tables/devices.py:957 dcim/tables/devices.py:977 @@ -1036,7 +1076,7 @@ msgstr "提供商网络" #: extras/tables/tables.py:209 extras/tables/tables.py:256 #: extras/tables/tables.py:279 extras/tables/tables.py:329 #: extras/tables/tables.py:381 extras/tables/tables.py:404 -#: ipam/forms/bulk_edit.py:391 ipam/forms/filtersets.py:379 +#: ipam/forms/bulk_edit.py:391 ipam/forms/filtersets.py:386 #: ipam/tables/asn.py:16 ipam/tables/ip.py:85 ipam/tables/ip.py:159 #: ipam/tables/services.py:15 ipam/tables/services.py:40 #: ipam/tables/vlans.py:64 ipam/tables/vlans.py:110 ipam/tables/vrfs.py:26 @@ -1102,7 +1142,7 @@ msgstr "提供商网络" msgid "Name" msgstr "姓名" -#: circuits/tables/circuits.py:38 circuits/tables/providers.py:45 +#: circuits/tables/circuits.py:39 circuits/tables/providers.py:45 #: circuits/tables/providers.py:79 netbox/navigation/menu.py:253 #: netbox/navigation/menu.py:257 netbox/navigation/menu.py:259 #: templates/circuits/provider.html:57 @@ -1111,23 +1151,23 @@ msgstr "姓名" msgid "Circuits" msgstr "电路" -#: circuits/tables/circuits.py:52 templates/circuits/circuit.html:26 +#: circuits/tables/circuits.py:53 templates/circuits/circuit.html:26 msgid "Circuit ID" msgstr "电路编号" -#: circuits/tables/circuits.py:65 wireless/forms/model_forms.py:160 +#: circuits/tables/circuits.py:66 wireless/forms/model_forms.py:160 msgid "Side A" msgstr "A 面" -#: circuits/tables/circuits.py:69 +#: circuits/tables/circuits.py:70 msgid "Side Z" msgstr "Z 面" -#: circuits/tables/circuits.py:72 templates/circuits/circuit.html:55 +#: circuits/tables/circuits.py:73 templates/circuits/circuit.html:55 msgid "Commit Rate" msgstr "承诺率" -#: circuits/tables/circuits.py:75 circuits/tables/providers.py:48 +#: circuits/tables/circuits.py:76 circuits/tables/providers.py:48 #: circuits/tables/providers.py:82 circuits/tables/providers.py:107 #: dcim/tables/devices.py:1019 dcim/tables/devicetypes.py:92 #: dcim/tables/modules.py:29 dcim/tables/modules.py:72 dcim/tables/power.py:39 @@ -1183,12 +1223,12 @@ msgstr "已完成" #: core/choices.py:22 core/choices.py:59 core/constants.py:20 #: core/tables/tasks.py:34 dcim/choices.py:176 dcim/choices.py:222 -#: dcim/choices.py:1506 extras/choices.py:226 virtualization/choices.py:47 +#: dcim/choices.py:1534 extras/choices.py:226 virtualization/choices.py:47 msgid "Failed" msgstr "失败" -#: core/choices.py:35 netbox/navigation/menu.py:319 -#: netbox/navigation/menu.py:323 templates/extras/script/base.html:14 +#: core/choices.py:35 netbox/navigation/menu.py:320 +#: netbox/navigation/menu.py:324 templates/extras/script/base.html:14 #: templates/extras/script_list.html:7 templates/extras/script_list.html:12 #: templates/extras/script_result.html:17 msgid "Scripts" @@ -1283,8 +1323,8 @@ msgstr "数据源(名称)" #: core/forms/bulk_edit.py:25 core/forms/filtersets.py:40 #: core/tables/data.py:26 dcim/forms/bulk_edit.py:1020 -#: dcim/forms/bulk_edit.py:1293 dcim/forms/filtersets.py:1268 -#: dcim/tables/devices.py:549 dcim/tables/devicetypes.py:221 +#: dcim/forms/bulk_edit.py:1293 dcim/forms/filtersets.py:1276 +#: dcim/tables/devices.py:553 dcim/tables/devicetypes.py:221 #: extras/forms/bulk_edit.py:98 extras/forms/bulk_edit.py:162 #: extras/forms/bulk_edit.py:221 extras/forms/filtersets.py:120 #: extras/forms/filtersets.py:207 extras/forms/filtersets.py:268 @@ -1420,10 +1460,10 @@ msgstr "必须上传文件或选择要同步的数据文件" msgid "Rack Elevations" msgstr "机架高度" -#: core/forms/model_forms.py:157 dcim/choices.py:1417 +#: core/forms/model_forms.py:157 dcim/choices.py:1445 #: dcim/forms/bulk_edit.py:867 dcim/forms/bulk_edit.py:1250 #: dcim/forms/bulk_edit.py:1268 dcim/tables/racks.py:89 -#: netbox/navigation/menu.py:275 netbox/navigation/menu.py:279 +#: netbox/navigation/menu.py:276 netbox/navigation/menu.py:280 msgid "Power" msgstr "权力" @@ -1456,7 +1496,7 @@ msgstr "验证" msgid "User Preferences" msgstr "用户偏好" -#: core/forms/model_forms.py:167 dcim/forms/filtersets.py:660 +#: core/forms/model_forms.py:167 dcim/forms/filtersets.py:661 #: templates/core/inc/config_data.html:127 users/forms/model_forms.py:65 msgid "Miscellaneous" msgstr "杂项" @@ -1595,7 +1635,7 @@ msgstr "路径" msgid "File path relative to the data source's root" msgstr "相对于数据源根目录的文件路径" -#: core/models/data.py:303 ipam/models/ip.py:502 +#: core/models/data.py:303 ipam/models/ip.py:503 msgid "size" msgstr "尺寸" @@ -1712,7 +1752,7 @@ msgstr "上次更新时间" #: core/tables/jobs.py:10 core/tables/tasks.py:76 #: dcim/tables/devicetypes.py:161 extras/tables/tables.py:179 -#: extras/tables/tables.py:350 netbox/tables/tables.py:187 +#: extras/tables/tables.py:350 netbox/tables/tables.py:188 #: templates/dcim/virtualchassis_edit.html:52 utilities/forms/forms.py:73 #: wireless/tables/wirelesslink.py:16 msgid "ID" @@ -1721,7 +1761,7 @@ msgstr "身份证" #: core/tables/jobs.py:21 extras/choices.py:41 extras/tables/tables.py:241 #: extras/tables/tables.py:287 extras/tables/tables.py:360 #: extras/tables/tables.py:478 extras/tables/tables.py:509 -#: extras/tables/tables.py:574 netbox/tables/tables.py:241 +#: extras/tables/tables.py:574 netbox/tables/tables.py:243 #: templates/extras/eventrule.html:84 templates/extras/journalentry.html:18 #: templates/extras/objectchange.html:57 tenancy/tables/contacts.py:93 #: vpn/tables/l2vpn.py:64 @@ -1766,7 +1806,7 @@ msgstr "工人" msgid "Host" msgstr "主持人" -#: core/tables/tasks.py:50 ipam/forms/filtersets.py:535 +#: core/tables/tasks.py:50 ipam/forms/filtersets.py:542 msgid "Port" msgstr "端口" @@ -1833,7 +1873,7 @@ msgid "Staging" msgstr "舞台" #: dcim/choices.py:23 dcim/choices.py:178 dcim/choices.py:223 -#: dcim/choices.py:1430 virtualization/choices.py:23 +#: dcim/choices.py:1458 virtualization/choices.py:23 #: virtualization/choices.py:48 msgid "Decommissioning" msgstr "退役" @@ -1893,7 +1933,7 @@ msgstr "已弃用" msgid "Millimeters" msgstr "毫米" -#: dcim/choices.py:115 dcim/choices.py:1452 +#: dcim/choices.py:115 dcim/choices.py:1480 msgid "Inches" msgstr "英寸" @@ -1968,7 +2008,7 @@ msgstr "从右到左" msgid "Side to rear" msgstr "从一边到另一边" -#: dcim/choices.py:198 dcim/choices.py:1225 +#: dcim/choices.py:198 dcim/choices.py:1253 msgid "Passive" msgstr "被动" @@ -1976,56 +2016,56 @@ msgstr "被动" msgid "Mixed" msgstr "混合" -#: dcim/choices.py:443 dcim/choices.py:680 +#: dcim/choices.py:447 dcim/choices.py:693 msgid "NEMA (Non-locking)" msgstr "NEMA(非锁定)" -#: dcim/choices.py:465 dcim/choices.py:702 +#: dcim/choices.py:469 dcim/choices.py:715 msgid "NEMA (Locking)" msgstr "NEMA(锁定)" -#: dcim/choices.py:488 dcim/choices.py:725 +#: dcim/choices.py:492 dcim/choices.py:738 msgid "California Style" msgstr "加州风格" -#: dcim/choices.py:496 +#: dcim/choices.py:500 msgid "International/ITA" msgstr "国际/意大利" -#: dcim/choices.py:526 dcim/choices.py:755 +#: dcim/choices.py:535 dcim/choices.py:773 msgid "Proprietary" msgstr "专有的" -#: dcim/choices.py:534 dcim/choices.py:764 dcim/choices.py:1141 -#: dcim/choices.py:1143 dcim/choices.py:1348 dcim/choices.py:1350 +#: dcim/choices.py:543 dcim/choices.py:782 dcim/choices.py:1169 +#: dcim/choices.py:1171 dcim/choices.py:1376 dcim/choices.py:1378 #: netbox/navigation/menu.py:187 msgid "Other" msgstr "其他" -#: dcim/choices.py:733 +#: dcim/choices.py:746 msgid "ITA/International" msgstr "ITA/国际" -#: dcim/choices.py:794 +#: dcim/choices.py:812 msgid "Physical" msgstr "身体的" -#: dcim/choices.py:795 dcim/choices.py:954 +#: dcim/choices.py:813 dcim/choices.py:977 msgid "Virtual" msgstr "虚拟" -#: dcim/choices.py:796 dcim/choices.py:1026 dcim/forms/bulk_edit.py:1408 -#: dcim/forms/filtersets.py:1231 dcim/forms/model_forms.py:933 +#: dcim/choices.py:814 dcim/choices.py:1049 dcim/forms/bulk_edit.py:1408 +#: dcim/forms/filtersets.py:1239 dcim/forms/model_forms.py:933 #: dcim/forms/model_forms.py:1341 netbox/navigation/menu.py:127 #: netbox/navigation/menu.py:131 templates/dcim/interface.html:210 msgid "Wireless" msgstr "无线" -#: dcim/choices.py:952 +#: dcim/choices.py:975 msgid "Virtual interfaces" msgstr "虚拟接口" -#: dcim/choices.py:955 dcim/forms/bulk_edit.py:1303 +#: dcim/choices.py:978 dcim/forms/bulk_edit.py:1303 #: dcim/forms/bulk_import.py:785 dcim/forms/model_forms.py:919 #: dcim/tables/devices.py:656 templates/dcim/interface.html:106 #: templates/virtualization/vminterface.html:43 @@ -2035,152 +2075,152 @@ msgstr "虚拟接口" msgid "Bridge" msgstr "桥" -#: dcim/choices.py:956 +#: dcim/choices.py:979 msgid "Link Aggregation Group (LAG)" msgstr "链路聚合组 (LAG)" -#: dcim/choices.py:960 +#: dcim/choices.py:983 msgid "Ethernet (fixed)" msgstr "以太网(固定)" -#: dcim/choices.py:974 +#: dcim/choices.py:997 msgid "Ethernet (modular)" msgstr "以太网(模块化)" -#: dcim/choices.py:1010 +#: dcim/choices.py:1033 msgid "Ethernet (backplane)" msgstr "以太网(背板)" -#: dcim/choices.py:1040 +#: dcim/choices.py:1063 msgid "Cellular" msgstr "蜂窝网络" -#: dcim/choices.py:1090 dcim/forms/filtersets.py:303 -#: dcim/forms/filtersets.py:737 dcim/forms/filtersets.py:874 -#: dcim/forms/filtersets.py:1426 templates/dcim/inventoryitem.html:52 +#: dcim/choices.py:1115 dcim/forms/filtersets.py:303 +#: dcim/forms/filtersets.py:738 dcim/forms/filtersets.py:882 +#: dcim/forms/filtersets.py:1434 templates/dcim/inventoryitem.html:52 #: templates/dcim/virtualchassis_edit.html:54 msgid "Serial" msgstr "序列号" -#: dcim/choices.py:1105 +#: dcim/choices.py:1130 msgid "Coaxial" msgstr "同轴" -#: dcim/choices.py:1122 +#: dcim/choices.py:1150 msgid "Stacking" msgstr "堆叠" -#: dcim/choices.py:1172 +#: dcim/choices.py:1200 msgid "Half" msgstr "一半" -#: dcim/choices.py:1173 +#: dcim/choices.py:1201 msgid "Full" msgstr "已满" -#: dcim/choices.py:1174 netbox/preferences.py:31 wireless/choices.py:480 +#: dcim/choices.py:1202 netbox/preferences.py:31 wireless/choices.py:480 msgid "Auto" msgstr "汽车" -#: dcim/choices.py:1185 +#: dcim/choices.py:1213 msgid "Access" msgstr "访问" -#: dcim/choices.py:1186 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 +#: dcim/choices.py:1214 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 #: templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "已标记" -#: dcim/choices.py:1187 +#: dcim/choices.py:1215 msgid "Tagged (All)" msgstr "已标记 (全部)" -#: dcim/choices.py:1216 +#: dcim/choices.py:1244 msgid "IEEE Standard" msgstr "IEEE 标准" -#: dcim/choices.py:1227 +#: dcim/choices.py:1255 msgid "Passive 24V (2-pair)" msgstr "被动 24V(2 对)" -#: dcim/choices.py:1228 +#: dcim/choices.py:1256 msgid "Passive 24V (4-pair)" msgstr "被动式 24V(4 对)" -#: dcim/choices.py:1229 +#: dcim/choices.py:1257 msgid "Passive 48V (2-pair)" msgstr "被动式 48V(2 对)" -#: dcim/choices.py:1230 +#: dcim/choices.py:1258 msgid "Passive 48V (4-pair)" msgstr "被动式 48V(4 对)" -#: dcim/choices.py:1292 dcim/choices.py:1388 +#: dcim/choices.py:1320 dcim/choices.py:1416 msgid "Copper" msgstr "铜" -#: dcim/choices.py:1315 +#: dcim/choices.py:1343 msgid "Fiber Optic" msgstr "光纤" -#: dcim/choices.py:1404 +#: dcim/choices.py:1432 msgid "Fiber" msgstr "纤维" -#: dcim/choices.py:1428 dcim/forms/filtersets.py:1138 +#: dcim/choices.py:1456 dcim/forms/filtersets.py:1146 msgid "Connected" msgstr "已连接" -#: dcim/choices.py:1447 +#: dcim/choices.py:1475 msgid "Kilometers" msgstr "千米" -#: dcim/choices.py:1448 templates/dcim/cable_trace.html:65 +#: dcim/choices.py:1476 templates/dcim/cable_trace.html:65 msgid "Meters" msgstr "米" -#: dcim/choices.py:1449 +#: dcim/choices.py:1477 msgid "Centimeters" msgstr "厘米" -#: dcim/choices.py:1450 +#: dcim/choices.py:1478 msgid "Miles" msgstr "英里" -#: dcim/choices.py:1451 templates/dcim/cable_trace.html:66 +#: dcim/choices.py:1479 templates/dcim/cable_trace.html:66 msgid "Feet" msgstr "英尺" -#: dcim/choices.py:1467 templates/dcim/device.html:319 +#: dcim/choices.py:1495 templates/dcim/device.html:319 #: templates/dcim/rack.html:152 msgid "Kilograms" msgstr "千克" -#: dcim/choices.py:1468 +#: dcim/choices.py:1496 msgid "Grams" msgstr "克" -#: dcim/choices.py:1469 templates/dcim/rack.html:153 +#: dcim/choices.py:1497 templates/dcim/rack.html:153 msgid "Pounds" msgstr "英镑" -#: dcim/choices.py:1470 +#: dcim/choices.py:1498 msgid "Ounces" msgstr "盎司" -#: dcim/choices.py:1516 tenancy/choices.py:17 +#: dcim/choices.py:1544 tenancy/choices.py:17 msgid "Primary" msgstr "小学" -#: dcim/choices.py:1517 +#: dcim/choices.py:1545 msgid "Redundant" msgstr "冗余" -#: dcim/choices.py:1538 +#: dcim/choices.py:1566 msgid "Single phase" msgstr "单相" -#: dcim/choices.py:1539 +#: dcim/choices.py:1567 msgid "Three-phase" msgstr "三相" @@ -2231,30 +2271,30 @@ msgid "Parent location (slug)" msgstr "家长所在地(slug)" #: dcim/filtersets.py:257 dcim/filtersets.py:333 dcim/filtersets.py:432 -#: dcim/filtersets.py:1005 dcim/filtersets.py:1331 dcim/filtersets.py:2101 +#: dcim/filtersets.py:1005 dcim/filtersets.py:1341 dcim/filtersets.py:2111 msgid "Location (ID)" msgstr "地点 (ID)" #: dcim/filtersets.py:264 dcim/filtersets.py:340 dcim/filtersets.py:439 -#: dcim/filtersets.py:1337 extras/filtersets.py:494 +#: dcim/filtersets.py:1347 extras/filtersets.py:494 msgid "Location (slug)" msgstr "位置(slug)" #: dcim/filtersets.py:354 dcim/filtersets.py:840 dcim/filtersets.py:942 -#: dcim/filtersets.py:1769 ipam/filtersets.py:381 ipam/filtersets.py:493 +#: dcim/filtersets.py:1779 ipam/filtersets.py:381 ipam/filtersets.py:493 #: ipam/filtersets.py:989 virtualization/filtersets.py:210 msgid "Role (ID)" msgstr "角色 (ID)" #: dcim/filtersets.py:360 dcim/filtersets.py:846 dcim/filtersets.py:948 -#: dcim/filtersets.py:1775 extras/filtersets.py:510 ipam/filtersets.py:387 +#: dcim/filtersets.py:1785 extras/filtersets.py:510 ipam/filtersets.py:387 #: ipam/filtersets.py:499 ipam/filtersets.py:995 #: virtualization/filtersets.py:216 msgid "Role (slug)" msgstr "角色(slug)" -#: dcim/filtersets.py:389 dcim/filtersets.py:1010 dcim/filtersets.py:1342 -#: dcim/filtersets.py:2163 +#: dcim/filtersets.py:389 dcim/filtersets.py:1010 dcim/filtersets.py:1352 +#: dcim/filtersets.py:2173 msgid "Rack (ID)" msgstr "机架 (ID)" @@ -2269,14 +2309,14 @@ msgid "User (name)" msgstr "用户(姓名)" #: dcim/filtersets.py:481 dcim/filtersets.py:620 dcim/filtersets.py:830 -#: dcim/filtersets.py:881 dcim/filtersets.py:921 dcim/filtersets.py:1233 -#: dcim/filtersets.py:1759 +#: dcim/filtersets.py:881 dcim/filtersets.py:921 dcim/filtersets.py:1243 +#: dcim/filtersets.py:1769 msgid "Manufacturer (ID)" msgstr "制造商 (ID)" #: dcim/filtersets.py:487 dcim/filtersets.py:626 dcim/filtersets.py:836 -#: dcim/filtersets.py:887 dcim/filtersets.py:927 dcim/filtersets.py:1239 -#: dcim/filtersets.py:1765 +#: dcim/filtersets.py:887 dcim/filtersets.py:927 dcim/filtersets.py:1249 +#: dcim/filtersets.py:1775 msgid "Manufacturer (slug)" msgstr "制造商(slug)" @@ -2298,37 +2338,37 @@ msgstr "有背面影像" #: dcim/filtersets.py:509 dcim/filtersets.py:630 dcim/filtersets.py:1068 #: dcim/forms/filtersets.py:466 dcim/forms/filtersets.py:562 -#: dcim/forms/filtersets.py:776 +#: dcim/forms/filtersets.py:777 msgid "Has console ports" msgstr "有控制台端口" #: dcim/filtersets.py:513 dcim/filtersets.py:634 dcim/filtersets.py:1072 #: dcim/forms/filtersets.py:473 dcim/forms/filtersets.py:569 -#: dcim/forms/filtersets.py:783 +#: dcim/forms/filtersets.py:784 msgid "Has console server ports" msgstr "有控制台服务器端口" #: dcim/filtersets.py:517 dcim/filtersets.py:638 dcim/filtersets.py:1076 #: dcim/forms/filtersets.py:480 dcim/forms/filtersets.py:576 -#: dcim/forms/filtersets.py:790 +#: dcim/forms/filtersets.py:791 msgid "Has power ports" msgstr "有电源端口" #: dcim/filtersets.py:521 dcim/filtersets.py:642 dcim/filtersets.py:1080 #: dcim/forms/filtersets.py:487 dcim/forms/filtersets.py:583 -#: dcim/forms/filtersets.py:797 +#: dcim/forms/filtersets.py:798 msgid "Has power outlets" msgstr "有电源插座" #: dcim/filtersets.py:525 dcim/filtersets.py:646 dcim/filtersets.py:1084 #: dcim/forms/filtersets.py:494 dcim/forms/filtersets.py:590 -#: dcim/forms/filtersets.py:804 +#: dcim/forms/filtersets.py:805 msgid "Has interfaces" msgstr "有接口" #: dcim/filtersets.py:529 dcim/filtersets.py:650 dcim/filtersets.py:1088 #: dcim/forms/filtersets.py:501 dcim/forms/filtersets.py:597 -#: dcim/forms/filtersets.py:811 +#: dcim/forms/filtersets.py:812 msgid "Has pass-through ports" msgstr "有直通端口" @@ -2344,19 +2384,19 @@ msgstr "有设备托架" msgid "Has inventory items" msgstr "有库存物品" -#: dcim/filtersets.py:698 dcim/filtersets.py:937 dcim/filtersets.py:1363 +#: dcim/filtersets.py:698 dcim/filtersets.py:937 dcim/filtersets.py:1373 msgid "Device type (ID)" msgstr "设备类型 (ID)" -#: dcim/filtersets.py:717 dcim/filtersets.py:1244 +#: dcim/filtersets.py:717 dcim/filtersets.py:1254 msgid "Module type (ID)" msgstr "模块类型 (ID)" -#: dcim/filtersets.py:752 dcim/filtersets.py:1514 +#: dcim/filtersets.py:752 dcim/filtersets.py:1524 msgid "Power port (ID)" msgstr "电源端口 (ID)" -#: dcim/filtersets.py:826 dcim/filtersets.py:1755 +#: dcim/filtersets.py:826 dcim/filtersets.py:1765 msgid "Parent inventory item (ID)" msgstr "父库存物品 (ID)" @@ -2382,8 +2422,8 @@ msgstr "平台 (ID)" msgid "Platform (slug)" msgstr "平台(slug)" -#: dcim/filtersets.py:999 dcim/filtersets.py:1326 dcim/filtersets.py:1853 -#: dcim/filtersets.py:2095 dcim/filtersets.py:2154 +#: dcim/filtersets.py:999 dcim/filtersets.py:1336 dcim/filtersets.py:1863 +#: dcim/filtersets.py:2105 dcim/filtersets.py:2164 msgid "Site name (slug)" msgstr "站点名称(slug)" @@ -2404,15 +2444,15 @@ msgid "Is full depth" msgstr "深度已满" #: dcim/filtersets.py:1040 dcim/forms/common.py:18 -#: dcim/forms/filtersets.py:746 dcim/forms/filtersets.py:1283 +#: dcim/forms/filtersets.py:747 dcim/forms/filtersets.py:1291 #: dcim/models/device_components.py:519 virtualization/filtersets.py:230 #: virtualization/filtersets.py:297 virtualization/forms/filtersets.py:172 #: virtualization/forms/filtersets.py:219 msgid "MAC address" msgstr "MAC 地址" -#: dcim/filtersets.py:1047 dcim/filtersets.py:1201 -#: dcim/forms/filtersets.py:755 dcim/forms/filtersets.py:841 +#: dcim/filtersets.py:1047 dcim/filtersets.py:1211 +#: dcim/forms/filtersets.py:756 dcim/forms/filtersets.py:849 #: virtualization/filtersets.py:234 virtualization/forms/filtersets.py:176 msgid "Has a primary IP" msgstr "有主 IP" @@ -2433,59 +2473,63 @@ msgstr "是虚拟机箱成员" msgid "OOB IP (ID)" msgstr "OOB IP (ID)" -#: dcim/filtersets.py:1184 +#: dcim/filtersets.py:1105 +msgid "Has virtual device context" +msgstr "有虚拟设备上下文" + +#: dcim/filtersets.py:1194 msgid "VDC (ID)" msgstr "VDC (ID)" -#: dcim/filtersets.py:1189 +#: dcim/filtersets.py:1199 msgid "Device model" msgstr "设备型号" -#: dcim/filtersets.py:1194 ipam/filtersets.py:632 vpn/filtersets.py:102 +#: dcim/filtersets.py:1204 ipam/filtersets.py:632 vpn/filtersets.py:102 #: vpn/filtersets.py:420 msgid "Interface (ID)" msgstr "接口 (ID)" -#: dcim/filtersets.py:1250 +#: dcim/filtersets.py:1260 msgid "Module type (model)" msgstr "模块类型(型号)" -#: dcim/filtersets.py:1256 +#: dcim/filtersets.py:1266 msgid "Module Bay (ID)" msgstr "模块托架 (ID)" -#: dcim/filtersets.py:1260 dcim/filtersets.py:1352 ipam/filtersets.py:611 +#: dcim/filtersets.py:1270 dcim/filtersets.py:1362 ipam/filtersets.py:611 #: ipam/filtersets.py:851 ipam/filtersets.py:1075 #: virtualization/filtersets.py:161 vpn/filtersets.py:398 msgid "Device (ID)" msgstr "设备 (ID)" -#: dcim/filtersets.py:1348 +#: dcim/filtersets.py:1358 msgid "Rack (name)" msgstr "机架(名称)" -#: dcim/filtersets.py:1358 ipam/filtersets.py:606 ipam/filtersets.py:846 +#: dcim/filtersets.py:1368 ipam/filtersets.py:606 ipam/filtersets.py:846 #: ipam/filtersets.py:1081 vpn/filtersets.py:393 msgid "Device (name)" msgstr "设备(名称)" -#: dcim/filtersets.py:1369 +#: dcim/filtersets.py:1379 msgid "Device type (model)" msgstr "设备类型(型号)" -#: dcim/filtersets.py:1374 +#: dcim/filtersets.py:1384 msgid "Device role (ID)" msgstr "设备角色 (ID)" -#: dcim/filtersets.py:1380 +#: dcim/filtersets.py:1390 msgid "Device role (slug)" msgstr "设备角色(slug)" -#: dcim/filtersets.py:1385 +#: dcim/filtersets.py:1395 msgid "Virtual Chassis (ID)" msgstr "虚拟机箱 (ID)" -#: dcim/filtersets.py:1391 dcim/forms/filtersets.py:107 +#: dcim/filtersets.py:1401 dcim/forms/filtersets.py:107 #: dcim/tables/devices.py:211 netbox/navigation/menu.py:66 #: templates/dcim/device.html:119 templates/dcim/device_edit.html:93 #: templates/dcim/virtualchassis.html:20 @@ -2494,37 +2538,37 @@ msgstr "虚拟机箱 (ID)" msgid "Virtual Chassis" msgstr "虚拟机箱" -#: dcim/filtersets.py:1411 +#: dcim/filtersets.py:1421 msgid "Module (ID)" msgstr "模块 (ID)" -#: dcim/filtersets.py:1418 +#: dcim/filtersets.py:1428 msgid "Cable (ID)" msgstr "电缆 (ID)" -#: dcim/filtersets.py:1527 ipam/forms/bulk_import.py:188 +#: dcim/filtersets.py:1537 ipam/forms/bulk_import.py:188 #: vpn/forms/bulk_import.py:308 msgid "Assigned VLAN" msgstr "分配的 VLAN" -#: dcim/filtersets.py:1531 +#: dcim/filtersets.py:1541 msgid "Assigned VID" msgstr "分配的 VID" -#: dcim/filtersets.py:1536 dcim/forms/bulk_edit.py:1382 -#: dcim/forms/bulk_import.py:836 dcim/forms/filtersets.py:1326 +#: dcim/filtersets.py:1546 dcim/forms/bulk_edit.py:1382 +#: dcim/forms/bulk_import.py:836 dcim/forms/filtersets.py:1334 #: dcim/forms/model_forms.py:1322 dcim/models/device_components.py:712 -#: dcim/tables/devices.py:618 ipam/filtersets.py:316 ipam/filtersets.py:327 +#: dcim/tables/devices.py:622 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:227 ipam/forms/bulk_edit.py:282 #: ipam/forms/bulk_edit.py:324 ipam/forms/bulk_import.py:156 #: ipam/forms/bulk_import.py:242 ipam/forms/bulk_import.py:278 -#: ipam/forms/filtersets.py:67 ipam/forms/filtersets.py:171 -#: ipam/forms/filtersets.py:302 ipam/forms/model_forms.py:60 +#: ipam/forms/filtersets.py:67 ipam/forms/filtersets.py:172 +#: ipam/forms/filtersets.py:309 ipam/forms/model_forms.py:60 #: ipam/forms/model_forms.py:200 ipam/forms/model_forms.py:245 -#: ipam/forms/model_forms.py:298 ipam/forms/model_forms.py:420 -#: ipam/forms/model_forms.py:434 ipam/forms/model_forms.py:448 -#: ipam/models/ip.py:232 ipam/models/ip.py:511 ipam/models/ip.py:719 +#: ipam/forms/model_forms.py:298 ipam/forms/model_forms.py:429 +#: ipam/forms/model_forms.py:443 ipam/forms/model_forms.py:457 +#: ipam/models/ip.py:233 ipam/models/ip.py:512 ipam/models/ip.py:720 #: ipam/models/vrfs.py:62 ipam/tables/ip.py:241 ipam/tables/ip.py:306 #: ipam/tables/ip.py:356 ipam/tables/ip.py:445 #: templates/dcim/interface.html:133 templates/ipam/ipaddress.html:18 @@ -2540,18 +2584,18 @@ msgstr "分配的 VID" msgid "VRF" msgstr "VRF" -#: dcim/filtersets.py:1542 ipam/filtersets.py:322 ipam/filtersets.py:333 +#: dcim/filtersets.py:1552 ipam/filtersets.py:322 ipam/filtersets.py:333 #: ipam/filtersets.py:489 ipam/filtersets.py:590 ipam/filtersets.py:601 msgid "VRF (RD)" msgstr "VRF(红色)" -#: dcim/filtersets.py:1547 ipam/filtersets.py:1016 vpn/filtersets.py:361 +#: dcim/filtersets.py:1557 ipam/filtersets.py:1016 vpn/filtersets.py:361 msgid "L2VPN (ID)" msgstr "L2VPN (ID)" -#: dcim/filtersets.py:1553 dcim/forms/filtersets.py:1331 -#: dcim/tables/devices.py:566 ipam/filtersets.py:1022 -#: ipam/forms/filtersets.py:518 ipam/tables/vlans.py:133 +#: dcim/filtersets.py:1563 dcim/forms/filtersets.py:1339 +#: dcim/tables/devices.py:570 ipam/filtersets.py:1022 +#: ipam/forms/filtersets.py:525 ipam/tables/vlans.py:133 #: templates/dcim/interface.html:93 templates/ipam/vlan.html:66 #: templates/vpn/l2vpntermination.html:12 #: virtualization/forms/filtersets.py:229 vpn/forms/bulk_import.py:280 @@ -2560,82 +2604,82 @@ msgstr "L2VPN (ID)" msgid "L2VPN" msgstr "L2VPN" -#: dcim/filtersets.py:1585 +#: dcim/filtersets.py:1595 msgid "Virtual Chassis Interfaces for Device" msgstr "设备的虚拟机箱接口" -#: dcim/filtersets.py:1590 +#: dcim/filtersets.py:1600 msgid "Virtual Chassis Interfaces for Device (ID)" msgstr "设备的虚拟机箱接口 (ID)" -#: dcim/filtersets.py:1594 +#: dcim/filtersets.py:1604 msgid "Kind of interface" msgstr "接口的种类" -#: dcim/filtersets.py:1599 virtualization/filtersets.py:289 +#: dcim/filtersets.py:1609 virtualization/filtersets.py:289 msgid "Parent interface (ID)" msgstr "父接口 (ID)" -#: dcim/filtersets.py:1604 virtualization/filtersets.py:294 +#: dcim/filtersets.py:1614 virtualization/filtersets.py:294 msgid "Bridged interface (ID)" msgstr "桥接接口 (ID)" -#: dcim/filtersets.py:1609 +#: dcim/filtersets.py:1619 msgid "LAG interface (ID)" msgstr "LAG 接口 (ID)" -#: dcim/filtersets.py:1636 dcim/filtersets.py:1648 -#: dcim/forms/filtersets.py:1243 dcim/forms/model_forms.py:1634 +#: dcim/filtersets.py:1646 dcim/filtersets.py:1658 +#: dcim/forms/filtersets.py:1251 dcim/forms/model_forms.py:1634 #: templates/dcim/virtualdevicecontext.html:15 msgid "Virtual Device Context" msgstr "虚拟设备上下文" -#: dcim/filtersets.py:1642 +#: dcim/filtersets.py:1652 msgid "Virtual Device Context (Identifier)" msgstr "虚拟设备上下文(标识符)" -#: dcim/filtersets.py:1653 templates/wireless/wirelesslan.html:11 +#: dcim/filtersets.py:1663 templates/wireless/wirelesslan.html:11 #: wireless/forms/model_forms.py:53 msgid "Wireless LAN" msgstr "无线局域网" -#: dcim/filtersets.py:1657 dcim/tables/devices.py:605 +#: dcim/filtersets.py:1667 dcim/tables/devices.py:609 msgid "Wireless link" msgstr "无线链接" -#: dcim/filtersets.py:1727 +#: dcim/filtersets.py:1737 msgid "Installed module (ID)" msgstr "已安装的模块 (ID)" -#: dcim/filtersets.py:1738 +#: dcim/filtersets.py:1748 msgid "Installed device (ID)" msgstr "已安装的设备 (ID)" -#: dcim/filtersets.py:1744 +#: dcim/filtersets.py:1754 msgid "Installed device (name)" msgstr "已安装的设备(名称)" -#: dcim/filtersets.py:1810 +#: dcim/filtersets.py:1820 msgid "Master (ID)" msgstr "大师 (ID)" -#: dcim/filtersets.py:1816 +#: dcim/filtersets.py:1826 msgid "Master (name)" msgstr "主人(姓名)" -#: dcim/filtersets.py:1858 tenancy/filtersets.py:246 +#: dcim/filtersets.py:1868 tenancy/filtersets.py:246 msgid "Tenant (ID)" msgstr "租户 (ID)" -#: dcim/filtersets.py:1864 extras/filtersets.py:570 tenancy/filtersets.py:252 +#: dcim/filtersets.py:1874 extras/filtersets.py:570 tenancy/filtersets.py:252 msgid "Tenant (slug)" msgstr "租户(slug)" -#: dcim/filtersets.py:1900 dcim/forms/filtersets.py:988 +#: dcim/filtersets.py:1910 dcim/forms/filtersets.py:996 msgid "Unterminated" msgstr "未终止" -#: dcim/filtersets.py:2158 +#: dcim/filtersets.py:2168 msgid "Power panel (ID)" msgstr "电源面板 (ID)" @@ -2643,13 +2687,13 @@ msgstr "电源面板 (ID)" #: extras/forms/model_forms.py:443 extras/forms/model_forms.py:495 #: netbox/forms/base.py:84 netbox/forms/mixins.py:81 #: netbox/tables/columns.py:458 -#: templates/circuits/inc/circuit_termination.html:118 +#: 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 msgid "Tags" msgstr "标签" -#: dcim/forms/bulk_create.py:112 dcim/forms/filtersets.py:1388 +#: dcim/forms/bulk_create.py:112 dcim/forms/filtersets.py:1396 #: dcim/forms/model_forms.py:431 dcim/forms/model_forms.py:486 #: dcim/forms/object_create.py:197 dcim/forms/object_create.py:353 #: dcim/tables/devices.py:170 dcim/tables/devices.py:702 @@ -2669,7 +2713,7 @@ msgstr "支持字母数字范围。(必须与正在创建的名称数量相匹 #: dcim/forms/bulk_edit.py:116 dcim/forms/bulk_import.py:99 #: dcim/forms/model_forms.py:116 dcim/tables/sites.py:89 #: ipam/filtersets.py:985 ipam/forms/bulk_edit.py:531 -#: ipam/forms/bulk_import.py:444 ipam/forms/model_forms.py:517 +#: ipam/forms/bulk_import.py:444 ipam/forms/model_forms.py:526 #: ipam/tables/fhrp.py:67 ipam/tables/vlans.py:118 ipam/tables/vlans.py:221 #: templates/dcim/interface.html:284 templates/dcim/site.html:36 #: templates/ipam/inc/panels/fhrp_groups.html:23 templates/ipam/vlan.html:27 @@ -2716,7 +2760,7 @@ msgstr "时区" #: dcim/forms/bulk_edit.py:267 dcim/forms/bulk_edit.py:1160 #: dcim/forms/bulk_edit.py:1548 dcim/forms/bulk_import.py:207 #: dcim/forms/bulk_import.py:1021 dcim/forms/filtersets.py:300 -#: dcim/forms/filtersets.py:705 dcim/forms/filtersets.py:1418 +#: dcim/forms/filtersets.py:706 dcim/forms/filtersets.py:1426 #: dcim/forms/model_forms.py:219 dcim/forms/model_forms.py:1015 #: dcim/forms/model_forms.py:1454 dcim/forms/object_import.py:181 #: dcim/tables/devices.py:174 dcim/tables/devices.py:810 @@ -2726,10 +2770,10 @@ msgstr "时区" #: ipam/forms/bulk_edit.py:343 ipam/forms/bulk_edit.py:549 #: ipam/forms/bulk_import.py:196 ipam/forms/bulk_import.py:261 #: ipam/forms/bulk_import.py:297 ipam/forms/bulk_import.py:463 -#: ipam/forms/filtersets.py:236 ipam/forms/filtersets.py:282 -#: ipam/forms/filtersets.py:353 ipam/forms/filtersets.py:509 +#: ipam/forms/filtersets.py:237 ipam/forms/filtersets.py:289 +#: ipam/forms/filtersets.py:360 ipam/forms/filtersets.py:516 #: ipam/forms/model_forms.py:186 ipam/forms/model_forms.py:219 -#: ipam/forms/model_forms.py:248 ipam/forms/model_forms.py:680 +#: ipam/forms/model_forms.py:248 ipam/forms/model_forms.py:689 #: ipam/tables/ip.py:257 ipam/tables/ip.py:313 ipam/tables/ip.py:363 #: ipam/tables/vlans.py:126 ipam/tables/vlans.py:230 #: templates/dcim/device.html:179 @@ -2762,8 +2806,8 @@ msgid "Serial Number" msgstr "序列号" #: dcim/forms/bulk_edit.py:277 dcim/forms/filtersets.py:307 -#: dcim/forms/filtersets.py:741 dcim/forms/filtersets.py:878 -#: dcim/forms/filtersets.py:1430 +#: dcim/forms/filtersets.py:742 dcim/forms/filtersets.py:886 +#: dcim/forms/filtersets.py:1438 msgid "Asset tag" msgstr "资产标签" @@ -2834,14 +2878,14 @@ msgstr "重量单位" #: dcim/forms/bulk_import.py:498 dcim/forms/bulk_import.py:1309 #: dcim/forms/bulk_import.py:1313 dcim/forms/filtersets.py:102 #: dcim/forms/filtersets.py:340 dcim/forms/filtersets.py:354 -#: dcim/forms/filtersets.py:392 dcim/forms/filtersets.py:700 -#: dcim/forms/filtersets.py:946 dcim/forms/filtersets.py:1078 +#: dcim/forms/filtersets.py:392 dcim/forms/filtersets.py:701 +#: dcim/forms/filtersets.py:954 dcim/forms/filtersets.py:1086 #: dcim/forms/model_forms.py:226 dcim/forms/model_forms.py:248 #: dcim/forms/model_forms.py:422 dcim/forms/model_forms.py:700 #: dcim/forms/object_create.py:400 dcim/tables/devices.py:166 #: dcim/tables/power.py:70 dcim/tables/racks.py:148 -#: ipam/forms/bulk_edit.py:465 ipam/forms/filtersets.py:435 -#: ipam/forms/model_forms.py:601 templates/dcim/device.html:29 +#: ipam/forms/bulk_edit.py:465 ipam/forms/filtersets.py:442 +#: ipam/forms/model_forms.py:610 templates/dcim/device.html:29 #: 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 @@ -2853,7 +2897,7 @@ msgstr "机架" #: dcim/forms/bulk_edit.py:349 dcim/forms/bulk_edit.py:628 #: dcim/forms/filtersets.py:248 dcim/forms/filtersets.py:333 #: dcim/forms/filtersets.py:416 dcim/forms/filtersets.py:543 -#: dcim/forms/filtersets.py:651 dcim/forms/filtersets.py:853 +#: dcim/forms/filtersets.py:651 dcim/forms/filtersets.py:861 #: dcim/forms/model_forms.py:610 dcim/forms/model_forms.py:1524 #: templates/dcim/device_edit.html:20 msgid "Hardware" @@ -2866,8 +2910,8 @@ msgstr "硬件" #: dcim/forms/bulk_import.py:353 dcim/forms/bulk_import.py:395 #: dcim/forms/bulk_import.py:431 dcim/forms/bulk_import.py:1027 #: dcim/forms/filtersets.py:429 dcim/forms/filtersets.py:554 -#: dcim/forms/filtersets.py:630 dcim/forms/filtersets.py:710 -#: dcim/forms/filtersets.py:858 dcim/forms/filtersets.py:1423 +#: dcim/forms/filtersets.py:630 dcim/forms/filtersets.py:711 +#: dcim/forms/filtersets.py:866 dcim/forms/filtersets.py:1431 #: dcim/forms/model_forms.py:281 dcim/forms/model_forms.py:293 #: dcim/forms/model_forms.py:339 dcim/forms/model_forms.py:379 #: dcim/forms/model_forms.py:1020 dcim/forms/model_forms.py:1459 @@ -2901,7 +2945,7 @@ msgstr "排除在使用范围之外" #: dcim/forms/bulk_edit.py:431 dcim/forms/bulk_edit.py:603 #: dcim/forms/bulk_import.py:525 dcim/forms/filtersets.py:446 -#: dcim/forms/filtersets.py:732 templates/dcim/device.html:97 +#: dcim/forms/filtersets.py:733 templates/dcim/device.html:97 #: templates/dcim/devicetype.html:65 msgid "Airflow" msgstr "气流" @@ -2928,7 +2972,7 @@ msgstr "虚拟机角色" #: dcim/forms/bulk_import.py:380 dcim/forms/bulk_import.py:402 #: dcim/forms/bulk_import.py:406 dcim/forms/bulk_import.py:531 #: dcim/forms/bulk_import.py:535 dcim/forms/filtersets.py:619 -#: dcim/forms/filtersets.py:635 dcim/forms/filtersets.py:751 +#: dcim/forms/filtersets.py:635 dcim/forms/filtersets.py:752 #: dcim/forms/model_forms.py:358 dcim/forms/model_forms.py:384 #: dcim/forms/model_forms.py:495 virtualization/forms/bulk_import.py:132 #: virtualization/forms/bulk_import.py:133 @@ -2950,7 +2994,7 @@ msgid "Device role" msgstr "设备角色" #: dcim/forms/bulk_edit.py:593 dcim/forms/bulk_import.py:443 -#: dcim/forms/filtersets.py:724 dcim/forms/model_forms.py:394 +#: dcim/forms/filtersets.py:725 dcim/forms/model_forms.py:394 #: dcim/forms/model_forms.py:456 dcim/tables/devices.py:187 #: extras/filtersets.py:515 templates/dcim/device.html:183 #: templates/dcim/platform.html:26 @@ -2972,28 +3016,28 @@ msgstr "平台" #: dcim/forms/bulk_import.py:956 dcim/forms/bulk_import.py:968 #: dcim/forms/bulk_import.py:1016 dcim/forms/bulk_import.py:1373 #: dcim/forms/connections.py:24 dcim/forms/filtersets.py:129 -#: dcim/forms/filtersets.py:832 dcim/forms/filtersets.py:962 -#: dcim/forms/filtersets.py:1152 dcim/forms/filtersets.py:1174 -#: dcim/forms/filtersets.py:1196 dcim/forms/filtersets.py:1213 -#: dcim/forms/filtersets.py:1233 dcim/forms/filtersets.py:1341 -#: dcim/forms/filtersets.py:1363 dcim/forms/filtersets.py:1384 -#: dcim/forms/filtersets.py:1399 dcim/forms/filtersets.py:1413 -#: dcim/forms/filtersets.py:1476 dcim/forms/filtersets.py:1500 -#: dcim/forms/filtersets.py:1524 dcim/forms/model_forms.py:573 +#: dcim/forms/filtersets.py:840 dcim/forms/filtersets.py:970 +#: dcim/forms/filtersets.py:1160 dcim/forms/filtersets.py:1182 +#: dcim/forms/filtersets.py:1204 dcim/forms/filtersets.py:1221 +#: dcim/forms/filtersets.py:1241 dcim/forms/filtersets.py:1349 +#: dcim/forms/filtersets.py:1371 dcim/forms/filtersets.py:1392 +#: dcim/forms/filtersets.py:1407 dcim/forms/filtersets.py:1421 +#: dcim/forms/filtersets.py:1484 dcim/forms/filtersets.py:1508 +#: dcim/forms/filtersets.py:1532 dcim/forms/model_forms.py:573 #: dcim/forms/model_forms.py:794 dcim/forms/model_forms.py:1153 #: dcim/forms/model_forms.py:1608 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:290 -#: dcim/tables/devices.py:355 dcim/tables/devices.py:399 -#: dcim/tables/devices.py:444 dcim/tables/devices.py:498 -#: dcim/tables/devices.py:590 dcim/tables/devices.py:692 +#: dcim/tables/devices.py:359 dcim/tables/devices.py:403 +#: dcim/tables/devices.py:448 dcim/tables/devices.py:502 +#: dcim/tables/devices.py:594 dcim/tables/devices.py:692 #: dcim/tables/devices.py:752 dcim/tables/devices.py:802 #: dcim/tables/devices.py:862 dcim/tables/devices.py:914 #: dcim/tables/devices.py:1040 dcim/tables/modules.py:52 #: extras/forms/filtersets.py:330 ipam/forms/bulk_import.py:303 -#: ipam/forms/bulk_import.py:489 ipam/forms/filtersets.py:551 -#: ipam/forms/model_forms.py:317 ipam/forms/model_forms.py:716 -#: ipam/forms/model_forms.py:749 ipam/forms/model_forms.py:775 +#: ipam/forms/bulk_import.py:489 ipam/forms/filtersets.py:558 +#: ipam/forms/model_forms.py:317 ipam/forms/model_forms.py:725 +#: ipam/forms/model_forms.py:758 ipam/forms/model_forms.py:784 #: ipam/tables/vlans.py:176 templates/dcim/consoleport.html:20 #: templates/dcim/consoleserverport.html:20 templates/dcim/device.html:14 #: templates/dcim/device.html:128 templates/dcim/device_edit.html:10 @@ -3048,13 +3092,13 @@ msgstr "模块类型" msgid "Label" msgstr "标签" -#: dcim/forms/bulk_edit.py:706 dcim/forms/filtersets.py:979 +#: dcim/forms/bulk_edit.py:706 dcim/forms/filtersets.py:987 #: templates/dcim/cable.html:50 msgid "Length" msgstr "长度" #: dcim/forms/bulk_edit.py:711 dcim/forms/bulk_import.py:1174 -#: dcim/forms/bulk_import.py:1177 dcim/forms/filtersets.py:983 +#: dcim/forms/bulk_import.py:1177 dcim/forms/filtersets.py:991 msgid "Length unit" msgstr "长度单位" @@ -3063,41 +3107,34 @@ msgid "Domain" msgstr "域" #: dcim/forms/bulk_edit.py:803 dcim/forms/bulk_import.py:1296 -#: dcim/forms/filtersets.py:1069 dcim/forms/model_forms.py:695 +#: dcim/forms/filtersets.py:1077 dcim/forms/model_forms.py:695 msgid "Power panel" msgstr "电源面板" #: dcim/forms/bulk_edit.py:825 dcim/forms/bulk_import.py:1332 -#: dcim/forms/filtersets.py:1091 templates/dcim/powerfeed.html:83 +#: dcim/forms/filtersets.py:1099 templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "供应" #: dcim/forms/bulk_edit.py:831 dcim/forms/bulk_import.py:1337 -#: dcim/forms/filtersets.py:1096 templates/dcim/powerfeed.html:95 +#: dcim/forms/filtersets.py:1104 templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "阶段" -#: dcim/forms/bulk_edit.py:837 dcim/forms/filtersets.py:1101 +#: dcim/forms/bulk_edit.py:837 dcim/forms/filtersets.py:1109 #: templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "电压" -#: dcim/forms/bulk_edit.py:841 dcim/forms/filtersets.py:1105 +#: dcim/forms/bulk_edit.py:841 dcim/forms/filtersets.py:1113 #: templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "安培数" -#: dcim/forms/bulk_edit.py:845 dcim/forms/filtersets.py:1109 +#: dcim/forms/bulk_edit.py:845 dcim/forms/filtersets.py:1117 msgid "Max utilization" msgstr "最大利用率" -#: dcim/forms/bulk_edit.py:849 dcim/forms/bulk_edit.py:1208 -#: dcim/forms/bulk_edit.py:1225 dcim/forms/bulk_edit.py:1242 -#: dcim/forms/bulk_edit.py:1260 dcim/forms/bulk_edit.py:1348 -#: dcim/forms/bulk_edit.py:1487 dcim/forms/bulk_edit.py:1504 -msgid "Mark connected" -msgstr "标记已连接" - #: dcim/forms/bulk_edit.py:934 msgid "Maximum draw" msgstr "最大抽奖量" @@ -3131,7 +3168,7 @@ msgid "Management only" msgstr "仅限管理" #: dcim/forms/bulk_edit.py:1037 dcim/forms/bulk_edit.py:1339 -#: dcim/forms/bulk_import.py:821 dcim/forms/filtersets.py:1292 +#: dcim/forms/bulk_import.py:821 dcim/forms/filtersets.py:1300 #: dcim/forms/object_import.py:90 #: dcim/models/device_component_templates.py:411 #: dcim/models/device_components.py:671 @@ -3139,14 +3176,14 @@ msgid "PoE mode" msgstr "PoE 模式" #: dcim/forms/bulk_edit.py:1043 dcim/forms/bulk_edit.py:1345 -#: dcim/forms/bulk_import.py:827 dcim/forms/filtersets.py:1297 +#: dcim/forms/bulk_import.py:827 dcim/forms/filtersets.py:1305 #: dcim/forms/object_import.py:95 #: dcim/models/device_component_templates.py:417 #: dcim/models/device_components.py:677 msgid "PoE type" msgstr "PoE 类型" -#: dcim/forms/bulk_edit.py:1049 dcim/forms/filtersets.py:1302 +#: dcim/forms/bulk_edit.py:1049 dcim/forms/filtersets.py:1310 #: dcim/forms/object_import.py:100 msgid "Wireless role" msgstr "无线角色" @@ -3171,10 +3208,10 @@ msgid "Virtual device contexts" msgstr "虚拟设备上下文" #: dcim/forms/bulk_edit.py:1324 dcim/forms/bulk_import.py:659 -#: dcim/forms/bulk_import.py:685 dcim/forms/filtersets.py:1161 -#: dcim/forms/filtersets.py:1183 dcim/forms/filtersets.py:1256 -#: dcim/tables/devices.py:602 -#: templates/circuits/inc/circuit_termination.html:93 +#: dcim/forms/bulk_import.py:685 dcim/forms/filtersets.py:1169 +#: dcim/forms/filtersets.py:1191 dcim/forms/filtersets.py:1264 +#: dcim/tables/devices.py:606 +#: templates/circuits/inc/circuit_termination_fields.html:67 #: templates/dcim/consoleport.html:40 templates/dcim/consoleserverport.html:40 msgid "Speed" msgstr "速度" @@ -3191,20 +3228,20 @@ msgid "Mode" msgstr "模式" #: dcim/forms/bulk_edit.py:1361 dcim/forms/model_forms.py:1299 -#: ipam/forms/bulk_import.py:177 ipam/forms/filtersets.py:498 +#: ipam/forms/bulk_import.py:177 ipam/forms/filtersets.py:505 #: ipam/models/vlans.py:84 virtualization/forms/bulk_edit.py:240 #: virtualization/forms/model_forms.py:321 msgid "VLAN group" msgstr "VLAN 组" #: dcim/forms/bulk_edit.py:1369 dcim/forms/model_forms.py:1304 -#: dcim/tables/devices.py:575 virtualization/forms/bulk_edit.py:248 +#: dcim/tables/devices.py:579 virtualization/forms/bulk_edit.py:248 #: virtualization/forms/model_forms.py:326 msgid "Untagged VLAN" msgstr "未标记的 VLAN" #: dcim/forms/bulk_edit.py:1377 dcim/forms/model_forms.py:1313 -#: dcim/tables/devices.py:581 virtualization/forms/bulk_edit.py:256 +#: dcim/tables/devices.py:585 virtualization/forms/bulk_edit.py:256 #: virtualization/forms/model_forms.py:335 msgid "Tagged VLANs" msgstr "标记的 VLAN" @@ -3214,12 +3251,12 @@ msgid "Wireless LAN group" msgstr "无线局域网组" #: dcim/forms/bulk_edit.py:1392 dcim/forms/model_forms.py:1291 -#: dcim/tables/devices.py:611 netbox/navigation/menu.py:133 +#: dcim/tables/devices.py:615 netbox/navigation/menu.py:133 #: templates/dcim/interface.html:280 wireless/tables/wirelesslan.py:24 msgid "Wireless LANs" msgstr "无线局域网" -#: dcim/forms/bulk_edit.py:1401 dcim/forms/filtersets.py:1229 +#: dcim/forms/bulk_edit.py:1401 dcim/forms/filtersets.py:1237 #: dcim/forms/model_forms.py:1334 ipam/forms/bulk_edit.py:271 #: ipam/forms/bulk_edit.py:362 ipam/forms/filtersets.py:169 #: templates/dcim/interface.html:122 templates/ipam/prefix.html:95 @@ -3232,7 +3269,7 @@ msgstr "寻址" msgid "Operation" msgstr "操作" -#: dcim/forms/bulk_edit.py:1403 dcim/forms/filtersets.py:1230 +#: dcim/forms/bulk_edit.py:1403 dcim/forms/filtersets.py:1238 #: dcim/forms/model_forms.py:932 dcim/forms/model_forms.py:1337 msgid "PoE" msgstr "PoE" @@ -3388,8 +3425,8 @@ msgstr "虚拟机箱" #: dcim/forms/bulk_import.py:462 dcim/forms/model_forms.py:465 #: dcim/tables/devices.py:207 extras/filtersets.py:548 #: extras/forms/filtersets.py:331 ipam/forms/bulk_edit.py:479 -#: ipam/forms/filtersets.py:408 ipam/forms/filtersets.py:452 -#: ipam/forms/model_forms.py:618 templates/dcim/device.html:231 +#: ipam/forms/filtersets.py:415 ipam/forms/filtersets.py:459 +#: ipam/forms/model_forms.py:627 templates/dcim/device.html:231 #: templates/virtualization/cluster.html:10 #: templates/virtualization/virtualmachine.html:88 #: templates/virtualization/virtualmachine.html:97 @@ -3528,7 +3565,7 @@ msgstr "VDC 名称用逗号分隔,用双引号括起来。示例:" msgid "Physical medium" msgstr "物理介质" -#: dcim/forms/bulk_import.py:813 dcim/forms/filtersets.py:1263 +#: dcim/forms/bulk_import.py:813 dcim/forms/filtersets.py:1271 msgid "Duplex" msgstr "双工" @@ -3546,8 +3583,8 @@ msgstr "IEEE 802.1Q 运行模式(适用于 L2 接口)" #: dcim/forms/bulk_import.py:840 ipam/forms/bulk_import.py:160 #: ipam/forms/bulk_import.py:246 ipam/forms/bulk_import.py:282 -#: ipam/forms/filtersets.py:200 ipam/forms/filtersets.py:270 -#: ipam/forms/filtersets.py:329 virtualization/forms/bulk_import.py:175 +#: ipam/forms/filtersets.py:201 ipam/forms/filtersets.py:277 +#: ipam/forms/filtersets.py:336 virtualization/forms/bulk_import.py:175 msgid "Assigned VRF" msgstr "已分配的 VRF" @@ -3770,29 +3807,33 @@ msgstr "组件" msgid "Subdevice role" msgstr "子设备角色" -#: dcim/forms/filtersets.py:718 +#: dcim/forms/filtersets.py:719 msgid "Model" msgstr "模型" -#: dcim/forms/filtersets.py:762 +#: dcim/forms/filtersets.py:763 msgid "Has an OOB IP" msgstr "有 OOB IP" -#: dcim/forms/filtersets.py:769 +#: dcim/forms/filtersets.py:770 msgid "Virtual chassis member" msgstr "虚拟机箱成员" -#: dcim/forms/filtersets.py:1121 +#: dcim/forms/filtersets.py:819 +msgid "Has virtual device contexts" +msgstr "有虚拟设备上下文" + +#: dcim/forms/filtersets.py:1129 msgid "Cabled" msgstr "电缆" -#: dcim/forms/filtersets.py:1128 +#: dcim/forms/filtersets.py:1136 msgid "Occupied" msgstr "已占领" -#: dcim/forms/filtersets.py:1153 dcim/forms/filtersets.py:1175 -#: dcim/forms/filtersets.py:1197 dcim/forms/filtersets.py:1214 -#: dcim/forms/filtersets.py:1234 dcim/tables/devices.py:348 +#: dcim/forms/filtersets.py:1161 dcim/forms/filtersets.py:1183 +#: dcim/forms/filtersets.py:1205 dcim/forms/filtersets.py:1222 +#: dcim/forms/filtersets.py:1242 dcim/tables/devices.py:352 #: 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 @@ -3800,40 +3841,40 @@ msgstr "已占领" msgid "Connection" msgstr "连接" -#: dcim/forms/filtersets.py:1246 extras/forms/bulk_edit.py:316 +#: dcim/forms/filtersets.py:1254 extras/forms/bulk_edit.py:316 #: extras/forms/bulk_import.py:242 extras/forms/filtersets.py:476 #: extras/forms/model_forms.py:551 extras/tables/tables.py:512 #: templates/extras/journalentry.html:30 msgid "Kind" msgstr "善良" -#: dcim/forms/filtersets.py:1275 +#: dcim/forms/filtersets.py:1283 msgid "Mgmt only" msgstr "仅限管理" -#: dcim/forms/filtersets.py:1287 dcim/forms/model_forms.py:1327 +#: dcim/forms/filtersets.py:1295 dcim/forms/model_forms.py:1327 #: dcim/models/device_components.py:630 templates/dcim/interface.html:129 msgid "WWN" msgstr "WWN" -#: dcim/forms/filtersets.py:1307 +#: dcim/forms/filtersets.py:1315 msgid "Wireless channel" msgstr "无线频道" -#: dcim/forms/filtersets.py:1311 +#: dcim/forms/filtersets.py:1319 msgid "Channel frequency (MHz)" msgstr "信道频率 (MHz)" -#: dcim/forms/filtersets.py:1315 +#: dcim/forms/filtersets.py:1323 msgid "Channel width (MHz)" msgstr "信道宽度 (MHz)" -#: dcim/forms/filtersets.py:1319 templates/dcim/interface.html:85 +#: dcim/forms/filtersets.py:1327 templates/dcim/interface.html:85 msgid "Transmit power (dBm)" msgstr "发射功率 (dBm)" -#: dcim/forms/filtersets.py:1342 dcim/forms/filtersets.py:1364 -#: dcim/tables/devices.py:320 templates/dcim/cable.html:12 +#: dcim/forms/filtersets.py:1350 dcim/forms/filtersets.py:1372 +#: dcim/tables/devices.py:324 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 @@ -3841,7 +3882,7 @@ msgstr "发射功率 (dBm)" msgid "Cable" msgstr "电缆" -#: dcim/forms/filtersets.py:1434 dcim/tables/devices.py:933 +#: dcim/forms/filtersets.py:1442 dcim/tables/devices.py:933 msgid "Discovered" msgstr "已发现" @@ -3959,7 +4000,7 @@ msgstr "后置端口模板" #: dcim/tables/connections.py:65 ipam/forms/bulk_import.py:317 #: ipam/forms/model_forms.py:278 ipam/forms/model_forms.py:287 #: ipam/tables/fhrp.py:64 ipam/tables/ip.py:368 ipam/tables/vlans.py:165 -#: templates/circuits/inc/circuit_termination.html:77 +#: 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 @@ -3987,7 +4028,7 @@ msgid "Console Server Port" msgstr "控制台服务器端口" #: dcim/forms/model_forms.py:1092 dcim/forms/model_forms.py:1530 -#: templates/circuits/inc/circuit_termination.html:78 +#: 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 @@ -3996,7 +4037,7 @@ msgstr "前端口" #: dcim/forms/model_forms.py:1093 dcim/forms/model_forms.py:1531 #: dcim/tables/devices.py:705 -#: templates/circuits/inc/circuit_termination.html:79 +#: 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 @@ -4005,7 +4046,7 @@ msgid "Rear Port" msgstr "后端口" #: dcim/forms/model_forms.py:1094 dcim/forms/model_forms.py:1532 -#: dcim/tables/connections.py:46 dcim/tables/devices.py:505 +#: dcim/tables/connections.py:46 dcim/tables/devices.py:509 #: templates/dcim/poweroutlet.html:44 templates/dcim/powerport.html:17 msgid "Power Port" msgstr "电源端口" @@ -5204,7 +5245,7 @@ msgstr "主 IP 地址必须属于分配设备上的接口。" #: dcim/models/mixins.py:15 extras/models/configs.py:41 #: extras/models/models.py:341 extras/models/models.py:550 -#: extras/models/search.py:48 ipam/models/ip.py:193 +#: extras/models/search.py:48 ipam/models/ip.py:194 msgid "weight" msgstr "重量" @@ -5685,28 +5726,37 @@ msgstr "库存物品" msgid "Module Bay" msgstr "模块托架" -#: dcim/tables/devices.py:326 +#: dcim/tables/devices.py:318 dcim/tables/devicetypes.py:48 +#: dcim/tables/devicetypes.py:140 dcim/views.py:1081 dcim/views.py:2024 +#: netbox/navigation/menu.py:90 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 +msgid "Inventory Items" +msgstr "库存物品" + +#: dcim/tables/devices.py:330 msgid "Cable Color" msgstr "电缆颜色" -#: dcim/tables/devices.py:332 +#: dcim/tables/devices.py:336 msgid "Link Peers" msgstr "链接同行" -#: dcim/tables/devices.py:335 +#: dcim/tables/devices.py:339 msgid "Mark Connected" msgstr "标记为已连接" -#: dcim/tables/devices.py:451 +#: dcim/tables/devices.py:455 msgid "Maximum draw (W)" msgstr "最大消耗 (W)" -#: dcim/tables/devices.py:454 +#: dcim/tables/devices.py:458 msgid "Allocated draw (W)" msgstr "分配的抽奖 (W)" -#: dcim/tables/devices.py:554 ipam/forms/model_forms.py:738 -#: ipam/tables/fhrp.py:28 ipam/views.py:596 ipam/views.py:690 +#: dcim/tables/devices.py:558 ipam/forms/model_forms.py:747 +#: ipam/tables/fhrp.py:28 ipam/views.py:602 ipam/views.py:701 #: netbox/navigation/menu.py:145 netbox/navigation/menu.py:147 #: templates/dcim/interface.html:339 templates/ipam/ipaddress_bulk_add.html:15 #: templates/ipam/service.html:40 templates/virtualization/vminterface.html:85 @@ -5714,12 +5764,12 @@ msgstr "分配的抽奖 (W)" msgid "IP Addresses" msgstr "IP 地址" -#: dcim/tables/devices.py:560 netbox/navigation/menu.py:189 +#: dcim/tables/devices.py:564 netbox/navigation/menu.py:189 #: templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "FHRP 群组" -#: dcim/tables/devices.py:572 templates/dcim/interface.html:89 +#: 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 @@ -5728,24 +5778,15 @@ msgstr "FHRP 群组" msgid "Tunnel" msgstr "隧道" -#: dcim/tables/devices.py:597 dcim/tables/devicetypes.py:224 +#: dcim/tables/devices.py:601 dcim/tables/devicetypes.py:224 #: templates/dcim/interface.html:65 msgid "Management Only" msgstr "仅限管理" -#: dcim/tables/devices.py:615 +#: dcim/tables/devices.py:619 msgid "VDCs" msgstr "VDC" -#: dcim/tables/devices.py:623 dcim/tables/devicetypes.py:48 -#: dcim/tables/devicetypes.py:140 dcim/views.py:1081 dcim/views.py:2024 -#: netbox/navigation/menu.py:90 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 -msgid "Inventory Items" -msgstr "库存物品" - #: dcim/tables/devices.py:870 templates/dcim/modulebay.html:49 msgid "Installed Module" msgstr "已安装的模块" @@ -5861,7 +5902,7 @@ msgstr "设备托架" msgid "Module Bays" msgstr "模块托架" -#: dcim/tables/power.py:36 netbox/navigation/menu.py:281 +#: dcim/tables/power.py:36 netbox/navigation/menu.py:282 #: templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "电源供应" @@ -6339,7 +6380,7 @@ msgid "Cluster type (slug)" msgstr "集群类型(slug)" #: extras/filtersets.py:537 ipam/forms/bulk_edit.py:476 -#: ipam/forms/filtersets.py:457 ipam/forms/model_forms.py:615 +#: ipam/forms/filtersets.py:464 ipam/forms/model_forms.py:624 #: virtualization/forms/filtersets.py:112 msgid "Cluster group" msgstr "集群组" @@ -6825,7 +6866,7 @@ msgid "Tenants" msgstr "租户" #: extras/forms/model_forms.py:458 ipam/forms/filtersets.py:142 -#: ipam/forms/filtersets.py:546 ipam/forms/model_forms.py:321 +#: ipam/forms/filtersets.py:553 ipam/forms/model_forms.py:321 #: 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:311 @@ -7599,11 +7640,11 @@ msgstr "脚本" msgid "scripts" msgstr "脚本" -#: extras/models/scripts.py:110 +#: extras/models/scripts.py:111 msgid "script module" msgstr "脚本模块" -#: extras/models/scripts.py:111 +#: extras/models/scripts.py:112 msgid "script modules" msgstr "脚本模块" @@ -7864,7 +7905,7 @@ msgstr "已删除的控件: " msgid "Error deleting widget: " msgstr "删除小部件时出错: " -#: extras/views.py:1081 +#: extras/views.py:1101 msgid "Unable to run script: RQ worker process not running." msgstr "无法运行脚本:RQ 工作进程未运行。" @@ -8010,7 +8051,7 @@ msgid "Prefixes which contain this prefix or IP" msgstr "包含此前缀或 IP 的前缀" #: ipam/filtersets.py:304 ipam/filtersets.py:572 ipam/forms/bulk_edit.py:327 -#: ipam/forms/filtersets.py:195 ipam/forms/filtersets.py:324 +#: ipam/forms/filtersets.py:196 ipam/forms/filtersets.py:331 msgid "Mask length" msgstr "口罩长度" @@ -8023,7 +8064,7 @@ msgid "VLAN number (1-4094)" msgstr "VLAN 编号 (1-4094)" #: ipam/filtersets.py:471 ipam/filtersets.py:475 ipam/filtersets.py:567 -#: ipam/forms/model_forms.py:452 templates/tenancy/contact.html:53 +#: ipam/forms/model_forms.py:461 templates/tenancy/contact.html:53 #: tenancy/forms/bulk_edit.py:113 msgid "Address" msgstr "地址" @@ -8083,7 +8124,7 @@ msgstr "NAT 内部 IP 地址 (ID)" msgid "IP address (ID)" msgstr "IP 地址 (ID)" -#: ipam/filtersets.py:1102 ipam/models/ip.py:787 +#: ipam/filtersets.py:1102 ipam/models/ip.py:788 msgid "IP address" msgstr "IP 地址" @@ -8139,7 +8180,7 @@ msgstr "是私密的" #: ipam/forms/filtersets.py:148 ipam/forms/model_forms.py:94 #: ipam/forms/model_forms.py:107 ipam/forms/model_forms.py:129 #: ipam/forms/model_forms.py:147 ipam/models/asns.py:31 -#: ipam/models/asns.py:103 ipam/models/ip.py:70 ipam/models/ip.py:89 +#: 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 @@ -8154,36 +8195,36 @@ msgstr "添加日期" msgid "Prefix length" msgstr "前缀长度" -#: ipam/forms/bulk_edit.py:253 ipam/forms/filtersets.py:240 +#: ipam/forms/bulk_edit.py:253 ipam/forms/filtersets.py:241 #: templates/ipam/prefix.html:85 msgid "Is a pool" msgstr "是一个游泳池" #: ipam/forms/bulk_edit.py:258 ipam/forms/bulk_edit.py:302 -#: ipam/forms/filtersets.py:247 ipam/forms/filtersets.py:286 -#: ipam/models/ip.py:271 ipam/models/ip.py:538 +#: ipam/forms/filtersets.py:248 ipam/forms/filtersets.py:293 +#: ipam/models/ip.py:272 ipam/models/ip.py:539 msgid "Treat as fully utilized" msgstr "视作已充分利用" -#: ipam/forms/bulk_edit.py:350 ipam/models/ip.py:771 +#: ipam/forms/bulk_edit.py:350 ipam/models/ip.py:772 msgid "DNS name" msgstr "DNS 名称" #: ipam/forms/bulk_edit.py:371 ipam/forms/bulk_edit.py:572 #: ipam/forms/bulk_import.py:393 ipam/forms/bulk_import.py:477 -#: ipam/forms/bulk_import.py:503 ipam/forms/filtersets.py:383 -#: ipam/forms/filtersets.py:530 templates/ipam/fhrpgroup.html:22 +#: ipam/forms/bulk_import.py:503 ipam/forms/filtersets.py:390 +#: ipam/forms/filtersets.py:537 templates/ipam/fhrpgroup.html:22 #: templates/ipam/inc/panels/fhrp_groups.html:24 #: templates/ipam/service.html:32 templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "协议" -#: ipam/forms/bulk_edit.py:378 ipam/forms/filtersets.py:390 +#: ipam/forms/bulk_edit.py:378 ipam/forms/filtersets.py:397 #: ipam/tables/fhrp.py:22 templates/ipam/fhrpgroup.html:26 msgid "Group ID" msgstr "群组 ID" -#: ipam/forms/bulk_edit.py:383 ipam/forms/filtersets.py:395 +#: ipam/forms/bulk_edit.py:383 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 @@ -8191,12 +8232,12 @@ msgstr "群组 ID" msgid "Authentication type" msgstr "身份验证类型" -#: ipam/forms/bulk_edit.py:388 ipam/forms/filtersets.py:399 +#: ipam/forms/bulk_edit.py:388 ipam/forms/filtersets.py:406 msgid "Authentication key" msgstr "身份验证密钥" -#: ipam/forms/bulk_edit.py:405 ipam/forms/filtersets.py:376 -#: ipam/forms/model_forms.py:463 netbox/navigation/menu.py:369 +#: ipam/forms/bulk_edit.py:405 ipam/forms/filtersets.py:383 +#: ipam/forms/model_forms.py:472 netbox/navigation/menu.py:370 #: templates/ipam/fhrpgroup.html:49 #: templates/wireless/inc/authentication_attrs.html:5 #: wireless/forms/bulk_edit.py:91 wireless/forms/bulk_edit.py:138 @@ -8213,11 +8254,11 @@ msgstr "子级 VLAN VID 下限" msgid "Maximum child VLAN VID" msgstr "子 VLAN VID 的最大值" -#: ipam/forms/bulk_edit.py:429 ipam/forms/model_forms.py:557 +#: ipam/forms/bulk_edit.py:429 ipam/forms/model_forms.py:566 msgid "Scope type" msgstr "范围类型" -#: ipam/forms/bulk_edit.py:491 ipam/forms/model_forms.py:632 +#: ipam/forms/bulk_edit.py:491 ipam/forms/model_forms.py:641 #: ipam/tables/vlans.py:71 templates/ipam/vlangroup.html:38 msgid "Scope" msgstr "范围" @@ -8226,8 +8267,8 @@ msgstr "范围" msgid "Site & Group" msgstr "网站和群组" -#: ipam/forms/bulk_edit.py:577 ipam/forms/model_forms.py:696 -#: ipam/forms/model_forms.py:728 ipam/tables/services.py:19 +#: ipam/forms/bulk_edit.py:577 ipam/forms/model_forms.py:705 +#: ipam/forms/model_forms.py:737 ipam/tables/services.py:19 #: ipam/tables/services.py:49 templates/ipam/service.html:36 #: templates/ipam/servicetemplate.html:23 msgid "Ports" @@ -8250,15 +8291,15 @@ msgstr "分配的 RIR" msgid "VLAN's group (if any)" msgstr "VLAN 的群组(如果有)" -#: ipam/forms/bulk_import.py:184 ipam/forms/model_forms.py:216 -#: ipam/models/vlans.py:214 ipam/tables/ip.py:254 -#: 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:101 +#: ipam/forms/bulk_import.py:184 ipam/forms/filtersets.py:256 +#: ipam/forms/model_forms.py:216 ipam/models/vlans.py:214 +#: ipam/tables/ip.py:254 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:101 msgid "VLAN" msgstr "VLAN" @@ -8267,7 +8308,7 @@ msgid "Parent device of assigned interface (if any)" msgstr "已分配接口的父设备(如果有)" #: ipam/forms/bulk_import.py:310 ipam/forms/bulk_import.py:496 -#: ipam/forms/model_forms.py:722 virtualization/filtersets.py:284 +#: ipam/forms/model_forms.py:731 virtualization/filtersets.py:284 #: virtualization/filtersets.py:323 virtualization/forms/bulk_edit.py:200 #: virtualization/forms/bulk_edit.py:326 #: virtualization/forms/bulk_import.py:146 @@ -8369,8 +8410,8 @@ msgstr "由 VRF 导出" msgid "Private" msgstr "私人" -#: ipam/forms/filtersets.py:105 ipam/forms/filtersets.py:190 -#: ipam/forms/filtersets.py:265 ipam/forms/filtersets.py:319 +#: ipam/forms/filtersets.py:105 ipam/forms/filtersets.py:191 +#: ipam/forms/filtersets.py:272 ipam/forms/filtersets.py:326 msgid "Address family" msgstr "地址家族" @@ -8386,53 +8427,57 @@ msgstr "开始" msgid "End" msgstr "结束" -#: ipam/forms/filtersets.py:185 +#: ipam/forms/filtersets.py:171 +msgid "VLAN Assignment" +msgstr "VLAN 分配" + +#: ipam/forms/filtersets.py:186 msgid "Search within" msgstr "在里面搜索" -#: ipam/forms/filtersets.py:206 ipam/forms/filtersets.py:335 +#: ipam/forms/filtersets.py:207 ipam/forms/filtersets.py:342 msgid "Present in VRF" msgstr "出现在 VRF 中" -#: ipam/forms/filtersets.py:304 +#: ipam/forms/filtersets.py:311 msgid "Device/VM" msgstr "设备/虚拟机" -#: ipam/forms/filtersets.py:314 +#: ipam/forms/filtersets.py:321 msgid "Parent Prefix" msgstr "家长前缀" -#: ipam/forms/filtersets.py:340 +#: ipam/forms/filtersets.py:347 msgid "Assigned Device" msgstr "分配的设备" -#: ipam/forms/filtersets.py:345 +#: ipam/forms/filtersets.py:352 msgid "Assigned VM" msgstr "分配的虚拟机" -#: ipam/forms/filtersets.py:359 +#: ipam/forms/filtersets.py:366 msgid "Assigned to an interface" msgstr "分配给接口" -#: ipam/forms/filtersets.py:366 templates/ipam/ipaddress.html:51 +#: ipam/forms/filtersets.py:373 templates/ipam/ipaddress.html:51 msgid "DNS Name" msgstr "DNS 名称" -#: ipam/forms/filtersets.py:409 ipam/forms/filtersets.py:513 +#: ipam/forms/filtersets.py:416 ipam/forms/filtersets.py:520 #: ipam/models/vlans.py:156 templates/ipam/vlan.html:31 msgid "VLAN ID" msgstr "VLAN ID" -#: ipam/forms/filtersets.py:441 +#: ipam/forms/filtersets.py:448 msgid "Minimum VID" msgstr "最低 VID" -#: ipam/forms/filtersets.py:447 +#: ipam/forms/filtersets.py:454 msgid "Maximum VID" msgstr "最大 VID" -#: ipam/forms/filtersets.py:556 ipam/forms/model_forms.py:318 -#: ipam/forms/model_forms.py:750 ipam/forms/model_forms.py:776 +#: ipam/forms/filtersets.py:563 ipam/forms/model_forms.py:318 +#: ipam/forms/model_forms.py:759 ipam/forms/model_forms.py:785 #: ipam/tables/vlans.py:191 templates/virtualization/virtualdisk.html:21 #: templates/virtualization/virtualmachine.html:12 #: templates/virtualization/vminterface.html:21 @@ -8470,7 +8515,7 @@ msgid "IP Range" msgstr "IP 范围" #: ipam/forms/model_forms.py:293 ipam/forms/model_forms.py:319 -#: ipam/forms/model_forms.py:462 templates/ipam/fhrpgroup.html:19 +#: ipam/forms/model_forms.py:471 templates/ipam/fhrpgroup.html:19 msgid "FHRP Group" msgstr "FHRP 集团" @@ -8482,71 +8527,71 @@ msgstr "将此设为设备/虚拟机的主 IP" msgid "NAT IP (Inside)" msgstr "NAT IP(内部)" -#: ipam/forms/model_forms.py:373 +#: ipam/forms/model_forms.py:382 msgid "An IP address can only be assigned to a single object." msgstr "IP 地址只能分配给单个对象。" -#: ipam/forms/model_forms.py:379 ipam/models/ip.py:896 +#: ipam/forms/model_forms.py:388 ipam/models/ip.py:897 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" msgstr "当它被指定为父对象的主 IP 时,无法重新分配 IP 地址" -#: ipam/forms/model_forms.py:389 +#: ipam/forms/model_forms.py:398 msgid "" "Only IP addresses assigned to an interface can be designated as primary IPs." msgstr "只有分配给接口的 IP 地址才能指定为主 IP。" -#: ipam/forms/model_forms.py:464 +#: ipam/forms/model_forms.py:473 msgid "Virtual IP Address" msgstr "虚拟 IP 地址" -#: ipam/forms/model_forms.py:549 +#: ipam/forms/model_forms.py:558 msgid "Assignment already exists" msgstr "任务已经存在" -#: ipam/forms/model_forms.py:628 ipam/forms/model_forms.py:670 +#: ipam/forms/model_forms.py:637 ipam/forms/model_forms.py:679 #: ipam/tables/ip.py:250 templates/ipam/vlan_edit.html:37 #: templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "VLAN 组" -#: ipam/forms/model_forms.py:629 +#: ipam/forms/model_forms.py:638 msgid "Child VLANs" msgstr "儿童 VLAN" -#: ipam/forms/model_forms.py:701 ipam/forms/model_forms.py:733 +#: ipam/forms/model_forms.py:710 ipam/forms/model_forms.py:742 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." msgstr "一个或多个端口号的逗号分隔列表。可以使用连字符指定范围。" -#: ipam/forms/model_forms.py:706 templates/ipam/servicetemplate.html:12 +#: ipam/forms/model_forms.py:715 templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "服务模板" -#: ipam/forms/model_forms.py:753 +#: ipam/forms/model_forms.py:762 msgid "Port(s)" msgstr "端口" -#: ipam/forms/model_forms.py:754 ipam/forms/model_forms.py:782 +#: ipam/forms/model_forms.py:763 ipam/forms/model_forms.py:791 #: templates/ipam/service.html:21 msgid "Service" msgstr "服务" -#: ipam/forms/model_forms.py:767 +#: ipam/forms/model_forms.py:776 msgid "Service template" msgstr "服务模板" -#: ipam/forms/model_forms.py:779 +#: ipam/forms/model_forms.py:788 msgid "From Template" msgstr "来自模板" -#: ipam/forms/model_forms.py:780 +#: ipam/forms/model_forms.py:789 msgid "Custom" msgstr "自定义" -#: ipam/forms/model_forms.py:810 +#: ipam/forms/model_forms.py:819 msgid "" "Must specify name, protocol, and port(s) if not using a service template." msgstr "如果不使用服务模板,则必须指定名称、协议和端口。" @@ -8612,215 +8657,215 @@ msgstr "FHRP 群组分配" msgid "FHRP group assignments" msgstr "FHRP 小组作业" -#: ipam/models/ip.py:64 +#: ipam/models/ip.py:65 msgid "private" msgstr "私人的" -#: ipam/models/ip.py:65 +#: ipam/models/ip.py:66 msgid "IP space managed by this RIR is considered private" msgstr "此 RIR 管理的 IP 空间被视为私有空间" -#: ipam/models/ip.py:71 netbox/navigation/menu.py:169 +#: ipam/models/ip.py:72 netbox/navigation/menu.py:169 msgid "RIRs" msgstr "RIR" -#: ipam/models/ip.py:83 +#: ipam/models/ip.py:84 msgid "IPv4 or IPv6 network" msgstr "IPv4 或 IPv6 网络" -#: ipam/models/ip.py:90 +#: ipam/models/ip.py:91 msgid "Regional Internet Registry responsible for this IP space" msgstr "负责此 IP 空间的地区互联网注册管理机构" -#: ipam/models/ip.py:100 +#: ipam/models/ip.py:101 msgid "date added" msgstr "添加日期" -#: ipam/models/ip.py:114 +#: ipam/models/ip.py:115 msgid "aggregate" msgstr "聚合" -#: ipam/models/ip.py:115 +#: ipam/models/ip.py:116 msgid "aggregates" msgstr "总量" -#: ipam/models/ip.py:131 +#: ipam/models/ip.py:132 msgid "Cannot create aggregate with /0 mask." msgstr "无法使用 /0 掩码创建聚合。" -#: ipam/models/ip.py:143 +#: ipam/models/ip.py:144 #, python-brace-format msgid "" "Aggregates cannot overlap. {prefix} is already covered by an existing " "aggregate ({aggregate})." msgstr "聚合不能重叠。 {prefix} 已被现有聚合所覆盖 ({aggregate})。" -#: ipam/models/ip.py:157 +#: ipam/models/ip.py:158 #, python-brace-format msgid "" "Prefixes cannot overlap aggregates. {prefix} covers an existing aggregate " "({aggregate})." msgstr "前缀不能与聚合重叠。 {prefix} 涵盖现有聚合 ({aggregate})。" -#: ipam/models/ip.py:199 ipam/models/ip.py:736 vpn/models/tunnels.py:114 +#: ipam/models/ip.py:200 ipam/models/ip.py:737 vpn/models/tunnels.py:114 msgid "role" msgstr "角色" -#: ipam/models/ip.py:200 +#: ipam/models/ip.py:201 msgid "roles" msgstr "角色" -#: ipam/models/ip.py:216 ipam/models/ip.py:292 +#: ipam/models/ip.py:217 ipam/models/ip.py:293 msgid "prefix" msgstr "前缀" -#: ipam/models/ip.py:217 +#: ipam/models/ip.py:218 msgid "IPv4 or IPv6 network with mask" msgstr "带掩码的 IPv4 或 IPv6 网络" -#: ipam/models/ip.py:253 +#: ipam/models/ip.py:254 msgid "Operational status of this prefix" msgstr "此前缀的运行状态" -#: ipam/models/ip.py:261 +#: ipam/models/ip.py:262 msgid "The primary function of this prefix" msgstr "这个前缀的主要功能" -#: ipam/models/ip.py:264 +#: ipam/models/ip.py:265 msgid "is a pool" msgstr "是一个游泳池" -#: ipam/models/ip.py:266 +#: ipam/models/ip.py:267 msgid "All IP addresses within this prefix are considered usable" msgstr "此前缀中的所有 IP 地址均视为可用" -#: ipam/models/ip.py:269 ipam/models/ip.py:536 +#: ipam/models/ip.py:270 ipam/models/ip.py:537 msgid "mark utilized" msgstr "已使用标记" -#: ipam/models/ip.py:293 +#: ipam/models/ip.py:294 msgid "prefixes" msgstr "前缀" -#: ipam/models/ip.py:316 +#: ipam/models/ip.py:317 msgid "Cannot create prefix with /0 mask." msgstr "无法使用 /0 掩码创建前缀。" -#: ipam/models/ip.py:323 ipam/models/ip.py:873 +#: ipam/models/ip.py:324 ipam/models/ip.py:874 #, python-brace-format msgid "VRF {vrf}" msgstr "VRF {vrf}" -#: ipam/models/ip.py:323 ipam/models/ip.py:873 +#: ipam/models/ip.py:324 ipam/models/ip.py:874 msgid "global table" msgstr "全局表" -#: ipam/models/ip.py:325 +#: ipam/models/ip.py:326 #, python-brace-format msgid "Duplicate prefix found in {table}: {prefix}" msgstr "在中找到重复的前缀 {table}: {prefix}" -#: ipam/models/ip.py:494 +#: ipam/models/ip.py:495 msgid "start address" msgstr "起始地址" -#: ipam/models/ip.py:495 ipam/models/ip.py:499 ipam/models/ip.py:711 +#: ipam/models/ip.py:496 ipam/models/ip.py:500 ipam/models/ip.py:712 msgid "IPv4 or IPv6 address (with mask)" msgstr "IPv4 或 IPv6 地址(带掩码)" -#: ipam/models/ip.py:498 +#: ipam/models/ip.py:499 msgid "end address" msgstr "结束地址" -#: ipam/models/ip.py:525 +#: ipam/models/ip.py:526 msgid "Operational status of this range" msgstr "该范围的运行状态" -#: ipam/models/ip.py:533 +#: ipam/models/ip.py:534 msgid "The primary function of this range" msgstr "这个范围的主要函数" -#: ipam/models/ip.py:547 +#: ipam/models/ip.py:548 msgid "IP range" msgstr "IP 范围" -#: ipam/models/ip.py:548 +#: ipam/models/ip.py:549 msgid "IP ranges" msgstr "IP 范围" -#: ipam/models/ip.py:564 +#: ipam/models/ip.py:565 msgid "Starting and ending IP address versions must match" msgstr "起始和结束 IP 地址版本必须匹配" -#: ipam/models/ip.py:570 +#: ipam/models/ip.py:571 msgid "Starting and ending IP address masks must match" msgstr "起始和结束 IP 地址掩码必须匹配" -#: ipam/models/ip.py:577 +#: ipam/models/ip.py:578 #, python-brace-format msgid "" "Ending address must be greater than the starting address ({start_address})" msgstr "结束地址必须大于起始地址 ({start_address})" -#: ipam/models/ip.py:589 +#: ipam/models/ip.py:590 #, python-brace-format msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}" msgstr "定义的地址与范围重叠 {overlapping_range} 在 VRF 中 {vrf}" -#: ipam/models/ip.py:598 +#: ipam/models/ip.py:599 #, python-brace-format msgid "Defined range exceeds maximum supported size ({max_size})" msgstr "定义的范围超过了支持的最大大小 ({max_size})" -#: ipam/models/ip.py:710 tenancy/models/contacts.py:82 +#: ipam/models/ip.py:711 tenancy/models/contacts.py:82 msgid "address" msgstr "地址" -#: ipam/models/ip.py:733 +#: ipam/models/ip.py:734 msgid "The operational status of this IP" msgstr "此 IP 的运行状态" -#: ipam/models/ip.py:740 +#: ipam/models/ip.py:741 msgid "The functional role of this IP" msgstr "这个 IP 的功能作用" -#: ipam/models/ip.py:764 templates/ipam/ipaddress.html:72 +#: ipam/models/ip.py:765 templates/ipam/ipaddress.html:72 msgid "NAT (inside)" msgstr "NAT(内部)" -#: ipam/models/ip.py:765 +#: ipam/models/ip.py:766 msgid "The IP for which this address is the \"outside\" IP" msgstr "此地址作为 “外部” IP 的 IP" -#: ipam/models/ip.py:772 +#: ipam/models/ip.py:773 msgid "Hostname or FQDN (not case-sensitive)" msgstr "主机名或 FQDN(不区分大小写)" -#: ipam/models/ip.py:788 ipam/models/services.py:93 +#: ipam/models/ip.py:789 ipam/models/services.py:93 msgid "IP addresses" msgstr "IP 地址" -#: ipam/models/ip.py:844 +#: ipam/models/ip.py:845 msgid "Cannot create IP address with /0 mask." msgstr "无法使用 /0 掩码创建 IP 地址。" -#: ipam/models/ip.py:850 +#: ipam/models/ip.py:851 #, python-brace-format msgid "{ip} is a network ID, which may not be assigned to an interface." msgstr "{ip} 是网络 ID,不能分配给接口。" -#: ipam/models/ip.py:861 +#: ipam/models/ip.py:862 #, python-brace-format msgid "" "{ip} is a broadcast address, which may not be assigned to an interface." msgstr "{ip} 是一个广播地址,不能分配给接口。" -#: ipam/models/ip.py:875 +#: ipam/models/ip.py:876 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "在中找到重复的 IP 地址 {table}: {ipaddress}" -#: ipam/models/ip.py:902 +#: ipam/models/ip.py:903 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "只能为 IPv6 地址分配 SLAAC 状态" @@ -8911,7 +8956,7 @@ msgid "The primary function of this VLAN" msgstr "此 VLAN 的主要功能" #: ipam/models/vlans.py:215 ipam/tables/ip.py:175 ipam/tables/vlans.py:78 -#: ipam/views.py:957 netbox/navigation/menu.py:180 +#: ipam/views.py:978 netbox/navigation/menu.py:180 #: netbox/navigation/menu.py:182 msgid "VLANs" msgstr "VLAN" @@ -8983,7 +9028,7 @@ msgid "Added" msgstr "已添加" #: ipam/tables/ip.py:127 ipam/tables/ip.py:165 ipam/tables/vlans.py:138 -#: ipam/views.py:348 netbox/navigation/menu.py:152 +#: ipam/views.py:349 netbox/navigation/menu.py:152 #: netbox/navigation/menu.py:154 templates/ipam/vlan.html:84 msgid "Prefixes" msgstr "前缀" @@ -9082,23 +9127,23 @@ msgid "" "are allowed in DNS names" msgstr "DNS 名称中仅允许使用字母数字字符、星号、连字符、句点和下划线" -#: ipam/views.py:535 +#: ipam/views.py:541 msgid "Child Prefixes" msgstr "子前缀" -#: ipam/views.py:570 +#: ipam/views.py:576 msgid "Child Ranges" msgstr "儿童系列" -#: ipam/views.py:886 +#: ipam/views.py:902 msgid "Related IPs" msgstr "相关知识产权" -#: ipam/views.py:1112 +#: ipam/views.py:1133 msgid "Device Interfaces" msgstr "设备接口" -#: ipam/views.py:1129 +#: ipam/views.py:1150 msgid "VM Interfaces" msgstr "虚拟机接口" @@ -9650,39 +9695,43 @@ msgstr "集群组" msgid "Circuit Types" msgstr "电路类型" -#: netbox/navigation/menu.py:264 netbox/navigation/menu.py:266 +#: netbox/navigation/menu.py:261 +msgid "Circuit Terminations" +msgstr "电路终端" + +#: netbox/navigation/menu.py:265 netbox/navigation/menu.py:267 msgid "Providers" msgstr "提供商" -#: netbox/navigation/menu.py:267 templates/circuits/provider.html:51 +#: netbox/navigation/menu.py:268 templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "提供商账户" -#: netbox/navigation/menu.py:268 +#: netbox/navigation/menu.py:269 msgid "Provider Networks" msgstr "提供商网络" -#: netbox/navigation/menu.py:282 +#: netbox/navigation/menu.py:283 msgid "Power Panels" msgstr "电源面板" -#: netbox/navigation/menu.py:293 +#: netbox/navigation/menu.py:294 msgid "Configurations" msgstr "配置" -#: netbox/navigation/menu.py:295 +#: netbox/navigation/menu.py:296 msgid "Config Contexts" msgstr "配置上下文" -#: netbox/navigation/menu.py:296 +#: netbox/navigation/menu.py:297 msgid "Config Templates" msgstr "配置模板" -#: netbox/navigation/menu.py:303 netbox/navigation/menu.py:307 +#: netbox/navigation/menu.py:304 netbox/navigation/menu.py:308 msgid "Customization" msgstr "定制" -#: netbox/navigation/menu.py:309 templates/dcim/device_edit.html:103 +#: netbox/navigation/menu.py:310 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 @@ -9692,107 +9741,107 @@ msgstr "定制" msgid "Custom Fields" msgstr "自定义字段" -#: netbox/navigation/menu.py:310 +#: netbox/navigation/menu.py:311 msgid "Custom Field Choices" msgstr "自定义字段选择" -#: netbox/navigation/menu.py:311 +#: netbox/navigation/menu.py:312 msgid "Custom Links" msgstr "自定义链接" -#: netbox/navigation/menu.py:312 +#: netbox/navigation/menu.py:313 msgid "Export Templates" msgstr "导出模板" -#: netbox/navigation/menu.py:313 +#: netbox/navigation/menu.py:314 msgid "Saved Filters" msgstr "已保存的过滤器" -#: netbox/navigation/menu.py:315 +#: netbox/navigation/menu.py:316 msgid "Image Attachments" msgstr "图像附件" -#: netbox/navigation/menu.py:333 +#: netbox/navigation/menu.py:334 msgid "Operations" msgstr "运营" -#: netbox/navigation/menu.py:337 +#: netbox/navigation/menu.py:338 msgid "Integrations" msgstr "整合" -#: netbox/navigation/menu.py:339 +#: netbox/navigation/menu.py:340 msgid "Data Sources" msgstr "数据源" -#: netbox/navigation/menu.py:340 +#: netbox/navigation/menu.py:341 msgid "Event Rules" msgstr "赛事规则" -#: netbox/navigation/menu.py:341 +#: netbox/navigation/menu.py:342 msgid "Webhooks" msgstr "网络挂钩" -#: netbox/navigation/menu.py:345 netbox/navigation/menu.py:349 +#: netbox/navigation/menu.py:346 netbox/navigation/menu.py:350 #: netbox/views/generic/feature_views.py:151 #: templates/extras/report/base.html:37 templates/extras/script/base.html:36 msgid "Jobs" msgstr "职位" -#: netbox/navigation/menu.py:355 +#: netbox/navigation/menu.py:356 msgid "Logging" msgstr "记录" -#: netbox/navigation/menu.py:357 +#: netbox/navigation/menu.py:358 msgid "Journal Entries" msgstr "日记条目" -#: netbox/navigation/menu.py:358 templates/extras/objectchange.html:8 +#: netbox/navigation/menu.py:359 templates/extras/objectchange.html:8 #: templates/extras/objectchange_list.html:4 msgid "Change Log" msgstr "更改日志" -#: netbox/navigation/menu.py:365 templates/inc/user_menu.html:11 +#: netbox/navigation/menu.py:366 templates/inc/user_menu.html:11 msgid "Admin" msgstr "管理员" -#: netbox/navigation/menu.py:373 templates/users/group.html:29 +#: netbox/navigation/menu.py:374 templates/users/group.html:29 #: users/forms/model_forms.py:233 users/forms/model_forms.py:245 #: users/forms/model_forms.py:297 users/tables.py:102 msgid "Users" msgstr "用户" -#: netbox/navigation/menu.py:393 users/forms/model_forms.py:182 +#: netbox/navigation/menu.py:394 users/forms/model_forms.py:182 #: users/forms/model_forms.py:194 users/forms/model_forms.py:302 #: users/tables.py:35 users/tables.py:106 msgid "Groups" msgstr "群组" -#: netbox/navigation/menu.py:413 templates/account/base.html:21 +#: netbox/navigation/menu.py:414 templates/account/base.html:21 #: templates/inc/user_menu.html:36 msgid "API Tokens" msgstr "API 代币" -#: netbox/navigation/menu.py:420 users/forms/model_forms.py:188 +#: netbox/navigation/menu.py:421 users/forms/model_forms.py:188 #: users/forms/model_forms.py:196 users/forms/model_forms.py:239 #: users/forms/model_forms.py:246 msgid "Permissions" msgstr "权限" -#: netbox/navigation/menu.py:428 netbox/navigation/menu.py:432 +#: netbox/navigation/menu.py:429 netbox/navigation/menu.py:433 #: templates/core/system.html:7 msgid "System" msgstr "系统" -#: netbox/navigation/menu.py:437 +#: netbox/navigation/menu.py:438 msgid "Configuration History" msgstr "配置历史记录" -#: netbox/navigation/menu.py:443 templates/core/rq_task.html:8 +#: netbox/navigation/menu.py:444 templates/core/rq_task.html:8 #: templates/core/rq_task_list.html:22 msgid "Background Tasks" msgstr "后台任务" -#: netbox/navigation/menu.py:482 templates/500.html:35 +#: netbox/navigation/menu.py:483 templates/500.html:35 #: templates/account/preferences.html:22 templates/core/system.html:80 msgid "Plugins" msgstr "插件" @@ -9922,34 +9971,46 @@ msgstr "初始化后无法将存储添加到注册表" msgid "Cannot delete stores from registry" msgstr "无法从注册表中删除存储" -#: netbox/settings.py:715 +#: netbox/settings.py:722 +msgid "German" +msgstr "德语" + +#: netbox/settings.py:723 msgid "English" msgstr "英语" -#: netbox/settings.py:716 +#: netbox/settings.py:724 msgid "Spanish" msgstr "西班牙的" -#: netbox/settings.py:717 +#: netbox/settings.py:725 msgid "French" msgstr "法语" -#: netbox/settings.py:718 +#: netbox/settings.py:726 msgid "Japanese" msgstr "日本人" -#: netbox/settings.py:719 +#: netbox/settings.py:727 msgid "Portuguese" msgstr "葡萄牙语" -#: netbox/settings.py:720 +#: netbox/settings.py:728 msgid "Russian" msgstr "俄国人" -#: netbox/settings.py:721 +#: netbox/settings.py:729 msgid "Turkish" msgstr "土耳其人" +#: netbox/settings.py:730 +msgid "Ukrainian" +msgstr "乌克兰人" + +#: netbox/settings.py:731 +msgid "Chinese" +msgstr "中国人" + #: netbox/tables/columns.py:185 msgid "Toggle all" msgstr "全部切换" @@ -9962,16 +10023,16 @@ msgstr "切换下拉列表" msgid "Error" msgstr "错误" -#: netbox/tables/tables.py:56 +#: netbox/tables/tables.py:57 #, python-brace-format msgid "No {model_name} found" msgstr "没有 {model_name} 找到" -#: netbox/tables/tables.py:246 templates/generic/bulk_import.html:117 +#: netbox/tables/tables.py:248 templates/generic/bulk_import.html:117 msgid "Field" msgstr "字段" -#: netbox/tables/tables.py:249 +#: netbox/tables/tables.py:251 msgid "Value" msgstr "价值" @@ -10078,7 +10139,7 @@ msgstr "更改密码" #: 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:37 +#: 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 @@ -10171,7 +10232,8 @@ msgstr "分配的群组" #: templates/account/profile.html:58 #: templates/circuits/circuit_terminations_swap.html:18 #: templates/circuits/circuit_terminations_swap.html:26 -#: templates/circuits/inc/circuit_termination.html:154 +#: templates/circuits/circuittermination.html:34 +#: templates/circuits/inc/circuit_termination.html:68 #: templates/dcim/devicebay.html:59 #: templates/dcim/inc/panels/inventory_items.html:45 #: templates/dcim/interface.html:296 templates/dcim/modulebay.html:76 @@ -10288,13 +10350,6 @@ msgstr "添加电路" msgid "Circuit Type" msgstr "电路类型" -#: templates/circuits/inc/circuit_termination.html:6 -#: templates/circuits/inc/circuit_termination.html:41 -#: templates/dcim/cable.html:68 templates/dcim/cable.html:72 -#: vpn/forms/bulk_import.py:100 vpn/forms/filtersets.py:77 -msgid "Termination" -msgstr "终止" - #: templates/circuits/inc/circuit_termination.html:10 #: templates/dcim/devicetype/component_templates.html:33 #: templates/dcim/manufacturer.html:11 @@ -10307,7 +10362,7 @@ msgid "Add" msgstr "添加" #: templates/circuits/inc/circuit_termination.html:15 -#: templates/circuits/inc/circuit_termination.html:62 +#: 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:32 @@ -10322,33 +10377,33 @@ msgstr "编辑" msgid "Swap" msgstr "交换" -#: templates/circuits/inc/circuit_termination.html:45 +#: templates/circuits/inc/circuit_termination_fields.html:19 #: templates/dcim/consoleport.html:59 templates/dcim/consoleserverport.html:60 #: templates/dcim/powerfeed.html:114 msgid "Marked as connected" msgstr "标记为已连接" -#: templates/circuits/inc/circuit_termination.html:47 +#: templates/circuits/inc/circuit_termination_fields.html:21 msgid "to" msgstr "到" -#: templates/circuits/inc/circuit_termination.html:57 -#: templates/circuits/inc/circuit_termination.html:58 +#: 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 msgid "Trace" msgstr "追踪" -#: templates/circuits/inc/circuit_termination.html:61 +#: templates/circuits/inc/circuit_termination_fields.html:35 msgid "Edit cable" msgstr "编辑电缆" -#: templates/circuits/inc/circuit_termination.html:66 +#: templates/circuits/inc/circuit_termination_fields.html:40 msgid "Remove cable" msgstr "拆下电缆" -#: templates/circuits/inc/circuit_termination.html:67 +#: 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 @@ -10360,7 +10415,7 @@ msgstr "拆下电缆" msgid "Disconnect" msgstr "断开连接" -#: templates/circuits/inc/circuit_termination.html:74 +#: 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 @@ -10369,19 +10424,19 @@ msgstr "断开连接" msgid "Connect" msgstr "连接" -#: templates/circuits/inc/circuit_termination.html:96 +#: templates/circuits/inc/circuit_termination_fields.html:70 msgid "Downstream" msgstr "下游" -#: templates/circuits/inc/circuit_termination.html:97 +#: templates/circuits/inc/circuit_termination_fields.html:71 msgid "Upstream" msgstr "上游" -#: templates/circuits/inc/circuit_termination.html:106 +#: templates/circuits/inc/circuit_termination_fields.html:80 msgid "Cross-Connect" msgstr "交叉连接" -#: templates/circuits/inc/circuit_termination.html:110 +#: templates/circuits/inc/circuit_termination_fields.html:84 msgid "Patch Panel/Port" msgstr "配线架/端口" @@ -11767,11 +11822,15 @@ msgstr "举报" msgid "You do not have permission to run scripts" msgstr "你没有权限运行脚本" -#: templates/extras/script.html:40 templates/extras/script.html:44 +#: templates/extras/script.html:41 templates/extras/script.html:45 #: templates/extras/script_list.html:88 msgid "Run Script" msgstr "运行脚本" +#: templates/extras/script.html:51 templates/extras/script/source.html:10 +msgid "Error loading script" +msgstr "加载脚本时出错" + #: templates/extras/script/jobs.html:16 msgid "Script no longer exists in the source file." msgstr "脚本不再存在于源文件中。" From 99b8f589cfe2e92961e6c4ad7cfc8dec620f0374 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 22 May 2024 14:10:00 -0400 Subject: [PATCH 21/67] Release v4.0.3 --- .github/ISSUE_TEMPLATE/bug_report.yaml | 2 +- .github/ISSUE_TEMPLATE/feature_request.yaml | 2 +- contrib/generated_schema.json | 15 +++++++++++++-- docs/release-notes/version-4.0.md | 6 +++++- netbox/netbox/settings.py | 2 +- netbox/project-static/package.json | 2 +- netbox/project-static/yarn.lock | 8 ++++---- netbox/translations/de/LC_MESSAGES/django.mo | Bin 221309 -> 222241 bytes netbox/translations/es/LC_MESSAGES/django.mo | Bin 223103 -> 223757 bytes netbox/translations/fr/LC_MESSAGES/django.mo | Bin 224951 -> 225629 bytes netbox/translations/ja/LC_MESSAGES/django.mo | Bin 237491 -> 238221 bytes netbox/translations/pt/LC_MESSAGES/django.mo | Bin 220128 -> 220776 bytes netbox/translations/ru/LC_MESSAGES/django.mo | Bin 281203 -> 282033 bytes netbox/translations/tr/LC_MESSAGES/django.mo | Bin 214472 -> 215126 bytes netbox/translations/uk/LC_MESSAGES/django.mo | Bin 275352 -> 276203 bytes netbox/translations/zh/LC_MESSAGES/django.mo | Bin 199908 -> 200492 bytes requirements.txt | 6 +++--- 17 files changed, 29 insertions(+), 14 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml index b87d627ed..3d2038b22 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -26,7 +26,7 @@ body: attributes: label: NetBox Version description: What version of NetBox are you currently running? - placeholder: v4.0.2 + placeholder: v4.0.3 validations: required: true - type: dropdown diff --git a/.github/ISSUE_TEMPLATE/feature_request.yaml b/.github/ISSUE_TEMPLATE/feature_request.yaml index 6c245c7ef..bd9a17ff9 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yaml +++ b/.github/ISSUE_TEMPLATE/feature_request.yaml @@ -14,7 +14,7 @@ body: attributes: label: NetBox version description: What version of NetBox are you currently running? - placeholder: v4.0.2 + placeholder: v4.0.3 validations: required: true - type: dropdown diff --git a/contrib/generated_schema.json b/contrib/generated_schema.json index fe9d56b34..5cfdfd9d0 100644 --- a/contrib/generated_schema.json +++ b/contrib/generated_schema.json @@ -179,6 +179,9 @@ "usb-micro-ab", "usb-3-b", "usb-3-micro-b", + "molex-micro-fit-1x2", + "molex-micro-fit-2x2", + "molex-micro-fit-2x4", "dc-terminal", "saf-d-grid", "neutrik-powercon-20", @@ -281,6 +284,9 @@ "usb-a", "usb-micro-b", "usb-c", + "molex-micro-fit-1x2", + "molex-micro-fit-2x2", + "molex-micro-fit-2x4", "dc-terminal", "hdot-cx", "saf-d-grid", @@ -375,6 +381,8 @@ "gsm", "cdma", "lte", + "4g", + "5g", "sonet-oc3", "sonet-oc12", "sonet-oc48", @@ -408,12 +416,15 @@ "e3", "xdsl", "docsis", + "bpon", + "epon", + "10g-epon", "gpon", "xg-pon", "xgs-pon", "ng-pon2", - "epon", - "10g-epon", + "25g-pon", + "50g-pon", "cisco-stackwise", "cisco-stackwise-plus", "cisco-flexstack", diff --git a/docs/release-notes/version-4.0.md b/docs/release-notes/version-4.0.md index 05ade6705..c644f7cc4 100644 --- a/docs/release-notes/version-4.0.md +++ b/docs/release-notes/version-4.0.md @@ -1,6 +1,6 @@ # NetBox v4.0 -## v4.0.3 (FUTURE) +## v4.0.3 (2024-05-22) ### Enhancements @@ -10,6 +10,7 @@ * [#14653](https://github.com/netbox-community/netbox/issues/14653) - Add an inventory items table column for all device components * [#14686](https://github.com/netbox-community/netbox/issues/14686) - Add German translation support * [#14855](https://github.com/netbox-community/netbox/issues/14855) - Add Chinese translation support +* [#14948](https://github.com/netbox-community/netbox/issues/14948) - Introduce the `has_virtual_device_context` filter for devices * [#15353](https://github.com/netbox-community/netbox/issues/15353) - Improve error reporting when custom scripts fail to load * [#15496](https://github.com/netbox-community/netbox/issues/15496) - Implement dedicated views for management of circuit terminations * [#15603](https://github.com/netbox-community/netbox/issues/15603) - Add 4G & 5G cellular interface types @@ -22,9 +23,12 @@ * [#14982](https://github.com/netbox-community/netbox/issues/14982) - Fix OpenAPI schema definition for SerializedPKRelatedFields * [#15082](https://github.com/netbox-community/netbox/issues/15082) - Strip whitespace from choice values & labels when creating a custom field choice set * [#16138](https://github.com/netbox-community/netbox/issues/16138) - Fix support for referencing users & groups in object permissions +* [#16145](https://github.com/netbox-community/netbox/issues/16145) - Restore ability to reference custom scripts via module & name in REST API * [#16164](https://github.com/netbox-community/netbox/issues/16164) - Correct display of selected values in UI when filtering object list by a null value * [#16173](https://github.com/netbox-community/netbox/issues/16173) - Fix TypeError exception when viewing object list with no pagination preference defined * [#16228](https://github.com/netbox-community/netbox/issues/16228) - Fix permissions enforcement for GraphQL queries of users & groups +* [#16232](https://github.com/netbox-community/netbox/issues/16232) - Preserve bulk action checkboxes on dynamic tables when using pagination +* [#16240](https://github.com/netbox-community/netbox/issues/16240) - Fixed NoReverseMatch exception when adding circuit terminations to an object counts dashboard widget --- diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index fdae4e2c5..88057bb05 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -25,7 +25,7 @@ from utilities.string import trailing_slash # Environment setup # -VERSION = '4.0.3-dev' +VERSION = '4.0.3' HOSTNAME = platform.node() # Set the base directory two levels up BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) diff --git a/netbox/project-static/package.json b/netbox/project-static/package.json index 6a971332e..e69037f9d 100644 --- a/netbox/project-static/package.json +++ b/netbox/project-static/package.json @@ -30,7 +30,7 @@ "gridstack": "10.1.2", "htmx.org": "1.9.12", "query-string": "9.0.0", - "sass": "1.77.1", + "sass": "1.77.2", "tom-select": "2.3.1", "typeface-inter": "3.18.1", "typeface-roboto-mono": "1.1.13" diff --git a/netbox/project-static/yarn.lock b/netbox/project-static/yarn.lock index 5a8df2293..16c8b4dbc 100644 --- a/netbox/project-static/yarn.lock +++ b/netbox/project-static/yarn.lock @@ -2482,10 +2482,10 @@ safe-regex-test@^1.0.3: es-errors "^1.3.0" is-regex "^1.1.4" -sass@1.77.1: - version "1.77.1" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.1.tgz#018cdfb206afd14724030c02e9fefd8f30a76cd0" - integrity sha512-OMEyfirt9XEfyvocduUIOlUSkWOXS/LAt6oblR/ISXCTukyavjex+zQNm51pPCOiFKY1QpWvEH1EeCkgyV3I6w== +sass@1.77.2: + version "1.77.2" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.2.tgz#18d4ed2eefc260cdc8099c5439ec1303fd5863aa" + integrity sha512-eb4GZt1C3avsX3heBNlrc7I09nyT00IUuo4eFhAbeXWU2fvA7oXI53SxODVAA+zgZCk9aunAZgO+losjR3fAwA== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" diff --git a/netbox/translations/de/LC_MESSAGES/django.mo b/netbox/translations/de/LC_MESSAGES/django.mo index d52fd1a38fc22cfe566f8ddca9eaae280429fe31..01f7438f85824f9de3736a3ac9b69ea88927fcc6 100644 GIT binary patch delta 76434 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 delta 75850 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 z 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 diff --git a/netbox/translations/es/LC_MESSAGES/django.mo b/netbox/translations/es/LC_MESSAGES/django.mo index f276eedd8985553b907eb698b134a67ba785e238..89355b5268ec0730a872830dcff7677c76068e7a 100644 GIT binary patch delta 63422 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 A(f|Me delta 62942 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,-K5uI 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%0D`XeysX2V5O}4GnZ_^b<6&1Lzw6 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 delta 62952 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 P!>?$Fp!#|I{^j^TZd&|d diff --git a/netbox/translations/ja/LC_MESSAGES/django.mo b/netbox/translations/ja/LC_MESSAGES/django.mo index 36cb7eb5c978f538c3680b897996cfcbeaf5b049..76693c5f7ba0b142bf5beebd1d0d1373f5c3c563 100644 GIT binary patch delta 63450 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

P{#{={JYb60k?vJS0jJ4}(k^M$u`PUdMKR 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 diff --git a/netbox/translations/pt/LC_MESSAGES/django.mo b/netbox/translations/pt/LC_MESSAGES/django.mo index 8ecc863ff56798bfc6cd54dc8593ce2d5c63da97..7a97bcb2740ac616758707cb81d74cfa51f6b7ae 100644 GIT binary patch delta 63420 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 z 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 E2Tiw6y#N3J delta 63039 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

-y5dW;DfW{ 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 X>HYV5hYPtF%jbtr$c=bD{Q~|URp4Er diff --git a/netbox/translations/uk/LC_MESSAGES/django.mo b/netbox/translations/uk/LC_MESSAGES/django.mo index 7c1ab84e960c9e4060507d59f73457d45fa05f6d..14c273e08504570da329ed21a455505ea94aba44 100644 GIT binary patch delta 63461 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

0rUJE*cA%cBY4Yp&KW%|H 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

kQaYv=CW24^I9EZ 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 delta 62967 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 Ua`@oP*8(<#4*qc`;B~G41Kd@kX8-^I diff --git a/netbox/translations/zh/LC_MESSAGES/django.mo b/netbox/translations/zh/LC_MESSAGES/django.mo index 71f20b677e3cfaf442430d5b90937ac39b522817..e1aae350a6920f3e49cc6356e00f56e810ffc9ce 100644 GIT binary patch delta 63360 zcmXuscfiio-@x(99T|lbl7_uy6_u5hT_H0Dxr9EN57&SctVvYE`CB(9`j3%15a|0Ks^1M=&_eb}3P<$swS-iqz< zc{H$pBj4t53hW*YT(I)U2bY@?nOJ3wivH@CtF}A{q*c9K! zDwsc$FSj){(Isw(g|QhHz;<{Po{w%#*Qmc3vo;(=!o3|H6*onG0_LauUMzw4V<}vS zWpNFjf}h}N_y?B3!G)+2|8}Jb5!(0I~o!Vu0@w@eALg1 z^7&Yr^5y8BZbS#z7Wr?`K=+|5a#VrTt~k1dr{GCgGv%|HHY9A=4IQvQ8rdi`pxev zlQ6fiBV6#nYi_6?Q?(`-fLX`6#sG+oJp)bVVLSC$<

H=B}5E1>r7@2{skYXAyS_mo$`^ysA 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
6aoLG-N)GfeyboCf< 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
V8E(+8H zus{~3e!@s@5Kym1N-s=-bo@-hQ0OTdc~<{`dSecFxNRP24nW?U?$00sA# z(;X*hf&-dZmy>EAQi)z#rg=54>CDlwVrB@%jI`~)L{u9a93)9n7aa|%sh;Y#dI}S4 zyab_L{o^qRpBp5w?Rast89)VuTW<$lEP-SGb)?u?t_#r!U=y|ym7FId9Y!Gt^FD@# zi4z^I91{!3s!QUtQ8 zRAm3k0{jgBwf~x2pu4*Ey3TXJh-WbW`{)Mvqb*@)7dm75YM(-_H;)4kdN-*K%N{Ae z>N?5Df6{cO@zL}2k#3I?xpi}gI^W+q;4@vp%0DrakGN$!vtq59-%@LfQqLpL%@S$r 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 literal 0 HcmV?d00001 From a094719d234d9f6b0f4e6f93af465c347ec3ccd6 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Tue, 28 May 2024 14:09:41 -0400 Subject: [PATCH 30/67] Closes #16290: Capture entire object in changelog data --- .../extras/api/serializers_/change_logging.py | 10 +++ netbox/extras/models/change_logging.py | 72 +++++++++++++++++- netbox/extras/tests/test_changelog.py | 28 +++++++ netbox/extras/views.py | 6 +- netbox/project-static/dist/netbox.css | Bin 551636 -> 551631 bytes .../project-static/styles/custom/_code.scss | 4 +- netbox/templates/extras/objectchange.html | 4 +- netbox/utilities/serialization.py | 13 +--- 8 files changed, 119 insertions(+), 18 deletions(-) diff --git a/netbox/extras/api/serializers_/change_logging.py b/netbox/extras/api/serializers_/change_logging.py index 32585637c..46fb901ff 100644 --- a/netbox/extras/api/serializers_/change_logging.py +++ b/netbox/extras/api/serializers_/change_logging.py @@ -30,6 +30,16 @@ class ObjectChangeSerializer(BaseModelSerializer): changed_object = serializers.SerializerMethodField( read_only=True ) + prechange_data = serializers.JSONField( + source='prechange_data_clean', + read_only=True, + allow_null=True + ) + postchange_data = serializers.JSONField( + source='postchange_data_clean', + read_only=True, + allow_null=True + ) class Meta: model = ObjectChange diff --git a/netbox/extras/models/change_logging.py b/netbox/extras/models/change_logging.py index ebcebc09a..8451a0d15 100644 --- a/netbox/extras/models/change_logging.py +++ b/netbox/extras/models/change_logging.py @@ -1,12 +1,17 @@ +from functools import cached_property + from django.conf import settings from django.contrib.contenttypes.fields import GenericForeignKey from django.core.exceptions import ValidationError from django.db import models from django.urls import reverse from django.utils.translation import gettext_lazy as _ +from mptt.models import MPTTModel from core.models import ObjectType from extras.choices import * +from netbox.models.features import ChangeLoggingMixin +from utilities.data import shallow_compare_dict from ..querysets import ObjectChangeQuerySet __all__ = ( @@ -136,6 +141,71 @@ class ObjectChange(models.Model): def get_action_color(self): return ObjectChangeActionChoices.colors.get(self.action) - @property + @cached_property def has_changes(self): return self.prechange_data != self.postchange_data + + @cached_property + def diff_exclude_fields(self): + """ + Return a set of attributes which should be ignored when calculating a diff + between the pre- and post-change data. (For instance, it would not make + sense to compare the "last updated" times as these are expected to differ.) + """ + model = self.changed_object_type.model_class() + attrs = set() + + # Exclude auto-populated change tracking fields + if issubclass(model, ChangeLoggingMixin): + attrs.update({'created', 'last_updated'}) + + # Exclude MPTT-internal fields + if issubclass(model, MPTTModel): + attrs.update({'level', 'lft', 'rght', 'tree_id'}) + + return attrs + + def get_clean_data(self, prefix): + """ + Return only the pre-/post-change attributes which are relevant for calculating a diff. + """ + ret = {} + change_data = getattr(self, f'{prefix}_data') or {} + for k, v in change_data.items(): + if k not in self.diff_exclude_fields and not k.startswith('_'): + ret[k] = v + return ret + + @cached_property + def prechange_data_clean(self): + return self.get_clean_data('prechange') + + @cached_property + def postchange_data_clean(self): + return self.get_clean_data('postchange') + + def diff(self): + """ + Return a dictionary of pre- and post-change values for attributes which have changed. + """ + prechange_data = self.prechange_data_clean + postchange_data = self.postchange_data_clean + + # Determine which attributes have changed + if self.action == ObjectChangeActionChoices.ACTION_CREATE: + changed_attrs = sorted(postchange_data.keys()) + elif self.action == ObjectChangeActionChoices.ACTION_DELETE: + changed_attrs = sorted(prechange_data.keys()) + else: + # TODO: Support deep (recursive) comparison + changed_data = shallow_compare_dict(prechange_data, postchange_data) + changed_attrs = sorted(changed_data.keys()) + + return { + 'pre': { + k: prechange_data.get(k) for k in changed_attrs + }, + 'post': { + k: postchange_data.get(k) for k in changed_attrs + }, + } diff --git a/netbox/extras/tests/test_changelog.py b/netbox/extras/tests/test_changelog.py index d9d6f1f45..aac526e0f 100644 --- a/netbox/extras/tests/test_changelog.py +++ b/netbox/extras/tests/test_changelog.py @@ -75,6 +75,10 @@ class ChangeLogViewTest(ModelViewTestCase): self.assertEqual(oc.postchange_data['custom_fields']['cf2'], form_data['cf_cf2']) self.assertEqual(oc.postchange_data['tags'], ['Tag 1', 'Tag 2']) + # Check that private attributes were included in raw data but not display data + self.assertIn('_name', oc.postchange_data) + self.assertNotIn('_name', oc.postchange_data_clean) + def test_update_object(self): site = Site(name='Site 1', slug='site-1') site.save() @@ -112,6 +116,12 @@ class ChangeLogViewTest(ModelViewTestCase): self.assertEqual(oc.postchange_data['custom_fields']['cf2'], form_data['cf_cf2']) self.assertEqual(oc.postchange_data['tags'], ['Tag 3']) + # Check that private attributes were included in raw data but not display data + self.assertIn('_name', oc.prechange_data) + self.assertNotIn('_name', oc.prechange_data_clean) + self.assertIn('_name', oc.postchange_data) + self.assertNotIn('_name', oc.postchange_data_clean) + def test_delete_object(self): site = Site( name='Site 1', @@ -142,6 +152,10 @@ class ChangeLogViewTest(ModelViewTestCase): self.assertEqual(oc.prechange_data['tags'], ['Tag 1', 'Tag 2']) self.assertEqual(oc.postchange_data, None) + # Check that private attributes were included in raw data but not display data + self.assertIn('_name', oc.prechange_data) + self.assertNotIn('_name', oc.prechange_data_clean) + def test_bulk_update_objects(self): sites = ( Site(name='Site 1', slug='site-1', status=SiteStatusChoices.STATUS_ACTIVE), @@ -338,6 +352,10 @@ class ChangeLogAPITest(APITestCase): self.assertEqual(oc.postchange_data['custom_fields'], data['custom_fields']) self.assertEqual(oc.postchange_data['tags'], ['Tag 1', 'Tag 2']) + # Check that private attributes were included in raw data but not display data + self.assertIn('_name', oc.postchange_data) + self.assertNotIn('_name', oc.postchange_data_clean) + def test_update_object(self): site = Site(name='Site 1', slug='site-1') site.save() @@ -370,6 +388,12 @@ class ChangeLogAPITest(APITestCase): self.assertEqual(oc.postchange_data['custom_fields'], data['custom_fields']) self.assertEqual(oc.postchange_data['tags'], ['Tag 3']) + # Check that private attributes were included in raw data but not display data + self.assertIn('_name', oc.prechange_data) + self.assertNotIn('_name', oc.prechange_data_clean) + self.assertIn('_name', oc.postchange_data) + self.assertNotIn('_name', oc.postchange_data_clean) + def test_delete_object(self): site = Site( name='Site 1', @@ -398,6 +422,10 @@ class ChangeLogAPITest(APITestCase): self.assertEqual(oc.prechange_data['tags'], ['Tag 1', 'Tag 2']) self.assertEqual(oc.postchange_data, None) + # Check that private attributes were included in raw data but not display data + self.assertIn('_name', oc.prechange_data) + self.assertNotIn('_name', oc.prechange_data_clean) + def test_bulk_create_objects(self): data = ( { diff --git a/netbox/extras/views.py b/netbox/extras/views.py index 3a82539fb..82f519c00 100644 --- a/netbox/extras/views.py +++ b/netbox/extras/views.py @@ -723,15 +723,15 @@ class ObjectChangeView(generic.ObjectView): if not instance.prechange_data and instance.action in ['update', 'delete'] and prev_change: non_atomic_change = True - prechange_data = prev_change.postchange_data + prechange_data = prev_change.postchange_data_clean else: non_atomic_change = False - prechange_data = instance.prechange_data + prechange_data = instance.prechange_data_clean if prechange_data and instance.postchange_data: diff_added = shallow_compare_dict( prechange_data or dict(), - instance.postchange_data or dict(), + instance.postchange_data_clean or dict(), exclude=['last_updated'], ) diff_removed = { diff --git a/netbox/project-static/dist/netbox.css b/netbox/project-static/dist/netbox.css index a1179a319c22f53f751e9e2ecc1ed918e85e8585..082a5b64d2374a533a0cd977972c5efb72012a24 100644 GIT binary patch delta 55 zcmca|Rq^~)#fBEf7N!>F7M2#)7Pc1lEgT9d;z{{MDXB%eMTseyrNveT)&+?vDVcfc L+ig-fX0QPOLP!(K delta 45 zcmX?qRq@JI#fBEf7N!>F7M2#)7Pc1lEgT9d(-ZyKC8ilOvQ2MH;Sk;Km%`D=1^|9m B4$lAp diff --git a/netbox/project-static/styles/custom/_code.scss b/netbox/project-static/styles/custom/_code.scss index 4b068b94d..1be563b21 100644 --- a/netbox/project-static/styles/custom/_code.scss +++ b/netbox/project-static/styles/custom/_code.scss @@ -1,7 +1,7 @@ // Serialized data from change records pre.change-data { - padding-right: 0; - padding-left: 0; + border-radius: 0; + padding: 0; // Display each line individually for highlighting > span { diff --git a/netbox/templates/extras/objectchange.html b/netbox/templates/extras/objectchange.html index 0aee6185b..368a71821 100644 --- a/netbox/templates/extras/objectchange.html +++ b/netbox/templates/extras/objectchange.html @@ -112,7 +112,7 @@ {% if object.prechange_data %} {% spaceless %}

-                  {% for k, v in object.prechange_data.items %}
+                  {% for k, v in object.prechange_data_clean.items %}
                     {{ k }}: {{ v|json }}
                   {% endfor %}
                 
@@ -132,7 +132,7 @@ {% if object.postchange_data %} {% spaceless %}
-                      {% for k, v in object.postchange_data.items %}
+                      {% for k, v in object.postchange_data_clean.items %}
                         {{ k }}: {{ v|json }}
                       {% endfor %}
                     
diff --git a/netbox/utilities/serialization.py b/netbox/utilities/serialization.py index f7a2002d1..af1169e97 100644 --- a/netbox/utilities/serialization.py +++ b/netbox/utilities/serialization.py @@ -2,7 +2,6 @@ import json from django.contrib.contenttypes.models import ContentType from django.core import serializers -from mptt.models import MPTTModel from extras.utils import is_taggable @@ -16,8 +15,7 @@ def serialize_object(obj, resolve_tags=True, extra=None, exclude=None): """ Return a generic JSON representation of an object using Django's built-in serializer. (This is used for things like change logging, not the REST API.) Optionally include a dictionary to supplement the object data. A list of keys - can be provided to exclude them from the returned dictionary. Private fields (prefaced with an underscore) are - implicitly excluded. + can be provided to exclude them from the returned dictionary. Args: obj: The object to serialize @@ -30,11 +28,6 @@ def serialize_object(obj, resolve_tags=True, extra=None, exclude=None): data = json.loads(json_str)[0]['fields'] exclude = exclude or [] - # Exclude any MPTTModel fields - if issubclass(obj.__class__, MPTTModel): - for field in ['level', 'lft', 'rght', 'tree_id']: - data.pop(field) - # Include custom_field_data as "custom_fields" if hasattr(obj, 'custom_field_data'): data['custom_fields'] = data.pop('custom_field_data') @@ -45,9 +38,9 @@ def serialize_object(obj, resolve_tags=True, extra=None, exclude=None): tags = getattr(obj, '_tags', None) or obj.tags.all() data['tags'] = sorted([tag.name for tag in tags]) - # Skip excluded and private (prefixes with an underscore) attributes + # Skip any excluded attributes for key in list(data.keys()): - if key in exclude or (isinstance(key, str) and key.startswith('_')): + if key in exclude: data.pop(key) # Append any extra data From 4d924a9041890efcfc39414dad9b81e1181b6a11 Mon Sep 17 00:00:00 2001 From: Arthur Hanson Date: Wed, 29 May 2024 07:22:59 -0700 Subject: [PATCH 31/67] 16202 fix mapit button for internationalized decimal seperator (#16270) * 16202 fix mapit button for internationalized decimal seperator * 16202 revert untranslate * 16202 revert untranslate --- netbox/templates/dcim/device.html | 3 ++- netbox/templates/dcim/site.html | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/netbox/templates/dcim/device.html b/netbox/templates/dcim/device.html index bf53ef002..12ba4a8d4 100644 --- a/netbox/templates/dcim/device.html +++ b/netbox/templates/dcim/device.html @@ -5,6 +5,7 @@ {% load helpers %} {% load plugins %} {% load i18n %} +{% load l10n %} {% load mptt %} {% block content %} @@ -63,7 +64,7 @@ {% if object.latitude and object.longitude %} {% if config.MAPS_URL %}
diff --git a/netbox/templates/dcim/site.html b/netbox/templates/dcim/site.html index d3a44f3ac..1ad0a75ae 100644 --- a/netbox/templates/dcim/site.html +++ b/netbox/templates/dcim/site.html @@ -3,6 +3,7 @@ {% load plugins %} {% load tz %} {% load i18n %} +{% load l10n %} {% load mptt %} {% block breadcrumbs %} @@ -95,7 +96,7 @@ {% if object.latitude and object.longitude %} {% if config.MAPS_URL %} From 67165a9f9171d59afba582df7f881ca05b71e430 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 29 May 2024 11:37:25 -0400 Subject: [PATCH 32/67] Remove abhi1693 from issue triage rotation --- .github/workflows/auto-assign-issue.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/auto-assign-issue.yml b/.github/workflows/auto-assign-issue.yml index e32e23c84..4e93d9f0d 100644 --- a/.github/workflows/auto-assign-issue.yml +++ b/.github/workflows/auto-assign-issue.yml @@ -16,6 +16,6 @@ jobs: if: "contains(github.event.issue.labels.*.name, 'status: needs triage')" with: # Weighted assignments - assignees: arthanson:3, jeffgdotorg:3, jeremystretch:3, abhi1693, DanSheps + assignees: arthanson:3, jeffgdotorg:3, jeremystretch:3, DanSheps numOfAssignee: 1 abortIfPreviousAssignees: true From a3c49846230085b32670224dd613a59ff0d39089 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 30 May 2024 08:37:24 -0400 Subject: [PATCH 33/67] Skip CI if changes are limited to non-code paths --- .github/workflows/ci.yml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d794786f1..b32f519bc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,7 +1,18 @@ name: CI -on: [push, pull_request] + +on: + push: + paths-ignore: + - 'contrib/**' + - 'docs/**' + pull_request: + paths-ignore: + - 'contrib/**' + - 'docs/**' + permissions: contents: read + jobs: build: runs-on: ubuntu-latest From f5aa34bb371acd0d1f7e660ba2dfcedba9b82400 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 30 May 2024 09:56:56 -0400 Subject: [PATCH 34/67] Add GitHub action to run makemessages --- .../workflows/update-translation-strings.yml | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 .github/workflows/update-translation-strings.yml diff --git a/.github/workflows/update-translation-strings.yml b/.github/workflows/update-translation-strings.yml new file mode 100644 index 000000000..d9aa7c3c6 --- /dev/null +++ b/.github/workflows/update-translation-strings.yml @@ -0,0 +1,35 @@ +name: Update translation strings + +on: workflow_dispatch + +permissions: + contents: read + +jobs: + makemessages: + runs-on: ubuntu-latest + env: + NETBOX_CONFIGURATION: netbox.configuration_testing + + steps: + - name: Check out repo + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: 3.11 + + - name: Install dependencies & set up configuration + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + + - name: Run makemessages + run: python netbox/manage.py makemessages -l en + + - name: Commit changes + uses: EndBug/add-and-commit@v9 + with: + add: 'netbox/translations/' + message: 'Update source translation strings' From 153341c1b780613da21f284a706f3db12a6fe67c Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 30 May 2024 10:14:43 -0400 Subject: [PATCH 35/67] Install gettext --- .github/workflows/update-translation-strings.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/update-translation-strings.yml b/.github/workflows/update-translation-strings.yml index d9aa7c3c6..9e68ae3c1 100644 --- a/.github/workflows/update-translation-strings.yml +++ b/.github/workflows/update-translation-strings.yml @@ -20,7 +20,10 @@ jobs: with: python-version: 3.11 - - name: Install dependencies & set up configuration + - name: Install system dependencies + run: sudo apt install -y gettext + + - name: Install Python dependencies run: | python -m pip install --upgrade pip pip install -r requirements.txt From 4ad74587e5ef2251fc90e08a54fce148bd5d52bc Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 30 May 2024 10:21:02 -0400 Subject: [PATCH 36/67] Fix action permissions --- .github/workflows/update-translation-strings.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/update-translation-strings.yml b/.github/workflows/update-translation-strings.yml index 9e68ae3c1..a2802ab92 100644 --- a/.github/workflows/update-translation-strings.yml +++ b/.github/workflows/update-translation-strings.yml @@ -3,7 +3,7 @@ name: Update translation strings on: workflow_dispatch permissions: - contents: read + contents: write jobs: makemessages: @@ -35,4 +35,5 @@ jobs: uses: EndBug/add-and-commit@v9 with: add: 'netbox/translations/' + default_author: github_actions message: 'Update source translation strings' From 05d3224c3386cbc6923c0ca81ee8033058307884 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 30 May 2024 14:23:18 +0000 Subject: [PATCH 37/67] Update source translation strings --- netbox/translations/en/LC_MESSAGES/django.po | 10305 +++++++++-------- 1 file changed, 5481 insertions(+), 4824 deletions(-) diff --git a/netbox/translations/en/LC_MESSAGES/django.po b/netbox/translations/en/LC_MESSAGES/django.po index be10d5686..51072d017 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-05-22 17:41+0000\n" +"POT-Creation-Date: 2024-05-30 14:23+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,7060 +18,7549 @@ msgstr "" "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:133 +#: netbox/account/tables.py:31 netbox/users/forms/filtersets.py:133 msgid "Write Enabled" msgstr "" -#: account/tables.py:35 core/tables/jobs.py:29 core/tables/tasks.py:79 -#: extras/choices.py:138 extras/tables/tables.py:499 -#: templates/account/token.html:43 templates/core/configrevision.html:26 -#: templates/core/configrevision_restore.html:12 templates/core/job.html:51 -#: 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/tables/jobs.py:29 +#: netbox/core/tables/tasks.py:79 netbox/extras/choices.py:138 +#: netbox/extras/tables/tables.py:499 netbox/templates/account/token.html:43 +#: netbox/templates/core/configrevision.html:26 +#: netbox/templates/core/configrevision_restore.html:12 +#: netbox/templates/core/job.html:51 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:137 +#: 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 msgid "Expires" msgstr "" -#: account/tables.py:42 users/forms/filtersets.py:142 +#: netbox/account/tables.py:42 netbox/users/forms/filtersets.py:142 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:197 +#: netbox/account/views.py:197 msgid "Your preferences have been updated." msgstr "" -#: circuits/choices.py:21 dcim/choices.py:20 dcim/choices.py:102 -#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1457 -#: dcim/choices.py:1533 dcim/choices.py:1583 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:174 +#: netbox/dcim/choices.py:220 netbox/dcim/choices.py:1459 +#: netbox/dcim/choices.py:1535 netbox/dcim/choices.py:1585 +#: 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:290 +#: netbox/circuits/choices.py:22 netbox/netbox/navigation/menu.py:290 msgid "Provisioning" msgstr "" -#: circuits/choices.py:23 core/tables/tasks.py:22 dcim/choices.py:22 -#: dcim/choices.py:103 dcim/choices.py:173 dcim/choices.py:219 -#: dcim/choices.py:1532 dcim/choices.py:1582 extras/tables/tables.py:385 -#: 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:173 netbox/dcim/choices.py:219 +#: netbox/dcim/choices.py:1534 netbox/dcim/choices.py:1584 +#: netbox/extras/tables/tables.py:385 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:172 dcim/choices.py:218 -#: dcim/choices.py:1531 dcim/choices.py:1584 virtualization/choices.py:24 -#: virtualization/choices.py:43 +#: netbox/circuits/choices.py:24 netbox/dcim/choices.py:172 +#: netbox/dcim/choices.py:218 netbox/dcim/choices.py:1533 +#: netbox/dcim/choices.py:1586 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/filtersets.py:29 circuits/filtersets.py:196 dcim/filtersets.py:97 -#: dcim/filtersets.py:151 dcim/filtersets.py:211 dcim/filtersets.py:297 -#: dcim/filtersets.py:406 dcim/filtersets.py:969 dcim/filtersets.py:1305 -#: dcim/filtersets.py:1832 dcim/filtersets.py:2075 dcim/filtersets.py:2133 -#: ipam/filtersets.py:339 ipam/filtersets.py:945 -#: virtualization/filtersets.py:45 virtualization/filtersets.py:173 -#: vpn/filtersets.py:377 +#: 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:1305 netbox/dcim/filtersets.py:1832 +#: netbox/dcim/filtersets.py:2075 netbox/dcim/filtersets.py:2133 +#: netbox/ipam/filtersets.py:339 netbox/ipam/filtersets.py:945 +#: netbox/virtualization/filtersets.py:45 +#: netbox/virtualization/filtersets.py:173 netbox/vpn/filtersets.py:377 msgid "Region (ID)" msgstr "" -#: circuits/filtersets.py:36 circuits/filtersets.py:203 dcim/filtersets.py:104 -#: dcim/filtersets.py:157 dcim/filtersets.py:218 dcim/filtersets.py:304 -#: dcim/filtersets.py:413 dcim/filtersets.py:976 dcim/filtersets.py:1312 -#: dcim/filtersets.py:1839 dcim/filtersets.py:2082 dcim/filtersets.py:2140 -#: extras/filtersets.py:461 ipam/filtersets.py:346 ipam/filtersets.py:952 -#: virtualization/filtersets.py:52 virtualization/filtersets.py:180 -#: vpn/filtersets.py:372 +#: 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:1312 netbox/dcim/filtersets.py:1839 +#: netbox/dcim/filtersets.py:2082 netbox/dcim/filtersets.py:2140 +#: 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 msgid "Region (slug)" msgstr "" -#: circuits/filtersets.py:42 circuits/filtersets.py:209 dcim/filtersets.py:127 -#: dcim/filtersets.py:224 dcim/filtersets.py:310 dcim/filtersets.py:419 -#: dcim/filtersets.py:982 dcim/filtersets.py:1318 dcim/filtersets.py:1845 -#: dcim/filtersets.py:2088 dcim/filtersets.py:2146 ipam/filtersets.py:352 -#: ipam/filtersets.py:958 virtualization/filtersets.py:58 -#: virtualization/filtersets.py:186 +#: 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:1318 +#: netbox/dcim/filtersets.py:1845 netbox/dcim/filtersets.py:2088 +#: netbox/dcim/filtersets.py:2146 netbox/ipam/filtersets.py:352 +#: netbox/ipam/filtersets.py:958 netbox/virtualization/filtersets.py:58 +#: netbox/virtualization/filtersets.py:186 msgid "Site group (ID)" msgstr "" -#: circuits/filtersets.py:49 circuits/filtersets.py:216 dcim/filtersets.py:134 -#: dcim/filtersets.py:231 dcim/filtersets.py:317 dcim/filtersets.py:426 -#: dcim/filtersets.py:989 dcim/filtersets.py:1325 dcim/filtersets.py:1852 -#: dcim/filtersets.py:2095 dcim/filtersets.py:2153 extras/filtersets.py:467 -#: ipam/filtersets.py:359 ipam/filtersets.py:965 -#: virtualization/filtersets.py:65 virtualization/filtersets.py:193 +#: 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:1325 +#: netbox/dcim/filtersets.py:1852 netbox/dcim/filtersets.py:2095 +#: netbox/dcim/filtersets.py:2153 netbox/extras/filtersets.py:467 +#: netbox/ipam/filtersets.py:359 netbox/ipam/filtersets.py:965 +#: netbox/virtualization/filtersets.py:65 +#: netbox/virtualization/filtersets.py:193 msgid "Site group (slug)" msgstr "" -#: circuits/filtersets.py:54 circuits/forms/bulk_edit.py:186 -#: circuits/forms/bulk_edit.py:214 circuits/forms/bulk_import.py:126 -#: circuits/forms/filtersets.py:49 circuits/forms/filtersets.py:169 -#: circuits/forms/filtersets.py:207 circuits/forms/model_forms.py:136 -#: circuits/forms/model_forms.py:152 circuits/tables/circuits.py:105 -#: dcim/forms/bulk_edit.py:167 dcim/forms/bulk_edit.py:239 -#: dcim/forms/bulk_edit.py:575 dcim/forms/bulk_edit.py:771 -#: dcim/forms/bulk_import.py:130 dcim/forms/bulk_import.py:184 -#: dcim/forms/bulk_import.py:257 dcim/forms/bulk_import.py:485 -#: dcim/forms/bulk_import.py:1262 dcim/forms/bulk_import.py:1290 -#: dcim/forms/filtersets.py:85 dcim/forms/filtersets.py:218 -#: dcim/forms/filtersets.py:265 dcim/forms/filtersets.py:374 -#: dcim/forms/filtersets.py:682 dcim/forms/filtersets.py:916 -#: dcim/forms/filtersets.py:940 dcim/forms/filtersets.py:1030 -#: dcim/forms/filtersets.py:1068 dcim/forms/filtersets.py:1476 -#: dcim/forms/filtersets.py:1500 dcim/forms/filtersets.py:1524 -#: dcim/forms/model_forms.py:136 dcim/forms/model_forms.py:164 -#: dcim/forms/model_forms.py:206 dcim/forms/model_forms.py:406 -#: dcim/forms/model_forms.py:668 dcim/forms/object_create.py:391 -#: dcim/tables/devices.py:158 dcim/tables/power.py:26 dcim/tables/power.py:93 -#: dcim/tables/racks.py:62 dcim/tables/racks.py:138 dcim/tables/sites.py:129 -#: extras/filtersets.py:477 ipam/forms/bulk_edit.py:216 -#: ipam/forms/bulk_edit.py:270 ipam/forms/bulk_edit.py:448 -#: ipam/forms/bulk_edit.py:522 ipam/forms/bulk_import.py:170 -#: ipam/forms/bulk_import.py:437 ipam/forms/filtersets.py:153 -#: ipam/forms/filtersets.py:231 ipam/forms/filtersets.py:432 -#: ipam/forms/filtersets.py:496 ipam/forms/model_forms.py:203 -#: ipam/forms/model_forms.py:587 ipam/forms/model_forms.py:682 -#: ipam/tables/ip.py:244 ipam/tables/vlans.py:114 ipam/tables/vlans.py:216 -#: templates/circuits/inc/circuit_termination_fields.html:6 -#: templates/dcim/device.html:21 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:22 -#: templates/dcim/rackreservation.html:28 templates/dcim/site.html:27 -#: 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:91 -#: 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:62 vpn/forms/filtersets.py:266 -#: wireless/forms/model_forms.py:76 wireless/forms/model_forms.py:118 +#: 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:126 +#: 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:105 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:184 netbox/dcim/forms/bulk_import.py:257 +#: netbox/dcim/forms/bulk_import.py:485 netbox/dcim/forms/bulk_import.py:1262 +#: netbox/dcim/forms/bulk_import.py:1290 netbox/dcim/forms/filtersets.py:85 +#: netbox/dcim/forms/filtersets.py:218 netbox/dcim/forms/filtersets.py:265 +#: netbox/dcim/forms/filtersets.py:374 netbox/dcim/forms/filtersets.py:682 +#: netbox/dcim/forms/filtersets.py:916 netbox/dcim/forms/filtersets.py:940 +#: netbox/dcim/forms/filtersets.py:1030 netbox/dcim/forms/filtersets.py:1068 +#: netbox/dcim/forms/filtersets.py:1476 netbox/dcim/forms/filtersets.py:1500 +#: netbox/dcim/forms/filtersets.py:1524 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:668 +#: netbox/dcim/forms/object_create.py:391 netbox/dcim/tables/devices.py:158 +#: 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:129 netbox/extras/filtersets.py:477 +#: netbox/ipam/forms/bulk_edit.py:216 netbox/ipam/forms/bulk_edit.py:270 +#: netbox/ipam/forms/bulk_edit.py:448 netbox/ipam/forms/bulk_edit.py:522 +#: netbox/ipam/forms/bulk_import.py:170 netbox/ipam/forms/bulk_import.py:437 +#: 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:203 netbox/ipam/forms/model_forms.py:587 +#: netbox/ipam/forms/model_forms.py:682 netbox/ipam/tables/ip.py:244 +#: netbox/ipam/tables/vlans.py:114 netbox/ipam/tables/vlans.py:216 +#: 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/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/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:62 +#: 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:60 circuits/filtersets.py:227 -#: circuits/filtersets.py:272 dcim/filtersets.py:241 dcim/filtersets.py:327 -#: dcim/filtersets.py:400 extras/filtersets.py:483 ipam/filtersets.py:238 -#: ipam/filtersets.py:369 ipam/filtersets.py:975 -#: virtualization/filtersets.py:75 virtualization/filtersets.py:203 -#: vpn/filtersets.py:382 +#: 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/virtualization/filtersets.py:75 +#: netbox/virtualization/filtersets.py:203 netbox/vpn/filtersets.py:382 msgid "Site (slug)" msgstr "" -#: circuits/filtersets.py:65 +#: netbox/circuits/filtersets.py:65 msgid "ASN (ID)" msgstr "" -#: circuits/filtersets.py:71 circuits/forms/filtersets.py:29 -#: ipam/forms/model_forms.py:157 ipam/models/asns.py:108 -#: ipam/models/asns.py:125 ipam/tables/asn.py:41 templates/ipam/asn.html:20 +#: netbox/circuits/filtersets.py:71 netbox/circuits/forms/filtersets.py:29 +#: netbox/ipam/forms/model_forms.py:157 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:93 circuits/filtersets.py:120 -#: circuits/filtersets.py:154 circuits/filtersets.py:281 ipam/filtersets.py:243 +#: 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 msgid "Provider (ID)" msgstr "" -#: circuits/filtersets.py:99 circuits/filtersets.py:126 -#: circuits/filtersets.py:160 circuits/filtersets.py:287 ipam/filtersets.py:249 +#: 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 msgid "Provider (slug)" msgstr "" -#: circuits/filtersets.py:165 +#: netbox/circuits/filtersets.py:165 msgid "Provider account (ID)" msgstr "" -#: circuits/filtersets.py:171 +#: netbox/circuits/filtersets.py:171 msgid "Provider account (account)" msgstr "" -#: circuits/filtersets.py:176 +#: netbox/circuits/filtersets.py:176 msgid "Provider network (ID)" msgstr "" -#: circuits/filtersets.py:180 +#: netbox/circuits/filtersets.py:180 msgid "Circuit type (ID)" msgstr "" -#: circuits/filtersets.py:186 +#: netbox/circuits/filtersets.py:186 msgid "Circuit type (slug)" msgstr "" -#: circuits/filtersets.py:221 circuits/filtersets.py:266 dcim/filtersets.py:235 -#: dcim/filtersets.py:321 dcim/filtersets.py:394 dcim/filtersets.py:993 -#: dcim/filtersets.py:1330 dcim/filtersets.py:1857 dcim/filtersets.py:2099 -#: dcim/filtersets.py:2158 ipam/filtersets.py:232 ipam/filtersets.py:363 -#: ipam/filtersets.py:969 virtualization/filtersets.py:69 -#: virtualization/filtersets.py:197 vpn/filtersets.py:387 +#: 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:1330 netbox/dcim/filtersets.py:1857 +#: netbox/dcim/filtersets.py:2099 netbox/dcim/filtersets.py:2158 +#: 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 msgid "Site (ID)" msgstr "" -#: circuits/filtersets.py:231 circuits/filtersets.py:235 +#: netbox/circuits/filtersets.py:231 netbox/circuits/filtersets.py:235 msgid "Termination A (ID)" msgstr "" -#: circuits/filtersets.py:258 core/filtersets.py:73 core/filtersets.py:132 -#: dcim/filtersets.py:693 dcim/filtersets.py:1299 dcim/filtersets.py:2206 -#: extras/filtersets.py:41 extras/filtersets.py:63 extras/filtersets.py:92 -#: extras/filtersets.py:127 extras/filtersets.py:176 extras/filtersets.py:204 -#: extras/filtersets.py:234 extras/filtersets.py:271 extras/filtersets.py:343 -#: extras/filtersets.py:390 extras/filtersets.py:450 extras/filtersets.py:613 -#: extras/filtersets.py:655 extras/filtersets.py:696 -#: ipam/forms/model_forms.py:447 netbox/filtersets.py:275 -#: netbox/forms/__init__.py:22 netbox/forms/base.py:165 -#: 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:52 users/filtersets.py:92 users/filtersets.py:140 -#: utilities/forms/forms.py:104 +#: netbox/circuits/filtersets.py:258 netbox/core/filtersets.py:73 +#: netbox/core/filtersets.py:132 netbox/dcim/filtersets.py:693 +#: netbox/dcim/filtersets.py:1299 netbox/dcim/filtersets.py:2206 +#: 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:447 netbox/netbox/filtersets.py:275 +#: netbox/netbox/forms/__init__.py:22 netbox/netbox/forms/base.py:165 +#: 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 msgid "Search" msgstr "" -#: circuits/filtersets.py:262 circuits/forms/bulk_edit.py:170 -#: circuits/forms/bulk_import.py:117 circuits/forms/filtersets.py:196 -#: circuits/forms/filtersets.py:212 circuits/forms/model_forms.py:109 -#: circuits/forms/model_forms.py:131 circuits/tables/circuits.py:96 -#: dcim/forms/connections.py:71 templates/circuits/circuit.html:15 -#: templates/circuits/circuittermination.html:19 -#: templates/dcim/inc/cable_termination.html:55 -#: templates/dcim/trace/circuit.html:4 +#: netbox/circuits/filtersets.py:262 netbox/circuits/forms/bulk_edit.py:170 +#: netbox/circuits/forms/bulk_import.py:117 +#: 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:96 netbox/dcim/forms/connections.py:71 +#: netbox/templates/circuits/circuit.html:15 +#: 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:276 +#: netbox/circuits/filtersets.py:276 msgid "ProviderNetwork (ID)" msgstr "" -#: circuits/forms/bulk_edit.py:28 circuits/forms/filtersets.py:54 -#: circuits/forms/model_forms.py:27 circuits/tables/providers.py:33 -#: dcim/forms/bulk_edit.py:127 dcim/forms/filtersets.py:188 -#: dcim/forms/model_forms.py:122 dcim/tables/sites.py:94 -#: ipam/models/asns.py:126 ipam/tables/asn.py:27 ipam/views.py:219 -#: netbox/navigation/menu.py:159 netbox/navigation/menu.py:162 -#: templates/circuits/provider.html:23 +#: 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:188 netbox/dcim/forms/model_forms.py:122 +#: netbox/dcim/tables/sites.py:94 netbox/ipam/models/asns.py:126 +#: netbox/ipam/tables/asn.py:27 netbox/ipam/views.py:219 +#: netbox/netbox/navigation/menu.py:159 netbox/netbox/navigation/menu.py:162 +#: netbox/templates/circuits/provider.html:23 msgid "ASNs" msgstr "" -#: circuits/forms/bulk_edit.py:32 circuits/forms/bulk_edit.py:54 -#: circuits/forms/bulk_edit.py:81 circuits/forms/bulk_edit.py:102 -#: circuits/forms/bulk_edit.py:162 circuits/forms/bulk_edit.py:181 -#: core/forms/bulk_edit.py:28 core/tables/plugins.py:29 -#: dcim/forms/bulk_create.py:35 dcim/forms/bulk_edit.py:72 -#: dcim/forms/bulk_edit.py:91 dcim/forms/bulk_edit.py:150 -#: dcim/forms/bulk_edit.py:191 dcim/forms/bulk_edit.py:209 -#: dcim/forms/bulk_edit.py:337 dcim/forms/bulk_edit.py:373 -#: dcim/forms/bulk_edit.py:388 dcim/forms/bulk_edit.py:447 -#: dcim/forms/bulk_edit.py:486 dcim/forms/bulk_edit.py:516 -#: dcim/forms/bulk_edit.py:540 dcim/forms/bulk_edit.py:613 -#: dcim/forms/bulk_edit.py:665 dcim/forms/bulk_edit.py:717 -#: dcim/forms/bulk_edit.py:740 dcim/forms/bulk_edit.py:788 -#: dcim/forms/bulk_edit.py:858 dcim/forms/bulk_edit.py:911 -#: dcim/forms/bulk_edit.py:946 dcim/forms/bulk_edit.py:986 -#: dcim/forms/bulk_edit.py:1030 dcim/forms/bulk_edit.py:1075 -#: dcim/forms/bulk_edit.py:1102 dcim/forms/bulk_edit.py:1120 -#: dcim/forms/bulk_edit.py:1138 dcim/forms/bulk_edit.py:1156 -#: dcim/forms/bulk_edit.py:1575 extras/forms/bulk_edit.py:36 -#: extras/forms/bulk_edit.py:124 extras/forms/bulk_edit.py:153 -#: extras/forms/bulk_edit.py:183 extras/forms/bulk_edit.py:264 -#: extras/forms/bulk_edit.py:288 extras/forms/bulk_edit.py:302 -#: extras/tables/tables.py:58 ipam/forms/bulk_edit.py:51 -#: ipam/forms/bulk_edit.py:71 ipam/forms/bulk_edit.py:91 -#: ipam/forms/bulk_edit.py:115 ipam/forms/bulk_edit.py:144 -#: ipam/forms/bulk_edit.py:173 ipam/forms/bulk_edit.py:192 -#: ipam/forms/bulk_edit.py:261 ipam/forms/bulk_edit.py:305 -#: ipam/forms/bulk_edit.py:353 ipam/forms/bulk_edit.py:396 -#: ipam/forms/bulk_edit.py:424 ipam/forms/bulk_edit.py:554 -#: ipam/forms/bulk_edit.py:585 templates/account/token.html:35 -#: templates/circuits/circuit.html:59 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/dcim/cable.html:36 templates/dcim/consoleport.html:44 -#: templates/dcim/consoleserverport.html:44 templates/dcim/device.html:93 -#: 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:70 -#: templates/dcim/modulebay.html:38 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:51 -#: templates/dcim/rackreservation.html:62 templates/dcim/rackrole.html:26 -#: templates/dcim/rearport.html:54 templates/dcim/region.html:33 -#: templates/dcim/site.html:59 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/savedfilter.html:17 templates/extras/script_list.html:47 -#: 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:129 +#: 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:1575 +#: 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:58 +#: 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:261 +#: netbox/ipam/forms/bulk_edit.py:305 netbox/ipam/forms/bulk_edit.py:353 +#: netbox/ipam/forms/bulk_edit.py:396 netbox/ipam/forms/bulk_edit.py:424 +#: netbox/ipam/forms/bulk_edit.py:554 netbox/ipam/forms/bulk_edit.py:585 +#: netbox/templates/account/token.html:35 +#: netbox/templates/circuits/circuit.html:59 +#: 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/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:70 netbox/templates/dcim/modulebay.html:38 +#: 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/rackreservation.html:62 +#: netbox/templates/dcim/rackrole.html:26 +#: 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/savedfilter.html:17 +#: netbox/templates/extras/script_list.html:47 +#: 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:129 msgid "Description" msgstr "" -#: circuits/forms/bulk_edit.py:49 circuits/forms/bulk_edit.py:71 -#: circuits/forms/bulk_edit.py:121 circuits/forms/bulk_import.py:35 -#: circuits/forms/bulk_import.py:50 circuits/forms/bulk_import.py:76 -#: circuits/forms/filtersets.py:68 circuits/forms/filtersets.py:86 -#: circuits/forms/filtersets.py:114 circuits/forms/filtersets.py:129 -#: circuits/forms/filtersets.py:197 circuits/forms/filtersets.py:230 -#: circuits/forms/model_forms.py:45 circuits/forms/model_forms.py:59 -#: circuits/forms/model_forms.py:91 circuits/tables/circuits.py:56 -#: circuits/tables/circuits.py:100 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: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:76 +#: 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:100 +#: 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:78 circuits/forms/filtersets.py:89 -#: templates/circuits/providernetwork.html:28 +#: netbox/circuits/forms/bulk_edit.py:78 netbox/circuits/forms/filtersets.py:89 +#: netbox/templates/circuits/providernetwork.html:28 msgid "Service ID" msgstr "" -#: circuits/forms/bulk_edit.py:98 circuits/forms/filtersets.py:105 -#: dcim/forms/bulk_edit.py:205 dcim/forms/bulk_edit.py:502 -#: dcim/forms/bulk_edit.py:702 dcim/forms/bulk_edit.py:1071 -#: dcim/forms/bulk_edit.py:1098 dcim/forms/bulk_edit.py:1571 -#: dcim/forms/filtersets.py:983 dcim/forms/filtersets.py:1359 -#: dcim/forms/filtersets.py:1380 dcim/tables/devices.py:699 -#: dcim/tables/devices.py:759 dcim/tables/devices.py:986 -#: dcim/tables/devicetypes.py:245 dcim/tables/devicetypes.py:260 -#: dcim/tables/racks.py:32 extras/forms/bulk_edit.py:260 -#: extras/tables/tables.py:333 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: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:1571 netbox/dcim/forms/filtersets.py:983 +#: netbox/dcim/forms/filtersets.py:1359 netbox/dcim/forms/filtersets.py:1380 +#: netbox/dcim/tables/devices.py:699 netbox/dcim/tables/devices.py:759 +#: netbox/dcim/tables/devices.py:986 netbox/dcim/tables/devicetypes.py:245 +#: netbox/dcim/tables/devicetypes.py:260 netbox/dcim/tables/racks.py:32 +#: netbox/extras/forms/bulk_edit.py:260 netbox/extras/tables/tables.py:333 +#: 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:116 circuits/forms/bulk_import.py:89 -#: circuits/forms/filtersets.py:124 core/forms/bulk_edit.py:18 -#: core/forms/filtersets.py:30 core/tables/data.py:20 core/tables/jobs.py:18 -#: dcim/forms/bulk_edit.py:282 dcim/forms/bulk_edit.py:680 -#: dcim/forms/bulk_edit.py:819 dcim/forms/bulk_edit.py:887 -#: dcim/forms/bulk_edit.py:906 dcim/forms/bulk_edit.py:929 -#: dcim/forms/bulk_edit.py:971 dcim/forms/bulk_edit.py:1015 -#: dcim/forms/bulk_edit.py:1066 dcim/forms/bulk_edit.py:1093 -#: dcim/forms/bulk_import.py:214 dcim/forms/bulk_import.py:653 -#: dcim/forms/bulk_import.py:679 dcim/forms/bulk_import.py:705 -#: dcim/forms/bulk_import.py:725 dcim/forms/bulk_import.py:808 -#: dcim/forms/bulk_import.py:902 dcim/forms/bulk_import.py:944 -#: dcim/forms/bulk_import.py:1161 dcim/forms/bulk_import.py:1327 -#: dcim/forms/filtersets.py:287 dcim/forms/filtersets.py:874 -#: dcim/forms/filtersets.py:973 dcim/forms/filtersets.py:1094 -#: dcim/forms/filtersets.py:1164 dcim/forms/filtersets.py:1186 -#: dcim/forms/filtersets.py:1208 dcim/forms/filtersets.py:1225 -#: dcim/forms/filtersets.py:1259 dcim/forms/filtersets.py:1354 -#: dcim/forms/filtersets.py:1375 dcim/forms/model_forms.py:643 -#: dcim/forms/model_forms.py:649 dcim/forms/object_import.py:84 -#: dcim/forms/object_import.py:113 dcim/forms/object_import.py:145 -#: dcim/tables/devices.py:183 dcim/tables/devices.py:815 -#: dcim/tables/power.py:77 extras/forms/bulk_import.py:39 -#: extras/tables/tables.py:283 extras/tables/tables.py:355 -#: extras/tables/tables.py:473 netbox/tables/tables.py:239 -#: 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/rack.html:76 templates/dcim/rearport.html:36 -#: templates/extras/eventrule.html:80 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:116 +#: netbox/circuits/forms/bulk_import.py:89 +#: 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:214 +#: netbox/dcim/forms/bulk_import.py:653 netbox/dcim/forms/bulk_import.py:679 +#: netbox/dcim/forms/bulk_import.py:705 netbox/dcim/forms/bulk_import.py:725 +#: netbox/dcim/forms/bulk_import.py:808 netbox/dcim/forms/bulk_import.py:902 +#: netbox/dcim/forms/bulk_import.py:944 netbox/dcim/forms/bulk_import.py:1161 +#: netbox/dcim/forms/bulk_import.py:1327 netbox/dcim/forms/filtersets.py:287 +#: netbox/dcim/forms/filtersets.py:874 netbox/dcim/forms/filtersets.py:973 +#: netbox/dcim/forms/filtersets.py:1094 netbox/dcim/forms/filtersets.py:1164 +#: netbox/dcim/forms/filtersets.py:1186 netbox/dcim/forms/filtersets.py:1208 +#: netbox/dcim/forms/filtersets.py:1225 netbox/dcim/forms/filtersets.py:1259 +#: netbox/dcim/forms/filtersets.py:1354 netbox/dcim/forms/filtersets.py:1375 +#: netbox/dcim/forms/model_forms.py:643 netbox/dcim/forms/model_forms.py:649 +#: 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:183 +#: netbox/dcim/tables/devices.py:815 netbox/dcim/tables/power.py:77 +#: netbox/extras/forms/bulk_import.py:39 netbox/extras/tables/tables.py:283 +#: netbox/extras/tables/tables.py:355 netbox/extras/tables/tables.py:473 +#: netbox/netbox/tables/tables.py:239 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/rack.html:76 +#: netbox/templates/dcim/rearport.html:36 +#: netbox/templates/extras/eventrule.html:80 +#: 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:126 circuits/forms/bulk_import.py:82 -#: circuits/forms/filtersets.py:137 circuits/forms/model_forms.py:96 +#: netbox/circuits/forms/bulk_edit.py:126 +#: netbox/circuits/forms/bulk_import.py:82 +#: netbox/circuits/forms/filtersets.py:137 +#: netbox/circuits/forms/model_forms.py:96 msgid "Provider account" msgstr "" -#: circuits/forms/bulk_edit.py:134 circuits/forms/bulk_import.py:95 -#: circuits/forms/filtersets.py:148 core/forms/filtersets.py:35 -#: core/forms/filtersets.py:76 core/tables/data.py:23 core/tables/jobs.py:26 -#: core/tables/tasks.py:88 dcim/forms/bulk_edit.py:105 -#: dcim/forms/bulk_edit.py:180 dcim/forms/bulk_edit.py:261 -#: dcim/forms/bulk_edit.py:598 dcim/forms/bulk_edit.py:654 -#: dcim/forms/bulk_edit.py:686 dcim/forms/bulk_edit.py:813 -#: dcim/forms/bulk_edit.py:1594 dcim/forms/bulk_import.py:87 -#: dcim/forms/bulk_import.py:146 dcim/forms/bulk_import.py:202 -#: dcim/forms/bulk_import.py:450 dcim/forms/bulk_import.py:604 -#: dcim/forms/bulk_import.py:1155 dcim/forms/bulk_import.py:1322 -#: dcim/forms/bulk_import.py:1386 dcim/forms/filtersets.py:171 -#: dcim/forms/filtersets.py:230 dcim/forms/filtersets.py:282 -#: dcim/forms/filtersets.py:728 dcim/forms/filtersets.py:843 -#: dcim/forms/filtersets.py:877 dcim/forms/filtersets.py:978 -#: dcim/forms/filtersets.py:1089 dcim/tables/devices.py:145 -#: dcim/tables/devices.py:818 dcim/tables/devices.py:1046 -#: dcim/tables/modules.py:69 dcim/tables/power.py:74 dcim/tables/racks.py:66 -#: dcim/tables/sites.py:82 dcim/tables/sites.py:133 ipam/forms/bulk_edit.py:241 -#: ipam/forms/bulk_edit.py:290 ipam/forms/bulk_edit.py:338 -#: ipam/forms/bulk_edit.py:544 ipam/forms/bulk_import.py:191 -#: ipam/forms/bulk_import.py:256 ipam/forms/bulk_import.py:292 -#: ipam/forms/bulk_import.py:458 ipam/forms/filtersets.py:210 -#: ipam/forms/filtersets.py:281 ipam/forms/filtersets.py:355 -#: ipam/forms/filtersets.py:508 ipam/forms/model_forms.py:466 -#: ipam/tables/ip.py:236 ipam/tables/ip.py:309 ipam/tables/ip.py:359 -#: ipam/tables/ip.py:421 ipam/tables/ip.py:448 ipam/tables/vlans.py:122 -#: ipam/tables/vlans.py:227 templates/circuits/circuit.html:34 -#: templates/core/datasource.html:46 templates/core/job.html:30 -#: templates/core/rq_task.html:81 templates/core/system.html:18 -#: templates/dcim/cable.html:19 templates/dcim/device.html:175 -#: templates/dcim/location.html:45 templates/dcim/module.html:66 -#: templates/dcim/powerfeed.html:36 templates/dcim/rack.html:43 -#: templates/dcim/site.html:42 templates/extras/script_list.html:49 -#: 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:33 -#: 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:59 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:19 +#: netbox/circuits/forms/bulk_edit.py:134 +#: netbox/circuits/forms/bulk_import.py:95 +#: 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/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:1594 +#: netbox/dcim/forms/bulk_import.py:87 netbox/dcim/forms/bulk_import.py:146 +#: netbox/dcim/forms/bulk_import.py:202 netbox/dcim/forms/bulk_import.py:450 +#: netbox/dcim/forms/bulk_import.py:604 netbox/dcim/forms/bulk_import.py:1155 +#: netbox/dcim/forms/bulk_import.py:1322 netbox/dcim/forms/bulk_import.py:1386 +#: netbox/dcim/forms/filtersets.py:171 netbox/dcim/forms/filtersets.py:230 +#: netbox/dcim/forms/filtersets.py:282 netbox/dcim/forms/filtersets.py:728 +#: netbox/dcim/forms/filtersets.py:843 netbox/dcim/forms/filtersets.py:877 +#: netbox/dcim/forms/filtersets.py:978 netbox/dcim/forms/filtersets.py:1089 +#: netbox/dcim/tables/devices.py:145 netbox/dcim/tables/devices.py:818 +#: netbox/dcim/tables/devices.py:1046 netbox/dcim/tables/modules.py:69 +#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:66 +#: netbox/dcim/tables/sites.py:82 netbox/dcim/tables/sites.py:133 +#: netbox/ipam/forms/bulk_edit.py:241 netbox/ipam/forms/bulk_edit.py:290 +#: netbox/ipam/forms/bulk_edit.py:338 netbox/ipam/forms/bulk_edit.py:544 +#: 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/filtersets.py:210 netbox/ipam/forms/filtersets.py:281 +#: netbox/ipam/forms/filtersets.py:355 netbox/ipam/forms/filtersets.py:508 +#: netbox/ipam/forms/model_forms.py:466 netbox/ipam/tables/ip.py:236 +#: netbox/ipam/tables/ip.py:309 netbox/ipam/tables/ip.py:359 +#: netbox/ipam/tables/ip.py:421 netbox/ipam/tables/ip.py:448 +#: netbox/ipam/tables/vlans.py:122 netbox/ipam/tables/vlans.py:227 +#: netbox/templates/circuits/circuit.html:34 +#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:30 +#: netbox/templates/core/rq_task.html:81 netbox/templates/core/system.html:18 +#: netbox/templates/dcim/cable.html:19 netbox/templates/dcim/device.html:176 +#: 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/site.html:43 +#: netbox/templates/extras/script_list.html:49 +#: 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:33 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:59 +#: 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:19 msgid "Status" msgstr "" -#: circuits/forms/bulk_edit.py:140 circuits/forms/bulk_import.py:100 -#: circuits/forms/filtersets.py:117 dcim/forms/bulk_edit.py:121 -#: dcim/forms/bulk_edit.py:186 dcim/forms/bulk_edit.py:256 -#: dcim/forms/bulk_edit.py:368 dcim/forms/bulk_edit.py:588 -#: dcim/forms/bulk_edit.py:692 dcim/forms/bulk_edit.py:1599 -#: dcim/forms/bulk_import.py:106 dcim/forms/bulk_import.py:151 -#: dcim/forms/bulk_import.py:195 dcim/forms/bulk_import.py:282 -#: dcim/forms/bulk_import.py:424 dcim/forms/bulk_import.py:1167 -#: dcim/forms/bulk_import.py:1379 dcim/forms/filtersets.py:166 -#: dcim/forms/filtersets.py:198 dcim/forms/filtersets.py:249 -#: dcim/forms/filtersets.py:334 dcim/forms/filtersets.py:355 -#: dcim/forms/filtersets.py:652 dcim/forms/filtersets.py:835 -#: dcim/forms/filtersets.py:897 dcim/forms/filtersets.py:927 -#: dcim/forms/filtersets.py:1049 dcim/tables/power.py:88 -#: extras/filtersets.py:564 extras/forms/filtersets.py:332 -#: extras/forms/filtersets.py:405 ipam/forms/bulk_edit.py:41 -#: ipam/forms/bulk_edit.py:66 ipam/forms/bulk_edit.py:110 -#: ipam/forms/bulk_edit.py:139 ipam/forms/bulk_edit.py:164 -#: ipam/forms/bulk_edit.py:236 ipam/forms/bulk_edit.py:285 -#: ipam/forms/bulk_edit.py:333 ipam/forms/bulk_edit.py:539 -#: ipam/forms/bulk_import.py:37 ipam/forms/bulk_import.py:66 -#: ipam/forms/bulk_import.py:94 ipam/forms/bulk_import.py:114 -#: ipam/forms/bulk_import.py:134 ipam/forms/bulk_import.py:163 -#: ipam/forms/bulk_import.py:249 ipam/forms/bulk_import.py:285 -#: ipam/forms/bulk_import.py:451 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:476 -#: ipam/tables/ip.py:451 ipam/tables/vlans.py:224 -#: templates/circuits/circuit.html:38 templates/dcim/cable.html:23 -#: templates/dcim/device.html:78 templates/dcim/location.html:49 -#: templates/dcim/powerfeed.html:44 templates/dcim/rack.html:34 -#: templates/dcim/rackreservation.html:49 templates/dcim/site.html:46 -#: 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:35 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:140 +#: netbox/circuits/forms/bulk_import.py:100 +#: 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:1599 +#: netbox/dcim/forms/bulk_import.py:106 netbox/dcim/forms/bulk_import.py:151 +#: netbox/dcim/forms/bulk_import.py:195 netbox/dcim/forms/bulk_import.py:282 +#: netbox/dcim/forms/bulk_import.py:424 netbox/dcim/forms/bulk_import.py:1167 +#: netbox/dcim/forms/bulk_import.py:1379 netbox/dcim/forms/filtersets.py:166 +#: netbox/dcim/forms/filtersets.py:198 netbox/dcim/forms/filtersets.py:249 +#: netbox/dcim/forms/filtersets.py:334 netbox/dcim/forms/filtersets.py:355 +#: netbox/dcim/forms/filtersets.py:652 netbox/dcim/forms/filtersets.py:835 +#: netbox/dcim/forms/filtersets.py:897 netbox/dcim/forms/filtersets.py:927 +#: netbox/dcim/forms/filtersets.py:1049 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:236 netbox/ipam/forms/bulk_edit.py:285 +#: netbox/ipam/forms/bulk_edit.py:333 netbox/ipam/forms/bulk_edit.py:539 +#: 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/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:451 netbox/ipam/tables/vlans.py:224 +#: netbox/templates/circuits/circuit.html:38 +#: 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/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:35 +#: 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:145 circuits/forms/filtersets.py:172 +#: netbox/circuits/forms/bulk_edit.py:145 +#: netbox/circuits/forms/filtersets.py:172 msgid "Install date" msgstr "" -#: circuits/forms/bulk_edit.py:150 circuits/forms/filtersets.py:177 +#: netbox/circuits/forms/bulk_edit.py:150 +#: netbox/circuits/forms/filtersets.py:177 msgid "Termination date" msgstr "" -#: circuits/forms/bulk_edit.py:156 circuits/forms/filtersets.py:184 +#: netbox/circuits/forms/bulk_edit.py:156 +#: netbox/circuits/forms/filtersets.py:184 msgid "Commit rate (Kbps)" msgstr "" -#: circuits/forms/bulk_edit.py:171 circuits/forms/model_forms.py:110 +#: netbox/circuits/forms/bulk_edit.py:171 +#: netbox/circuits/forms/model_forms.py:110 msgid "Service Parameters" msgstr "" -#: circuits/forms/bulk_edit.py:172 circuits/forms/model_forms.py:111 -#: dcim/forms/model_forms.py:138 dcim/forms/model_forms.py:180 -#: dcim/forms/model_forms.py:228 dcim/forms/model_forms.py:267 -#: dcim/forms/model_forms.py:713 dcim/forms/model_forms.py:1636 -#: ipam/forms/model_forms.py:62 ipam/forms/model_forms.py:79 -#: ipam/forms/model_forms.py:113 ipam/forms/model_forms.py:134 -#: ipam/forms/model_forms.py:158 ipam/forms/model_forms.py:230 -#: ipam/forms/model_forms.py:259 ipam/forms/model_forms.py:314 -#: netbox/navigation/menu.py:37 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:163 +#: 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:713 netbox/dcim/forms/model_forms.py:1636 +#: netbox/ipam/forms/model_forms.py:62 netbox/ipam/forms/model_forms.py:79 +#: netbox/ipam/forms/model_forms.py:113 netbox/ipam/forms/model_forms.py:134 +#: netbox/ipam/forms/model_forms.py:158 netbox/ipam/forms/model_forms.py:230 +#: netbox/ipam/forms/model_forms.py:259 netbox/ipam/forms/model_forms.py:314 +#: netbox/netbox/navigation/menu.py:37 +#: 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:163 msgid "Tenancy" msgstr "" -#: circuits/forms/bulk_edit.py:191 circuits/forms/bulk_edit.py:215 -#: circuits/forms/model_forms.py:153 circuits/tables/circuits.py:109 -#: templates/circuits/inc/circuit_termination_fields.html:62 -#: templates/circuits/providernetwork.html:17 +#: 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:109 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:62 +#: netbox/templates/circuits/providernetwork.html:17 msgid "Provider Network" msgstr "" -#: circuits/forms/bulk_edit.py:197 +#: netbox/circuits/forms/bulk_edit.py:197 msgid "Port speed (Kbps)" msgstr "" -#: circuits/forms/bulk_edit.py:201 +#: netbox/circuits/forms/bulk_edit.py:201 msgid "Upstream speed (Kbps)" msgstr "" -#: circuits/forms/bulk_edit.py:204 dcim/forms/bulk_edit.py:849 -#: dcim/forms/bulk_edit.py:1208 dcim/forms/bulk_edit.py:1225 -#: dcim/forms/bulk_edit.py:1242 dcim/forms/bulk_edit.py:1260 -#: dcim/forms/bulk_edit.py:1348 dcim/forms/bulk_edit.py:1487 -#: dcim/forms/bulk_edit.py:1504 +#: netbox/circuits/forms/bulk_edit.py:204 netbox/dcim/forms/bulk_edit.py:849 +#: netbox/dcim/forms/bulk_edit.py:1208 netbox/dcim/forms/bulk_edit.py:1225 +#: netbox/dcim/forms/bulk_edit.py:1242 netbox/dcim/forms/bulk_edit.py:1260 +#: netbox/dcim/forms/bulk_edit.py:1348 netbox/dcim/forms/bulk_edit.py:1487 +#: netbox/dcim/forms/bulk_edit.py:1504 msgid "Mark connected" msgstr "" -#: circuits/forms/bulk_edit.py:217 circuits/forms/model_forms.py:155 -#: 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:217 +#: netbox/circuits/forms/model_forms.py:155 +#: 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:219 circuits/forms/model_forms.py:157 +#: netbox/circuits/forms/bulk_edit.py:219 +#: netbox/circuits/forms/model_forms.py:157 msgid "Termination Details" msgstr "" -#: circuits/forms/bulk_import.py:38 circuits/forms/bulk_import.py:53 -#: circuits/forms/bulk_import.py:79 +#: netbox/circuits/forms/bulk_import.py:38 +#: netbox/circuits/forms/bulk_import.py:53 +#: netbox/circuits/forms/bulk_import.py:79 msgid "Assigned provider" msgstr "" -#: circuits/forms/bulk_import.py:70 dcim/forms/bulk_import.py:178 -#: dcim/forms/bulk_import.py:388 dcim/forms/bulk_import.py:1108 -#: dcim/forms/bulk_import.py:1187 extras/forms/bulk_import.py:232 +#: netbox/circuits/forms/bulk_import.py:70 netbox/dcim/forms/bulk_import.py:178 +#: netbox/dcim/forms/bulk_import.py:388 netbox/dcim/forms/bulk_import.py:1108 +#: netbox/dcim/forms/bulk_import.py:1187 netbox/extras/forms/bulk_import.py:232 msgid "RGB color in hexadecimal. Example:" msgstr "" -#: circuits/forms/bulk_import.py:85 +#: netbox/circuits/forms/bulk_import.py:85 msgid "Assigned provider account" msgstr "" -#: circuits/forms/bulk_import.py:92 +#: netbox/circuits/forms/bulk_import.py:92 msgid "Type of circuit" msgstr "" -#: circuits/forms/bulk_import.py:97 dcim/forms/bulk_import.py:89 -#: dcim/forms/bulk_import.py:148 dcim/forms/bulk_import.py:204 -#: dcim/forms/bulk_import.py:452 dcim/forms/bulk_import.py:606 -#: dcim/forms/bulk_import.py:1324 ipam/forms/bulk_import.py:193 -#: ipam/forms/bulk_import.py:258 ipam/forms/bulk_import.py:294 -#: ipam/forms/bulk_import.py:460 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:97 netbox/dcim/forms/bulk_import.py:89 +#: netbox/dcim/forms/bulk_import.py:148 netbox/dcim/forms/bulk_import.py:204 +#: netbox/dcim/forms/bulk_import.py:452 netbox/dcim/forms/bulk_import.py:606 +#: netbox/dcim/forms/bulk_import.py:1324 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/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:104 dcim/forms/bulk_import.py:110 -#: dcim/forms/bulk_import.py:155 dcim/forms/bulk_import.py:286 -#: dcim/forms/bulk_import.py:428 dcim/forms/bulk_import.py:1171 -#: dcim/forms/bulk_import.py:1319 dcim/forms/bulk_import.py:1383 -#: ipam/forms/bulk_import.py:41 ipam/forms/bulk_import.py:70 -#: ipam/forms/bulk_import.py:98 ipam/forms/bulk_import.py:118 -#: ipam/forms/bulk_import.py:138 ipam/forms/bulk_import.py:167 -#: ipam/forms/bulk_import.py:253 ipam/forms/bulk_import.py:289 -#: ipam/forms/bulk_import.py:455 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:104 +#: netbox/dcim/forms/bulk_import.py:110 netbox/dcim/forms/bulk_import.py:155 +#: netbox/dcim/forms/bulk_import.py:286 netbox/dcim/forms/bulk_import.py:428 +#: netbox/dcim/forms/bulk_import.py:1171 netbox/dcim/forms/bulk_import.py:1319 +#: netbox/dcim/forms/bulk_import.py:1383 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/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:122 -#: 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:122 +#: 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:132 circuits/forms/filtersets.py:145 -#: circuits/forms/filtersets.py:225 circuits/forms/model_forms.py:142 +#: netbox/circuits/forms/bulk_import.py:132 +#: netbox/circuits/forms/filtersets.py:145 +#: netbox/circuits/forms/filtersets.py:225 +#: netbox/circuits/forms/model_forms.py:142 msgid "Provider network" msgstr "" -#: circuits/forms/filtersets.py:28 circuits/forms/filtersets.py:116 -#: circuits/forms/filtersets.py:198 dcim/forms/bulk_edit.py:248 -#: dcim/forms/bulk_edit.py:346 dcim/forms/bulk_edit.py:580 -#: dcim/forms/bulk_edit.py:627 dcim/forms/bulk_edit.py:780 -#: dcim/forms/bulk_import.py:189 dcim/forms/bulk_import.py:263 -#: dcim/forms/bulk_import.py:491 dcim/forms/bulk_import.py:1268 -#: dcim/forms/bulk_import.py:1302 dcim/forms/filtersets.py:93 -#: dcim/forms/filtersets.py:246 dcim/forms/filtersets.py:279 -#: dcim/forms/filtersets.py:331 dcim/forms/filtersets.py:382 -#: dcim/forms/filtersets.py:649 dcim/forms/filtersets.py:691 -#: dcim/forms/filtersets.py:896 dcim/forms/filtersets.py:925 -#: dcim/forms/filtersets.py:945 dcim/forms/filtersets.py:1009 -#: dcim/forms/filtersets.py:1039 dcim/forms/filtersets.py:1048 -#: dcim/forms/filtersets.py:1159 dcim/forms/filtersets.py:1181 -#: dcim/forms/filtersets.py:1203 dcim/forms/filtersets.py:1220 -#: dcim/forms/filtersets.py:1240 dcim/forms/filtersets.py:1348 -#: dcim/forms/filtersets.py:1370 dcim/forms/filtersets.py:1391 -#: dcim/forms/filtersets.py:1406 dcim/forms/filtersets.py:1420 -#: dcim/forms/model_forms.py:179 dcim/forms/model_forms.py:211 -#: dcim/forms/model_forms.py:411 dcim/forms/model_forms.py:673 -#: dcim/tables/devices.py:162 dcim/tables/power.py:30 dcim/tables/racks.py:58 -#: dcim/tables/racks.py:143 extras/filtersets.py:488 -#: extras/forms/filtersets.py:329 ipam/forms/bulk_edit.py:457 -#: ipam/forms/filtersets.py:173 ipam/forms/filtersets.py:414 -#: ipam/forms/filtersets.py:437 ipam/forms/filtersets.py:474 -#: ipam/forms/model_forms.py:599 templates/dcim/device.html:25 -#: 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:26 -#: 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: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:189 netbox/dcim/forms/bulk_import.py:263 +#: netbox/dcim/forms/bulk_import.py:491 netbox/dcim/forms/bulk_import.py:1268 +#: netbox/dcim/forms/bulk_import.py:1302 netbox/dcim/forms/filtersets.py:93 +#: netbox/dcim/forms/filtersets.py:246 netbox/dcim/forms/filtersets.py:279 +#: netbox/dcim/forms/filtersets.py:331 netbox/dcim/forms/filtersets.py:382 +#: netbox/dcim/forms/filtersets.py:649 netbox/dcim/forms/filtersets.py:691 +#: netbox/dcim/forms/filtersets.py:896 netbox/dcim/forms/filtersets.py:925 +#: netbox/dcim/forms/filtersets.py:945 netbox/dcim/forms/filtersets.py:1009 +#: netbox/dcim/forms/filtersets.py:1039 netbox/dcim/forms/filtersets.py:1048 +#: netbox/dcim/forms/filtersets.py:1159 netbox/dcim/forms/filtersets.py:1181 +#: netbox/dcim/forms/filtersets.py:1203 netbox/dcim/forms/filtersets.py:1220 +#: netbox/dcim/forms/filtersets.py:1240 netbox/dcim/forms/filtersets.py:1348 +#: netbox/dcim/forms/filtersets.py:1370 netbox/dcim/forms/filtersets.py:1391 +#: netbox/dcim/forms/filtersets.py:1406 netbox/dcim/forms/filtersets.py:1420 +#: 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:673 +#: netbox/dcim/tables/devices.py:162 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:457 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/ipam/forms/model_forms.py:599 +#: 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/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:30 circuits/forms/filtersets.py:118 -#: dcim/forms/filtersets.py:137 dcim/forms/filtersets.py:151 -#: dcim/forms/filtersets.py:167 dcim/forms/filtersets.py:199 -#: dcim/forms/filtersets.py:250 dcim/forms/filtersets.py:335 -#: dcim/forms/filtersets.py:406 dcim/forms/filtersets.py:653 -#: dcim/forms/filtersets.py:1010 netbox/navigation/menu.py:44 -#: netbox/navigation/menu.py:46 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:30 +#: netbox/circuits/forms/filtersets.py:118 netbox/dcim/forms/filtersets.py:137 +#: netbox/dcim/forms/filtersets.py:151 netbox/dcim/forms/filtersets.py:167 +#: netbox/dcim/forms/filtersets.py:199 netbox/dcim/forms/filtersets.py:250 +#: netbox/dcim/forms/filtersets.py:335 netbox/dcim/forms/filtersets.py:406 +#: netbox/dcim/forms/filtersets.py:653 netbox/dcim/forms/filtersets.py:1010 +#: netbox/netbox/navigation/menu.py:44 netbox/netbox/navigation/menu.py:46 +#: 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:35 circuits/forms/filtersets.py:155 -#: dcim/forms/bulk_edit.py:111 dcim/forms/bulk_edit.py:223 -#: dcim/forms/bulk_edit.py:755 dcim/forms/bulk_import.py:92 -#: dcim/forms/filtersets.py:71 dcim/forms/filtersets.py:178 -#: dcim/forms/filtersets.py:204 dcim/forms/filtersets.py:257 -#: dcim/forms/filtersets.py:360 dcim/forms/filtersets.py:668 -#: dcim/forms/filtersets.py:902 dcim/forms/filtersets.py:932 -#: dcim/forms/filtersets.py:1016 dcim/forms/filtersets.py:1055 -#: dcim/forms/filtersets.py:1468 dcim/forms/filtersets.py:1492 -#: dcim/forms/filtersets.py:1516 dcim/forms/model_forms.py:111 -#: dcim/forms/object_create.py:375 dcim/tables/devices.py:148 -#: dcim/tables/sites.py:85 extras/filtersets.py:455 ipam/forms/bulk_edit.py:206 -#: ipam/forms/bulk_edit.py:438 ipam/forms/bulk_edit.py:512 -#: ipam/forms/filtersets.py:217 ipam/forms/filtersets.py:422 -#: ipam/forms/filtersets.py:482 ipam/forms/model_forms.py:571 -#: templates/dcim/device.html:17 templates/dcim/rack.html:16 -#: templates/dcim/rackreservation.html:22 templates/dcim/region.html:26 -#: templates/dcim/site.html:30 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: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:71 +#: netbox/dcim/forms/filtersets.py:178 netbox/dcim/forms/filtersets.py:204 +#: netbox/dcim/forms/filtersets.py:257 netbox/dcim/forms/filtersets.py:360 +#: netbox/dcim/forms/filtersets.py:668 netbox/dcim/forms/filtersets.py:902 +#: netbox/dcim/forms/filtersets.py:932 netbox/dcim/forms/filtersets.py:1016 +#: netbox/dcim/forms/filtersets.py:1055 netbox/dcim/forms/filtersets.py:1468 +#: netbox/dcim/forms/filtersets.py:1492 netbox/dcim/forms/filtersets.py:1516 +#: netbox/dcim/forms/model_forms.py:111 netbox/dcim/forms/object_create.py:375 +#: netbox/dcim/tables/devices.py:148 netbox/dcim/tables/sites.py:85 +#: netbox/extras/filtersets.py:455 netbox/ipam/forms/bulk_edit.py:206 +#: netbox/ipam/forms/bulk_edit.py:438 netbox/ipam/forms/bulk_edit.py:512 +#: netbox/ipam/forms/filtersets.py:217 netbox/ipam/forms/filtersets.py:422 +#: netbox/ipam/forms/filtersets.py:482 netbox/ipam/forms/model_forms.py:571 +#: 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:40 circuits/forms/filtersets.py:160 -#: dcim/forms/bulk_edit.py:231 dcim/forms/bulk_edit.py:763 -#: dcim/forms/filtersets.py:76 dcim/forms/filtersets.py:183 -#: dcim/forms/filtersets.py:209 dcim/forms/filtersets.py:270 -#: dcim/forms/filtersets.py:365 dcim/forms/filtersets.py:673 -#: dcim/forms/filtersets.py:907 dcim/forms/filtersets.py:1021 -#: dcim/forms/filtersets.py:1060 dcim/forms/object_create.py:383 -#: extras/filtersets.py:472 ipam/forms/bulk_edit.py:211 -#: ipam/forms/bulk_edit.py:445 ipam/forms/bulk_edit.py:517 -#: ipam/forms/filtersets.py:222 ipam/forms/filtersets.py:427 -#: ipam/forms/filtersets.py:487 ipam/forms/model_forms.py:584 -#: 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: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:76 +#: netbox/dcim/forms/filtersets.py:183 netbox/dcim/forms/filtersets.py:209 +#: netbox/dcim/forms/filtersets.py:270 netbox/dcim/forms/filtersets.py:365 +#: netbox/dcim/forms/filtersets.py:673 netbox/dcim/forms/filtersets.py:907 +#: netbox/dcim/forms/filtersets.py:1021 netbox/dcim/forms/filtersets.py:1060 +#: 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:445 +#: netbox/ipam/forms/bulk_edit.py:517 netbox/ipam/forms/filtersets.py:222 +#: netbox/ipam/forms/filtersets.py:427 netbox/ipam/forms/filtersets.py:487 +#: netbox/ipam/forms/model_forms.py:584 +#: 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:63 circuits/forms/filtersets.py:81 -#: circuits/forms/filtersets.py:100 circuits/forms/filtersets.py:115 -#: core/forms/filtersets.py:64 dcim/forms/bulk_edit.py:726 -#: dcim/forms/filtersets.py:165 dcim/forms/filtersets.py:197 -#: dcim/forms/filtersets.py:834 dcim/forms/filtersets.py:926 -#: dcim/forms/filtersets.py:1050 dcim/forms/filtersets.py:1158 -#: dcim/forms/filtersets.py:1180 dcim/forms/filtersets.py:1202 -#: dcim/forms/filtersets.py:1219 dcim/forms/filtersets.py:1236 -#: dcim/forms/filtersets.py:1347 dcim/forms/filtersets.py:1369 -#: dcim/forms/filtersets.py:1390 dcim/forms/filtersets.py:1405 -#: dcim/forms/filtersets.py:1418 extras/forms/filtersets.py:43 -#: extras/forms/filtersets.py:112 extras/forms/filtersets.py:143 -#: extras/forms/filtersets.py:183 extras/forms/filtersets.py:199 -#: extras/forms/filtersets.py:230 extras/forms/filtersets.py:254 -#: extras/forms/filtersets.py:450 extras/forms/filtersets.py:488 -#: ipam/forms/filtersets.py:99 ipam/forms/filtersets.py:266 -#: ipam/forms/filtersets.py:307 ipam/forms/filtersets.py:382 -#: ipam/forms/filtersets.py:475 ipam/forms/filtersets.py:534 -#: ipam/forms/filtersets.py:552 netbox/tables/tables.py:255 -#: virtualization/forms/filtersets.py:45 virtualization/forms/filtersets.py:103 -#: virtualization/forms/filtersets.py:194 -#: virtualization/forms/filtersets.py:239 vpn/forms/filtersets.py:213 -#: wireless/forms/filtersets.py:34 wireless/forms/filtersets.py:74 +#: 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:165 +#: netbox/dcim/forms/filtersets.py:197 netbox/dcim/forms/filtersets.py:834 +#: netbox/dcim/forms/filtersets.py:926 netbox/dcim/forms/filtersets.py:1050 +#: netbox/dcim/forms/filtersets.py:1158 netbox/dcim/forms/filtersets.py:1180 +#: netbox/dcim/forms/filtersets.py:1202 netbox/dcim/forms/filtersets.py:1219 +#: netbox/dcim/forms/filtersets.py:1236 netbox/dcim/forms/filtersets.py:1347 +#: netbox/dcim/forms/filtersets.py:1369 netbox/dcim/forms/filtersets.py:1390 +#: netbox/dcim/forms/filtersets.py:1405 netbox/dcim/forms/filtersets.py:1418 +#: 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:488 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:255 +#: 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/wireless/forms/filtersets.py:74 msgid "Attributes" msgstr "" -#: circuits/forms/filtersets.py:71 circuits/tables/circuits.py:61 -#: circuits/tables/providers.py:66 templates/circuits/circuit.html:22 -#: templates/circuits/provideraccount.html:24 +#: netbox/circuits/forms/filtersets.py:71 netbox/circuits/tables/circuits.py:61 +#: 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:215 +#: netbox/circuits/forms/filtersets.py:215 msgid "Term Side" msgstr "" -#: circuits/models/circuits.py:25 dcim/models/cables.py:67 -#: dcim/models/device_component_templates.py:491 -#: dcim/models/device_component_templates.py:591 -#: dcim/models/device_components.py:976 dcim/models/device_components.py:1050 -#: dcim/models/device_components.py:1166 dcim/models/devices.py:469 -#: dcim/models/racks.py:44 extras/models/tags.py:28 +#: 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/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/extras/models/tags.py:28 msgid "color" msgstr "" -#: circuits/models/circuits.py:34 +#: netbox/circuits/models/circuits.py:34 msgid "circuit type" msgstr "" -#: circuits/models/circuits.py:35 +#: netbox/circuits/models/circuits.py:35 msgid "circuit types" msgstr "" -#: circuits/models/circuits.py:46 +#: netbox/circuits/models/circuits.py:46 msgid "circuit ID" msgstr "" -#: circuits/models/circuits.py:47 +#: netbox/circuits/models/circuits.py:47 msgid "Unique circuit ID" msgstr "" -#: circuits/models/circuits.py:67 core/models/data.py:55 core/models/jobs.py:85 -#: dcim/models/cables.py:49 dcim/models/devices.py:643 -#: dcim/models/devices.py:1155 dcim/models/devices.py:1364 -#: dcim/models/power.py:96 dcim/models/racks.py:98 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:175 -#: virtualization/models/clusters.py:74 -#: virtualization/models/virtualmachines.py:84 vpn/models/tunnels.py:40 -#: wireless/models.py:94 wireless/models.py:158 +#: 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/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/virtualization/models/virtualmachines.py:84 +#: netbox/vpn/models/tunnels.py:40 netbox/wireless/models.py:94 +#: netbox/wireless/models.py:158 msgid "status" msgstr "" -#: circuits/models/circuits.py:82 +#: netbox/circuits/models/circuits.py:82 msgid "installed" msgstr "" -#: circuits/models/circuits.py:87 +#: netbox/circuits/models/circuits.py:87 msgid "terminates" msgstr "" -#: circuits/models/circuits.py:92 +#: netbox/circuits/models/circuits.py:92 msgid "commit rate (Kbps)" msgstr "" -#: circuits/models/circuits.py:93 +#: netbox/circuits/models/circuits.py:93 msgid "Committed rate" msgstr "" -#: circuits/models/circuits.py:135 +#: netbox/circuits/models/circuits.py:135 msgid "circuit" msgstr "" -#: circuits/models/circuits.py:136 +#: netbox/circuits/models/circuits.py:136 msgid "circuits" msgstr "" -#: circuits/models/circuits.py:169 +#: netbox/circuits/models/circuits.py:169 msgid "termination" msgstr "" -#: circuits/models/circuits.py:186 +#: netbox/circuits/models/circuits.py:186 msgid "port speed (Kbps)" msgstr "" -#: circuits/models/circuits.py:189 +#: netbox/circuits/models/circuits.py:189 msgid "Physical circuit speed" msgstr "" -#: circuits/models/circuits.py:194 +#: netbox/circuits/models/circuits.py:194 msgid "upstream speed (Kbps)" msgstr "" -#: circuits/models/circuits.py:195 +#: netbox/circuits/models/circuits.py:195 msgid "Upstream speed, if different from port speed" msgstr "" -#: circuits/models/circuits.py:200 +#: netbox/circuits/models/circuits.py:200 msgid "cross-connect ID" msgstr "" -#: circuits/models/circuits.py:201 +#: netbox/circuits/models/circuits.py:201 msgid "ID of the local cross-connect" msgstr "" -#: circuits/models/circuits.py:206 +#: netbox/circuits/models/circuits.py:206 msgid "patch panel/port(s)" msgstr "" -#: circuits/models/circuits.py:207 +#: netbox/circuits/models/circuits.py:207 msgid "Patch panel ID and port number(s)" msgstr "" -#: circuits/models/circuits.py:210 dcim/models/device_component_templates.py:61 -#: dcim/models/device_components.py:69 dcim/models/racks.py:538 -#: extras/models/configs.py:45 extras/models/configs.py:219 -#: extras/models/customfields.py:123 extras/models/models.py:60 -#: extras/models/models.py:186 extras/models/models.py:424 -#: extras/models/models.py:539 extras/models/staging.py:31 -#: extras/models/tags.py:32 netbox/models/__init__.py:109 -#: netbox/models/__init__.py:144 netbox/models/__init__.py:190 -#: users/models/permissions.py:24 users/models/tokens.py:58 -#: users/models/users.py:33 virtualization/models/virtualmachines.py:284 +#: netbox/circuits/models/circuits.py:210 +#: netbox/dcim/models/device_component_templates.py:61 +#: netbox/dcim/models/device_components.py:69 netbox/dcim/models/racks.py:538 +#: netbox/extras/models/configs.py:45 netbox/extras/models/configs.py:219 +#: netbox/extras/models/customfields.py:123 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:31 +#: 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 msgid "description" msgstr "" -#: circuits/models/circuits.py:223 +#: netbox/circuits/models/circuits.py:223 msgid "circuit termination" msgstr "" -#: circuits/models/circuits.py:224 +#: netbox/circuits/models/circuits.py:224 msgid "circuit terminations" msgstr "" -#: circuits/models/circuits.py:237 +#: netbox/circuits/models/circuits.py:237 msgid "" "A circuit termination must attach to either a site or a provider network." msgstr "" -#: circuits/models/circuits.py:239 +#: netbox/circuits/models/circuits.py:239 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:42 -#: core/models/jobs.py:46 dcim/models/device_component_templates.py:43 -#: dcim/models/device_components.py:54 dcim/models/devices.py:583 -#: dcim/models/devices.py:1295 dcim/models/devices.py:1360 -#: dcim/models/power.py:39 dcim/models/power.py:92 dcim/models/racks.py:63 -#: dcim/models/sites.py:138 extras/models/configs.py:36 -#: extras/models/configs.py:215 extras/models/customfields.py:90 -#: extras/models/models.py:55 extras/models/models.py:181 -#: extras/models/models.py:324 extras/models/models.py:420 -#: extras/models/models.py:529 extras/models/models.py:624 -#: extras/models/scripts.py:30 extras/models/staging.py:26 -#: ipam/models/asns.py:18 ipam/models/fhrp.py:25 ipam/models/services.py:51 -#: ipam/models/services.py:87 ipam/models/vlans.py:26 ipam/models/vlans.py:164 -#: ipam/models/vrfs.py:22 ipam/models/vrfs.py:79 netbox/models/__init__.py:136 -#: netbox/models/__init__.py:180 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:274 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:50 +#: 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/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/sites.py:138 +#: netbox/extras/models/configs.py:36 netbox/extras/models/configs.py:215 +#: netbox/extras/models/customfields.py:90 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: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/vrfs.py:22 +#: netbox/ipam/models/vrfs.py:79 netbox/netbox/models/__init__.py:136 +#: netbox/netbox/models/__init__.py:180 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/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 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/sites.py:149 extras/models/models.py:534 ipam/models/asns.py:23 -#: ipam/models/vlans.py:30 netbox/models/__init__.py:140 -#: netbox/models/__init__.py:185 tenancy/models/tenants.py:25 -#: tenancy/models/tenants.py:49 vpn/models/l2vpn.py:27 wireless/models.py:55 +#: 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 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:30 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:13 -#: core/tables/tasks.py:11 core/tables/tasks.py:115 dcim/forms/filtersets.py:61 -#: dcim/forms/object_create.py:43 dcim/tables/devices.py:60 -#: dcim/tables/devices.py:97 dcim/tables/devices.py:139 -#: dcim/tables/devices.py:294 dcim/tables/devices.py:380 -#: dcim/tables/devices.py:424 dcim/tables/devices.py:476 -#: dcim/tables/devices.py:528 dcim/tables/devices.py:644 -#: dcim/tables/devices.py:726 dcim/tables/devices.py:776 -#: dcim/tables/devices.py:842 dcim/tables/devices.py:957 -#: dcim/tables/devices.py:977 dcim/tables/devices.py:1006 -#: dcim/tables/devices.py:1036 dcim/tables/devicetypes.py:32 -#: dcim/tables/power.py:22 dcim/tables/power.py:62 dcim/tables/racks.py:23 -#: dcim/tables/racks.py:53 dcim/tables/sites.py:24 dcim/tables/sites.py:51 -#: dcim/tables/sites.py:78 dcim/tables/sites.py:125 -#: extras/forms/filtersets.py:191 extras/tables/tables.py:42 -#: extras/tables/tables.py:88 extras/tables/tables.py:120 -#: extras/tables/tables.py:144 extras/tables/tables.py:209 -#: extras/tables/tables.py:256 extras/tables/tables.py:279 -#: extras/tables/tables.py:329 extras/tables/tables.py:381 -#: extras/tables/tables.py:404 ipam/forms/bulk_edit.py:391 -#: ipam/forms/filtersets.py:386 ipam/tables/asn.py:16 ipam/tables/ip.py:85 -#: ipam/tables/ip.py:159 ipam/tables/services.py:15 ipam/tables/services.py:40 -#: ipam/tables/vlans.py:64 ipam/tables/vlans.py:110 ipam/tables/vrfs.py:26 -#: ipam/tables/vrfs.py:67 templates/circuits/circuittype.html:22 -#: templates/circuits/provideraccount.html:28 -#: templates/circuits/providernetwork.html:24 templates/core/datasource.html:34 -#: templates/core/job.html:26 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:26 -#: 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/savedfilter.html:13 -#: templates/extras/script_list.html:46 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:54 -#: virtualization/tables/virtualmachines.py:132 -#: virtualization/tables/virtualmachines.py:185 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:30 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/tasks.py:11 netbox/core/tables/tasks.py:115 +#: netbox/dcim/forms/filtersets.py:61 netbox/dcim/forms/object_create.py:43 +#: netbox/dcim/tables/devices.py:60 netbox/dcim/tables/devices.py:97 +#: netbox/dcim/tables/devices.py:139 netbox/dcim/tables/devices.py:294 +#: netbox/dcim/tables/devices.py:380 netbox/dcim/tables/devices.py:424 +#: netbox/dcim/tables/devices.py:476 netbox/dcim/tables/devices.py:528 +#: netbox/dcim/tables/devices.py:644 netbox/dcim/tables/devices.py:726 +#: netbox/dcim/tables/devices.py:776 netbox/dcim/tables/devices.py:842 +#: netbox/dcim/tables/devices.py:957 netbox/dcim/tables/devices.py:977 +#: netbox/dcim/tables/devices.py:1006 netbox/dcim/tables/devices.py:1036 +#: 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:125 netbox/extras/forms/filtersets.py:191 +#: netbox/extras/tables/tables.py:42 netbox/extras/tables/tables.py:88 +#: netbox/extras/tables/tables.py:120 netbox/extras/tables/tables.py:144 +#: netbox/extras/tables/tables.py:209 netbox/extras/tables/tables.py:256 +#: netbox/extras/tables/tables.py:279 netbox/extras/tables/tables.py:329 +#: netbox/extras/tables/tables.py:381 netbox/extras/tables/tables.py:404 +#: netbox/ipam/forms/bulk_edit.py:391 netbox/ipam/forms/filtersets.py:386 +#: netbox/ipam/tables/asn.py:16 netbox/ipam/tables/ip.py:85 +#: netbox/ipam/tables/ip.py:159 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:67 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:26 +#: 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:26 +#: 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/savedfilter.html:13 +#: netbox/templates/extras/script_list.html:46 +#: 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:54 +#: netbox/virtualization/tables/virtualmachines.py:132 +#: netbox/virtualization/tables/virtualmachines.py:185 +#: 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:39 circuits/tables/providers.py:45 -#: circuits/tables/providers.py:79 netbox/navigation/menu.py:253 -#: netbox/navigation/menu.py:257 netbox/navigation/menu.py:259 -#: templates/circuits/provider.html:57 -#: templates/circuits/provideraccount.html:44 -#: templates/circuits/providernetwork.html:50 +#: netbox/circuits/tables/circuits.py:39 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/templates/circuits/provider.html:57 +#: netbox/templates/circuits/provideraccount.html:44 +#: netbox/templates/circuits/providernetwork.html:50 msgid "Circuits" msgstr "" -#: circuits/tables/circuits.py:53 templates/circuits/circuit.html:26 +#: netbox/circuits/tables/circuits.py:53 +#: netbox/templates/circuits/circuit.html:26 msgid "Circuit ID" msgstr "" -#: circuits/tables/circuits.py:66 wireless/forms/model_forms.py:160 +#: netbox/circuits/tables/circuits.py:66 +#: netbox/wireless/forms/model_forms.py:160 msgid "Side A" msgstr "" -#: circuits/tables/circuits.py:70 +#: netbox/circuits/tables/circuits.py:70 msgid "Side Z" msgstr "" -#: circuits/tables/circuits.py:73 templates/circuits/circuit.html:55 +#: netbox/circuits/tables/circuits.py:73 +#: netbox/templates/circuits/circuit.html:55 msgid "Commit Rate" msgstr "" -#: circuits/tables/circuits.py:76 circuits/tables/providers.py:48 -#: circuits/tables/providers.py:82 circuits/tables/providers.py:107 -#: dcim/tables/devices.py:1019 dcim/tables/devicetypes.py:92 -#: dcim/tables/modules.py:29 dcim/tables/modules.py:72 dcim/tables/power.py:39 -#: dcim/tables/power.py:96 dcim/tables/racks.py:76 dcim/tables/racks.py:156 -#: dcim/tables/sites.py:103 extras/tables/tables.py:515 ipam/tables/asn.py:69 -#: ipam/tables/fhrp.py:34 ipam/tables/ip.py:135 ipam/tables/ip.py:272 -#: ipam/tables/ip.py:325 ipam/tables/ip.py:392 ipam/tables/services.py:24 -#: ipam/tables/services.py:54 ipam/tables/vlans.py:141 ipam/tables/vrfs.py:46 -#: ipam/tables/vrfs.py:71 templates/dcim/htmx/cable_edit.html:89 -#: templates/generic/bulk_edit.html:86 templates/inc/panels/comments.html:6 -#: 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:81 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:76 netbox/circuits/tables/providers.py:48 +#: netbox/circuits/tables/providers.py:82 +#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1019 +#: netbox/dcim/tables/devicetypes.py:92 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:103 +#: netbox/extras/tables/tables.py:515 netbox/ipam/tables/asn.py:69 +#: netbox/ipam/tables/fhrp.py:34 netbox/ipam/tables/ip.py:135 +#: netbox/ipam/tables/ip.py:272 netbox/ipam/tables/ip.py:325 +#: netbox/ipam/tables/ip.py:392 netbox/ipam/tables/services.py:24 +#: netbox/ipam/tables/services.py:54 netbox/ipam/tables/vlans.py:141 +#: netbox/ipam/tables/vrfs.py:46 netbox/ipam/tables/vrfs.py:71 +#: netbox/templates/dcim/htmx/cable_edit.html:89 +#: netbox/templates/generic/bulk_edit.html:86 +#: netbox/templates/inc/panels/comments.html:6 +#: 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/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/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 "" -#: core/api/views.py:36 +#: netbox/core/api/views.py:36 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 -#: extras/choices.py:224 templates/core/job.html:68 +#: netbox/core/choices.py:21 netbox/core/choices.py:57 +#: netbox/core/tables/jobs.py:41 netbox/extras/choices.py:224 +#: netbox/templates/core/job.html:68 msgid "Completed" msgstr "" -#: core/choices.py:22 core/choices.py:59 core/constants.py:20 -#: core/tables/tasks.py:34 dcim/choices.py:176 dcim/choices.py:222 -#: dcim/choices.py:1534 extras/choices.py:226 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:176 netbox/dcim/choices.py:222 +#: netbox/dcim/choices.py:1536 netbox/extras/choices.py:226 +#: netbox/virtualization/choices.py:47 msgid "Failed" msgstr "" -#: core/choices.py:35 netbox/navigation/menu.py:320 -#: netbox/navigation/menu.py:324 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:320 +#: netbox/netbox/navigation/menu.py:324 +#: 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 extras/choices.py:221 +#: netbox/core/choices.py:54 netbox/extras/choices.py:221 msgid "Pending" msgstr "" -#: core/choices.py:55 core/constants.py:23 core/tables/jobs.py:32 -#: core/tables/tasks.py:38 extras/choices.py:222 templates/core/job.html:55 +#: 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:222 netbox/templates/core/job.html:55 msgid "Scheduled" msgstr "" -#: core/choices.py:56 extras/choices.py:223 +#: netbox/core/choices.py:56 netbox/extras/choices.py:223 msgid "Running" msgstr "" -#: core/choices.py:58 extras/choices.py:225 +#: netbox/core/choices.py:58 netbox/extras/choices.py:225 msgid "Errored" 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:64 -#: templates/extras/htmx/script_result.html:8 +#: netbox/core/constants.py:21 netbox/core/tables/jobs.py:38 +#: netbox/templates/core/job.html:64 +#: 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 templates/dcim/interface.html:216 +#: netbox/core/data_backends.py:29 netbox/templates/dcim/interface.html:216 msgid "Local" msgstr "" -#: core/data_backends.py:47 extras/tables/tables.py:461 -#: templates/account/profile.html:15 templates/users/user.html:17 -#: users/tables.py:31 +#: netbox/core/data_backends.py:47 netbox/extras/tables/tables.py:461 +#: 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:17 -#: templates/account/password.html:11 users/forms/model_forms.py:171 +#: netbox/core/data_backends.py:53 netbox/templates/account/base.html:17 +#: netbox/templates/account/password.html:11 +#: 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:105 +#: netbox/core/data_backends.py:105 #, python-brace-format msgid "Fetching remote data failed ({name}): {error}" msgstr "" -#: core/data_backends.py:118 +#: netbox/core/data_backends.py:118 msgid "AWS access key ID" msgstr "" -#: core/data_backends.py:122 +#: netbox/core/data_backends.py:122 msgid "AWS secret access key" msgstr "" -#: core/filtersets.py:49 extras/filtersets.py:245 extras/filtersets.py:585 -#: extras/filtersets.py:617 +#: netbox/core/filtersets.py:49 netbox/extras/filtersets.py:245 +#: netbox/extras/filtersets.py:585 netbox/extras/filtersets.py:617 msgid "Data source (ID)" msgstr "" -#: core/filtersets.py:55 +#: netbox/core/filtersets.py:55 msgid "Data source (name)" msgstr "" -#: core/forms/bulk_edit.py:25 core/forms/filtersets.py:40 -#: core/tables/data.py:26 dcim/forms/bulk_edit.py:1020 -#: dcim/forms/bulk_edit.py:1293 dcim/forms/filtersets.py:1276 -#: dcim/tables/devices.py:553 dcim/tables/devicetypes.py:221 -#: extras/forms/bulk_edit.py:98 extras/forms/bulk_edit.py:162 -#: extras/forms/bulk_edit.py:221 extras/forms/filtersets.py:120 -#: extras/forms/filtersets.py:207 extras/forms/filtersets.py:268 -#: extras/tables/tables.py:127 extras/tables/tables.py:216 -#: extras/tables/tables.py:293 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:71 users/tables.py:83 -#: virtualization/forms/bulk_edit.py:217 virtualization/forms/filtersets.py:211 +#: 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:1293 netbox/dcim/forms/filtersets.py:1276 +#: netbox/dcim/tables/devices.py:553 netbox/dcim/tables/devicetypes.py:221 +#: 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:127 netbox/extras/tables/tables.py:216 +#: netbox/extras/tables/tables.py:293 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:71 +#: netbox/users/tables.py:83 netbox/virtualization/forms/bulk_edit.py:217 +#: netbox/virtualization/forms/filtersets.py:211 msgid "Enabled" msgstr "" -#: core/forms/bulk_edit.py:34 extras/forms/model_forms.py:211 -#: templates/extras/savedfilter.html:53 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:211 +#: netbox/templates/extras/savedfilter.html:53 +#: 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:27 core/forms/model_forms.py:97 -#: extras/forms/model_forms.py:174 extras/forms/model_forms.py:454 -#: extras/forms/model_forms.py:508 extras/tables/tables.py:154 -#: extras/tables/tables.py:373 extras/tables/tables.py:408 -#: 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: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:154 +#: netbox/extras/tables/tables.py:373 netbox/extras/tables/tables.py:408 +#: 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:52 core/forms/mixins.py:21 +#: netbox/core/forms/filtersets.py:52 netbox/core/forms/mixins.py:21 msgid "File" msgstr "" -#: core/forms/filtersets.py:57 core/forms/mixins.py:16 -#: extras/forms/filtersets.py:148 extras/forms/filtersets.py:337 -#: extras/forms/filtersets.py:422 +#: 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 msgid "Data source" msgstr "" -#: core/forms/filtersets.py:67 extras/forms/filtersets.py:449 +#: netbox/core/forms/filtersets.py:67 netbox/extras/forms/filtersets.py:449 msgid "Creation" msgstr "" -#: core/forms/filtersets.py:71 extras/forms/filtersets.py:470 -#: extras/forms/filtersets.py:513 extras/tables/tables.py:183 -#: extras/tables/tables.py:504 templates/core/job.html:20 -#: templates/extras/objectchange.html:51 tenancy/tables/contacts.py:90 -#: vpn/tables/l2vpn.py:59 +#: netbox/core/forms/filtersets.py:71 netbox/extras/forms/filtersets.py:470 +#: netbox/extras/forms/filtersets.py:513 netbox/extras/tables/tables.py:183 +#: netbox/extras/tables/tables.py:504 netbox/templates/core/job.html:20 +#: netbox/templates/extras/objectchange.html:51 +#: netbox/tenancy/tables/contacts.py:90 netbox/vpn/tables/l2vpn.py:59 msgid "Object Type" msgstr "" -#: core/forms/filtersets.py:81 +#: netbox/core/forms/filtersets.py:81 msgid "Created after" msgstr "" -#: core/forms/filtersets.py:86 +#: netbox/core/forms/filtersets.py:86 msgid "Created before" msgstr "" -#: core/forms/filtersets.py:91 +#: netbox/core/forms/filtersets.py:91 msgid "Scheduled after" msgstr "" -#: core/forms/filtersets.py:96 +#: netbox/core/forms/filtersets.py:96 msgid "Scheduled before" msgstr "" -#: core/forms/filtersets.py:101 +#: netbox/core/forms/filtersets.py:101 msgid "Started after" msgstr "" -#: core/forms/filtersets.py:106 +#: netbox/core/forms/filtersets.py:106 msgid "Started before" msgstr "" -#: core/forms/filtersets.py:111 +#: netbox/core/forms/filtersets.py:111 msgid "Completed after" msgstr "" -#: core/forms/filtersets.py:116 +#: netbox/core/forms/filtersets.py:116 msgid "Completed before" msgstr "" -#: core/forms/filtersets.py:123 dcim/forms/bulk_edit.py:361 -#: dcim/forms/filtersets.py:353 dcim/forms/filtersets.py:397 -#: dcim/forms/model_forms.py:258 extras/forms/filtersets.py:465 -#: extras/forms/filtersets.py:508 templates/dcim/rackreservation.html:58 -#: templates/extras/objectchange.html:35 templates/extras/savedfilter.html:21 -#: templates/inc/user_menu.html:15 templates/users/token.html:21 -#: templates/users/user.html:6 templates/users/user.html:14 -#: users/filtersets.py:97 users/filtersets.py:164 users/forms/filtersets.py:85 -#: users/forms/filtersets.py:126 users/forms/model_forms.py:156 -#: users/forms/model_forms.py:193 users/tables.py:19 +#: netbox/core/forms/filtersets.py:123 netbox/dcim/forms/bulk_edit.py:361 +#: netbox/dcim/forms/filtersets.py:353 netbox/dcim/forms/filtersets.py:397 +#: netbox/dcim/forms/model_forms.py:258 netbox/extras/forms/filtersets.py:465 +#: netbox/extras/forms/filtersets.py:508 +#: netbox/templates/dcim/rackreservation.html:58 +#: netbox/templates/extras/objectchange.html:35 +#: netbox/templates/extras/savedfilter.html:21 +#: netbox/templates/inc/user_menu.html:15 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/forms/model_forms.py:156 netbox/users/forms/model_forms.py:193 +#: netbox/users/tables.py:19 msgid "User" 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:1445 -#: dcim/forms/bulk_edit.py:867 dcim/forms/bulk_edit.py:1250 -#: dcim/forms/bulk_edit.py:1268 dcim/tables/racks.py:89 -#: netbox/navigation/menu.py:276 netbox/navigation/menu.py:280 +#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1447 +#: netbox/dcim/forms/bulk_edit.py:867 netbox/dcim/forms/bulk_edit.py:1250 +#: netbox/dcim/forms/bulk_edit.py:1268 netbox/dcim/tables/racks.py:89 +#: netbox/netbox/navigation/menu.py:276 netbox/netbox/navigation/menu.py:280 msgid "Power" msgstr "" -#: core/forms/model_forms.py:159 netbox/navigation/menu.py:141 -#: templates/core/inc/config_data.html:37 +#: netbox/core/forms/model_forms.py:159 netbox/netbox/navigation/menu.py:141 +#: netbox/templates/core/inc/config_data.html:37 msgid "IPAM" msgstr "" -#: core/forms/model_forms.py:160 netbox/navigation/menu.py:217 -#: 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:217 +#: 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/model_forms.py:67 -#: templates/core/inc/config_data.html:93 +#: netbox/core/forms/model_forms.py:163 netbox/extras/forms/model_forms.py:67 +#: 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:661 -#: 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:661 +#: 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/config.py:18 core/models/data.py:282 core/models/files.py:27 -#: core/models/jobs.py:50 extras/models/models.py:758 -#: netbox/models/features.py:51 users/models/tokens.py:33 +#: 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 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:47 dcim/models/cables.py:43 -#: dcim/models/device_component_templates.py:177 -#: dcim/models/device_component_templates.py:211 -#: dcim/models/device_component_templates.py:246 -#: dcim/models/device_component_templates.py:308 -#: dcim/models/device_component_templates.py:387 -#: dcim/models/device_component_templates.py:486 -#: dcim/models/device_component_templates.py:586 -#: 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 -#: dcim/models/racks.py:128 extras/models/customfields.py:76 -#: extras/models/search.py:41 virtualization/models/clusters.py:61 -#: vpn/models/l2vpn.py:32 +#: 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/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/dcim/models/racks.py:128 netbox/extras/models/customfields.py:76 +#: 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:52 extras/choices.py:37 extras/models/models.py:192 -#: extras/tables/tables.py:577 templates/core/datasource.html:58 +#: netbox/core/models/data.py:52 netbox/extras/choices.py:37 +#: netbox/extras/models/models.py:192 netbox/extras/tables/tables.py:577 +#: netbox/templates/core/datasource.html:58 msgid "URL" msgstr "" -#: core/models/data.py:62 dcim/models/device_component_templates.py:392 -#: dcim/models/device_components.py:513 extras/models/models.py:90 -#: extras/models/models.py:329 extras/models/models.py:554 -#: users/models/permissions.py:29 +#: netbox/core/models/data.py:62 +#: netbox/dcim/models/device_component_templates.py:392 +#: 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 msgid "enabled" msgstr "" -#: core/models/data.py:66 +#: netbox/core/models/data.py:66 msgid "ignore rules" msgstr "" -#: core/models/data.py:68 +#: netbox/core/models/data.py:68 msgid "Patterns (one per line) matching files to ignore when syncing" msgstr "" -#: core/models/data.py:71 extras/models/models.py:562 +#: netbox/core/models/data.py:71 netbox/extras/models/models.py:562 msgid "parameters" msgstr "" -#: core/models/data.py:76 +#: netbox/core/models/data.py:76 msgid "last synced" msgstr "" -#: core/models/data.py:84 +#: netbox/core/models/data.py:84 msgid "data source" msgstr "" -#: core/models/data.py:85 +#: netbox/core/models/data.py:85 msgid "data sources" msgstr "" -#: core/models/data.py:125 +#: netbox/core/models/data.py:125 #, python-brace-format msgid "Unknown backend type: {type}" msgstr "" -#: core/models/data.py:180 +#: netbox/core/models/data.py:180 msgid "Cannot initiate sync; syncing already in progress." msgstr "" -#: core/models/data.py:193 +#: netbox/core/models/data.py:193 msgid "" "There was an error initializing the backend. A dependency needs to be " "installed: " msgstr "" -#: core/models/data.py:286 core/models/files.py:31 netbox/models/features.py:57 +#: netbox/core/models/data.py:286 netbox/core/models/files.py:31 +#: netbox/netbox/models/features.py:57 msgid "last updated" msgstr "" -#: core/models/data.py:296 dcim/models/cables.py:442 +#: netbox/core/models/data.py:296 netbox/dcim/models/cables.py:442 msgid "path" msgstr "" -#: core/models/data.py:299 +#: netbox/core/models/data.py:299 msgid "File path relative to the data source's root" msgstr "" -#: core/models/data.py:303 ipam/models/ip.py:503 +#: netbox/core/models/data.py:303 netbox/ipam/models/ip.py:503 msgid "size" msgstr "" -#: core/models/data.py:306 +#: netbox/core/models/data.py:306 msgid "hash" msgstr "" -#: core/models/data.py:310 +#: netbox/core/models/data.py:310 msgid "Length must be 64 hexadecimal characters." msgstr "" -#: core/models/data.py:312 +#: netbox/core/models/data.py:312 msgid "SHA256 hash of the file data" msgstr "" -#: core/models/data.py:329 +#: netbox/core/models/data.py:329 msgid "data file" msgstr "" -#: core/models/data.py:330 +#: netbox/core/models/data.py:330 msgid "data files" msgstr "" -#: core/models/data.py:417 +#: netbox/core/models/data.py:417 msgid "auto sync record" msgstr "" -#: core/models/data.py:418 +#: netbox/core/models/data.py:418 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:54 +#: netbox/core/models/jobs.py:54 msgid "scheduled" msgstr "" -#: core/models/jobs.py:59 +#: netbox/core/models/jobs.py:59 msgid "interval" msgstr "" -#: core/models/jobs.py:65 +#: netbox/core/models/jobs.py:65 msgid "Recurrence interval (in minutes)" msgstr "" -#: core/models/jobs.py:68 +#: netbox/core/models/jobs.py:68 msgid "started" msgstr "" -#: core/models/jobs.py:73 +#: netbox/core/models/jobs.py:73 msgid "completed" msgstr "" -#: core/models/jobs.py:91 extras/models/models.py:121 -#: extras/models/staging.py:87 +#: netbox/core/models/jobs.py:91 netbox/extras/models/models.py:121 +#: netbox/extras/models/staging.py:87 msgid "data" msgstr "" -#: core/models/jobs.py:96 +#: netbox/core/models/jobs.py:96 msgid "error" msgstr "" -#: core/models/jobs.py:101 +#: netbox/core/models/jobs.py:101 msgid "job ID" msgstr "" -#: core/models/jobs.py:112 +#: netbox/core/models/jobs.py:112 msgid "job" msgstr "" -#: core/models/jobs.py:113 +#: netbox/core/models/jobs.py:113 msgid "jobs" msgstr "" -#: core/models/jobs.py:135 +#: netbox/core/models/jobs.py:135 #, python-brace-format msgid "Jobs cannot be assigned to this object type ({type})." msgstr "" -#: core/models/jobs.py:185 +#: netbox/core/models/jobs.py:185 #, python-brace-format msgid "Invalid status for job termination. Choices are: {choices}" msgstr "" -#: core/tables/config.py:21 users/forms/filtersets.py:45 users/tables.py:39 +#: netbox/core/tables/config.py:21 netbox/users/forms/filtersets.py:45 +#: 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:161 extras/tables/tables.py:179 -#: extras/tables/tables.py:350 netbox/tables/tables.py:188 -#: templates/dcim/virtualchassis_edit.html:52 utilities/forms/forms.py:73 -#: wireless/tables/wirelesslink.py:16 +#: netbox/core/tables/jobs.py:10 netbox/core/tables/tasks.py:76 +#: netbox/dcim/tables/devicetypes.py:161 netbox/extras/tables/tables.py:179 +#: netbox/extras/tables/tables.py:350 netbox/netbox/tables/tables.py:188 +#: netbox/templates/dcim/virtualchassis_edit.html:52 +#: netbox/utilities/forms/forms.py:73 netbox/wireless/tables/wirelesslink.py:16 msgid "ID" msgstr "" -#: core/tables/jobs.py:21 extras/choices.py:41 extras/tables/tables.py:241 -#: extras/tables/tables.py:287 extras/tables/tables.py:360 -#: extras/tables/tables.py:478 extras/tables/tables.py:509 -#: extras/tables/tables.py:574 netbox/tables/tables.py:243 -#: templates/extras/eventrule.html:84 templates/extras/journalentry.html:18 -#: templates/extras/objectchange.html:57 tenancy/tables/contacts.py:93 -#: vpn/tables/l2vpn.py:64 +#: netbox/core/tables/jobs.py:21 netbox/extras/choices.py:41 +#: netbox/extras/tables/tables.py:241 netbox/extras/tables/tables.py:287 +#: netbox/extras/tables/tables.py:360 netbox/extras/tables/tables.py:478 +#: netbox/extras/tables/tables.py:509 netbox/extras/tables/tables.py:574 +#: netbox/netbox/tables/tables.py:243 netbox/templates/extras/eventrule.html:84 +#: netbox/templates/extras/journalentry.html:18 +#: netbox/templates/extras/objectchange.html:57 +#: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64 msgid "Object" msgstr "" -#: core/tables/jobs.py:35 +#: netbox/core/tables/jobs.py:35 msgid "Interval" msgstr "" -#: core/tables/plugins.py:16 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:16 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:20 +#: netbox/core/tables/plugins.py:20 msgid "Package" msgstr "" -#: core/tables/plugins.py:23 +#: netbox/core/tables/plugins.py:23 msgid "Author" msgstr "" -#: core/tables/plugins.py:26 +#: netbox/core/tables/plugins.py:26 msgid "Author Email" msgstr "" -#: core/tables/plugins.py:33 +#: netbox/core/tables/plugins.py:33 msgid "No plugins found" 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:34 +#: netbox/core/tables/tasks.py:42 netbox/templates/core/rq_worker_list.html:34 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:542 +#: netbox/core/tables/tasks.py:50 netbox/ipam/forms/filtersets.py:542 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:335 core/views.py:378 core/views.py:401 core/views.py:419 -#: core/views.py:454 +#: netbox/core/views.py:335 netbox/core/views.py:378 netbox/core/views.py:401 +#: netbox/core/views.py:419 netbox/core/views.py:454 #, python-brace-format msgid "Job {job_id} not found" msgstr "" -#: dcim/api/serializers_/devices.py:50 dcim/api/serializers_/devicetypes.py:26 +#: netbox/dcim/api/serializers_/devices.py:50 +#: netbox/dcim/api/serializers_/devicetypes.py:26 msgid "Position (U)" msgstr "" -#: dcim/api/serializers_/racks.py:45 templates/dcim/rack.html:30 +#: netbox/dcim/api/serializers_/racks.py:45 netbox/templates/dcim/rack.html:30 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:178 dcim/choices.py:223 -#: dcim/choices.py:1458 virtualization/choices.py:23 -#: virtualization/choices.py:48 +#: netbox/dcim/choices.py:23 netbox/dcim/choices.py:178 +#: netbox/dcim/choices.py:223 netbox/dcim/choices.py:1460 +#: 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:251 +#: netbox/dcim/choices.py:101 netbox/templates/dcim/device.html:252 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/rack.html:123 +#: netbox/dcim/choices.py:114 netbox/templates/dcim/rack.html:123 msgid "Millimeters" msgstr "" -#: dcim/choices.py:115 dcim/choices.py:1480 +#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1482 msgid "Inches" msgstr "" -#: dcim/choices.py:140 dcim/forms/bulk_edit.py:67 dcim/forms/bulk_edit.py:86 -#: dcim/forms/bulk_edit.py:172 dcim/forms/bulk_edit.py:1298 -#: dcim/forms/bulk_import.py:59 dcim/forms/bulk_import.py:73 -#: dcim/forms/bulk_import.py:136 dcim/forms/bulk_import.py:511 -#: dcim/forms/bulk_import.py:778 dcim/forms/bulk_import.py:1033 -#: dcim/forms/filtersets.py:227 dcim/forms/model_forms.py:73 -#: dcim/forms/model_forms.py:92 dcim/forms/model_forms.py:169 -#: dcim/forms/model_forms.py:1007 dcim/forms/model_forms.py:1446 -#: dcim/forms/object_import.py:176 dcim/tables/devices.py:652 -#: dcim/tables/devices.py:937 extras/tables/tables.py:186 -#: ipam/tables/fhrp.py:59 ipam/tables/ip.py:374 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:155 wireless/forms/bulk_edit.py:24 -#: wireless/forms/bulk_import.py:21 wireless/forms/model_forms.py:21 +#: 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:1298 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:511 netbox/dcim/forms/bulk_import.py:778 +#: netbox/dcim/forms/bulk_import.py:1033 netbox/dcim/forms/filtersets.py:227 +#: 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:1007 +#: netbox/dcim/forms/model_forms.py:1446 netbox/dcim/forms/object_import.py:176 +#: netbox/dcim/tables/devices.py:652 netbox/dcim/tables/devices.py:937 +#: netbox/extras/tables/tables.py:186 netbox/ipam/tables/fhrp.py:59 +#: netbox/ipam/tables/ip.py:374 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:155 +#: 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:141 +#: netbox/dcim/choices.py:141 msgid "Child" msgstr "" -#: dcim/choices.py:155 templates/dcim/device.html:331 -#: templates/dcim/rack.html:175 templates/dcim/rack_elevation_list.html:20 -#: templates/dcim/rackreservation.html:76 +#: netbox/dcim/choices.py:155 netbox/templates/dcim/device.html:332 +#: netbox/templates/dcim/rack.html:175 +#: netbox/templates/dcim/rack_elevation_list.html:20 +#: netbox/templates/dcim/rackreservation.html:76 msgid "Front" msgstr "" -#: dcim/choices.py:156 templates/dcim/device.html:337 -#: templates/dcim/rack.html:181 templates/dcim/rack_elevation_list.html:21 -#: templates/dcim/rackreservation.html:82 +#: netbox/dcim/choices.py:156 netbox/templates/dcim/device.html:338 +#: netbox/templates/dcim/rack.html:181 +#: netbox/templates/dcim/rack_elevation_list.html:21 +#: netbox/templates/dcim/rackreservation.html:82 msgid "Rear" msgstr "" -#: dcim/choices.py:175 dcim/choices.py:221 virtualization/choices.py:46 +#: netbox/dcim/choices.py:175 netbox/dcim/choices.py:221 +#: netbox/virtualization/choices.py:46 msgid "Staged" msgstr "" -#: dcim/choices.py:177 +#: netbox/dcim/choices.py:177 msgid "Inventory" msgstr "" -#: dcim/choices.py:193 +#: netbox/dcim/choices.py:193 msgid "Front to rear" msgstr "" -#: dcim/choices.py:194 +#: netbox/dcim/choices.py:194 msgid "Rear to front" msgstr "" -#: dcim/choices.py:195 +#: netbox/dcim/choices.py:195 msgid "Left to right" msgstr "" -#: dcim/choices.py:196 +#: netbox/dcim/choices.py:196 msgid "Right to left" msgstr "" -#: dcim/choices.py:197 +#: netbox/dcim/choices.py:197 msgid "Side to rear" msgstr "" -#: dcim/choices.py:198 dcim/choices.py:1253 +#: netbox/dcim/choices.py:198 netbox/dcim/choices.py:1255 msgid "Passive" msgstr "" -#: dcim/choices.py:199 +#: netbox/dcim/choices.py:199 msgid "Mixed" msgstr "" -#: dcim/choices.py:447 dcim/choices.py:693 +#: netbox/dcim/choices.py:447 netbox/dcim/choices.py:693 msgid "NEMA (Non-locking)" msgstr "" -#: dcim/choices.py:469 dcim/choices.py:715 +#: netbox/dcim/choices.py:469 netbox/dcim/choices.py:715 msgid "NEMA (Locking)" msgstr "" -#: dcim/choices.py:492 dcim/choices.py:738 +#: netbox/dcim/choices.py:492 netbox/dcim/choices.py:738 msgid "California Style" msgstr "" -#: dcim/choices.py:500 +#: netbox/dcim/choices.py:500 msgid "International/ITA" msgstr "" -#: dcim/choices.py:535 dcim/choices.py:773 +#: netbox/dcim/choices.py:535 netbox/dcim/choices.py:773 msgid "Proprietary" msgstr "" -#: dcim/choices.py:543 dcim/choices.py:782 dcim/choices.py:1169 -#: dcim/choices.py:1171 dcim/choices.py:1376 dcim/choices.py:1378 -#: netbox/navigation/menu.py:187 +#: netbox/dcim/choices.py:543 netbox/dcim/choices.py:782 +#: netbox/dcim/choices.py:1171 netbox/dcim/choices.py:1173 +#: netbox/dcim/choices.py:1378 netbox/dcim/choices.py:1380 +#: netbox/netbox/navigation/menu.py:187 msgid "Other" msgstr "" -#: dcim/choices.py:746 +#: netbox/dcim/choices.py:746 msgid "ITA/International" msgstr "" -#: dcim/choices.py:812 +#: netbox/dcim/choices.py:812 msgid "Physical" msgstr "" -#: dcim/choices.py:813 dcim/choices.py:977 +#: netbox/dcim/choices.py:813 netbox/dcim/choices.py:978 msgid "Virtual" msgstr "" -#: dcim/choices.py:814 dcim/choices.py:1049 dcim/forms/bulk_edit.py:1408 -#: dcim/forms/filtersets.py:1239 dcim/forms/model_forms.py:933 -#: dcim/forms/model_forms.py:1341 netbox/navigation/menu.py:127 -#: netbox/navigation/menu.py:131 templates/dcim/interface.html:210 +#: netbox/dcim/choices.py:814 netbox/dcim/choices.py:1051 +#: netbox/dcim/forms/bulk_edit.py:1408 netbox/dcim/forms/filtersets.py:1239 +#: netbox/dcim/forms/model_forms.py:933 netbox/dcim/forms/model_forms.py:1341 +#: netbox/netbox/navigation/menu.py:127 netbox/netbox/navigation/menu.py:131 +#: netbox/templates/dcim/interface.html:210 msgid "Wireless" msgstr "" -#: dcim/choices.py:975 +#: netbox/dcim/choices.py:976 msgid "Virtual interfaces" msgstr "" -#: dcim/choices.py:978 dcim/forms/bulk_edit.py:1303 -#: dcim/forms/bulk_import.py:785 dcim/forms/model_forms.py:919 -#: dcim/tables/devices.py:656 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:159 +#: netbox/dcim/choices.py:979 netbox/dcim/forms/bulk_edit.py:1303 +#: netbox/dcim/forms/bulk_import.py:785 netbox/dcim/forms/model_forms.py:919 +#: netbox/dcim/tables/devices.py:656 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 msgid "Bridge" msgstr "" -#: dcim/choices.py:979 +#: netbox/dcim/choices.py:980 msgid "Link Aggregation Group (LAG)" msgstr "" -#: dcim/choices.py:983 +#: netbox/dcim/choices.py:984 msgid "Ethernet (fixed)" msgstr "" -#: dcim/choices.py:997 +#: netbox/dcim/choices.py:999 msgid "Ethernet (modular)" msgstr "" -#: dcim/choices.py:1033 +#: netbox/dcim/choices.py:1035 msgid "Ethernet (backplane)" msgstr "" -#: dcim/choices.py:1063 +#: netbox/dcim/choices.py:1065 msgid "Cellular" msgstr "" -#: dcim/choices.py:1115 dcim/forms/filtersets.py:303 -#: dcim/forms/filtersets.py:738 dcim/forms/filtersets.py:882 -#: dcim/forms/filtersets.py:1434 templates/dcim/inventoryitem.html:52 -#: templates/dcim/virtualchassis_edit.html:54 +#: netbox/dcim/choices.py:1117 netbox/dcim/forms/filtersets.py:303 +#: netbox/dcim/forms/filtersets.py:738 netbox/dcim/forms/filtersets.py:882 +#: netbox/dcim/forms/filtersets.py:1434 +#: netbox/templates/dcim/inventoryitem.html:52 +#: netbox/templates/dcim/virtualchassis_edit.html:54 msgid "Serial" msgstr "" -#: dcim/choices.py:1130 +#: netbox/dcim/choices.py:1132 msgid "Coaxial" msgstr "" -#: dcim/choices.py:1150 +#: netbox/dcim/choices.py:1152 msgid "Stacking" msgstr "" -#: dcim/choices.py:1200 +#: netbox/dcim/choices.py:1202 msgid "Half" msgstr "" -#: dcim/choices.py:1201 +#: netbox/dcim/choices.py:1203 msgid "Full" msgstr "" -#: dcim/choices.py:1202 netbox/preferences.py:31 wireless/choices.py:480 +#: netbox/dcim/choices.py:1204 netbox/netbox/preferences.py:31 +#: netbox/wireless/choices.py:480 msgid "Auto" msgstr "" -#: dcim/choices.py:1213 +#: netbox/dcim/choices.py:1215 msgid "Access" msgstr "" -#: dcim/choices.py:1214 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 -#: templates/dcim/inc/interface_vlans_table.html:7 +#: netbox/dcim/choices.py:1216 netbox/ipam/tables/vlans.py:168 +#: netbox/ipam/tables/vlans.py:213 +#: netbox/templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "" -#: dcim/choices.py:1215 +#: netbox/dcim/choices.py:1217 msgid "Tagged (All)" msgstr "" -#: dcim/choices.py:1244 +#: netbox/dcim/choices.py:1246 msgid "IEEE Standard" msgstr "" -#: dcim/choices.py:1255 +#: netbox/dcim/choices.py:1257 msgid "Passive 24V (2-pair)" msgstr "" -#: dcim/choices.py:1256 +#: netbox/dcim/choices.py:1258 msgid "Passive 24V (4-pair)" msgstr "" -#: dcim/choices.py:1257 +#: netbox/dcim/choices.py:1259 msgid "Passive 48V (2-pair)" msgstr "" -#: dcim/choices.py:1258 +#: netbox/dcim/choices.py:1260 msgid "Passive 48V (4-pair)" msgstr "" -#: dcim/choices.py:1320 dcim/choices.py:1416 +#: netbox/dcim/choices.py:1322 netbox/dcim/choices.py:1418 msgid "Copper" msgstr "" -#: dcim/choices.py:1343 +#: netbox/dcim/choices.py:1345 msgid "Fiber Optic" msgstr "" -#: dcim/choices.py:1432 +#: netbox/dcim/choices.py:1434 msgid "Fiber" msgstr "" -#: dcim/choices.py:1456 dcim/forms/filtersets.py:1146 +#: netbox/dcim/choices.py:1458 netbox/dcim/forms/filtersets.py:1146 msgid "Connected" msgstr "" -#: dcim/choices.py:1475 +#: netbox/dcim/choices.py:1477 msgid "Kilometers" msgstr "" -#: dcim/choices.py:1476 templates/dcim/cable_trace.html:65 +#: netbox/dcim/choices.py:1478 netbox/templates/dcim/cable_trace.html:65 msgid "Meters" msgstr "" -#: dcim/choices.py:1477 +#: netbox/dcim/choices.py:1479 msgid "Centimeters" msgstr "" -#: dcim/choices.py:1478 +#: netbox/dcim/choices.py:1480 msgid "Miles" msgstr "" -#: dcim/choices.py:1479 templates/dcim/cable_trace.html:66 +#: netbox/dcim/choices.py:1481 netbox/templates/dcim/cable_trace.html:66 msgid "Feet" msgstr "" -#: dcim/choices.py:1495 templates/dcim/device.html:319 -#: templates/dcim/rack.html:152 +#: netbox/dcim/choices.py:1497 netbox/templates/dcim/device.html:320 +#: netbox/templates/dcim/rack.html:152 msgid "Kilograms" msgstr "" -#: dcim/choices.py:1496 +#: netbox/dcim/choices.py:1498 msgid "Grams" msgstr "" -#: dcim/choices.py:1497 templates/dcim/rack.html:153 +#: netbox/dcim/choices.py:1499 netbox/templates/dcim/rack.html:153 msgid "Pounds" msgstr "" -#: dcim/choices.py:1498 +#: netbox/dcim/choices.py:1500 msgid "Ounces" msgstr "" -#: dcim/choices.py:1544 tenancy/choices.py:17 +#: netbox/dcim/choices.py:1546 netbox/tenancy/choices.py:17 msgid "Primary" msgstr "" -#: dcim/choices.py:1545 +#: netbox/dcim/choices.py:1547 msgid "Redundant" msgstr "" -#: dcim/choices.py:1566 +#: netbox/dcim/choices.py:1568 msgid "Single phase" msgstr "" -#: dcim/choices.py:1567 +#: netbox/dcim/choices.py:1569 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:85 +#: netbox/dcim/filtersets.py:85 msgid "Parent region (ID)" msgstr "" -#: dcim/filtersets.py:91 +#: netbox/dcim/filtersets.py:91 msgid "Parent region (slug)" msgstr "" -#: dcim/filtersets.py:115 +#: netbox/dcim/filtersets.py:115 msgid "Parent site group (ID)" msgstr "" -#: dcim/filtersets.py:121 +#: netbox/dcim/filtersets.py:121 msgid "Parent site group (slug)" msgstr "" -#: dcim/filtersets.py:163 ipam/filtersets.py:841 ipam/filtersets.py:979 +#: netbox/dcim/filtersets.py:163 netbox/ipam/filtersets.py:841 +#: netbox/ipam/filtersets.py:979 msgid "Group (ID)" msgstr "" -#: dcim/filtersets.py:169 +#: netbox/dcim/filtersets.py:169 msgid "Group (slug)" msgstr "" -#: dcim/filtersets.py:175 dcim/filtersets.py:180 +#: netbox/dcim/filtersets.py:175 netbox/dcim/filtersets.py:180 msgid "AS (ID)" msgstr "" -#: dcim/filtersets.py:245 +#: netbox/dcim/filtersets.py:245 msgid "Parent location (ID)" msgstr "" -#: dcim/filtersets.py:251 +#: netbox/dcim/filtersets.py:251 msgid "Parent location (slug)" msgstr "" -#: dcim/filtersets.py:257 dcim/filtersets.py:333 dcim/filtersets.py:432 -#: dcim/filtersets.py:1005 dcim/filtersets.py:1341 dcim/filtersets.py:2111 +#: netbox/dcim/filtersets.py:257 netbox/dcim/filtersets.py:333 +#: netbox/dcim/filtersets.py:432 netbox/dcim/filtersets.py:1005 +#: netbox/dcim/filtersets.py:1341 netbox/dcim/filtersets.py:2111 msgid "Location (ID)" msgstr "" -#: dcim/filtersets.py:264 dcim/filtersets.py:340 dcim/filtersets.py:439 -#: dcim/filtersets.py:1347 extras/filtersets.py:494 +#: netbox/dcim/filtersets.py:264 netbox/dcim/filtersets.py:340 +#: netbox/dcim/filtersets.py:439 netbox/dcim/filtersets.py:1347 +#: netbox/extras/filtersets.py:494 msgid "Location (slug)" msgstr "" -#: dcim/filtersets.py:354 dcim/filtersets.py:840 dcim/filtersets.py:942 -#: dcim/filtersets.py:1779 ipam/filtersets.py:381 ipam/filtersets.py:493 -#: ipam/filtersets.py:989 virtualization/filtersets.py:210 +#: netbox/dcim/filtersets.py:354 netbox/dcim/filtersets.py:840 +#: netbox/dcim/filtersets.py:942 netbox/dcim/filtersets.py:1779 +#: netbox/ipam/filtersets.py:381 netbox/ipam/filtersets.py:493 +#: netbox/ipam/filtersets.py:989 netbox/virtualization/filtersets.py:210 msgid "Role (ID)" msgstr "" -#: dcim/filtersets.py:360 dcim/filtersets.py:846 dcim/filtersets.py:948 -#: dcim/filtersets.py:1785 extras/filtersets.py:510 ipam/filtersets.py:387 -#: ipam/filtersets.py:499 ipam/filtersets.py:995 -#: virtualization/filtersets.py:216 +#: netbox/dcim/filtersets.py:360 netbox/dcim/filtersets.py:846 +#: netbox/dcim/filtersets.py:948 netbox/dcim/filtersets.py:1785 +#: netbox/extras/filtersets.py:510 netbox/ipam/filtersets.py:387 +#: netbox/ipam/filtersets.py:499 netbox/ipam/filtersets.py:995 +#: netbox/virtualization/filtersets.py:216 msgid "Role (slug)" msgstr "" -#: dcim/filtersets.py:389 dcim/filtersets.py:1010 dcim/filtersets.py:1352 -#: dcim/filtersets.py:2173 +#: netbox/dcim/filtersets.py:389 netbox/dcim/filtersets.py:1010 +#: netbox/dcim/filtersets.py:1352 netbox/dcim/filtersets.py:2173 msgid "Rack (ID)" msgstr "" -#: dcim/filtersets.py:443 extras/filtersets.py:282 extras/filtersets.py:326 -#: extras/filtersets.py:365 extras/filtersets.py:664 users/filtersets.py:28 +#: 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 "" -#: dcim/filtersets.py:449 extras/filtersets.py:288 extras/filtersets.py:332 -#: extras/filtersets.py:371 users/filtersets.py:103 users/filtersets.py:170 +#: 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 msgid "User (name)" msgstr "" -#: dcim/filtersets.py:481 dcim/filtersets.py:620 dcim/filtersets.py:830 -#: dcim/filtersets.py:881 dcim/filtersets.py:921 dcim/filtersets.py:1243 -#: dcim/filtersets.py:1769 +#: 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:1243 +#: netbox/dcim/filtersets.py:1769 msgid "Manufacturer (ID)" msgstr "" -#: dcim/filtersets.py:487 dcim/filtersets.py:626 dcim/filtersets.py:836 -#: dcim/filtersets.py:887 dcim/filtersets.py:927 dcim/filtersets.py:1249 -#: dcim/filtersets.py:1775 +#: 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:1249 +#: netbox/dcim/filtersets.py:1775 msgid "Manufacturer (slug)" msgstr "" -#: dcim/filtersets.py:491 +#: netbox/dcim/filtersets.py:491 msgid "Default platform (ID)" msgstr "" -#: dcim/filtersets.py:497 +#: netbox/dcim/filtersets.py:497 msgid "Default platform (slug)" msgstr "" -#: dcim/filtersets.py:500 dcim/forms/filtersets.py:452 +#: netbox/dcim/filtersets.py:500 netbox/dcim/forms/filtersets.py:452 msgid "Has a front image" msgstr "" -#: dcim/filtersets.py:504 dcim/forms/filtersets.py:459 +#: netbox/dcim/filtersets.py:504 netbox/dcim/forms/filtersets.py:459 msgid "Has a rear image" msgstr "" -#: dcim/filtersets.py:509 dcim/filtersets.py:630 dcim/filtersets.py:1068 -#: dcim/forms/filtersets.py:466 dcim/forms/filtersets.py:562 -#: dcim/forms/filtersets.py:777 +#: netbox/dcim/filtersets.py:509 netbox/dcim/filtersets.py:630 +#: netbox/dcim/filtersets.py:1068 netbox/dcim/forms/filtersets.py:466 +#: netbox/dcim/forms/filtersets.py:562 netbox/dcim/forms/filtersets.py:777 msgid "Has console ports" msgstr "" -#: dcim/filtersets.py:513 dcim/filtersets.py:634 dcim/filtersets.py:1072 -#: dcim/forms/filtersets.py:473 dcim/forms/filtersets.py:569 -#: dcim/forms/filtersets.py:784 +#: netbox/dcim/filtersets.py:513 netbox/dcim/filtersets.py:634 +#: netbox/dcim/filtersets.py:1072 netbox/dcim/forms/filtersets.py:473 +#: netbox/dcim/forms/filtersets.py:569 netbox/dcim/forms/filtersets.py:784 msgid "Has console server ports" msgstr "" -#: dcim/filtersets.py:517 dcim/filtersets.py:638 dcim/filtersets.py:1076 -#: dcim/forms/filtersets.py:480 dcim/forms/filtersets.py:576 -#: dcim/forms/filtersets.py:791 +#: netbox/dcim/filtersets.py:517 netbox/dcim/filtersets.py:638 +#: netbox/dcim/filtersets.py:1076 netbox/dcim/forms/filtersets.py:480 +#: netbox/dcim/forms/filtersets.py:576 netbox/dcim/forms/filtersets.py:791 msgid "Has power ports" msgstr "" -#: dcim/filtersets.py:521 dcim/filtersets.py:642 dcim/filtersets.py:1080 -#: dcim/forms/filtersets.py:487 dcim/forms/filtersets.py:583 -#: dcim/forms/filtersets.py:798 +#: netbox/dcim/filtersets.py:521 netbox/dcim/filtersets.py:642 +#: netbox/dcim/filtersets.py:1080 netbox/dcim/forms/filtersets.py:487 +#: netbox/dcim/forms/filtersets.py:583 netbox/dcim/forms/filtersets.py:798 msgid "Has power outlets" msgstr "" -#: dcim/filtersets.py:525 dcim/filtersets.py:646 dcim/filtersets.py:1084 -#: dcim/forms/filtersets.py:494 dcim/forms/filtersets.py:590 -#: dcim/forms/filtersets.py:805 +#: netbox/dcim/filtersets.py:525 netbox/dcim/filtersets.py:646 +#: netbox/dcim/filtersets.py:1084 netbox/dcim/forms/filtersets.py:494 +#: netbox/dcim/forms/filtersets.py:590 netbox/dcim/forms/filtersets.py:805 msgid "Has interfaces" msgstr "" -#: dcim/filtersets.py:529 dcim/filtersets.py:650 dcim/filtersets.py:1088 -#: dcim/forms/filtersets.py:501 dcim/forms/filtersets.py:597 -#: dcim/forms/filtersets.py:812 +#: netbox/dcim/filtersets.py:529 netbox/dcim/filtersets.py:650 +#: netbox/dcim/filtersets.py:1088 netbox/dcim/forms/filtersets.py:501 +#: netbox/dcim/forms/filtersets.py:597 netbox/dcim/forms/filtersets.py:812 msgid "Has pass-through ports" msgstr "" -#: dcim/filtersets.py:533 dcim/filtersets.py:1092 dcim/forms/filtersets.py:515 +#: netbox/dcim/filtersets.py:533 netbox/dcim/filtersets.py:1092 +#: netbox/dcim/forms/filtersets.py:515 msgid "Has module bays" msgstr "" -#: dcim/filtersets.py:537 dcim/filtersets.py:1096 dcim/forms/filtersets.py:508 +#: netbox/dcim/filtersets.py:537 netbox/dcim/filtersets.py:1096 +#: netbox/dcim/forms/filtersets.py:508 msgid "Has device bays" msgstr "" -#: dcim/filtersets.py:541 dcim/forms/filtersets.py:522 +#: netbox/dcim/filtersets.py:541 netbox/dcim/forms/filtersets.py:522 msgid "Has inventory items" msgstr "" -#: dcim/filtersets.py:698 dcim/filtersets.py:937 dcim/filtersets.py:1373 +#: netbox/dcim/filtersets.py:698 netbox/dcim/filtersets.py:937 +#: netbox/dcim/filtersets.py:1373 msgid "Device type (ID)" msgstr "" -#: dcim/filtersets.py:717 dcim/filtersets.py:1254 +#: netbox/dcim/filtersets.py:717 netbox/dcim/filtersets.py:1254 msgid "Module type (ID)" msgstr "" -#: dcim/filtersets.py:752 dcim/filtersets.py:1524 +#: netbox/dcim/filtersets.py:752 netbox/dcim/filtersets.py:1524 msgid "Power port (ID)" msgstr "" -#: dcim/filtersets.py:826 dcim/filtersets.py:1765 +#: netbox/dcim/filtersets.py:826 netbox/dcim/filtersets.py:1765 msgid "Parent inventory item (ID)" msgstr "" -#: dcim/filtersets.py:869 dcim/filtersets.py:895 dcim/filtersets.py:1064 -#: virtualization/filtersets.py:238 +#: netbox/dcim/filtersets.py:869 netbox/dcim/filtersets.py:895 +#: netbox/dcim/filtersets.py:1064 netbox/virtualization/filtersets.py:238 msgid "Config template (ID)" msgstr "" -#: dcim/filtersets.py:933 +#: netbox/dcim/filtersets.py:933 msgid "Device type (slug)" msgstr "" -#: dcim/filtersets.py:953 +#: netbox/dcim/filtersets.py:953 msgid "Parent Device (ID)" msgstr "" -#: dcim/filtersets.py:957 virtualization/filtersets.py:220 +#: netbox/dcim/filtersets.py:957 netbox/virtualization/filtersets.py:220 msgid "Platform (ID)" msgstr "" -#: dcim/filtersets.py:963 extras/filtersets.py:521 -#: virtualization/filtersets.py:226 +#: netbox/dcim/filtersets.py:963 netbox/extras/filtersets.py:521 +#: netbox/virtualization/filtersets.py:226 msgid "Platform (slug)" msgstr "" -#: dcim/filtersets.py:999 dcim/filtersets.py:1336 dcim/filtersets.py:1863 -#: dcim/filtersets.py:2105 dcim/filtersets.py:2164 +#: netbox/dcim/filtersets.py:999 netbox/dcim/filtersets.py:1336 +#: netbox/dcim/filtersets.py:1863 netbox/dcim/filtersets.py:2105 +#: netbox/dcim/filtersets.py:2164 msgid "Site name (slug)" msgstr "" -#: dcim/filtersets.py:1015 +#: netbox/dcim/filtersets.py:1015 msgid "Parent bay (ID)" msgstr "" -#: dcim/filtersets.py:1019 +#: netbox/dcim/filtersets.py:1019 msgid "VM cluster (ID)" msgstr "" -#: dcim/filtersets.py:1025 +#: netbox/dcim/filtersets.py:1025 msgid "Device model (slug)" msgstr "" -#: dcim/filtersets.py:1036 dcim/forms/bulk_edit.py:423 +#: netbox/dcim/filtersets.py:1036 netbox/dcim/forms/bulk_edit.py:423 msgid "Is full depth" msgstr "" -#: dcim/filtersets.py:1040 dcim/forms/common.py:18 dcim/forms/filtersets.py:747 -#: dcim/forms/filtersets.py:1291 dcim/models/device_components.py:519 -#: virtualization/filtersets.py:230 virtualization/filtersets.py:297 -#: virtualization/forms/filtersets.py:172 -#: virtualization/forms/filtersets.py:219 +#: netbox/dcim/filtersets.py:1040 netbox/dcim/forms/common.py:18 +#: netbox/dcim/forms/filtersets.py:747 netbox/dcim/forms/filtersets.py:1291 +#: netbox/dcim/models/device_components.py:519 +#: netbox/virtualization/filtersets.py:230 +#: netbox/virtualization/filtersets.py:297 +#: netbox/virtualization/forms/filtersets.py:172 +#: netbox/virtualization/forms/filtersets.py:219 msgid "MAC address" msgstr "" -#: dcim/filtersets.py:1047 dcim/filtersets.py:1211 dcim/forms/filtersets.py:756 -#: dcim/forms/filtersets.py:849 virtualization/filtersets.py:234 -#: virtualization/forms/filtersets.py:176 +#: netbox/dcim/filtersets.py:1047 netbox/dcim/filtersets.py:1211 +#: netbox/dcim/forms/filtersets.py:756 netbox/dcim/forms/filtersets.py:849 +#: netbox/virtualization/filtersets.py:234 +#: netbox/virtualization/forms/filtersets.py:176 msgid "Has a primary IP" msgstr "" -#: dcim/filtersets.py:1051 +#: netbox/dcim/filtersets.py:1051 msgid "Has an out-of-band IP" msgstr "" -#: dcim/filtersets.py:1056 +#: netbox/dcim/filtersets.py:1056 msgid "Virtual chassis (ID)" msgstr "" -#: dcim/filtersets.py:1060 +#: netbox/dcim/filtersets.py:1060 msgid "Is a virtual chassis member" msgstr "" -#: dcim/filtersets.py:1101 +#: netbox/dcim/filtersets.py:1101 msgid "OOB IP (ID)" msgstr "" -#: dcim/filtersets.py:1105 +#: netbox/dcim/filtersets.py:1105 msgid "Has virtual device context" msgstr "" -#: dcim/filtersets.py:1194 +#: netbox/dcim/filtersets.py:1194 msgid "VDC (ID)" msgstr "" -#: dcim/filtersets.py:1199 +#: netbox/dcim/filtersets.py:1199 msgid "Device model" msgstr "" -#: dcim/filtersets.py:1204 ipam/filtersets.py:632 vpn/filtersets.py:102 -#: vpn/filtersets.py:420 +#: netbox/dcim/filtersets.py:1204 netbox/ipam/filtersets.py:632 +#: netbox/vpn/filtersets.py:102 netbox/vpn/filtersets.py:420 msgid "Interface (ID)" msgstr "" -#: dcim/filtersets.py:1260 +#: netbox/dcim/filtersets.py:1260 msgid "Module type (model)" msgstr "" -#: dcim/filtersets.py:1266 +#: netbox/dcim/filtersets.py:1266 msgid "Module Bay (ID)" msgstr "" -#: dcim/filtersets.py:1270 dcim/filtersets.py:1362 ipam/filtersets.py:611 -#: ipam/filtersets.py:851 ipam/filtersets.py:1075 -#: virtualization/filtersets.py:161 vpn/filtersets.py:398 +#: netbox/dcim/filtersets.py:1270 netbox/dcim/filtersets.py:1362 +#: 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 msgid "Device (ID)" msgstr "" -#: dcim/filtersets.py:1358 +#: netbox/dcim/filtersets.py:1358 msgid "Rack (name)" msgstr "" -#: dcim/filtersets.py:1368 ipam/filtersets.py:606 ipam/filtersets.py:846 -#: ipam/filtersets.py:1081 vpn/filtersets.py:393 +#: netbox/dcim/filtersets.py:1368 netbox/ipam/filtersets.py:606 +#: netbox/ipam/filtersets.py:846 netbox/ipam/filtersets.py:1081 +#: netbox/vpn/filtersets.py:393 msgid "Device (name)" msgstr "" -#: dcim/filtersets.py:1379 +#: netbox/dcim/filtersets.py:1379 msgid "Device type (model)" msgstr "" -#: dcim/filtersets.py:1384 +#: netbox/dcim/filtersets.py:1384 msgid "Device role (ID)" msgstr "" -#: dcim/filtersets.py:1390 +#: netbox/dcim/filtersets.py:1390 msgid "Device role (slug)" msgstr "" -#: dcim/filtersets.py:1395 +#: netbox/dcim/filtersets.py:1395 msgid "Virtual Chassis (ID)" msgstr "" -#: dcim/filtersets.py:1401 dcim/forms/filtersets.py:107 -#: dcim/tables/devices.py:211 netbox/navigation/menu.py:66 -#: templates/dcim/device.html:119 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:1401 netbox/dcim/forms/filtersets.py:107 +#: netbox/dcim/tables/devices.py:211 netbox/netbox/navigation/menu.py:66 +#: 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:1421 +#: netbox/dcim/filtersets.py:1421 msgid "Module (ID)" msgstr "" -#: dcim/filtersets.py:1428 +#: netbox/dcim/filtersets.py:1428 msgid "Cable (ID)" msgstr "" -#: dcim/filtersets.py:1537 ipam/forms/bulk_import.py:188 -#: vpn/forms/bulk_import.py:308 +#: netbox/dcim/filtersets.py:1537 netbox/ipam/forms/bulk_import.py:188 +#: netbox/vpn/forms/bulk_import.py:308 msgid "Assigned VLAN" msgstr "" -#: dcim/filtersets.py:1541 +#: netbox/dcim/filtersets.py:1541 msgid "Assigned VID" msgstr "" -#: dcim/filtersets.py:1546 dcim/forms/bulk_edit.py:1382 -#: dcim/forms/bulk_import.py:836 dcim/forms/filtersets.py:1334 -#: dcim/forms/model_forms.py:1322 dcim/models/device_components.py:712 -#: dcim/tables/devices.py:622 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:227 ipam/forms/bulk_edit.py:282 -#: ipam/forms/bulk_edit.py:324 ipam/forms/bulk_import.py:156 -#: ipam/forms/bulk_import.py:242 ipam/forms/bulk_import.py:278 -#: ipam/forms/filtersets.py:67 ipam/forms/filtersets.py:172 -#: ipam/forms/filtersets.py:309 ipam/forms/model_forms.py:60 -#: ipam/forms/model_forms.py:200 ipam/forms/model_forms.py:245 -#: ipam/forms/model_forms.py:298 ipam/forms/model_forms.py:429 -#: ipam/forms/model_forms.py:443 ipam/forms/model_forms.py:457 -#: ipam/models/ip.py:233 ipam/models/ip.py:512 ipam/models/ip.py:720 -#: ipam/models/vrfs.py:62 ipam/tables/ip.py:241 ipam/tables/ip.py:306 -#: ipam/tables/ip.py:356 ipam/tables/ip.py:445 -#: 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:224 -#: virtualization/forms/model_forms.py:344 -#: virtualization/models/virtualmachines.py:350 -#: virtualization/tables/virtualmachines.py:136 +#: netbox/dcim/filtersets.py:1546 netbox/dcim/forms/bulk_edit.py:1382 +#: netbox/dcim/forms/bulk_import.py:836 netbox/dcim/forms/filtersets.py:1334 +#: netbox/dcim/forms/model_forms.py:1322 +#: netbox/dcim/models/device_components.py:712 +#: netbox/dcim/tables/devices.py:622 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:227 netbox/ipam/forms/bulk_edit.py:282 +#: netbox/ipam/forms/bulk_edit.py:324 netbox/ipam/forms/bulk_import.py:156 +#: netbox/ipam/forms/bulk_import.py:242 netbox/ipam/forms/bulk_import.py:278 +#: netbox/ipam/forms/filtersets.py:67 netbox/ipam/forms/filtersets.py:172 +#: netbox/ipam/forms/filtersets.py:309 netbox/ipam/forms/model_forms.py:60 +#: netbox/ipam/forms/model_forms.py:200 netbox/ipam/forms/model_forms.py:245 +#: netbox/ipam/forms/model_forms.py:298 netbox/ipam/forms/model_forms.py:429 +#: netbox/ipam/forms/model_forms.py:443 netbox/ipam/forms/model_forms.py:457 +#: 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:241 netbox/ipam/tables/ip.py:306 +#: netbox/ipam/tables/ip.py:356 netbox/ipam/tables/ip.py:445 +#: 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:224 +#: netbox/virtualization/forms/model_forms.py:344 +#: netbox/virtualization/models/virtualmachines.py:350 +#: netbox/virtualization/tables/virtualmachines.py:136 msgid "VRF" msgstr "" -#: dcim/filtersets.py:1552 ipam/filtersets.py:322 ipam/filtersets.py:333 -#: ipam/filtersets.py:489 ipam/filtersets.py:590 ipam/filtersets.py:601 +#: netbox/dcim/filtersets.py:1552 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:1557 ipam/filtersets.py:1016 vpn/filtersets.py:361 +#: netbox/dcim/filtersets.py:1557 netbox/ipam/filtersets.py:1016 +#: netbox/vpn/filtersets.py:361 msgid "L2VPN (ID)" msgstr "" -#: dcim/filtersets.py:1563 dcim/forms/filtersets.py:1339 -#: dcim/tables/devices.py:570 ipam/filtersets.py:1022 -#: ipam/forms/filtersets.py:525 ipam/tables/vlans.py:133 -#: templates/dcim/interface.html:93 templates/ipam/vlan.html:66 -#: templates/vpn/l2vpntermination.html:12 -#: virtualization/forms/filtersets.py:229 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:1563 netbox/dcim/forms/filtersets.py:1339 +#: netbox/dcim/tables/devices.py:570 netbox/ipam/filtersets.py:1022 +#: netbox/ipam/forms/filtersets.py:525 netbox/ipam/tables/vlans.py:133 +#: 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/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:1595 +#: netbox/dcim/filtersets.py:1595 msgid "Virtual Chassis Interfaces for Device" msgstr "" -#: dcim/filtersets.py:1600 +#: netbox/dcim/filtersets.py:1600 msgid "Virtual Chassis Interfaces for Device (ID)" msgstr "" -#: dcim/filtersets.py:1604 +#: netbox/dcim/filtersets.py:1604 msgid "Kind of interface" msgstr "" -#: dcim/filtersets.py:1609 virtualization/filtersets.py:289 +#: netbox/dcim/filtersets.py:1609 netbox/virtualization/filtersets.py:289 msgid "Parent interface (ID)" msgstr "" -#: dcim/filtersets.py:1614 virtualization/filtersets.py:294 +#: netbox/dcim/filtersets.py:1614 netbox/virtualization/filtersets.py:294 msgid "Bridged interface (ID)" msgstr "" -#: dcim/filtersets.py:1619 +#: netbox/dcim/filtersets.py:1619 msgid "LAG interface (ID)" msgstr "" -#: dcim/filtersets.py:1646 dcim/filtersets.py:1658 -#: dcim/forms/filtersets.py:1251 dcim/forms/model_forms.py:1634 -#: templates/dcim/virtualdevicecontext.html:15 +#: netbox/dcim/filtersets.py:1646 netbox/dcim/filtersets.py:1658 +#: netbox/dcim/forms/filtersets.py:1251 netbox/dcim/forms/model_forms.py:1634 +#: netbox/templates/dcim/virtualdevicecontext.html:15 msgid "Virtual Device Context" msgstr "" -#: dcim/filtersets.py:1652 +#: netbox/dcim/filtersets.py:1652 msgid "Virtual Device Context (Identifier)" msgstr "" -#: dcim/filtersets.py:1663 templates/wireless/wirelesslan.html:11 -#: wireless/forms/model_forms.py:53 +#: netbox/dcim/filtersets.py:1663 netbox/templates/wireless/wirelesslan.html:11 +#: netbox/wireless/forms/model_forms.py:53 msgid "Wireless LAN" msgstr "" -#: dcim/filtersets.py:1667 dcim/tables/devices.py:609 +#: netbox/dcim/filtersets.py:1667 netbox/dcim/tables/devices.py:609 msgid "Wireless link" msgstr "" -#: dcim/filtersets.py:1737 +#: netbox/dcim/filtersets.py:1737 msgid "Installed module (ID)" msgstr "" -#: dcim/filtersets.py:1748 +#: netbox/dcim/filtersets.py:1748 msgid "Installed device (ID)" msgstr "" -#: dcim/filtersets.py:1754 +#: netbox/dcim/filtersets.py:1754 msgid "Installed device (name)" msgstr "" -#: dcim/filtersets.py:1820 +#: netbox/dcim/filtersets.py:1820 msgid "Master (ID)" msgstr "" -#: dcim/filtersets.py:1826 +#: netbox/dcim/filtersets.py:1826 msgid "Master (name)" msgstr "" -#: dcim/filtersets.py:1868 tenancy/filtersets.py:246 +#: netbox/dcim/filtersets.py:1868 netbox/tenancy/filtersets.py:246 msgid "Tenant (ID)" msgstr "" -#: dcim/filtersets.py:1874 extras/filtersets.py:570 tenancy/filtersets.py:252 +#: netbox/dcim/filtersets.py:1874 netbox/extras/filtersets.py:570 +#: netbox/tenancy/filtersets.py:252 msgid "Tenant (slug)" msgstr "" -#: dcim/filtersets.py:1910 dcim/forms/filtersets.py:996 +#: netbox/dcim/filtersets.py:1910 netbox/dcim/forms/filtersets.py:996 msgid "Unterminated" msgstr "" -#: dcim/filtersets.py:2168 +#: netbox/dcim/filtersets.py:2168 msgid "Power panel (ID)" msgstr "" -#: dcim/forms/bulk_create.py:40 extras/forms/filtersets.py:410 -#: extras/forms/model_forms.py:443 extras/forms/model_forms.py:495 -#: netbox/forms/base.py:84 netbox/forms/mixins.py:81 -#: netbox/tables/columns.py:458 -#: 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:410 +#: netbox/extras/forms/model_forms.py:443 +#: netbox/extras/forms/model_forms.py:495 netbox/netbox/forms/base.py:84 +#: netbox/netbox/forms/mixins.py:81 netbox/netbox/tables/columns.py:458 +#: 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:1396 -#: dcim/forms/model_forms.py:431 dcim/forms/model_forms.py:486 -#: dcim/forms/object_create.py:197 dcim/forms/object_create.py:353 -#: dcim/tables/devices.py:170 dcim/tables/devices.py:702 -#: dcim/tables/devicetypes.py:242 templates/dcim/device.html:42 -#: templates/dcim/device.html:129 templates/dcim/modulebay.html:34 -#: templates/dcim/virtualchassis.html:66 -#: templates/dcim/virtualchassis_edit.html:55 +#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1396 +#: netbox/dcim/forms/model_forms.py:431 netbox/dcim/forms/model_forms.py:486 +#: netbox/dcim/forms/object_create.py:197 +#: netbox/dcim/forms/object_create.py:353 netbox/dcim/tables/devices.py:170 +#: netbox/dcim/tables/devices.py:702 netbox/dcim/tables/devicetypes.py:242 +#: netbox/templates/dcim/device.html:43 netbox/templates/dcim/device.html:130 +#: netbox/templates/dcim/modulebay.html:34 +#: 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:116 dcim/forms/bulk_import.py:99 -#: dcim/forms/model_forms.py:116 dcim/tables/sites.py:89 ipam/filtersets.py:985 -#: ipam/forms/bulk_edit.py:531 ipam/forms/bulk_import.py:444 -#: ipam/forms/model_forms.py:526 ipam/tables/fhrp.py:67 -#: ipam/tables/vlans.py:118 ipam/tables/vlans.py:221 -#: templates/dcim/interface.html:284 templates/dcim/site.html:36 -#: 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:57 users/filtersets.py:175 users/forms/filtersets.py:32 -#: users/forms/filtersets.py:38 users/forms/filtersets.py:80 -#: 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/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:531 +#: netbox/ipam/forms/bulk_import.py:444 netbox/ipam/forms/model_forms.py:526 +#: netbox/ipam/tables/fhrp.py:67 netbox/ipam/tables/vlans.py:118 +#: netbox/ipam/tables/vlans.py:221 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 "" -#: dcim/forms/bulk_edit.py:131 +#: netbox/dcim/forms/bulk_edit.py:131 msgid "Contact name" msgstr "" -#: dcim/forms/bulk_edit.py:136 +#: netbox/dcim/forms/bulk_edit.py:136 msgid "Contact phone" msgstr "" -#: dcim/forms/bulk_edit.py:142 +#: netbox/dcim/forms/bulk_edit.py:142 msgid "Contact E-mail" msgstr "" -#: dcim/forms/bulk_edit.py:145 dcim/forms/bulk_import.py:122 -#: dcim/forms/model_forms.py:127 +#: netbox/dcim/forms/bulk_edit.py:145 netbox/dcim/forms/bulk_import.py:122 +#: netbox/dcim/forms/model_forms.py:127 msgid "Time zone" msgstr "" -#: dcim/forms/bulk_edit.py:267 dcim/forms/bulk_edit.py:1160 -#: dcim/forms/bulk_edit.py:1548 dcim/forms/bulk_import.py:207 -#: dcim/forms/bulk_import.py:1021 dcim/forms/filtersets.py:300 -#: dcim/forms/filtersets.py:706 dcim/forms/filtersets.py:1426 -#: dcim/forms/model_forms.py:219 dcim/forms/model_forms.py:1015 -#: dcim/forms/model_forms.py:1454 dcim/forms/object_import.py:181 -#: dcim/tables/devices.py:174 dcim/tables/devices.py:810 -#: dcim/tables/devices.py:921 dcim/tables/devicetypes.py:300 -#: dcim/tables/racks.py:69 extras/filtersets.py:504 ipam/forms/bulk_edit.py:246 -#: ipam/forms/bulk_edit.py:295 ipam/forms/bulk_edit.py:343 -#: ipam/forms/bulk_edit.py:549 ipam/forms/bulk_import.py:196 -#: ipam/forms/bulk_import.py:261 ipam/forms/bulk_import.py:297 -#: ipam/forms/bulk_import.py:463 ipam/forms/filtersets.py:237 -#: ipam/forms/filtersets.py:289 ipam/forms/filtersets.py:360 -#: ipam/forms/filtersets.py:516 ipam/forms/model_forms.py:186 -#: ipam/forms/model_forms.py:219 ipam/forms/model_forms.py:248 -#: ipam/forms/model_forms.py:689 ipam/tables/ip.py:257 ipam/tables/ip.py:313 -#: ipam/tables/ip.py:363 ipam/tables/vlans.py:126 ipam/tables/vlans.py:230 -#: templates/dcim/device.html:179 -#: templates/dcim/inc/panels/inventory_items.html:20 -#: templates/dcim/interface.html:223 templates/dcim/inventoryitem.html:36 -#: templates/dcim/rack.html:47 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:74 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:267 netbox/dcim/forms/bulk_edit.py:1160 +#: netbox/dcim/forms/bulk_edit.py:1548 netbox/dcim/forms/bulk_import.py:207 +#: netbox/dcim/forms/bulk_import.py:1021 netbox/dcim/forms/filtersets.py:300 +#: netbox/dcim/forms/filtersets.py:706 netbox/dcim/forms/filtersets.py:1426 +#: netbox/dcim/forms/model_forms.py:219 netbox/dcim/forms/model_forms.py:1015 +#: netbox/dcim/forms/model_forms.py:1454 netbox/dcim/forms/object_import.py:181 +#: netbox/dcim/tables/devices.py:174 netbox/dcim/tables/devices.py:810 +#: netbox/dcim/tables/devices.py:921 netbox/dcim/tables/devicetypes.py:300 +#: netbox/dcim/tables/racks.py:69 netbox/extras/filtersets.py:504 +#: netbox/ipam/forms/bulk_edit.py:246 netbox/ipam/forms/bulk_edit.py:295 +#: netbox/ipam/forms/bulk_edit.py:343 netbox/ipam/forms/bulk_edit.py:549 +#: 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:186 netbox/ipam/forms/model_forms.py:219 +#: netbox/ipam/forms/model_forms.py:248 netbox/ipam/forms/model_forms.py:689 +#: netbox/ipam/tables/ip.py:257 netbox/ipam/tables/ip.py:313 +#: netbox/ipam/tables/ip.py:363 netbox/ipam/tables/vlans.py:126 +#: netbox/ipam/tables/vlans.py:230 netbox/templates/dcim/device.html:180 +#: 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 "" -#: dcim/forms/bulk_edit.py:274 dcim/forms/bulk_edit.py:610 -#: dcim/forms/bulk_edit.py:662 templates/dcim/device.html:103 -#: templates/dcim/module.html:74 templates/dcim/modulebay.html:66 -#: templates/dcim/rack.html:55 +#: 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 "" -#: dcim/forms/bulk_edit.py:277 dcim/forms/filtersets.py:307 -#: dcim/forms/filtersets.py:742 dcim/forms/filtersets.py:886 -#: dcim/forms/filtersets.py:1438 +#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/filtersets.py:307 +#: netbox/dcim/forms/filtersets.py:742 netbox/dcim/forms/filtersets.py:886 +#: netbox/dcim/forms/filtersets.py:1438 msgid "Asset tag" msgstr "" -#: dcim/forms/bulk_edit.py:287 dcim/forms/bulk_import.py:220 -#: dcim/forms/filtersets.py:292 templates/dcim/rack.html:86 +#: netbox/dcim/forms/bulk_edit.py:287 netbox/dcim/forms/bulk_import.py:220 +#: netbox/dcim/forms/filtersets.py:292 netbox/templates/dcim/rack.html:86 msgid "Width" msgstr "" -#: dcim/forms/bulk_edit.py:293 templates/dcim/devicetype.html:37 +#: netbox/dcim/forms/bulk_edit.py:293 netbox/templates/dcim/devicetype.html:37 msgid "Height (U)" msgstr "" -#: dcim/forms/bulk_edit.py:298 +#: netbox/dcim/forms/bulk_edit.py:298 msgid "Descending units" msgstr "" -#: dcim/forms/bulk_edit.py:301 +#: netbox/dcim/forms/bulk_edit.py:301 msgid "Outer width" msgstr "" -#: dcim/forms/bulk_edit.py:306 +#: netbox/dcim/forms/bulk_edit.py:306 msgid "Outer depth" msgstr "" -#: dcim/forms/bulk_edit.py:311 dcim/forms/bulk_import.py:225 +#: netbox/dcim/forms/bulk_edit.py:311 netbox/dcim/forms/bulk_import.py:225 msgid "Outer unit" msgstr "" -#: dcim/forms/bulk_edit.py:316 +#: netbox/dcim/forms/bulk_edit.py:316 msgid "Mounting depth" msgstr "" -#: dcim/forms/bulk_edit.py:321 dcim/forms/bulk_edit.py:351 -#: dcim/forms/bulk_edit.py:436 dcim/forms/bulk_edit.py:459 -#: dcim/forms/bulk_edit.py:475 dcim/forms/bulk_edit.py:495 -#: dcim/forms/bulk_import.py:332 dcim/forms/bulk_import.py:358 -#: dcim/forms/filtersets.py:251 dcim/forms/filtersets.py:312 -#: dcim/forms/filtersets.py:336 dcim/forms/filtersets.py:423 -#: dcim/forms/filtersets.py:529 dcim/forms/filtersets.py:548 -#: dcim/forms/filtersets.py:604 dcim/forms/model_forms.py:232 -#: dcim/forms/model_forms.py:346 dcim/tables/devicetypes.py:103 -#: dcim/tables/modules.py:35 dcim/tables/racks.py:103 -#: extras/forms/bulk_edit.py:45 extras/forms/bulk_edit.py:108 -#: extras/forms/bulk_edit.py:158 extras/forms/bulk_edit.py:278 -#: extras/forms/filtersets.py:61 extras/forms/filtersets.py:134 -#: extras/forms/filtersets.py:221 ipam/forms/bulk_edit.py:188 -#: templates/dcim/device.html:316 templates/dcim/devicetype.html:49 -#: templates/dcim/moduletype.html:30 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: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:332 netbox/dcim/forms/bulk_import.py:358 +#: netbox/dcim/forms/filtersets.py:251 netbox/dcim/forms/filtersets.py:312 +#: netbox/dcim/forms/filtersets.py:336 netbox/dcim/forms/filtersets.py:423 +#: netbox/dcim/forms/filtersets.py:529 netbox/dcim/forms/filtersets.py:548 +#: netbox/dcim/forms/filtersets.py:604 netbox/dcim/forms/model_forms.py:232 +#: netbox/dcim/forms/model_forms.py:346 netbox/dcim/tables/devicetypes.py:103 +#: 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/templates/dcim/device.html:317 +#: netbox/templates/dcim/devicetype.html:49 +#: netbox/templates/dcim/moduletype.html:30 +#: 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:326 dcim/forms/filtersets.py:317 +#: netbox/dcim/forms/bulk_edit.py:326 netbox/dcim/forms/filtersets.py:317 msgid "Max weight" msgstr "" -#: dcim/forms/bulk_edit.py:331 dcim/forms/bulk_edit.py:441 -#: dcim/forms/bulk_edit.py:480 dcim/forms/bulk_import.py:231 -#: dcim/forms/bulk_import.py:337 dcim/forms/bulk_import.py:363 -#: dcim/forms/filtersets.py:322 dcim/forms/filtersets.py:533 -#: dcim/forms/filtersets.py:608 +#: 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:231 +#: netbox/dcim/forms/bulk_import.py:337 netbox/dcim/forms/bulk_import.py:363 +#: netbox/dcim/forms/filtersets.py:322 netbox/dcim/forms/filtersets.py:533 +#: netbox/dcim/forms/filtersets.py:608 msgid "Weight unit" msgstr "" -#: dcim/forms/bulk_edit.py:345 dcim/forms/bulk_edit.py:808 -#: dcim/forms/bulk_import.py:270 dcim/forms/bulk_import.py:273 -#: dcim/forms/bulk_import.py:498 dcim/forms/bulk_import.py:1309 -#: dcim/forms/bulk_import.py:1313 dcim/forms/filtersets.py:102 -#: dcim/forms/filtersets.py:340 dcim/forms/filtersets.py:354 -#: dcim/forms/filtersets.py:392 dcim/forms/filtersets.py:701 -#: dcim/forms/filtersets.py:954 dcim/forms/filtersets.py:1086 -#: dcim/forms/model_forms.py:226 dcim/forms/model_forms.py:248 -#: dcim/forms/model_forms.py:422 dcim/forms/model_forms.py:700 -#: dcim/forms/object_create.py:400 dcim/tables/devices.py:166 -#: dcim/tables/power.py:70 dcim/tables/racks.py:148 ipam/forms/bulk_edit.py:465 -#: ipam/forms/filtersets.py:442 ipam/forms/model_forms.py:610 -#: templates/dcim/device.html:29 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:345 netbox/dcim/forms/bulk_edit.py:808 +#: netbox/dcim/forms/bulk_import.py:270 netbox/dcim/forms/bulk_import.py:273 +#: netbox/dcim/forms/bulk_import.py:498 netbox/dcim/forms/bulk_import.py:1309 +#: netbox/dcim/forms/bulk_import.py:1313 netbox/dcim/forms/filtersets.py:102 +#: netbox/dcim/forms/filtersets.py:340 netbox/dcim/forms/filtersets.py:354 +#: netbox/dcim/forms/filtersets.py:392 netbox/dcim/forms/filtersets.py:701 +#: netbox/dcim/forms/filtersets.py:954 netbox/dcim/forms/filtersets.py:1086 +#: 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:700 +#: netbox/dcim/forms/object_create.py:400 netbox/dcim/tables/devices.py:166 +#: netbox/dcim/tables/power.py:70 netbox/dcim/tables/racks.py:148 +#: netbox/ipam/forms/bulk_edit.py:465 netbox/ipam/forms/filtersets.py:442 +#: netbox/ipam/forms/model_forms.py:610 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:349 dcim/forms/bulk_edit.py:628 -#: dcim/forms/filtersets.py:248 dcim/forms/filtersets.py:333 -#: dcim/forms/filtersets.py:416 dcim/forms/filtersets.py:543 -#: dcim/forms/filtersets.py:651 dcim/forms/filtersets.py:861 -#: dcim/forms/model_forms.py:610 dcim/forms/model_forms.py:1524 -#: templates/dcim/device_edit.html:20 +#: netbox/dcim/forms/bulk_edit.py:349 netbox/dcim/forms/bulk_edit.py:628 +#: netbox/dcim/forms/filtersets.py:248 netbox/dcim/forms/filtersets.py:333 +#: netbox/dcim/forms/filtersets.py:416 netbox/dcim/forms/filtersets.py:543 +#: netbox/dcim/forms/filtersets.py:651 netbox/dcim/forms/filtersets.py:861 +#: netbox/dcim/forms/model_forms.py:610 netbox/dcim/forms/model_forms.py:1524 +#: netbox/templates/dcim/device_edit.html:20 msgid "Hardware" msgstr "" -#: dcim/forms/bulk_edit.py:402 dcim/forms/bulk_edit.py:466 -#: dcim/forms/bulk_edit.py:530 dcim/forms/bulk_edit.py:554 -#: dcim/forms/bulk_edit.py:638 dcim/forms/bulk_edit.py:1165 -#: dcim/forms/bulk_edit.py:1553 dcim/forms/bulk_import.py:319 -#: dcim/forms/bulk_import.py:353 dcim/forms/bulk_import.py:395 -#: dcim/forms/bulk_import.py:431 dcim/forms/bulk_import.py:1027 -#: dcim/forms/filtersets.py:429 dcim/forms/filtersets.py:554 -#: dcim/forms/filtersets.py:630 dcim/forms/filtersets.py:711 -#: dcim/forms/filtersets.py:866 dcim/forms/filtersets.py:1431 -#: dcim/forms/model_forms.py:281 dcim/forms/model_forms.py:293 -#: dcim/forms/model_forms.py:339 dcim/forms/model_forms.py:379 -#: dcim/forms/model_forms.py:1020 dcim/forms/model_forms.py:1459 -#: dcim/forms/object_import.py:187 dcim/tables/devices.py:101 -#: dcim/tables/devices.py:177 dcim/tables/devices.py:924 -#: dcim/tables/devicetypes.py:81 dcim/tables/devicetypes.py:304 -#: dcim/tables/modules.py:20 dcim/tables/modules.py:60 -#: templates/dcim/devicetype.html:14 templates/dcim/inventoryitem.html:44 -#: templates/dcim/manufacturer.html:33 templates/dcim/modulebay.html:58 -#: templates/dcim/moduletype.html:14 templates/dcim/platform.html:37 +#: 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:1553 netbox/dcim/forms/bulk_import.py:319 +#: netbox/dcim/forms/bulk_import.py:353 netbox/dcim/forms/bulk_import.py:395 +#: netbox/dcim/forms/bulk_import.py:431 netbox/dcim/forms/bulk_import.py:1027 +#: netbox/dcim/forms/filtersets.py:429 netbox/dcim/forms/filtersets.py:554 +#: netbox/dcim/forms/filtersets.py:630 netbox/dcim/forms/filtersets.py:711 +#: netbox/dcim/forms/filtersets.py:866 netbox/dcim/forms/filtersets.py:1431 +#: 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:1020 netbox/dcim/forms/model_forms.py:1459 +#: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:101 +#: netbox/dcim/tables/devices.py:177 netbox/dcim/tables/devices.py:924 +#: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:304 +#: 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 "" -#: dcim/forms/bulk_edit.py:407 dcim/forms/bulk_import.py:325 -#: dcim/forms/filtersets.py:434 dcim/forms/model_forms.py:297 +#: netbox/dcim/forms/bulk_edit.py:407 netbox/dcim/forms/bulk_import.py:325 +#: netbox/dcim/forms/filtersets.py:434 netbox/dcim/forms/model_forms.py:297 msgid "Default platform" msgstr "" -#: dcim/forms/bulk_edit.py:412 dcim/forms/bulk_edit.py:471 -#: dcim/forms/filtersets.py:437 dcim/forms/filtersets.py:557 +#: netbox/dcim/forms/bulk_edit.py:412 netbox/dcim/forms/bulk_edit.py:471 +#: netbox/dcim/forms/filtersets.py:437 netbox/dcim/forms/filtersets.py:557 msgid "Part number" msgstr "" -#: dcim/forms/bulk_edit.py:416 +#: netbox/dcim/forms/bulk_edit.py:416 msgid "U height" msgstr "" -#: dcim/forms/bulk_edit.py:428 +#: netbox/dcim/forms/bulk_edit.py:428 msgid "Exclude from utilization" msgstr "" -#: dcim/forms/bulk_edit.py:431 dcim/forms/bulk_edit.py:603 -#: dcim/forms/bulk_import.py:525 dcim/forms/filtersets.py:446 -#: dcim/forms/filtersets.py:733 templates/dcim/device.html:97 -#: templates/dcim/devicetype.html:65 +#: netbox/dcim/forms/bulk_edit.py:431 netbox/dcim/forms/bulk_edit.py:603 +#: netbox/dcim/forms/bulk_import.py:525 netbox/dcim/forms/filtersets.py:446 +#: netbox/dcim/forms/filtersets.py:733 netbox/templates/dcim/device.html:98 +#: netbox/templates/dcim/devicetype.html:65 msgid "Airflow" msgstr "" -#: dcim/forms/bulk_edit.py:457 dcim/forms/model_forms.py:312 -#: dcim/tables/devicetypes.py:78 templates/dcim/device.html:87 -#: templates/dcim/devicebay.html:52 templates/dcim/module.html:58 +#: netbox/dcim/forms/bulk_edit.py:457 netbox/dcim/forms/model_forms.py:312 +#: netbox/dcim/tables/devicetypes.py:78 netbox/templates/dcim/device.html:88 +#: netbox/templates/dcim/devicebay.html:52 netbox/templates/dcim/module.html:58 msgid "Device Type" msgstr "" -#: dcim/forms/bulk_edit.py:494 dcim/forms/model_forms.py:345 -#: dcim/tables/modules.py:17 dcim/tables/modules.py:65 -#: templates/dcim/module.html:62 templates/dcim/modulebay.html:62 -#: templates/dcim/moduletype.html:11 +#: netbox/dcim/forms/bulk_edit.py:494 netbox/dcim/forms/model_forms.py:345 +#: 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/moduletype.html:11 msgid "Module Type" msgstr "" -#: dcim/forms/bulk_edit.py:508 dcim/models/devices.py:474 +#: netbox/dcim/forms/bulk_edit.py:508 netbox/dcim/models/devices.py:474 msgid "VM role" msgstr "" -#: dcim/forms/bulk_edit.py:511 dcim/forms/bulk_edit.py:535 -#: dcim/forms/bulk_edit.py:618 dcim/forms/bulk_import.py:376 -#: dcim/forms/bulk_import.py:380 dcim/forms/bulk_import.py:402 -#: dcim/forms/bulk_import.py:406 dcim/forms/bulk_import.py:531 -#: dcim/forms/bulk_import.py:535 dcim/forms/filtersets.py:619 -#: dcim/forms/filtersets.py:635 dcim/forms/filtersets.py:752 -#: dcim/forms/model_forms.py:358 dcim/forms/model_forms.py:384 -#: dcim/forms/model_forms.py:495 virtualization/forms/bulk_import.py:132 -#: virtualization/forms/bulk_import.py:133 -#: virtualization/forms/filtersets.py:184 -#: virtualization/forms/model_forms.py:215 +#: 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:376 +#: netbox/dcim/forms/bulk_import.py:380 netbox/dcim/forms/bulk_import.py:402 +#: netbox/dcim/forms/bulk_import.py:406 netbox/dcim/forms/bulk_import.py:531 +#: netbox/dcim/forms/bulk_import.py:535 netbox/dcim/forms/filtersets.py:619 +#: netbox/dcim/forms/filtersets.py:635 netbox/dcim/forms/filtersets.py:752 +#: netbox/dcim/forms/model_forms.py:358 netbox/dcim/forms/model_forms.py:384 +#: netbox/dcim/forms/model_forms.py:495 +#: netbox/virtualization/forms/bulk_import.py:132 +#: netbox/virtualization/forms/bulk_import.py:133 +#: netbox/virtualization/forms/filtersets.py:184 +#: netbox/virtualization/forms/model_forms.py:215 msgid "Config template" msgstr "" -#: dcim/forms/bulk_edit.py:559 dcim/forms/bulk_edit.py:959 -#: dcim/forms/bulk_import.py:437 dcim/forms/filtersets.py:112 -#: dcim/forms/model_forms.py:444 dcim/forms/model_forms.py:817 -#: dcim/forms/model_forms.py:834 extras/filtersets.py:499 +#: netbox/dcim/forms/bulk_edit.py:559 netbox/dcim/forms/bulk_edit.py:959 +#: netbox/dcim/forms/bulk_import.py:437 netbox/dcim/forms/filtersets.py:112 +#: netbox/dcim/forms/model_forms.py:444 netbox/dcim/forms/model_forms.py:817 +#: netbox/dcim/forms/model_forms.py:834 netbox/extras/filtersets.py:499 msgid "Device type" msgstr "" -#: dcim/forms/bulk_edit.py:570 dcim/forms/bulk_import.py:418 -#: dcim/forms/filtersets.py:117 dcim/forms/model_forms.py:452 +#: netbox/dcim/forms/bulk_edit.py:570 netbox/dcim/forms/bulk_import.py:418 +#: netbox/dcim/forms/filtersets.py:117 netbox/dcim/forms/model_forms.py:452 msgid "Device role" msgstr "" -#: dcim/forms/bulk_edit.py:593 dcim/forms/bulk_import.py:443 -#: dcim/forms/filtersets.py:725 dcim/forms/model_forms.py:394 -#: dcim/forms/model_forms.py:456 dcim/tables/devices.py:187 -#: extras/filtersets.py:515 templates/dcim/device.html:183 -#: 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:78 +#: netbox/dcim/forms/bulk_edit.py:593 netbox/dcim/forms/bulk_import.py:443 +#: netbox/dcim/forms/filtersets.py:725 netbox/dcim/forms/model_forms.py:394 +#: netbox/dcim/forms/model_forms.py:456 netbox/dcim/tables/devices.py:187 +#: netbox/extras/filtersets.py:515 netbox/templates/dcim/device.html:184 +#: 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 msgid "Platform" msgstr "" -#: dcim/forms/bulk_edit.py:626 dcim/forms/bulk_edit.py:1179 -#: dcim/forms/bulk_edit.py:1543 dcim/forms/bulk_edit.py:1589 -#: dcim/forms/bulk_import.py:586 dcim/forms/bulk_import.py:648 -#: dcim/forms/bulk_import.py:674 dcim/forms/bulk_import.py:700 -#: dcim/forms/bulk_import.py:720 dcim/forms/bulk_import.py:773 -#: dcim/forms/bulk_import.py:891 dcim/forms/bulk_import.py:939 -#: dcim/forms/bulk_import.py:956 dcim/forms/bulk_import.py:968 -#: dcim/forms/bulk_import.py:1016 dcim/forms/bulk_import.py:1373 -#: dcim/forms/connections.py:24 dcim/forms/filtersets.py:129 -#: dcim/forms/filtersets.py:840 dcim/forms/filtersets.py:970 -#: dcim/forms/filtersets.py:1160 dcim/forms/filtersets.py:1182 -#: dcim/forms/filtersets.py:1204 dcim/forms/filtersets.py:1221 -#: dcim/forms/filtersets.py:1241 dcim/forms/filtersets.py:1349 -#: dcim/forms/filtersets.py:1371 dcim/forms/filtersets.py:1392 -#: dcim/forms/filtersets.py:1407 dcim/forms/filtersets.py:1421 -#: dcim/forms/filtersets.py:1484 dcim/forms/filtersets.py:1508 -#: dcim/forms/filtersets.py:1532 dcim/forms/model_forms.py:573 -#: dcim/forms/model_forms.py:794 dcim/forms/model_forms.py:1153 -#: dcim/forms/model_forms.py:1608 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:290 -#: dcim/tables/devices.py:359 dcim/tables/devices.py:403 -#: dcim/tables/devices.py:448 dcim/tables/devices.py:502 -#: dcim/tables/devices.py:594 dcim/tables/devices.py:692 -#: dcim/tables/devices.py:752 dcim/tables/devices.py:802 -#: dcim/tables/devices.py:862 dcim/tables/devices.py:914 -#: dcim/tables/devices.py:1040 dcim/tables/modules.py:52 -#: extras/forms/filtersets.py:330 ipam/forms/bulk_import.py:303 -#: ipam/forms/bulk_import.py:489 ipam/forms/filtersets.py:558 -#: ipam/forms/model_forms.py:317 ipam/forms/model_forms.py:725 -#: ipam/forms/model_forms.py:758 ipam/forms/model_forms.py:784 -#: ipam/tables/vlans.py:176 templates/dcim/consoleport.html:20 -#: templates/dcim/consoleserverport.html:20 templates/dcim/device.html:14 -#: templates/dcim/device.html:128 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:54 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:110 -#: 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:70 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:626 netbox/dcim/forms/bulk_edit.py:1179 +#: netbox/dcim/forms/bulk_edit.py:1543 netbox/dcim/forms/bulk_edit.py:1589 +#: netbox/dcim/forms/bulk_import.py:586 netbox/dcim/forms/bulk_import.py:648 +#: netbox/dcim/forms/bulk_import.py:674 netbox/dcim/forms/bulk_import.py:700 +#: netbox/dcim/forms/bulk_import.py:720 netbox/dcim/forms/bulk_import.py:773 +#: netbox/dcim/forms/bulk_import.py:891 netbox/dcim/forms/bulk_import.py:939 +#: netbox/dcim/forms/bulk_import.py:956 netbox/dcim/forms/bulk_import.py:968 +#: netbox/dcim/forms/bulk_import.py:1016 netbox/dcim/forms/bulk_import.py:1373 +#: netbox/dcim/forms/connections.py:24 netbox/dcim/forms/filtersets.py:129 +#: netbox/dcim/forms/filtersets.py:840 netbox/dcim/forms/filtersets.py:970 +#: netbox/dcim/forms/filtersets.py:1160 netbox/dcim/forms/filtersets.py:1182 +#: netbox/dcim/forms/filtersets.py:1204 netbox/dcim/forms/filtersets.py:1221 +#: netbox/dcim/forms/filtersets.py:1241 netbox/dcim/forms/filtersets.py:1349 +#: netbox/dcim/forms/filtersets.py:1371 netbox/dcim/forms/filtersets.py:1392 +#: netbox/dcim/forms/filtersets.py:1407 netbox/dcim/forms/filtersets.py:1421 +#: netbox/dcim/forms/filtersets.py:1484 netbox/dcim/forms/filtersets.py:1508 +#: netbox/dcim/forms/filtersets.py:1532 netbox/dcim/forms/model_forms.py:573 +#: netbox/dcim/forms/model_forms.py:794 netbox/dcim/forms/model_forms.py:1153 +#: netbox/dcim/forms/model_forms.py:1608 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:290 +#: netbox/dcim/tables/devices.py:359 netbox/dcim/tables/devices.py:403 +#: netbox/dcim/tables/devices.py:448 netbox/dcim/tables/devices.py:502 +#: netbox/dcim/tables/devices.py:594 netbox/dcim/tables/devices.py:692 +#: netbox/dcim/tables/devices.py:752 netbox/dcim/tables/devices.py:802 +#: netbox/dcim/tables/devices.py:862 netbox/dcim/tables/devices.py:914 +#: netbox/dcim/tables/devices.py:1040 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:317 netbox/ipam/forms/model_forms.py:725 +#: netbox/ipam/forms/model_forms.py:758 netbox/ipam/forms/model_forms.py:784 +#: netbox/ipam/tables/vlans.py:176 netbox/templates/dcim/consoleport.html:20 +#: netbox/templates/dcim/consoleserverport.html:20 +#: netbox/templates/dcim/device.html:15 netbox/templates/dcim/device.html:129 +#: 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:54 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:110 +#: 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:70 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:629 templates/extras/dashboard/widget_config.html:7 -#: virtualization/forms/bulk_edit.py:191 +#: netbox/dcim/forms/bulk_edit.py:629 +#: netbox/templates/extras/dashboard/widget_config.html:7 +#: netbox/virtualization/forms/bulk_edit.py:191 msgid "Configuration" msgstr "" -#: dcim/forms/bulk_edit.py:643 dcim/forms/bulk_import.py:598 -#: dcim/forms/model_forms.py:587 dcim/forms/model_forms.py:842 +#: netbox/dcim/forms/bulk_edit.py:643 netbox/dcim/forms/bulk_import.py:598 +#: netbox/dcim/forms/model_forms.py:587 netbox/dcim/forms/model_forms.py:842 msgid "Module type" msgstr "" -#: dcim/forms/bulk_edit.py:697 dcim/forms/bulk_edit.py:882 -#: dcim/forms/bulk_edit.py:901 dcim/forms/bulk_edit.py:924 -#: dcim/forms/bulk_edit.py:966 dcim/forms/bulk_edit.py:1010 -#: dcim/forms/bulk_edit.py:1061 dcim/forms/bulk_edit.py:1088 -#: dcim/forms/bulk_edit.py:1115 dcim/forms/bulk_edit.py:1133 -#: dcim/forms/bulk_edit.py:1151 dcim/forms/filtersets.py:65 -#: 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:30 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: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:65 +#: 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:30 +#: 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:706 dcim/forms/filtersets.py:987 -#: templates/dcim/cable.html:50 +#: netbox/dcim/forms/bulk_edit.py:706 netbox/dcim/forms/filtersets.py:987 +#: netbox/templates/dcim/cable.html:50 msgid "Length" msgstr "" -#: dcim/forms/bulk_edit.py:711 dcim/forms/bulk_import.py:1174 -#: dcim/forms/bulk_import.py:1177 dcim/forms/filtersets.py:991 +#: netbox/dcim/forms/bulk_edit.py:711 netbox/dcim/forms/bulk_import.py:1174 +#: netbox/dcim/forms/bulk_import.py:1177 netbox/dcim/forms/filtersets.py:991 msgid "Length unit" msgstr "" -#: dcim/forms/bulk_edit.py:735 templates/dcim/virtualchassis.html:23 +#: netbox/dcim/forms/bulk_edit.py:735 +#: netbox/templates/dcim/virtualchassis.html:23 msgid "Domain" msgstr "" -#: dcim/forms/bulk_edit.py:803 dcim/forms/bulk_import.py:1296 -#: dcim/forms/filtersets.py:1077 dcim/forms/model_forms.py:695 +#: netbox/dcim/forms/bulk_edit.py:803 netbox/dcim/forms/bulk_import.py:1296 +#: netbox/dcim/forms/filtersets.py:1077 netbox/dcim/forms/model_forms.py:695 msgid "Power panel" msgstr "" -#: dcim/forms/bulk_edit.py:825 dcim/forms/bulk_import.py:1332 -#: dcim/forms/filtersets.py:1099 templates/dcim/powerfeed.html:83 +#: netbox/dcim/forms/bulk_edit.py:825 netbox/dcim/forms/bulk_import.py:1332 +#: netbox/dcim/forms/filtersets.py:1099 netbox/templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "" -#: dcim/forms/bulk_edit.py:831 dcim/forms/bulk_import.py:1337 -#: dcim/forms/filtersets.py:1104 templates/dcim/powerfeed.html:95 +#: netbox/dcim/forms/bulk_edit.py:831 netbox/dcim/forms/bulk_import.py:1337 +#: netbox/dcim/forms/filtersets.py:1104 netbox/templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "" -#: dcim/forms/bulk_edit.py:837 dcim/forms/filtersets.py:1109 -#: templates/dcim/powerfeed.html:87 +#: netbox/dcim/forms/bulk_edit.py:837 netbox/dcim/forms/filtersets.py:1109 +#: netbox/templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "" -#: dcim/forms/bulk_edit.py:841 dcim/forms/filtersets.py:1113 -#: templates/dcim/powerfeed.html:91 +#: netbox/dcim/forms/bulk_edit.py:841 netbox/dcim/forms/filtersets.py:1113 +#: netbox/templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "" -#: dcim/forms/bulk_edit.py:845 dcim/forms/filtersets.py:1117 +#: netbox/dcim/forms/bulk_edit.py:845 netbox/dcim/forms/filtersets.py:1117 msgid "Max utilization" msgstr "" -#: dcim/forms/bulk_edit.py:934 +#: netbox/dcim/forms/bulk_edit.py:934 msgid "Maximum draw" msgstr "" -#: dcim/forms/bulk_edit.py:937 dcim/models/device_component_templates.py:256 -#: dcim/models/device_components.py:357 +#: netbox/dcim/forms/bulk_edit.py:937 +#: netbox/dcim/models/device_component_templates.py:256 +#: netbox/dcim/models/device_components.py:357 msgid "Maximum power draw (watts)" msgstr "" -#: dcim/forms/bulk_edit.py:940 +#: netbox/dcim/forms/bulk_edit.py:940 msgid "Allocated draw" msgstr "" -#: dcim/forms/bulk_edit.py:943 dcim/models/device_component_templates.py:263 -#: dcim/models/device_components.py:364 +#: netbox/dcim/forms/bulk_edit.py:943 +#: netbox/dcim/models/device_component_templates.py:263 +#: netbox/dcim/models/device_components.py:364 msgid "Allocated power draw (watts)" msgstr "" -#: dcim/forms/bulk_edit.py:976 dcim/forms/bulk_import.py:731 -#: dcim/forms/model_forms.py:898 dcim/forms/model_forms.py:1223 -#: dcim/forms/model_forms.py:1511 dcim/forms/object_import.py:55 +#: netbox/dcim/forms/bulk_edit.py:976 netbox/dcim/forms/bulk_import.py:731 +#: netbox/dcim/forms/model_forms.py:898 netbox/dcim/forms/model_forms.py:1223 +#: netbox/dcim/forms/model_forms.py:1511 netbox/dcim/forms/object_import.py:55 msgid "Power port" msgstr "" -#: dcim/forms/bulk_edit.py:981 dcim/forms/bulk_import.py:738 +#: netbox/dcim/forms/bulk_edit.py:981 netbox/dcim/forms/bulk_import.py:738 msgid "Feed leg" msgstr "" -#: dcim/forms/bulk_edit.py:1027 dcim/forms/bulk_edit.py:1333 +#: netbox/dcim/forms/bulk_edit.py:1027 netbox/dcim/forms/bulk_edit.py:1333 msgid "Management only" msgstr "" -#: dcim/forms/bulk_edit.py:1037 dcim/forms/bulk_edit.py:1339 -#: dcim/forms/bulk_import.py:821 dcim/forms/filtersets.py:1300 -#: dcim/forms/object_import.py:90 dcim/models/device_component_templates.py:411 -#: dcim/models/device_components.py:671 +#: netbox/dcim/forms/bulk_edit.py:1037 netbox/dcim/forms/bulk_edit.py:1339 +#: netbox/dcim/forms/bulk_import.py:821 netbox/dcim/forms/filtersets.py:1300 +#: netbox/dcim/forms/object_import.py:90 +#: netbox/dcim/models/device_component_templates.py:411 +#: netbox/dcim/models/device_components.py:671 msgid "PoE mode" msgstr "" -#: dcim/forms/bulk_edit.py:1043 dcim/forms/bulk_edit.py:1345 -#: dcim/forms/bulk_import.py:827 dcim/forms/filtersets.py:1305 -#: dcim/forms/object_import.py:95 dcim/models/device_component_templates.py:417 -#: dcim/models/device_components.py:677 +#: netbox/dcim/forms/bulk_edit.py:1043 netbox/dcim/forms/bulk_edit.py:1345 +#: netbox/dcim/forms/bulk_import.py:827 netbox/dcim/forms/filtersets.py:1305 +#: netbox/dcim/forms/object_import.py:95 +#: netbox/dcim/models/device_component_templates.py:417 +#: netbox/dcim/models/device_components.py:677 msgid "PoE type" msgstr "" -#: dcim/forms/bulk_edit.py:1049 dcim/forms/filtersets.py:1310 -#: dcim/forms/object_import.py:100 +#: netbox/dcim/forms/bulk_edit.py:1049 netbox/dcim/forms/filtersets.py:1310 +#: netbox/dcim/forms/object_import.py:100 msgid "Wireless role" msgstr "" -#: dcim/forms/bulk_edit.py:1186 dcim/forms/model_forms.py:609 -#: dcim/forms/model_forms.py:1168 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:51 templates/dcim/modulebay.html:54 -#: templates/dcim/poweroutlet.html:24 templates/dcim/powerport.html:24 -#: templates/dcim/rearport.html:24 +#: netbox/dcim/forms/bulk_edit.py:1186 netbox/dcim/forms/model_forms.py:609 +#: netbox/dcim/forms/model_forms.py:1168 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/poweroutlet.html:24 +#: netbox/templates/dcim/powerport.html:24 +#: netbox/templates/dcim/rearport.html:24 msgid "Module" msgstr "" -#: dcim/forms/bulk_edit.py:1313 dcim/tables/devices.py:661 -#: templates/dcim/interface.html:110 +#: netbox/dcim/forms/bulk_edit.py:1313 netbox/dcim/tables/devices.py:661 +#: netbox/templates/dcim/interface.html:110 msgid "LAG" msgstr "" -#: dcim/forms/bulk_edit.py:1318 dcim/forms/model_forms.py:1250 +#: netbox/dcim/forms/bulk_edit.py:1318 netbox/dcim/forms/model_forms.py:1250 msgid "Virtual device contexts" msgstr "" -#: dcim/forms/bulk_edit.py:1324 dcim/forms/bulk_import.py:659 -#: dcim/forms/bulk_import.py:685 dcim/forms/filtersets.py:1169 -#: dcim/forms/filtersets.py:1191 dcim/forms/filtersets.py:1264 -#: dcim/tables/devices.py:606 -#: templates/circuits/inc/circuit_termination_fields.html:67 -#: templates/dcim/consoleport.html:40 templates/dcim/consoleserverport.html:40 +#: netbox/dcim/forms/bulk_edit.py:1324 netbox/dcim/forms/bulk_import.py:659 +#: netbox/dcim/forms/bulk_import.py:685 netbox/dcim/forms/filtersets.py:1169 +#: netbox/dcim/forms/filtersets.py:1191 netbox/dcim/forms/filtersets.py:1264 +#: netbox/dcim/tables/devices.py:606 +#: 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:1353 dcim/forms/bulk_import.py:830 -#: 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:1353 netbox/dcim/forms/bulk_import.py:830 +#: 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:1361 dcim/forms/model_forms.py:1299 -#: ipam/forms/bulk_import.py:177 ipam/forms/filtersets.py:505 -#: ipam/models/vlans.py:84 virtualization/forms/bulk_edit.py:240 -#: virtualization/forms/model_forms.py:321 +#: netbox/dcim/forms/bulk_edit.py:1361 netbox/dcim/forms/model_forms.py:1299 +#: netbox/ipam/forms/bulk_import.py:177 netbox/ipam/forms/filtersets.py:505 +#: 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:1369 dcim/forms/model_forms.py:1304 -#: dcim/tables/devices.py:579 virtualization/forms/bulk_edit.py:248 -#: virtualization/forms/model_forms.py:326 +#: netbox/dcim/forms/bulk_edit.py:1369 netbox/dcim/forms/model_forms.py:1304 +#: 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:1377 dcim/forms/model_forms.py:1313 -#: dcim/tables/devices.py:585 virtualization/forms/bulk_edit.py:256 -#: virtualization/forms/model_forms.py:335 +#: netbox/dcim/forms/bulk_edit.py:1377 netbox/dcim/forms/model_forms.py:1313 +#: 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:1387 dcim/forms/model_forms.py:1286 +#: netbox/dcim/forms/bulk_edit.py:1387 netbox/dcim/forms/model_forms.py:1286 msgid "Wireless LAN group" msgstr "" -#: dcim/forms/bulk_edit.py:1392 dcim/forms/model_forms.py:1291 -#: dcim/tables/devices.py:615 netbox/navigation/menu.py:133 -#: templates/dcim/interface.html:280 wireless/tables/wirelesslan.py:24 +#: netbox/dcim/forms/bulk_edit.py:1392 netbox/dcim/forms/model_forms.py:1291 +#: netbox/dcim/tables/devices.py:615 netbox/netbox/navigation/menu.py:133 +#: netbox/templates/dcim/interface.html:280 +#: netbox/wireless/tables/wirelesslan.py:24 msgid "Wireless LANs" msgstr "" -#: dcim/forms/bulk_edit.py:1401 dcim/forms/filtersets.py:1237 -#: dcim/forms/model_forms.py:1334 ipam/forms/bulk_edit.py:271 -#: ipam/forms/bulk_edit.py:362 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:1401 netbox/dcim/forms/filtersets.py:1237 +#: netbox/dcim/forms/model_forms.py:1334 netbox/ipam/forms/bulk_edit.py:271 +#: netbox/ipam/forms/bulk_edit.py:362 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:1402 dcim/forms/filtersets.py:650 -#: dcim/forms/model_forms.py:1335 virtualization/forms/model_forms.py:350 +#: netbox/dcim/forms/bulk_edit.py:1402 netbox/dcim/forms/filtersets.py:650 +#: netbox/dcim/forms/model_forms.py:1335 +#: netbox/virtualization/forms/model_forms.py:350 msgid "Operation" msgstr "" -#: dcim/forms/bulk_edit.py:1403 dcim/forms/filtersets.py:1238 -#: dcim/forms/model_forms.py:932 dcim/forms/model_forms.py:1337 +#: netbox/dcim/forms/bulk_edit.py:1403 netbox/dcim/forms/filtersets.py:1238 +#: netbox/dcim/forms/model_forms.py:932 netbox/dcim/forms/model_forms.py:1337 msgid "PoE" msgstr "" -#: dcim/forms/bulk_edit.py:1404 dcim/forms/model_forms.py:1336 -#: templates/dcim/interface.html:99 virtualization/forms/bulk_edit.py:267 -#: virtualization/forms/model_forms.py:351 +#: netbox/dcim/forms/bulk_edit.py:1404 netbox/dcim/forms/model_forms.py:1336 +#: 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:1405 dcim/forms/model_forms.py:1338 -#: virtualization/forms/bulk_edit.py:268 -#: virtualization/forms/model_forms.py:352 +#: netbox/dcim/forms/bulk_edit.py:1405 netbox/dcim/forms/model_forms.py:1338 +#: netbox/virtualization/forms/bulk_edit.py:268 +#: netbox/virtualization/forms/model_forms.py:352 msgid "802.1Q Switching" msgstr "" -#: dcim/forms/bulk_edit.py:1467 dcim/forms/bulk_edit.py:1469 +#: netbox/dcim/forms/bulk_edit.py:1467 netbox/dcim/forms/bulk_edit.py:1469 msgid "Interface mode must be specified to assign VLANs" msgstr "" -#: dcim/forms/bulk_edit.py:1474 dcim/forms/common.py:50 +#: netbox/dcim/forms/bulk_edit.py:1474 netbox/dcim/forms/common.py:50 msgid "An access interface cannot have tagged VLANs assigned." msgstr "" -#: dcim/forms/bulk_import.py:63 +#: netbox/dcim/forms/bulk_import.py:63 msgid "Name of parent region" msgstr "" -#: dcim/forms/bulk_import.py:77 +#: netbox/dcim/forms/bulk_import.py:77 msgid "Name of parent site group" msgstr "" -#: dcim/forms/bulk_import.py:96 +#: netbox/dcim/forms/bulk_import.py:96 msgid "Assigned region" msgstr "" -#: dcim/forms/bulk_import.py:103 tenancy/forms/bulk_import.py:44 -#: tenancy/forms/bulk_import.py:85 wireless/forms/bulk_import.py:40 +#: netbox/dcim/forms/bulk_import.py:103 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:122 +#: netbox/dcim/forms/bulk_import.py:122 msgid "available options" msgstr "" -#: dcim/forms/bulk_import.py:133 dcim/forms/bulk_import.py:488 -#: dcim/forms/bulk_import.py:1293 ipam/forms/bulk_import.py:174 -#: ipam/forms/bulk_import.py:441 virtualization/forms/bulk_import.py:63 -#: virtualization/forms/bulk_import.py:89 +#: netbox/dcim/forms/bulk_import.py:133 netbox/dcim/forms/bulk_import.py:488 +#: netbox/dcim/forms/bulk_import.py:1293 netbox/ipam/forms/bulk_import.py:174 +#: netbox/ipam/forms/bulk_import.py:441 +#: netbox/virtualization/forms/bulk_import.py:63 +#: netbox/virtualization/forms/bulk_import.py:89 msgid "Assigned site" msgstr "" -#: dcim/forms/bulk_import.py:140 +#: netbox/dcim/forms/bulk_import.py:140 msgid "Parent location" msgstr "" -#: dcim/forms/bulk_import.py:142 +#: netbox/dcim/forms/bulk_import.py:142 msgid "Location not found." msgstr "" -#: dcim/forms/bulk_import.py:199 +#: netbox/dcim/forms/bulk_import.py:199 msgid "Name of assigned tenant" msgstr "" -#: dcim/forms/bulk_import.py:211 +#: netbox/dcim/forms/bulk_import.py:211 msgid "Name of assigned role" msgstr "" -#: dcim/forms/bulk_import.py:217 +#: netbox/dcim/forms/bulk_import.py:217 msgid "Rack type" msgstr "" -#: dcim/forms/bulk_import.py:222 +#: netbox/dcim/forms/bulk_import.py:222 msgid "Rail-to-rail width (in inches)" msgstr "" -#: dcim/forms/bulk_import.py:228 +#: netbox/dcim/forms/bulk_import.py:228 msgid "Unit for outer dimensions" msgstr "" -#: dcim/forms/bulk_import.py:234 +#: netbox/dcim/forms/bulk_import.py:234 msgid "Unit for rack weights" msgstr "" -#: dcim/forms/bulk_import.py:260 +#: netbox/dcim/forms/bulk_import.py:260 msgid "Parent site" msgstr "" -#: dcim/forms/bulk_import.py:267 dcim/forms/bulk_import.py:1306 +#: netbox/dcim/forms/bulk_import.py:267 netbox/dcim/forms/bulk_import.py:1306 msgid "Rack's location (if any)" msgstr "" -#: dcim/forms/bulk_import.py:276 dcim/forms/model_forms.py:253 -#: dcim/tables/racks.py:153 templates/dcim/rackreservation.html:12 -#: templates/dcim/rackreservation.html:45 +#: netbox/dcim/forms/bulk_import.py:276 netbox/dcim/forms/model_forms.py:253 +#: netbox/dcim/tables/racks.py:153 +#: netbox/templates/dcim/rackreservation.html:12 +#: netbox/templates/dcim/rackreservation.html:45 msgid "Units" msgstr "" -#: dcim/forms/bulk_import.py:279 +#: netbox/dcim/forms/bulk_import.py:279 msgid "Comma-separated list of individual unit numbers" msgstr "" -#: dcim/forms/bulk_import.py:322 +#: netbox/dcim/forms/bulk_import.py:322 msgid "The manufacturer which produces this device type" msgstr "" -#: dcim/forms/bulk_import.py:329 +#: netbox/dcim/forms/bulk_import.py:329 msgid "The default platform for devices of this type (optional)" msgstr "" -#: dcim/forms/bulk_import.py:334 +#: netbox/dcim/forms/bulk_import.py:334 msgid "Device weight" msgstr "" -#: dcim/forms/bulk_import.py:340 +#: netbox/dcim/forms/bulk_import.py:340 msgid "Unit for device weight" msgstr "" -#: dcim/forms/bulk_import.py:360 +#: netbox/dcim/forms/bulk_import.py:360 msgid "Module weight" msgstr "" -#: dcim/forms/bulk_import.py:366 +#: netbox/dcim/forms/bulk_import.py:366 msgid "Unit for module weight" msgstr "" -#: dcim/forms/bulk_import.py:399 +#: netbox/dcim/forms/bulk_import.py:399 msgid "Limit platform assignments to this manufacturer" msgstr "" -#: dcim/forms/bulk_import.py:421 dcim/forms/bulk_import.py:1376 -#: tenancy/forms/bulk_import.py:106 +#: netbox/dcim/forms/bulk_import.py:421 netbox/dcim/forms/bulk_import.py:1376 +#: netbox/tenancy/forms/bulk_import.py:106 msgid "Assigned role" msgstr "" -#: dcim/forms/bulk_import.py:434 +#: netbox/dcim/forms/bulk_import.py:434 msgid "Device type manufacturer" msgstr "" -#: dcim/forms/bulk_import.py:440 +#: netbox/dcim/forms/bulk_import.py:440 msgid "Device type model" msgstr "" -#: dcim/forms/bulk_import.py:447 virtualization/forms/bulk_import.py:126 +#: netbox/dcim/forms/bulk_import.py:447 +#: netbox/virtualization/forms/bulk_import.py:126 msgid "Assigned platform" msgstr "" -#: dcim/forms/bulk_import.py:455 dcim/forms/bulk_import.py:459 -#: dcim/forms/model_forms.py:476 +#: netbox/dcim/forms/bulk_import.py:455 netbox/dcim/forms/bulk_import.py:459 +#: netbox/dcim/forms/model_forms.py:476 msgid "Virtual chassis" msgstr "" -#: dcim/forms/bulk_import.py:462 dcim/forms/model_forms.py:465 -#: dcim/tables/devices.py:207 extras/filtersets.py:548 -#: extras/forms/filtersets.py:331 ipam/forms/bulk_edit.py:479 -#: ipam/forms/filtersets.py:415 ipam/forms/filtersets.py:459 -#: ipam/forms/model_forms.py:627 templates/dcim/device.html:231 -#: templates/virtualization/cluster.html:10 -#: templates/virtualization/virtualmachine.html:88 -#: templates/virtualization/virtualmachine.html:97 -#: virtualization/filtersets.py:157 virtualization/filtersets.py:273 -#: 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:200 -#: virtualization/forms/model_forms.py:79 -#: virtualization/forms/model_forms.py:176 -#: virtualization/tables/virtualmachines.py:66 +#: netbox/dcim/forms/bulk_import.py:462 netbox/dcim/forms/model_forms.py:465 +#: netbox/dcim/tables/devices.py:207 netbox/extras/filtersets.py:548 +#: netbox/extras/forms/filtersets.py:331 netbox/ipam/forms/bulk_edit.py:479 +#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:459 +#: netbox/ipam/forms/model_forms.py:627 netbox/templates/dcim/device.html:232 +#: netbox/templates/virtualization/cluster.html:10 +#: netbox/templates/virtualization/virtualmachine.html:88 +#: netbox/templates/virtualization/virtualmachine.html:97 +#: netbox/virtualization/filtersets.py:157 +#: netbox/virtualization/filtersets.py:273 +#: 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/model_forms.py:79 +#: netbox/virtualization/forms/model_forms.py:176 +#: netbox/virtualization/tables/virtualmachines.py:66 msgid "Cluster" msgstr "" -#: dcim/forms/bulk_import.py:466 +#: netbox/dcim/forms/bulk_import.py:466 msgid "Virtualization cluster" msgstr "" -#: dcim/forms/bulk_import.py:495 +#: netbox/dcim/forms/bulk_import.py:495 msgid "Assigned location (if any)" msgstr "" -#: dcim/forms/bulk_import.py:502 +#: netbox/dcim/forms/bulk_import.py:502 msgid "Assigned rack (if any)" msgstr "" -#: dcim/forms/bulk_import.py:505 +#: netbox/dcim/forms/bulk_import.py:505 msgid "Face" msgstr "" -#: dcim/forms/bulk_import.py:508 +#: netbox/dcim/forms/bulk_import.py:508 msgid "Mounted rack face" msgstr "" -#: dcim/forms/bulk_import.py:515 +#: netbox/dcim/forms/bulk_import.py:515 msgid "Parent device (for child devices)" msgstr "" -#: dcim/forms/bulk_import.py:518 +#: netbox/dcim/forms/bulk_import.py:518 msgid "Device bay" msgstr "" -#: dcim/forms/bulk_import.py:522 +#: netbox/dcim/forms/bulk_import.py:522 msgid "Device bay in which this device is installed (for child devices)" msgstr "" -#: dcim/forms/bulk_import.py:528 +#: netbox/dcim/forms/bulk_import.py:528 msgid "Airflow direction" msgstr "" -#: dcim/forms/bulk_import.py:589 +#: netbox/dcim/forms/bulk_import.py:589 msgid "The device in which this module is installed" msgstr "" -#: dcim/forms/bulk_import.py:592 dcim/forms/model_forms.py:580 +#: netbox/dcim/forms/bulk_import.py:592 netbox/dcim/forms/model_forms.py:580 msgid "Module bay" msgstr "" -#: dcim/forms/bulk_import.py:595 +#: netbox/dcim/forms/bulk_import.py:595 msgid "The module bay in which this module is installed" msgstr "" -#: dcim/forms/bulk_import.py:601 +#: netbox/dcim/forms/bulk_import.py:601 msgid "The type of module" msgstr "" -#: dcim/forms/bulk_import.py:609 dcim/forms/model_forms.py:596 +#: netbox/dcim/forms/bulk_import.py:609 netbox/dcim/forms/model_forms.py:596 msgid "Replicate components" msgstr "" -#: dcim/forms/bulk_import.py:611 +#: netbox/dcim/forms/bulk_import.py:611 msgid "" "Automatically populate components associated with this module type (enabled " "by default)" msgstr "" -#: dcim/forms/bulk_import.py:614 dcim/forms/model_forms.py:602 +#: netbox/dcim/forms/bulk_import.py:614 netbox/dcim/forms/model_forms.py:602 msgid "Adopt components" msgstr "" -#: dcim/forms/bulk_import.py:616 dcim/forms/model_forms.py:605 +#: netbox/dcim/forms/bulk_import.py:616 netbox/dcim/forms/model_forms.py:605 msgid "Adopt already existing components" msgstr "" -#: dcim/forms/bulk_import.py:656 dcim/forms/bulk_import.py:682 -#: dcim/forms/bulk_import.py:708 +#: netbox/dcim/forms/bulk_import.py:656 netbox/dcim/forms/bulk_import.py:682 +#: netbox/dcim/forms/bulk_import.py:708 msgid "Port type" msgstr "" -#: dcim/forms/bulk_import.py:664 dcim/forms/bulk_import.py:690 +#: netbox/dcim/forms/bulk_import.py:664 netbox/dcim/forms/bulk_import.py:690 msgid "Port speed in bps" msgstr "" -#: dcim/forms/bulk_import.py:728 +#: netbox/dcim/forms/bulk_import.py:728 msgid "Outlet type" msgstr "" -#: dcim/forms/bulk_import.py:735 +#: netbox/dcim/forms/bulk_import.py:735 msgid "Local power port which feeds this outlet" msgstr "" -#: dcim/forms/bulk_import.py:741 +#: netbox/dcim/forms/bulk_import.py:741 msgid "Electrical phase (for three-phase circuits)" msgstr "" -#: dcim/forms/bulk_import.py:782 dcim/forms/model_forms.py:1261 -#: virtualization/forms/bulk_import.py:155 -#: virtualization/forms/model_forms.py:305 +#: netbox/dcim/forms/bulk_import.py:782 netbox/dcim/forms/model_forms.py:1261 +#: netbox/virtualization/forms/bulk_import.py:155 +#: netbox/virtualization/forms/model_forms.py:305 msgid "Parent interface" msgstr "" -#: dcim/forms/bulk_import.py:789 dcim/forms/model_forms.py:1269 -#: virtualization/forms/bulk_import.py:162 -#: virtualization/forms/model_forms.py:313 +#: netbox/dcim/forms/bulk_import.py:789 netbox/dcim/forms/model_forms.py:1269 +#: netbox/virtualization/forms/bulk_import.py:162 +#: netbox/virtualization/forms/model_forms.py:313 msgid "Bridged interface" msgstr "" -#: dcim/forms/bulk_import.py:792 +#: netbox/dcim/forms/bulk_import.py:792 msgid "Lag" msgstr "" -#: dcim/forms/bulk_import.py:796 +#: netbox/dcim/forms/bulk_import.py:796 msgid "Parent LAG interface" msgstr "" -#: dcim/forms/bulk_import.py:799 +#: netbox/dcim/forms/bulk_import.py:799 msgid "Vdcs" msgstr "" -#: dcim/forms/bulk_import.py:804 +#: netbox/dcim/forms/bulk_import.py:804 msgid "VDC names separated by commas, encased with double quotes. Example:" msgstr "" -#: dcim/forms/bulk_import.py:810 +#: netbox/dcim/forms/bulk_import.py:810 msgid "Physical medium" msgstr "" -#: dcim/forms/bulk_import.py:813 dcim/forms/filtersets.py:1271 +#: netbox/dcim/forms/bulk_import.py:813 netbox/dcim/forms/filtersets.py:1271 msgid "Duplex" msgstr "" -#: dcim/forms/bulk_import.py:818 +#: netbox/dcim/forms/bulk_import.py:818 msgid "Poe mode" msgstr "" -#: dcim/forms/bulk_import.py:824 +#: netbox/dcim/forms/bulk_import.py:824 msgid "Poe type" msgstr "" -#: dcim/forms/bulk_import.py:833 virtualization/forms/bulk_import.py:168 +#: netbox/dcim/forms/bulk_import.py:833 +#: netbox/virtualization/forms/bulk_import.py:168 msgid "IEEE 802.1Q operational mode (for L2 interfaces)" msgstr "" -#: dcim/forms/bulk_import.py:840 ipam/forms/bulk_import.py:160 -#: ipam/forms/bulk_import.py:246 ipam/forms/bulk_import.py:282 -#: 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:840 netbox/ipam/forms/bulk_import.py:160 +#: netbox/ipam/forms/bulk_import.py:246 netbox/ipam/forms/bulk_import.py:282 +#: 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:843 +#: netbox/dcim/forms/bulk_import.py:843 msgid "Rf role" msgstr "" -#: dcim/forms/bulk_import.py:846 +#: netbox/dcim/forms/bulk_import.py:846 msgid "Wireless role (AP/station)" msgstr "" -#: dcim/forms/bulk_import.py:882 +#: netbox/dcim/forms/bulk_import.py:882 #, python-brace-format msgid "VDC {vdc} is not assigned to device {device}" msgstr "" -#: dcim/forms/bulk_import.py:896 dcim/forms/model_forms.py:945 -#: dcim/forms/model_forms.py:1519 dcim/forms/object_import.py:117 +#: netbox/dcim/forms/bulk_import.py:896 netbox/dcim/forms/model_forms.py:945 +#: netbox/dcim/forms/model_forms.py:1519 netbox/dcim/forms/object_import.py:117 msgid "Rear port" msgstr "" -#: dcim/forms/bulk_import.py:899 +#: netbox/dcim/forms/bulk_import.py:899 msgid "Corresponding rear port" msgstr "" -#: dcim/forms/bulk_import.py:904 dcim/forms/bulk_import.py:945 -#: dcim/forms/bulk_import.py:1164 +#: netbox/dcim/forms/bulk_import.py:904 netbox/dcim/forms/bulk_import.py:945 +#: netbox/dcim/forms/bulk_import.py:1164 msgid "Physical medium classification" msgstr "" -#: dcim/forms/bulk_import.py:973 dcim/tables/devices.py:823 +#: netbox/dcim/forms/bulk_import.py:973 netbox/dcim/tables/devices.py:823 msgid "Installed device" msgstr "" -#: dcim/forms/bulk_import.py:977 +#: netbox/dcim/forms/bulk_import.py:977 msgid "Child device installed within this bay" msgstr "" -#: dcim/forms/bulk_import.py:979 +#: netbox/dcim/forms/bulk_import.py:979 msgid "Child device not found." msgstr "" -#: dcim/forms/bulk_import.py:1037 +#: netbox/dcim/forms/bulk_import.py:1037 msgid "Parent inventory item" msgstr "" -#: dcim/forms/bulk_import.py:1040 +#: netbox/dcim/forms/bulk_import.py:1040 msgid "Component type" msgstr "" -#: dcim/forms/bulk_import.py:1044 +#: netbox/dcim/forms/bulk_import.py:1044 msgid "Component Type" msgstr "" -#: dcim/forms/bulk_import.py:1047 +#: netbox/dcim/forms/bulk_import.py:1047 msgid "Compnent name" msgstr "" -#: dcim/forms/bulk_import.py:1049 +#: netbox/dcim/forms/bulk_import.py:1049 msgid "Component Name" msgstr "" -#: dcim/forms/bulk_import.py:1091 +#: netbox/dcim/forms/bulk_import.py:1091 #, python-brace-format msgid "Component not found: {device} - {component_name}" msgstr "" -#: dcim/forms/bulk_import.py:1119 +#: netbox/dcim/forms/bulk_import.py:1119 msgid "Side A device" msgstr "" -#: dcim/forms/bulk_import.py:1122 dcim/forms/bulk_import.py:1140 +#: netbox/dcim/forms/bulk_import.py:1122 netbox/dcim/forms/bulk_import.py:1140 msgid "Device name" msgstr "" -#: dcim/forms/bulk_import.py:1125 +#: netbox/dcim/forms/bulk_import.py:1125 msgid "Side A type" msgstr "" -#: dcim/forms/bulk_import.py:1128 dcim/forms/bulk_import.py:1146 +#: netbox/dcim/forms/bulk_import.py:1128 netbox/dcim/forms/bulk_import.py:1146 msgid "Termination type" msgstr "" -#: dcim/forms/bulk_import.py:1131 +#: netbox/dcim/forms/bulk_import.py:1131 msgid "Side A name" msgstr "" -#: dcim/forms/bulk_import.py:1132 dcim/forms/bulk_import.py:1150 +#: netbox/dcim/forms/bulk_import.py:1132 netbox/dcim/forms/bulk_import.py:1150 msgid "Termination name" msgstr "" -#: dcim/forms/bulk_import.py:1137 +#: netbox/dcim/forms/bulk_import.py:1137 msgid "Side B device" msgstr "" -#: dcim/forms/bulk_import.py:1143 +#: netbox/dcim/forms/bulk_import.py:1143 msgid "Side B type" msgstr "" -#: dcim/forms/bulk_import.py:1149 +#: netbox/dcim/forms/bulk_import.py:1149 msgid "Side B name" msgstr "" -#: dcim/forms/bulk_import.py:1158 wireless/forms/bulk_import.py:86 +#: netbox/dcim/forms/bulk_import.py:1158 +#: netbox/wireless/forms/bulk_import.py:86 msgid "Connection status" msgstr "" -#: dcim/forms/bulk_import.py:1213 +#: netbox/dcim/forms/bulk_import.py:1213 #, python-brace-format msgid "Side {side_upper}: {device} {termination_object} is already connected" msgstr "" -#: dcim/forms/bulk_import.py:1219 +#: netbox/dcim/forms/bulk_import.py:1219 #, python-brace-format msgid "{side_upper} side termination not found: {device} {name}" msgstr "" -#: dcim/forms/bulk_import.py:1244 dcim/forms/model_forms.py:730 -#: dcim/tables/devices.py:1010 templates/dcim/device.html:130 -#: templates/dcim/virtualchassis.html:27 templates/dcim/virtualchassis.html:67 +#: netbox/dcim/forms/bulk_import.py:1244 netbox/dcim/forms/model_forms.py:730 +#: netbox/dcim/tables/devices.py:1010 netbox/templates/dcim/device.html:131 +#: netbox/templates/dcim/virtualchassis.html:27 +#: netbox/templates/dcim/virtualchassis.html:67 msgid "Master" msgstr "" -#: dcim/forms/bulk_import.py:1248 +#: netbox/dcim/forms/bulk_import.py:1248 msgid "Master device" msgstr "" -#: dcim/forms/bulk_import.py:1265 +#: netbox/dcim/forms/bulk_import.py:1265 msgid "Name of parent site" msgstr "" -#: dcim/forms/bulk_import.py:1299 +#: netbox/dcim/forms/bulk_import.py:1299 msgid "Upstream power panel" msgstr "" -#: dcim/forms/bulk_import.py:1329 +#: netbox/dcim/forms/bulk_import.py:1329 msgid "Primary or redundant" msgstr "" -#: dcim/forms/bulk_import.py:1334 +#: netbox/dcim/forms/bulk_import.py:1334 msgid "Supply type (AC/DC)" msgstr "" -#: dcim/forms/bulk_import.py:1339 +#: netbox/dcim/forms/bulk_import.py:1339 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:110 +#: netbox/dcim/forms/common.py:110 msgid "" "Cannot install module with placeholder values in a module bay with no " "position defined." msgstr "" -#: dcim/forms/common.py:119 +#: netbox/dcim/forms/common.py:119 #, python-brace-format msgid "Cannot adopt {model} {name} as it already belongs to a module" msgstr "" -#: dcim/forms/common.py:128 +#: netbox/dcim/forms/common.py:128 #, python-brace-format msgid "A {model} named {name} already exists" msgstr "" -#: dcim/forms/connections.py:48 dcim/forms/model_forms.py:683 -#: 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:48 netbox/dcim/forms/model_forms.py:683 +#: 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:57 dcim/forms/model_forms.py:710 -#: templates/dcim/powerfeed.html:21 templates/dcim/powerport.html:80 +#: netbox/dcim/forms/connections.py:57 netbox/dcim/forms/model_forms.py:710 +#: netbox/templates/dcim/powerfeed.html:21 +#: netbox/templates/dcim/powerport.html:80 msgid "Power Feed" msgstr "" -#: dcim/forms/connections.py:79 +#: netbox/dcim/forms/connections.py:79 msgid "Side" msgstr "" -#: dcim/forms/filtersets.py:142 +#: netbox/dcim/forms/filtersets.py:142 msgid "Parent region" msgstr "" -#: dcim/forms/filtersets.py:156 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:156 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:247 dcim/forms/filtersets.py:332 +#: netbox/dcim/forms/filtersets.py:247 netbox/dcim/forms/filtersets.py:332 msgid "Function" msgstr "" -#: dcim/forms/filtersets.py:418 dcim/forms/model_forms.py:317 -#: templates/inc/panels/image_attachments.html:6 +#: netbox/dcim/forms/filtersets.py:418 netbox/dcim/forms/model_forms.py:317 +#: netbox/templates/inc/panels/image_attachments.html:6 msgid "Images" msgstr "" -#: dcim/forms/filtersets.py:421 dcim/forms/filtersets.py:546 -#: dcim/forms/filtersets.py:656 +#: netbox/dcim/forms/filtersets.py:421 netbox/dcim/forms/filtersets.py:546 +#: netbox/dcim/forms/filtersets.py:656 msgid "Components" msgstr "" -#: dcim/forms/filtersets.py:441 +#: netbox/dcim/forms/filtersets.py:441 msgid "Subdevice role" msgstr "" -#: dcim/forms/filtersets.py:719 +#: netbox/dcim/forms/filtersets.py:719 msgid "Model" msgstr "" -#: dcim/forms/filtersets.py:763 +#: netbox/dcim/forms/filtersets.py:763 msgid "Has an OOB IP" msgstr "" -#: dcim/forms/filtersets.py:770 +#: netbox/dcim/forms/filtersets.py:770 msgid "Virtual chassis member" msgstr "" -#: dcim/forms/filtersets.py:819 +#: netbox/dcim/forms/filtersets.py:819 msgid "Has virtual device contexts" msgstr "" -#: dcim/forms/filtersets.py:1129 +#: netbox/dcim/forms/filtersets.py:1129 msgid "Cabled" msgstr "" -#: dcim/forms/filtersets.py:1136 +#: netbox/dcim/forms/filtersets.py:1136 msgid "Occupied" msgstr "" -#: dcim/forms/filtersets.py:1161 dcim/forms/filtersets.py:1183 -#: dcim/forms/filtersets.py:1205 dcim/forms/filtersets.py:1222 -#: dcim/forms/filtersets.py:1242 dcim/tables/devices.py:352 -#: 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:1161 netbox/dcim/forms/filtersets.py:1183 +#: netbox/dcim/forms/filtersets.py:1205 netbox/dcim/forms/filtersets.py:1222 +#: netbox/dcim/forms/filtersets.py:1242 netbox/dcim/tables/devices.py:352 +#: 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:1254 extras/forms/bulk_edit.py:316 -#: extras/forms/bulk_import.py:242 extras/forms/filtersets.py:476 -#: extras/forms/model_forms.py:551 extras/tables/tables.py:512 -#: templates/extras/journalentry.html:30 +#: netbox/dcim/forms/filtersets.py:1254 netbox/extras/forms/bulk_edit.py:316 +#: netbox/extras/forms/bulk_import.py:242 netbox/extras/forms/filtersets.py:476 +#: netbox/extras/forms/model_forms.py:551 netbox/extras/tables/tables.py:512 +#: netbox/templates/extras/journalentry.html:30 msgid "Kind" msgstr "" -#: dcim/forms/filtersets.py:1283 +#: netbox/dcim/forms/filtersets.py:1283 msgid "Mgmt only" msgstr "" -#: dcim/forms/filtersets.py:1295 dcim/forms/model_forms.py:1327 -#: dcim/models/device_components.py:630 templates/dcim/interface.html:129 +#: netbox/dcim/forms/filtersets.py:1295 netbox/dcim/forms/model_forms.py:1327 +#: netbox/dcim/models/device_components.py:630 +#: netbox/templates/dcim/interface.html:129 msgid "WWN" msgstr "" -#: dcim/forms/filtersets.py:1315 +#: netbox/dcim/forms/filtersets.py:1315 msgid "Wireless channel" msgstr "" -#: dcim/forms/filtersets.py:1319 +#: netbox/dcim/forms/filtersets.py:1319 msgid "Channel frequency (MHz)" msgstr "" -#: dcim/forms/filtersets.py:1323 +#: netbox/dcim/forms/filtersets.py:1323 msgid "Channel width (MHz)" msgstr "" -#: dcim/forms/filtersets.py:1327 templates/dcim/interface.html:85 +#: netbox/dcim/forms/filtersets.py:1327 netbox/templates/dcim/interface.html:85 msgid "Transmit power (dBm)" msgstr "" -#: dcim/forms/filtersets.py:1350 dcim/forms/filtersets.py:1372 -#: dcim/tables/devices.py:324 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:1350 netbox/dcim/forms/filtersets.py:1372 +#: netbox/dcim/tables/devices.py:324 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:1442 dcim/tables/devices.py:933 +#: netbox/dcim/forms/filtersets.py:1442 netbox/dcim/tables/devices.py:933 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:139 +#: netbox/dcim/forms/model_forms.py:139 msgid "Contact Info" msgstr "" -#: dcim/forms/model_forms.py:194 templates/dcim/rackrole.html:19 +#: netbox/dcim/forms/model_forms.py:194 netbox/templates/dcim/rackrole.html:19 msgid "Rack Role" msgstr "" -#: dcim/forms/model_forms.py:227 +#: netbox/dcim/forms/model_forms.py:227 msgid "Inventory Control" msgstr "" -#: dcim/forms/model_forms.py:231 +#: netbox/dcim/forms/model_forms.py:231 msgid "Outer Dimensions" msgstr "" -#: dcim/forms/model_forms.py:233 templates/dcim/device.html:307 -#: templates/dcim/rack.html:73 +#: netbox/dcim/forms/model_forms.py:233 netbox/templates/dcim/device.html:308 +#: netbox/templates/dcim/rack.html:73 msgid "Dimensions" msgstr "" -#: dcim/forms/model_forms.py:255 +#: netbox/dcim/forms/model_forms.py:255 msgid "" "Comma-separated list of numeric unit IDs. A range may be specified using a " "hyphen." msgstr "" -#: dcim/forms/model_forms.py:266 dcim/tables/racks.py:133 +#: netbox/dcim/forms/model_forms.py:266 netbox/dcim/tables/racks.py:133 msgid "Reservation" msgstr "" -#: dcim/forms/model_forms.py:306 dcim/forms/model_forms.py:389 -#: utilities/forms/fields/fields.py:47 +#: netbox/dcim/forms/model_forms.py:306 netbox/dcim/forms/model_forms.py:389 +#: netbox/utilities/forms/fields/fields.py:47 msgid "Slug" msgstr "" -#: dcim/forms/model_forms.py:315 templates/dcim/devicetype.html:11 +#: netbox/dcim/forms/model_forms.py:315 +#: netbox/templates/dcim/devicetype.html:11 msgid "Chassis" msgstr "" -#: dcim/forms/model_forms.py:366 templates/dcim/devicerole.html:23 +#: netbox/dcim/forms/model_forms.py:366 +#: netbox/templates/dcim/devicerole.html:23 msgid "Device Role" msgstr "" -#: dcim/forms/model_forms.py:433 dcim/models/devices.py:634 +#: netbox/dcim/forms/model_forms.py:433 netbox/dcim/models/devices.py:634 msgid "The lowest-numbered unit occupied by the device" msgstr "" -#: dcim/forms/model_forms.py:487 +#: netbox/dcim/forms/model_forms.py:487 msgid "The position in the virtual chassis this device is identified by" msgstr "" -#: dcim/forms/model_forms.py:491 templates/dcim/device.html:131 -#: 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/dcim/forms/model_forms.py:491 netbox/templates/dcim/device.html:132 +#: 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 "" -#: dcim/forms/model_forms.py:492 +#: netbox/dcim/forms/model_forms.py:492 msgid "The priority of the device in the virtual chassis" msgstr "" -#: dcim/forms/model_forms.py:599 +#: netbox/dcim/forms/model_forms.py:599 msgid "Automatically populate components associated with this module type" msgstr "" -#: dcim/forms/model_forms.py:661 +#: netbox/dcim/forms/model_forms.py:661 msgid "Maximum length is 32767 (any unit)" msgstr "" -#: dcim/forms/model_forms.py:712 +#: netbox/dcim/forms/model_forms.py:712 msgid "Characteristics" msgstr "" -#: dcim/forms/model_forms.py:1032 +#: netbox/dcim/forms/model_forms.py:1032 msgid "Console port template" msgstr "" -#: dcim/forms/model_forms.py:1040 +#: netbox/dcim/forms/model_forms.py:1040 msgid "Console server port template" msgstr "" -#: dcim/forms/model_forms.py:1048 +#: netbox/dcim/forms/model_forms.py:1048 msgid "Front port template" msgstr "" -#: dcim/forms/model_forms.py:1056 +#: netbox/dcim/forms/model_forms.py:1056 msgid "Interface template" msgstr "" -#: dcim/forms/model_forms.py:1064 +#: netbox/dcim/forms/model_forms.py:1064 msgid "Power outlet template" msgstr "" -#: dcim/forms/model_forms.py:1072 +#: netbox/dcim/forms/model_forms.py:1072 msgid "Power port template" msgstr "" -#: dcim/forms/model_forms.py:1080 +#: netbox/dcim/forms/model_forms.py:1080 msgid "Rear port template" msgstr "" -#: dcim/forms/model_forms.py:1089 dcim/forms/model_forms.py:1332 -#: dcim/forms/model_forms.py:1495 dcim/forms/model_forms.py:1527 -#: dcim/tables/connections.py:65 ipam/forms/bulk_import.py:317 -#: ipam/forms/model_forms.py:278 ipam/forms/model_forms.py:287 -#: ipam/tables/fhrp.py:64 ipam/tables/ip.py:368 ipam/tables/vlans.py:165 -#: 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:45 -#: 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:1089 netbox/dcim/forms/model_forms.py:1332 +#: netbox/dcim/forms/model_forms.py:1495 netbox/dcim/forms/model_forms.py:1527 +#: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:317 +#: netbox/ipam/forms/model_forms.py:278 netbox/ipam/forms/model_forms.py:287 +#: netbox/ipam/tables/fhrp.py:64 netbox/ipam/tables/ip.py:368 +#: netbox/ipam/tables/vlans.py:165 +#: 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:45 +#: 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:1090 dcim/forms/model_forms.py:1528 -#: 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:1090 netbox/dcim/forms/model_forms.py:1528 +#: 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:1091 dcim/forms/model_forms.py:1529 -#: templates/dcim/consoleport.html:73 templates/dcim/consoleserverport.html:17 -#: templates/dcim/frontport.html:109 +#: netbox/dcim/forms/model_forms.py:1091 netbox/dcim/forms/model_forms.py:1529 +#: 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:1092 dcim/forms/model_forms.py:1530 -#: 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:1092 netbox/dcim/forms/model_forms.py:1530 +#: 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:1093 dcim/forms/model_forms.py:1531 -#: dcim/tables/devices.py:705 -#: 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:1093 netbox/dcim/forms/model_forms.py:1531 +#: netbox/dcim/tables/devices.py:705 +#: 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:1094 dcim/forms/model_forms.py:1532 -#: dcim/tables/connections.py:46 dcim/tables/devices.py:509 -#: templates/dcim/poweroutlet.html:44 templates/dcim/powerport.html:17 +#: netbox/dcim/forms/model_forms.py:1094 netbox/dcim/forms/model_forms.py:1532 +#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:509 +#: netbox/templates/dcim/poweroutlet.html:44 +#: netbox/templates/dcim/powerport.html:17 msgid "Power Port" msgstr "" -#: dcim/forms/model_forms.py:1095 dcim/forms/model_forms.py:1533 -#: templates/dcim/poweroutlet.html:17 templates/dcim/powerport.html:77 +#: netbox/dcim/forms/model_forms.py:1095 netbox/dcim/forms/model_forms.py:1533 +#: netbox/templates/dcim/poweroutlet.html:17 +#: netbox/templates/dcim/powerport.html:77 msgid "Power Outlet" msgstr "" -#: dcim/forms/model_forms.py:1097 dcim/forms/model_forms.py:1535 +#: netbox/dcim/forms/model_forms.py:1097 netbox/dcim/forms/model_forms.py:1535 msgid "Component Assignment" msgstr "" -#: dcim/forms/model_forms.py:1140 dcim/forms/model_forms.py:1582 +#: netbox/dcim/forms/model_forms.py:1140 netbox/dcim/forms/model_forms.py:1582 msgid "An InventoryItem can only be assigned to a single component." msgstr "" -#: dcim/forms/model_forms.py:1277 +#: netbox/dcim/forms/model_forms.py:1277 msgid "LAG interface" msgstr "" -#: dcim/forms/model_forms.py:1428 +#: netbox/dcim/forms/model_forms.py:1428 msgid "Child Device" msgstr "" -#: dcim/forms/model_forms.py:1429 +#: netbox/dcim/forms/model_forms.py:1429 msgid "" "Child devices must first be created and assigned to the site and rack of the " "parent device." msgstr "" -#: dcim/forms/model_forms.py:1471 +#: netbox/dcim/forms/model_forms.py:1471 msgid "Console port" msgstr "" -#: dcim/forms/model_forms.py:1479 +#: netbox/dcim/forms/model_forms.py:1479 msgid "Console server port" msgstr "" -#: dcim/forms/model_forms.py:1487 +#: netbox/dcim/forms/model_forms.py:1487 msgid "Front port" msgstr "" -#: dcim/forms/model_forms.py:1503 +#: netbox/dcim/forms/model_forms.py:1503 msgid "Power outlet" msgstr "" -#: dcim/forms/model_forms.py:1523 templates/dcim/inventoryitem.html:17 +#: netbox/dcim/forms/model_forms.py:1523 +#: netbox/templates/dcim/inventoryitem.html:17 msgid "Inventory Item" msgstr "" -#: dcim/forms/model_forms.py:1596 templates/dcim/inventoryitemrole.html:15 +#: netbox/dcim/forms/model_forms.py:1596 +#: netbox/templates/dcim/inventoryitemrole.html:15 msgid "Inventory Item Role" msgstr "" -#: dcim/forms/model_forms.py:1614 templates/dcim/device.html:187 -#: templates/dcim/virtualdevicecontext.html:30 -#: templates/virtualization/virtualmachine.html:48 +#: netbox/dcim/forms/model_forms.py:1614 netbox/templates/dcim/device.html:188 +#: netbox/templates/dcim/virtualdevicecontext.html:30 +#: netbox/templates/virtualization/virtualmachine.html:48 msgid "Primary IPv4" msgstr "" -#: dcim/forms/model_forms.py:1623 templates/dcim/device.html:203 -#: templates/dcim/virtualdevicecontext.html:41 -#: templates/virtualization/virtualmachine.html:64 +#: netbox/dcim/forms/model_forms.py:1623 netbox/templates/dcim/device.html:204 +#: netbox/templates/dcim/virtualdevicecontext.html:41 +#: netbox/templates/virtualization/virtualmachine.html:64 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:257 +#: netbox/dcim/forms/object_create.py:110 +#: netbox/dcim/forms/object_create.py:271 netbox/dcim/tables/devices.py:257 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:1016 -#: 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:1016 +#: 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:109 +#: 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:109 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:93 +#: netbox/dcim/models/cables.py:93 msgid "cable" msgstr "" -#: dcim/models/cables.py:94 +#: netbox/dcim/models/cables.py:94 msgid "cables" msgstr "" -#: dcim/models/cables.py:163 +#: netbox/dcim/models/cables.py:163 msgid "Must specify a unit when setting a cable length" msgstr "" -#: dcim/models/cables.py:166 +#: netbox/dcim/models/cables.py:166 msgid "Must define A and B terminations when creating a new cable." msgstr "" -#: dcim/models/cables.py:173 +#: netbox/dcim/models/cables.py:173 msgid "Cannot connect different termination types to same end of cable." msgstr "" -#: dcim/models/cables.py:181 +#: netbox/dcim/models/cables.py:181 #, python-brace-format msgid "Incompatible termination types: {type_a} and {type_b}" msgstr "" -#: dcim/models/cables.py:191 +#: netbox/dcim/models/cables.py:191 msgid "A and B terminations cannot connect to the same object." msgstr "" -#: dcim/models/cables.py:258 ipam/models/asns.py:37 +#: netbox/dcim/models/cables.py:258 netbox/ipam/models/asns.py:37 msgid "end" msgstr "" -#: dcim/models/cables.py:311 +#: netbox/dcim/models/cables.py:311 msgid "cable termination" msgstr "" -#: dcim/models/cables.py:312 +#: netbox/dcim/models/cables.py:312 msgid "cable terminations" msgstr "" -#: dcim/models/cables.py:331 +#: netbox/dcim/models/cables.py:331 #, python-brace-format msgid "" "Duplicate termination found for {app_label}.{model} {termination_id}: cable " "{cable_pk}" msgstr "" -#: dcim/models/cables.py:341 +#: netbox/dcim/models/cables.py:341 #, python-brace-format msgid "Cables cannot be terminated to {type_display} interfaces" msgstr "" -#: dcim/models/cables.py:348 +#: netbox/dcim/models/cables.py:348 msgid "Circuit terminations attached to a provider network may not be cabled." msgstr "" -#: dcim/models/cables.py:446 extras/models/configs.py:50 +#: netbox/dcim/models/cables.py:446 netbox/extras/models/configs.py:50 msgid "is active" msgstr "" -#: dcim/models/cables.py:450 +#: netbox/dcim/models/cables.py:450 msgid "is complete" msgstr "" -#: dcim/models/cables.py:454 +#: netbox/dcim/models/cables.py:454 msgid "is split" msgstr "" -#: dcim/models/cables.py:462 +#: netbox/dcim/models/cables.py:462 msgid "cable path" msgstr "" -#: dcim/models/cables.py:463 +#: netbox/dcim/models/cables.py:463 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:186 +#: netbox/dcim/models/device_component_templates.py:186 msgid "console port template" msgstr "" -#: dcim/models/device_component_templates.py:187 +#: netbox/dcim/models/device_component_templates.py:187 msgid "console port templates" msgstr "" -#: dcim/models/device_component_templates.py:220 +#: netbox/dcim/models/device_component_templates.py:220 msgid "console server port template" msgstr "" -#: dcim/models/device_component_templates.py:221 +#: netbox/dcim/models/device_component_templates.py:221 msgid "console server port templates" msgstr "" -#: dcim/models/device_component_templates.py:252 -#: dcim/models/device_components.py:353 +#: netbox/dcim/models/device_component_templates.py:252 +#: netbox/dcim/models/device_components.py:353 msgid "maximum draw" msgstr "" -#: dcim/models/device_component_templates.py:259 -#: dcim/models/device_components.py:360 +#: netbox/dcim/models/device_component_templates.py:259 +#: netbox/dcim/models/device_components.py:360 msgid "allocated draw" msgstr "" -#: dcim/models/device_component_templates.py:269 +#: netbox/dcim/models/device_component_templates.py:269 msgid "power port template" msgstr "" -#: dcim/models/device_component_templates.py:270 +#: netbox/dcim/models/device_component_templates.py:270 msgid "power port templates" msgstr "" -#: dcim/models/device_component_templates.py:289 -#: dcim/models/device_components.py:383 +#: netbox/dcim/models/device_component_templates.py:289 +#: 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:321 -#: dcim/models/device_components.py:478 +#: netbox/dcim/models/device_component_templates.py:321 +#: netbox/dcim/models/device_components.py:478 msgid "feed leg" msgstr "" -#: dcim/models/device_component_templates.py:325 -#: dcim/models/device_components.py:482 +#: netbox/dcim/models/device_component_templates.py:325 +#: netbox/dcim/models/device_components.py:482 msgid "Phase (for three-phase feeds)" msgstr "" -#: dcim/models/device_component_templates.py:331 +#: netbox/dcim/models/device_component_templates.py:331 msgid "power outlet template" msgstr "" -#: dcim/models/device_component_templates.py:332 +#: netbox/dcim/models/device_component_templates.py:332 msgid "power outlet templates" msgstr "" -#: dcim/models/device_component_templates.py:341 +#: netbox/dcim/models/device_component_templates.py:341 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device type" msgstr "" -#: dcim/models/device_component_templates.py:345 +#: netbox/dcim/models/device_component_templates.py:345 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same module type" msgstr "" -#: dcim/models/device_component_templates.py:397 -#: dcim/models/device_components.py:612 +#: netbox/dcim/models/device_component_templates.py:397 +#: netbox/dcim/models/device_components.py:612 msgid "management only" msgstr "" -#: dcim/models/device_component_templates.py:405 -#: dcim/models/device_components.py:551 +#: netbox/dcim/models/device_component_templates.py:405 +#: netbox/dcim/models/device_components.py:551 msgid "bridge interface" msgstr "" -#: dcim/models/device_component_templates.py:423 -#: dcim/models/device_components.py:637 +#: netbox/dcim/models/device_component_templates.py:423 +#: netbox/dcim/models/device_components.py:637 msgid "wireless role" msgstr "" -#: dcim/models/device_component_templates.py:429 +#: netbox/dcim/models/device_component_templates.py:429 msgid "interface template" msgstr "" -#: dcim/models/device_component_templates.py:430 +#: netbox/dcim/models/device_component_templates.py:430 msgid "interface templates" msgstr "" -#: dcim/models/device_component_templates.py:437 -#: dcim/models/device_components.py:805 -#: virtualization/models/virtualmachines.py:400 +#: netbox/dcim/models/device_component_templates.py:437 +#: netbox/dcim/models/device_components.py:805 +#: netbox/virtualization/models/virtualmachines.py:400 msgid "An interface cannot be bridged to itself." msgstr "" -#: dcim/models/device_component_templates.py:440 +#: netbox/dcim/models/device_component_templates.py:440 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same device type" msgstr "" -#: dcim/models/device_component_templates.py:444 +#: netbox/dcim/models/device_component_templates.py:444 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same module type" msgstr "" -#: dcim/models/device_component_templates.py:500 -#: dcim/models/device_components.py:985 +#: netbox/dcim/models/device_component_templates.py:500 +#: netbox/dcim/models/device_components.py:985 msgid "rear port position" msgstr "" -#: dcim/models/device_component_templates.py:525 +#: netbox/dcim/models/device_component_templates.py:525 msgid "front port template" msgstr "" -#: dcim/models/device_component_templates.py:526 +#: netbox/dcim/models/device_component_templates.py:526 msgid "front port templates" msgstr "" -#: dcim/models/device_component_templates.py:536 +#: netbox/dcim/models/device_component_templates.py:536 #, python-brace-format msgid "Rear port ({name}) must belong to the same device type" msgstr "" -#: dcim/models/device_component_templates.py:542 +#: netbox/dcim/models/device_component_templates.py:542 #, python-brace-format msgid "" "Invalid rear port position ({position}); rear port {name} has only {count} " "positions" msgstr "" -#: dcim/models/device_component_templates.py:595 -#: dcim/models/device_components.py:1054 +#: netbox/dcim/models/device_component_templates.py:595 +#: netbox/dcim/models/device_components.py:1054 msgid "positions" msgstr "" -#: dcim/models/device_component_templates.py:606 +#: netbox/dcim/models/device_component_templates.py:606 msgid "rear port template" msgstr "" -#: dcim/models/device_component_templates.py:607 +#: netbox/dcim/models/device_component_templates.py:607 msgid "rear port templates" msgstr "" -#: dcim/models/device_component_templates.py:636 -#: dcim/models/device_components.py:1095 +#: netbox/dcim/models/device_component_templates.py:636 +#: netbox/dcim/models/device_components.py:1095 msgid "position" msgstr "" -#: dcim/models/device_component_templates.py:639 -#: dcim/models/device_components.py:1098 +#: netbox/dcim/models/device_component_templates.py:639 +#: netbox/dcim/models/device_components.py:1098 msgid "Identifier to reference when renaming installed components" msgstr "" -#: dcim/models/device_component_templates.py:645 +#: netbox/dcim/models/device_component_templates.py:645 msgid "module bay template" msgstr "" -#: dcim/models/device_component_templates.py:646 +#: netbox/dcim/models/device_component_templates.py:646 msgid "module bay templates" msgstr "" -#: dcim/models/device_component_templates.py:673 +#: netbox/dcim/models/device_component_templates.py:673 msgid "device bay template" msgstr "" -#: dcim/models/device_component_templates.py:674 +#: netbox/dcim/models/device_component_templates.py:674 msgid "device bay templates" msgstr "" -#: dcim/models/device_component_templates.py:687 +#: netbox/dcim/models/device_component_templates.py:687 #, 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:742 -#: dcim/models/device_components.py:1224 +#: netbox/dcim/models/device_component_templates.py:742 +#: netbox/dcim/models/device_components.py:1224 msgid "part ID" msgstr "" -#: dcim/models/device_component_templates.py:744 -#: dcim/models/device_components.py:1226 +#: netbox/dcim/models/device_component_templates.py:744 +#: netbox/dcim/models/device_components.py:1226 msgid "Manufacturer-assigned part identifier" msgstr "" -#: dcim/models/device_component_templates.py:761 +#: netbox/dcim/models/device_component_templates.py:761 msgid "inventory item template" msgstr "" -#: dcim/models/device_component_templates.py:762 +#: netbox/dcim/models/device_component_templates.py:762 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:116 +#: netbox/dcim/models/device_components.py:690 netbox/wireless/models.py:116 msgid "wireless LANs" msgstr "" -#: dcim/models/device_components.py:698 -#: virtualization/models/virtualmachines.py:330 +#: netbox/dcim/models/device_components.py:698 +#: netbox/virtualization/models/virtualmachines.py:330 msgid "untagged VLAN" msgstr "" -#: dcim/models/device_components.py:704 -#: virtualization/models/virtualmachines.py:336 +#: netbox/dcim/models/device_components.py:704 +#: netbox/virtualization/models/virtualmachines.py:336 msgid "tagged VLANs" msgstr "" -#: dcim/models/device_components.py:746 -#: virtualization/models/virtualmachines.py:372 +#: netbox/dcim/models/device_components.py:746 +#: netbox/virtualization/models/virtualmachines.py:372 msgid "interface" msgstr "" -#: dcim/models/device_components.py:747 -#: virtualization/models/virtualmachines.py:373 +#: netbox/dcim/models/device_components.py:747 +#: netbox/virtualization/models/virtualmachines.py:373 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:385 +#: netbox/dcim/models/device_components.py:775 +#: netbox/virtualization/models/virtualmachines.py:385 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:1104 +#: netbox/dcim/models/device_components.py:1104 msgid "module bay" msgstr "" -#: dcim/models/device_components.py:1105 +#: netbox/dcim/models/device_components.py:1105 msgid "module bays" msgstr "" -#: dcim/models/device_components.py:1126 +#: netbox/dcim/models/device_components.py:1126 msgid "device bay" msgstr "" -#: dcim/models/device_components.py:1127 +#: netbox/dcim/models/device_components.py:1127 msgid "device bays" msgstr "" -#: dcim/models/device_components.py:1137 +#: netbox/dcim/models/device_components.py:1137 #, python-brace-format msgid "This type of device ({device_type}) does not support device bays." msgstr "" -#: dcim/models/device_components.py:1143 +#: netbox/dcim/models/device_components.py:1143 msgid "Cannot install a device into itself." msgstr "" -#: dcim/models/device_components.py:1151 +#: netbox/dcim/models/device_components.py:1151 #, python-brace-format msgid "" "Cannot install the specified device; device is already installed in {bay}." msgstr "" -#: dcim/models/device_components.py:1172 +#: netbox/dcim/models/device_components.py:1172 msgid "inventory item role" msgstr "" -#: dcim/models/device_components.py:1173 +#: netbox/dcim/models/device_components.py:1173 msgid "inventory item roles" msgstr "" -#: dcim/models/device_components.py:1230 dcim/models/devices.py:597 -#: dcim/models/devices.py:1163 dcim/models/racks.py:114 +#: 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 msgid "serial number" msgstr "" -#: dcim/models/device_components.py:1238 dcim/models/devices.py:605 -#: dcim/models/devices.py:1170 dcim/models/racks.py:121 +#: 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 msgid "asset tag" msgstr "" -#: dcim/models/device_components.py:1239 +#: netbox/dcim/models/device_components.py:1239 msgid "A unique tag used to identify this item" msgstr "" -#: dcim/models/device_components.py:1242 +#: netbox/dcim/models/device_components.py:1242 msgid "discovered" msgstr "" -#: dcim/models/device_components.py:1244 +#: netbox/dcim/models/device_components.py:1244 msgid "This item was automatically discovered" msgstr "" -#: dcim/models/device_components.py:1262 +#: netbox/dcim/models/device_components.py:1262 msgid "inventory item" msgstr "" -#: dcim/models/device_components.py:1263 +#: netbox/dcim/models/device_components.py:1263 msgid "inventory items" msgstr "" -#: dcim/models/device_components.py:1274 +#: netbox/dcim/models/device_components.py:1274 msgid "Cannot assign self as parent." msgstr "" -#: dcim/models/device_components.py:1282 +#: netbox/dcim/models/device_components.py:1282 msgid "Parent inventory item does not belong to the same device." msgstr "" -#: dcim/models/device_components.py:1288 +#: netbox/dcim/models/device_components.py:1288 msgid "Cannot move an inventory item with dependent children" msgstr "" -#: dcim/models/device_components.py:1296 +#: netbox/dcim/models/device_components.py:1296 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 +#: netbox/dcim/models/devices.py:82 netbox/dcim/models/devices.py:382 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:138 +#: netbox/dcim/models/devices.py:107 netbox/dcim/models/racks.py:138 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:649 +#: netbox/dcim/models/devices.py:128 netbox/dcim/models/devices.py:649 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:405 +#: netbox/dcim/models/devices.py:405 msgid "module type" msgstr "" -#: dcim/models/devices.py:406 +#: netbox/dcim/models/devices.py:406 msgid "module types" msgstr "" -#: dcim/models/devices.py:475 +#: netbox/dcim/models/devices.py:475 msgid "Virtual machines may be assigned to this role" msgstr "" -#: dcim/models/devices.py:487 +#: netbox/dcim/models/devices.py:487 msgid "device role" msgstr "" -#: dcim/models/devices.py:488 +#: netbox/dcim/models/devices.py:488 msgid "device roles" msgstr "" -#: dcim/models/devices.py:505 +#: netbox/dcim/models/devices.py:505 msgid "Optionally limit this platform to devices of a certain manufacturer" msgstr "" -#: dcim/models/devices.py:517 +#: netbox/dcim/models/devices.py:517 msgid "platform" msgstr "" -#: dcim/models/devices.py:518 +#: netbox/dcim/models/devices.py:518 msgid "platforms" msgstr "" -#: dcim/models/devices.py:566 +#: netbox/dcim/models/devices.py:566 msgid "The function this device serves" msgstr "" -#: dcim/models/devices.py:598 +#: netbox/dcim/models/devices.py:598 msgid "Chassis serial number, assigned by the manufacturer" msgstr "" -#: dcim/models/devices.py:606 dcim/models/devices.py:1171 +#: netbox/dcim/models/devices.py:606 netbox/dcim/models/devices.py:1171 msgid "A unique tag used to identify this device" msgstr "" -#: dcim/models/devices.py:633 +#: netbox/dcim/models/devices.py:633 msgid "position (U)" msgstr "" -#: dcim/models/devices.py:640 +#: netbox/dcim/models/devices.py:640 msgid "rack face" msgstr "" -#: dcim/models/devices.py:660 dcim/models/devices.py:1380 -#: virtualization/models/virtualmachines.py:100 +#: netbox/dcim/models/devices.py:660 netbox/dcim/models/devices.py:1380 +#: netbox/virtualization/models/virtualmachines.py:100 msgid "primary IPv4" msgstr "" -#: dcim/models/devices.py:668 dcim/models/devices.py:1388 -#: virtualization/models/virtualmachines.py:108 +#: netbox/dcim/models/devices.py:668 netbox/dcim/models/devices.py:1388 +#: netbox/virtualization/models/virtualmachines.py:108 msgid "primary IPv6" msgstr "" -#: dcim/models/devices.py:676 +#: netbox/dcim/models/devices.py:676 msgid "out-of-band IP" msgstr "" -#: dcim/models/devices.py:693 +#: netbox/dcim/models/devices.py:693 msgid "VC position" msgstr "" -#: dcim/models/devices.py:696 +#: netbox/dcim/models/devices.py:696 msgid "Virtual chassis position" msgstr "" -#: dcim/models/devices.py:699 +#: netbox/dcim/models/devices.py:699 msgid "VC priority" msgstr "" -#: dcim/models/devices.py:703 +#: netbox/dcim/models/devices.py:703 msgid "Virtual chassis master election priority" msgstr "" -#: dcim/models/devices.py:706 dcim/models/sites.py:207 +#: netbox/dcim/models/devices.py:706 netbox/dcim/models/sites.py:207 msgid "latitude" msgstr "" -#: dcim/models/devices.py:711 dcim/models/devices.py:719 -#: dcim/models/sites.py:212 dcim/models/sites.py:220 +#: netbox/dcim/models/devices.py:711 netbox/dcim/models/devices.py:719 +#: 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:714 dcim/models/sites.py:215 +#: netbox/dcim/models/devices.py:714 netbox/dcim/models/sites.py:215 msgid "longitude" msgstr "" -#: dcim/models/devices.py:787 +#: netbox/dcim/models/devices.py:787 msgid "Device name must be unique per site." msgstr "" -#: dcim/models/devices.py:798 ipam/models/services.py:74 +#: netbox/dcim/models/devices.py:798 netbox/ipam/models/services.py:75 msgid "device" msgstr "" -#: dcim/models/devices.py:799 +#: netbox/dcim/models/devices.py:799 msgid "devices" msgstr "" -#: dcim/models/devices.py:825 +#: netbox/dcim/models/devices.py:825 #, python-brace-format msgid "Rack {rack} does not belong to site {site}." msgstr "" -#: dcim/models/devices.py:830 +#: netbox/dcim/models/devices.py:830 #, python-brace-format msgid "Location {location} does not belong to site {site}." msgstr "" -#: dcim/models/devices.py:836 +#: netbox/dcim/models/devices.py:836 #, python-brace-format msgid "Rack {rack} does not belong to location {location}." msgstr "" -#: dcim/models/devices.py:843 +#: netbox/dcim/models/devices.py:843 msgid "Cannot select a rack face without assigning a rack." msgstr "" -#: dcim/models/devices.py:847 +#: netbox/dcim/models/devices.py:847 msgid "Cannot select a rack position without assigning a rack." msgstr "" -#: dcim/models/devices.py:853 +#: netbox/dcim/models/devices.py:853 msgid "Position must be in increments of 0.5 rack units." msgstr "" -#: dcim/models/devices.py:857 +#: netbox/dcim/models/devices.py:857 msgid "Must specify rack face when defining rack position." msgstr "" -#: dcim/models/devices.py:865 +#: netbox/dcim/models/devices.py:865 #, python-brace-format msgid "A 0U device type ({device_type}) cannot be assigned to a rack position." msgstr "" -#: dcim/models/devices.py:876 +#: netbox/dcim/models/devices.py:876 msgid "" "Child device types cannot be assigned to a rack face. This is an attribute " "of the parent device." msgstr "" -#: dcim/models/devices.py:883 +#: netbox/dcim/models/devices.py:883 msgid "" "Child device types cannot be assigned to a rack position. This is an " "attribute of the parent device." msgstr "" -#: dcim/models/devices.py:897 +#: netbox/dcim/models/devices.py:897 #, 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:912 +#: netbox/dcim/models/devices.py:912 #, python-brace-format msgid "{ip} is not an IPv4 address." msgstr "" -#: dcim/models/devices.py:921 dcim/models/devices.py:936 +#: netbox/dcim/models/devices.py:921 netbox/dcim/models/devices.py:936 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this device." msgstr "" -#: dcim/models/devices.py:927 +#: netbox/dcim/models/devices.py:927 #, python-brace-format msgid "{ip} is not an IPv6 address." msgstr "" -#: dcim/models/devices.py:954 +#: netbox/dcim/models/devices.py:954 #, 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:965 +#: netbox/dcim/models/devices.py:965 #, python-brace-format msgid "The assigned cluster belongs to a different site ({site})" msgstr "" -#: dcim/models/devices.py:973 +#: netbox/dcim/models/devices.py:973 msgid "A device assigned to a virtual chassis must have its position defined." msgstr "" -#: dcim/models/devices.py:1178 +#: netbox/dcim/models/devices.py:1178 msgid "module" msgstr "" -#: dcim/models/devices.py:1179 +#: netbox/dcim/models/devices.py:1179 msgid "modules" msgstr "" -#: dcim/models/devices.py:1195 +#: netbox/dcim/models/devices.py:1195 #, python-brace-format msgid "" "Module must be installed within a module bay belonging to the assigned " "device ({device})." msgstr "" -#: dcim/models/devices.py:1299 +#: netbox/dcim/models/devices.py:1299 msgid "domain" msgstr "" -#: dcim/models/devices.py:1312 dcim/models/devices.py:1313 +#: netbox/dcim/models/devices.py:1312 netbox/dcim/models/devices.py:1313 msgid "virtual chassis" msgstr "" -#: dcim/models/devices.py:1328 +#: netbox/dcim/models/devices.py:1328 #, python-brace-format msgid "The selected master ({master}) is not assigned to this virtual chassis." msgstr "" -#: dcim/models/devices.py:1344 +#: netbox/dcim/models/devices.py:1344 #, 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:1369 vpn/models/l2vpn.py:37 +#: netbox/dcim/models/devices.py:1369 netbox/vpn/models/l2vpn.py:37 msgid "identifier" msgstr "" -#: dcim/models/devices.py:1370 +#: netbox/dcim/models/devices.py:1370 msgid "Numeric identifier unique to the parent device" msgstr "" -#: dcim/models/devices.py:1398 extras/models/customfields.py:210 -#: extras/models/models.py:127 extras/models/models.py:722 -#: netbox/models/__init__.py:114 +#: netbox/dcim/models/devices.py:1398 netbox/extras/models/customfields.py:210 +#: netbox/extras/models/models.py:127 netbox/extras/models/models.py:722 +#: netbox/netbox/models/__init__.py:114 msgid "comments" msgstr "" -#: dcim/models/devices.py:1414 +#: netbox/dcim/models/devices.py:1414 msgid "virtual device context" msgstr "" -#: dcim/models/devices.py:1415 +#: netbox/dcim/models/devices.py:1415 msgid "virtual device contexts" msgstr "" -#: dcim/models/devices.py:1447 +#: netbox/dcim/models/devices.py:1447 #, python-brace-format msgid "{ip} is not an IPv{family} address." msgstr "" -#: dcim/models/devices.py:1453 +#: netbox/dcim/models/devices.py:1453 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:341 extras/models/models.py:550 -#: 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:341 netbox/extras/models/models.py:550 +#: 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:50 +#: netbox/dcim/models/racks.py:50 msgid "rack role" msgstr "" -#: dcim/models/racks.py:51 +#: netbox/dcim/models/racks.py:51 msgid "rack roles" msgstr "" -#: dcim/models/racks.py:75 +#: netbox/dcim/models/racks.py:75 msgid "facility ID" msgstr "" -#: dcim/models/racks.py:76 +#: netbox/dcim/models/racks.py:76 msgid "Locally-assigned identifier" msgstr "" -#: dcim/models/racks.py:109 ipam/forms/bulk_import.py:200 -#: ipam/forms/bulk_import.py:265 ipam/forms/bulk_import.py:300 -#: ipam/forms/bulk_import.py:467 virtualization/forms/bulk_import.py:112 +#: 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 "" -#: dcim/models/racks.py:122 +#: netbox/dcim/models/racks.py:122 msgid "A unique tag used to identify this rack" msgstr "" -#: dcim/models/racks.py:133 +#: netbox/dcim/models/racks.py:133 msgid "width" msgstr "" -#: dcim/models/racks.py:134 +#: netbox/dcim/models/racks.py:134 msgid "Rail-to-rail width" msgstr "" -#: dcim/models/racks.py:140 +#: netbox/dcim/models/racks.py:140 msgid "Height in rack units" msgstr "" -#: dcim/models/racks.py:144 +#: netbox/dcim/models/racks.py:144 msgid "starting unit" msgstr "" -#: dcim/models/racks.py:146 +#: netbox/dcim/models/racks.py:146 msgid "Starting unit for rack" msgstr "" -#: dcim/models/racks.py:150 +#: netbox/dcim/models/racks.py:150 msgid "descending units" msgstr "" -#: dcim/models/racks.py:151 +#: netbox/dcim/models/racks.py:151 msgid "Units are numbered top-to-bottom" msgstr "" -#: dcim/models/racks.py:154 +#: netbox/dcim/models/racks.py:154 msgid "outer width" msgstr "" -#: dcim/models/racks.py:157 +#: netbox/dcim/models/racks.py:157 msgid "Outer dimension of rack (width)" msgstr "" -#: dcim/models/racks.py:160 +#: netbox/dcim/models/racks.py:160 msgid "outer depth" msgstr "" -#: dcim/models/racks.py:163 +#: netbox/dcim/models/racks.py:163 msgid "Outer dimension of rack (depth)" msgstr "" -#: dcim/models/racks.py:166 +#: netbox/dcim/models/racks.py:166 msgid "outer unit" msgstr "" -#: dcim/models/racks.py:172 +#: netbox/dcim/models/racks.py:172 msgid "max weight" msgstr "" -#: dcim/models/racks.py:175 +#: netbox/dcim/models/racks.py:175 msgid "Maximum load capacity for the rack" msgstr "" -#: dcim/models/racks.py:183 +#: netbox/dcim/models/racks.py:183 msgid "mounting depth" msgstr "" -#: dcim/models/racks.py:187 +#: netbox/dcim/models/racks.py:187 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:221 +#: netbox/dcim/models/racks.py:221 msgid "rack" msgstr "" -#: dcim/models/racks.py:222 +#: netbox/dcim/models/racks.py:222 msgid "racks" msgstr "" -#: dcim/models/racks.py:237 +#: netbox/dcim/models/racks.py:237 #, python-brace-format msgid "Assigned location must belong to parent site ({site})." msgstr "" -#: dcim/models/racks.py:241 +#: netbox/dcim/models/racks.py:241 msgid "Must specify a unit when setting an outer width/depth" msgstr "" -#: dcim/models/racks.py:245 +#: netbox/dcim/models/racks.py:245 msgid "Must specify a unit when setting a maximum weight" msgstr "" -#: dcim/models/racks.py:255 +#: netbox/dcim/models/racks.py:255 #, python-brace-format msgid "" "Rack must be at least {min_height}U tall to house currently installed " "devices." msgstr "" -#: dcim/models/racks.py:262 +#: netbox/dcim/models/racks.py:262 #, python-brace-format msgid "" "Rack unit numbering must begin at {position} or less to house currently " "installed devices." msgstr "" -#: dcim/models/racks.py:270 +#: netbox/dcim/models/racks.py:270 #, python-brace-format msgid "Location must be from the same site, {site}." msgstr "" -#: dcim/models/racks.py:523 +#: netbox/dcim/models/racks.py:523 msgid "units" msgstr "" -#: dcim/models/racks.py:549 +#: netbox/dcim/models/racks.py:549 msgid "rack reservation" msgstr "" -#: dcim/models/racks.py:550 +#: netbox/dcim/models/racks.py:550 msgid "rack reservations" msgstr "" -#: dcim/models/racks.py:567 +#: netbox/dcim/models/racks.py:567 #, python-brace-format msgid "Invalid unit(s) for {height}U rack: {unit_list}" msgstr "" -#: dcim/models/racks.py:580 +#: netbox/dcim/models/racks.py:580 #, 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:54 +#: netbox/dcim/tables/cables.py:54 msgid "Termination A" msgstr "" -#: dcim/tables/cables.py:59 +#: netbox/dcim/tables/cables.py:59 msgid "Termination B" msgstr "" -#: dcim/tables/cables.py:65 wireless/tables/wirelesslink.py:22 +#: netbox/dcim/tables/cables.py:65 netbox/wireless/tables/wirelesslink.py:22 msgid "Device A" msgstr "" -#: dcim/tables/cables.py:71 wireless/tables/wirelesslink.py:31 +#: netbox/dcim/tables/cables.py:71 netbox/wireless/tables/wirelesslink.py:31 msgid "Device B" msgstr "" -#: dcim/tables/cables.py:77 +#: netbox/dcim/tables/cables.py:77 msgid "Location A" msgstr "" -#: dcim/tables/cables.py:83 +#: netbox/dcim/tables/cables.py:83 msgid "Location B" msgstr "" -#: dcim/tables/cables.py:89 +#: netbox/dcim/tables/cables.py:89 msgid "Rack A" msgstr "" -#: dcim/tables/cables.py:95 +#: netbox/dcim/tables/cables.py:95 msgid "Rack B" msgstr "" -#: dcim/tables/cables.py:101 +#: netbox/dcim/tables/cables.py:101 msgid "Site A" msgstr "" -#: dcim/tables/cables.py:107 +#: netbox/dcim/tables/cables.py:107 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:66 dcim/tables/devices.py:111 dcim/tables/racks.py:81 -#: dcim/tables/sites.py:143 extras/tables/tables.py:435 -#: netbox/navigation/menu.py:56 netbox/navigation/menu.py:60 -#: netbox/navigation/menu.py:62 virtualization/forms/model_forms.py:122 -#: virtualization/tables/clusters.py:83 virtualization/views.py:210 +#: netbox/dcim/tables/devices.py:66 netbox/dcim/tables/devices.py:111 +#: netbox/dcim/tables/racks.py:81 netbox/dcim/tables/sites.py:143 +#: netbox/extras/tables/tables.py:435 netbox/netbox/navigation/menu.py:56 +#: netbox/netbox/navigation/menu.py:60 netbox/netbox/navigation/menu.py:62 +#: netbox/virtualization/forms/model_forms.py:122 +#: netbox/virtualization/tables/clusters.py:83 +#: netbox/virtualization/views.py:210 msgid "Devices" msgstr "" -#: dcim/tables/devices.py:71 dcim/tables/devices.py:116 -#: virtualization/tables/clusters.py:88 +#: netbox/dcim/tables/devices.py:71 netbox/dcim/tables/devices.py:116 +#: netbox/virtualization/tables/clusters.py:88 msgid "VMs" msgstr "" -#: dcim/tables/devices.py:105 dcim/tables/devices.py:221 -#: extras/forms/model_forms.py:506 templates/dcim/device.html:111 -#: 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:44 -#: templates/virtualization/virtualmachine/render_config.html:11 -#: templates/virtualization/virtualmachine/render_config.html:14 -#: virtualization/tables/virtualmachines.py:106 +#: netbox/dcim/tables/devices.py:105 netbox/dcim/tables/devices.py:221 +#: netbox/extras/forms/model_forms.py:506 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/render_config.html:11 +#: netbox/templates/virtualization/virtualmachine/render_config.html:14 +#: netbox/virtualization/tables/virtualmachines.py:106 msgid "Config Template" msgstr "" -#: dcim/tables/devices.py:155 templates/dcim/sitegroup.html:26 +#: netbox/dcim/tables/devices.py:155 netbox/templates/dcim/sitegroup.html:26 msgid "Site Group" msgstr "" -#: dcim/tables/devices.py:192 dcim/tables/devices.py:1051 -#: ipam/forms/bulk_import.py:511 ipam/forms/model_forms.py:304 -#: ipam/forms/model_forms.py:313 ipam/tables/ip.py:352 ipam/tables/ip.py:418 -#: ipam/tables/ip.py:441 templates/ipam/ipaddress.html:11 -#: virtualization/tables/virtualmachines.py:94 +#: netbox/dcim/tables/devices.py:192 netbox/dcim/tables/devices.py:1051 +#: netbox/ipam/forms/bulk_import.py:511 netbox/ipam/forms/model_forms.py:304 +#: netbox/ipam/forms/model_forms.py:313 netbox/ipam/tables/ip.py:352 +#: netbox/ipam/tables/ip.py:418 netbox/ipam/tables/ip.py:441 +#: netbox/templates/ipam/ipaddress.html:11 +#: netbox/virtualization/tables/virtualmachines.py:94 msgid "IP Address" msgstr "" -#: dcim/tables/devices.py:196 dcim/tables/devices.py:1055 -#: virtualization/tables/virtualmachines.py:85 +#: netbox/dcim/tables/devices.py:196 netbox/dcim/tables/devices.py:1055 +#: netbox/virtualization/tables/virtualmachines.py:85 msgid "IPv4 Address" msgstr "" -#: dcim/tables/devices.py:200 dcim/tables/devices.py:1059 -#: virtualization/tables/virtualmachines.py:89 +#: netbox/dcim/tables/devices.py:200 netbox/dcim/tables/devices.py:1059 +#: netbox/virtualization/tables/virtualmachines.py:89 msgid "IPv6 Address" msgstr "" -#: dcim/tables/devices.py:215 +#: netbox/dcim/tables/devices.py:215 msgid "VC Position" msgstr "" -#: dcim/tables/devices.py:218 +#: netbox/dcim/tables/devices.py:218 msgid "VC Priority" msgstr "" -#: dcim/tables/devices.py:225 templates/dcim/device_edit.html:38 -#: templates/dcim/devicebay_populate.html:16 +#: netbox/dcim/tables/devices.py:225 netbox/templates/dcim/device_edit.html:38 +#: netbox/templates/dcim/devicebay_populate.html:16 msgid "Parent Device" msgstr "" -#: dcim/tables/devices.py:230 +#: netbox/dcim/tables/devices.py:230 msgid "Position (Device Bay)" msgstr "" -#: dcim/tables/devices.py:239 +#: netbox/dcim/tables/devices.py:239 msgid "Console ports" msgstr "" -#: dcim/tables/devices.py:242 +#: netbox/dcim/tables/devices.py:242 msgid "Console server ports" msgstr "" -#: dcim/tables/devices.py:245 +#: netbox/dcim/tables/devices.py:245 msgid "Power ports" msgstr "" -#: dcim/tables/devices.py:248 +#: netbox/dcim/tables/devices.py:248 msgid "Power outlets" msgstr "" -#: dcim/tables/devices.py:251 dcim/tables/devices.py:1064 -#: dcim/tables/devicetypes.py:125 dcim/views.py:1006 dcim/views.py:1245 -#: dcim/views.py:1931 netbox/navigation/menu.py:81 -#: netbox/navigation/menu.py:237 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:100 virtualization/views.py:367 -#: wireless/tables/wirelesslan.py:55 +#: netbox/dcim/tables/devices.py:251 netbox/dcim/tables/devices.py:1064 +#: netbox/dcim/tables/devicetypes.py:125 netbox/dcim/views.py:1006 +#: netbox/dcim/views.py:1245 netbox/dcim/views.py:1931 +#: netbox/netbox/navigation/menu.py:81 netbox/netbox/navigation/menu.py:237 +#: 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:100 +#: netbox/virtualization/views.py:367 netbox/wireless/tables/wirelesslan.py:55 msgid "Interfaces" msgstr "" -#: dcim/tables/devices.py:254 +#: netbox/dcim/tables/devices.py:254 msgid "Front ports" msgstr "" -#: dcim/tables/devices.py:260 +#: netbox/dcim/tables/devices.py:260 msgid "Device bays" msgstr "" -#: dcim/tables/devices.py:263 +#: netbox/dcim/tables/devices.py:263 msgid "Module bays" msgstr "" -#: dcim/tables/devices.py:266 +#: netbox/dcim/tables/devices.py:266 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:140 dcim/views.py:1081 dcim/views.py:2024 -#: netbox/navigation/menu.py:90 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:140 netbox/dcim/views.py:1081 +#: netbox/dcim/views.py:2024 netbox/netbox/navigation/menu.py:90 +#: 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:330 +#: netbox/dcim/tables/devices.py:330 msgid "Cable Color" msgstr "" -#: dcim/tables/devices.py:336 +#: netbox/dcim/tables/devices.py:336 msgid "Link Peers" msgstr "" -#: dcim/tables/devices.py:339 +#: netbox/dcim/tables/devices.py:339 msgid "Mark Connected" msgstr "" -#: dcim/tables/devices.py:455 +#: netbox/dcim/tables/devices.py:455 msgid "Maximum draw (W)" msgstr "" -#: dcim/tables/devices.py:458 +#: netbox/dcim/tables/devices.py:458 msgid "Allocated draw (W)" msgstr "" -#: dcim/tables/devices.py:558 ipam/forms/model_forms.py:747 -#: ipam/tables/fhrp.py:28 ipam/views.py:602 ipam/views.py:701 -#: netbox/navigation/menu.py:145 netbox/navigation/menu.py:147 -#: 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:747 +#: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:602 +#: netbox/ipam/views.py:701 netbox/netbox/navigation/menu.py:145 +#: netbox/netbox/navigation/menu.py:147 +#: 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:189 -#: templates/ipam/inc/panels/fhrp_groups.html:6 +#: netbox/dcim/tables/devices.py:564 netbox/netbox/navigation/menu.py:189 +#: 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:224 -#: templates/dcim/interface.html:65 +#: netbox/dcim/tables/devices.py:601 netbox/dcim/tables/devicetypes.py:224 +#: netbox/templates/dcim/interface.html:65 msgid "Management Only" msgstr "" -#: dcim/tables/devices.py:619 +#: netbox/dcim/tables/devices.py:619 msgid "VDCs" msgstr "" -#: dcim/tables/devices.py:870 templates/dcim/modulebay.html:49 +#: netbox/dcim/tables/devices.py:870 netbox/templates/dcim/modulebay.html:49 msgid "Installed Module" msgstr "" -#: dcim/tables/devices.py:873 +#: netbox/dcim/tables/devices.py:873 msgid "Module Serial" msgstr "" -#: dcim/tables/devices.py:877 +#: netbox/dcim/tables/devices.py:877 msgid "Module Asset Tag" msgstr "" -#: dcim/tables/devices.py:886 +#: netbox/dcim/tables/devices.py:886 msgid "Module Status" msgstr "" -#: dcim/tables/devices.py:928 dcim/tables/devicetypes.py:308 -#: templates/dcim/inventoryitem.html:40 +#: netbox/dcim/tables/devices.py:928 netbox/dcim/tables/devicetypes.py:308 +#: netbox/templates/dcim/inventoryitem.html:40 msgid "Component" msgstr "" -#: dcim/tables/devices.py:983 +#: netbox/dcim/tables/devices.py:983 msgid "Items" msgstr "" -#: dcim/tables/devicetypes.py:38 netbox/navigation/menu.py:71 -#: netbox/navigation/menu.py:73 +#: netbox/dcim/tables/devicetypes.py:38 netbox/netbox/navigation/menu.py:71 +#: netbox/netbox/navigation/menu.py:73 msgid "Device Types" msgstr "" -#: dcim/tables/devicetypes.py:43 netbox/navigation/menu.py:74 +#: netbox/dcim/tables/devicetypes.py:43 netbox/netbox/navigation/menu.py:74 msgid "Module Types" msgstr "" -#: dcim/tables/devicetypes.py:53 extras/forms/filtersets.py:380 -#: extras/forms/model_forms.py:413 extras/tables/tables.py:430 -#: netbox/navigation/menu.py:65 +#: netbox/dcim/tables/devicetypes.py:53 netbox/extras/forms/filtersets.py:380 +#: netbox/extras/forms/model_forms.py:413 netbox/extras/tables/tables.py:430 +#: netbox/netbox/navigation/menu.py:65 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:98 +#: netbox/dcim/tables/devicetypes.py:98 msgid "U Height" msgstr "" -#: dcim/tables/devicetypes.py:110 dcim/tables/modules.py:26 +#: netbox/dcim/tables/devicetypes.py:110 netbox/dcim/tables/modules.py:26 msgid "Instances" msgstr "" -#: dcim/tables/devicetypes.py:113 dcim/views.py:946 dcim/views.py:1185 -#: dcim/views.py:1871 netbox/navigation/menu.py:84 -#: 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:113 netbox/dcim/views.py:946 +#: netbox/dcim/views.py:1185 netbox/dcim/views.py:1871 +#: netbox/netbox/navigation/menu.py:84 +#: 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:116 dcim/views.py:961 dcim/views.py:1200 -#: dcim/views.py:1886 netbox/navigation/menu.py:85 -#: 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:116 netbox/dcim/views.py:961 +#: netbox/dcim/views.py:1200 netbox/dcim/views.py:1886 +#: netbox/netbox/navigation/menu.py:85 +#: 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:119 dcim/views.py:976 dcim/views.py:1215 -#: dcim/views.py:1901 netbox/navigation/menu.py:86 -#: 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:119 netbox/dcim/views.py:976 +#: netbox/dcim/views.py:1215 netbox/dcim/views.py:1901 +#: netbox/netbox/navigation/menu.py:86 +#: 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:122 dcim/views.py:991 dcim/views.py:1230 -#: dcim/views.py:1916 netbox/navigation/menu.py:87 -#: 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:122 netbox/dcim/views.py:991 +#: netbox/dcim/views.py:1230 netbox/dcim/views.py:1916 +#: netbox/netbox/navigation/menu.py:87 +#: 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:128 dcim/views.py:1021 dcim/views.py:1260 -#: dcim/views.py:1952 netbox/navigation/menu.py:82 -#: 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:128 netbox/dcim/views.py:1021 +#: netbox/dcim/views.py:1260 netbox/dcim/views.py:1952 +#: netbox/netbox/navigation/menu.py:82 +#: 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:131 dcim/views.py:1036 dcim/views.py:1275 -#: dcim/views.py:1967 netbox/navigation/menu.py:83 -#: 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:131 netbox/dcim/views.py:1036 +#: netbox/dcim/views.py:1275 netbox/dcim/views.py:1967 +#: netbox/netbox/navigation/menu.py:83 +#: 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:134 dcim/views.py:1066 dcim/views.py:2005 -#: netbox/navigation/menu.py:89 templates/dcim/device/base.html:49 -#: templates/dcim/device_list.html:57 templates/dcim/devicetype/base.html:46 +#: netbox/dcim/tables/devicetypes.py:134 netbox/dcim/views.py:1066 +#: netbox/dcim/views.py:2005 netbox/netbox/navigation/menu.py:89 +#: 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:137 dcim/views.py:1051 dcim/views.py:1986 -#: netbox/navigation/menu.py:88 templates/dcim/device/base.html:46 -#: templates/dcim/device_list.html:64 templates/dcim/devicetype/base.html:43 +#: netbox/dcim/tables/devicetypes.py:137 netbox/dcim/views.py:1051 +#: netbox/dcim/views.py:1986 netbox/netbox/navigation/menu.py:88 +#: netbox/templates/dcim/device/base.html:46 +#: netbox/templates/dcim/device_list.html:64 +#: netbox/templates/dcim/devicetype/base.html:43 msgid "Module Bays" msgstr "" -#: dcim/tables/power.py:36 netbox/navigation/menu.py:282 -#: templates/dcim/powerpanel.html:51 +#: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:282 +#: 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:29 dcim/tables/sites.py:138 -#: netbox/navigation/menu.py:24 netbox/navigation/menu.py:26 +#: netbox/dcim/tables/racks.py:29 netbox/dcim/tables/sites.py:138 +#: netbox/netbox/navigation/menu.py:24 netbox/netbox/navigation/menu.py:26 msgid "Racks" msgstr "" -#: dcim/tables/racks.py:73 templates/dcim/device.html:310 -#: templates/dcim/rack.html:90 +#: netbox/dcim/tables/racks.py:73 netbox/templates/dcim/device.html:311 +#: netbox/templates/dcim/rack.html:90 msgid "Height" msgstr "" -#: dcim/tables/racks.py:85 +#: netbox/dcim/tables/racks.py:85 msgid "Space" msgstr "" -#: dcim/tables/racks.py:96 templates/dcim/rack.html:100 +#: netbox/dcim/tables/racks.py:96 netbox/templates/dcim/rack.html:100 msgid "Outer Width" msgstr "" -#: dcim/tables/racks.py:100 templates/dcim/rack.html:110 +#: netbox/dcim/tables/racks.py:100 netbox/templates/dcim/rack.html:110 msgid "Outer Depth" msgstr "" -#: dcim/tables/racks.py:108 +#: netbox/dcim/tables/racks.py:108 msgid "Max Weight" msgstr "" -#: dcim/tables/sites.py:30 dcim/tables/sites.py:57 -#: extras/forms/filtersets.py:360 extras/forms/model_forms.py:393 -#: ipam/forms/bulk_edit.py:129 ipam/forms/model_forms.py:151 -#: 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:360 netbox/extras/forms/model_forms.py:393 +#: netbox/ipam/forms/bulk_edit.py:129 netbox/ipam/forms/model_forms.py:151 +#: 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:50 +#: netbox/dcim/tests/test_api.py:50 msgid "Test case must set peer_termination_type" msgstr "" -#: dcim/views.py:137 +#: netbox/dcim/views.py:137 #, python-brace-format msgid "Disconnected {count} {type}" msgstr "" -#: dcim/views.py:698 netbox/navigation/menu.py:28 +#: netbox/dcim/views.py:698 netbox/netbox/navigation/menu.py:28 msgid "Reservations" msgstr "" -#: dcim/views.py:716 templates/dcim/location.html:90 -#: templates/dcim/site.html:139 +#: netbox/dcim/views.py:716 netbox/templates/dcim/location.html:90 +#: netbox/templates/dcim/site.html:140 msgid "Non-Racked Devices" msgstr "" -#: dcim/views.py:2037 extras/forms/model_forms.py:453 -#: templates/extras/configcontext.html:10 -#: virtualization/forms/model_forms.py:225 virtualization/views.py:407 +#: netbox/dcim/views.py:2037 netbox/extras/forms/model_forms.py:453 +#: 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:2047 virtualization/views.py:417 +#: netbox/dcim/views.py:2047 netbox/virtualization/views.py:417 msgid "Render Config" msgstr "" -#: dcim/views.py:2097 extras/tables/tables.py:440 netbox/navigation/menu.py:234 -#: netbox/navigation/menu.py:236 virtualization/views.py:185 +#: netbox/dcim/views.py:2097 netbox/extras/tables/tables.py:440 +#: netbox/netbox/navigation/menu.py:234 netbox/netbox/navigation/menu.py:236 +#: netbox/virtualization/views.py:185 msgid "Virtual Machines" msgstr "" -#: dcim/views.py:2989 ipam/tables/ip.py:233 +#: netbox/dcim/views.py:2989 netbox/ipam/tables/ip.py:233 msgid "Children" msgstr "" -#: extras/api/customfields.py:88 +#: netbox/extras/api/customfields.py:88 #, python-brace-format msgid "Unknown related object(s): {name}" msgstr "" -#: extras/api/serializers_/customfields.py:74 +#: netbox/extras/api/serializers_/customfields.py:74 msgid "Changing the type of custom fields is not supported." msgstr "" -#: extras/api/serializers_/scripts.py:71 extras/api/serializers_/scripts.py:76 +#: netbox/extras/api/serializers_/scripts.py:71 +#: netbox/extras/api/serializers_/scripts.py:76 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:66 vpn/choices.py:20 -#: wireless/choices.py:27 +#: netbox/extras/choices.py:53 netbox/netbox/preferences.py:21 +#: netbox/templates/extras/customfield.html:66 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:162 +#: 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 msgid "Link" msgstr "" -#: extras/choices.py:122 +#: netbox/extras/choices.py:122 msgid "Newest" msgstr "" -#: extras/choices.py:123 +#: netbox/extras/choices.py:123 msgid "Oldest" msgstr "" -#: extras/choices.py:139 templates/generic/object.html:61 +#: netbox/extras/choices.py:139 netbox/templates/generic/object.html:61 msgid "Updated" msgstr "" -#: extras/choices.py:140 +#: netbox/extras/choices.py:140 msgid "Deleted" msgstr "" -#: extras/choices.py:157 extras/choices.py:181 +#: netbox/extras/choices.py:157 netbox/extras/choices.py:181 msgid "Info" msgstr "" -#: extras/choices.py:158 extras/choices.py:180 +#: netbox/extras/choices.py:158 netbox/extras/choices.py:180 msgid "Success" msgstr "" -#: extras/choices.py:159 extras/choices.py:182 +#: netbox/extras/choices.py:159 netbox/extras/choices.py:182 msgid "Warning" msgstr "" -#: extras/choices.py:160 +#: netbox/extras/choices.py:160 msgid "Danger" msgstr "" -#: extras/choices.py:178 +#: netbox/extras/choices.py:178 msgid "Debug" msgstr "" -#: extras/choices.py:179 netbox/choices.py:104 +#: netbox/extras/choices.py:179 netbox/netbox/choices.py:104 msgid "Default" msgstr "" -#: extras/choices.py:183 +#: netbox/extras/choices.py:183 msgid "Failure" msgstr "" -#: extras/choices.py:199 +#: netbox/extras/choices.py:199 msgid "Hourly" msgstr "" -#: extras/choices.py:200 +#: netbox/extras/choices.py:200 msgid "12 hours" msgstr "" -#: extras/choices.py:201 +#: netbox/extras/choices.py:201 msgid "Daily" msgstr "" -#: extras/choices.py:202 +#: netbox/extras/choices.py:202 msgid "Weekly" msgstr "" -#: extras/choices.py:203 +#: netbox/extras/choices.py:203 msgid "30 days" msgstr "" -#: extras/choices.py:268 extras/tables/tables.py:296 -#: templates/dcim/virtualchassis_edit.html:107 -#: templates/extras/eventrule.html:40 -#: 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:268 netbox/extras/tables/tables.py:296 +#: 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 +#: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 msgid "Create" msgstr "" -#: extras/choices.py:269 extras/tables/tables.py:299 -#: templates/extras/eventrule.html:44 +#: netbox/extras/choices.py:269 netbox/extras/tables/tables.py:299 +#: netbox/templates/extras/eventrule.html:44 msgid "Update" msgstr "" -#: extras/choices.py:270 extras/tables/tables.py:302 -#: 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/eventrule.html:48 -#: templates/extras/script_list.html:37 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:270 netbox/extras/tables/tables.py:302 +#: 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/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:294 netbox/choices.py:57 netbox/choices.py:105 +#: netbox/extras/choices.py:294 netbox/netbox/choices.py:57 +#: netbox/netbox/choices.py:105 msgid "Blue" msgstr "" -#: extras/choices.py:295 netbox/choices.py:56 netbox/choices.py:106 +#: netbox/extras/choices.py:295 netbox/netbox/choices.py:56 +#: netbox/netbox/choices.py:106 msgid "Indigo" msgstr "" -#: extras/choices.py:296 netbox/choices.py:54 netbox/choices.py:107 +#: netbox/extras/choices.py:296 netbox/netbox/choices.py:54 +#: netbox/netbox/choices.py:107 msgid "Purple" msgstr "" -#: extras/choices.py:297 netbox/choices.py:51 netbox/choices.py:108 +#: netbox/extras/choices.py:297 netbox/netbox/choices.py:51 +#: netbox/netbox/choices.py:108 msgid "Pink" msgstr "" -#: extras/choices.py:298 netbox/choices.py:50 netbox/choices.py:109 +#: netbox/extras/choices.py:298 netbox/netbox/choices.py:50 +#: netbox/netbox/choices.py:109 msgid "Red" msgstr "" -#: extras/choices.py:299 netbox/choices.py:68 netbox/choices.py:110 +#: netbox/extras/choices.py:299 netbox/netbox/choices.py:68 +#: netbox/netbox/choices.py:110 msgid "Orange" msgstr "" -#: extras/choices.py:300 netbox/choices.py:66 netbox/choices.py:111 +#: netbox/extras/choices.py:300 netbox/netbox/choices.py:66 +#: netbox/netbox/choices.py:111 msgid "Yellow" msgstr "" -#: extras/choices.py:301 netbox/choices.py:63 netbox/choices.py:112 +#: netbox/extras/choices.py:301 netbox/netbox/choices.py:63 +#: netbox/netbox/choices.py:112 msgid "Green" msgstr "" -#: extras/choices.py:302 netbox/choices.py:60 netbox/choices.py:113 +#: netbox/extras/choices.py:302 netbox/netbox/choices.py:60 +#: netbox/netbox/choices.py:113 msgid "Teal" msgstr "" -#: extras/choices.py:303 netbox/choices.py:59 netbox/choices.py:114 +#: netbox/extras/choices.py:303 netbox/netbox/choices.py:59 +#: netbox/netbox/choices.py:114 msgid "Cyan" msgstr "" -#: extras/choices.py:304 netbox/choices.py:115 +#: netbox/extras/choices.py:304 netbox/netbox/choices.py:115 msgid "Gray" msgstr "" -#: extras/choices.py:305 netbox/choices.py:74 netbox/choices.py:116 +#: netbox/extras/choices.py:305 netbox/netbox/choices.py:74 +#: netbox/netbox/choices.py:116 msgid "Black" msgstr "" -#: extras/choices.py:306 netbox/choices.py:75 netbox/choices.py:117 +#: netbox/extras/choices.py:306 netbox/netbox/choices.py:75 +#: netbox/netbox/choices.py:117 msgid "White" msgstr "" -#: extras/choices.py:320 extras/forms/model_forms.py:242 -#: extras/forms/model_forms.py:324 templates/extras/webhook.html:10 +#: netbox/extras/choices.py:320 netbox/extras/forms/model_forms.py:242 +#: netbox/extras/forms/model_forms.py:324 +#: netbox/templates/extras/webhook.html:10 msgid "Webhook" msgstr "" -#: extras/choices.py:321 extras/forms/model_forms.py:312 -#: templates/extras/script/base.html:29 +#: netbox/extras/choices.py:321 netbox/extras/forms/model_forms.py:312 +#: netbox/templates/extras/script/base.html:29 msgid "Script" 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:139 +#: netbox/extras/conditions.py:139 #, python-brace-format msgid "Ruleset must have exactly one logical operator (found {ruleset})" msgstr "" -#: extras/conditions.py:145 +#: netbox/extras/conditions.py:145 #, python-brace-format msgid "Invalid logic type: {logic} (must be '{op_and}' or '{op_or}')" 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:161 +#: netbox/extras/dashboard/widgets.py:161 msgid "Note" msgstr "" -#: extras/dashboard/widgets.py:162 +#: netbox/extras/dashboard/widgets.py:162 msgid "Display some arbitrary custom content. Markdown is supported." msgstr "" -#: extras/dashboard/widgets.py:175 +#: netbox/extras/dashboard/widgets.py:175 msgid "Object Counts" msgstr "" -#: extras/dashboard/widgets.py:176 +#: netbox/extras/dashboard/widgets.py:176 msgid "" "Display a set of NetBox models and the number of objects created for each " "type." msgstr "" -#: extras/dashboard/widgets.py:186 +#: netbox/extras/dashboard/widgets.py:186 msgid "Filters to apply when counting the number of objects" msgstr "" -#: extras/dashboard/widgets.py:194 +#: netbox/extras/dashboard/widgets.py:194 msgid "Invalid format. Object filters must be passed as a dictionary." msgstr "" -#: extras/dashboard/widgets.py:222 +#: netbox/extras/dashboard/widgets.py:222 msgid "Object List" msgstr "" -#: extras/dashboard/widgets.py:223 +#: netbox/extras/dashboard/widgets.py:223 msgid "Display an arbitrary list of objects." msgstr "" -#: extras/dashboard/widgets.py:236 +#: netbox/extras/dashboard/widgets.py:236 msgid "The default number of objects to display" msgstr "" -#: extras/dashboard/widgets.py:248 +#: netbox/extras/dashboard/widgets.py:248 msgid "Invalid format. URL parameters must be passed as a dictionary." msgstr "" -#: extras/dashboard/widgets.py:283 +#: netbox/extras/dashboard/widgets.py:283 msgid "RSS Feed" msgstr "" -#: extras/dashboard/widgets.py:288 +#: netbox/extras/dashboard/widgets.py:288 msgid "Embed an RSS feed from an external website." msgstr "" -#: extras/dashboard/widgets.py:295 +#: netbox/extras/dashboard/widgets.py:295 msgid "Feed URL" msgstr "" -#: extras/dashboard/widgets.py:300 +#: netbox/extras/dashboard/widgets.py:300 msgid "The maximum number of objects to display" msgstr "" -#: extras/dashboard/widgets.py:305 +#: netbox/extras/dashboard/widgets.py:305 msgid "How long to stored the cached content (in seconds)" msgstr "" -#: extras/dashboard/widgets.py:357 templates/account/base.html:10 -#: templates/account/bookmarks.html:7 templates/inc/user_menu.html:30 +#: netbox/extras/dashboard/widgets.py:357 netbox/templates/account/base.html:10 +#: netbox/templates/account/bookmarks.html:7 +#: netbox/templates/inc/user_menu.html:30 msgid "Bookmarks" msgstr "" -#: extras/dashboard/widgets.py:361 +#: netbox/extras/dashboard/widgets.py:361 msgid "Show your personal bookmarks" msgstr "" -#: extras/events.py:128 +#: netbox/extras/events.py:128 #, python-brace-format msgid "Unknown action type for an event rule: {action_type}" msgstr "" -#: extras/events.py:176 +#: netbox/extras/events.py:176 #, 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:249 extras/filtersets.py:589 extras/filtersets.py:621 +#: netbox/extras/filtersets.py:249 netbox/extras/filtersets.py:589 +#: netbox/extras/filtersets.py:621 msgid "Data file (ID)" msgstr "" -#: extras/filtersets.py:526 virtualization/forms/filtersets.py:118 +#: netbox/extras/filtersets.py:526 +#: netbox/virtualization/forms/filtersets.py:118 msgid "Cluster type" msgstr "" -#: extras/filtersets.py:532 virtualization/filtersets.py:95 -#: virtualization/filtersets.py:147 +#: netbox/extras/filtersets.py:532 netbox/virtualization/filtersets.py:95 +#: netbox/virtualization/filtersets.py:147 msgid "Cluster type (slug)" msgstr "" -#: extras/filtersets.py:537 ipam/forms/bulk_edit.py:476 -#: ipam/forms/filtersets.py:464 ipam/forms/model_forms.py:624 -#: virtualization/forms/filtersets.py:112 +#: netbox/extras/filtersets.py:537 netbox/ipam/forms/bulk_edit.py:476 +#: netbox/ipam/forms/filtersets.py:464 netbox/ipam/forms/model_forms.py:624 +#: netbox/virtualization/forms/filtersets.py:112 msgid "Cluster group" msgstr "" -#: extras/filtersets.py:543 virtualization/filtersets.py:136 +#: netbox/extras/filtersets.py:543 netbox/virtualization/filtersets.py:136 msgid "Cluster group (slug)" msgstr "" -#: extras/filtersets.py:553 tenancy/forms/forms.py:16 tenancy/forms/forms.py:39 +#: netbox/extras/filtersets.py:553 netbox/tenancy/forms/forms.py:16 +#: netbox/tenancy/forms/forms.py:39 msgid "Tenant group" msgstr "" -#: extras/filtersets.py:559 tenancy/filtersets.py:189 tenancy/filtersets.py:209 +#: netbox/extras/filtersets.py:559 netbox/tenancy/filtersets.py:189 +#: netbox/tenancy/filtersets.py:209 msgid "Tenant group (slug)" msgstr "" -#: extras/filtersets.py:575 extras/forms/model_forms.py:371 -#: templates/extras/tag.html:11 +#: netbox/extras/filtersets.py:575 netbox/extras/forms/model_forms.py:371 +#: netbox/templates/extras/tag.html:11 msgid "Tag" msgstr "" -#: extras/filtersets.py:581 +#: netbox/extras/filtersets.py:581 msgid "Tag (slug)" msgstr "" -#: extras/filtersets.py:645 extras/forms/filtersets.py:438 +#: netbox/extras/filtersets.py:645 netbox/extras/forms/filtersets.py:438 msgid "Has local config context data" msgstr "" -#: extras/filtersets.py:670 +#: netbox/extras/filtersets.py:670 msgid "User name" msgstr "" -#: extras/forms/bulk_edit.py:32 extras/forms/filtersets.py:57 +#: netbox/extras/forms/bulk_edit.py:32 netbox/extras/forms/filtersets.py:57 msgid "Group name" msgstr "" -#: extras/forms/bulk_edit.py:40 extras/forms/filtersets.py:65 -#: extras/tables/tables.py:49 templates/extras/customfield.html:38 -#: templates/generic/bulk_import.html:118 +#: netbox/extras/forms/bulk_edit.py:40 netbox/extras/forms/filtersets.py:65 +#: netbox/extras/tables/tables.py:49 +#: netbox/templates/extras/customfield.html:38 +#: netbox/templates/generic/bulk_import.html:118 msgid "Required" msgstr "" -#: extras/forms/bulk_edit.py:53 extras/forms/bulk_import.py:57 -#: extras/forms/filtersets.py:79 extras/models/customfields.py:194 +#: 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:194 msgid "UI visible" msgstr "" -#: extras/forms/bulk_edit.py:58 extras/forms/bulk_import.py:63 -#: extras/forms/filtersets.py:84 extras/models/customfields.py:201 +#: 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:201 msgid "UI editable" msgstr "" -#: extras/forms/bulk_edit.py:63 extras/forms/filtersets.py:87 +#: netbox/extras/forms/bulk_edit.py:63 netbox/extras/forms/filtersets.py:87 msgid "Is cloneable" msgstr "" -#: extras/forms/bulk_edit.py:103 extras/forms/filtersets.py:127 +#: netbox/extras/forms/bulk_edit.py:103 netbox/extras/forms/filtersets.py:127 msgid "New window" msgstr "" -#: extras/forms/bulk_edit.py:112 +#: netbox/extras/forms/bulk_edit.py:112 msgid "Button class" msgstr "" -#: extras/forms/bulk_edit.py:129 extras/forms/filtersets.py:165 -#: extras/models/models.py:437 +#: netbox/extras/forms/bulk_edit.py:129 netbox/extras/forms/filtersets.py:165 +#: netbox/extras/models/models.py:437 msgid "MIME type" msgstr "" -#: extras/forms/bulk_edit.py:134 extras/forms/filtersets.py:168 +#: netbox/extras/forms/bulk_edit.py:134 netbox/extras/forms/filtersets.py:168 msgid "File extension" msgstr "" -#: extras/forms/bulk_edit.py:139 extras/forms/filtersets.py:172 +#: netbox/extras/forms/bulk_edit.py:139 netbox/extras/forms/filtersets.py:172 msgid "As attachment" msgstr "" -#: extras/forms/bulk_edit.py:167 extras/forms/filtersets.py:214 -#: extras/tables/tables.py:219 templates/extras/savedfilter.html:29 +#: netbox/extras/forms/bulk_edit.py:167 netbox/extras/forms/filtersets.py:214 +#: netbox/extras/tables/tables.py:219 +#: netbox/templates/extras/savedfilter.html:29 msgid "Shared" msgstr "" -#: extras/forms/bulk_edit.py:190 extras/forms/filtersets.py:243 -#: extras/models/models.py:202 +#: netbox/extras/forms/bulk_edit.py:190 netbox/extras/forms/filtersets.py:243 +#: netbox/extras/models/models.py:202 msgid "HTTP method" msgstr "" -#: extras/forms/bulk_edit.py:194 extras/forms/filtersets.py:237 -#: templates/extras/webhook.html:30 +#: netbox/extras/forms/bulk_edit.py:194 netbox/extras/forms/filtersets.py:237 +#: netbox/templates/extras/webhook.html:30 msgid "Payload URL" msgstr "" -#: extras/forms/bulk_edit.py:199 extras/models/models.py:242 +#: netbox/extras/forms/bulk_edit.py:199 netbox/extras/models/models.py:242 msgid "SSL verification" msgstr "" -#: extras/forms/bulk_edit.py:202 templates/extras/webhook.html:38 +#: netbox/extras/forms/bulk_edit.py:202 netbox/templates/extras/webhook.html:38 msgid "Secret" msgstr "" -#: extras/forms/bulk_edit.py:207 +#: netbox/extras/forms/bulk_edit.py:207 msgid "CA file path" msgstr "" -#: extras/forms/bulk_edit.py:226 +#: netbox/extras/forms/bulk_edit.py:226 msgid "On create" msgstr "" -#: extras/forms/bulk_edit.py:231 +#: netbox/extras/forms/bulk_edit.py:231 msgid "On update" msgstr "" -#: extras/forms/bulk_edit.py:236 +#: netbox/extras/forms/bulk_edit.py:236 msgid "On delete" msgstr "" -#: extras/forms/bulk_edit.py:241 +#: netbox/extras/forms/bulk_edit.py:241 msgid "On job start" msgstr "" -#: extras/forms/bulk_edit.py:246 +#: netbox/extras/forms/bulk_edit.py:246 msgid "On job end" msgstr "" -#: extras/forms/bulk_edit.py:283 +#: netbox/extras/forms/bulk_edit.py:283 msgid "Is active" msgstr "" -#: extras/forms/bulk_import.py:34 extras/forms/bulk_import.py:115 -#: extras/forms/bulk_import.py:136 extras/forms/bulk_import.py:159 -#: extras/forms/bulk_import.py:183 extras/forms/filtersets.py:115 -#: extras/forms/filtersets.py:202 extras/forms/model_forms.py:43 -#: extras/forms/model_forms.py:131 extras/forms/model_forms.py:163 -#: extras/forms/model_forms.py:204 extras/forms/model_forms.py:261 -#: extras/forms/model_forms.py:365 users/forms/model_forms.py:273 +#: 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/users/forms/model_forms.py:273 msgid "Object types" msgstr "" -#: extras/forms/bulk_import.py:36 extras/forms/bulk_import.py:117 -#: extras/forms/bulk_import.py:138 extras/forms/bulk_import.py:161 -#: extras/forms/bulk_import.py:185 tenancy/forms/bulk_import.py:96 +#: 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/tenancy/forms/bulk_import.py:96 msgid "One or more assigned object types" msgstr "" -#: extras/forms/bulk_import.py:41 +#: netbox/extras/forms/bulk_import.py:41 msgid "Field data type (e.g. text, integer, etc.)" msgstr "" -#: extras/forms/bulk_import.py:44 extras/forms/filtersets.py:186 -#: extras/forms/filtersets.py:260 extras/forms/model_forms.py:230 -#: tenancy/forms/filtersets.py:92 +#: 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/tenancy/forms/filtersets.py:92 msgid "Object type" msgstr "" -#: extras/forms/bulk_import.py:47 +#: netbox/extras/forms/bulk_import.py:47 msgid "Object type (for object or multi-object fields)" msgstr "" -#: extras/forms/bulk_import.py:50 extras/forms/filtersets.py:74 +#: netbox/extras/forms/bulk_import.py:50 netbox/extras/forms/filtersets.py:74 msgid "Choice set" msgstr "" -#: extras/forms/bulk_import.py:54 +#: netbox/extras/forms/bulk_import.py:54 msgid "Choice set (for selection fields)" msgstr "" -#: extras/forms/bulk_import.py:60 +#: netbox/extras/forms/bulk_import.py:60 msgid "Whether the custom field is displayed in the UI" msgstr "" -#: extras/forms/bulk_import.py:66 +#: netbox/extras/forms/bulk_import.py:66 msgid "Whether the custom field is editable in the UI" msgstr "" -#: extras/forms/bulk_import.py:82 +#: netbox/extras/forms/bulk_import.py:82 msgid "The base set of predefined choices to use (if any)" msgstr "" -#: extras/forms/bulk_import.py:88 +#: netbox/extras/forms/bulk_import.py:88 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:120 extras/models/models.py:351 +#: netbox/extras/forms/bulk_import.py:120 netbox/extras/models/models.py:351 msgid "button class" msgstr "" -#: extras/forms/bulk_import.py:123 extras/models/models.py:355 +#: netbox/extras/forms/bulk_import.py:123 netbox/extras/models/models.py:355 msgid "" "The class of the first link in a group will be used for the dropdown button" msgstr "" -#: extras/forms/bulk_import.py:188 +#: netbox/extras/forms/bulk_import.py:188 msgid "Action object" msgstr "" -#: extras/forms/bulk_import.py:190 +#: netbox/extras/forms/bulk_import.py:190 msgid "Webhook name or script as dotted path module.Class" msgstr "" -#: extras/forms/bulk_import.py:211 +#: netbox/extras/forms/bulk_import.py:211 #, python-brace-format msgid "Webhook {name} not found" msgstr "" -#: extras/forms/bulk_import.py:220 +#: netbox/extras/forms/bulk_import.py:220 #, python-brace-format msgid "Script {name} not found" msgstr "" -#: extras/forms/bulk_import.py:239 +#: netbox/extras/forms/bulk_import.py:239 msgid "Assigned object type" msgstr "" -#: extras/forms/bulk_import.py:244 +#: netbox/extras/forms/bulk_import.py:244 msgid "The classification of entry" msgstr "" -#: extras/forms/filtersets.py:49 extras/forms/model_forms.py:47 +#: netbox/extras/forms/filtersets.py:49 netbox/extras/forms/model_forms.py:47 msgid "Related object type" msgstr "" -#: extras/forms/filtersets.py:54 +#: netbox/extras/forms/filtersets.py:54 msgid "Field type" msgstr "" -#: extras/forms/filtersets.py:98 extras/tables/tables.py:70 -#: templates/generic/bulk_import.html:154 +#: netbox/extras/forms/filtersets.py:98 netbox/extras/tables/tables.py:70 +#: netbox/templates/generic/bulk_import.html:154 msgid "Choices" msgstr "" -#: extras/forms/filtersets.py:142 extras/forms/filtersets.py:328 -#: extras/forms/filtersets.py:417 extras/forms/model_forms.py:448 -#: templates/core/job.html:78 templates/extras/eventrule.html:90 +#: 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:78 netbox/templates/extras/eventrule.html:90 msgid "Data" msgstr "" -#: extras/forms/filtersets.py:153 extras/forms/filtersets.py:342 -#: extras/forms/filtersets.py:427 netbox/choices.py:133 -#: utilities/forms/bulk_import.py:26 +#: netbox/extras/forms/filtersets.py:153 netbox/extras/forms/filtersets.py:342 +#: netbox/extras/forms/filtersets.py:427 netbox/netbox/choices.py:133 +#: netbox/utilities/forms/bulk_import.py:26 msgid "Data file" msgstr "" -#: extras/forms/filtersets.py:161 +#: netbox/extras/forms/filtersets.py:161 msgid "Content types" msgstr "" -#: extras/forms/filtersets.py:233 extras/models/models.py:207 +#: netbox/extras/forms/filtersets.py:233 netbox/extras/models/models.py:207 msgid "HTTP content type" msgstr "" -#: extras/forms/filtersets.py:255 extras/forms/model_forms.py:280 -#: templates/extras/eventrule.html:37 +#: netbox/extras/forms/filtersets.py:255 netbox/extras/forms/model_forms.py:280 +#: netbox/templates/extras/eventrule.html:37 msgid "Events" msgstr "" -#: extras/forms/filtersets.py:265 +#: netbox/extras/forms/filtersets.py:265 msgid "Action type" msgstr "" -#: extras/forms/filtersets.py:279 +#: netbox/extras/forms/filtersets.py:279 msgid "Object creations" msgstr "" -#: extras/forms/filtersets.py:286 +#: netbox/extras/forms/filtersets.py:286 msgid "Object updates" msgstr "" -#: extras/forms/filtersets.py:293 +#: netbox/extras/forms/filtersets.py:293 msgid "Object deletions" msgstr "" -#: extras/forms/filtersets.py:300 +#: netbox/extras/forms/filtersets.py:300 msgid "Job starts" msgstr "" -#: extras/forms/filtersets.py:307 extras/forms/model_forms.py:297 +#: netbox/extras/forms/filtersets.py:307 netbox/extras/forms/model_forms.py:297 msgid "Job terminations" msgstr "" -#: extras/forms/filtersets.py:316 +#: netbox/extras/forms/filtersets.py:316 msgid "Tagged object type" msgstr "" -#: extras/forms/filtersets.py:321 +#: netbox/extras/forms/filtersets.py:321 msgid "Allowed object type" msgstr "" -#: extras/forms/filtersets.py:350 extras/forms/model_forms.py:383 -#: netbox/navigation/menu.py:18 +#: netbox/extras/forms/filtersets.py:350 netbox/extras/forms/model_forms.py:383 +#: netbox/netbox/navigation/menu.py:18 msgid "Regions" msgstr "" -#: extras/forms/filtersets.py:355 extras/forms/model_forms.py:388 +#: netbox/extras/forms/filtersets.py:355 netbox/extras/forms/model_forms.py:388 msgid "Site groups" msgstr "" -#: extras/forms/filtersets.py:365 extras/forms/model_forms.py:398 -#: netbox/navigation/menu.py:20 templates/dcim/site.html:126 +#: netbox/extras/forms/filtersets.py:365 netbox/extras/forms/model_forms.py:398 +#: netbox/netbox/navigation/menu.py:20 netbox/templates/dcim/site.html:127 msgid "Locations" msgstr "" -#: extras/forms/filtersets.py:370 extras/forms/model_forms.py:403 +#: netbox/extras/forms/filtersets.py:370 netbox/extras/forms/model_forms.py:403 msgid "Device types" msgstr "" -#: extras/forms/filtersets.py:375 extras/forms/model_forms.py:408 +#: netbox/extras/forms/filtersets.py:375 netbox/extras/forms/model_forms.py:408 msgid "Roles" msgstr "" -#: extras/forms/filtersets.py:385 extras/forms/model_forms.py:418 +#: netbox/extras/forms/filtersets.py:385 netbox/extras/forms/model_forms.py:418 msgid "Cluster types" msgstr "" -#: extras/forms/filtersets.py:390 extras/forms/model_forms.py:423 +#: netbox/extras/forms/filtersets.py:390 netbox/extras/forms/model_forms.py:423 msgid "Cluster groups" msgstr "" -#: extras/forms/filtersets.py:395 extras/forms/model_forms.py:428 -#: netbox/navigation/menu.py:242 netbox/navigation/menu.py:244 -#: templates/virtualization/clustertype.html:30 -#: virtualization/tables/clusters.py:23 virtualization/tables/clusters.py:45 +#: 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/templates/virtualization/clustertype.html:30 +#: netbox/virtualization/tables/clusters.py:23 +#: netbox/virtualization/tables/clusters.py:45 msgid "Clusters" msgstr "" -#: extras/forms/filtersets.py:400 extras/forms/model_forms.py:433 +#: netbox/extras/forms/filtersets.py:400 netbox/extras/forms/model_forms.py:433 msgid "Tenant groups" msgstr "" -#: extras/forms/filtersets.py:454 extras/forms/filtersets.py:492 +#: netbox/extras/forms/filtersets.py:454 netbox/extras/forms/filtersets.py:492 msgid "After" msgstr "" -#: extras/forms/filtersets.py:459 extras/forms/filtersets.py:497 +#: netbox/extras/forms/filtersets.py:459 netbox/extras/forms/filtersets.py:497 msgid "Before" msgstr "" -#: extras/forms/filtersets.py:487 extras/tables/tables.py:456 -#: extras/tables/tables.py:542 extras/tables/tables.py:567 -#: templates/extras/objectchange.html:31 +#: netbox/extras/forms/filtersets.py:487 netbox/extras/tables/tables.py:456 +#: netbox/extras/tables/tables.py:542 netbox/extras/tables/tables.py:567 +#: netbox/templates/extras/objectchange.html:31 msgid "Time" msgstr "" -#: extras/forms/filtersets.py:501 extras/forms/model_forms.py:282 -#: extras/tables/tables.py:470 templates/extras/eventrule.html:77 -#: templates/extras/objectchange.html:45 +#: netbox/extras/forms/filtersets.py:501 netbox/extras/forms/model_forms.py:282 +#: netbox/extras/tables/tables.py:470 netbox/templates/extras/eventrule.html:77 +#: netbox/templates/extras/objectchange.html:45 msgid "Action" msgstr "" -#: extras/forms/model_forms.py:50 +#: netbox/extras/forms/model_forms.py:50 msgid "Type of the related object (for object/multi-object fields only)" msgstr "" -#: extras/forms/model_forms.py:61 templates/extras/customfield.html:10 +#: netbox/extras/forms/model_forms.py:61 +#: netbox/templates/extras/customfield.html:10 msgid "Custom Field" msgstr "" -#: extras/forms/model_forms.py:64 templates/extras/customfield.html:58 +#: netbox/extras/forms/model_forms.py:64 +#: netbox/templates/extras/customfield.html:58 msgid "Behavior" msgstr "" -#: extras/forms/model_forms.py:66 +#: netbox/extras/forms/model_forms.py:66 msgid "Values" msgstr "" -#: extras/forms/model_forms.py:75 +#: netbox/extras/forms/model_forms.py:75 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:78 +#: netbox/extras/forms/model_forms.py:78 msgid "" "This will be displayed as help text for the form field. Markdown is " "supported." msgstr "" -#: extras/forms/model_forms.py:95 +#: netbox/extras/forms/model_forms.py:95 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:138 templates/extras/customlink.html:10 +#: netbox/extras/forms/model_forms.py:138 +#: netbox/templates/extras/customlink.html:10 msgid "Custom Link" msgstr "" -#: extras/forms/model_forms.py:140 +#: netbox/extras/forms/model_forms.py:140 msgid "Templates" msgstr "" -#: extras/forms/model_forms.py:152 +#: netbox/extras/forms/model_forms.py:152 #, 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:156 +#: netbox/extras/forms/model_forms.py:156 #, python-brace-format msgid "" "Jinja2 template code for the link URL. Reference the object as {example}." msgstr "" -#: extras/forms/model_forms.py:167 extras/forms/model_forms.py:500 +#: netbox/extras/forms/model_forms.py:167 +#: netbox/extras/forms/model_forms.py:500 msgid "Template code" msgstr "" -#: extras/forms/model_forms.py:173 templates/extras/exporttemplate.html:12 +#: netbox/extras/forms/model_forms.py:173 +#: netbox/templates/extras/exporttemplate.html:12 msgid "Export Template" msgstr "" -#: extras/forms/model_forms.py:175 +#: netbox/extras/forms/model_forms.py:175 msgid "Rendering" msgstr "" -#: extras/forms/model_forms.py:189 extras/forms/model_forms.py:525 +#: netbox/extras/forms/model_forms.py:189 +#: netbox/extras/forms/model_forms.py:525 msgid "Template content is populated from the remote source selected below." msgstr "" -#: extras/forms/model_forms.py:196 extras/forms/model_forms.py:532 +#: netbox/extras/forms/model_forms.py:196 +#: netbox/extras/forms/model_forms.py:532 msgid "Must specify either local content or a data file" msgstr "" -#: extras/forms/model_forms.py:210 netbox/forms/mixins.py:70 -#: templates/extras/savedfilter.html:10 +#: netbox/extras/forms/model_forms.py:210 netbox/netbox/forms/mixins.py:70 +#: netbox/templates/extras/savedfilter.html:10 msgid "Saved Filter" msgstr "" -#: extras/forms/model_forms.py:245 templates/extras/webhook.html:23 +#: netbox/extras/forms/model_forms.py:245 +#: netbox/templates/extras/webhook.html:23 msgid "HTTP Request" msgstr "" -#: extras/forms/model_forms.py:247 templates/extras/webhook.html:44 +#: netbox/extras/forms/model_forms.py:247 +#: netbox/templates/extras/webhook.html:44 msgid "SSL" msgstr "" -#: extras/forms/model_forms.py:265 +#: netbox/extras/forms/model_forms.py:265 msgid "Action choice" msgstr "" -#: extras/forms/model_forms.py:270 +#: netbox/extras/forms/model_forms.py:270 msgid "Enter conditions in JSON format." msgstr "" -#: extras/forms/model_forms.py:274 +#: netbox/extras/forms/model_forms.py:274 msgid "" "Enter parameters to pass to the action in JSON format." msgstr "" -#: extras/forms/model_forms.py:279 templates/extras/eventrule.html:10 +#: netbox/extras/forms/model_forms.py:279 +#: netbox/templates/extras/eventrule.html:10 msgid "Event Rule" msgstr "" -#: extras/forms/model_forms.py:281 templates/extras/eventrule.html:66 +#: netbox/extras/forms/model_forms.py:281 +#: netbox/templates/extras/eventrule.html:66 msgid "Conditions" msgstr "" -#: extras/forms/model_forms.py:293 +#: netbox/extras/forms/model_forms.py:293 msgid "Creations" msgstr "" -#: extras/forms/model_forms.py:294 +#: netbox/extras/forms/model_forms.py:294 msgid "Updates" msgstr "" -#: extras/forms/model_forms.py:295 +#: netbox/extras/forms/model_forms.py:295 msgid "Deletions" msgstr "" -#: extras/forms/model_forms.py:296 +#: netbox/extras/forms/model_forms.py:296 msgid "Job executions" msgstr "" -#: extras/forms/model_forms.py:438 netbox/navigation/menu.py:39 -#: tenancy/tables/tenants.py:22 +#: netbox/extras/forms/model_forms.py:438 netbox/netbox/navigation/menu.py:39 +#: netbox/tenancy/tables/tenants.py:22 msgid "Tenants" msgstr "" -#: extras/forms/model_forms.py:458 ipam/forms/filtersets.py:142 -#: ipam/forms/filtersets.py:553 ipam/forms/model_forms.py:321 -#: 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:311 +#: 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:321 +#: 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:311 msgid "Assignment" msgstr "" -#: extras/forms/model_forms.py:482 +#: netbox/extras/forms/model_forms.py:482 msgid "Data is populated from the remote source selected below." msgstr "" -#: extras/forms/model_forms.py:488 +#: netbox/extras/forms/model_forms.py:488 msgid "Must specify either local data or a data file" msgstr "" -#: extras/forms/model_forms.py:507 templates/core/datafile.html:55 +#: netbox/extras/forms/model_forms.py:507 +#: 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/management/commands/reindex.py:66 +#: netbox/extras/management/commands/reindex.py:66 msgid "No indexers found!" msgstr "" -#: extras/models/change_logging.py:24 +#: netbox/extras/models/change_logging.py:29 msgid "time" msgstr "" -#: extras/models/change_logging.py:37 +#: netbox/extras/models/change_logging.py:42 msgid "user name" msgstr "" -#: extras/models/change_logging.py:42 +#: netbox/extras/models/change_logging.py:47 msgid "request ID" msgstr "" -#: extras/models/change_logging.py:47 extras/models/staging.py:69 +#: netbox/extras/models/change_logging.py:52 netbox/extras/models/staging.py:69 msgid "action" msgstr "" -#: extras/models/change_logging.py:81 +#: netbox/extras/models/change_logging.py:86 msgid "pre-change data" msgstr "" -#: extras/models/change_logging.py:87 +#: netbox/extras/models/change_logging.py:92 msgid "post-change data" msgstr "" -#: extras/models/change_logging.py:101 +#: netbox/extras/models/change_logging.py:106 msgid "object change" msgstr "" -#: extras/models/change_logging.py:102 +#: netbox/extras/models/change_logging.py:107 msgid "object changes" msgstr "" -#: extras/models/change_logging.py:118 +#: netbox/extras/models/change_logging.py:123 #, python-brace-format msgid "Change logging is not supported for this object type ({type})." 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:73 +#: netbox/extras/models/customfields.py:73 msgid "The object(s) to which this field applies." msgstr "" -#: extras/models/customfields.py:80 +#: netbox/extras/models/customfields.py:80 msgid "The type of data this custom field holds" msgstr "" -#: extras/models/customfields.py:87 +#: netbox/extras/models/customfields.py:87 msgid "The type of NetBox object this field maps to (for object fields)" msgstr "" -#: extras/models/customfields.py:93 +#: netbox/extras/models/customfields.py:93 msgid "Internal field name" msgstr "" -#: extras/models/customfields.py:97 +#: netbox/extras/models/customfields.py:97 msgid "Only alphanumeric characters and underscores are allowed." msgstr "" -#: extras/models/customfields.py:102 +#: netbox/extras/models/customfields.py:102 msgid "Double underscores are not permitted in custom field names." msgstr "" -#: extras/models/customfields.py:113 +#: netbox/extras/models/customfields.py:113 msgid "" "Name of the field as displayed to users (if not provided, 'the field's name " "will be used)" msgstr "" -#: extras/models/customfields.py:117 extras/models/models.py:345 +#: netbox/extras/models/customfields.py:117 netbox/extras/models/models.py:345 msgid "group name" msgstr "" -#: extras/models/customfields.py:120 +#: netbox/extras/models/customfields.py:120 msgid "Custom fields within the same group will be displayed together" msgstr "" -#: extras/models/customfields.py:128 +#: netbox/extras/models/customfields.py:128 msgid "required" msgstr "" -#: extras/models/customfields.py:130 +#: netbox/extras/models/customfields.py:130 msgid "" "If true, this field is required when creating new objects or editing an " "existing object." msgstr "" -#: extras/models/customfields.py:133 +#: netbox/extras/models/customfields.py:133 msgid "search weight" msgstr "" -#: extras/models/customfields.py:136 +#: netbox/extras/models/customfields.py:136 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:141 +#: netbox/extras/models/customfields.py:141 msgid "filter logic" msgstr "" -#: extras/models/customfields.py:145 +#: netbox/extras/models/customfields.py:145 msgid "" "Loose matches any instance of a given string; exact matches the entire field." msgstr "" -#: extras/models/customfields.py:148 +#: netbox/extras/models/customfields.py:148 msgid "default" msgstr "" -#: extras/models/customfields.py:152 +#: netbox/extras/models/customfields.py:152 msgid "" "Default value for the field (must be a JSON value). Encapsulate strings with " "double quotes (e.g. \"Foo\")." msgstr "" -#: extras/models/customfields.py:157 +#: netbox/extras/models/customfields.py:157 msgid "display weight" msgstr "" -#: extras/models/customfields.py:158 +#: netbox/extras/models/customfields.py:158 msgid "Fields with higher weights appear lower in a form." msgstr "" -#: extras/models/customfields.py:163 +#: netbox/extras/models/customfields.py:163 msgid "minimum value" msgstr "" -#: extras/models/customfields.py:164 +#: netbox/extras/models/customfields.py:164 msgid "Minimum allowed value (for numeric fields)" msgstr "" -#: extras/models/customfields.py:169 +#: netbox/extras/models/customfields.py:169 msgid "maximum value" msgstr "" -#: extras/models/customfields.py:170 +#: netbox/extras/models/customfields.py:170 msgid "Maximum allowed value (for numeric fields)" msgstr "" -#: extras/models/customfields.py:176 +#: netbox/extras/models/customfields.py:176 msgid "validation regex" msgstr "" -#: extras/models/customfields.py:178 +#: netbox/extras/models/customfields.py:178 #, python-brace-format msgid "" "Regular expression to enforce on text field values. Use ^ and $ to force " @@ -7079,282 +7568,284 @@ msgid "" "values to exactly three uppercase letters." msgstr "" -#: extras/models/customfields.py:186 +#: netbox/extras/models/customfields.py:186 msgid "choice set" msgstr "" -#: extras/models/customfields.py:195 +#: netbox/extras/models/customfields.py:195 msgid "Specifies whether the custom field is displayed in the UI" msgstr "" -#: extras/models/customfields.py:202 +#: netbox/extras/models/customfields.py:202 msgid "Specifies whether the custom field value can be edited in the UI" msgstr "" -#: extras/models/customfields.py:206 +#: netbox/extras/models/customfields.py:206 msgid "is cloneable" msgstr "" -#: extras/models/customfields.py:207 +#: netbox/extras/models/customfields.py:207 msgid "Replicate this value when cloning objects" msgstr "" -#: extras/models/customfields.py:224 +#: netbox/extras/models/customfields.py:224 msgid "custom field" msgstr "" -#: extras/models/customfields.py:225 +#: netbox/extras/models/customfields.py:225 msgid "custom fields" msgstr "" -#: extras/models/customfields.py:314 +#: netbox/extras/models/customfields.py:314 #, python-brace-format msgid "Invalid default value \"{value}\": {error}" msgstr "" -#: extras/models/customfields.py:321 +#: netbox/extras/models/customfields.py:321 msgid "A minimum value may be set only for numeric fields" msgstr "" -#: extras/models/customfields.py:323 +#: netbox/extras/models/customfields.py:323 msgid "A maximum value may be set only for numeric fields" msgstr "" -#: extras/models/customfields.py:333 +#: netbox/extras/models/customfields.py:333 msgid "Regular expression validation is supported only for text and URL fields" msgstr "" -#: extras/models/customfields.py:343 +#: netbox/extras/models/customfields.py:343 msgid "Selection fields must specify a set of choices." msgstr "" -#: extras/models/customfields.py:347 +#: netbox/extras/models/customfields.py:347 msgid "Choices may be set only on selection fields." msgstr "" -#: extras/models/customfields.py:354 +#: netbox/extras/models/customfields.py:354 msgid "Object fields must define an object type." msgstr "" -#: extras/models/customfields.py:359 +#: netbox/extras/models/customfields.py:359 #, python-brace-format msgid "{type} fields may not define an object type." msgstr "" -#: extras/models/customfields.py:439 +#: netbox/extras/models/customfields.py:439 msgid "True" msgstr "" -#: extras/models/customfields.py:440 +#: netbox/extras/models/customfields.py:440 msgid "False" msgstr "" -#: extras/models/customfields.py:522 +#: netbox/extras/models/customfields.py:522 #, python-brace-format msgid "Values must match this regex: {regex}" msgstr "" -#: extras/models/customfields.py:616 +#: netbox/extras/models/customfields.py:616 msgid "Value must be a string." msgstr "" -#: extras/models/customfields.py:618 +#: netbox/extras/models/customfields.py:618 #, python-brace-format msgid "Value must match regex '{regex}'" msgstr "" -#: extras/models/customfields.py:623 +#: netbox/extras/models/customfields.py:623 msgid "Value must be an integer." msgstr "" -#: extras/models/customfields.py:626 extras/models/customfields.py:641 +#: netbox/extras/models/customfields.py:626 +#: netbox/extras/models/customfields.py:641 #, python-brace-format msgid "Value must be at least {minimum}" msgstr "" -#: extras/models/customfields.py:630 extras/models/customfields.py:645 +#: netbox/extras/models/customfields.py:630 +#: netbox/extras/models/customfields.py:645 #, python-brace-format msgid "Value must not exceed {maximum}" msgstr "" -#: extras/models/customfields.py:638 +#: netbox/extras/models/customfields.py:638 msgid "Value must be a decimal." msgstr "" -#: extras/models/customfields.py:650 +#: netbox/extras/models/customfields.py:650 msgid "Value must be true or false." msgstr "" -#: extras/models/customfields.py:658 +#: netbox/extras/models/customfields.py:658 msgid "Date values must be in ISO 8601 format (YYYY-MM-DD)." msgstr "" -#: extras/models/customfields.py:667 +#: netbox/extras/models/customfields.py:667 msgid "Date and time values must be in ISO 8601 format (YYYY-MM-DD HH:MM:SS)." msgstr "" -#: extras/models/customfields.py:674 +#: netbox/extras/models/customfields.py:674 #, python-brace-format msgid "Invalid choice ({value}) for choice set {choiceset}." msgstr "" -#: extras/models/customfields.py:684 +#: netbox/extras/models/customfields.py:684 #, python-brace-format msgid "Invalid choice(s) ({value}) for choice set {choiceset}." msgstr "" -#: extras/models/customfields.py:693 +#: netbox/extras/models/customfields.py:693 #, python-brace-format msgid "Value must be an object ID, not {type}" msgstr "" -#: extras/models/customfields.py:699 +#: netbox/extras/models/customfields.py:699 #, python-brace-format msgid "Value must be a list of object IDs, not {type}" msgstr "" -#: extras/models/customfields.py:703 +#: netbox/extras/models/customfields.py:703 #, python-brace-format msgid "Found invalid object ID: {id}" msgstr "" -#: extras/models/customfields.py:706 +#: netbox/extras/models/customfields.py:706 msgid "Required field cannot be empty." msgstr "" -#: extras/models/customfields.py:725 +#: netbox/extras/models/customfields.py:725 msgid "Base set of predefined choices (optional)" msgstr "" -#: extras/models/customfields.py:737 +#: netbox/extras/models/customfields.py:737 msgid "Choices are automatically ordered alphabetically" msgstr "" -#: extras/models/customfields.py:744 +#: netbox/extras/models/customfields.py:744 msgid "custom field choice set" msgstr "" -#: extras/models/customfields.py:745 +#: netbox/extras/models/customfields.py:745 msgid "custom field choice sets" msgstr "" -#: extras/models/customfields.py:781 +#: netbox/extras/models/customfields.py:781 msgid "Must define base or extra choices." msgstr "" -#: extras/models/dashboard.py:19 +#: netbox/extras/models/dashboard.py:19 msgid "layout" msgstr "" -#: extras/models/dashboard.py:23 +#: netbox/extras/models/dashboard.py:23 msgid "config" msgstr "" -#: extras/models/dashboard.py:28 +#: netbox/extras/models/dashboard.py:28 msgid "dashboard" msgstr "" -#: extras/models/dashboard.py:29 +#: netbox/extras/models/dashboard.py:29 msgid "dashboards" msgstr "" -#: extras/models/models.py:51 +#: netbox/extras/models/models.py:51 msgid "object types" msgstr "" -#: extras/models/models.py:52 +#: netbox/extras/models/models.py:52 msgid "The object(s) to which this rule applies." msgstr "" -#: extras/models/models.py:65 +#: netbox/extras/models/models.py:65 msgid "on create" msgstr "" -#: extras/models/models.py:67 +#: netbox/extras/models/models.py:67 msgid "Triggers when a matching object is created." msgstr "" -#: extras/models/models.py:70 +#: netbox/extras/models/models.py:70 msgid "on update" msgstr "" -#: extras/models/models.py:72 +#: netbox/extras/models/models.py:72 msgid "Triggers when a matching object is updated." msgstr "" -#: extras/models/models.py:75 +#: netbox/extras/models/models.py:75 msgid "on delete" msgstr "" -#: extras/models/models.py:77 +#: netbox/extras/models/models.py:77 msgid "Triggers when a matching object is deleted." msgstr "" -#: extras/models/models.py:80 +#: netbox/extras/models/models.py:80 msgid "on job start" msgstr "" -#: extras/models/models.py:82 +#: netbox/extras/models/models.py:82 msgid "Triggers when a job for a matching object is started." msgstr "" -#: extras/models/models.py:85 +#: netbox/extras/models/models.py:85 msgid "on job end" msgstr "" -#: extras/models/models.py:87 +#: netbox/extras/models/models.py:87 msgid "Triggers when a job for a matching object terminates." msgstr "" -#: extras/models/models.py:94 +#: netbox/extras/models/models.py:94 msgid "conditions" msgstr "" -#: extras/models/models.py:97 +#: netbox/extras/models/models.py:97 msgid "" "A set of conditions which determine whether the event will be generated." msgstr "" -#: extras/models/models.py:105 +#: netbox/extras/models/models.py:105 msgid "action type" msgstr "" -#: extras/models/models.py:124 +#: netbox/extras/models/models.py:124 msgid "Additional data to pass to the action object" msgstr "" -#: extras/models/models.py:136 +#: netbox/extras/models/models.py:136 msgid "event rule" msgstr "" -#: extras/models/models.py:137 +#: netbox/extras/models/models.py:137 msgid "event rules" msgstr "" -#: extras/models/models.py:153 +#: 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 "" -#: extras/models/models.py:194 +#: netbox/extras/models/models.py:194 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:209 +#: netbox/extras/models/models.py:209 msgid "" "The complete list of official content types is available here." msgstr "" -#: extras/models/models.py:214 +#: netbox/extras/models/models.py:214 msgid "additional headers" msgstr "" -#: extras/models/models.py:217 +#: netbox/extras/models/models.py:217 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: " @@ -7362,11 +7853,11 @@ msgid "" "as the request body (below)." msgstr "" -#: extras/models/models.py:223 +#: netbox/extras/models/models.py:223 msgid "body template" msgstr "" -#: extras/models/models.py:226 +#: netbox/extras/models/models.py:226 msgid "" "Jinja2 template for a custom request body. If blank, a JSON object " "representing the change will be included. Available context data includes: " @@ -7374,4044 +7865,4166 @@ msgid "" "username, request_id, and data." msgstr "" -#: extras/models/models.py:232 +#: netbox/extras/models/models.py:232 msgid "secret" msgstr "" -#: extras/models/models.py:236 +#: netbox/extras/models/models.py:236 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:243 +#: netbox/extras/models/models.py:243 msgid "Enable SSL certificate verification. Disable with caution!" msgstr "" -#: extras/models/models.py:249 templates/extras/webhook.html:51 +#: netbox/extras/models/models.py:249 netbox/templates/extras/webhook.html:51 msgid "CA File Path" msgstr "" -#: extras/models/models.py:251 +#: netbox/extras/models/models.py:251 msgid "" "The specific CA certificate file to use for SSL verification. Leave blank to " "use the system defaults." msgstr "" -#: extras/models/models.py:262 +#: netbox/extras/models/models.py:262 msgid "webhook" msgstr "" -#: extras/models/models.py:263 +#: netbox/extras/models/models.py:263 msgid "webhooks" msgstr "" -#: extras/models/models.py:281 +#: netbox/extras/models/models.py:281 msgid "Do not specify a CA certificate file if SSL verification is disabled." msgstr "" -#: extras/models/models.py:321 +#: netbox/extras/models/models.py:321 msgid "The object type(s) to which this link applies." msgstr "" -#: extras/models/models.py:333 +#: netbox/extras/models/models.py:333 msgid "link text" msgstr "" -#: extras/models/models.py:334 +#: netbox/extras/models/models.py:334 msgid "Jinja2 template code for link text" msgstr "" -#: extras/models/models.py:337 +#: netbox/extras/models/models.py:337 msgid "link URL" msgstr "" -#: extras/models/models.py:338 +#: netbox/extras/models/models.py:338 msgid "Jinja2 template code for link URL" msgstr "" -#: extras/models/models.py:348 +#: netbox/extras/models/models.py:348 msgid "Links with the same group will appear as a dropdown menu" msgstr "" -#: extras/models/models.py:358 +#: netbox/extras/models/models.py:358 msgid "new window" msgstr "" -#: extras/models/models.py:360 +#: netbox/extras/models/models.py:360 msgid "Force link to open in a new window" msgstr "" -#: extras/models/models.py:369 +#: netbox/extras/models/models.py:369 msgid "custom link" msgstr "" -#: extras/models/models.py:370 +#: netbox/extras/models/models.py:370 msgid "custom links" msgstr "" -#: extras/models/models.py:417 +#: netbox/extras/models/models.py:417 msgid "The object type(s) to which this template applies." msgstr "" -#: extras/models/models.py:430 +#: netbox/extras/models/models.py:430 msgid "" "Jinja2 template code. The list of objects being exported is passed as a " "context variable named queryset." msgstr "" -#: extras/models/models.py:438 +#: netbox/extras/models/models.py:438 msgid "Defaults to text/plain; charset=utf-8" msgstr "" -#: extras/models/models.py:441 +#: netbox/extras/models/models.py:441 msgid "file extension" msgstr "" -#: extras/models/models.py:444 +#: netbox/extras/models/models.py:444 msgid "Extension to append to the rendered filename" msgstr "" -#: extras/models/models.py:447 +#: netbox/extras/models/models.py:447 msgid "as attachment" msgstr "" -#: extras/models/models.py:449 +#: netbox/extras/models/models.py:449 msgid "Download file as attachment" msgstr "" -#: extras/models/models.py:458 +#: netbox/extras/models/models.py:458 msgid "export template" msgstr "" -#: extras/models/models.py:459 +#: netbox/extras/models/models.py:459 msgid "export templates" msgstr "" -#: extras/models/models.py:476 +#: netbox/extras/models/models.py:476 #, python-brace-format msgid "\"{name}\" is a reserved name. Please choose a different name." msgstr "" -#: extras/models/models.py:526 +#: netbox/extras/models/models.py:526 msgid "The object type(s) to which this filter applies." msgstr "" -#: extras/models/models.py:558 +#: netbox/extras/models/models.py:558 msgid "shared" msgstr "" -#: extras/models/models.py:571 +#: netbox/extras/models/models.py:571 msgid "saved filter" msgstr "" -#: extras/models/models.py:572 +#: netbox/extras/models/models.py:572 msgid "saved filters" msgstr "" -#: extras/models/models.py:590 +#: netbox/extras/models/models.py:590 msgid "Filter parameters must be stored as a dictionary of keyword arguments." msgstr "" -#: extras/models/models.py:618 +#: netbox/extras/models/models.py:618 msgid "image height" msgstr "" -#: extras/models/models.py:621 +#: netbox/extras/models/models.py:621 msgid "image width" msgstr "" -#: extras/models/models.py:638 +#: netbox/extras/models/models.py:638 msgid "image attachment" msgstr "" -#: extras/models/models.py:639 +#: netbox/extras/models/models.py:639 msgid "image attachments" msgstr "" -#: extras/models/models.py:653 +#: netbox/extras/models/models.py:653 #, python-brace-format msgid "Image attachments cannot be assigned to this object type ({type})." msgstr "" -#: extras/models/models.py:716 +#: netbox/extras/models/models.py:716 msgid "kind" msgstr "" -#: extras/models/models.py:730 +#: netbox/extras/models/models.py:730 msgid "journal entry" msgstr "" -#: extras/models/models.py:731 +#: netbox/extras/models/models.py:731 msgid "journal entries" msgstr "" -#: extras/models/models.py:746 +#: netbox/extras/models/models.py:746 #, python-brace-format msgid "Journaling is not supported for this object type ({type})." msgstr "" -#: extras/models/models.py:788 +#: netbox/extras/models/models.py:788 msgid "bookmark" msgstr "" -#: extras/models/models.py:789 +#: netbox/extras/models/models.py:789 msgid "bookmarks" msgstr "" -#: extras/models/models.py:802 +#: netbox/extras/models/models.py:802 #, python-brace-format msgid "Bookmarks cannot be assigned to this object type ({type})." 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:439 +#: netbox/extras/scripts.py:439 msgid "Script Data" msgstr "" -#: extras/scripts.py:443 +#: netbox/extras/scripts.py:443 msgid "Script Execution Parameters" msgstr "" -#: extras/scripts.py:662 +#: netbox/extras/scripts.py:662 msgid "Database changes have been reverted automatically." msgstr "" -#: extras/scripts.py:675 +#: netbox/extras/scripts.py:675 msgid "Script aborted with error: " msgstr "" -#: extras/scripts.py:685 +#: netbox/extras/scripts.py:685 msgid "An exception occurred: " msgstr "" -#: extras/scripts.py:688 +#: netbox/extras/scripts.py:688 msgid "Database changes have been reverted due to error." msgstr "" -#: extras/signals.py:146 +#: netbox/extras/signals.py:146 #, python-brace-format msgid "Deletion is prevented by a protection rule: {message}" msgstr "" -#: extras/tables/tables.py:46 extras/tables/tables.py:124 -#: extras/tables/tables.py:148 extras/tables/tables.py:213 -#: extras/tables/tables.py:238 extras/tables/tables.py:290 -#: extras/tables/tables.py:336 templates/extras/customfield.html:93 -#: templates/extras/eventrule.html:27 templates/users/objectpermission.html:64 -#: users/tables.py:80 +#: netbox/extras/tables/tables.py:46 netbox/extras/tables/tables.py:124 +#: netbox/extras/tables/tables.py:148 netbox/extras/tables/tables.py:213 +#: netbox/extras/tables/tables.py:238 netbox/extras/tables/tables.py:290 +#: netbox/extras/tables/tables.py:336 +#: netbox/templates/extras/customfield.html:93 +#: 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:52 +#: netbox/extras/tables/tables.py:52 msgid "Visible" msgstr "" -#: extras/tables/tables.py:55 +#: netbox/extras/tables/tables.py:55 msgid "Editable" msgstr "" -#: extras/tables/tables.py:61 +#: netbox/extras/tables/tables.py:61 msgid "Related Object Type" msgstr "" -#: extras/tables/tables.py:65 templates/extras/customfield.html:47 +#: netbox/extras/tables/tables.py:65 +#: netbox/templates/extras/customfield.html:47 msgid "Choice Set" msgstr "" -#: extras/tables/tables.py:73 +#: netbox/extras/tables/tables.py:73 msgid "Is Cloneable" msgstr "" -#: extras/tables/tables.py:103 +#: netbox/extras/tables/tables.py:103 msgid "Count" msgstr "" -#: extras/tables/tables.py:106 +#: netbox/extras/tables/tables.py:106 msgid "Order Alphabetically" msgstr "" -#: extras/tables/tables.py:130 templates/extras/customlink.html:33 +#: netbox/extras/tables/tables.py:130 +#: netbox/templates/extras/customlink.html:33 msgid "New Window" msgstr "" -#: extras/tables/tables.py:151 +#: netbox/extras/tables/tables.py:151 msgid "As Attachment" msgstr "" -#: extras/tables/tables.py:158 extras/tables/tables.py:377 -#: extras/tables/tables.py:412 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:158 netbox/extras/tables/tables.py:377 +#: netbox/extras/tables/tables.py:412 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:163 extras/tables/tables.py:389 -#: extras/tables/tables.py:417 +#: netbox/extras/tables/tables.py:163 netbox/extras/tables/tables.py:389 +#: netbox/extras/tables/tables.py:417 msgid "Synced" msgstr "" -#: extras/tables/tables.py:190 +#: netbox/extras/tables/tables.py:190 msgid "Image" msgstr "" -#: extras/tables/tables.py:195 +#: netbox/extras/tables/tables.py:195 msgid "Size (Bytes)" msgstr "" -#: extras/tables/tables.py:260 +#: netbox/extras/tables/tables.py:260 msgid "SSL Validation" msgstr "" -#: extras/tables/tables.py:305 +#: netbox/extras/tables/tables.py:305 msgid "Job Start" msgstr "" -#: extras/tables/tables.py:308 +#: netbox/extras/tables/tables.py:308 msgid "Job End" msgstr "" -#: extras/tables/tables.py:425 netbox/navigation/menu.py:64 -#: templates/dcim/devicerole.html:8 +#: netbox/extras/tables/tables.py:425 netbox/netbox/navigation/menu.py:64 +#: netbox/templates/dcim/devicerole.html:8 msgid "Device Roles" msgstr "" -#: extras/tables/tables.py:466 templates/account/profile.html:19 -#: templates/users/user.html:21 +#: netbox/extras/tables/tables.py:466 netbox/templates/account/profile.html:19 +#: netbox/templates/users/user.html:21 msgid "Full Name" msgstr "" -#: extras/tables/tables.py:483 templates/extras/objectchange.html:67 +#: netbox/extras/tables/tables.py:483 +#: netbox/templates/extras/objectchange.html:67 msgid "Request ID" msgstr "" -#: extras/tables/tables.py:520 +#: netbox/extras/tables/tables.py:520 msgid "Comments (Short)" msgstr "" -#: extras/tables/tables.py:539 extras/tables/tables.py:561 +#: netbox/extras/tables/tables.py:539 netbox/extras/tables/tables.py:561 msgid "Line" msgstr "" -#: extras/tables/tables.py:546 extras/tables/tables.py:571 +#: netbox/extras/tables/tables.py:546 netbox/extras/tables/tables.py:571 msgid "Level" msgstr "" -#: extras/tables/tables.py:549 extras/tables/tables.py:580 +#: netbox/extras/tables/tables.py:549 netbox/extras/tables/tables.py:580 msgid "Message" msgstr "" -#: extras/tables/tables.py:564 +#: netbox/extras/tables/tables.py:564 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:140 +#: netbox/extras/validators.py:140 #, python-brace-format msgid "Invalid attribute \"{name}\" for request" msgstr "" -#: extras/validators.py:157 +#: netbox/extras/validators.py:157 #, python-brace-format msgid "Invalid attribute \"{name}\" for {model}" msgstr "" -#: extras/views.py:889 +#: netbox/extras/views.py:889 msgid "Your dashboard has been reset." msgstr "" -#: extras/views.py:935 +#: netbox/extras/views.py:935 msgid "Added widget: " msgstr "" -#: extras/views.py:976 +#: netbox/extras/views.py:976 msgid "Updated widget: " msgstr "" -#: extras/views.py:1012 +#: netbox/extras/views.py:1012 msgid "Deleted widget: " msgstr "" -#: extras/views.py:1014 +#: netbox/extras/views.py:1014 msgid "Error deleting widget: " msgstr "" -#: extras/views.py:1101 +#: netbox/extras/views.py:1101 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:90 tenancy/choices.py:18 +#: netbox/ipam/choices.py:90 netbox/tenancy/choices.py:18 msgid "Secondary" 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:323 +#: netbox/ipam/filtersets.py:48 netbox/vpn/filtersets.py:323 msgid "Import target" msgstr "" -#: ipam/filtersets.py:54 vpn/filtersets.py:329 +#: netbox/ipam/filtersets.py:54 netbox/vpn/filtersets.py:329 msgid "Import target (name)" msgstr "" -#: ipam/filtersets.py:59 vpn/filtersets.py:334 +#: netbox/ipam/filtersets.py:59 netbox/vpn/filtersets.py:334 msgid "Export target" msgstr "" -#: ipam/filtersets.py:65 vpn/filtersets.py:340 +#: netbox/ipam/filtersets.py:65 netbox/vpn/filtersets.py:340 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:227 -#: ipam/tables/ip.py:211 templates/ipam/prefix.html:12 +#: netbox/ipam/filtersets.py:155 netbox/ipam/filtersets.py:281 +#: netbox/ipam/forms/model_forms.py:227 netbox/ipam/tables/ip.py:211 +#: 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:327 -#: 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:327 netbox/ipam/forms/filtersets.py:196 +#: netbox/ipam/forms/filtersets.py:331 msgid "Mask length" msgstr "" -#: ipam/filtersets.py:373 vpn/filtersets.py:446 +#: netbox/ipam/filtersets.py:373 netbox/vpn/filtersets.py:446 msgid "VLAN (ID)" msgstr "" -#: ipam/filtersets.py:377 vpn/filtersets.py:441 +#: netbox/ipam/filtersets.py:377 netbox/vpn/filtersets.py:441 msgid "VLAN number (1-4094)" msgstr "" -#: ipam/filtersets.py:471 ipam/filtersets.py:475 ipam/filtersets.py:567 -#: ipam/forms/model_forms.py:461 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:461 +#: 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:1091 -#: vpn/filtersets.py:404 +#: netbox/ipam/filtersets.py:616 netbox/ipam/filtersets.py:856 +#: netbox/ipam/filtersets.py:1091 netbox/vpn/filtersets.py:404 msgid "Virtual machine (name)" msgstr "" -#: ipam/filtersets.py:621 ipam/filtersets.py:861 ipam/filtersets.py:1085 -#: virtualization/filtersets.py:278 virtualization/filtersets.py:317 -#: vpn/filtersets.py:409 +#: 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 msgid "Virtual machine (ID)" msgstr "" -#: ipam/filtersets.py:627 vpn/filtersets.py:97 vpn/filtersets.py:415 +#: netbox/ipam/filtersets.py:627 netbox/vpn/filtersets.py:97 +#: netbox/vpn/filtersets.py:415 msgid "Interface (name)" msgstr "" -#: ipam/filtersets.py:638 vpn/filtersets.py:108 vpn/filtersets.py:426 +#: netbox/ipam/filtersets.py:638 netbox/vpn/filtersets.py:108 +#: netbox/vpn/filtersets.py:426 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:1096 +#: netbox/ipam/filtersets.py:1096 msgid "IP address (ID)" msgstr "" -#: ipam/filtersets.py:1102 ipam/models/ip.py:788 +#: netbox/ipam/filtersets.py:1102 netbox/ipam/models/ip.py:788 msgid "IP address" msgstr "" -#: ipam/filtersets.py:1131 +#: netbox/ipam/filtersets.py:1131 msgid "Primary IPv4 (ID)" msgstr "" -#: ipam/filtersets.py:1136 +#: netbox/ipam/filtersets.py:1136 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:48 +#: netbox/ipam/forms/bulk_edit.py:48 msgid "Enforce unique space" msgstr "" -#: ipam/forms/bulk_edit.py:86 +#: netbox/ipam/forms/bulk_edit.py:86 msgid "Is private" msgstr "" -#: ipam/forms/bulk_edit.py:107 ipam/forms/bulk_edit.py:136 -#: ipam/forms/bulk_edit.py:161 ipam/forms/bulk_import.py:88 -#: ipam/forms/bulk_import.py:108 ipam/forms/bulk_import.py:128 -#: ipam/forms/filtersets.py:110 ipam/forms/filtersets.py:125 -#: ipam/forms/filtersets.py:148 ipam/forms/model_forms.py:94 -#: ipam/forms/model_forms.py:107 ipam/forms/model_forms.py:129 -#: ipam/forms/model_forms.py:147 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: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/filtersets.py:110 netbox/ipam/forms/filtersets.py:125 +#: netbox/ipam/forms/filtersets.py:148 netbox/ipam/forms/model_forms.py:94 +#: netbox/ipam/forms/model_forms.py:107 netbox/ipam/forms/model_forms.py:129 +#: netbox/ipam/forms/model_forms.py:147 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:169 +#: netbox/ipam/forms/bulk_edit.py:169 msgid "Date added" msgstr "" -#: ipam/forms/bulk_edit.py:230 +#: netbox/ipam/forms/bulk_edit.py:230 msgid "Prefix length" msgstr "" -#: ipam/forms/bulk_edit.py:253 ipam/forms/filtersets.py:241 -#: templates/ipam/prefix.html:85 +#: netbox/ipam/forms/bulk_edit.py:253 netbox/ipam/forms/filtersets.py:241 +#: netbox/templates/ipam/prefix.html:85 msgid "Is a pool" msgstr "" -#: ipam/forms/bulk_edit.py:258 ipam/forms/bulk_edit.py:302 -#: 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:258 netbox/ipam/forms/bulk_edit.py:302 +#: 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:350 ipam/models/ip.py:772 +#: netbox/ipam/forms/bulk_edit.py:350 netbox/ipam/models/ip.py:772 msgid "DNS name" msgstr "" -#: ipam/forms/bulk_edit.py:371 ipam/forms/bulk_edit.py:572 -#: ipam/forms/bulk_import.py:393 ipam/forms/bulk_import.py:477 -#: ipam/forms/bulk_import.py:503 ipam/forms/filtersets.py:390 -#: ipam/forms/filtersets.py:537 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:371 netbox/ipam/forms/bulk_edit.py:572 +#: 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/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:378 ipam/forms/filtersets.py:397 -#: ipam/tables/fhrp.py:22 templates/ipam/fhrpgroup.html:26 +#: netbox/ipam/forms/bulk_edit.py:378 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:383 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:383 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:388 ipam/forms/filtersets.py:406 +#: netbox/ipam/forms/bulk_edit.py:388 netbox/ipam/forms/filtersets.py:406 msgid "Authentication key" msgstr "" -#: ipam/forms/bulk_edit.py:405 ipam/forms/filtersets.py:383 -#: ipam/forms/model_forms.py:472 netbox/navigation/menu.py:370 -#: templates/ipam/fhrpgroup.html:49 -#: templates/wireless/inc/authentication_attrs.html:5 -#: wireless/forms/bulk_edit.py:91 wireless/forms/bulk_edit.py:138 -#: wireless/forms/filtersets.py:36 wireless/forms/filtersets.py:76 -#: wireless/forms/model_forms.py:55 wireless/forms/model_forms.py:164 +#: netbox/ipam/forms/bulk_edit.py:405 netbox/ipam/forms/filtersets.py:383 +#: netbox/ipam/forms/model_forms.py:472 netbox/netbox/navigation/menu.py:370 +#: 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/filtersets.py:36 +#: netbox/wireless/forms/filtersets.py:76 +#: netbox/wireless/forms/model_forms.py:55 +#: netbox/wireless/forms/model_forms.py:164 msgid "Authentication" msgstr "" -#: ipam/forms/bulk_edit.py:415 +#: netbox/ipam/forms/bulk_edit.py:415 msgid "Minimum child VLAN VID" msgstr "" -#: ipam/forms/bulk_edit.py:421 +#: netbox/ipam/forms/bulk_edit.py:421 msgid "Maximum child VLAN VID" msgstr "" -#: ipam/forms/bulk_edit.py:429 ipam/forms/model_forms.py:566 +#: netbox/ipam/forms/bulk_edit.py:429 netbox/ipam/forms/model_forms.py:566 msgid "Scope type" msgstr "" -#: ipam/forms/bulk_edit.py:491 ipam/forms/model_forms.py:641 -#: ipam/tables/vlans.py:71 templates/ipam/vlangroup.html:38 +#: netbox/ipam/forms/bulk_edit.py:491 netbox/ipam/forms/model_forms.py:641 +#: netbox/ipam/tables/vlans.py:71 netbox/templates/ipam/vlangroup.html:38 msgid "Scope" msgstr "" -#: ipam/forms/bulk_edit.py:563 +#: netbox/ipam/forms/bulk_edit.py:563 msgid "Site & Group" msgstr "" -#: ipam/forms/bulk_edit.py:577 ipam/forms/model_forms.py:705 -#: ipam/forms/model_forms.py:737 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:577 netbox/ipam/forms/model_forms.py:705 +#: netbox/ipam/forms/model_forms.py:737 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:47 +#: netbox/ipam/forms/bulk_import.py:47 msgid "Import route targets" msgstr "" -#: ipam/forms/bulk_import.py:53 +#: netbox/ipam/forms/bulk_import.py:53 msgid "Export route targets" msgstr "" -#: ipam/forms/bulk_import.py:91 ipam/forms/bulk_import.py:111 -#: ipam/forms/bulk_import.py:131 +#: netbox/ipam/forms/bulk_import.py:91 netbox/ipam/forms/bulk_import.py:111 +#: netbox/ipam/forms/bulk_import.py:131 msgid "Assigned RIR" msgstr "" -#: ipam/forms/bulk_import.py:181 +#: netbox/ipam/forms/bulk_import.py:181 msgid "VLAN's group (if any)" msgstr "" -#: ipam/forms/bulk_import.py:184 ipam/forms/filtersets.py:256 -#: ipam/forms/model_forms.py:216 ipam/models/vlans.py:214 ipam/tables/ip.py:254 -#: 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:101 +#: netbox/ipam/forms/bulk_import.py:184 netbox/ipam/forms/filtersets.py:256 +#: netbox/ipam/forms/model_forms.py:216 netbox/ipam/models/vlans.py:214 +#: netbox/ipam/tables/ip.py:254 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:101 msgid "VLAN" msgstr "" -#: ipam/forms/bulk_import.py:307 +#: netbox/ipam/forms/bulk_import.py:307 msgid "Parent device of assigned interface (if any)" msgstr "" -#: ipam/forms/bulk_import.py:310 ipam/forms/bulk_import.py:496 -#: ipam/forms/model_forms.py:731 virtualization/filtersets.py:284 -#: virtualization/filtersets.py:323 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:208 -#: virtualization/forms/filtersets.py:244 -#: virtualization/forms/model_forms.py:288 vpn/forms/bulk_import.py:93 -#: vpn/forms/bulk_import.py:290 +#: netbox/ipam/forms/bulk_import.py:310 netbox/ipam/forms/bulk_import.py:496 +#: netbox/ipam/forms/model_forms.py:731 netbox/virtualization/filtersets.py:284 +#: netbox/virtualization/filtersets.py:323 +#: 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/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:314 +#: netbox/ipam/forms/bulk_import.py:314 msgid "Parent VM of assigned interface (if any)" msgstr "" -#: ipam/forms/bulk_import.py:321 +#: netbox/ipam/forms/bulk_import.py:321 msgid "Assigned interface" msgstr "" -#: ipam/forms/bulk_import.py:324 +#: netbox/ipam/forms/bulk_import.py:324 msgid "Is primary" msgstr "" -#: ipam/forms/bulk_import.py:325 +#: netbox/ipam/forms/bulk_import.py:325 msgid "Make this the primary IP for the assigned device" msgstr "" -#: ipam/forms/bulk_import.py:364 +#: netbox/ipam/forms/bulk_import.py:364 msgid "No device or virtual machine specified; cannot set as primary IP" msgstr "" -#: ipam/forms/bulk_import.py:368 +#: netbox/ipam/forms/bulk_import.py:368 msgid "No interface specified; cannot set as primary IP" msgstr "" -#: ipam/forms/bulk_import.py:397 +#: netbox/ipam/forms/bulk_import.py:397 msgid "Auth type" msgstr "" -#: ipam/forms/bulk_import.py:412 +#: netbox/ipam/forms/bulk_import.py:412 msgid "Scope type (app & model)" msgstr "" -#: ipam/forms/bulk_import.py:418 +#: netbox/ipam/forms/bulk_import.py:418 #, python-brace-format msgid "Minimum child VLAN VID (default: {minimum})" msgstr "" -#: ipam/forms/bulk_import.py:424 +#: netbox/ipam/forms/bulk_import.py:424 #, python-brace-format msgid "Maximum child VLAN VID (default: {maximum})" msgstr "" -#: ipam/forms/bulk_import.py:448 +#: netbox/ipam/forms/bulk_import.py:448 msgid "Assigned VLAN group" msgstr "" -#: ipam/forms/bulk_import.py:479 ipam/forms/bulk_import.py:505 +#: netbox/ipam/forms/bulk_import.py:479 netbox/ipam/forms/bulk_import.py:505 msgid "IP protocol" msgstr "" -#: ipam/forms/bulk_import.py:493 +#: netbox/ipam/forms/bulk_import.py:493 msgid "Required if not assigned to a VM" msgstr "" -#: ipam/forms/bulk_import.py:500 +#: netbox/ipam/forms/bulk_import.py:500 msgid "Required if not assigned to a device" msgstr "" -#: ipam/forms/bulk_import.py:525 +#: netbox/ipam/forms/bulk_import.py:525 #, python-brace-format msgid "{ip} is not assigned to this device/VM." msgstr "" -#: ipam/forms/filtersets.py:47 ipam/forms/model_forms.py:61 -#: netbox/navigation/menu.py:176 vpn/forms/model_forms.py:410 +#: netbox/ipam/forms/filtersets.py:47 netbox/ipam/forms/model_forms.py:61 +#: netbox/netbox/navigation/menu.py:176 netbox/vpn/forms/model_forms.py:410 msgid "Route Targets" msgstr "" -#: ipam/forms/filtersets.py:53 ipam/forms/model_forms.py:48 -#: vpn/forms/filtersets.py:224 vpn/forms/model_forms.py:397 +#: netbox/ipam/forms/filtersets.py:53 netbox/ipam/forms/model_forms.py:48 +#: 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:53 -#: vpn/forms/filtersets.py:229 vpn/forms/model_forms.py:402 +#: netbox/ipam/forms/filtersets.py:58 netbox/ipam/forms/model_forms.py:53 +#: 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:171 +#: netbox/ipam/forms/filtersets.py:171 msgid "VLAN Assignment" 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/forms/filtersets.py:520 -#: ipam/models/vlans.py:156 templates/ipam/vlan.html:31 +#: 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 "" -#: ipam/forms/filtersets.py:448 +#: netbox/ipam/forms/filtersets.py:448 msgid "Minimum VID" msgstr "" -#: ipam/forms/filtersets.py:454 +#: netbox/ipam/forms/filtersets.py:454 msgid "Maximum VID" msgstr "" -#: ipam/forms/filtersets.py:563 ipam/forms/model_forms.py:318 -#: ipam/forms/model_forms.py:759 ipam/forms/model_forms.py:785 -#: ipam/tables/vlans.py:191 templates/virtualization/virtualdisk.html:21 -#: templates/virtualization/virtualmachine.html:12 -#: templates/virtualization/vminterface.html:21 -#: templates/vpn/tunneltermination.html:25 -#: virtualization/forms/filtersets.py:193 -#: virtualization/forms/filtersets.py:238 -#: virtualization/forms/model_forms.py:220 -#: virtualization/tables/virtualmachines.py:128 -#: virtualization/tables/virtualmachines.py:181 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:563 netbox/ipam/forms/model_forms.py:318 +#: netbox/ipam/forms/model_forms.py:759 netbox/ipam/forms/model_forms.py:785 +#: netbox/ipam/tables/vlans.py:191 +#: 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/model_forms.py:220 +#: netbox/virtualization/tables/virtualmachines.py:128 +#: netbox/virtualization/tables/virtualmachines.py:181 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:78 templates/ipam/routetarget.html:10 +#: netbox/ipam/forms/model_forms.py:78 +#: netbox/templates/ipam/routetarget.html:10 msgid "Route Target" msgstr "" -#: ipam/forms/model_forms.py:112 ipam/tables/ip.py:116 -#: templates/ipam/aggregate.html:11 templates/ipam/prefix.html:38 +#: netbox/ipam/forms/model_forms.py:112 netbox/ipam/tables/ip.py:116 +#: netbox/templates/ipam/aggregate.html:11 netbox/templates/ipam/prefix.html:38 msgid "Aggregate" msgstr "" -#: ipam/forms/model_forms.py:133 templates/ipam/asnrange.html:12 +#: netbox/ipam/forms/model_forms.py:133 netbox/templates/ipam/asnrange.html:12 msgid "ASN Range" msgstr "" -#: ipam/forms/model_forms.py:229 +#: netbox/ipam/forms/model_forms.py:229 msgid "Site/VLAN Assignment" msgstr "" -#: ipam/forms/model_forms.py:257 templates/ipam/iprange.html:10 +#: netbox/ipam/forms/model_forms.py:257 netbox/templates/ipam/iprange.html:10 msgid "IP Range" msgstr "" -#: ipam/forms/model_forms.py:293 ipam/forms/model_forms.py:319 -#: ipam/forms/model_forms.py:471 templates/ipam/fhrpgroup.html:19 +#: netbox/ipam/forms/model_forms.py:293 netbox/ipam/forms/model_forms.py:319 +#: netbox/ipam/forms/model_forms.py:471 netbox/templates/ipam/fhrpgroup.html:19 msgid "FHRP Group" msgstr "" -#: ipam/forms/model_forms.py:308 +#: netbox/ipam/forms/model_forms.py:308 msgid "Make this the primary IP for the device/VM" msgstr "" -#: ipam/forms/model_forms.py:323 +#: netbox/ipam/forms/model_forms.py:323 msgid "NAT IP (Inside)" msgstr "" -#: ipam/forms/model_forms.py:382 +#: netbox/ipam/forms/model_forms.py:382 msgid "An IP address can only be assigned to a single object." msgstr "" -#: ipam/forms/model_forms.py:388 ipam/models/ip.py:897 +#: netbox/ipam/forms/model_forms.py:388 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:398 +#: netbox/ipam/forms/model_forms.py:398 msgid "" "Only IP addresses assigned to an interface can be designated as primary IPs." msgstr "" -#: ipam/forms/model_forms.py:473 +#: netbox/ipam/forms/model_forms.py:473 msgid "Virtual IP Address" msgstr "" -#: ipam/forms/model_forms.py:558 +#: netbox/ipam/forms/model_forms.py:558 msgid "Assignment already exists" msgstr "" -#: ipam/forms/model_forms.py:637 ipam/forms/model_forms.py:679 -#: ipam/tables/ip.py:250 templates/ipam/vlan_edit.html:37 -#: templates/ipam/vlangroup.html:27 +#: netbox/ipam/forms/model_forms.py:637 netbox/ipam/forms/model_forms.py:679 +#: netbox/ipam/tables/ip.py:250 netbox/templates/ipam/vlan_edit.html:37 +#: netbox/templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "" -#: ipam/forms/model_forms.py:638 +#: netbox/ipam/forms/model_forms.py:638 msgid "Child VLANs" msgstr "" -#: ipam/forms/model_forms.py:710 ipam/forms/model_forms.py:742 +#: netbox/ipam/forms/model_forms.py:710 netbox/ipam/forms/model_forms.py:742 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." msgstr "" -#: ipam/forms/model_forms.py:715 templates/ipam/servicetemplate.html:12 +#: netbox/ipam/forms/model_forms.py:715 +#: netbox/templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "" -#: ipam/forms/model_forms.py:762 +#: netbox/ipam/forms/model_forms.py:762 msgid "Port(s)" msgstr "" -#: ipam/forms/model_forms.py:763 ipam/forms/model_forms.py:791 -#: templates/ipam/service.html:21 +#: netbox/ipam/forms/model_forms.py:763 netbox/ipam/forms/model_forms.py:791 +#: netbox/templates/ipam/service.html:21 msgid "Service" msgstr "" -#: ipam/forms/model_forms.py:776 +#: netbox/ipam/forms/model_forms.py:776 msgid "Service template" msgstr "" -#: ipam/forms/model_forms.py:788 +#: netbox/ipam/forms/model_forms.py:788 msgid "From Template" msgstr "" -#: ipam/forms/model_forms.py:789 +#: netbox/ipam/forms/model_forms.py:789 msgid "Custom" msgstr "" -#: ipam/forms/model_forms.py:819 +#: netbox/ipam/forms/model_forms.py:819 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:21 +#: netbox/ipam/models/fhrp.py:30 netbox/ipam/models/services.py:22 msgid "protocol" msgstr "" -#: ipam/models/fhrp.py:38 wireless/models.py:27 +#: netbox/ipam/models/fhrp.py:38 netbox/wireless/models.py:27 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:93 tenancy/models/contacts.py:134 +#: netbox/ipam/models/fhrp.py:93 netbox/tenancy/models/contacts.py:134 msgid "priority" 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:169 +#: netbox/ipam/models/ip.py:72 netbox/netbox/navigation/menu.py:169 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:93 +#: 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:32 +#: netbox/ipam/models/services.py:33 msgid "port numbers" msgstr "" -#: ipam/models/services.py:58 +#: netbox/ipam/models/services.py:59 msgid "service template" msgstr "" -#: ipam/models/services.py:59 +#: netbox/ipam/models/services.py:60 msgid "service templates" msgstr "" -#: ipam/models/services.py:94 +#: netbox/ipam/models/services.py:95 msgid "The specific IP addresses (if any) to which this service is bound" msgstr "" -#: ipam/models/services.py:101 +#: netbox/ipam/models/services.py:102 msgid "service" msgstr "" -#: ipam/models/services.py:102 +#: netbox/ipam/models/services.py:103 msgid "services" msgstr "" -#: ipam/models/services.py:116 +#: 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:118 +#: 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:49 +#: netbox/ipam/models/vlans.py:49 msgid "minimum VLAN ID" msgstr "" -#: ipam/models/vlans.py:55 +#: netbox/ipam/models/vlans.py:55 msgid "Lowest permissible ID of a child VLAN" msgstr "" -#: ipam/models/vlans.py:58 +#: netbox/ipam/models/vlans.py:58 msgid "maximum VLAN ID" msgstr "" -#: ipam/models/vlans.py:64 +#: netbox/ipam/models/vlans.py:64 msgid "Highest permissible ID of a child VLAN" 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:102 +#: netbox/ipam/models/vlans.py:102 msgid "Maximum child VID must be greater than or equal to minimum child VID" msgstr "" -#: ipam/models/vlans.py:145 +#: netbox/ipam/models/vlans.py:145 msgid "The specific site to which this VLAN is assigned (if any)" msgstr "" -#: ipam/models/vlans.py:153 +#: netbox/ipam/models/vlans.py:153 msgid "VLAN group (optional)" msgstr "" -#: ipam/models/vlans.py:161 +#: netbox/ipam/models/vlans.py:161 msgid "Numeric VLAN ID (1-4094)" msgstr "" -#: ipam/models/vlans.py:179 +#: netbox/ipam/models/vlans.py:179 msgid "Operational status of this VLAN" msgstr "" -#: ipam/models/vlans.py:187 +#: netbox/ipam/models/vlans.py:187 msgid "The primary function of this VLAN" msgstr "" -#: ipam/models/vlans.py:215 ipam/tables/ip.py:175 ipam/tables/vlans.py:78 -#: ipam/views.py:978 netbox/navigation/menu.py:180 -#: netbox/navigation/menu.py:182 +#: netbox/ipam/models/vlans.py:215 netbox/ipam/tables/ip.py:175 +#: netbox/ipam/tables/vlans.py:78 netbox/ipam/views.py:978 +#: netbox/netbox/navigation/menu.py:180 netbox/netbox/navigation/menu.py:182 msgid "VLANs" msgstr "" -#: ipam/models/vlans.py:230 +#: netbox/ipam/models/vlans.py:230 #, python-brace-format msgid "" "VLAN is assigned to group {group} (scope: {scope}); cannot also assign to " "site {site}." msgstr "" -#: ipam/models/vlans.py:238 +#: netbox/ipam/models/vlans.py:238 #, python-brace-format msgid "VID must be between {minimum} and {maximum} 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:173 -#: netbox/navigation/menu.py:175 +#: netbox/ipam/models/vrfs.py:63 netbox/netbox/navigation/menu.py:173 +#: netbox/netbox/navigation/menu.py:175 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:94 netbox/navigation/menu.py:166 -#: netbox/navigation/menu.py:168 +#: netbox/ipam/tables/ip.py:94 netbox/netbox/navigation/menu.py:166 +#: netbox/netbox/navigation/menu.py:168 msgid "Aggregates" msgstr "" -#: ipam/tables/ip.py:124 +#: netbox/ipam/tables/ip.py:124 msgid "Added" msgstr "" -#: ipam/tables/ip.py:127 ipam/tables/ip.py:165 ipam/tables/vlans.py:138 -#: ipam/views.py:349 netbox/navigation/menu.py:152 -#: netbox/navigation/menu.py:154 templates/ipam/vlan.html:84 +#: netbox/ipam/tables/ip.py:127 netbox/ipam/tables/ip.py:165 +#: netbox/ipam/tables/vlans.py:138 netbox/ipam/views.py:349 +#: netbox/netbox/navigation/menu.py:152 netbox/netbox/navigation/menu.py:154 +#: netbox/templates/ipam/vlan.html:84 msgid "Prefixes" msgstr "" -#: ipam/tables/ip.py:130 ipam/tables/ip.py:267 ipam/tables/ip.py:320 -#: ipam/tables/vlans.py:82 templates/dcim/device.html:252 -#: templates/ipam/aggregate.html:24 templates/ipam/iprange.html:29 -#: templates/ipam/prefix.html:106 +#: netbox/ipam/tables/ip.py:130 netbox/ipam/tables/ip.py:267 +#: netbox/ipam/tables/ip.py:320 netbox/ipam/tables/vlans.py:82 +#: netbox/templates/dcim/device.html:253 +#: 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:170 netbox/navigation/menu.py:148 +#: netbox/ipam/tables/ip.py:170 netbox/netbox/navigation/menu.py:148 msgid "IP Ranges" msgstr "" -#: ipam/tables/ip.py:220 +#: netbox/ipam/tables/ip.py:220 msgid "Prefix (Flat)" msgstr "" -#: ipam/tables/ip.py:224 +#: netbox/ipam/tables/ip.py:224 msgid "Depth" msgstr "" -#: ipam/tables/ip.py:261 +#: netbox/ipam/tables/ip.py:261 msgid "Pool" msgstr "" -#: ipam/tables/ip.py:264 ipam/tables/ip.py:317 +#: netbox/ipam/tables/ip.py:264 netbox/ipam/tables/ip.py:317 msgid "Marked Utilized" msgstr "" -#: ipam/tables/ip.py:301 +#: netbox/ipam/tables/ip.py:301 msgid "Start address" msgstr "" -#: ipam/tables/ip.py:379 +#: netbox/ipam/tables/ip.py:379 msgid "NAT (Inside)" msgstr "" -#: ipam/tables/ip.py:384 +#: netbox/ipam/tables/ip.py:384 msgid "NAT (Outside)" msgstr "" -#: ipam/tables/ip.py:389 +#: netbox/ipam/tables/ip.py:389 msgid "Assigned" msgstr "" -#: ipam/tables/ip.py:424 templates/vpn/l2vpntermination.html:16 -#: vpn/forms/filtersets.py:240 +#: netbox/ipam/tables/ip.py:424 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:107 ipam/tables/vlans.py:210 -#: templates/dcim/inc/interface_vlans_table.html:4 +#: netbox/ipam/tables/vlans.py:107 netbox/ipam/tables/vlans.py:210 +#: 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:36 vpn/tables/l2vpn.py:27 +#: netbox/ipam/tables/vrfs.py:36 netbox/vpn/tables/l2vpn.py:27 msgid "Import Targets" msgstr "" -#: ipam/tables/vrfs.py:41 vpn/tables/l2vpn.py:32 +#: netbox/ipam/tables/vrfs.py:41 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:541 +#: netbox/ipam/views.py:541 msgid "Child Prefixes" msgstr "" -#: ipam/views.py:576 +#: netbox/ipam/views.py:576 msgid "Child Ranges" msgstr "" -#: ipam/views.py:902 +#: netbox/ipam/views.py:902 msgid "Related IPs" msgstr "" -#: ipam/views.py:1133 +#: netbox/ipam/views.py:1133 msgid "Device Interfaces" msgstr "" -#: ipam/views.py:1150 +#: netbox/ipam/views.py:1150 msgid "VM Interfaces" msgstr "" -#: netbox/api/fields.py:63 +#: netbox/netbox/api/fields.py:63 msgid "This field may not be blank." msgstr "" -#: netbox/api/fields.py:68 +#: netbox/netbox/api/fields.py:68 msgid "" "Value must be passed directly (e.g. \"foo\": 123); do not use a dictionary " "or list." msgstr "" -#: netbox/api/fields.py:89 +#: netbox/netbox/api/fields.py:89 #, python-brace-format msgid "{value} is not a valid choice." msgstr "" -#: netbox/api/fields.py:102 +#: netbox/netbox/api/fields.py:102 #, python-brace-format msgid "Invalid content type: {content_type}" msgstr "" -#: netbox/api/fields.py:103 +#: netbox/netbox/api/fields.py:103 msgid "Invalid value. Specify a content type as '.'." 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:131 +#: netbox/netbox/choices.py:131 msgid "Direct" msgstr "" -#: netbox/choices.py:132 +#: netbox/netbox/choices.py:132 msgid "Upload" msgstr "" -#: netbox/choices.py:144 netbox/choices.py:158 +#: netbox/netbox/choices.py:144 netbox/netbox/choices.py:158 msgid "Auto-detect" msgstr "" -#: netbox/choices.py:159 +#: netbox/netbox/choices.py:159 msgid "Comma" msgstr "" -#: netbox/choices.py:160 +#: netbox/netbox/choices.py:160 msgid "Semicolon" msgstr "" -#: netbox/choices.py:161 +#: netbox/netbox/choices.py:161 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/base.py:88 +#: netbox/netbox/forms/base.py:88 msgid "" "Tag slugs separated by commas, encased with double quotes (e.g. \"tag1,tag2," "tag3\")" msgstr "" -#: netbox/forms/base.py:118 +#: netbox/netbox/forms/base.py:118 msgid "Add tags" msgstr "" -#: netbox/forms/base.py:123 +#: netbox/netbox/forms/base.py:123 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:277 +#: netbox/netbox/models/features.py:277 #, python-brace-format msgid "Unknown field name '{name}' in custom field data." msgstr "" -#: netbox/models/features.py:283 +#: netbox/netbox/models/features.py:283 #, python-brace-format msgid "Invalid value for custom field '{name}': {error}" msgstr "" -#: netbox/models/features.py:290 +#: netbox/netbox/models/features.py:290 #, python-brace-format msgid "Missing required custom field '{name}'." msgstr "" -#: netbox/models/features.py:441 +#: netbox/netbox/models/features.py:441 msgid "Remote data source" msgstr "" -#: netbox/models/features.py:451 +#: netbox/netbox/models/features.py:451 msgid "data path" msgstr "" -#: netbox/models/features.py:455 +#: netbox/netbox/models/features.py:455 msgid "Path to remote file (relative to data source root)" msgstr "" -#: netbox/models/features.py:458 +#: netbox/netbox/models/features.py:458 msgid "auto sync enabled" msgstr "" -#: netbox/models/features.py:460 +#: netbox/netbox/models/features.py:460 msgid "Enable automatic synchronization of data when the data file is updated" msgstr "" -#: netbox/models/features.py:463 +#: netbox/netbox/models/features.py:463 msgid "date synced" msgstr "" -#: netbox/models/features.py:557 +#: netbox/netbox/models/features.py:557 #, 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 "Rack Roles" msgstr "" -#: netbox/navigation/menu.py:31 +#: netbox/netbox/navigation/menu.py:31 msgid "Elevations" msgstr "" -#: netbox/navigation/menu.py:40 +#: netbox/netbox/navigation/menu.py:40 msgid "Tenant Groups" msgstr "" -#: netbox/navigation/menu.py:47 +#: netbox/netbox/navigation/menu.py:47 msgid "Contact Groups" msgstr "" -#: netbox/navigation/menu.py:48 templates/tenancy/contactrole.html:8 +#: netbox/netbox/navigation/menu.py:48 +#: netbox/templates/tenancy/contactrole.html:8 msgid "Contact Roles" msgstr "" -#: netbox/navigation/menu.py:49 +#: netbox/netbox/navigation/menu.py:49 msgid "Contact Assignments" msgstr "" -#: netbox/navigation/menu.py:63 +#: netbox/netbox/navigation/menu.py:63 msgid "Modules" msgstr "" -#: netbox/navigation/menu.py:67 templates/dcim/device.html:157 -#: templates/dcim/virtualdevicecontext.html:8 +#: netbox/netbox/navigation/menu.py:67 netbox/templates/dcim/device.html:158 +#: netbox/templates/dcim/virtualdevicecontext.html:8 msgid "Virtual Device Contexts" msgstr "" -#: netbox/navigation/menu.py:75 +#: netbox/netbox/navigation/menu.py:75 msgid "Manufacturers" msgstr "" -#: netbox/navigation/menu.py:79 +#: netbox/netbox/navigation/menu.py:79 msgid "Device Components" msgstr "" -#: netbox/navigation/menu.py:91 templates/dcim/inventoryitemrole.html:8 +#: netbox/netbox/navigation/menu.py:91 +#: netbox/templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" msgstr "" -#: netbox/navigation/menu.py:98 netbox/navigation/menu.py:102 +#: netbox/netbox/navigation/menu.py:98 netbox/netbox/navigation/menu.py:102 msgid "Connections" msgstr "" -#: netbox/navigation/menu.py:104 +#: netbox/netbox/navigation/menu.py:104 msgid "Cables" msgstr "" -#: netbox/navigation/menu.py:105 +#: netbox/netbox/navigation/menu.py:105 msgid "Wireless Links" msgstr "" -#: netbox/navigation/menu.py:108 +#: netbox/netbox/navigation/menu.py:108 msgid "Interface Connections" msgstr "" -#: netbox/navigation/menu.py:113 +#: netbox/netbox/navigation/menu.py:113 msgid "Console Connections" msgstr "" -#: netbox/navigation/menu.py:118 +#: netbox/netbox/navigation/menu.py:118 msgid "Power Connections" msgstr "" -#: netbox/navigation/menu.py:134 +#: netbox/netbox/navigation/menu.py:134 msgid "Wireless LAN Groups" msgstr "" -#: netbox/navigation/menu.py:155 +#: netbox/netbox/navigation/menu.py:155 msgid "Prefix & VLAN Roles" msgstr "" -#: netbox/navigation/menu.py:161 +#: netbox/netbox/navigation/menu.py:161 msgid "ASN Ranges" msgstr "" -#: netbox/navigation/menu.py:183 +#: netbox/netbox/navigation/menu.py:183 msgid "VLAN Groups" msgstr "" -#: netbox/navigation/menu.py:190 +#: netbox/netbox/navigation/menu.py:190 msgid "Service Templates" msgstr "" -#: netbox/navigation/menu.py:191 templates/dcim/device.html:294 -#: templates/ipam/ipaddress.html:118 -#: templates/virtualization/virtualmachine.html:150 +#: netbox/netbox/navigation/menu.py:191 netbox/templates/dcim/device.html:295 +#: netbox/templates/ipam/ipaddress.html:118 +#: netbox/templates/virtualization/virtualmachine.html:150 msgid "Services" msgstr "" -#: netbox/navigation/menu.py:198 +#: netbox/netbox/navigation/menu.py:198 msgid "VPN" msgstr "" -#: netbox/navigation/menu.py:202 netbox/navigation/menu.py:204 -#: vpn/tables/tunnels.py:24 +#: netbox/netbox/navigation/menu.py:202 netbox/netbox/navigation/menu.py:204 +#: netbox/vpn/tables/tunnels.py:24 msgid "Tunnels" msgstr "" -#: netbox/navigation/menu.py:205 templates/vpn/tunnelgroup.html:8 +#: netbox/netbox/navigation/menu.py:205 netbox/templates/vpn/tunnelgroup.html:8 msgid "Tunnel Groups" msgstr "" -#: netbox/navigation/menu.py:206 +#: netbox/netbox/navigation/menu.py:206 msgid "Tunnel Terminations" msgstr "" -#: netbox/navigation/menu.py:210 netbox/navigation/menu.py:212 -#: vpn/models/l2vpn.py:64 +#: netbox/netbox/navigation/menu.py:210 netbox/netbox/navigation/menu.py:212 +#: netbox/vpn/models/l2vpn.py:64 msgid "L2VPNs" msgstr "" -#: netbox/navigation/menu.py:213 templates/vpn/l2vpn.html:56 -#: templates/vpn/tunnel.html:72 vpn/tables/tunnels.py:58 +#: netbox/netbox/navigation/menu.py:213 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:219 +#: netbox/netbox/navigation/menu.py:219 msgid "IKE Proposals" msgstr "" -#: netbox/navigation/menu.py:220 templates/vpn/ikeproposal.html:41 +#: netbox/netbox/navigation/menu.py:220 +#: netbox/templates/vpn/ikeproposal.html:41 msgid "IKE Policies" msgstr "" -#: netbox/navigation/menu.py:221 +#: netbox/netbox/navigation/menu.py:221 msgid "IPSec Proposals" msgstr "" -#: netbox/navigation/menu.py:222 templates/vpn/ipsecproposal.html:37 +#: netbox/netbox/navigation/menu.py:222 +#: netbox/templates/vpn/ipsecproposal.html:37 msgid "IPSec Policies" msgstr "" -#: netbox/navigation/menu.py:223 templates/vpn/ikepolicy.html:38 -#: templates/vpn/ipsecpolicy.html:25 +#: netbox/netbox/navigation/menu.py:223 netbox/templates/vpn/ikepolicy.html:38 +#: netbox/templates/vpn/ipsecpolicy.html:25 msgid "IPSec Profiles" msgstr "" -#: netbox/navigation/menu.py:230 templates/dcim/device_edit.html:78 +#: netbox/netbox/navigation/menu.py:230 +#: netbox/templates/dcim/device_edit.html:78 msgid "Virtualization" msgstr "" -#: netbox/navigation/menu.py:238 -#: templates/virtualization/virtualmachine.html:170 -#: templates/virtualization/virtualmachine/base.html:32 -#: templates/virtualization/virtualmachine_list.html:21 -#: virtualization/tables/virtualmachines.py:103 virtualization/views.py:388 +#: netbox/netbox/navigation/menu.py:238 +#: netbox/templates/virtualization/virtualmachine.html:170 +#: netbox/templates/virtualization/virtualmachine/base.html:32 +#: netbox/templates/virtualization/virtualmachine_list.html:21 +#: netbox/virtualization/tables/virtualmachines.py:103 +#: netbox/virtualization/views.py:388 msgid "Virtual Disks" msgstr "" -#: netbox/navigation/menu.py:245 +#: netbox/netbox/navigation/menu.py:245 msgid "Cluster Types" msgstr "" -#: netbox/navigation/menu.py:246 +#: netbox/netbox/navigation/menu.py:246 msgid "Cluster Groups" msgstr "" -#: netbox/navigation/menu.py:260 +#: netbox/netbox/navigation/menu.py:260 msgid "Circuit Types" msgstr "" -#: netbox/navigation/menu.py:261 +#: netbox/netbox/navigation/menu.py:261 msgid "Circuit Terminations" msgstr "" -#: netbox/navigation/menu.py:265 netbox/navigation/menu.py:267 +#: netbox/netbox/navigation/menu.py:265 netbox/netbox/navigation/menu.py:267 msgid "Providers" msgstr "" -#: netbox/navigation/menu.py:268 templates/circuits/provider.html:51 +#: netbox/netbox/navigation/menu.py:268 +#: netbox/templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "" -#: netbox/navigation/menu.py:269 +#: netbox/netbox/navigation/menu.py:269 msgid "Provider Networks" msgstr "" -#: netbox/navigation/menu.py:283 +#: netbox/netbox/navigation/menu.py:283 msgid "Power Panels" msgstr "" -#: netbox/navigation/menu.py:294 +#: netbox/netbox/navigation/menu.py:294 msgid "Configurations" msgstr "" -#: netbox/navigation/menu.py:296 +#: netbox/netbox/navigation/menu.py:296 msgid "Config Contexts" msgstr "" -#: netbox/navigation/menu.py:297 +#: netbox/netbox/navigation/menu.py:297 msgid "Config Templates" msgstr "" -#: netbox/navigation/menu.py:304 netbox/navigation/menu.py:308 +#: netbox/netbox/navigation/menu.py:304 netbox/netbox/navigation/menu.py:308 msgid "Customization" msgstr "" -#: netbox/navigation/menu.py:310 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:63 +#: netbox/netbox/navigation/menu.py:310 +#: 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:63 msgid "Custom Fields" msgstr "" -#: netbox/navigation/menu.py:311 +#: netbox/netbox/navigation/menu.py:311 msgid "Custom Field Choices" msgstr "" -#: netbox/navigation/menu.py:312 +#: netbox/netbox/navigation/menu.py:312 msgid "Custom Links" msgstr "" -#: netbox/navigation/menu.py:313 +#: netbox/netbox/navigation/menu.py:313 msgid "Export Templates" msgstr "" -#: netbox/navigation/menu.py:314 +#: netbox/netbox/navigation/menu.py:314 msgid "Saved Filters" msgstr "" -#: netbox/navigation/menu.py:316 +#: netbox/netbox/navigation/menu.py:316 msgid "Image Attachments" msgstr "" -#: netbox/navigation/menu.py:334 +#: netbox/netbox/navigation/menu.py:334 msgid "Operations" msgstr "" -#: netbox/navigation/menu.py:338 +#: netbox/netbox/navigation/menu.py:338 msgid "Integrations" msgstr "" -#: netbox/navigation/menu.py:340 +#: netbox/netbox/navigation/menu.py:340 msgid "Data Sources" msgstr "" -#: netbox/navigation/menu.py:341 +#: netbox/netbox/navigation/menu.py:341 msgid "Event Rules" msgstr "" -#: netbox/navigation/menu.py:342 +#: netbox/netbox/navigation/menu.py:342 msgid "Webhooks" msgstr "" -#: netbox/navigation/menu.py:346 netbox/navigation/menu.py:350 -#: netbox/views/generic/feature_views.py:151 -#: templates/extras/report/base.html:37 templates/extras/script/base.html:36 +#: netbox/netbox/navigation/menu.py:346 netbox/netbox/navigation/menu.py:350 +#: netbox/netbox/views/generic/feature_views.py:151 +#: netbox/templates/extras/report/base.html:37 +#: netbox/templates/extras/script/base.html:36 msgid "Jobs" msgstr "" -#: netbox/navigation/menu.py:356 +#: netbox/netbox/navigation/menu.py:356 msgid "Logging" msgstr "" -#: netbox/navigation/menu.py:358 +#: netbox/netbox/navigation/menu.py:358 msgid "Journal Entries" msgstr "" -#: netbox/navigation/menu.py:359 templates/extras/objectchange.html:8 -#: templates/extras/objectchange_list.html:4 +#: netbox/netbox/navigation/menu.py:359 +#: netbox/templates/extras/objectchange.html:8 +#: netbox/templates/extras/objectchange_list.html:4 msgid "Change Log" msgstr "" -#: netbox/navigation/menu.py:366 templates/inc/user_menu.html:11 +#: netbox/netbox/navigation/menu.py:366 netbox/templates/inc/user_menu.html:11 msgid "Admin" msgstr "" -#: netbox/navigation/menu.py:374 templates/users/group.html:29 -#: users/forms/model_forms.py:233 users/forms/model_forms.py:245 -#: users/forms/model_forms.py:297 users/tables.py:102 +#: netbox/netbox/navigation/menu.py:374 netbox/templates/users/group.html:29 +#: netbox/users/forms/model_forms.py:233 netbox/users/forms/model_forms.py:245 +#: netbox/users/forms/model_forms.py:297 netbox/users/tables.py:102 msgid "Users" msgstr "" -#: netbox/navigation/menu.py:394 users/forms/model_forms.py:182 -#: users/forms/model_forms.py:194 users/forms/model_forms.py:302 -#: users/tables.py:35 users/tables.py:106 +#: 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:302 +#: netbox/users/tables.py:35 netbox/users/tables.py:106 msgid "Groups" msgstr "" -#: netbox/navigation/menu.py:414 templates/account/base.html:21 -#: templates/inc/user_menu.html:36 +#: netbox/netbox/navigation/menu.py:414 netbox/templates/account/base.html:21 +#: netbox/templates/inc/user_menu.html:36 msgid "API Tokens" msgstr "" -#: netbox/navigation/menu.py:421 users/forms/model_forms.py:188 -#: users/forms/model_forms.py:196 users/forms/model_forms.py:239 -#: users/forms/model_forms.py:246 +#: netbox/netbox/navigation/menu.py:421 netbox/users/forms/model_forms.py:188 +#: netbox/users/forms/model_forms.py:196 netbox/users/forms/model_forms.py:239 +#: netbox/users/forms/model_forms.py:246 msgid "Permissions" msgstr "" -#: netbox/navigation/menu.py:429 netbox/navigation/menu.py:433 -#: templates/core/system.html:7 +#: netbox/netbox/navigation/menu.py:429 netbox/netbox/navigation/menu.py:433 +#: netbox/templates/core/system.html:7 msgid "System" msgstr "" -#: netbox/navigation/menu.py:438 +#: netbox/netbox/navigation/menu.py:438 msgid "Configuration History" msgstr "" -#: netbox/navigation/menu.py:444 templates/core/rq_task.html:8 -#: templates/core/rq_task_list.html:22 +#: netbox/netbox/navigation/menu.py:444 netbox/templates/core/rq_task.html:8 +#: netbox/templates/core/rq_task_list.html:22 msgid "Background Tasks" msgstr "" -#: netbox/navigation/menu.py:483 templates/500.html:35 -#: templates/account/preferences.html:22 templates/core/system.html:80 +#: netbox/netbox/navigation/menu.py:483 netbox/templates/500.html:35 +#: netbox/templates/account/preferences.html:22 +#: netbox/templates/core/system.html:80 msgid "Plugins" 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:37 +#: netbox/netbox/plugins/registration.py:37 #, python-brace-format msgid "" "PluginTemplateExtension class {template_extension} does not define a valid " "model!" msgstr "" -#: netbox/plugins/registration.py:47 +#: netbox/netbox/plugins/registration.py:47 #, python-brace-format msgid "{item} must be an instance of netbox.plugins.PluginMenuItem" msgstr "" -#: netbox/plugins/registration.py:60 +#: netbox/netbox/plugins/registration.py:60 #, python-brace-format msgid "{menu_link} must be an instance of netbox.plugins.PluginMenuItem" msgstr "" -#: netbox/plugins/registration.py:65 +#: netbox/netbox/plugins/registration.py:65 #, python-brace-format msgid "{button} must be an instance of netbox.plugins.PluginMenuButton" msgstr "" -#: netbox/plugins/templates.py:35 +#: netbox/netbox/plugins/templates.py:35 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:722 +#: netbox/netbox/settings.py:722 msgid "German" msgstr "" -#: netbox/settings.py:723 +#: netbox/netbox/settings.py:723 msgid "English" msgstr "" -#: netbox/settings.py:724 +#: netbox/netbox/settings.py:724 msgid "Spanish" msgstr "" -#: netbox/settings.py:725 +#: netbox/netbox/settings.py:725 msgid "French" msgstr "" -#: netbox/settings.py:726 +#: netbox/netbox/settings.py:726 msgid "Japanese" msgstr "" -#: netbox/settings.py:727 +#: netbox/netbox/settings.py:727 msgid "Portuguese" msgstr "" -#: netbox/settings.py:728 +#: netbox/netbox/settings.py:728 msgid "Russian" msgstr "" -#: netbox/settings.py:729 +#: netbox/netbox/settings.py:729 msgid "Turkish" msgstr "" -#: netbox/settings.py:730 +#: netbox/netbox/settings.py:730 msgid "Ukrainian" msgstr "" -#: netbox/settings.py:731 +#: netbox/netbox/settings.py:731 msgid "Chinese" msgstr "" -#: netbox/tables/columns.py:185 +#: netbox/netbox/tables/columns.py:185 msgid "Toggle all" msgstr "" -#: netbox/tables/columns.py:287 +#: netbox/netbox/tables/columns.py:287 msgid "Toggle Dropdown" msgstr "" -#: netbox/tables/columns.py:552 templates/core/job.html:35 +#: netbox/netbox/tables/columns.py:552 netbox/templates/core/job.html:35 msgid "Error" msgstr "" -#: netbox/tables/tables.py:57 +#: netbox/netbox/tables/tables.py:57 #, python-brace-format msgid "No {model_name} found" msgstr "" -#: netbox/tables/tables.py:248 templates/generic/bulk_import.html:117 +#: netbox/netbox/tables/tables.py:248 +#: netbox/templates/generic/bulk_import.html:117 msgid "Field" msgstr "" -#: netbox/tables/tables.py:251 +#: netbox/netbox/tables/tables.py:251 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:405 +#: netbox/netbox/views/generic/bulk_views.py:405 #, python-brace-format msgid "Row {i}: Object with ID {id} does not exist" msgstr "" -#: netbox/views/generic/feature_views.py:38 +#: netbox/netbox/views/generic/feature_views.py:38 msgid "Changelog" msgstr "" -#: netbox/views/generic/feature_views.py:91 +#: netbox/netbox/views/generic/feature_views.py:91 msgid "Journal" msgstr "" -#: netbox/views/generic/object_views.py:106 +#: netbox/netbox/views/generic/object_views.py:106 #, python-brace-format msgid "{class_name} must implement get_children()" msgstr "" -#: netbox/views/misc.py:43 +#: netbox/netbox/views/misc.py:43 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:35 +#: netbox/templates/500.html:33 netbox/templates/core/system.html:35 msgid "Python version" msgstr "" -#: templates/500.html:34 templates/core/system.html:31 +#: netbox/templates/500.html:34 netbox/templates/core/system.html:31 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:27 -#: 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:27 +#: 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/inc/user_menu.html:33 +#: netbox/templates/account/base.html:13 netbox/templates/inc/user_menu.html:33 msgid "Preferences" msgstr "" -#: templates/account/password.html:5 +#: netbox/templates/account/password.html:5 msgid "Change Password" msgstr "" -#: templates/account/password.html:17 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:17 +#: 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:18 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:18 +#: 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:13 -#: templates/users/user.html:41 +#: netbox/templates/account/profile.html:45 +#: netbox/templates/inc/user_menu.html:13 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/dcim/devicebay.html:59 -#: templates/dcim/inc/panels/inventory_items.html:45 -#: templates/dcim/interface.html:296 templates/dcim/modulebay.html:76 -#: templates/extras/configcontext.html:70 templates/extras/eventrule.html:72 -#: templates/extras/htmx/script_result.html:56 -#: templates/extras/objectchange.html:123 -#: templates/extras/objectchange.html:141 templates/extras/webhook.html:67 -#: templates/extras/webhook.html:79 templates/inc/panel_table.html:13 -#: templates/inc/panels/comments.html:12 -#: 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/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/extras/configcontext.html:70 +#: netbox/templates/extras/eventrule.html:72 +#: netbox/templates/extras/htmx/script_result.html:56 +#: netbox/templates/extras/objectchange.html:123 +#: netbox/templates/extras/objectchange.html:141 +#: netbox/templates/extras/webhook.html:67 +#: netbox/templates/extras/webhook.html:79 +#: netbox/templates/inc/panel_table.html:13 +#: netbox/templates/inc/panels/comments.html:12 +#: 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:121 +#: 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 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:18 templates/home.html:27 +#: netbox/templates/base/base.html:18 netbox/templates/home.html:27 msgid "Home" msgstr "" -#: templates/base/layout.html:32 +#: netbox/templates/base/layout.html:32 msgid "NetBox Logo" msgstr "" -#: templates/base/layout.html:56 +#: netbox/templates/base/layout.html:56 msgid "Enable dark mode" msgstr "" -#: templates/base/layout.html:59 +#: netbox/templates/base/layout.html:59 msgid "Enable light mode" msgstr "" -#: templates/base/layout.html:145 +#: netbox/templates/base/layout.html:145 msgid "Docs" msgstr "" -#: templates/base/layout.html:151 templates/rest_framework/api.html:10 +#: netbox/templates/base/layout.html:151 +#: netbox/templates/rest_framework/api.html:10 msgid "REST API" msgstr "" -#: templates/base/layout.html:157 +#: netbox/templates/base/layout.html:157 msgid "REST API documentation" msgstr "" -#: templates/base/layout.html:164 +#: netbox/templates/base/layout.html:164 msgid "GraphQL API" msgstr "" -#: templates/base/layout.html:171 +#: netbox/templates/base/layout.html:171 msgid "Source Code" msgstr "" -#: templates/base/layout.html:177 +#: netbox/templates/base/layout.html:177 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_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/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:32 -#: 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:32 +#: 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:38 +#: netbox/templates/core/datafile.html:38 msgid "Last Updated" msgstr "" -#: templates/core/datafile.html:42 templates/ipam/iprange.html:25 -#: templates/virtualization/virtualdisk.html:29 +#: netbox/templates/core/datafile.html:42 netbox/templates/ipam/iprange.html:25 +#: netbox/templates/virtualization/virtualdisk.html:29 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:17 templates/core/rq_task.html:12 -#: templates/core/rq_task.html:49 templates/core/rq_task.html:58 +#: netbox/templates/core/job.html:17 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:40 templates/extras/journalentry.html:26 +#: netbox/templates/core/job.html:40 +#: netbox/templates/extras/journalentry.html:26 msgid "Created By" msgstr "" -#: templates/core/job.html:48 +#: netbox/templates/core/job.html:48 msgid "Scheduling" msgstr "" -#: templates/core/job.html:59 +#: netbox/templates/core/job.html:59 #, python-format msgid "every %(interval)s minutes" 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:44 templates/core/rq_worker_list.html:45 -#: templates/extras/script_result.html:49 -#: templates/extras/script_result.html:51 -#: templates/inc/table_controls_htmx.html:18 -#: templates/inc/table_controls_htmx.html:20 +#: netbox/templates/core/rq_queue_list.html:24 +#: netbox/templates/core/rq_queue_list.html:25 +#: netbox/templates/core/rq_worker_list.html:44 +#: netbox/templates/core/rq_worker_list.html:45 +#: netbox/templates/extras/script_result.html:49 +#: netbox/templates/extras/script_result.html:51 +#: netbox/templates/inc/table_controls_htmx.html:18 +#: netbox/templates/inc/table_controls_htmx.html:20 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:68 +#: netbox/templates/core/rq_task_list.html:64 +#: netbox/templates/extras/script_result.html:68 #, 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:27 +#: netbox/templates/core/rq_worker_list.html:27 msgid "Workers in " 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:39 +#: netbox/templates/core/system.html:39 msgid "Django version" msgstr "" -#: templates/core/system.html:43 +#: netbox/templates/core/system.html:43 msgid "PostgreSQL version" msgstr "" -#: templates/core/system.html:47 +#: netbox/templates/core/system.html:47 msgid "Database name" msgstr "" -#: templates/core/system.html:51 +#: netbox/templates/core/system.html:51 msgid "Database size" msgstr "" -#: templates/core/system.html:56 +#: netbox/templates/core/system.html:56 msgid "Unavailable" msgstr "" -#: templates/core/system.html:61 +#: netbox/templates/core/system.html:61 msgid "RQ workers" msgstr "" -#: templates/core/system.html:64 +#: netbox/templates/core/system.html:64 msgid "default queue" msgstr "" -#: templates/core/system.html:68 +#: netbox/templates/core/system.html:68 msgid "System time" msgstr "" -#: templates/core/system.html:90 +#: netbox/templates/core/system.html:90 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:33 +#: netbox/templates/dcim/device.html:34 msgid "Highlight device in rack" msgstr "" -#: templates/dcim/device.html:54 +#: netbox/templates/dcim/device.html:55 msgid "Not racked" msgstr "" -#: templates/dcim/device.html:61 templates/dcim/site.html:93 +#: netbox/templates/dcim/device.html:62 netbox/templates/dcim/site.html:94 msgid "GPS Coordinates" msgstr "" -#: templates/dcim/device.html:67 templates/dcim/site.html:99 +#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:100 msgid "Map It" msgstr "" -#: templates/dcim/device.html:107 templates/dcim/inventoryitem.html:56 -#: templates/dcim/module.html:78 templates/dcim/modulebay.html:70 -#: templates/dcim/rack.html:59 +#: 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 msgid "Asset Tag" msgstr "" -#: templates/dcim/device.html:122 +#: netbox/templates/dcim/device.html:123 msgid "View Virtual Chassis" msgstr "" -#: templates/dcim/device.html:161 +#: netbox/templates/dcim/device.html:162 msgid "Create VDC" msgstr "" -#: templates/dcim/device.html:172 templates/dcim/device_edit.html:64 -#: virtualization/forms/model_forms.py:223 +#: netbox/templates/dcim/device.html:173 +#: netbox/templates/dcim/device_edit.html:64 +#: netbox/virtualization/forms/model_forms.py:223 msgid "Management" msgstr "" -#: templates/dcim/device.html:192 templates/dcim/device.html:208 -#: templates/virtualization/virtualmachine.html:53 -#: templates/virtualization/virtualmachine.html:69 +#: netbox/templates/dcim/device.html:193 netbox/templates/dcim/device.html:209 +#: netbox/templates/virtualization/virtualmachine.html:53 +#: netbox/templates/virtualization/virtualmachine.html:69 msgid "NAT for" msgstr "" -#: templates/dcim/device.html:194 templates/dcim/device.html:210 -#: templates/virtualization/virtualmachine.html:55 -#: templates/virtualization/virtualmachine.html:71 +#: netbox/templates/dcim/device.html:195 netbox/templates/dcim/device.html:211 +#: netbox/templates/virtualization/virtualmachine.html:55 +#: netbox/templates/virtualization/virtualmachine.html:71 msgid "NAT" msgstr "" -#: templates/dcim/device.html:244 templates/dcim/rack.html:67 +#: netbox/templates/dcim/device.html:245 netbox/templates/dcim/rack.html:67 msgid "Power Utilization" msgstr "" -#: templates/dcim/device.html:248 +#: netbox/templates/dcim/device.html:249 msgid "Input" msgstr "" -#: templates/dcim/device.html:249 +#: netbox/templates/dcim/device.html:250 msgid "Outlets" msgstr "" -#: templates/dcim/device.html:250 +#: netbox/templates/dcim/device.html:251 msgid "Allocated" msgstr "" -#: templates/dcim/device.html:260 templates/dcim/device.html:262 -#: templates/dcim/device.html:278 templates/dcim/powerfeed.html:67 +#: netbox/templates/dcim/device.html:261 netbox/templates/dcim/device.html:263 +#: netbox/templates/dcim/device.html:279 +#: netbox/templates/dcim/powerfeed.html:67 msgid "VA" msgstr "" -#: templates/dcim/device.html:272 +#: netbox/templates/dcim/device.html:273 msgctxt "Leg of a power feed" msgid "Leg" msgstr "" -#: templates/dcim/device.html:298 -#: templates/virtualization/virtualmachine.html:154 +#: netbox/templates/dcim/device.html:299 +#: netbox/templates/virtualization/virtualmachine.html:154 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/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:81 wireless/models.py:155 -#: 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:81 +#: netbox/wireless/models.py:155 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:58 templates/dcim/site.html:55 +#: netbox/templates/dcim/location.html:58 netbox/templates/dcim/site.html:56 msgid "Facility" 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:130 +#: 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:143 +#: 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:63 +#: netbox/templates/dcim/rack.html:63 msgid "Space Utilization" msgstr "" -#: templates/dcim/rack.html:91 +#: netbox/templates/dcim/rack.html:91 msgid "descending" msgstr "" -#: templates/dcim/rack.html:91 +#: netbox/templates/dcim/rack.html:91 msgid "ascending" msgstr "" -#: templates/dcim/rack.html:94 +#: netbox/templates/dcim/rack.html:94 msgid "Starting Unit" msgstr "" -#: templates/dcim/rack.html:120 +#: netbox/templates/dcim/rack.html:120 msgid "Mounting Depth" msgstr "" -#: templates/dcim/rack.html:130 +#: netbox/templates/dcim/rack.html:130 msgid "Rack Weight" msgstr "" -#: templates/dcim/rack.html:140 +#: netbox/templates/dcim/rack.html:140 msgid "Maximum Weight" msgstr "" -#: templates/dcim/rack.html:150 +#: netbox/templates/dcim/rack.html:150 msgid "Total Weight" msgstr "" -#: templates/dcim/rack.html:167 templates/dcim/rack_elevation_list.html:15 +#: netbox/templates/dcim/rack.html:167 +#: netbox/templates/dcim/rack_elevation_list.html:15 msgid "Images and Labels" msgstr "" -#: templates/dcim/rack.html:168 templates/dcim/rack_elevation_list.html:16 +#: netbox/templates/dcim/rack.html:168 +#: netbox/templates/dcim/rack_elevation_list.html:16 msgid "Images only" msgstr "" -#: templates/dcim/rack.html:169 templates/dcim/rack_elevation_list.html:17 +#: netbox/templates/dcim/rack.html:169 +#: 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: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:63 +#: netbox/templates/dcim/site.html:64 msgid "Time Zone" msgstr "" -#: templates/dcim/site.html:66 +#: netbox/templates/dcim/site.html:67 msgid "UTC" msgstr "" -#: templates/dcim/site.html:67 +#: netbox/templates/dcim/site.html:68 msgid "Site time" msgstr "" -#: templates/dcim/site.html:74 +#: netbox/templates/dcim/site.html:75 msgid "Physical Address" msgstr "" -#: templates/dcim/site.html:80 +#: netbox/templates/dcim/site.html:81 msgid "Map" msgstr "" -#: templates/dcim/site.html:89 +#: 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:68 -#: users/forms/model_forms.py:309 +#: 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:309 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 " @@ -11421,28 +12034,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 " @@ -11450,410 +12063,415 @@ 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 "Cloneable" msgstr "" -#: templates/extras/customfield.html:52 +#: netbox/templates/extras/customfield.html:52 msgid "Default Value" msgstr "" -#: templates/extras/customfield.html:61 +#: netbox/templates/extras/customfield.html:61 msgid "Search Weight" msgstr "" -#: templates/extras/customfield.html:71 +#: netbox/templates/extras/customfield.html:71 msgid "Filter Logic" msgstr "" -#: templates/extras/customfield.html:75 +#: netbox/templates/extras/customfield.html:75 msgid "Display Weight" msgstr "" -#: templates/extras/customfield.html:79 +#: netbox/templates/extras/customfield.html:79 msgid "UI Visible" msgstr "" -#: templates/extras/customfield.html:83 +#: netbox/templates/extras/customfield.html:83 msgid "UI Editable" msgstr "" -#: templates/extras/customfield.html:103 +#: netbox/templates/extras/customfield.html:103 msgid "Validation Rules" msgstr "" -#: templates/extras/customfield.html:106 +#: netbox/templates/extras/customfield.html:106 msgid "Minimum Value" msgstr "" -#: templates/extras/customfield.html:110 +#: netbox/templates/extras/customfield.html:110 msgid "Maximum Value" msgstr "" -#: templates/extras/customfield.html:114 +#: netbox/templates/extras/customfield.html:114 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:53 +#: netbox/templates/extras/customlink.html:53 msgid "Link Text" msgstr "" -#: templates/extras/customlink.html:61 +#: netbox/templates/extras/customlink.html:61 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_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:52 +#: netbox/templates/extras/eventrule.html:52 msgid "Job start" msgstr "" -#: templates/extras/eventrule.html:56 +#: netbox/templates/extras/eventrule.html:56 msgid "Job end" 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:52 +#: netbox/templates/extras/htmx/script_result.html:52 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/object_changelog.html:15 -#: templates/extras/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +#: netbox/templates/extras/objectchange_list.html:9 msgid "Change log retention" msgstr "" -#: templates/extras/object_changelog.html:15 -#: templates/extras/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +#: netbox/templates/extras/objectchange_list.html:9 msgid "days" msgstr "" -#: templates/extras/object_changelog.html:15 -#: templates/extras/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +#: netbox/templates/extras/objectchange_list.html:9 msgid "Indefinite" 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/objectchange.html:28 -#: templates/users/objectpermission.html:42 +#: netbox/templates/extras/objectchange.html:28 +#: netbox/templates/users/objectpermission.html:42 msgid "Change" msgstr "" -#: templates/extras/objectchange.html:78 +#: netbox/templates/extras/objectchange.html:78 msgid "Difference" msgstr "" -#: templates/extras/objectchange.html:81 +#: netbox/templates/extras/objectchange.html:81 msgid "Previous" msgstr "" -#: templates/extras/objectchange.html:84 +#: netbox/templates/extras/objectchange.html:84 msgid "Next" msgstr "" -#: templates/extras/objectchange.html:92 +#: netbox/templates/extras/objectchange.html:92 msgid "Object Created" msgstr "" -#: templates/extras/objectchange.html:94 +#: netbox/templates/extras/objectchange.html:94 msgid "Object Deleted" msgstr "" -#: templates/extras/objectchange.html:96 +#: netbox/templates/extras/objectchange.html:96 msgid "No Changes" msgstr "" -#: templates/extras/objectchange.html:110 +#: netbox/templates/extras/objectchange.html:110 msgid "Pre-Change Data" msgstr "" -#: templates/extras/objectchange.html:121 +#: netbox/templates/extras/objectchange.html:121 msgid "Warning: Comparing non-atomic change to previous change record" msgstr "" -#: templates/extras/objectchange.html:130 +#: netbox/templates/extras/objectchange.html:130 msgid "Post-Change Data" msgstr "" -#: templates/extras/objectchange.html:153 +#: netbox/templates/extras/objectchange.html:153 #, python-format msgid "See All %(count)s Changes" 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:88 +#: netbox/templates/extras/script.html:41 +#: netbox/templates/extras/script.html:45 +#: netbox/templates/extras/script_list.html:88 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:48 +#: netbox/templates/extras/script_list.html:48 msgid "Last Run" msgstr "" -#: templates/extras/script_list.html:63 +#: netbox/templates/extras/script_list.html:63 msgid "Script is no longer present in the source file" msgstr "" -#: templates/extras/script_list.html:76 +#: netbox/templates/extras/script_list.html:76 msgid "Never" msgstr "" -#: templates/extras/script_list.html:86 +#: netbox/templates/extras/script_list.html:86 msgid "Run Again" msgstr "" -#: templates/extras/script_list.html:140 +#: netbox/templates/extras/script_list.html:140 msgid "No Scripts Found" msgstr "" -#: templates/extras/script_list.html:143 +#: netbox/templates/extras/script_list.html:143 #, 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/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:61 +#: netbox/templates/extras/webhook.html:61 msgid "Additional Headers" msgstr "" -#: templates/extras/webhook.html:73 +#: netbox/templates/extras/webhook.html:73 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 " @@ -11861,75 +12479,78 @@ 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: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 " @@ -11937,416 +12558,418 @@ 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:96 +#: netbox/templates/generic/object_list.html:96 #, 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/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/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/user_menu.html:23 +#: netbox/templates/inc/user_menu.html:23 msgid "Django Admin" msgstr "" -#: templates/inc/user_menu.html:40 +#: netbox/templates/inc/user_menu.html:40 msgid "Log Out" msgstr "" -#: templates/inc/user_menu.html:47 templates/login.html:36 +#: netbox/templates/inc/user_menu.html:47 netbox/templates/login.html:36 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:15 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 msgid "Assign 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/vlangroup.html:42 +#: netbox/templates/ipam/vlangroup.html:42 msgid "Permitted VIDs" 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:14 +#: netbox/templates/login.html:14 msgid "NetBox logo" msgstr "" -#: templates/login.html:27 -#: utilities/templates/form_helpers/render_errors.html:7 +#: netbox/templates/login.html:27 +#: netbox/utilities/templates/form_helpers/render_errors.html:7 msgid "Errors" msgstr "" -#: templates/login.html:67 +#: netbox/templates/login.html:67 msgid "Sign In" msgstr "" -#: templates/login.html:75 +#: netbox/templates/login.html:75 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 " @@ -12354,1822 +12977,1856 @@ 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/contact.html:84 tenancy/tables/contacts.py:73 +#: netbox/templates/tenancy/contact.html:84 +#: netbox/tenancy/tables/contacts.py:73 msgid "Assignments" 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:67 +#: netbox/templates/users/objectpermission.html:6 +#: netbox/templates/users/objectpermission.html:14 +#: netbox/users/forms/filtersets.py:67 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:312 +#: netbox/templates/users/objectpermission.html:52 +#: netbox/users/forms/model_forms.py:312 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:121 +#: netbox/templates/virtualization/cluster.html:55 +#: netbox/templates/virtualization/virtualmachine.html:121 msgid "Virtual CPUs" msgstr "" -#: templates/virtualization/cluster.html:59 -#: templates/virtualization/virtualmachine.html:125 +#: netbox/templates/virtualization/cluster.html:59 +#: netbox/templates/virtualization/virtualmachine.html:125 msgid "Memory" msgstr "" -#: templates/virtualization/cluster.html:69 -#: templates/virtualization/virtualmachine.html:136 +#: netbox/templates/virtualization/cluster.html:69 +#: netbox/templates/virtualization/virtualmachine.html:136 msgid "Disk Space" msgstr "" -#: templates/virtualization/cluster.html:72 -#: templates/virtualization/virtualdisk.html:32 -#: templates/virtualization/virtualmachine.html:140 +#: 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 "" -#: 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:106 -#: virtualization/forms/model_forms.py:36 +#: netbox/templates/virtualization/clustertype.html:19 +#: netbox/templates/virtualization/virtualmachine.html:106 +#: 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:118 -#: virtualization/forms/bulk_edit.py:190 -#: virtualization/forms/model_forms.py:224 +#: netbox/templates/virtualization/virtualmachine.html:118 +#: netbox/virtualization/forms/bulk_edit.py:190 +#: netbox/virtualization/forms/model_forms.py:224 msgid "Resources" msgstr "" -#: templates/virtualization/virtualmachine.html:174 +#: netbox/templates/virtualization/virtualmachine.html:174 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 "" -#: tenancy/choices.py:19 +#: netbox/tenancy/choices.py:19 msgid "Tertiary" msgstr "" -#: tenancy/choices.py:20 +#: netbox/tenancy/choices.py:20 msgid "Inactive" 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:120 +#: netbox/tenancy/tables/contacts.py:120 msgid "Contact Email" msgstr "" -#: tenancy/tables/contacts.py:124 +#: netbox/tenancy/tables/contacts.py:124 msgid "Contact Address" msgstr "" -#: tenancy/tables/contacts.py:128 +#: netbox/tenancy/tables/contacts.py:128 msgid "Contact Link" msgstr "" -#: tenancy/tables/contacts.py:132 +#: netbox/tenancy/tables/contacts.py:132 msgid "Contact Description" msgstr "" -#: users/filtersets.py:33 users/filtersets.py:68 +#: netbox/users/filtersets.py:33 netbox/users/filtersets.py:68 msgid "Permission (ID)" msgstr "" -#: users/filtersets.py:63 users/filtersets.py:181 +#: netbox/users/filtersets.py:63 netbox/users/filtersets.py:181 msgid "Group (name)" 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:52 users/tables.py:42 +#: netbox/users/forms/filtersets.py:52 netbox/users/tables.py:42 msgid "Is Staff" msgstr "" -#: users/forms/filtersets.py:59 users/tables.py:45 +#: netbox/users/forms/filtersets.py:59 netbox/users/tables.py:45 msgid "Is Superuser" msgstr "" -#: users/forms/filtersets.py:92 users/tables.py:86 +#: netbox/users/forms/filtersets.py:92 netbox/users/tables.py:86 msgid "Can View" msgstr "" -#: users/forms/filtersets.py:99 users/tables.py:89 +#: netbox/users/forms/filtersets.py:99 netbox/users/tables.py:89 msgid "Can Add" msgstr "" -#: users/forms/filtersets.py:106 users/tables.py:92 +#: netbox/users/forms/filtersets.py:106 netbox/users/tables.py:92 msgid "Can Change" msgstr "" -#: users/forms/filtersets.py:113 users/tables.py:95 +#: netbox/users/forms/filtersets.py:113 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:291 +#: netbox/users/forms/model_forms.py:291 msgid "Additional actions" msgstr "" -#: users/forms/model_forms.py:294 +#: netbox/users/forms/model_forms.py:294 msgid "Actions granted in addition to those listed above" msgstr "" -#: users/forms/model_forms.py:310 +#: netbox/users/forms/model_forms.py:310 msgid "Objects" msgstr "" -#: users/forms/model_forms.py:322 +#: netbox/users/forms/model_forms.py:322 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:361 +#: netbox/users/forms/model_forms.py:361 msgid "At least one action must be selected." msgstr "" -#: users/forms/model_forms.py:379 +#: netbox/users/forms/model_forms.py:379 #, 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:30 users/models/preferences.py:31 +#: netbox/users/models/preferences.py:30 netbox/users/models/preferences.py:31 msgid "user preferences" msgstr "" -#: users/models/preferences.py:98 +#: netbox/users/models/preferences.py:98 #, python-brace-format msgid "Key '{path}' is a leaf node; cannot assign new keys" msgstr "" -#: users/models/preferences.py:110 +#: netbox/users/models/preferences.py:110 #, python-brace-format msgid "Key '{path}' is a dictionary; cannot assign a non-dictionary value" msgstr "" -#: users/models/tokens.py:37 +#: netbox/users/models/tokens.py:37 msgid "expires" msgstr "" -#: users/models/tokens.py:42 +#: netbox/users/models/tokens.py:42 msgid "last used" msgstr "" -#: users/models/tokens.py:47 +#: netbox/users/models/tokens.py:47 msgid "key" msgstr "" -#: users/models/tokens.py:53 +#: netbox/users/models/tokens.py:53 msgid "write enabled" msgstr "" -#: users/models/tokens.py:55 +#: netbox/users/models/tokens.py:55 msgid "Permit create/update/delete operations using this key" msgstr "" -#: users/models/tokens.py:66 +#: netbox/users/models/tokens.py:66 msgid "allowed IPs" msgstr "" -#: users/models/tokens.py:68 +#: netbox/users/models/tokens.py:68 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:76 +#: netbox/users/models/tokens.py:76 msgid "token" msgstr "" -#: users/models/tokens.py:77 +#: netbox/users/models/tokens.py:77 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:58 users/models/users.py:77 +#: netbox/users/models/users.py:58 netbox/users/models/users.py:77 msgid "groups" msgstr "" -#: users/models/users.py:92 +#: netbox/users/models/users.py:92 msgid "user" msgstr "" -#: users/models/users.py:93 +#: netbox/users/models/users.py:93 msgid "users" 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:157 +#: netbox/utilities/fields.py:157 #, 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:167 +#: netbox/utilities/fields.py:167 #, 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:17 +#: netbox/utilities/forms/fields/array.py:17 #, python-brace-format msgid "" "Invalid list ({value}). Must be numeric and ranges must be 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/permissions.py:39 +#: netbox/utilities/permissions.py:39 #, python-brace-format msgid "" "Invalid permission name: {name}. Must be in the format ." "_" msgstr "" -#: utilities/permissions.py:57 +#: netbox/utilities/permissions.py:57 #, 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/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/widgets/apiselect.html:7 +#: netbox/utilities/templates/widgets/apiselect.html:7 msgid "Open selector" msgstr "" -#: utilities/templates/widgets/clearable_file_input.html:12 +#: netbox/utilities/templates/widgets/clearable_file_input.html:12 msgid "None assigned" msgstr "" -#: utilities/templates/widgets/markdown_input.html:6 +#: netbox/utilities/templates/widgets/markdown_input.html:6 msgid "Write" msgstr "" -#: utilities/testing/views.py:633 +#: netbox/utilities/testing/views.py:633 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:40 +#: netbox/utilities/views.py:40 #, python-brace-format msgid "{self.__class__.__name__} must implement get_required_permission()" msgstr "" -#: utilities/views.py:76 +#: netbox/utilities/views.py:76 #, python-brace-format msgid "{class_name} must implement get_required_permission()" msgstr "" -#: utilities/views.py:100 +#: netbox/utilities/views.py:100 #, 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:130 +#: netbox/virtualization/filtersets.py:130 msgid "Cluster group (ID)" msgstr "" -#: virtualization/filtersets.py:151 virtualization/filtersets.py:267 +#: netbox/virtualization/filtersets.py:151 +#: netbox/virtualization/filtersets.py:267 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:247 +#: netbox/virtualization/forms/bulk_edit.py:334 +#: netbox/virtualization/forms/filtersets.py:247 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/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 +#: netbox/virtualization/forms/model_forms.py:372 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 (GB)" msgstr "" -#: virtualization/models/virtualmachines.py:161 +#: netbox/virtualization/models/virtualmachines.py:161 msgid "Virtual machine name must be unique per cluster." msgstr "" -#: virtualization/models/virtualmachines.py:164 +#: netbox/virtualization/models/virtualmachines.py:164 msgid "virtual machine" msgstr "" -#: virtualization/models/virtualmachines.py:165 +#: netbox/virtualization/models/virtualmachines.py:165 msgid "virtual machines" msgstr "" -#: virtualization/models/virtualmachines.py:179 +#: netbox/virtualization/models/virtualmachines.py:179 msgid "A virtual machine must be assigned to a site and/or cluster." msgstr "" -#: virtualization/models/virtualmachines.py:186 +#: netbox/virtualization/models/virtualmachines.py:186 #, python-brace-format msgid "The selected cluster ({cluster}) is not assigned to this site ({site})." msgstr "" -#: virtualization/models/virtualmachines.py:193 +#: netbox/virtualization/models/virtualmachines.py:193 msgid "Must specify a cluster when assigning a host device." msgstr "" -#: virtualization/models/virtualmachines.py:198 +#: netbox/virtualization/models/virtualmachines.py:198 #, python-brace-format msgid "" "The selected device ({device}) is not assigned to this cluster ({cluster})." msgstr "" -#: virtualization/models/virtualmachines.py:210 +#: netbox/virtualization/models/virtualmachines.py:210 #, 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:224 +#: netbox/virtualization/models/virtualmachines.py:224 #, python-brace-format msgid "Must be an IPv{family} address. ({ip} is an IPv{version} address.)" msgstr "" -#: virtualization/models/virtualmachines.py:233 +#: netbox/virtualization/models/virtualmachines.py:233 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this VM." msgstr "" -#: virtualization/models/virtualmachines.py:391 +#: netbox/virtualization/models/virtualmachines.py:391 #, python-brace-format msgid "" "The selected parent interface ({parent}) belongs to a different virtual " "machine ({virtual_machine})." msgstr "" -#: virtualization/models/virtualmachines.py:406 +#: netbox/virtualization/models/virtualmachines.py:406 #, python-brace-format msgid "" "The selected bridge interface ({bridge}) belongs to a different virtual " "machine ({virtual_machine})." msgstr "" -#: virtualization/models/virtualmachines.py:417 +#: netbox/virtualization/models/virtualmachines.py:417 #, 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:429 +#: netbox/virtualization/models/virtualmachines.py:429 msgid "size (GB)" msgstr "" -#: virtualization/models/virtualmachines.py:433 +#: netbox/virtualization/models/virtualmachines.py:433 msgid "virtual disk" msgstr "" -#: virtualization/models/virtualmachines.py:434 +#: netbox/virtualization/models/virtualmachines.py:434 msgid "virtual disks" 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:282 +#: netbox/vpn/filtersets.py:130 netbox/vpn/filtersets.py:153 +#: netbox/vpn/filtersets.py:282 msgid "IKE policy (ID)" msgstr "" -#: vpn/filtersets.py:136 vpn/filtersets.py:159 vpn/filtersets.py:288 +#: netbox/vpn/filtersets.py:136 netbox/vpn/filtersets.py:159 +#: netbox/vpn/filtersets.py:288 msgid "IKE policy (name)" msgstr "" -#: vpn/filtersets.py:215 vpn/filtersets.py:292 +#: netbox/vpn/filtersets.py:215 netbox/vpn/filtersets.py:292 msgid "IPSec policy (ID)" msgstr "" -#: vpn/filtersets.py:221 vpn/filtersets.py:298 +#: netbox/vpn/filtersets.py:221 netbox/vpn/filtersets.py:298 msgid "IPSec policy (name)" msgstr "" -#: vpn/filtersets.py:367 +#: netbox/vpn/filtersets.py:367 msgid "L2VPN (slug)" msgstr "" -#: vpn/filtersets.py:431 +#: netbox/vpn/filtersets.py:431 msgid "VM Interface (ID)" msgstr "" -#: vpn/filtersets.py:437 +#: netbox/vpn/filtersets.py:437 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:38 +#: netbox/vpn/models/crypto.py:91 netbox/wireless/models.py:38 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_import.py:52 +#: netbox/wireless/forms/bulk_import.py:52 msgid "Bridged VLAN" msgstr "" -#: wireless/forms/bulk_import.py:89 wireless/tables/wirelesslink.py:27 +#: netbox/wireless/forms/bulk_import.py:89 +#: netbox/wireless/tables/wirelesslink.py:27 msgid "Interface A" msgstr "" -#: wireless/forms/bulk_import.py:93 wireless/tables/wirelesslink.py:36 +#: netbox/wireless/forms/bulk_import.py:93 +#: netbox/wireless/tables/wirelesslink.py:36 msgid "Interface B" msgstr "" -#: wireless/forms/model_forms.py:161 +#: netbox/wireless/forms/model_forms.py:161 msgid "Side B" msgstr "" -#: wireless/models.py:30 +#: netbox/wireless/models.py:30 msgid "authentication cipher" msgstr "" -#: wireless/models.py:68 +#: netbox/wireless/models.py:68 msgid "wireless LAN group" msgstr "" -#: wireless/models.py:69 +#: netbox/wireless/models.py:69 msgid "wireless LAN groups" msgstr "" -#: wireless/models.py:115 +#: netbox/wireless/models.py:115 msgid "wireless LAN" msgstr "" -#: wireless/models.py:143 +#: netbox/wireless/models.py:143 msgid "interface A" msgstr "" -#: wireless/models.py:150 +#: netbox/wireless/models.py:150 msgid "interface B" msgstr "" -#: wireless/models.py:198 +#: netbox/wireless/models.py:198 msgid "wireless link" msgstr "" -#: wireless/models.py:199 +#: netbox/wireless/models.py:199 msgid "wireless links" msgstr "" -#: wireless/models.py:216 wireless/models.py:222 +#: netbox/wireless/models.py:216 netbox/wireless/models.py:222 #, 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 "" From 05c69f84e69ac4ea8197452a75837e07d032993f Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 30 May 2024 10:43:54 -0400 Subject: [PATCH 38/67] Enable scheduled runs --- .github/workflows/update-translation-strings.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/update-translation-strings.yml b/.github/workflows/update-translation-strings.yml index a2802ab92..5b0c09300 100644 --- a/.github/workflows/update-translation-strings.yml +++ b/.github/workflows/update-translation-strings.yml @@ -1,10 +1,16 @@ name: Update translation strings -on: workflow_dispatch +on: + schedule: + - cron: '0 5 * * *' + workflow_dispatch: permissions: contents: write +env: + LOCALE: "en" + jobs: makemessages: runs-on: ubuntu-latest @@ -29,7 +35,7 @@ jobs: pip install -r requirements.txt - name: Run makemessages - run: python netbox/manage.py makemessages -l en + run: python netbox/manage.py makemessages -l ${{ env.LOCALE }} - name: Commit changes uses: EndBug/add-and-commit@v9 From e095ec6860f0864a35688d9b15b3a8073976e8b8 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 29 May 2024 11:33:09 -0400 Subject: [PATCH 39/67] Fixes #13422: Rebuild MPTT trees for applicable models when merging staged changes --- netbox/extras/models/staging.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/netbox/extras/models/staging.py b/netbox/extras/models/staging.py index 6e381ce70..7ffbde089 100644 --- a/netbox/extras/models/staging.py +++ b/netbox/extras/models/staging.py @@ -4,6 +4,7 @@ from django.contrib.auth import get_user_model from django.contrib.contenttypes.fields import GenericForeignKey from django.db import models, transaction from django.utils.translation import gettext_lazy as _ +from mptt.models import MPTTModel from extras.choices import ChangeActionChoices from netbox.models import ChangeLoggedModel @@ -124,6 +125,11 @@ class StagedChange(CustomValidationMixin, EventRulesMixin, models.Model): instance = self.model.objects.get(pk=self.object_id) logger.info(f'Deleting {self.model._meta.verbose_name} {instance}') instance.delete() + + # Rebuild the MPTT tree where applicable + if issubclass(self.model, MPTTModel): + self.model.objects.rebuild() + apply.alters_data = True def get_action_color(self): From 26a856f57cdf839c39563099543e7dfc620f36a6 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Fri, 31 May 2024 10:29:53 -0400 Subject: [PATCH 40/67] Changelog for #13422, #14810, #15489, #16202, #16286, #16290 --- docs/release-notes/version-4.0.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/release-notes/version-4.0.md b/docs/release-notes/version-4.0.md index 14fdbd1d0..d837d0cf2 100644 --- a/docs/release-notes/version-4.0.md +++ b/docs/release-notes/version-4.0.md @@ -2,6 +2,18 @@ ## v4.0.4 (FUTURE) +### Enhancements + +* [#14810](https://github.com/netbox-community/netbox/issues/14810) - Enable contact assignment for services +* [#15489](https://github.com/netbox-community/netbox/issues/15489) - Add 1000Base-TX interface type +* [#16290](https://github.com/netbox-community/netbox/issues/16290) - Capture entire object in changelog data (but continue to display only non-internal attributes) + +### Bug Fixes + +* [#13422](https://github.com/netbox-community/netbox/issues/13422) - Rebuild MPTT trees for applicable models after merging staged changes +* [#16202](https://github.com/netbox-community/netbox/issues/16202) - Fix site map button URL for certain localizations +* [#16286](https://github.com/netbox-community/netbox/issues/16286) - Fix global search support for provider accounts + --- ## v4.0.3 (2024-05-22) From 0dde0b506e942661d234cb235e67b5b8694a8b44 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Fri, 31 May 2024 13:00:07 -0400 Subject: [PATCH 41/67] Fixes #16312: Fix object list navigation for dashboard widgets --- netbox/extras/dashboard/widgets.py | 1 + 1 file changed, 1 insertion(+) diff --git a/netbox/extras/dashboard/widgets.py b/netbox/extras/dashboard/widgets.py index a3d7f05a3..add81a318 100644 --- a/netbox/extras/dashboard/widgets.py +++ b/netbox/extras/dashboard/widgets.py @@ -265,6 +265,7 @@ class ObjectListWidget(DashboardWidget): parameters = self.config.get('url_params') or {} if page_size := self.config.get('page_size'): parameters['per_page'] = page_size + parameters['embedded'] = True if parameters: try: From e18e6cf75625e9c0ca2256ed66d32fde32adce4a Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 1 Jun 2024 05:02:24 +0000 Subject: [PATCH 42/67] Update source translation strings --- netbox/translations/en/LC_MESSAGES/django.po | 32 ++++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/netbox/translations/en/LC_MESSAGES/django.po b/netbox/translations/en/LC_MESSAGES/django.po index 51072d017..bb938e9d7 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-05-30 14:23+0000\n" +"POT-Creation-Date: 2024-06-01 05:02+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1097,7 +1097,7 @@ msgstr "" #: netbox/extras/models/configs.py:45 netbox/extras/models/configs.py:219 #: netbox/extras/models/customfields.py:123 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:31 +#: 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 @@ -1138,7 +1138,7 @@ msgstr "" #: 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:26 netbox/ipam/models/asns.py:18 +#: netbox/extras/models/staging.py:27 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/vrfs.py:22 @@ -1918,7 +1918,7 @@ msgid "completed" msgstr "" #: netbox/core/models/jobs.py:91 netbox/extras/models/models.py:121 -#: netbox/extras/models/staging.py:87 +#: netbox/extras/models/staging.py:88 msgid "data" msgstr "" @@ -6740,33 +6740,33 @@ msgstr "" msgid "Invalid format. URL parameters must be passed as a dictionary." msgstr "" -#: netbox/extras/dashboard/widgets.py:283 +#: netbox/extras/dashboard/widgets.py:284 msgid "RSS Feed" msgstr "" -#: netbox/extras/dashboard/widgets.py:288 +#: netbox/extras/dashboard/widgets.py:289 msgid "Embed an RSS feed from an external website." msgstr "" -#: netbox/extras/dashboard/widgets.py:295 +#: netbox/extras/dashboard/widgets.py:296 msgid "Feed URL" msgstr "" -#: netbox/extras/dashboard/widgets.py:300 +#: netbox/extras/dashboard/widgets.py:301 msgid "The maximum number of objects to display" msgstr "" -#: netbox/extras/dashboard/widgets.py:305 +#: netbox/extras/dashboard/widgets.py:306 msgid "How long to stored the cached content (in seconds)" msgstr "" -#: netbox/extras/dashboard/widgets.py:357 netbox/templates/account/base.html:10 +#: netbox/extras/dashboard/widgets.py:358 netbox/templates/account/base.html:10 #: netbox/templates/account/bookmarks.html:7 #: netbox/templates/inc/user_menu.html:30 msgid "Bookmarks" msgstr "" -#: netbox/extras/dashboard/widgets.py:361 +#: netbox/extras/dashboard/widgets.py:362 msgid "Show your personal bookmarks" msgstr "" @@ -7385,7 +7385,7 @@ msgstr "" msgid "request ID" msgstr "" -#: netbox/extras/models/change_logging.py:52 netbox/extras/models/staging.py:69 +#: netbox/extras/models/change_logging.py:52 netbox/extras/models/staging.py:70 msgid "action" msgstr "" @@ -8096,19 +8096,19 @@ msgstr "" msgid "cached values" msgstr "" -#: netbox/extras/models/staging.py:44 +#: netbox/extras/models/staging.py:45 msgid "branch" msgstr "" -#: netbox/extras/models/staging.py:45 +#: netbox/extras/models/staging.py:46 msgid "branches" msgstr "" -#: netbox/extras/models/staging.py:97 +#: netbox/extras/models/staging.py:98 msgid "staged change" msgstr "" -#: netbox/extras/models/staging.py:98 +#: netbox/extras/models/staging.py:99 msgid "staged changes" msgstr "" From 602754439a55ff13cf9f1c21e7b4d52b608bf16d Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 3 Jun 2024 08:01:50 -0400 Subject: [PATCH 43/67] Update workflows to use most recent release of each action --- .github/workflows/auto-assign-issue.yml | 2 +- .github/workflows/ci.yml | 6 +++--- .github/workflows/update-translation-strings.yml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/auto-assign-issue.yml b/.github/workflows/auto-assign-issue.yml index 4e93d9f0d..309f79800 100644 --- a/.github/workflows/auto-assign-issue.yml +++ b/.github/workflows/auto-assign-issue.yml @@ -12,7 +12,7 @@ jobs: auto-assign: runs-on: ubuntu-latest steps: - - uses: pozil/auto-assign-issue@v1 + - uses: pozil/auto-assign-issue@v2 if: "contains(github.event.issue.labels.*.name, 'status: needs triage')" with: # Weighted assignments diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b32f519bc..a84359bf9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -45,12 +45,12 @@ jobs: uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} @@ -58,7 +58,7 @@ jobs: run: npm install -g yarn - name: Setup Node.js with Yarn Caching - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: yarn diff --git a/.github/workflows/update-translation-strings.yml b/.github/workflows/update-translation-strings.yml index 5b0c09300..bcd68c887 100644 --- a/.github/workflows/update-translation-strings.yml +++ b/.github/workflows/update-translation-strings.yml @@ -22,7 +22,7 @@ jobs: uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: 3.11 From 24d02cb3818a97202a27c00fe0204959edef60ef Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Fri, 31 May 2024 09:35:18 -0400 Subject: [PATCH 44/67] Fixes #15194: Prevent enqueuing duplicate events for an object --- netbox/extras/context_managers.py | 7 +++--- netbox/extras/events.py | 32 +++++++++++++++---------- netbox/extras/signals.py | 29 +++++++--------------- netbox/extras/tests/test_event_rules.py | 27 +++++++++++++++++++-- netbox/netbox/context.py | 2 +- 5 files changed, 57 insertions(+), 40 deletions(-) diff --git a/netbox/extras/context_managers.py b/netbox/extras/context_managers.py index 8de47465e..e72cb8cc2 100644 --- a/netbox/extras/context_managers.py +++ b/netbox/extras/context_managers.py @@ -13,13 +13,14 @@ def event_tracking(request): :param request: WSGIRequest object with a unique `id` set """ current_request.set(request) - events_queue.set([]) + events_queue.set({}) yield # Flush queued webhooks to RQ - flush_events(events_queue.get()) + if events := list(events_queue.get().values()): + flush_events(events) # Clear context vars current_request.set(None) - events_queue.set([]) + events_queue.set({}) diff --git a/netbox/extras/events.py b/netbox/extras/events.py index 34d2ec159..22ce26ba9 100644 --- a/netbox/extras/events.py +++ b/netbox/extras/events.py @@ -58,15 +58,21 @@ def enqueue_object(queue, instance, user, request_id, action): if model_name not in registry['model_features']['event_rules'].get(app_label, []): return - queue.append({ - 'content_type': ContentType.objects.get_for_model(instance), - 'object_id': instance.pk, - 'event': action, - 'data': serialize_for_event(instance), - 'snapshots': get_snapshots(instance, action), - 'username': user.username, - 'request_id': request_id - }) + assert instance.pk is not None + key = f'{app_label}.{model_name}:{instance.pk}' + if key in queue: + queue[key]['data'] = serialize_for_event(instance) + queue[key]['snapshots']['postchange'] = get_snapshots(instance, action)['postchange'] + else: + queue[key] = { + 'content_type': ContentType.objects.get_for_model(instance), + 'object_id': instance.pk, + 'event': action, + 'data': serialize_for_event(instance), + 'snapshots': get_snapshots(instance, action), + 'username': user.username, + 'request_id': request_id + } def process_event_rules(event_rules, model_name, event, data, username=None, snapshots=None, request_id=None): @@ -163,14 +169,14 @@ def process_event_queue(events): ) -def flush_events(queue): +def flush_events(events): """ - Flush a list of object representation to RQ for webhook processing. + Flush a list of object representations to RQ for event processing. """ - if queue: + if events: for name in settings.EVENTS_PIPELINE: try: func = import_string(name) - func(queue) + func(events) except Exception as e: logger.error(_("Cannot import events pipeline {name} error: {error}").format(name=name, error=e)) diff --git a/netbox/extras/signals.py b/netbox/extras/signals.py index 2813ed7ae..9d439ace9 100644 --- a/netbox/extras/signals.py +++ b/netbox/extras/signals.py @@ -55,18 +55,6 @@ def run_validators(instance, validators): clear_events = Signal() -def is_same_object(instance, webhook_data, request_id): - """ - Compare the given instance to the most recent queued webhook object, returning True - if they match. This check is used to avoid creating duplicate webhook entries. - """ - return ( - ContentType.objects.get_for_model(instance) == webhook_data['content_type'] and - instance.pk == webhook_data['object_id'] and - request_id == webhook_data['request_id'] - ) - - @receiver((post_save, m2m_changed)) def handle_changed_object(sender, instance, **kwargs): """ @@ -112,14 +100,13 @@ def handle_changed_object(sender, instance, **kwargs): objectchange.request_id = request.id objectchange.save() - # If this is an M2M change, update the previously queued webhook (from post_save) + # Ensure that we're working with fresh M2M assignments + if m2m_changed: + instance.refresh_from_db() + + # Enqueue the object for event processing queue = events_queue.get() - if m2m_changed and queue and is_same_object(instance, queue[-1], request.id): - instance.refresh_from_db() # Ensure that we're working with fresh M2M assignments - queue[-1]['data'] = serialize_for_event(instance) - queue[-1]['snapshots']['postchange'] = get_snapshots(instance, action)['postchange'] - else: - enqueue_object(queue, instance, request.user, request.id, action) + enqueue_object(queue, instance, request.user, request.id, action) events_queue.set(queue) # Increment metric counters @@ -179,7 +166,7 @@ def handle_deleted_object(sender, instance, **kwargs): obj.snapshot() # Ensure the change record includes the "before" state getattr(obj, related_field_name).remove(instance) - # Enqueue webhooks + # Enqueue the object for event processing queue = events_queue.get() enqueue_object(queue, instance, request.user, request.id, ObjectChangeActionChoices.ACTION_DELETE) events_queue.set(queue) @@ -195,7 +182,7 @@ def clear_events_queue(sender, **kwargs): """ logger = logging.getLogger('events') logger.info(f"Clearing {len(events_queue.get())} queued events ({sender})") - events_queue.set([]) + events_queue.set({}) # diff --git a/netbox/extras/tests/test_event_rules.py b/netbox/extras/tests/test_event_rules.py index 8cea2078a..a1dd8b48e 100644 --- a/netbox/extras/tests/test_event_rules.py +++ b/netbox/extras/tests/test_event_rules.py @@ -4,6 +4,7 @@ from unittest.mock import patch import django_rq from django.http import HttpResponse +from django.test import RequestFactory from django.urls import reverse from requests import Session from rest_framework import status @@ -12,6 +13,7 @@ from core.models import ObjectType from dcim.choices import SiteStatusChoices from dcim.models import Site from extras.choices import EventRuleActionChoices, ObjectChangeActionChoices +from extras.context_managers import event_tracking from extras.events import enqueue_object, flush_events, serialize_for_event from extras.models import EventRule, Tag, Webhook from extras.webhooks import generate_signature, send_webhook @@ -360,7 +362,7 @@ class EventRuleTest(APITestCase): return HttpResponse() # Enqueue a webhook for processing - webhooks_queue = [] + webhooks_queue = {} site = Site.objects.create(name='Site 1', slug='site-1') enqueue_object( webhooks_queue, @@ -369,7 +371,7 @@ class EventRuleTest(APITestCase): request_id=request_id, action=ObjectChangeActionChoices.ACTION_CREATE ) - flush_events(webhooks_queue) + flush_events(list(webhooks_queue.values())) # Retrieve the job from queue job = self.queue.jobs[0] @@ -377,3 +379,24 @@ class EventRuleTest(APITestCase): # Patch the Session object with our dummy_send() method, then process the webhook for sending with patch.object(Session, 'send', dummy_send) as mock_send: send_webhook(**job.kwargs) + + def test_duplicate_triggers(self): + """ + Test for erroneous duplicate event triggers resulting from saving an object multiple times + within the span of a single request. + """ + url = reverse('dcim:site_add') + request = RequestFactory().get(url) + request.id = uuid.uuid4() + request.user = self.user + + self.assertEqual(self.queue.count, 0, msg="Unexpected jobs found in queue") + + with event_tracking(request): + site = Site(name='Site 1', slug='site-1') + site.save() + + # Save the site a second time + site.save() + + self.assertEqual(self.queue.count, 1, msg="Duplicate jobs found in queue") diff --git a/netbox/netbox/context.py b/netbox/netbox/context.py index 56e41cb63..744c36df4 100644 --- a/netbox/netbox/context.py +++ b/netbox/netbox/context.py @@ -7,4 +7,4 @@ __all__ = ( current_request = ContextVar('current_request', default=None) -events_queue = ContextVar('events_queue', default=[]) +events_queue = ContextVar('events_queue', default=dict()) From fdad59c8cc7bad24261e3f265c1843a9056b44f8 Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Mon, 3 Jun 2024 07:47:53 -0500 Subject: [PATCH 45/67] Fixes: #16039 - Fix row highlighting on device components and VM interfaces (#16044) * Fix row highlighting * Minor fix for VMInterfaces * Move duplicated dicts into inheritable meta class * Add CableTerminationTable.Meta class for inheritance of the row_attrs to each descendant Meta class. --- netbox/dcim/tables/devices.py | 46 ++++++------------- .../virtualization/tables/virtualmachines.py | 2 + 2 files changed, 16 insertions(+), 32 deletions(-) diff --git a/netbox/dcim/tables/devices.py b/netbox/dcim/tables/devices.py index 4925fb517..7fa307bc8 100644 --- a/netbox/dcim/tables/devices.py +++ b/netbox/dcim/tables/devices.py @@ -43,14 +43,6 @@ MODULEBAY_STATUS = """ """ -def get_cabletermination_row_class(record): - if record.mark_connected: - return 'success' - elif record.cable: - return record.cable.get_status_color() - return '' - - # # Device roles # @@ -339,6 +331,14 @@ class CableTerminationTable(NetBoxTable): verbose_name=_('Mark Connected'), ) + class Meta: + row_attrs = { + 'data-name': lambda record: record.name, + 'data-mark-connected': lambda record: "true" if record.mark_connected else "false", + 'data-cable-status': lambda record: record.cable.status if record.cable else "", + 'data-type': lambda record: record.type + } + def value_link_peer(self, value): return ', '.join([ f"{termination.parent_object} > {termination}" for termination in value @@ -386,16 +386,13 @@ class DeviceConsolePortTable(ConsolePortTable): extra_buttons=CONSOLEPORT_BUTTONS ) - class Meta(DeviceComponentTable.Meta): + class Meta(CableTerminationTable.Meta, DeviceComponentTable.Meta): model = models.ConsolePort fields = ( 'pk', 'id', 'name', 'module_bay', 'module', 'label', 'type', 'speed', 'description', 'mark_connected', 'cable', 'cable_color', 'link_peer', 'connection', 'tags', 'actions' ) default_columns = ('pk', 'name', 'label', 'type', 'speed', 'description', 'cable', 'connection') - row_attrs = { - 'class': get_cabletermination_row_class - } class ConsoleServerPortTable(ModularDeviceComponentTable, PathEndpointTable): @@ -431,16 +428,13 @@ class DeviceConsoleServerPortTable(ConsoleServerPortTable): extra_buttons=CONSOLESERVERPORT_BUTTONS ) - class Meta(DeviceComponentTable.Meta): + class Meta(CableTerminationTable.Meta, DeviceComponentTable.Meta): model = models.ConsoleServerPort fields = ( 'pk', 'id', 'name', 'module_bay', 'module', 'label', 'type', 'speed', 'description', 'mark_connected', 'cable', 'cable_color', 'link_peer', 'connection', 'tags', 'actions', ) default_columns = ('pk', 'name', 'label', 'type', 'speed', 'description', 'cable', 'connection') - row_attrs = { - 'class': get_cabletermination_row_class - } class PowerPortTable(ModularDeviceComponentTable, PathEndpointTable): @@ -483,7 +477,7 @@ class DevicePowerPortTable(PowerPortTable): extra_buttons=POWERPORT_BUTTONS ) - class Meta(DeviceComponentTable.Meta): + class Meta(CableTerminationTable.Meta, DeviceComponentTable.Meta): model = models.PowerPort fields = ( 'pk', 'id', 'name', 'module_bay', 'module', 'label', 'type', 'maximum_draw', 'allocated_draw', @@ -492,9 +486,6 @@ class DevicePowerPortTable(PowerPortTable): default_columns = ( 'pk', 'name', 'label', 'type', 'maximum_draw', 'allocated_draw', 'description', 'cable', 'connection', ) - row_attrs = { - 'class': get_cabletermination_row_class - } class PowerOutletTable(ModularDeviceComponentTable, PathEndpointTable): @@ -534,7 +525,7 @@ class DevicePowerOutletTable(PowerOutletTable): extra_buttons=POWEROUTLET_BUTTONS ) - class Meta(DeviceComponentTable.Meta): + class Meta(CableTerminationTable.Meta, DeviceComponentTable.Meta): model = models.PowerOutlet fields = ( 'pk', 'id', 'name', 'module_bay', 'module', 'label', 'type', 'power_port', 'feed_leg', 'description', @@ -543,9 +534,6 @@ class DevicePowerOutletTable(PowerOutletTable): default_columns = ( 'pk', 'name', 'label', 'type', 'power_port', 'feed_leg', 'description', 'cable', 'connection', ) - row_attrs = { - 'class': get_cabletermination_row_class - } class BaseInterfaceTable(NetBoxTable): @@ -733,7 +721,7 @@ class DeviceFrontPortTable(FrontPortTable): extra_buttons=FRONTPORT_BUTTONS ) - class Meta(DeviceComponentTable.Meta): + class Meta(CableTerminationTable.Meta, DeviceComponentTable.Meta): model = models.FrontPort fields = ( 'pk', 'id', 'name', 'module_bay', 'module', 'label', 'type', 'rear_port', 'rear_port_position', @@ -742,9 +730,6 @@ class DeviceFrontPortTable(FrontPortTable): default_columns = ( 'pk', 'name', 'label', 'type', 'rear_port', 'rear_port_position', 'description', 'cable', 'link_peer', ) - row_attrs = { - 'class': get_cabletermination_row_class - } class RearPortTable(ModularDeviceComponentTable, CableTerminationTable): @@ -783,7 +768,7 @@ class DeviceRearPortTable(RearPortTable): extra_buttons=REARPORT_BUTTONS ) - class Meta(DeviceComponentTable.Meta): + class Meta(CableTerminationTable.Meta, DeviceComponentTable.Meta): model = models.RearPort fields = ( 'pk', 'id', 'name', 'module_bay', 'module', 'label', 'type', 'positions', 'description', 'mark_connected', @@ -792,9 +777,6 @@ class DeviceRearPortTable(RearPortTable): default_columns = ( 'pk', 'name', 'label', 'type', 'positions', 'description', 'cable', 'link_peer', ) - row_attrs = { - 'class': get_cabletermination_row_class - } class DeviceBayTable(DeviceComponentTable): diff --git a/netbox/virtualization/tables/virtualmachines.py b/netbox/virtualization/tables/virtualmachines.py index ba5360a62..9d194d268 100644 --- a/netbox/virtualization/tables/virtualmachines.py +++ b/netbox/virtualization/tables/virtualmachines.py @@ -173,6 +173,8 @@ class VirtualMachineVMInterfaceTable(VMInterfaceTable): default_columns = ('pk', 'name', 'enabled', 'mac_address', 'mtu', 'mode', 'description', 'ip_addresses') row_attrs = { 'data-name': lambda record: record.name, + 'data-virtual': lambda record: "true", + 'data-enabled': lambda record: "true" if record.enabled else "false", } From 8e48e939aab3b75a50c73cb46b2cc4c30f801ae8 Mon Sep 17 00:00:00 2001 From: Arthur Hanson Date: Mon, 3 Jun 2024 07:24:01 -0700 Subject: [PATCH 46/67] 16261 fix graphql lookup for MultiValueCharFilter fields (#16354) * 16261 fix graphql lookup for MultiValueCharFilter fields * 16261 fix graphql lookup for MultiValueCharFilter fields * 16261 fixup test * 16261 fixup test * Omit redundant assignment --------- Co-authored-by: Jeremy Stretch --- netbox/ipam/tests/test_api.py | 2 +- netbox/netbox/graphql/filter_mixins.py | 5 +++-- netbox/utilities/testing/api.py | 12 ++++++++++-- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/netbox/ipam/tests/test_api.py b/netbox/ipam/tests/test_api.py index 20ba35c6b..2cf7a2f1c 100644 --- a/netbox/ipam/tests/test_api.py +++ b/netbox/ipam/tests/test_api.py @@ -649,7 +649,7 @@ class IPAddressTest(APIViewTestCases.APIViewTestCase): 'description': 'New description', } graphql_filter = { - 'address': '192.168.0.1/24', + 'address': {'lookup': 'i_exact', 'value': '192.168.0.1/24'}, } @classmethod diff --git a/netbox/netbox/graphql/filter_mixins.py b/netbox/netbox/graphql/filter_mixins.py index 322435c72..5075e9aa2 100644 --- a/netbox/netbox/graphql/filter_mixins.py +++ b/netbox/netbox/graphql/filter_mixins.py @@ -23,8 +23,9 @@ def map_strawberry_type(field): elif isinstance(field, MultiValueArrayFilter): pass elif isinstance(field, MultiValueCharFilter): - should_create_function = True - attr_type = List[str] | None + # Note: Need to use the legacy FilterLookup from filters, not from + # strawberry_django.FilterLookup as we currently have USE_DEPRECATED_FILTERS + attr_type = strawberry_django.filters.FilterLookup[str] | None elif isinstance(field, MultiValueDateFilter): attr_type = auto elif isinstance(field, MultiValueDateTimeFilter): diff --git a/netbox/utilities/testing/api.py b/netbox/utilities/testing/api.py index 019d6e6ca..62ac817e2 100644 --- a/netbox/utilities/testing/api.py +++ b/netbox/utilities/testing/api.py @@ -493,10 +493,18 @@ class APIViewTestCases: def _build_filtered_query(self, name, **filters): """ - Create a filtered query: i.e. ip_address_list(filters: {address: "1.1.1.1/24"}){. + Create a filtered query: i.e. device_list(filters: {name: {i_contains: "akron"}}){. """ + # TODO: This should be extended to support AND, OR multi-lookups if filters: - filter_string = ', '.join(f'{k}: "{v}"' for k, v in filters.items()) + for field_name, params in filters.items(): + lookup = params['lookup'] + value = params['value'] + if lookup: + query = f'{{{lookup}: "{value}"}}' + filter_string = f'{field_name}: {query}' + else: + filter_string = f'{field_name}: "{value}"' filter_string = f'(filters: {{{filter_string}}})' else: filter_string = '' From 291e0665d07c257f9ee98eee4db5720ab2b3dba9 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 4 Jun 2024 05:02:13 +0000 Subject: [PATCH 47/67] Update source translation strings --- netbox/translations/en/LC_MESSAGES/django.po | 198 +++++++++---------- 1 file changed, 99 insertions(+), 99 deletions(-) diff --git a/netbox/translations/en/LC_MESSAGES/django.po b/netbox/translations/en/LC_MESSAGES/django.po index bb938e9d7..af150e24c 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-06-01 05:02+0000\n" +"POT-Creation-Date: 2024-06-04 05:02+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -172,7 +172,7 @@ msgstr "" #: netbox/dcim/forms/filtersets.py:1524 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:668 -#: netbox/dcim/forms/object_create.py:391 netbox/dcim/tables/devices.py:158 +#: netbox/dcim/forms/object_create.py:391 netbox/dcim/tables/devices.py:150 #: 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:129 netbox/extras/filtersets.py:477 @@ -492,8 +492,8 @@ msgstr "" #: netbox/dcim/forms/bulk_edit.py:1071 netbox/dcim/forms/bulk_edit.py:1098 #: netbox/dcim/forms/bulk_edit.py:1571 netbox/dcim/forms/filtersets.py:983 #: netbox/dcim/forms/filtersets.py:1359 netbox/dcim/forms/filtersets.py:1380 -#: netbox/dcim/tables/devices.py:699 netbox/dcim/tables/devices.py:759 -#: netbox/dcim/tables/devices.py:986 netbox/dcim/tables/devicetypes.py:245 +#: netbox/dcim/tables/devices.py:687 netbox/dcim/tables/devices.py:744 +#: netbox/dcim/tables/devices.py:968 netbox/dcim/tables/devicetypes.py:245 #: netbox/dcim/tables/devicetypes.py:260 netbox/dcim/tables/racks.py:32 #: netbox/extras/forms/bulk_edit.py:260 netbox/extras/tables/tables.py:333 #: netbox/templates/circuits/circuittype.html:30 @@ -527,8 +527,8 @@ msgstr "" #: netbox/dcim/forms/filtersets.py:1354 netbox/dcim/forms/filtersets.py:1375 #: netbox/dcim/forms/model_forms.py:643 netbox/dcim/forms/model_forms.py:649 #: 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:183 -#: netbox/dcim/tables/devices.py:815 netbox/dcim/tables/power.py:77 +#: netbox/dcim/forms/object_import.py:145 netbox/dcim/tables/devices.py:175 +#: netbox/dcim/tables/devices.py:797 netbox/dcim/tables/power.py:77 #: netbox/extras/forms/bulk_import.py:39 netbox/extras/tables/tables.py:283 #: netbox/extras/tables/tables.py:355 netbox/extras/tables/tables.py:473 #: netbox/netbox/tables/tables.py:239 netbox/templates/circuits/circuit.html:30 @@ -583,8 +583,8 @@ msgstr "" #: netbox/dcim/forms/filtersets.py:282 netbox/dcim/forms/filtersets.py:728 #: netbox/dcim/forms/filtersets.py:843 netbox/dcim/forms/filtersets.py:877 #: netbox/dcim/forms/filtersets.py:978 netbox/dcim/forms/filtersets.py:1089 -#: netbox/dcim/tables/devices.py:145 netbox/dcim/tables/devices.py:818 -#: netbox/dcim/tables/devices.py:1046 netbox/dcim/tables/modules.py:69 +#: netbox/dcim/tables/devices.py:137 netbox/dcim/tables/devices.py:800 +#: netbox/dcim/tables/devices.py:1028 netbox/dcim/tables/modules.py:69 #: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:66 #: netbox/dcim/tables/sites.py:82 netbox/dcim/tables/sites.py:133 #: netbox/ipam/forms/bulk_edit.py:241 netbox/ipam/forms/bulk_edit.py:290 @@ -868,7 +868,7 @@ msgstr "" #: netbox/dcim/forms/filtersets.py:1406 netbox/dcim/forms/filtersets.py:1420 #: 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:673 -#: netbox/dcim/tables/devices.py:162 netbox/dcim/tables/power.py:30 +#: netbox/dcim/tables/devices.py:154 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:457 netbox/ipam/forms/filtersets.py:173 @@ -913,7 +913,7 @@ msgstr "" #: netbox/dcim/forms/filtersets.py:1055 netbox/dcim/forms/filtersets.py:1468 #: netbox/dcim/forms/filtersets.py:1492 netbox/dcim/forms/filtersets.py:1516 #: netbox/dcim/forms/model_forms.py:111 netbox/dcim/forms/object_create.py:375 -#: netbox/dcim/tables/devices.py:148 netbox/dcim/tables/sites.py:85 +#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/sites.py:85 #: netbox/extras/filtersets.py:455 netbox/ipam/forms/bulk_edit.py:206 #: netbox/ipam/forms/bulk_edit.py:438 netbox/ipam/forms/bulk_edit.py:512 #: netbox/ipam/forms/filtersets.py:217 netbox/ipam/forms/filtersets.py:422 @@ -1207,14 +1207,14 @@ msgstr "" #: netbox/core/tables/jobs.py:14 netbox/core/tables/plugins.py:13 #: netbox/core/tables/tasks.py:11 netbox/core/tables/tasks.py:115 #: netbox/dcim/forms/filtersets.py:61 netbox/dcim/forms/object_create.py:43 -#: netbox/dcim/tables/devices.py:60 netbox/dcim/tables/devices.py:97 -#: netbox/dcim/tables/devices.py:139 netbox/dcim/tables/devices.py:294 -#: netbox/dcim/tables/devices.py:380 netbox/dcim/tables/devices.py:424 -#: netbox/dcim/tables/devices.py:476 netbox/dcim/tables/devices.py:528 -#: netbox/dcim/tables/devices.py:644 netbox/dcim/tables/devices.py:726 -#: netbox/dcim/tables/devices.py:776 netbox/dcim/tables/devices.py:842 -#: netbox/dcim/tables/devices.py:957 netbox/dcim/tables/devices.py:977 -#: netbox/dcim/tables/devices.py:1006 netbox/dcim/tables/devices.py:1036 +#: netbox/dcim/tables/devices.py:52 netbox/dcim/tables/devices.py:89 +#: netbox/dcim/tables/devices.py:131 netbox/dcim/tables/devices.py:286 +#: netbox/dcim/tables/devices.py:380 netbox/dcim/tables/devices.py:421 +#: netbox/dcim/tables/devices.py:470 netbox/dcim/tables/devices.py:519 +#: netbox/dcim/tables/devices.py:632 netbox/dcim/tables/devices.py:714 +#: netbox/dcim/tables/devices.py:761 netbox/dcim/tables/devices.py:824 +#: netbox/dcim/tables/devices.py:939 netbox/dcim/tables/devices.py:959 +#: netbox/dcim/tables/devices.py:988 netbox/dcim/tables/devices.py:1018 #: 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 @@ -1304,7 +1304,7 @@ msgstr "" #: netbox/virtualization/tables/clusters.py:62 #: netbox/virtualization/tables/virtualmachines.py:54 #: netbox/virtualization/tables/virtualmachines.py:132 -#: netbox/virtualization/tables/virtualmachines.py:185 +#: netbox/virtualization/tables/virtualmachines.py:187 #: 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 @@ -1344,7 +1344,7 @@ msgstr "" #: netbox/circuits/tables/circuits.py:76 netbox/circuits/tables/providers.py:48 #: netbox/circuits/tables/providers.py:82 -#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1019 +#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1001 #: netbox/dcim/tables/devicetypes.py:92 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 @@ -1515,7 +1515,7 @@ 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:1293 netbox/dcim/forms/filtersets.py:1276 -#: netbox/dcim/tables/devices.py:553 netbox/dcim/tables/devicetypes.py:221 +#: netbox/dcim/tables/devices.py:541 netbox/dcim/tables/devicetypes.py:221 #: 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 @@ -2163,7 +2163,7 @@ msgstr "" #: 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:1007 #: netbox/dcim/forms/model_forms.py:1446 netbox/dcim/forms/object_import.py:176 -#: netbox/dcim/tables/devices.py:652 netbox/dcim/tables/devices.py:937 +#: netbox/dcim/tables/devices.py:640 netbox/dcim/tables/devices.py:919 #: netbox/extras/tables/tables.py:186 netbox/ipam/tables/fhrp.py:59 #: netbox/ipam/tables/ip.py:374 netbox/ipam/tables/services.py:44 #: netbox/templates/dcim/interface.html:102 @@ -2297,7 +2297,7 @@ msgstr "" #: netbox/dcim/choices.py:979 netbox/dcim/forms/bulk_edit.py:1303 #: netbox/dcim/forms/bulk_import.py:785 netbox/dcim/forms/model_forms.py:919 -#: netbox/dcim/tables/devices.py:656 netbox/templates/dcim/interface.html:106 +#: netbox/dcim/tables/devices.py:644 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 @@ -2781,7 +2781,7 @@ msgid "Virtual Chassis (ID)" msgstr "" #: netbox/dcim/filtersets.py:1401 netbox/dcim/forms/filtersets.py:107 -#: netbox/dcim/tables/devices.py:211 netbox/netbox/navigation/menu.py:66 +#: netbox/dcim/tables/devices.py:203 netbox/netbox/navigation/menu.py:66 #: netbox/templates/dcim/device.html:120 #: netbox/templates/dcim/device_edit.html:93 #: netbox/templates/dcim/virtualchassis.html:20 @@ -2811,7 +2811,7 @@ msgstr "" #: netbox/dcim/forms/bulk_import.py:836 netbox/dcim/forms/filtersets.py:1334 #: netbox/dcim/forms/model_forms.py:1322 #: netbox/dcim/models/device_components.py:712 -#: netbox/dcim/tables/devices.py:622 netbox/ipam/filtersets.py:316 +#: netbox/dcim/tables/devices.py:610 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:227 netbox/ipam/forms/bulk_edit.py:282 @@ -2852,7 +2852,7 @@ msgid "L2VPN (ID)" msgstr "" #: netbox/dcim/filtersets.py:1563 netbox/dcim/forms/filtersets.py:1339 -#: netbox/dcim/tables/devices.py:570 netbox/ipam/filtersets.py:1022 +#: netbox/dcim/tables/devices.py:558 netbox/ipam/filtersets.py:1022 #: netbox/ipam/forms/filtersets.py:525 netbox/ipam/tables/vlans.py:133 #: netbox/templates/dcim/interface.html:93 netbox/templates/ipam/vlan.html:66 #: netbox/templates/vpn/l2vpntermination.html:12 @@ -2902,7 +2902,7 @@ msgstr "" msgid "Wireless LAN" msgstr "" -#: netbox/dcim/filtersets.py:1667 netbox/dcim/tables/devices.py:609 +#: netbox/dcim/filtersets.py:1667 netbox/dcim/tables/devices.py:597 msgid "Wireless link" msgstr "" @@ -2957,8 +2957,8 @@ msgstr "" #: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1396 #: netbox/dcim/forms/model_forms.py:431 netbox/dcim/forms/model_forms.py:486 #: netbox/dcim/forms/object_create.py:197 -#: netbox/dcim/forms/object_create.py:353 netbox/dcim/tables/devices.py:170 -#: netbox/dcim/tables/devices.py:702 netbox/dcim/tables/devicetypes.py:242 +#: netbox/dcim/forms/object_create.py:353 netbox/dcim/tables/devices.py:162 +#: netbox/dcim/tables/devices.py:690 netbox/dcim/tables/devicetypes.py:242 #: netbox/templates/dcim/device.html:43 netbox/templates/dcim/device.html:130 #: netbox/templates/dcim/modulebay.html:34 #: netbox/templates/dcim/virtualchassis.html:66 @@ -3035,8 +3035,8 @@ msgstr "" #: netbox/dcim/forms/filtersets.py:706 netbox/dcim/forms/filtersets.py:1426 #: netbox/dcim/forms/model_forms.py:219 netbox/dcim/forms/model_forms.py:1015 #: netbox/dcim/forms/model_forms.py:1454 netbox/dcim/forms/object_import.py:181 -#: netbox/dcim/tables/devices.py:174 netbox/dcim/tables/devices.py:810 -#: netbox/dcim/tables/devices.py:921 netbox/dcim/tables/devicetypes.py:300 +#: netbox/dcim/tables/devices.py:166 netbox/dcim/tables/devices.py:792 +#: netbox/dcim/tables/devices.py:903 netbox/dcim/tables/devicetypes.py:300 #: netbox/dcim/tables/racks.py:69 netbox/extras/filtersets.py:504 #: netbox/ipam/forms/bulk_edit.py:246 netbox/ipam/forms/bulk_edit.py:295 #: netbox/ipam/forms/bulk_edit.py:343 netbox/ipam/forms/bulk_edit.py:549 @@ -3159,7 +3159,7 @@ msgstr "" #: netbox/dcim/forms/filtersets.py:954 netbox/dcim/forms/filtersets.py:1086 #: 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:700 -#: netbox/dcim/forms/object_create.py:400 netbox/dcim/tables/devices.py:166 +#: netbox/dcim/forms/object_create.py:400 netbox/dcim/tables/devices.py:158 #: netbox/dcim/tables/power.py:70 netbox/dcim/tables/racks.py:148 #: netbox/ipam/forms/bulk_edit.py:465 netbox/ipam/forms/filtersets.py:442 #: netbox/ipam/forms/model_forms.py:610 netbox/templates/dcim/device.html:30 @@ -3193,8 +3193,8 @@ msgstr "" #: 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:1020 netbox/dcim/forms/model_forms.py:1459 -#: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:101 -#: netbox/dcim/tables/devices.py:177 netbox/dcim/tables/devices.py:924 +#: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:93 +#: netbox/dcim/tables/devices.py:169 netbox/dcim/tables/devices.py:906 #: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:304 #: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60 #: netbox/templates/dcim/devicetype.html:14 @@ -3277,7 +3277,7 @@ msgstr "" #: netbox/dcim/forms/bulk_edit.py:593 netbox/dcim/forms/bulk_import.py:443 #: netbox/dcim/forms/filtersets.py:725 netbox/dcim/forms/model_forms.py:394 -#: netbox/dcim/forms/model_forms.py:456 netbox/dcim/tables/devices.py:187 +#: netbox/dcim/forms/model_forms.py:456 netbox/dcim/tables/devices.py:179 #: netbox/extras/filtersets.py:515 netbox/templates/dcim/device.html:184 #: netbox/templates/dcim/platform.html:26 #: netbox/templates/virtualization/virtualmachine.html:27 @@ -3309,13 +3309,13 @@ msgstr "" #: netbox/dcim/forms/model_forms.py:794 netbox/dcim/forms/model_forms.py:1153 #: netbox/dcim/forms/model_forms.py:1608 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:290 -#: netbox/dcim/tables/devices.py:359 netbox/dcim/tables/devices.py:403 -#: netbox/dcim/tables/devices.py:448 netbox/dcim/tables/devices.py:502 -#: netbox/dcim/tables/devices.py:594 netbox/dcim/tables/devices.py:692 -#: netbox/dcim/tables/devices.py:752 netbox/dcim/tables/devices.py:802 -#: netbox/dcim/tables/devices.py:862 netbox/dcim/tables/devices.py:914 -#: netbox/dcim/tables/devices.py:1040 netbox/dcim/tables/modules.py:52 +#: netbox/dcim/tables/connections.py:60 netbox/dcim/tables/devices.py:282 +#: netbox/dcim/tables/devices.py:359 netbox/dcim/tables/devices.py:400 +#: netbox/dcim/tables/devices.py:442 netbox/dcim/tables/devices.py:493 +#: netbox/dcim/tables/devices.py:582 netbox/dcim/tables/devices.py:680 +#: netbox/dcim/tables/devices.py:737 netbox/dcim/tables/devices.py:784 +#: netbox/dcim/tables/devices.py:844 netbox/dcim/tables/devices.py:896 +#: netbox/dcim/tables/devices.py:1022 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:317 netbox/ipam/forms/model_forms.py:725 @@ -3489,7 +3489,7 @@ msgid "Wireless role" msgstr "" #: netbox/dcim/forms/bulk_edit.py:1186 netbox/dcim/forms/model_forms.py:609 -#: netbox/dcim/forms/model_forms.py:1168 netbox/dcim/tables/devices.py:313 +#: netbox/dcim/forms/model_forms.py:1168 netbox/dcim/tables/devices.py:305 #: netbox/templates/dcim/consoleport.html:24 #: netbox/templates/dcim/consoleserverport.html:24 #: netbox/templates/dcim/frontport.html:24 @@ -3501,7 +3501,7 @@ msgstr "" msgid "Module" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:1313 netbox/dcim/tables/devices.py:661 +#: netbox/dcim/forms/bulk_edit.py:1313 netbox/dcim/tables/devices.py:649 #: netbox/templates/dcim/interface.html:110 msgid "LAG" msgstr "" @@ -3513,7 +3513,7 @@ msgstr "" #: netbox/dcim/forms/bulk_edit.py:1324 netbox/dcim/forms/bulk_import.py:659 #: netbox/dcim/forms/bulk_import.py:685 netbox/dcim/forms/filtersets.py:1169 #: netbox/dcim/forms/filtersets.py:1191 netbox/dcim/forms/filtersets.py:1264 -#: netbox/dcim/tables/devices.py:606 +#: netbox/dcim/tables/devices.py:594 #: netbox/templates/circuits/inc/circuit_termination_fields.html:67 #: netbox/templates/dcim/consoleport.html:40 #: netbox/templates/dcim/consoleserverport.html:40 @@ -3542,14 +3542,14 @@ msgid "VLAN group" msgstr "" #: netbox/dcim/forms/bulk_edit.py:1369 netbox/dcim/forms/model_forms.py:1304 -#: netbox/dcim/tables/devices.py:579 +#: netbox/dcim/tables/devices.py:567 #: netbox/virtualization/forms/bulk_edit.py:248 #: netbox/virtualization/forms/model_forms.py:326 msgid "Untagged VLAN" msgstr "" #: netbox/dcim/forms/bulk_edit.py:1377 netbox/dcim/forms/model_forms.py:1313 -#: netbox/dcim/tables/devices.py:585 +#: netbox/dcim/tables/devices.py:573 #: netbox/virtualization/forms/bulk_edit.py:256 #: netbox/virtualization/forms/model_forms.py:335 msgid "Tagged VLANs" @@ -3560,7 +3560,7 @@ msgid "Wireless LAN group" msgstr "" #: netbox/dcim/forms/bulk_edit.py:1392 netbox/dcim/forms/model_forms.py:1291 -#: netbox/dcim/tables/devices.py:615 netbox/netbox/navigation/menu.py:133 +#: netbox/dcim/tables/devices.py:603 netbox/netbox/navigation/menu.py:133 #: netbox/templates/dcim/interface.html:280 #: netbox/wireless/tables/wirelesslan.py:24 msgid "Wireless LANs" @@ -3740,7 +3740,7 @@ msgid "Virtual chassis" msgstr "" #: netbox/dcim/forms/bulk_import.py:462 netbox/dcim/forms/model_forms.py:465 -#: netbox/dcim/tables/devices.py:207 netbox/extras/filtersets.py:548 +#: netbox/dcim/tables/devices.py:199 netbox/extras/filtersets.py:548 #: netbox/extras/forms/filtersets.py:331 netbox/ipam/forms/bulk_edit.py:479 #: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:459 #: netbox/ipam/forms/model_forms.py:627 netbox/templates/dcim/device.html:232 @@ -3935,7 +3935,7 @@ msgstr "" msgid "Physical medium classification" msgstr "" -#: netbox/dcim/forms/bulk_import.py:973 netbox/dcim/tables/devices.py:823 +#: netbox/dcim/forms/bulk_import.py:973 netbox/dcim/tables/devices.py:805 msgid "Installed device" msgstr "" @@ -4024,7 +4024,7 @@ msgid "{side_upper} side termination not found: {device} {name}" msgstr "" #: netbox/dcim/forms/bulk_import.py:1244 netbox/dcim/forms/model_forms.py:730 -#: netbox/dcim/tables/devices.py:1010 netbox/templates/dcim/device.html:131 +#: netbox/dcim/tables/devices.py:992 netbox/templates/dcim/device.html:131 #: netbox/templates/dcim/virtualchassis.html:27 #: netbox/templates/dcim/virtualchassis.html:67 msgid "Master" @@ -4205,7 +4205,7 @@ msgid "Transmit power (dBm)" msgstr "" #: netbox/dcim/forms/filtersets.py:1350 netbox/dcim/forms/filtersets.py:1372 -#: netbox/dcim/tables/devices.py:324 netbox/templates/dcim/cable.html:12 +#: netbox/dcim/tables/devices.py:316 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 @@ -4215,7 +4215,7 @@ msgstr "" msgid "Cable" msgstr "" -#: netbox/dcim/forms/filtersets.py:1442 netbox/dcim/tables/devices.py:933 +#: netbox/dcim/forms/filtersets.py:1442 netbox/dcim/tables/devices.py:915 msgid "Discovered" msgstr "" @@ -4381,7 +4381,7 @@ msgid "Front Port" msgstr "" #: netbox/dcim/forms/model_forms.py:1093 netbox/dcim/forms/model_forms.py:1531 -#: netbox/dcim/tables/devices.py:705 +#: netbox/dcim/tables/devices.py:693 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53 #: netbox/templates/dcim/consoleport.html:79 #: netbox/templates/dcim/consoleserverport.html:80 @@ -4394,7 +4394,7 @@ msgid "Rear Port" msgstr "" #: netbox/dcim/forms/model_forms.py:1094 netbox/dcim/forms/model_forms.py:1532 -#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:509 +#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:500 #: netbox/templates/dcim/poweroutlet.html:44 #: netbox/templates/dcim/powerport.html:17 msgid "Power Port" @@ -4481,7 +4481,7 @@ msgid "" msgstr "" #: netbox/dcim/forms/object_create.py:110 -#: netbox/dcim/forms/object_create.py:271 netbox/dcim/tables/devices.py:257 +#: netbox/dcim/forms/object_create.py:271 netbox/dcim/tables/devices.py:249 msgid "Rear ports" msgstr "" @@ -4511,7 +4511,7 @@ msgid "" "selected number of rear port positions ({rearport_count})." msgstr "" -#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1016 +#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:998 #: 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 @@ -5968,7 +5968,7 @@ msgstr "" msgid "Reachable" msgstr "" -#: netbox/dcim/tables/devices.py:66 netbox/dcim/tables/devices.py:111 +#: netbox/dcim/tables/devices.py:58 netbox/dcim/tables/devices.py:103 #: netbox/dcim/tables/racks.py:81 netbox/dcim/tables/sites.py:143 #: netbox/extras/tables/tables.py:435 netbox/netbox/navigation/menu.py:56 #: netbox/netbox/navigation/menu.py:60 netbox/netbox/navigation/menu.py:62 @@ -5978,12 +5978,12 @@ msgstr "" msgid "Devices" msgstr "" -#: netbox/dcim/tables/devices.py:71 netbox/dcim/tables/devices.py:116 +#: netbox/dcim/tables/devices.py:63 netbox/dcim/tables/devices.py:108 #: netbox/virtualization/tables/clusters.py:88 msgid "VMs" msgstr "" -#: netbox/dcim/tables/devices.py:105 netbox/dcim/tables/devices.py:221 +#: netbox/dcim/tables/devices.py:97 netbox/dcim/tables/devices.py:213 #: netbox/extras/forms/model_forms.py:506 netbox/templates/dcim/device.html:112 #: netbox/templates/dcim/device/render_config.html:11 #: netbox/templates/dcim/device/render_config.html:14 @@ -5997,11 +5997,11 @@ msgstr "" msgid "Config Template" msgstr "" -#: netbox/dcim/tables/devices.py:155 netbox/templates/dcim/sitegroup.html:26 +#: netbox/dcim/tables/devices.py:147 netbox/templates/dcim/sitegroup.html:26 msgid "Site Group" msgstr "" -#: netbox/dcim/tables/devices.py:192 netbox/dcim/tables/devices.py:1051 +#: netbox/dcim/tables/devices.py:184 netbox/dcim/tables/devices.py:1033 #: netbox/ipam/forms/bulk_import.py:511 netbox/ipam/forms/model_forms.py:304 #: netbox/ipam/forms/model_forms.py:313 netbox/ipam/tables/ip.py:352 #: netbox/ipam/tables/ip.py:418 netbox/ipam/tables/ip.py:441 @@ -6010,50 +6010,50 @@ msgstr "" msgid "IP Address" msgstr "" -#: netbox/dcim/tables/devices.py:196 netbox/dcim/tables/devices.py:1055 +#: netbox/dcim/tables/devices.py:188 netbox/dcim/tables/devices.py:1037 #: netbox/virtualization/tables/virtualmachines.py:85 msgid "IPv4 Address" msgstr "" -#: netbox/dcim/tables/devices.py:200 netbox/dcim/tables/devices.py:1059 +#: netbox/dcim/tables/devices.py:192 netbox/dcim/tables/devices.py:1041 #: netbox/virtualization/tables/virtualmachines.py:89 msgid "IPv6 Address" msgstr "" -#: netbox/dcim/tables/devices.py:215 +#: netbox/dcim/tables/devices.py:207 msgid "VC Position" msgstr "" -#: netbox/dcim/tables/devices.py:218 +#: netbox/dcim/tables/devices.py:210 msgid "VC Priority" msgstr "" -#: netbox/dcim/tables/devices.py:225 netbox/templates/dcim/device_edit.html:38 +#: netbox/dcim/tables/devices.py:217 netbox/templates/dcim/device_edit.html:38 #: netbox/templates/dcim/devicebay_populate.html:16 msgid "Parent Device" msgstr "" -#: netbox/dcim/tables/devices.py:230 +#: netbox/dcim/tables/devices.py:222 msgid "Position (Device Bay)" msgstr "" -#: netbox/dcim/tables/devices.py:239 +#: netbox/dcim/tables/devices.py:231 msgid "Console ports" msgstr "" -#: netbox/dcim/tables/devices.py:242 +#: netbox/dcim/tables/devices.py:234 msgid "Console server ports" msgstr "" -#: netbox/dcim/tables/devices.py:245 +#: netbox/dcim/tables/devices.py:237 msgid "Power ports" msgstr "" -#: netbox/dcim/tables/devices.py:248 +#: netbox/dcim/tables/devices.py:240 msgid "Power outlets" msgstr "" -#: netbox/dcim/tables/devices.py:251 netbox/dcim/tables/devices.py:1064 +#: netbox/dcim/tables/devices.py:243 netbox/dcim/tables/devices.py:1046 #: netbox/dcim/tables/devicetypes.py:125 netbox/dcim/views.py:1006 #: netbox/dcim/views.py:1245 netbox/dcim/views.py:1931 #: netbox/netbox/navigation/menu.py:81 netbox/netbox/navigation/menu.py:237 @@ -6071,28 +6071,28 @@ msgstr "" msgid "Interfaces" msgstr "" -#: netbox/dcim/tables/devices.py:254 +#: netbox/dcim/tables/devices.py:246 msgid "Front ports" msgstr "" -#: netbox/dcim/tables/devices.py:260 +#: netbox/dcim/tables/devices.py:252 msgid "Device bays" msgstr "" -#: netbox/dcim/tables/devices.py:263 +#: netbox/dcim/tables/devices.py:255 msgid "Module bays" msgstr "" -#: netbox/dcim/tables/devices.py:266 +#: netbox/dcim/tables/devices.py:258 msgid "Inventory items" msgstr "" -#: netbox/dcim/tables/devices.py:305 netbox/dcim/tables/modules.py:56 +#: netbox/dcim/tables/devices.py:297 netbox/dcim/tables/modules.py:56 #: netbox/templates/dcim/modulebay.html:17 msgid "Module Bay" msgstr "" -#: netbox/dcim/tables/devices.py:318 netbox/dcim/tables/devicetypes.py:48 +#: netbox/dcim/tables/devices.py:310 netbox/dcim/tables/devicetypes.py:48 #: netbox/dcim/tables/devicetypes.py:140 netbox/dcim/views.py:1081 #: netbox/dcim/views.py:2024 netbox/netbox/navigation/menu.py:90 #: netbox/templates/dcim/device/base.html:52 @@ -6103,27 +6103,27 @@ msgstr "" msgid "Inventory Items" msgstr "" -#: netbox/dcim/tables/devices.py:330 +#: netbox/dcim/tables/devices.py:322 msgid "Cable Color" msgstr "" -#: netbox/dcim/tables/devices.py:336 +#: netbox/dcim/tables/devices.py:328 msgid "Link Peers" msgstr "" -#: netbox/dcim/tables/devices.py:339 +#: netbox/dcim/tables/devices.py:331 msgid "Mark Connected" msgstr "" -#: netbox/dcim/tables/devices.py:455 +#: netbox/dcim/tables/devices.py:449 msgid "Maximum draw (W)" msgstr "" -#: netbox/dcim/tables/devices.py:458 +#: netbox/dcim/tables/devices.py:452 msgid "Allocated draw (W)" msgstr "" -#: netbox/dcim/tables/devices.py:558 netbox/ipam/forms/model_forms.py:747 +#: netbox/dcim/tables/devices.py:546 netbox/ipam/forms/model_forms.py:747 #: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:602 #: netbox/ipam/views.py:701 netbox/netbox/navigation/menu.py:145 #: netbox/netbox/navigation/menu.py:147 @@ -6135,12 +6135,12 @@ msgstr "" msgid "IP Addresses" msgstr "" -#: netbox/dcim/tables/devices.py:564 netbox/netbox/navigation/menu.py:189 +#: netbox/dcim/tables/devices.py:552 netbox/netbox/navigation/menu.py:189 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "" -#: netbox/dcim/tables/devices.py:576 netbox/templates/dcim/interface.html:89 +#: netbox/dcim/tables/devices.py:564 netbox/templates/dcim/interface.html:89 #: netbox/templates/virtualization/vminterface.html:67 #: netbox/templates/vpn/tunnel.html:18 #: netbox/templates/vpn/tunneltermination.html:13 @@ -6151,37 +6151,37 @@ msgstr "" msgid "Tunnel" msgstr "" -#: netbox/dcim/tables/devices.py:601 netbox/dcim/tables/devicetypes.py:224 +#: netbox/dcim/tables/devices.py:589 netbox/dcim/tables/devicetypes.py:224 #: netbox/templates/dcim/interface.html:65 msgid "Management Only" msgstr "" -#: netbox/dcim/tables/devices.py:619 +#: netbox/dcim/tables/devices.py:607 msgid "VDCs" msgstr "" -#: netbox/dcim/tables/devices.py:870 netbox/templates/dcim/modulebay.html:49 +#: netbox/dcim/tables/devices.py:852 netbox/templates/dcim/modulebay.html:49 msgid "Installed Module" msgstr "" -#: netbox/dcim/tables/devices.py:873 +#: netbox/dcim/tables/devices.py:855 msgid "Module Serial" msgstr "" -#: netbox/dcim/tables/devices.py:877 +#: netbox/dcim/tables/devices.py:859 msgid "Module Asset Tag" msgstr "" -#: netbox/dcim/tables/devices.py:886 +#: netbox/dcim/tables/devices.py:868 msgid "Module Status" msgstr "" -#: netbox/dcim/tables/devices.py:928 netbox/dcim/tables/devicetypes.py:308 +#: netbox/dcim/tables/devices.py:910 netbox/dcim/tables/devicetypes.py:308 #: netbox/templates/dcim/inventoryitem.html:40 msgid "Component" msgstr "" -#: netbox/dcim/tables/devices.py:983 +#: netbox/dcim/tables/devices.py:965 msgid "Items" msgstr "" @@ -6770,12 +6770,12 @@ msgstr "" msgid "Show your personal bookmarks" msgstr "" -#: netbox/extras/events.py:128 +#: netbox/extras/events.py:134 #, python-brace-format msgid "Unknown action type for an event rule: {action_type}" msgstr "" -#: netbox/extras/events.py:176 +#: netbox/extras/events.py:182 #, python-brace-format msgid "Cannot import events pipeline {name} error: {error}" msgstr "" @@ -8156,7 +8156,7 @@ msgstr "" msgid "Database changes have been reverted due to error." msgstr "" -#: netbox/extras/signals.py:146 +#: netbox/extras/signals.py:133 #, python-brace-format msgid "Deletion is prevented by a protection rule: {message}" msgstr "" @@ -8937,7 +8937,7 @@ msgstr "" #: netbox/virtualization/forms/filtersets.py:238 #: netbox/virtualization/forms/model_forms.py:220 #: netbox/virtualization/tables/virtualmachines.py:128 -#: netbox/virtualization/tables/virtualmachines.py:181 netbox/vpn/choices.py:45 +#: netbox/virtualization/tables/virtualmachines.py:183 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 From 7be003f5a0385ef0fa489c8ad0d7dc0d4669db28 Mon Sep 17 00:00:00 2001 From: "Jamie (Bear) Murphy" <1613241+ITJamie@users.noreply.github.com> Date: Tue, 4 Jun 2024 13:49:08 +0100 Subject: [PATCH 48/67] Allow plugins to extend objectchange view (#16371) * allow plugins to extend objectchangeview with panels * replace tabs with spaces * Update netbox/templates/extras/objectchange.html Co-authored-by: Jeremy Stretch * Eliminate excessive vertical margin --------- Co-authored-by: Jeremy Stretch --- netbox/templates/extras/objectchange.html | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/netbox/templates/extras/objectchange.html b/netbox/templates/extras/objectchange.html index 368a71821..ffd6e77fa 100644 --- a/netbox/templates/extras/objectchange.html +++ b/netbox/templates/extras/objectchange.html @@ -1,5 +1,6 @@ {% extends 'generic/object.html' %} {% load helpers %} +{% load plugins %} {% load i18n %} {% block title %}{{ object }}{% endblock %} @@ -22,7 +23,7 @@ {% block subtitle %}{% endblock %} {% block content %} -

7yopX=2O8Lq;a^c+@c8s1 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 Jvh^+c{{S{PWjX)= delta 62902 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 bzS|Ro#JcBODIlcJW8cz#A?Kd?)=%|+$<`1k diff --git a/requirements.txt b/requirements.txt index 9c3edf6ee..f09cfebad 100644 --- a/requirements.txt +++ b/requirements.txt @@ -20,17 +20,17 @@ feedparser==6.0.11 gunicorn==22.0.0 Jinja2==3.1.4 Markdown==3.6 -mkdocs-material==9.5.22 +mkdocs-material==9.5.24 mkdocstrings[python-legacy]==0.25.1 netaddr==1.2.1 nh3==0.2.17 Pillow==10.3.0 psycopg[c,pool]==3.1.19 PyYAML==6.0.1 -requests==2.31.0 +requests==2.32.2 social-auth-app-django==5.4.1 social-auth-core==4.5.4 -strawberry-graphql==0.229.0 +strawberry-graphql==0.230.0 strawberry-graphql-django==0.40.0 svgwrite==1.4.3 tablib==3.6.1 From 806ff646e23b2c3c7e225048ff40a30f40607ddc Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 22 May 2024 14:57:39 -0400 Subject: [PATCH 22/67] PRVB --- docs/release-notes/version-4.0.md | 4 ++++ netbox/netbox/settings.py | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/release-notes/version-4.0.md b/docs/release-notes/version-4.0.md index c644f7cc4..14fdbd1d0 100644 --- a/docs/release-notes/version-4.0.md +++ b/docs/release-notes/version-4.0.md @@ -1,5 +1,9 @@ # NetBox v4.0 +## v4.0.4 (FUTURE) + +--- + ## v4.0.3 (2024-05-22) ### Enhancements diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index 88057bb05..b764fd930 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -25,7 +25,7 @@ from utilities.string import trailing_slash # Environment setup # -VERSION = '4.0.3' +VERSION = '4.0.4-dev' HOSTNAME = platform.node() # Set the base directory two levels up BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) From 103c08c2d2bc3e32d8274b8d8ec8dd2380857388 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 22 May 2024 15:39:24 -0400 Subject: [PATCH 23/67] Update exempt issue labels for stale action --- .github/workflows/close-stale-issues.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/close-stale-issues.yml b/.github/workflows/close-stale-issues.yml index 1ac1ea687..b02ffdacd 100644 --- a/.github/workflows/close-stale-issues.yml +++ b/.github/workflows/close-stale-issues.yml @@ -29,7 +29,7 @@ jobs: necessary. days-before-issue-stale: 90 days-before-issue-close: 30 - exempt-issue-labels: 'status: accepted,status: blocked,status: needs milestone' + exempt-issue-labels: 'status: accepted,status: backlog,status: blocked' stale-issue-label: 'pending closure' stale-issue-message: > This issue has been automatically marked as stale because it has not had From eb3adc050dfa6ff93dfc9c6c8965906371f85f7b Mon Sep 17 00:00:00 2001 From: Julio-Oliveira-Encora Date: Tue, 28 May 2024 09:45:06 -0300 Subject: [PATCH 24/67] Added 1000-Base-TX to the choices.py --- netbox/dcim/choices.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/netbox/dcim/choices.py b/netbox/dcim/choices.py index e8a7194fc..fe8d8a158 100644 --- a/netbox/dcim/choices.py +++ b/netbox/dcim/choices.py @@ -828,6 +828,7 @@ class InterfaceTypeChoices(ChoiceSet): TYPE_100ME_FIXED = '100base-tx' TYPE_100ME_T1 = '100base-t1' TYPE_1GE_FIXED = '1000base-t' + TYPE_1GE_TX_FIXED = '1000base-tx' TYPE_1GE_GBIC = '1000base-x-gbic' TYPE_1GE_SFP = '1000base-x-sfp' TYPE_2GE_FIXED = '2.5gbase-t' @@ -987,6 +988,7 @@ class InterfaceTypeChoices(ChoiceSet): (TYPE_100ME_FIXED, '100BASE-TX (10/100ME)'), (TYPE_100ME_T1, '100BASE-T1 (10/100ME Single Pair)'), (TYPE_1GE_FIXED, '1000BASE-T (1GE)'), + (TYPE_1GE_TX_FIXED, '1000BASE-TX (1GE)'), (TYPE_2GE_FIXED, '2.5GBASE-T (2.5GE)'), (TYPE_5GE_FIXED, '5GBASE-T (5GE)'), (TYPE_10GE_FIXED, '10GBASE-T (10GE)'), From 8a91252d51ae006a4d329afae666b6631dfde435 Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 24 May 2024 08:05:32 -0700 Subject: [PATCH 25/67] 16286 fix provider account search --- netbox/circuits/search.py | 1 + 1 file changed, 1 insertion(+) diff --git a/netbox/circuits/search.py b/netbox/circuits/search.py index c22b400eb..f3fa359ba 100644 --- a/netbox/circuits/search.py +++ b/netbox/circuits/search.py @@ -48,6 +48,7 @@ class ProviderIndex(SearchIndex): display_attrs = ('description',) +@register_search class ProviderAccountIndex(SearchIndex): model = models.ProviderAccount fields = ( From 360f3bc01b3456765081f7e88c524391be959757 Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 24 May 2024 08:01:22 -0700 Subject: [PATCH 26/67] 16284 fix plugin forms doc --- docs/plugins/development/forms.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/plugins/development/forms.md b/docs/plugins/development/forms.md index 332544df7..209506172 100644 --- a/docs/plugins/development/forms.md +++ b/docs/plugins/development/forms.md @@ -89,13 +89,13 @@ This form facilitates editing multiple objects in bulk. Unlike a model form, thi from django import forms from django.utils.translation import gettext_lazy as _ from dcim.models import Site -from netbox.forms import NetBoxModelImportForm +from netbox.forms import NetBoxModelBulkEditForm from utilities.forms import CommentField, DynamicModelChoiceField from utilities.forms.rendering import FieldSet from .models import MyModel, MyModelStatusChoices -class MyModelEditForm(NetBoxModelImportForm): +class MyModelBulkEditForm(NetBoxModelBulkEditForm): name = forms.CharField( required=False ) From 0bfb9777bed4fcf22f5b684504b1e62d03cdfb9b Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 21 May 2024 14:05:56 -0700 Subject: [PATCH 27/67] 14810 add contacts to service --- netbox/ipam/models/services.py | 3 ++- netbox/ipam/views.py | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/netbox/ipam/models/services.py b/netbox/ipam/models/services.py index 37b559801..71f34c66c 100644 --- a/netbox/ipam/models/services.py +++ b/netbox/ipam/models/services.py @@ -8,6 +8,7 @@ from django.utils.translation import gettext_lazy as _ from ipam.choices import * from ipam.constants import * from netbox.models import PrimaryModel +from netbox.models.features import ContactsMixin from utilities.data import array_to_string __all__ = ( @@ -62,7 +63,7 @@ class ServiceTemplate(ServiceBase, PrimaryModel): return reverse('ipam:servicetemplate', args=[self.pk]) -class Service(ServiceBase, PrimaryModel): +class Service(ContactsMixin, ServiceBase, PrimaryModel): """ A Service represents a layer-four service (e.g. HTTP or SSH) running on a Device or VirtualMachine. A Service may optionally be tied to one or more specific IPAddresses belonging to its parent. diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py index cab9058d8..f94c3c6d7 100644 --- a/netbox/ipam/views.py +++ b/netbox/ipam/views.py @@ -1280,3 +1280,8 @@ class ServiceBulkDeleteView(generic.BulkDeleteView): queryset = Service.objects.prefetch_related('device', 'virtual_machine') filterset = filtersets.ServiceFilterSet table = tables.ServiceTable + + +@register_model_view(Service, 'contacts') +class ServiceContactsView(ObjectContactsView): + queryset = Service.objects.all() From f1bf4c8758b69310e76f68b6b68691bbce1b448e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markku=20Leini=C3=B6?= Date: Tue, 28 May 2024 18:32:48 +0300 Subject: [PATCH 28/67] Closes #16297: Add uwsgi.ini in .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index ac5f420b4..88faab27c 100644 --- a/.gitignore +++ b/.gitignore @@ -21,6 +21,7 @@ local_settings.py !upgrade.sh fabfile.py gunicorn.py +uwsgi.ini netbox.log netbox.pid .DS_Store From 418389c5774b245c542519264db897b7437d4e9a Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 29 May 2024 09:14:02 -0400 Subject: [PATCH 29/67] Update translations workflow documentation --- docs/development/release-checklist.md | 10 +----- docs/development/translations.md | 31 +++++++++++++++--- docs/media/development/transifex_download.png | Bin 55556 -> 0 bytes .../development/transifex_pull_request.png | Bin 0 -> 110799 bytes docs/media/development/transifex_sync.png | Bin 0 -> 43392 bytes 5 files changed, 27 insertions(+), 14 deletions(-) delete mode 100644 docs/media/development/transifex_download.png create mode 100644 docs/media/development/transifex_pull_request.png create mode 100644 docs/media/development/transifex_sync.png diff --git a/docs/development/release-checklist.md b/docs/development/release-checklist.md index 875b2b869..4f6e2f25f 100644 --- a/docs/development/release-checklist.md +++ b/docs/development/release-checklist.md @@ -86,15 +86,7 @@ This will automatically update the schema file at `contrib/generated_schema.json ### Update & Compile Translations -Log into [Transifex](https://app.transifex.com/netbox-community/netbox/dashboard/) to download the updated string maps. Download the resource (portable object, or `.po`) file for each language and save them to `netbox/translations/$lang/LC_MESSAGES/django.po`, overwriting the current files. (Be sure to click the **Download for use** link.) - -![Transifex download](../media/development/transifex_download.png) - -Once the resource files for all languages have been updated, compile the machine object (`.mo`) files using the `compilemessages` management command: - -```nohighlight -./manage.py compilemessages -``` +Updated language translations should be pulled from [Transifex](https://app.transifex.com/netbox-community/netbox/dashboard/) and re-compiled for each new release. Follow the documented process for [updating translated strings](./translations.md#updating-translated-strings) to do this. ### Update Version and Changelog diff --git a/docs/development/translations.md b/docs/development/translations.md index e40f996c5..b23e89d71 100644 --- a/docs/development/translations.md +++ b/docs/development/translations.md @@ -6,17 +6,38 @@ All language translations in NetBox are generated from the source file found at Reviewers log into Transifex and navigate to their designated language(s) to translate strings. The initial translation for most strings will be machine-generated via the AWS Translate service. Human reviewers are responsible for reviewing these translations and making corrections where necessary. -Immediately prior to each NetBox release, the translation maps for all completed languages will be downloaded from Transifex, compiled, and checked into the NetBox code base by a maintainer. - ## Updating Translation Sources -To update the English `.po` file from which all translations are derived, use the `makemessages` management command: +To update the English `.po` file from which all translations are derived, use the `makemessages` management command (ignoring the `project-static/` directory): ```nohighlight -./manage.py makemessages -l en +./manage.py makemessages -l en -i "project-static/*" ``` -Then, commit the change and push to the `develop` branch on GitHub. After some time, any new strings will appear for translation on Transifex automatically. +Then, commit the change and push to the `develop` branch on GitHub. Any new strings will appear for translation on Transifex automatically. + +## Updating Translated Strings + +Typically, translated strings need to be updated only as part of the NetBox [release process](./release-checklist.md). + +To update translated strings, start by initiating a sync from Transifex. From the Transifex dashboard, navigate to Settings > Integrations > GitHub > Manage, and click the **Manual Sync** button at top right. + +![Transifex manual sync](../media/development/transifex_sync.png) + +Enter a threshold percentage of 1 (to ensure all translations are captured) and select the `develop` branch, then click **Sync**. This will initiate a pull request to GitHub to update any newly modified translation (`.po`) files. + +!!! tip + The new PR should appear within a few minutes. If it does not, check that there are in fact new translations to be added. + +![Transifex pull request](../media/development/transifex_pull_request.png) + +Once the PR has been merged, the updated strings need to be compiled into new `.mo` files so they can be used by the application. Update the `develop` branch locally to pull in the changes from the Transifex PR, then run Django's [`compilemessages`](https://docs.djangoproject.com/en/stable/ref/django-admin/#django-admin-compilemessages) management command: + +```nohighlight +./manage.py compilemessages +``` + +Once any new `.mo` files have been generated, they need to be committed and pushed back up to GitHub. (Again, this is typically done as part of publishing a new NetBox release.) ## Proposing New Languages diff --git a/docs/media/development/transifex_download.png b/docs/media/development/transifex_download.png deleted file mode 100644 index 99429ce1101e0baf9668c7ba12809f74b46e5e38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55556 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 diff --git a/docs/media/development/transifex_pull_request.png b/docs/media/development/transifex_pull_request.png new file mode 100644 index 0000000000000000000000000000000000000000..e3ae769917a11c6808461ba93b8f51bc5cab9625 GIT binary patch literal 110799 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%0ALk0Oc_9eQ`L(2J~S-toZrHfLn4;xz5 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

+
{% trans "Change" %}
@@ -104,7 +105,7 @@
-
+
{% trans "Pre-Change Data" %}
@@ -144,7 +145,15 @@
-
+
+
+ {% plugin_left_page object %} +
+
+ {% plugin_right_page object %} +
+
+
{% include 'inc/panel_table.html' with table=related_changes_table heading='Related Changes' panel_class='default' %} {% if related_changes_count > related_changes_table.rows|length %} @@ -158,4 +167,9 @@ {% endif %}
+
+
+ {% plugin_full_width_page object %} +
+
{% endblock %} From 8ab9afb8db5628469ba70424d46bf44b829cf36c Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Tue, 4 Jun 2024 08:02:38 -0500 Subject: [PATCH 49/67] =?UTF-8?q?Fixes:=20#16083=20-=20Add=20font-variant-?= =?UTF-8?q?ligatures=20setting=20to=20disable=20ligatur=E2=80=A6=20(#16383?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fixes: #16083 - Add font-variant-ligatures setting to disable ligatures on chromium * Fix comment * Disable ligatures on input fields * Condense rules & apply to all elements --------- Co-authored-by: Jeremy Stretch --- netbox/project-static/dist/netbox.css | Bin 551631 -> 551692 bytes .../styles/overrides/_tabler.scss | 7 +++++++ 2 files changed, 7 insertions(+) diff --git a/netbox/project-static/dist/netbox.css b/netbox/project-static/dist/netbox.css index 082a5b64d2374a533a0cd977972c5efb72012a24..0ec53a6d27390befa166d8e074df6917b0c345ef 100644 GIT binary patch delta 80 zcmX?qRk7!qVnYjK3sVbo3rh=Y3tJ2O7LMi!Cavn}2QIM4%cbS#mFSiw7G)*^>72~; j#FEmY)MBf={JhlKf}-h#dzgi%7ffX3*}f!#Lt6*{#ycIs delta 31 mcmeCVrg;9UVnYjK3sVbo3rh=Y3tJ2O7LMkK?FS+_e1rhSaSKfV diff --git a/netbox/project-static/styles/overrides/_tabler.scss b/netbox/project-static/styles/overrides/_tabler.scss index b31fdac6b..5ea63be76 100644 --- a/netbox/project-static/styles/overrides/_tabler.scss +++ b/netbox/project-static/styles/overrides/_tabler.scss @@ -1,3 +1,10 @@ +// Disable font-ligatures for Chromium based browsers +// Chromium requires `font-variant-ligatures: none` in addition to `font-feature-settings "liga" 0` +* { + font-feature-settings: "liga" 0; + font-variant-ligatures: none; +} + // Restore default foreground & background colors for
 blocks
 pre {
   background-color: transparent;

From 87109f5539758a3d62ea8200d89641b21bb2d283 Mon Sep 17 00:00:00 2001
From: Julio Oliveira at Encora
 <149191228+Julio-Oliveira-Encora@users.noreply.github.com>
Date: Tue, 4 Jun 2024 10:37:08 -0300
Subject: [PATCH 50/67] 16315 - Cant filter changelog by object type (no
 results found) (#16324)

* Replaced "api=/api/extras/content-types/" with "/api/extras/object-types/" for JournalEntryFilterForm and ObjectChangeFilterForm.

* Addressed PR comment.

* Correct feature classifications

---------

Co-authored-by: Jeremy Stretch 
---
 netbox/extras/forms/filtersets.py | 14 ++++----------
 1 file changed, 4 insertions(+), 10 deletions(-)

diff --git a/netbox/extras/forms/filtersets.py b/netbox/extras/forms/filtersets.py
index d4235c465..e6b001f2c 100644
--- a/netbox/extras/forms/filtersets.py
+++ b/netbox/extras/forms/filtersets.py
@@ -464,13 +464,10 @@ class JournalEntryFilterForm(NetBoxModelFilterSetForm):
         required=False,
         label=_('User')
     )
-    assigned_object_type_id = DynamicModelMultipleChoiceField(
-        queryset=ObjectType.objects.all(),
+    assigned_object_type_id = ContentTypeMultipleChoiceField(
+        queryset=ObjectType.objects.with_feature('journaling'),
         required=False,
         label=_('Object Type'),
-        widget=APISelectMultiple(
-            api_url='/api/extras/content-types/',
-        )
     )
     kind = forms.ChoiceField(
         label=_('Kind'),
@@ -507,11 +504,8 @@ class ObjectChangeFilterForm(SavedFiltersMixin, FilterForm):
         required=False,
         label=_('User')
     )
-    changed_object_type_id = DynamicModelMultipleChoiceField(
-        queryset=ObjectType.objects.all(),
+    changed_object_type_id = ContentTypeMultipleChoiceField(
+        queryset=ObjectType.objects.with_feature('change_logging'),
         required=False,
         label=_('Object Type'),
-        widget=APISelectMultiple(
-            api_url='/api/extras/content-types/',
-        )
     )

From 4242546270a996e84943e1b3ae05b35f2a31f3ac Mon Sep 17 00:00:00 2001
From: Jeremy Stretch 
Date: Tue, 4 Jun 2024 13:51:40 -0400
Subject: [PATCH 51/67] Fixes #16376: Log changes on terminating objects when
 attaching a cable

---
 netbox/dcim/models/cables.py | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/netbox/dcim/models/cables.py b/netbox/dcim/models/cables.py
index 64f0b8560..7afead829 100644
--- a/netbox/dcim/models/cables.py
+++ b/netbox/dcim/models/cables.py
@@ -355,11 +355,11 @@ class CableTermination(ChangeLoggedModel):
         super().save(*args, **kwargs)
 
         # Set the cable on the terminating object
-        termination_model = self.termination._meta.model
-        termination_model.objects.filter(pk=self.termination_id).update(
-            cable=self.cable,
-            cable_end=self.cable_end
-        )
+        termination = self.termination._meta.model.objects.get(pk=self.termination_id)
+        termination.snapshot()
+        termination.cable = self.cable
+        termination.cable_end = self.cable_end
+        termination.save()
 
     def delete(self, *args, **kwargs):
 

From 81f0a4050528636c8f023c2a674dbcaf4a076312 Mon Sep 17 00:00:00 2001
From: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Date: Wed, 5 Jun 2024 05:02:18 +0000
Subject: [PATCH 52/67] Update source translation strings

---
 netbox/translations/en/LC_MESSAGES/django.po | 58 ++++++++++----------
 1 file changed, 29 insertions(+), 29 deletions(-)

diff --git a/netbox/translations/en/LC_MESSAGES/django.po b/netbox/translations/en/LC_MESSAGES/django.po
index af150e24c..2c459a302 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-06-04 05:02+0000\n"
+"POT-Creation-Date: 2024-06-05 05:02+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME \n"
 "Language-Team: LANGUAGE \n"
@@ -965,7 +965,7 @@ msgstr ""
 #: 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:488 netbox/ipam/forms/filtersets.py:99
+#: 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
@@ -1577,9 +1577,9 @@ msgid "Creation"
 msgstr ""
 
 #: netbox/core/forms/filtersets.py:71 netbox/extras/forms/filtersets.py:470
-#: netbox/extras/forms/filtersets.py:513 netbox/extras/tables/tables.py:183
+#: netbox/extras/forms/filtersets.py:510 netbox/extras/tables/tables.py:183
 #: netbox/extras/tables/tables.py:504 netbox/templates/core/job.html:20
-#: netbox/templates/extras/objectchange.html:51
+#: netbox/templates/extras/objectchange.html:52
 #: netbox/tenancy/tables/contacts.py:90 netbox/vpn/tables/l2vpn.py:59
 msgid "Object Type"
 msgstr ""
@@ -1619,9 +1619,9 @@ msgstr ""
 #: netbox/core/forms/filtersets.py:123 netbox/dcim/forms/bulk_edit.py:361
 #: netbox/dcim/forms/filtersets.py:353 netbox/dcim/forms/filtersets.py:397
 #: netbox/dcim/forms/model_forms.py:258 netbox/extras/forms/filtersets.py:465
-#: netbox/extras/forms/filtersets.py:508
+#: netbox/extras/forms/filtersets.py:505
 #: netbox/templates/dcim/rackreservation.html:58
-#: netbox/templates/extras/objectchange.html:35
+#: 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/users/user.html:6 netbox/templates/users/user.html:14
@@ -1976,7 +1976,7 @@ msgstr ""
 #: netbox/extras/tables/tables.py:509 netbox/extras/tables/tables.py:574
 #: netbox/netbox/tables/tables.py:243 netbox/templates/extras/eventrule.html:84
 #: netbox/templates/extras/journalentry.html:18
-#: netbox/templates/extras/objectchange.html:57
+#: netbox/templates/extras/objectchange.html:58
 #: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64
 msgid "Object"
 msgstr ""
@@ -4172,7 +4172,7 @@ msgid "Connection"
 msgstr ""
 
 #: netbox/dcim/forms/filtersets.py:1254 netbox/extras/forms/bulk_edit.py:316
-#: netbox/extras/forms/bulk_import.py:242 netbox/extras/forms/filtersets.py:476
+#: netbox/extras/forms/bulk_import.py:242 netbox/extras/forms/filtersets.py:473
 #: netbox/extras/forms/model_forms.py:551 netbox/extras/tables/tables.py:512
 #: netbox/templates/extras/journalentry.html:30
 msgid "Kind"
@@ -7144,23 +7144,23 @@ msgstr ""
 msgid "Tenant groups"
 msgstr ""
 
-#: netbox/extras/forms/filtersets.py:454 netbox/extras/forms/filtersets.py:492
+#: 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:497
+#: netbox/extras/forms/filtersets.py:459 netbox/extras/forms/filtersets.py:494
 msgid "Before"
 msgstr ""
 
-#: netbox/extras/forms/filtersets.py:487 netbox/extras/tables/tables.py:456
+#: netbox/extras/forms/filtersets.py:484 netbox/extras/tables/tables.py:456
 #: netbox/extras/tables/tables.py:542 netbox/extras/tables/tables.py:567
-#: netbox/templates/extras/objectchange.html:31
+#: netbox/templates/extras/objectchange.html:32
 msgid "Time"
 msgstr ""
 
-#: netbox/extras/forms/filtersets.py:501 netbox/extras/forms/model_forms.py:282
+#: netbox/extras/forms/filtersets.py:498 netbox/extras/forms/model_forms.py:282
 #: netbox/extras/tables/tables.py:470 netbox/templates/extras/eventrule.html:77
-#: netbox/templates/extras/objectchange.html:45
+#: netbox/templates/extras/objectchange.html:46
 msgid "Action"
 msgstr ""
 
@@ -8256,7 +8256,7 @@ msgid "Full Name"
 msgstr ""
 
 #: netbox/extras/tables/tables.py:483
-#: netbox/templates/extras/objectchange.html:67
+#: netbox/templates/extras/objectchange.html:68
 msgid "Request ID"
 msgstr ""
 
@@ -10275,7 +10275,7 @@ msgid "Journal Entries"
 msgstr ""
 
 #: netbox/netbox/navigation/menu.py:359
-#: netbox/templates/extras/objectchange.html:8
+#: netbox/templates/extras/objectchange.html:9
 #: netbox/templates/extras/objectchange_list.html:4
 msgid "Change Log"
 msgstr ""
@@ -10734,8 +10734,8 @@ msgstr ""
 #: netbox/templates/extras/configcontext.html:70
 #: netbox/templates/extras/eventrule.html:72
 #: netbox/templates/extras/htmx/script_result.html:56
-#: netbox/templates/extras/objectchange.html:123
-#: netbox/templates/extras/objectchange.html:141
+#: 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/inc/panel_table.html:13
@@ -12308,48 +12308,48 @@ msgstr ""
 msgid "New Journal Entry"
 msgstr ""
 
-#: netbox/templates/extras/objectchange.html:28
+#: netbox/templates/extras/objectchange.html:29
 #: netbox/templates/users/objectpermission.html:42
 msgid "Change"
 msgstr ""
 
-#: netbox/templates/extras/objectchange.html:78
+#: netbox/templates/extras/objectchange.html:79
 msgid "Difference"
 msgstr ""
 
-#: netbox/templates/extras/objectchange.html:81
+#: netbox/templates/extras/objectchange.html:82
 msgid "Previous"
 msgstr ""
 
-#: netbox/templates/extras/objectchange.html:84
+#: netbox/templates/extras/objectchange.html:85
 msgid "Next"
 msgstr ""
 
-#: netbox/templates/extras/objectchange.html:92
+#: netbox/templates/extras/objectchange.html:93
 msgid "Object Created"
 msgstr ""
 
-#: netbox/templates/extras/objectchange.html:94
+#: netbox/templates/extras/objectchange.html:95
 msgid "Object Deleted"
 msgstr ""
 
-#: netbox/templates/extras/objectchange.html:96
+#: netbox/templates/extras/objectchange.html:97
 msgid "No Changes"
 msgstr ""
 
-#: netbox/templates/extras/objectchange.html:110
+#: netbox/templates/extras/objectchange.html:111
 msgid "Pre-Change Data"
 msgstr ""
 
-#: netbox/templates/extras/objectchange.html:121
+#: netbox/templates/extras/objectchange.html:122
 msgid "Warning: Comparing non-atomic change to previous change record"
 msgstr ""
 
-#: netbox/templates/extras/objectchange.html:130
+#: netbox/templates/extras/objectchange.html:131
 msgid "Post-Change Data"
 msgstr ""
 
-#: netbox/templates/extras/objectchange.html:153
+#: netbox/templates/extras/objectchange.html:162
 #, python-format
 msgid "See All %(count)s Changes"
 msgstr ""

From c27cb6f153062b1a0d8a7f819db358763d1205f5 Mon Sep 17 00:00:00 2001
From: Jeremy Stretch 
Date: Wed, 5 Jun 2024 09:02:05 -0400
Subject: [PATCH 53/67] Fix styling of object jobs table

---
 netbox/templates/core/object_jobs.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/netbox/templates/core/object_jobs.html b/netbox/templates/core/object_jobs.html
index 7d8c0a3b7..14e31e5be 100644
--- a/netbox/templates/core/object_jobs.html
+++ b/netbox/templates/core/object_jobs.html
@@ -5,7 +5,7 @@
   
-
+
{% render_table table 'inc/table.html' %} {% include 'inc/paginator.html' with paginator=table.paginator page=table.page %}
From b10fb67ce93f6bbd2fe3ee9f40037b1bd3327e89 Mon Sep 17 00:00:00 2001 From: Julio Oliveira at Encora <149191228+Julio-Oliveira-Encora@users.noreply.github.com> Date: Wed, 5 Jun 2024 16:23:36 -0300 Subject: [PATCH 54/67] Fixed error when the active Config is deleted and rest only one to restore. (#16408) --- netbox/core/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netbox/core/views.py b/netbox/core/views.py index 5a65c5755..ded49c0b8 100644 --- a/netbox/core/views.py +++ b/netbox/core/views.py @@ -224,7 +224,7 @@ class ConfigRevisionRestoreView(ContentTypePermissionRequiredMixin, View): for param in PARAMS: params.append(( param.name, - current_config.data.get(param.name, None), + current_config.data.get(param.name, None) if current_config else None, candidate_config.data.get(param.name, None) )) From 18b43408ec4637b094b0ebe389e43939528a7d53 Mon Sep 17 00:00:00 2001 From: Louis Jarasius Date: Thu, 6 Jun 2024 22:44:32 +1000 Subject: [PATCH 55/67] Fixes #16274: Dark mode highlight color (#16355) * Increase ::selection background-color aplha * Improve comment for override * Add compiled CSS * Only override on dark theme --- netbox/project-static/dist/netbox.css | Bin 551692 -> 551835 bytes .../styles/overrides/_tabler.scss | 5 +++++ 2 files changed, 5 insertions(+) diff --git a/netbox/project-static/dist/netbox.css b/netbox/project-static/dist/netbox.css index 0ec53a6d27390befa166d8e074df6917b0c345ef..0696d2e827f51ae3142a610e546459a4bba62033 100644 GIT binary patch delta 59 zcmeCVra1e$VnYjK3sVbo3rh=Y3tJ2O7LLBi>4uY;L^-Xjic@n^lS?wE>%}k{P3PFo PZp~z3vArjfqd^b=Xx9^2 delta 31 mcmbPzU9snyVnYjK3sVbo3rh=Y3tJ2O7LLBi?XpoEb%FrB!V0$l diff --git a/netbox/project-static/styles/overrides/_tabler.scss b/netbox/project-static/styles/overrides/_tabler.scss index 5ea63be76..97f1298df 100644 --- a/netbox/project-static/styles/overrides/_tabler.scss +++ b/netbox/project-static/styles/overrides/_tabler.scss @@ -39,3 +39,8 @@ table a { // Adjust table anchor link contrast as not enough contrast in dark mode filter: brightness(110%); } + +// Override background color alpha value +[data-bs-theme=dark] ::selection { + background-color: rgba(var(--tblr-primary-rgb),.48) +} From 8f87c72eaa94f849573fcfa232d91a481278504e Mon Sep 17 00:00:00 2001 From: Arthur Hanson Date: Thu, 6 Jun 2024 06:05:59 -0700 Subject: [PATCH 56/67] 16050 Show script python_class name and description (#16185) * 16050 Show script python_class name and description * 16050 change to use Meta.description * 16050 change to use Meta.description * 16050 remove module name customization from docs --- docs/customization/custom-scripts.md | 6 ------ netbox/templates/extras/script/base.html | 4 ++-- netbox/templates/extras/script_list.html | 6 +++--- 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/docs/customization/custom-scripts.md b/docs/customization/custom-scripts.md index 21ae20f05..2a8f252aa 100644 --- a/docs/customization/custom-scripts.md +++ b/docs/customization/custom-scripts.md @@ -65,12 +65,6 @@ class AnotherCustomScript(Script): script_order = (MyCustomScript, AnotherCustomScript) ``` -## Module Attributes - -### `name` - -You can define `name` within a script module (the Python file which contains one or more scripts) to set the module name. If `name` is not defined, the module's file name will be used. - ## Script Attributes Script attributes are defined under a class named `Meta` within the script. These are optional, but encouraged. diff --git a/netbox/templates/extras/script/base.html b/netbox/templates/extras/script/base.html index 7220b329d..725e4737c 100644 --- a/netbox/templates/extras/script/base.html +++ b/netbox/templates/extras/script/base.html @@ -4,7 +4,7 @@ {% load log_levels %} {% load i18n %} -{% block title %}{{ script }}{% endblock %} +{% block title %}{{ script.python_class.name }}{% endblock %} {% block object_identifier %} {{ script.full_name }} @@ -17,7 +17,7 @@ {% block subtitle %}
- {{ script.Meta.description|markdown }} + {{ script.python_class.Meta.description|markdown }}
{% endblock subtitle %} diff --git a/netbox/templates/extras/script_list.html b/netbox/templates/extras/script_list.html index 7ce5ca6eb..27b6115a7 100644 --- a/netbox/templates/extras/script_list.html +++ b/netbox/templates/extras/script_list.html @@ -56,15 +56,15 @@ {% if script.is_executable %} - {{ script.name }} + {{ script.python_class.name }} {% else %} - {{ script.name }} + {{ script.python_class.name }} {% endif %} - {{ script.description|markdown|placeholder }} + {{ script.python_class.Meta.description|markdown|placeholder }} {% if last_job %} {{ last_job.created|isodatetime }} From 3acf3b51ee50e9f07e0f93e8042943a3294e8ca0 Mon Sep 17 00:00:00 2001 From: Julio Oliveira at Encora <149191228+Julio-Oliveira-Encora@users.noreply.github.com> Date: Thu, 6 Jun 2024 10:35:27 -0300 Subject: [PATCH 57/67] Fixes: #14567 - Export current view of IP Addresses (#15659) * Added javascript and htmx to change the url. * Added javascript and htmx to change the url * Addressed PR comments * Added Netbox.js and netbox.js.map * Addressed PR comments * Addressed PR comments * Addressed PR comments * Addressed PR comments * Addressed PR comments * Addressed PR comments * Addressed PR comments * Addressed PR comments * Linter Issues * Fix assets issue * Fix assets issue * Addressed PR comment. It was added clearLinkParams to clear button. * Added passive:true to search.ts --------- Co-authored-by: Jeremy Stretch --- netbox/project-static/dist/netbox.js | Bin 387735 -> 388117 bytes netbox/project-static/dist/netbox.js.map | Bin 352915 -> 353214 bytes netbox/project-static/src/search.ts | 76 +++++++++++++----- .../utilities/templates/buttons/export.html | 2 +- 4 files changed, 57 insertions(+), 21 deletions(-) diff --git a/netbox/project-static/dist/netbox.js b/netbox/project-static/dist/netbox.js index 58c419b3d4e979c8b658b9af989305a238748219..d8c7c36c5ac619e183f96c8b911e1a5046e6e7e7 100644 GIT binary patch delta 8800 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 delta 104 zcmdmYTy*kL(S{br7N#xCA+n5B)5GMLXKDoKxH~!q>v%glM?hGaPL7V5PC9`gQBOz5 wNS#V2M`v^A={EArk)pni&Q(r2&W_G55Cy)@CC*vx>*bk&m}UEVc~*WG0DK-ErvLx| diff --git a/netbox/project-static/src/search.ts b/netbox/project-static/src/search.ts index 4be740196..1295527cf 100644 --- a/netbox/project-static/src/search.ts +++ b/netbox/project-static/src/search.ts @@ -7,38 +7,74 @@ import { isTruthy } from './util'; */ function quickSearchEventHandler(event: Event): void { const quicksearch = event.currentTarget as HTMLInputElement; - const clearbtn = document.getElementById("quicksearch_clear") as HTMLAnchorElement; + const clearbtn = document.getElementById('quicksearch_clear') as HTMLAnchorElement; if (isTruthy(clearbtn)) { - if (quicksearch.value === "") { - clearbtn.classList.add("invisible"); + if (quicksearch.value === '') { + clearbtn.classList.add('invisible'); } else { - clearbtn.classList.remove("invisible"); + clearbtn.classList.remove('invisible'); } } } +/** + * Clear the existing search parameters in the link to export Current View. + */ +function clearLinkParams(): void { + const link = document.getElementById('export_current_view') as HTMLLinkElement; + const linkUpdated = link?.href.split('&')[0]; + link.setAttribute('href', linkUpdated); +} + +/** + * Update the Export View link to add the Quick Search parameters. + * @param event + */ +function handleQuickSearchParams(event: Event): void { + const quickSearchParameters = event.currentTarget as HTMLInputElement; + + // Clear the existing search parameters + clearLinkParams(); + + if (quickSearchParameters != null) { + const link = document.getElementById('export_current_view') as HTMLLinkElement; + const search_parameter = `q=${quickSearchParameters.value}`; + const linkUpdated = link?.href + '&' + search_parameter; + link.setAttribute('href', linkUpdated); + } +} + /** * Initialize Quicksearch Event listener/handlers. */ export function initQuickSearch(): void { - const quicksearch = document.getElementById("quicksearch") as HTMLInputElement; - const clearbtn = document.getElementById("quicksearch_clear") as HTMLAnchorElement; + const quicksearch = document.getElementById('quicksearch') as HTMLInputElement; + const clearbtn = document.getElementById('quicksearch_clear') as HTMLAnchorElement; if (isTruthy(quicksearch)) { - quicksearch.addEventListener("keyup", quickSearchEventHandler, { - passive: true - }) - quicksearch.addEventListener("search", quickSearchEventHandler, { - passive: true - }) + quicksearch.addEventListener('keyup', quickSearchEventHandler, { + passive: true, + }); + quicksearch.addEventListener('search', quickSearchEventHandler, { + passive: true, + }); + quicksearch.addEventListener('change', handleQuickSearchParams, { + passive: true, + }); + if (isTruthy(clearbtn)) { - clearbtn.addEventListener("click", async () => { - const search = new Event('search'); - quicksearch.value = ''; - await new Promise(f => setTimeout(f, 100)); - quicksearch.dispatchEvent(search); - }, { - passive: true - }) + clearbtn.addEventListener( + 'click', + async () => { + const search = new Event('search'); + quicksearch.value = ''; + await new Promise(f => setTimeout(f, 100)); + quicksearch.dispatchEvent(search); + clearLinkParams(); + }, + { + passive: true, + }, + ); } } } diff --git a/netbox/utilities/templates/buttons/export.html b/netbox/utilities/templates/buttons/export.html index 2085356fa..279757236 100644 --- a/netbox/utilities/templates/buttons/export.html +++ b/netbox/utilities/templates/buttons/export.html @@ -4,7 +4,7 @@ {% trans "Export" %}