diff --git a/netbox/circuits/filtersets.py b/netbox/circuits/filtersets.py index 5c7168318..4dd726803 100644 --- a/netbox/circuits/filtersets.py +++ b/netbox/circuits/filtersets.py @@ -154,12 +154,12 @@ class CircuitFilterSet(NetBoxModelFilterSet, TenancyFilterSet, ContactModelFilte provider_account_id = django_filters.ModelMultipleChoiceFilter( field_name='provider_account', queryset=ProviderAccount.objects.all(), - label=_('ProviderAccount (ID)'), + label=_('Provider account (ID)'), ) provider_network_id = django_filters.ModelMultipleChoiceFilter( field_name='terminations__provider_network', queryset=ProviderNetwork.objects.all(), - label=_('ProviderNetwork (ID)'), + label=_('Provider network (ID)'), ) type_id = django_filters.ModelMultipleChoiceFilter( queryset=CircuitType.objects.all(), diff --git a/netbox/circuits/forms/filtersets.py b/netbox/circuits/forms/filtersets.py index 830c10d8b..a82ec1726 100644 --- a/netbox/circuits/forms/filtersets.py +++ b/netbox/circuits/forms/filtersets.py @@ -88,7 +88,7 @@ class ProviderNetworkFilterForm(NetBoxModelFilterSetForm): label=_('Provider') ) service_id = forms.CharField( - label=_('Service id'), + label=_('Service ID'), max_length=100, required=False ) diff --git a/netbox/dcim/choices.py b/netbox/dcim/choices.py index e1d4a330a..2ba24e0aa 100644 --- a/netbox/dcim/choices.py +++ b/netbox/dcim/choices.py @@ -80,10 +80,10 @@ class RackWidthChoices(ChoiceSet): WIDTH_23IN = 23 CHOICES = ( - (WIDTH_10IN, _('10 inches')), - (WIDTH_19IN, _('19 inches')), - (WIDTH_21IN, _('21 inches')), - (WIDTH_23IN, _('23 inches')), + (WIDTH_10IN, _('{n} inches').format(n=10)), + (WIDTH_19IN, _('{n} inches').format(n=19)), + (WIDTH_21IN, _('{n} inches').format(n=21)), + (WIDTH_23IN, _('{n} inches').format(n=23)), ) diff --git a/netbox/dcim/forms/common.py b/netbox/dcim/forms/common.py index 77543af12..3be4d08e8 100644 --- a/netbox/dcim/forms/common.py +++ b/netbox/dcim/forms/common.py @@ -116,17 +116,17 @@ class ModuleCommonForm(forms.Form): # It is not possible to adopt components already belonging to a module if adopt_components and existing_item and existing_item.module: raise forms.ValidationError( - _("Cannot adopt {name} '{resolved_name}' as it already belongs to a module").format( - name=template.component_model.__name__, - resolved_name=resolved_name + _("Cannot adopt {model} {name} as it already belongs to a module").format( + model=template.component_model.__name__, + name=resolved_name ) ) # If we are not adopting components we error if the component exists if not adopt_components and resolved_name in installed_components: raise forms.ValidationError( - _("{name} - {resolved_name} already exists").format( - name=template.component_model.__name__, - resolved_name=resolved_name + _("A {model} named {name} already exists").format( + model=template.component_model.__name__, + name=resolved_name ) ) diff --git a/netbox/dcim/models/device_component_templates.py b/netbox/dcim/models/device_component_templates.py index 86b6d85fe..5110835f4 100644 --- a/netbox/dcim/models/device_component_templates.py +++ b/netbox/dcim/models/device_component_templates.py @@ -534,14 +534,16 @@ class FrontPortTemplate(ModularComponentTemplateModel): # Validate rear port assignment if self.rear_port.device_type != self.device_type: raise ValidationError( - _("Rear port ({}) must belong to the same device type").format(self.rear_port) + _("Rear port ({name}) must belong to the same device type").format(name=self.rear_port) ) # Validate rear port position assignment if self.rear_port_position > self.rear_port.positions: raise ValidationError( - _("Invalid rear port position ({}); rear port {} has only {} positions").format( - self.rear_port_position, self.rear_port.name, self.rear_port.positions + _("Invalid rear port position ({position}); rear port {name} has only {count} positions").format( + position=self.rear_port_position, + name=self.rear_port.name, + count=self.rear_port.positions ) ) diff --git a/netbox/dcim/models/devices.py b/netbox/dcim/models/devices.py index 943bf318c..07c1c70f6 100644 --- a/netbox/dcim/models/devices.py +++ b/netbox/dcim/models/devices.py @@ -302,8 +302,10 @@ class DeviceType(ImageAttachmentsMixin, PrimaryModel, WeightMixin): ) if d.position not in u_available: raise ValidationError({ - 'u_height': _("Device {} in rack {} does not have sufficient space to accommodate a height of " - "{}U").format(d, d.rack, self.u_height) + 'u_height': _( + "Device {device} in rack {rack} does not have sufficient space to accommodate a " + "height of {height}U" + ).format(device=d, rack=d.rack, height=self.u_height) }) # If modifying the height of an existing DeviceType to 0U, check for any instances assigned to a rack position. @@ -920,7 +922,7 @@ class Device( if self.primary_ip4: if self.primary_ip4.family != 4: raise ValidationError({ - 'primary_ip4': _("{primary_ip4} is not an IPv4 address.").format(primary_ip4=self.primary_ip4) + 'primary_ip4': _("{ip} is not an IPv4 address.").format(ip=self.primary_ip4) }) if self.primary_ip4.assigned_object in vc_interfaces: pass @@ -929,13 +931,13 @@ class Device( else: raise ValidationError({ 'primary_ip4': _( - "The specified IP address ({primary_ip4}) is not assigned to this device." - ).format(primary_ip4=self.primary_ip4) + "The specified IP address ({ip}) is not assigned to this device." + ).format(ip=self.primary_ip4) }) if self.primary_ip6: if self.primary_ip6.family != 6: raise ValidationError({ - 'primary_ip6': _("{primary_ip6} is not an IPv6 address.").format(primary_ip6=self.primary_ip6m) + 'primary_ip6': _("{ip} is not an IPv6 address.").format(ip=self.primary_ip6) }) if self.primary_ip6.assigned_object in vc_interfaces: pass @@ -944,8 +946,8 @@ class Device( else: raise ValidationError({ 'primary_ip6': _( - "The specified IP address ({primary_ip6}) is not assigned to this device." - ).format(primary_ip6=self.primary_ip6) + "The specified IP address ({ip}) is not assigned to this device." + ).format(ip=self.primary_ip6) }) if self.oob_ip: if self.oob_ip.assigned_object in vc_interfaces: @@ -963,17 +965,19 @@ class Device( raise ValidationError({ 'platform': _( "The assigned platform is limited to {platform_manufacturer} device types, but this device's " - "type belongs to {device_type_manufacturer}." + "type belongs to {devicetype_manufacturer}." ).format( platform_manufacturer=self.platform.manufacturer, - device_type_manufacturer=self.device_type.manufacturer + devicetype_manufacturer=self.device_type.manufacturer ) }) # A Device can only be assigned to a Cluster in the same Site (or no Site) if self.cluster and self.cluster.site is not None and self.cluster.site != self.site: raise ValidationError({ - 'cluster': _("The assigned cluster belongs to a different site ({})").format(self.cluster.site) + 'cluster': _("The assigned cluster belongs to a different site ({site})").format( + site=self.cluster.site + ) }) # Validate virtual chassis assignment @@ -1445,8 +1449,8 @@ class VirtualDeviceContext(PrimaryModel): if primary_ip.family != family: raise ValidationError({ f'primary_ip{family}': _( - "{primary_ip} is not an IPv{family} address." - ).format(family=family, primary_ip=primary_ip) + "{ip} is not an IPv{family} address." + ).format(family=family, ip=primary_ip) }) device_interfaces = self.device.vc_interfaces(if_master=False) if primary_ip.assigned_object not in device_interfaces: diff --git a/netbox/dcim/models/racks.py b/netbox/dcim/models/racks.py index ab1027d1b..0d4b844f9 100644 --- a/netbox/dcim/models/racks.py +++ b/netbox/dcim/models/racks.py @@ -562,9 +562,9 @@ class RackReservation(PrimaryModel): invalid_units = [u for u in self.units if u not in self.rack.units] if invalid_units: raise ValidationError({ - 'units': _("Invalid unit(s) for {}U rack: {}").format( - self.rack.u_height, - ', '.join([str(u) for u in invalid_units]), + 'units': _("Invalid unit(s) for {height}U rack: {unit_list}").format( + height=self.rack.u_height, + unit_list=', '.join([str(u) for u in invalid_units]) ), }) @@ -575,8 +575,8 @@ class RackReservation(PrimaryModel): conflicting_units = [u for u in self.units if u in reserved_units] if conflicting_units: raise ValidationError({ - 'units': _('The following units have already been reserved: {}').format( - ', '.join([str(u) for u in conflicting_units]), + 'units': _('The following units have already been reserved: {unit_list}').format( + unit_list=', '.join([str(u) for u in conflicting_units]) ) }) diff --git a/netbox/extras/models/customfields.py b/netbox/extras/models/customfields.py index 2bed464bb..2cb12ed5b 100644 --- a/netbox/extras/models/customfields.py +++ b/netbox/extras/models/customfields.py @@ -287,8 +287,8 @@ class CustomField(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel): except ValidationError as err: raise ValidationError({ 'default': _( - 'Invalid default value "{default}": {message}' - ).format(default=self.default, message=err.message) + 'Invalid default value "{value}": {error}' + ).format(value=self.default, error=err.message) }) # Minimum/maximum values can be set only for numeric fields @@ -332,8 +332,8 @@ class CustomField(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel): elif self.object_type: raise ValidationError({ 'object_type': _( - "{type_display} fields may not define an object type.") - .format(type_display=self.get_type_display()) + "{type} fields may not define an object type.") + .format(type=self.get_type_display()) }) def serialize(self, value): diff --git a/netbox/ipam/forms/model_forms.py b/netbox/ipam/forms/model_forms.py index bfd4f952d..dd9e6b3e4 100644 --- a/netbox/ipam/forms/model_forms.py +++ b/netbox/ipam/forms/model_forms.py @@ -372,14 +372,14 @@ class IPAddressForm(TenancyForm, NetBoxModelForm): # Do not allow assigning a network ID or broadcast address to an interface. if interface and (address := self.cleaned_data.get('address')): if address.ip == address.network: - msg = _("{address} is a network ID, which may not be assigned to an interface.").format(address=address) + msg = _("{ip} is a network ID, which may not be assigned to an interface.").format(ip=address.ip) if address.version == 4 and address.prefixlen not in (31, 32): raise ValidationError(msg) if address.version == 6 and address.prefixlen not in (127, 128): raise ValidationError(msg) if address.version == 4 and address.ip == address.broadcast and address.prefixlen not in (31, 32): - msg = _("{address} is a broadcast address, which may not be assigned to an interface.").format( - address=address + msg = _("{ip} is a broadcast address, which may not be assigned to an interface.").format( + ip=address.ip ) raise ValidationError(msg) diff --git a/netbox/ipam/models/ip.py b/netbox/ipam/models/ip.py index d176d3bff..934cb98c7 100644 --- a/netbox/ipam/models/ip.py +++ b/netbox/ipam/models/ip.py @@ -140,8 +140,11 @@ class Aggregate(GetAvailablePrefixesMixin, PrimaryModel): if covering_aggregates: raise ValidationError({ 'prefix': _( - "Aggregates cannot overlap. {} is already covered by an existing aggregate ({})." - ).format(self.prefix, covering_aggregates[0]) + "Aggregates cannot overlap. {prefix} is already covered by an existing aggregate ({aggregate})." + ).format( + prefix=self.prefix, + aggregate=covering_aggregates[0] + ) }) # Ensure that the aggregate being added does not cover an existing aggregate @@ -150,8 +153,11 @@ class Aggregate(GetAvailablePrefixesMixin, PrimaryModel): covered_aggregates = covered_aggregates.exclude(pk=self.pk) if covered_aggregates: raise ValidationError({ - 'prefix': _("Aggregates cannot overlap. {} covers an existing aggregate ({}).").format( - self.prefix, covered_aggregates[0] + 'prefix': _( + "Prefixes cannot overlap aggregates. {prefix} covers an existing aggregate ({aggregate})." + ).format( + prefix=self.prefix, + aggregate=covered_aggregates[0] ) }) @@ -314,10 +320,11 @@ class Prefix(GetAvailablePrefixesMixin, PrimaryModel): if (self.vrf is None and get_config().ENFORCE_GLOBAL_UNIQUE) or (self.vrf and self.vrf.enforce_unique): duplicate_prefixes = self.get_duplicates() if duplicate_prefixes: + table = _("VRF {vrf}").format(vrf=self.vrf) if self.vrf else _("global table") raise ValidationError({ - 'prefix': _("Duplicate prefix found in {}: {}").format( - _("VRF {}").format(self.vrf) if self.vrf else _("global table"), - duplicate_prefixes.first(), + 'prefix': _("Duplicate prefix found in {table}: {prefix}").format( + table=table, + prefix=duplicate_prefixes.first(), ) }) @@ -843,10 +850,11 @@ class IPAddress(PrimaryModel): self.role not in IPADDRESS_ROLES_NONUNIQUE or any(dip.role not in IPADDRESS_ROLES_NONUNIQUE for dip in duplicate_ips) ): + table = _("VRF {vrf}").format(vrf=self.vrf) if self.vrf else _("global table") raise ValidationError({ - 'address': _("Duplicate IP address found in {}: {}").format( - _("VRF {}").format(self.vrf) if self.vrf else _("global table"), - duplicate_ips.first(), + 'address': _("Duplicate IP address found in {table}: {ipaddress}").format( + table=table, + ipaddress=duplicate_ips.first(), ) }) diff --git a/netbox/ipam/models/vlans.py b/netbox/ipam/models/vlans.py index aa5b36a57..675d03ee5 100644 --- a/netbox/ipam/models/vlans.py +++ b/netbox/ipam/models/vlans.py @@ -234,8 +234,8 @@ class VLAN(PrimaryModel): if self.group and not self.group.min_vid <= self.vid <= self.group.max_vid: raise ValidationError({ 'vid': _( - "VID must be between {min_vid} and {max_vid} for VLANs in group {group}" - ).format(min_vid=self.group.min_vid, max_vid=self.group.max_vid, group=self.group) + "VID must be between {minimum} and {maximum} for VLANs in group {group}" + ).format(minimum=self.group.min_vid, maximum=self.group.max_vid, group=self.group) }) def get_status_color(self): diff --git a/netbox/netbox/navigation/menu.py b/netbox/netbox/navigation/menu.py index 5b64cfc1e..961fd2035 100644 --- a/netbox/netbox/navigation/menu.py +++ b/netbox/netbox/navigation/menu.py @@ -1,4 +1,4 @@ -from django.utils.translation import gettext as _ +from django.utils.translation import gettext_lazy as _ from netbox.registry import registry from utilities.choices import ButtonColorChoices diff --git a/netbox/templates/dcim/devicebay_delete.html b/netbox/templates/dcim/devicebay_delete.html index 18f4f6576..9e54baa86 100644 --- a/netbox/templates/dcim/devicebay_delete.html +++ b/netbox/templates/dcim/devicebay_delete.html @@ -8,8 +8,8 @@ {% block message %}
- {% blocktrans trimmed %} - Are you sure you want to delete this device bay from {{ devicebay.device }}? + {% blocktrans trimmed with device=devicebay.device %} + Are you sure you want to delete this device bay from {{ device }}? {% endblocktrans %}
{% endblock %} diff --git a/netbox/translations/en/LC_MESSAGES/django.po b/netbox/translations/en/LC_MESSAGES/django.po new file mode 100644 index 000000000..b04e843f2 --- /dev/null +++ b/netbox/translations/en/LC_MESSAGES/django.po @@ -0,0 +1,12322 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR{module}
will be replaced with the position of the "
+"assigned module, if any."
+msgstr ""
+
+#: dcim/forms/object_create.py:375 dcim/tables/devices.py:1013
+#: ipam/tables/fhrp.py:31 templates/dcim/virtualchassis.html:54
+#: templates/dcim/virtualchassis_edit.html:48 templates/ipam/fhrpgroup.html:39
+msgid "Members"
+msgstr ""
+
+#: dcim/forms/object_create.py:384
+msgid "Initial position"
+msgstr ""
+
+#: dcim/forms/object_create.py:387
+msgid ""
+"Position of the first member device. Increases by one for each additional "
+"member."
+msgstr ""
+
+#: dcim/forms/object_create.py:401
+msgid "A position must be specified for the first VC member."
+msgstr ""
+
+#: dcim/models/cables.py:63 dcim/models/device_component_templates.py:56
+#: dcim/models/device_components.py:64 extras/models/customfields.py:102
+msgid "label"
+msgstr ""
+
+#: dcim/models/cables.py:72
+msgid "length"
+msgstr ""
+
+#: dcim/models/cables.py:79
+msgid "length unit"
+msgstr ""
+
+#: dcim/models/cables.py:94
+msgid "cable"
+msgstr ""
+
+#: dcim/models/cables.py:95
+msgid "cables"
+msgstr ""
+
+#: dcim/models/cables.py:247 ipam/models/asns.py:37
+msgid "end"
+msgstr ""
+
+#: dcim/models/cables.py:297
+msgid "cable termination"
+msgstr ""
+
+#: dcim/models/cables.py:298
+msgid "cable terminations"
+msgstr ""
+
+#: dcim/models/cables.py:421 extras/models/configs.py:50
+msgid "is active"
+msgstr ""
+
+#: dcim/models/cables.py:425
+msgid "is complete"
+msgstr ""
+
+#: dcim/models/cables.py:429
+msgid "is split"
+msgstr ""
+
+#: dcim/models/cables.py:435
+msgid "cable path"
+msgstr ""
+
+#: dcim/models/cables.py:436
+msgid "cable paths"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:47
+#, 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:59
+#: dcim/models/device_components.py:67
+msgid "Physical label"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:104
+msgid "Component templates cannot be moved to a different device type."
+msgstr ""
+
+#: dcim/models/device_component_templates.py:155
+msgid ""
+"A component template cannot be associated with both a device type and a "
+"module type."
+msgstr ""
+
+#: dcim/models/device_component_templates.py:159
+msgid ""
+"A component template must be associated with either a device type or a "
+"module type."
+msgstr ""
+
+#: dcim/models/device_component_templates.py:187
+msgid "console port template"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:188
+msgid "console port templates"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:221
+msgid "console server port template"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:222
+msgid "console server port templates"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:253
+#: dcim/models/device_components.py:354
+msgid "maximum draw"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:260
+#: dcim/models/device_components.py:361
+msgid "allocated draw"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:270
+msgid "power port template"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:271
+msgid "power port templates"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:290
+#: dcim/models/device_components.py:384
+#, python-brace-format
+msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)."
+msgstr ""
+
+#: dcim/models/device_component_templates.py:322
+#: dcim/models/device_components.py:479
+msgid "feed leg"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:326
+#: dcim/models/device_components.py:483
+msgid "Phase (for three-phase feeds)"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:332
+msgid "power outlet template"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:333
+msgid "power outlet templates"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:342
+#, python-brace-format
+msgid "Parent power port ({power_port}) must belong to the same device type"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:346
+#, python-brace-format
+msgid "Parent power port ({power_port}) must belong to the same module type"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:398
+#: dcim/models/device_components.py:609
+msgid "management only"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:406
+#: dcim/models/device_components.py:552
+msgid "bridge interface"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:424
+#: dcim/models/device_components.py:634
+msgid "wireless role"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:430
+msgid "interface template"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:431
+msgid "interface templates"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:438
+#: dcim/models/device_components.py:796
+#: virtualization/models/virtualmachines.py:340
+msgid "An interface cannot be bridged to itself."
+msgstr ""
+
+#: dcim/models/device_component_templates.py:441
+#, python-brace-format
+msgid "Bridge interface ({bridge}) must belong to the same device type"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:445
+#, python-brace-format
+msgid "Bridge interface ({bridge}) must belong to the same module type"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:501
+#: dcim/models/device_components.py:976
+msgid "rear port position"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:526
+msgid "front port template"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:527
+msgid "front port templates"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:537
+#, python-brace-format
+msgid "Rear port ({name}) must belong to the same device type"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:543
+#, python-brace-format
+msgid ""
+"Invalid rear port position ({position}); rear port {name} has only {count} "
+"positions"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:596
+#: dcim/models/device_components.py:1045
+msgid "positions"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:607
+msgid "rear port template"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:608
+msgid "rear port templates"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:637
+#: dcim/models/device_components.py:1086
+msgid "position"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:640
+#: dcim/models/device_components.py:1089
+msgid "Identifier to reference when renaming installed components"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:646
+msgid "module bay template"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:647
+msgid "module bay templates"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:674
+msgid "device bay template"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:675
+msgid "device bay templates"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:688
+#, 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:743
+#: dcim/models/device_components.py:1215
+msgid "part ID"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:745
+#: dcim/models/device_components.py:1217
+msgid "Manufacturer-assigned part identifier"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:759
+msgid "inventory item template"
+msgstr ""
+
+#: dcim/models/device_component_templates.py:760
+msgid "inventory item templates"
+msgstr ""
+
+#: dcim/models/device_components.py:107
+msgid "Components cannot be moved to a different device."
+msgstr ""
+
+#: dcim/models/device_components.py:146
+msgid "cable end"
+msgstr ""
+
+#: dcim/models/device_components.py:152
+msgid "mark connected"
+msgstr ""
+
+#: dcim/models/device_components.py:154
+msgid "Treat as if a cable is connected"
+msgstr ""
+
+#: dcim/models/device_components.py:172
+msgid "Must specify cable end (A or B) when attaching a cable."
+msgstr ""
+
+#: dcim/models/device_components.py:176
+msgid "Cable end must not be set without a cable."
+msgstr ""
+
+#: dcim/models/device_components.py:180
+msgid "Cannot mark as connected with a cable attached."
+msgstr ""
+
+#: dcim/models/device_components.py:204
+#, python-brace-format
+msgid "{class_name} models must declare a parent_object property"
+msgstr ""
+
+#: dcim/models/device_components.py:289 dcim/models/device_components.py:318
+#: dcim/models/device_components.py:351 dcim/models/device_components.py:469
+msgid "Physical port type"
+msgstr ""
+
+#: dcim/models/device_components.py:292 dcim/models/device_components.py:321
+msgid "speed"
+msgstr ""
+
+#: dcim/models/device_components.py:296 dcim/models/device_components.py:325
+msgid "Port speed in bits per second"
+msgstr ""
+
+#: dcim/models/device_components.py:302
+msgid "console port"
+msgstr ""
+
+#: dcim/models/device_components.py:303
+msgid "console ports"
+msgstr ""
+
+#: dcim/models/device_components.py:331
+msgid "console server port"
+msgstr ""
+
+#: dcim/models/device_components.py:332
+msgid "console server ports"
+msgstr ""
+
+#: dcim/models/device_components.py:371
+msgid "power port"
+msgstr ""
+
+#: dcim/models/device_components.py:372
+msgid "power ports"
+msgstr ""
+
+#: dcim/models/device_components.py:489
+msgid "power outlet"
+msgstr ""
+
+#: dcim/models/device_components.py:490
+msgid "power outlets"
+msgstr ""
+
+#: dcim/models/device_components.py:501
+#, python-brace-format
+msgid "Parent power port ({power_port}) must belong to the same device"
+msgstr ""
+
+#: dcim/models/device_components.py:532
+msgid "mode"
+msgstr ""
+
+#: dcim/models/device_components.py:536
+msgid "IEEE 802.1Q tagging strategy"
+msgstr ""
+
+#: dcim/models/device_components.py:544
+msgid "parent interface"
+msgstr ""
+
+#: dcim/models/device_components.py:600
+msgid "parent LAG"
+msgstr ""
+
+#: dcim/models/device_components.py:610
+msgid "This interface is used only for out-of-band management"
+msgstr ""
+
+#: dcim/models/device_components.py:615
+msgid "speed (Kbps)"
+msgstr ""
+
+#: dcim/models/device_components.py:618
+msgid "duplex"
+msgstr ""
+
+#: dcim/models/device_components.py:628
+msgid "64-bit World Wide Name"
+msgstr ""
+
+#: dcim/models/device_components.py:640
+msgid "wireless channel"
+msgstr ""
+
+#: dcim/models/device_components.py:647
+msgid "channel frequency (MHz)"
+msgstr ""
+
+#: dcim/models/device_components.py:648 dcim/models/device_components.py:656
+msgid "Populated by selected channel (if set)"
+msgstr ""
+
+#: dcim/models/device_components.py:662
+msgid "transmit power (dBm)"
+msgstr ""
+
+#: dcim/models/device_components.py:687 wireless/models.py:116
+msgid "wireless LANs"
+msgstr ""
+
+#: dcim/models/device_components.py:695
+#: virtualization/models/virtualmachines.py:266
+msgid "untagged VLAN"
+msgstr ""
+
+#: dcim/models/device_components.py:701
+#: virtualization/models/virtualmachines.py:272
+msgid "tagged VLANs"
+msgstr ""
+
+#: dcim/models/device_components.py:737
+#: virtualization/models/virtualmachines.py:309
+msgid "interface"
+msgstr ""
+
+#: dcim/models/device_components.py:738
+#: virtualization/models/virtualmachines.py:310
+msgid "interfaces"
+msgstr ""
+
+#: dcim/models/device_components.py:749
+#, python-brace-format
+msgid "{display_type} interfaces cannot have a cable attached."
+msgstr ""
+
+#: dcim/models/device_components.py:757
+#, python-brace-format
+msgid "{display_type} interfaces cannot be marked as connected."
+msgstr ""
+
+#: dcim/models/device_components.py:766
+#: virtualization/models/virtualmachines.py:325
+msgid "An interface cannot be its own parent."
+msgstr ""
+
+#: dcim/models/device_components.py:770
+msgid "Only virtual interfaces may be assigned to a parent interface."
+msgstr ""
+
+#: dcim/models/device_components.py:777
+#, python-brace-format
+msgid ""
+"The selected parent interface ({interface}) belongs to a different device "
+"({device})"
+msgstr ""
+
+#: dcim/models/device_components.py:783
+#, 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:803
+#, python-brace-format
+msgid ""
+"The selected bridge interface ({bridge}) belongs to a different device "
+"({device})."
+msgstr ""
+
+#: dcim/models/device_components.py:809
+#, 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:820
+msgid "Virtual interfaces cannot have a parent LAG interface."
+msgstr ""
+
+#: dcim/models/device_components.py:824
+msgid "A LAG interface cannot be its own parent."
+msgstr ""
+
+#: dcim/models/device_components.py:831
+#, python-brace-format
+msgid ""
+"The selected LAG interface ({lag}) belongs to a different device ({device})."
+msgstr ""
+
+#: dcim/models/device_components.py:837
+#, 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:848
+msgid "Virtual interfaces cannot have a PoE mode."
+msgstr ""
+
+#: dcim/models/device_components.py:852
+msgid "Virtual interfaces cannot have a PoE type."
+msgstr ""
+
+#: dcim/models/device_components.py:858
+msgid "Must specify PoE mode when designating a PoE type."
+msgstr ""
+
+#: dcim/models/device_components.py:865
+msgid "Wireless role may be set only on wireless interfaces."
+msgstr ""
+
+#: dcim/models/device_components.py:867
+msgid "Channel may be set only on wireless interfaces."
+msgstr ""
+
+#: dcim/models/device_components.py:873
+msgid "Channel frequency may be set only on wireless interfaces."
+msgstr ""
+
+#: dcim/models/device_components.py:877
+msgid "Cannot specify custom frequency with channel selected."
+msgstr ""
+
+#: dcim/models/device_components.py:883
+msgid "Channel width may be set only on wireless interfaces."
+msgstr ""
+
+#: dcim/models/device_components.py:885
+msgid "Cannot specify custom width with channel selected."
+msgstr ""
+
+#: dcim/models/device_components.py:893
+#, 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:982
+msgid "Mapped position on corresponding rear port"
+msgstr ""
+
+#: dcim/models/device_components.py:998
+msgid "front port"
+msgstr ""
+
+#: dcim/models/device_components.py:999
+msgid "front ports"
+msgstr ""
+
+#: dcim/models/device_components.py:1013
+#, python-brace-format
+msgid "Rear port ({rear_port}) must belong to the same device"
+msgstr ""
+
+#: dcim/models/device_components.py:1021
+#, python-brace-format
+msgid ""
+"Invalid rear port position ({rear_port_position}): Rear port {name} has only "
+"{positions} positions."
+msgstr ""
+
+#: dcim/models/device_components.py:1051
+msgid "Number of front ports which may be mapped"
+msgstr ""
+
+#: dcim/models/device_components.py:1056
+msgid "rear port"
+msgstr ""
+
+#: dcim/models/device_components.py:1057
+msgid "rear ports"
+msgstr ""
+
+#: dcim/models/device_components.py:1071
+#, 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:1095
+msgid "module bay"
+msgstr ""
+
+#: dcim/models/device_components.py:1096
+msgid "module bays"
+msgstr ""
+
+#: dcim/models/device_components.py:1109
+msgid "parent_bay"
+msgstr ""
+
+#: dcim/models/device_components.py:1117
+msgid "device bay"
+msgstr ""
+
+#: dcim/models/device_components.py:1118
+msgid "device bays"
+msgstr ""
+
+#: dcim/models/device_components.py:1128
+#, python-brace-format
+msgid "This type of device ({device_type}) does not support device bays."
+msgstr ""
+
+#: dcim/models/device_components.py:1134
+msgid "Cannot install a device into itself."
+msgstr ""
+
+#: dcim/models/device_components.py:1142
+#, python-brace-format
+msgid ""
+"Cannot install the specified device; device is already installed in {bay}."
+msgstr ""
+
+#: dcim/models/device_components.py:1163
+msgid "inventory item role"
+msgstr ""
+
+#: dcim/models/device_components.py:1164
+msgid "inventory item roles"
+msgstr ""
+
+#: dcim/models/device_components.py:1221 dcim/models/devices.py:595
+#: dcim/models/devices.py:1168 dcim/models/racks.py:113
+msgid "serial number"
+msgstr ""
+
+#: dcim/models/device_components.py:1229 dcim/models/devices.py:603
+#: dcim/models/devices.py:1175 dcim/models/racks.py:120
+msgid "asset tag"
+msgstr ""
+
+#: dcim/models/device_components.py:1230
+msgid "A unique tag used to identify this item"
+msgstr ""
+
+#: dcim/models/device_components.py:1233
+msgid "discovered"
+msgstr ""
+
+#: dcim/models/device_components.py:1235
+msgid "This item was automatically discovered"
+msgstr ""
+
+#: dcim/models/device_components.py:1250
+msgid "inventory item"
+msgstr ""
+
+#: dcim/models/device_components.py:1251
+msgid "inventory items"
+msgstr ""
+
+#: dcim/models/device_components.py:1262
+msgid "Cannot assign self as parent."
+msgstr ""
+
+#: dcim/models/device_components.py:1270
+msgid "Parent inventory item does not belong to the same device."
+msgstr ""
+
+#: dcim/models/device_components.py:1276
+msgid "Cannot move an inventory item with dependent children"
+msgstr ""
+
+#: dcim/models/device_components.py:1284
+msgid "Cannot assign inventory item to component on another device"
+msgstr ""
+
+#: dcim/models/devices.py:54
+msgid "manufacturer"
+msgstr ""
+
+#: dcim/models/devices.py:55
+msgid "manufacturers"
+msgstr ""
+
+#: dcim/models/devices.py:82 dcim/models/devices.py:381
+msgid "model"
+msgstr ""
+
+#: dcim/models/devices.py:95
+msgid "default platform"
+msgstr ""
+
+#: dcim/models/devices.py:98 dcim/models/devices.py:385
+msgid "part number"
+msgstr ""
+
+#: dcim/models/devices.py:101 dcim/models/devices.py:388
+msgid "Discrete part number (optional)"
+msgstr ""
+
+#: dcim/models/devices.py:107 dcim/models/racks.py:137
+msgid "height (U)"
+msgstr ""
+
+#: dcim/models/devices.py:111
+msgid "exclude from utilization"
+msgstr ""
+
+#: dcim/models/devices.py:112
+msgid "Exclude from rack utilization calculations."
+msgstr ""
+
+#: dcim/models/devices.py:116
+msgid "is full depth"
+msgstr ""
+
+#: dcim/models/devices.py:117
+msgid "Device consumes both front and rear rack faces"
+msgstr ""
+
+#: dcim/models/devices.py:123
+msgid "parent/child status"
+msgstr ""
+
+#: 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:647
+msgid "airflow"
+msgstr ""
+
+#: dcim/models/devices.py:204
+msgid "device type"
+msgstr ""
+
+#: dcim/models/devices.py:205
+msgid "device types"
+msgstr ""
+
+#: dcim/models/devices.py:289
+msgid "U height must be in increments of 0.5 rack units."
+msgstr ""
+
+#: dcim/models/devices.py:306
+#, 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:321
+#, python-brace-format
+msgid ""
+"Unable to set 0U height: Found {racked_instance_count} "
+"instances already mounted within racks."
+msgstr ""
+
+#: dcim/models/devices.py:330
+msgid ""
+"Must delete all device bay templates associated with this device before "
+"declassifying it as a parent device."
+msgstr ""
+
+#: dcim/models/devices.py:336
+msgid "Child device types must be 0U."
+msgstr ""
+
+#: dcim/models/devices.py:404
+msgid "module type"
+msgstr ""
+
+#: dcim/models/devices.py:405
+msgid "module types"
+msgstr ""
+
+#: dcim/models/devices.py:473
+msgid "Virtual machines may be assigned to this role"
+msgstr ""
+
+#: dcim/models/devices.py:485
+msgid "device role"
+msgstr ""
+
+#: dcim/models/devices.py:486
+msgid "device roles"
+msgstr ""
+
+#: dcim/models/devices.py:503
+msgid "Optionally limit this platform to devices of a certain manufacturer"
+msgstr ""
+
+#: dcim/models/devices.py:515
+msgid "platform"
+msgstr ""
+
+#: dcim/models/devices.py:516
+msgid "platforms"
+msgstr ""
+
+#: dcim/models/devices.py:564
+msgid "The function this device serves"
+msgstr ""
+
+#: dcim/models/devices.py:596
+msgid "Chassis serial number, assigned by the manufacturer"
+msgstr ""
+
+#: dcim/models/devices.py:604 dcim/models/devices.py:1176
+msgid "A unique tag used to identify this device"
+msgstr ""
+
+#: dcim/models/devices.py:631
+msgid "position (U)"
+msgstr ""
+
+#: dcim/models/devices.py:638
+msgid "rack face"
+msgstr ""
+
+#: dcim/models/devices.py:658 dcim/models/devices.py:1385
+#: virtualization/models/virtualmachines.py:97
+msgid "primary IPv4"
+msgstr ""
+
+#: dcim/models/devices.py:666 dcim/models/devices.py:1393
+#: virtualization/models/virtualmachines.py:105
+msgid "primary IPv6"
+msgstr ""
+
+#: dcim/models/devices.py:674
+msgid "out-of-band IP"
+msgstr ""
+
+#: dcim/models/devices.py:691
+msgid "VC position"
+msgstr ""
+
+#: dcim/models/devices.py:695
+msgid "Virtual chassis position"
+msgstr ""
+
+#: dcim/models/devices.py:698
+msgid "VC priority"
+msgstr ""
+
+#: dcim/models/devices.py:702
+msgid "Virtual chassis master election priority"
+msgstr ""
+
+#: dcim/models/devices.py:705 dcim/models/sites.py:207
+msgid "latitude"
+msgstr ""
+
+#: dcim/models/devices.py:710 dcim/models/devices.py:718
+#: dcim/models/sites.py:212 dcim/models/sites.py:220
+msgid "GPS coordinate in decimal format (xx.yyyyyy)"
+msgstr ""
+
+#: dcim/models/devices.py:713 dcim/models/sites.py:215
+msgid "longitude"
+msgstr ""
+
+#: dcim/models/devices.py:786
+msgid "Device name must be unique per site."
+msgstr ""
+
+#: dcim/models/devices.py:797 ipam/models/services.py:75
+msgid "device"
+msgstr ""
+
+#: dcim/models/devices.py:798
+msgid "devices"
+msgstr ""
+
+#: dcim/models/devices.py:838
+#, python-brace-format
+msgid "Rack {rack} does not belong to site {site}."
+msgstr ""
+
+#: dcim/models/devices.py:843
+#, python-brace-format
+msgid "Location {location} does not belong to site {site}."
+msgstr ""
+
+#: dcim/models/devices.py:849
+#, python-brace-format
+msgid "Rack {rack} does not belong to location {location}."
+msgstr ""
+
+#: dcim/models/devices.py:856
+msgid "Cannot select a rack face without assigning a rack."
+msgstr ""
+
+#: dcim/models/devices.py:860
+msgid "Cannot select a rack position without assigning a rack."
+msgstr ""
+
+#: dcim/models/devices.py:866
+msgid "Position must be in increments of 0.5 rack units."
+msgstr ""
+
+#: dcim/models/devices.py:870
+msgid "Must specify rack face when defining rack position."
+msgstr ""
+
+#: dcim/models/devices.py:878
+#, python-brace-format
+msgid "A U0 device type ({device_type}) cannot be assigned to a rack position."
+msgstr ""
+
+#: dcim/models/devices.py:889
+msgid ""
+"Child device types cannot be assigned to a rack face. This is an attribute "
+"of the parent device."
+msgstr ""
+
+#: dcim/models/devices.py:896
+msgid ""
+"Child device types cannot be assigned to a rack position. This is an "
+"attribute of the parent device."
+msgstr ""
+
+#: dcim/models/devices.py:910
+#, 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:925
+#, python-brace-format
+msgid "{ip} is not an IPv4 address."
+msgstr ""
+
+#: dcim/models/devices.py:934 dcim/models/devices.py:949
+#, python-brace-format
+msgid "The specified IP address ({ip}) is not assigned to this device."
+msgstr ""
+
+#: dcim/models/devices.py:940
+#, python-brace-format
+msgid "{ip} is not an IPv6 address."
+msgstr ""
+
+#: dcim/models/devices.py:967
+#, 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:978
+#, python-brace-format
+msgid "The assigned cluster belongs to a different site ({site})"
+msgstr ""
+
+#: dcim/models/devices.py:986
+msgid "A device assigned to a virtual chassis must have its position defined."
+msgstr ""
+
+#: dcim/models/devices.py:1183
+msgid "module"
+msgstr ""
+
+#: dcim/models/devices.py:1184
+msgid "modules"
+msgstr ""
+
+#: dcim/models/devices.py:1200
+#, python-brace-format
+msgid ""
+"Module must be installed within a module bay belonging to the assigned "
+"device ({device})."
+msgstr ""
+
+#: dcim/models/devices.py:1304
+msgid "domain"
+msgstr ""
+
+#: dcim/models/devices.py:1317 dcim/models/devices.py:1318
+msgid "virtual chassis"
+msgstr ""
+
+#: dcim/models/devices.py:1333
+#, python-brace-format
+msgid "The selected master ({master}) is not assigned to this virtual chassis."
+msgstr ""
+
+#: dcim/models/devices.py:1349
+#, 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:1374 ipam/models/l2vpn.py:37
+msgid "identifier"
+msgstr ""
+
+#: dcim/models/devices.py:1375
+msgid "Numeric identifier unique to the parent device"
+msgstr ""
+
+#: dcim/models/devices.py:1403 extras/models/models.py:629
+#: netbox/models/__init__.py:114
+msgid "comments"
+msgstr ""
+
+#: dcim/models/devices.py:1419
+msgid "virtual device context"
+msgstr ""
+
+#: dcim/models/devices.py:1420
+msgid "virtual device contexts"
+msgstr ""
+
+#: dcim/models/devices.py:1452
+#, python-brace-format
+msgid "{ip} is not an IPv{family} address."
+msgstr ""
+
+#: dcim/models/devices.py:1458
+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:260 extras/models/models.py:469
+#: extras/models/search.py:48 ipam/models/ip.py:193
+msgid "weight"
+msgstr ""
+
+#: dcim/models/mixins.py:22
+msgid "weight unit"
+msgstr ""
+
+#: dcim/models/mixins.py:51
+msgid "Must specify a unit when setting a weight"
+msgstr ""
+
+#: dcim/models/power.py:55
+msgid "power panel"
+msgstr ""
+
+#: dcim/models/power.py:56
+msgid "power panels"
+msgstr ""
+
+#: 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:107
+msgid "supply"
+msgstr ""
+
+#: dcim/models/power.py:113
+msgid "phase"
+msgstr ""
+
+#: dcim/models/power.py:119
+msgid "voltage"
+msgstr ""
+
+#: dcim/models/power.py:124
+msgid "amperage"
+msgstr ""
+
+#: dcim/models/power.py:129
+msgid "max utilization"
+msgstr ""
+
+#: dcim/models/power.py:132
+msgid "Maximum permissible draw (percentage)"
+msgstr ""
+
+#: dcim/models/power.py:135
+msgid "available power"
+msgstr ""
+
+#: dcim/models/power.py:163
+msgid "power feed"
+msgstr ""
+
+#: dcim/models/power.py:164
+msgid "power feeds"
+msgstr ""
+
+#: dcim/models/power.py:178
+#, python-brace-format
+msgid ""
+"Rack {rack} ({site}) and power panel {powerpanel} ({powerpanel_site}) are in "
+"different sites"
+msgstr ""
+
+#: dcim/models/power.py:189
+msgid "Voltage cannot be negative for AC supply"
+msgstr ""
+
+#: dcim/models/racks.py:49
+msgid "rack role"
+msgstr ""
+
+#: dcim/models/racks.py:50
+msgid "rack roles"
+msgstr ""
+
+#: dcim/models/racks.py:74
+msgid "facility ID"
+msgstr ""
+
+#: dcim/models/racks.py:75
+msgid "Locally-assigned identifier"
+msgstr ""
+
+#: dcim/models/racks.py:108 ipam/forms/bulk_import.py:203
+#: ipam/forms/bulk_import.py:268 ipam/forms/bulk_import.py:303
+#: ipam/forms/bulk_import.py:470 virtualization/forms/bulk_import.py:111
+msgid "Functional role"
+msgstr ""
+
+#: dcim/models/racks.py:121
+msgid "A unique tag used to identify this rack"
+msgstr ""
+
+#: dcim/models/racks.py:132
+msgid "width"
+msgstr ""
+
+#: dcim/models/racks.py:133
+msgid "Rail-to-rail width"
+msgstr ""
+
+#: dcim/models/racks.py:139
+msgid "Height in rack units"
+msgstr ""
+
+#: dcim/models/racks.py:143
+msgid "starting unit"
+msgstr ""
+
+#: dcim/models/racks.py:144
+msgid "Starting unit for rack"
+msgstr ""
+
+#: dcim/models/racks.py:148
+msgid "descending units"
+msgstr ""
+
+#: dcim/models/racks.py:149
+msgid "Units are numbered top-to-bottom"
+msgstr ""
+
+#: dcim/models/racks.py:152
+msgid "outer width"
+msgstr ""
+
+#: dcim/models/racks.py:155
+msgid "Outer dimension of rack (width)"
+msgstr ""
+
+#: dcim/models/racks.py:158
+msgid "outer depth"
+msgstr ""
+
+#: dcim/models/racks.py:161
+msgid "Outer dimension of rack (depth)"
+msgstr ""
+
+#: dcim/models/racks.py:164
+msgid "outer unit"
+msgstr ""
+
+#: dcim/models/racks.py:170
+msgid "max weight"
+msgstr ""
+
+#: dcim/models/racks.py:173
+msgid "Maximum load capacity for the rack"
+msgstr ""
+
+#: dcim/models/racks.py:181
+msgid "mounting depth"
+msgstr ""
+
+#: dcim/models/racks.py:185
+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:219
+msgid "rack"
+msgstr ""
+
+#: dcim/models/racks.py:220
+msgid "racks"
+msgstr ""
+
+#: dcim/models/racks.py:235
+#, python-brace-format
+msgid "Assigned location must belong to parent site ({site})."
+msgstr ""
+
+#: dcim/models/racks.py:239
+msgid "Must specify a unit when setting an outer width/depth"
+msgstr ""
+
+#: dcim/models/racks.py:243
+msgid "Must specify a unit when setting a maximum weight"
+msgstr ""
+
+#: dcim/models/racks.py:253
+#, python-brace-format
+msgid ""
+"Rack must be at least {min_height}U tall to house currently installed "
+"devices."
+msgstr ""
+
+#: dcim/models/racks.py:260
+#, python-brace-format
+msgid ""
+"Rack unit numbering must begin at {position} or less to house currently "
+"installed devices."
+msgstr ""
+
+#: dcim/models/racks.py:268
+#, python-brace-format
+msgid "Location must be from the same site, {site}."
+msgstr ""
+
+#: dcim/models/racks.py:521
+msgid "units"
+msgstr ""
+
+#: dcim/models/racks.py:547
+msgid "rack reservation"
+msgstr ""
+
+#: dcim/models/racks.py:548
+msgid "rack reservations"
+msgstr ""
+
+#: dcim/models/racks.py:565
+#, python-brace-format
+msgid "Invalid unit(s) for {height}U rack: {unit_list}"
+msgstr ""
+
+#: dcim/models/racks.py:578
+#, python-brace-format
+msgid "The following units have already been reserved: {unit_list}"
+msgstr ""
+
+#: dcim/models/sites.py:49
+msgid "A top-level region with this name already exists."
+msgstr ""
+
+#: dcim/models/sites.py:59
+msgid "A top-level region with this slug already exists."
+msgstr ""
+
+#: dcim/models/sites.py:62
+msgid "region"
+msgstr ""
+
+#: dcim/models/sites.py:63
+msgid "regions"
+msgstr ""
+
+#: dcim/models/sites.py:102
+msgid "A top-level site group with this name already exists."
+msgstr ""
+
+#: dcim/models/sites.py:112
+msgid "A top-level site group with this slug already exists."
+msgstr ""
+
+#: dcim/models/sites.py:115
+msgid "site group"
+msgstr ""
+
+#: dcim/models/sites.py:116
+msgid "site groups"
+msgstr ""
+
+#: dcim/models/sites.py:141
+msgid "Full name of the site"
+msgstr ""
+
+#: dcim/models/sites.py:181
+msgid "facility"
+msgstr ""
+
+#: dcim/models/sites.py:184
+msgid "Local facility ID or description"
+msgstr ""
+
+#: dcim/models/sites.py:195
+msgid "physical address"
+msgstr ""
+
+#: dcim/models/sites.py:198
+msgid "Physical location of the building"
+msgstr ""
+
+#: dcim/models/sites.py:201
+msgid "shipping address"
+msgstr ""
+
+#: dcim/models/sites.py:204
+msgid "If different from the physical address"
+msgstr ""
+
+#: dcim/models/sites.py:238
+msgid "site"
+msgstr ""
+
+#: dcim/models/sites.py:239
+msgid "sites"
+msgstr ""
+
+#: dcim/models/sites.py:303
+msgid "A location with this name already exists within the specified site."
+msgstr ""
+
+#: dcim/models/sites.py:313
+msgid "A location with this slug already exists within the specified site."
+msgstr ""
+
+#: dcim/models/sites.py:316
+msgid "location"
+msgstr ""
+
+#: dcim/models/sites.py:317
+msgid "locations"
+msgstr ""
+
+#: dcim/models/sites.py:331
+#, python-brace-format
+msgid "Parent location ({parent}) must belong to the same site ({site})."
+msgstr ""
+
+#: dcim/tables/cables.py:54
+msgid "Termination A"
+msgstr ""
+
+#: dcim/tables/cables.py:59
+msgid "Termination B"
+msgstr ""
+
+#: dcim/tables/cables.py:65 wireless/tables/wirelesslink.py:22
+msgid "Device A"
+msgstr ""
+
+#: dcim/tables/cables.py:71 wireless/tables/wirelesslink.py:31
+msgid "Device B"
+msgstr ""
+
+#: dcim/tables/cables.py:77
+msgid "Location A"
+msgstr ""
+
+#: dcim/tables/cables.py:83
+msgid "Location B"
+msgstr ""
+
+#: dcim/tables/cables.py:89
+msgid "Rack A"
+msgstr ""
+
+#: dcim/tables/cables.py:95
+msgid "Rack B"
+msgstr ""
+
+#: dcim/tables/cables.py:101
+msgid "Site A"
+msgstr ""
+
+#: dcim/tables/cables.py:107
+msgid "Site B"
+msgstr ""
+
+#: dcim/tables/connections.py:27 templates/dcim/consoleport.html:18
+#: templates/dcim/consoleserverport.html:75 templates/dcim/frontport.html:119
+#: templates/dcim/inventoryitem_edit.html:39
+msgid "Console Port"
+msgstr ""
+
+#: dcim/tables/connections.py:31 dcim/tables/connections.py:50
+#: dcim/tables/connections.py:71
+#: templates/dcim/inc/connection_endpoints.html:16
+msgid "Reachable"
+msgstr ""
+
+#: dcim/tables/connections.py:46 dcim/tables/devices.py:518
+#: templates/dcim/inventoryitem_edit.html:64 templates/dcim/poweroutlet.html:47
+#: templates/dcim/powerport.html:18
+msgid "Power Port"
+msgstr ""
+
+#: dcim/tables/devices.py:94 dcim/tables/devices.py:139 dcim/tables/racks.py:81
+#: dcim/tables/sites.py:143 netbox/navigation/menu.py:57
+#: netbox/navigation/menu.py:61 netbox/navigation/menu.py:63
+#: virtualization/forms/model_forms.py:124 virtualization/tables/clusters.py:83
+#: virtualization/views.py:211
+msgid "Devices"
+msgstr ""
+
+#: dcim/tables/devices.py:99 dcim/tables/devices.py:144
+#: virtualization/tables/clusters.py:88
+msgid "VMs"
+msgstr ""
+
+#: dcim/tables/devices.py:133 dcim/tables/devices.py:245
+#: extras/forms/model_forms.py:403 templates/dcim/device.html:131
+#: templates/dcim/device/render_config.html:11
+#: templates/dcim/device/render_config.html:15
+#: templates/dcim/devicerole.html:47 templates/dcim/platform.html:44
+#: templates/extras/configtemplate.html:10
+#: templates/virtualization/virtualmachine.html:47
+#: templates/virtualization/virtualmachine/render_config.html:11
+#: templates/virtualization/virtualmachine/render_config.html:15
+#: virtualization/tables/virtualmachines.py:88
+msgid "Config Template"
+msgstr ""
+
+#: dcim/tables/devices.py:216 dcim/tables/devices.py:1048
+#: ipam/forms/model_forms.py:298 ipam/tables/ip.py:352 ipam/tables/ip.py:418
+#: ipam/tables/ip.py:441 templates/ipam/ipaddress.html:12
+#: templates/ipam/ipaddress_edit.html:14
+#: virtualization/tables/virtualmachines.py:79
+msgid "IP Address"
+msgstr ""
+
+#: dcim/tables/devices.py:220 dcim/tables/devices.py:1052
+#: virtualization/tables/virtualmachines.py:70
+msgid "IPv4 Address"
+msgstr ""
+
+#: dcim/tables/devices.py:224 dcim/tables/devices.py:1056
+#: virtualization/tables/virtualmachines.py:74
+msgid "IPv6 Address"
+msgstr ""
+
+#: dcim/tables/devices.py:239
+msgid "VC Position"
+msgstr ""
+
+#: dcim/tables/devices.py:242
+msgid "VC Priority"
+msgstr ""
+
+#: dcim/tables/devices.py:249 templates/dcim/device_edit.html:38
+#: templates/dcim/devicebay_populate.html:16
+msgid "Parent Device"
+msgstr ""
+
+#: dcim/tables/devices.py:254
+msgid "Position (Device Bay)"
+msgstr ""
+
+#: dcim/tables/devices.py:263
+msgid "Console ports"
+msgstr ""
+
+#: dcim/tables/devices.py:266
+msgid "Console server ports"
+msgstr ""
+
+#: dcim/tables/devices.py:269
+msgid "Power ports"
+msgstr ""
+
+#: dcim/tables/devices.py:272
+msgid "Power outlets"
+msgstr ""
+
+#: dcim/tables/devices.py:275 dcim/tables/devices.py:1061
+#: dcim/tables/devicetypes.py:125 dcim/views.py:1002 dcim/views.py:1241
+#: dcim/views.py:1927 netbox/navigation/menu.py:82
+#: netbox/navigation/menu.py:220 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:64
+#: templates/dcim/virtualdevicecontext.html:85
+#: templates/virtualization/virtualmachine_list.html:14
+#: virtualization/tables/virtualmachines.py:85 virtualization/views.py:368
+#: wireless/tables/wirelesslan.py:55
+msgid "Interfaces"
+msgstr ""
+
+#: dcim/tables/devices.py:278
+msgid "Front ports"
+msgstr ""
+
+#: dcim/tables/devices.py:284
+msgid "Device bays"
+msgstr ""
+
+#: dcim/tables/devices.py:287
+msgid "Module bays"
+msgstr ""
+
+#: dcim/tables/devices.py:290
+msgid "Inventory items"
+msgstr ""
+
+#: dcim/tables/devices.py:329 dcim/tables/modules.py:56
+#: templates/dcim/modulebay.html:17
+msgid "Module Bay"
+msgstr ""
+
+#: dcim/tables/devices.py:350
+msgid "Cable Color"
+msgstr ""
+
+#: dcim/tables/devices.py:356
+msgid "Link Peers"
+msgstr ""
+
+#: dcim/tables/devices.py:359
+msgid "Mark Connected"
+msgstr ""
+
+#: dcim/tables/devices.py:567 ipam/forms/model_forms.py:709
+#: ipam/tables/fhrp.py:28 ipam/views.py:599 ipam/views.py:673
+#: netbox/navigation/menu.py:146 netbox/navigation/menu.py:148
+#: templates/dcim/interface.html:347 templates/ipam/ipaddress_bulk_add.html:15
+#: templates/ipam/service.html:43 templates/virtualization/vminterface.html:84
+msgid "IP Addresses"
+msgstr ""
+
+#: dcim/tables/devices.py:573 netbox/navigation/menu.py:190
+#: templates/ipam/inc/panels/fhrp_groups.html:5
+msgid "FHRP Groups"
+msgstr ""
+
+#: dcim/tables/devices.py:604 dcim/tables/devicetypes.py:224
+#: templates/dcim/interface.html:66
+msgid "Management Only"
+msgstr ""
+
+#: dcim/tables/devices.py:612
+msgid "Wireless link"
+msgstr ""
+
+#: dcim/tables/devices.py:622
+msgid "VDCs"
+msgstr ""
+
+#: dcim/tables/devices.py:706
+#: templates/circuits/inc/circuit_termination.html:80
+#: templates/dcim/consoleport.html:81 templates/dcim/consoleserverport.html:81
+#: templates/dcim/frontport.html:53 templates/dcim/frontport.html:125
+#: templates/dcim/interface.html:192 templates/dcim/inventoryitem_edit.html:69
+#: templates/dcim/rearport.html:18 templates/dcim/rearport.html:115
+msgid "Rear Port"
+msgstr ""
+
+#: dcim/tables/devices.py:871 templates/dcim/modulebay.html:51
+msgid "Installed Module"
+msgstr ""
+
+#: dcim/tables/devices.py:874
+msgid "Module Serial"
+msgstr ""
+
+#: dcim/tables/devices.py:878
+msgid "Module Asset Tag"
+msgstr ""
+
+#: dcim/tables/devices.py:887
+msgid "Module Status"
+msgstr ""
+
+#: dcim/tables/devices.py:929 dcim/tables/devicetypes.py:308
+#: templates/dcim/inventoryitem.html:41
+msgid "Component"
+msgstr ""
+
+#: dcim/tables/devices.py:980
+msgid "Items"
+msgstr ""
+
+#: dcim/tables/devicetypes.py:38 netbox/navigation/menu.py:72
+#: netbox/navigation/menu.py:74
+msgid "Device Types"
+msgstr ""
+
+#: dcim/tables/devicetypes.py:43 netbox/navigation/menu.py:75
+msgid "Module Types"
+msgstr ""
+
+#: dcim/tables/devicetypes.py:48 dcim/tables/devicetypes.py:140
+#: dcim/views.py:1077 dcim/views.py:2020 netbox/navigation/menu.py:91
+#: 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:5
+#: templates/dcim/inventoryitemrole.html:33
+msgid "Inventory Items"
+msgstr ""
+
+#: dcim/tables/devicetypes.py:53 extras/forms/filtersets.py:354
+#: extras/forms/model_forms.py:311 netbox/navigation/menu.py:66
+msgid "Platforms"
+msgstr ""
+
+#: dcim/tables/devicetypes.py:85 templates/dcim/devicetype.html:32
+msgid "Default Platform"
+msgstr ""
+
+#: dcim/tables/devicetypes.py:89 templates/dcim/devicetype.html:48
+msgid "Full Depth"
+msgstr ""
+
+#: dcim/tables/devicetypes.py:98
+msgid "U Height"
+msgstr ""
+
+#: dcim/tables/devicetypes.py:110 dcim/tables/modules.py:26
+msgid "Instances"
+msgstr ""
+
+#: dcim/tables/devicetypes.py:113 dcim/views.py:942 dcim/views.py:1181
+#: dcim/views.py:1867 netbox/navigation/menu.py:85
+#: 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
+msgid "Console Ports"
+msgstr ""
+
+#: dcim/tables/devicetypes.py:116 dcim/views.py:957 dcim/views.py:1196
+#: dcim/views.py:1882 netbox/navigation/menu.py:86
+#: 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
+msgid "Console Server Ports"
+msgstr ""
+
+#: dcim/tables/devicetypes.py:119 dcim/views.py:972 dcim/views.py:1211
+#: dcim/views.py:1897 netbox/navigation/menu.py:87
+#: 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
+msgid "Power Ports"
+msgstr ""
+
+#: dcim/tables/devicetypes.py:122 dcim/views.py:987 dcim/views.py:1226
+#: dcim/views.py:1912 netbox/navigation/menu.py:88
+#: 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
+msgid "Power Outlets"
+msgstr ""
+
+#: dcim/tables/devicetypes.py:128 dcim/views.py:1017 dcim/views.py:1256
+#: dcim/views.py:1948 netbox/navigation/menu.py:83
+#: 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 ""
+
+#: dcim/tables/devicetypes.py:131 dcim/views.py:1032 dcim/views.py:1271
+#: dcim/views.py:1963 netbox/navigation/menu.py:84
+#: 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
+msgid "Rear Ports"
+msgstr ""
+
+#: dcim/tables/devicetypes.py:134 dcim/views.py:1062 dcim/views.py:2001
+#: netbox/navigation/menu.py:90 templates/dcim/device/base.html:49
+#: templates/dcim/device_list.html:57 templates/dcim/devicetype/base.html:46
+msgid "Device Bays"
+msgstr ""
+
+#: dcim/tables/devicetypes.py:137 dcim/views.py:1047 dcim/views.py:1982
+#: netbox/navigation/menu.py:89 templates/dcim/device/base.html:46
+#: templates/dcim/device_list.html:64 templates/dcim/devicetype/base.html:43
+msgid "Module Bays"
+msgstr ""
+
+#: dcim/tables/power.py:36 netbox/navigation/menu.py:263
+#: templates/dcim/powerpanel.html:53 templates/extras/configrevision.html:59
+msgid "Power Feeds"
+msgstr ""
+
+#: dcim/tables/power.py:80 templates/dcim/powerfeed.html:106
+msgid "Max Utilization"
+msgstr ""
+
+#: dcim/tables/power.py:84
+msgid "Available Power (VA)"
+msgstr ""
+
+#: dcim/tables/racks.py:29 dcim/tables/sites.py:138
+#: netbox/navigation/menu.py:25 netbox/navigation/menu.py:27
+msgid "Racks"
+msgstr ""
+
+#: dcim/tables/racks.py:73 templates/dcim/device.html:340
+#: templates/dcim/rack.html:102
+msgid "Height"
+msgstr ""
+
+#: dcim/tables/racks.py:85
+msgid "Space"
+msgstr ""
+
+#: dcim/tables/racks.py:96 templates/dcim/rack.html:112
+msgid "Outer Width"
+msgstr ""
+
+#: dcim/tables/racks.py:100 templates/dcim/rack.html:122
+msgid "Outer Depth"
+msgstr ""
+
+#: dcim/tables/racks.py:108
+msgid "Max Weight"
+msgstr ""
+
+#: dcim/tables/sites.py:30 dcim/tables/sites.py:57
+#: extras/forms/filtersets.py:334 extras/forms/model_forms.py:291
+#: ipam/forms/bulk_edit.py:130 ipam/forms/model_forms.py:154
+#: ipam/tables/asn.py:65 netbox/navigation/menu.py:16
+#: netbox/navigation/menu.py:18
+msgid "Sites"
+msgstr ""
+
+#: dcim/views.py:131
+#, python-brace-format
+msgid "Disconnected {count} {type}"
+msgstr ""
+
+#: dcim/views.py:692 netbox/navigation/menu.py:29
+msgid "Reservations"
+msgstr ""
+
+#: dcim/views.py:711
+msgid "Non-Racked Devices"
+msgstr ""
+
+#: dcim/views.py:2033 extras/forms/model_forms.py:351
+#: templates/extras/configcontext.html:10
+#: virtualization/forms/model_forms.py:226 virtualization/views.py:386
+msgid "Config Context"
+msgstr ""
+
+#: dcim/views.py:2043 virtualization/views.py:396
+msgid "Render Config"
+msgstr ""
+
+#: extras/choices.py:27 extras/forms/misc.py:14
+msgid "Text"
+msgstr ""
+
+#: extras/choices.py:28
+msgid "Text (long)"
+msgstr ""
+
+#: extras/choices.py:29
+msgid "Integer"
+msgstr ""
+
+#: extras/choices.py:30
+msgid "Decimal"
+msgstr ""
+
+#: extras/choices.py:31
+msgid "Boolean (true/false)"
+msgstr ""
+
+#: extras/choices.py:32
+msgid "Date"
+msgstr ""
+
+#: extras/choices.py:33
+msgid "Date & time"
+msgstr ""
+
+#: extras/choices.py:35
+msgid "JSON"
+msgstr ""
+
+#: extras/choices.py:36
+msgid "Selection"
+msgstr ""
+
+#: extras/choices.py:37
+msgid "Multiple selection"
+msgstr ""
+
+#: extras/choices.py:39
+msgid "Multiple objects"
+msgstr ""
+
+#: extras/choices.py:50 templates/extras/customfield.html:69
+#: wireless/choices.py:27
+msgid "Disabled"
+msgstr ""
+
+#: extras/choices.py:51
+msgid "Loose"
+msgstr ""
+
+#: extras/choices.py:52
+msgid "Exact"
+msgstr ""
+
+#: extras/choices.py:64
+msgid "Read/write"
+msgstr ""
+
+#: extras/choices.py:65
+msgid "Read-only"
+msgstr ""
+
+#: extras/choices.py:66
+msgid "Hidden"
+msgstr ""
+
+#: extras/choices.py:67
+msgid "Hidden (if unset)"
+msgstr ""
+
+#: extras/choices.py:94 templates/tenancy/contact.html:58
+#: tenancy/forms/bulk_edit.py:117 wireless/forms/model_forms.py:159
+msgid "Link"
+msgstr ""
+
+#: extras/choices.py:108
+msgid "Newest"
+msgstr ""
+
+#: extras/choices.py:109
+msgid "Oldest"
+msgstr ""
+
+#: extras/choices.py:125 templates/generic/object.html:51
+msgid "Updated"
+msgstr ""
+
+#: extras/choices.py:126
+msgid "Deleted"
+msgstr ""
+
+#: extras/choices.py:143 extras/choices.py:165
+msgid "Info"
+msgstr ""
+
+#: extras/choices.py:144 extras/choices.py:164
+msgid "Success"
+msgstr ""
+
+#: extras/choices.py:145 extras/choices.py:166
+msgid "Warning"
+msgstr ""
+
+#: extras/choices.py:146
+msgid "Danger"
+msgstr ""
+
+#: extras/choices.py:163 utilities/choices.py:190
+msgid "Default"
+msgstr ""
+
+#: extras/choices.py:167
+msgid "Failure"
+msgstr ""
+
+#: extras/choices.py:174
+msgid "Hourly"
+msgstr ""
+
+#: extras/choices.py:175
+msgid "12 hours"
+msgstr ""
+
+#: extras/choices.py:176
+msgid "Daily"
+msgstr ""
+
+#: extras/choices.py:177
+msgid "Weekly"
+msgstr ""
+
+#: extras/choices.py:178
+msgid "30 days"
+msgstr ""
+
+#: extras/choices.py:243 extras/tables/tables.py:283
+#: templates/dcim/virtualchassis_edit.html:108 templates/extras/webhook.html:33
+#: templates/generic/bulk_add_component.html:56
+#: templates/generic/object_edit.html:29 templates/generic/object_edit.html:70
+#: templates/ipam/inc/ipaddress_edit_header.html:10
+msgid "Create"
+msgstr ""
+
+#: extras/choices.py:244 extras/tables/tables.py:286
+#: templates/extras/webhook.html:37
+msgid "Update"
+msgstr ""
+
+#: extras/choices.py:245 extras/tables/tables.py:289
+#: templates/circuits/inc/circuit_termination.html:22
+#: templates/dcim/devicetype/component_templates.html:24
+#: templates/dcim/inc/panels/inventory_items.html:29
+#: templates/dcim/moduletype/component_templates.html:24
+#: templates/dcim/powerpanel.html:71 templates/extras/report_list.html:34
+#: templates/extras/script_list.html:33 templates/extras/webhook.html:41
+#: templates/generic/bulk_delete.html:18 templates/generic/bulk_delete.html:45
+#: templates/generic/object_delete.html:15 templates/htmx/delete_form.html:23
+#: templates/ipam/inc/panels/fhrp_groups.html:35
+#: templates/users/objectpermission.html:49
+#: utilities/templates/buttons/delete.html:9
+msgid "Delete"
+msgstr ""
+
+#: extras/choices.py:269 utilities/choices.py:143 utilities/choices.py:191
+msgid "Blue"
+msgstr ""
+
+#: extras/choices.py:270 utilities/choices.py:142 utilities/choices.py:192
+msgid "Indigo"
+msgstr ""
+
+#: extras/choices.py:271 utilities/choices.py:140 utilities/choices.py:193
+msgid "Purple"
+msgstr ""
+
+#: extras/choices.py:272 utilities/choices.py:137 utilities/choices.py:194
+msgid "Pink"
+msgstr ""
+
+#: extras/choices.py:273 utilities/choices.py:136 utilities/choices.py:195
+msgid "Red"
+msgstr ""
+
+#: extras/choices.py:274 utilities/choices.py:154 utilities/choices.py:196
+msgid "Orange"
+msgstr ""
+
+#: extras/choices.py:275 utilities/choices.py:152 utilities/choices.py:197
+msgid "Yellow"
+msgstr ""
+
+#: extras/choices.py:276 utilities/choices.py:149 utilities/choices.py:198
+msgid "Green"
+msgstr ""
+
+#: extras/choices.py:277 utilities/choices.py:146 utilities/choices.py:199
+msgid "Teal"
+msgstr ""
+
+#: extras/choices.py:278 utilities/choices.py:145 utilities/choices.py:200
+msgid "Cyan"
+msgstr ""
+
+#: extras/choices.py:279 utilities/choices.py:201
+msgid "Gray"
+msgstr ""
+
+#: extras/choices.py:280 utilities/choices.py:160 utilities/choices.py:202
+msgid "Black"
+msgstr ""
+
+#: extras/choices.py:281 utilities/choices.py:161 utilities/choices.py:203
+msgid "White"
+msgstr ""
+
+#: extras/dashboard/forms.py:38
+msgid "Widget type"
+msgstr ""
+
+#: extras/dashboard/widgets.py:146
+msgid "Note"
+msgstr ""
+
+#: extras/dashboard/widgets.py:147
+msgid "Display some arbitrary custom content. Markdown is supported."
+msgstr ""
+
+#: extras/dashboard/widgets.py:160
+msgid "Object Counts"
+msgstr ""
+
+#: extras/dashboard/widgets.py:161
+msgid ""
+"Display a set of NetBox models and the number of objects created for each "
+"type."
+msgstr ""
+
+#: extras/dashboard/widgets.py:171
+msgid "Filters to apply when counting the number of objects"
+msgstr ""
+
+#: extras/dashboard/widgets.py:207
+msgid "Object List"
+msgstr ""
+
+#: extras/dashboard/widgets.py:208
+msgid "Display an arbitrary list of objects."
+msgstr ""
+
+#: extras/dashboard/widgets.py:221
+msgid "The default number of objects to display"
+msgstr ""
+
+#: extras/dashboard/widgets.py:268
+msgid "RSS Feed"
+msgstr ""
+
+#: extras/dashboard/widgets.py:273
+msgid "Embed an RSS feed from an external website."
+msgstr ""
+
+#: extras/dashboard/widgets.py:280
+msgid "Feed URL"
+msgstr ""
+
+#: extras/dashboard/widgets.py:285
+msgid "The maximum number of objects to display"
+msgstr ""
+
+#: extras/dashboard/widgets.py:290
+msgid "How long to stored the cached content (in seconds)"
+msgstr ""
+
+#: extras/dashboard/widgets.py:342 templates/account/base.html:10
+#: templates/account/bookmarks.html:7 templates/inc/profile_button.html:29
+msgid "Bookmarks"
+msgstr ""
+
+#: extras/dashboard/widgets.py:346
+msgid "Show your personal bookmarks"
+msgstr ""
+
+#: extras/filtersets.py:176 extras/filtersets.py:511 extras/filtersets.py:539
+msgid "Data file (ID)"
+msgstr ""
+
+#: extras/filtersets.py:448 virtualization/forms/filtersets.py:111
+msgid "Cluster type"
+msgstr ""
+
+#: extras/filtersets.py:454 virtualization/filtersets.py:93
+#: virtualization/filtersets.py:143
+msgid "Cluster type (slug)"
+msgstr ""
+
+#: extras/filtersets.py:459 ipam/forms/bulk_edit.py:477
+#: ipam/forms/model_forms.py:587 virtualization/forms/filtersets.py:105
+msgid "Cluster group"
+msgstr ""
+
+#: extras/filtersets.py:465 virtualization/filtersets.py:132
+msgid "Cluster group (slug)"
+msgstr ""
+
+#: extras/filtersets.py:475 tenancy/forms/forms.py:16 tenancy/forms/forms.py:39
+msgid "Tenant group"
+msgstr ""
+
+#: extras/filtersets.py:481 tenancy/filtersets.py:151 tenancy/filtersets.py:171
+msgid "Tenant group (slug)"
+msgstr ""
+
+#: extras/filtersets.py:497 templates/extras/tag.html:12
+msgid "Tag"
+msgstr ""
+
+#: extras/filtersets.py:503
+msgid "Tag (slug)"
+msgstr ""
+
+#: extras/filtersets.py:563 extras/forms/filtersets.py:413
+msgid "Has local config context data"
+msgstr ""
+
+#: extras/filtersets.py:588
+msgid "User name"
+msgstr ""
+
+#: extras/forms/bulk_edit.py:31 extras/forms/filtersets.py:58
+msgid "Group name"
+msgstr ""
+
+#: extras/forms/bulk_edit.py:39 extras/forms/filtersets.py:66
+#: extras/tables/tables.py:72 templates/extras/customfield.html:39
+#: templates/generic/bulk_import.html:116
+msgid "Required"
+msgstr ""
+
+#: extras/forms/bulk_edit.py:52 extras/forms/bulk_import.py:56
+#: extras/forms/filtersets.py:80 extras/models/customfields.py:187
+msgid "UI visibility"
+msgstr ""
+
+#: extras/forms/bulk_edit.py:58 extras/forms/filtersets.py:83
+msgid "Is cloneable"
+msgstr ""
+
+#: extras/forms/bulk_edit.py:97 extras/forms/filtersets.py:123
+msgid "New window"
+msgstr ""
+
+#: extras/forms/bulk_edit.py:106
+msgid "Button class"
+msgstr ""
+
+#: extras/forms/bulk_edit.py:123 extras/forms/filtersets.py:161
+#: extras/models/models.py:356
+msgid "MIME type"
+msgstr ""
+
+#: extras/forms/bulk_edit.py:128 extras/forms/filtersets.py:164
+msgid "File extension"
+msgstr ""
+
+#: extras/forms/bulk_edit.py:133 extras/forms/filtersets.py:168
+msgid "As attachment"
+msgstr ""
+
+#: extras/forms/bulk_edit.py:161 extras/forms/filtersets.py:210
+#: extras/tables/tables.py:236 templates/extras/savedfilter.html:30
+msgid "Shared"
+msgstr ""
+
+#: extras/forms/bulk_edit.py:182
+msgid "On create"
+msgstr ""
+
+#: extras/forms/bulk_edit.py:187
+msgid "On update"
+msgstr ""
+
+#: extras/forms/bulk_edit.py:192
+msgid "On delete"
+msgstr ""
+
+#: extras/forms/bulk_edit.py:197
+msgid "On job start"
+msgstr ""
+
+#: extras/forms/bulk_edit.py:202
+msgid "On job end"
+msgstr ""
+
+#: extras/forms/bulk_edit.py:209 extras/forms/filtersets.py:239
+#: extras/models/models.py:100
+msgid "HTTP method"
+msgstr ""
+
+#: extras/forms/bulk_edit.py:213 templates/extras/webhook.html:66
+msgid "Payload URL"
+msgstr ""
+
+#: extras/forms/bulk_edit.py:218 extras/models/models.py:146
+msgid "SSL verification"
+msgstr ""
+
+#: extras/forms/bulk_edit.py:221 templates/extras/webhook.html:74
+msgid "Secret"
+msgstr ""
+
+#: extras/forms/bulk_edit.py:226
+msgid "CA file path"
+msgstr ""
+
+#: extras/forms/bulk_edit.py:261
+msgid "Is active"
+msgstr ""
+
+#: extras/forms/bulk_import.py:31 extras/forms/bulk_import.py:91
+#: extras/forms/bulk_import.py:107 extras/forms/bulk_import.py:131
+#: extras/forms/bulk_import.py:145 extras/forms/filtersets.py:111
+#: extras/forms/filtersets.py:157 extras/forms/filtersets.py:198
+#: extras/forms/model_forms.py:46 extras/forms/model_forms.py:119
+#: extras/forms/model_forms.py:147 extras/forms/model_forms.py:189
+#: extras/forms/model_forms.py:227
+msgid "Content types"
+msgstr ""
+
+#: extras/forms/bulk_import.py:34 extras/forms/bulk_import.py:94
+#: extras/forms/bulk_import.py:110 extras/forms/bulk_import.py:133
+#: extras/forms/bulk_import.py:148 tenancy/forms/bulk_import.py:96
+msgid "One or more assigned object types"
+msgstr ""
+
+#: extras/forms/bulk_import.py:39
+msgid "Field data type (e.g. text, integer, etc.)"
+msgstr ""
+
+#: extras/forms/bulk_import.py:42 extras/forms/filtersets.py:50
+#: extras/forms/filtersets.py:234 extras/forms/model_forms.py:51
+#: extras/forms/model_forms.py:215 tenancy/forms/filtersets.py:93
+msgid "Object type"
+msgstr ""
+
+#: extras/forms/bulk_import.py:46
+msgid "Object type (for object or multi-object fields)"
+msgstr ""
+
+#: extras/forms/bulk_import.py:49 extras/forms/filtersets.py:75
+msgid "Choice set"
+msgstr ""
+
+#: extras/forms/bulk_import.py:53
+msgid "Choice set (for selection fields)"
+msgstr ""
+
+#: extras/forms/bulk_import.py:58
+msgid "How the custom field is displayed in the user interface"
+msgstr ""
+
+#: extras/forms/bulk_import.py:74
+msgid "The base set of predefined choices to use (if any)"
+msgstr ""
+
+#: extras/forms/bulk_import.py:79
+msgid "Comma-separated list of field choices"
+msgstr ""
+
+#: extras/forms/bulk_import.py:174
+msgid "Assigned object type"
+msgstr ""
+
+#: extras/forms/bulk_import.py:179
+msgid "The classification of entry"
+msgstr ""
+
+#: extras/forms/filtersets.py:55
+msgid "Field type"
+msgstr ""
+
+#: extras/forms/filtersets.py:94 extras/tables/tables.py:87
+#: templates/generic/bulk_import.html:148
+msgid "Choices"
+msgstr ""
+
+#: extras/forms/filtersets.py:138 extras/forms/filtersets.py:302
+#: extras/forms/filtersets.py:392 extras/forms/model_forms.py:346
+#: templates/core/job.html:80 templates/extras/configcontext.html:86
+msgid "Data"
+msgstr ""
+
+#: extras/forms/filtersets.py:149 extras/forms/filtersets.py:316
+#: extras/forms/filtersets.py:402 utilities/choices.py:219
+#: utilities/forms/bulk_import.py:27
+msgid "Data file"
+msgstr ""
+
+#: extras/forms/filtersets.py:182
+msgid "Content type"
+msgstr ""
+
+#: extras/forms/filtersets.py:229 extras/forms/model_forms.py:234
+#: templates/extras/webhook.html:28
+msgid "Events"
+msgstr ""
+
+#: extras/forms/filtersets.py:253
+msgid "Object creations"
+msgstr ""
+
+#: extras/forms/filtersets.py:260
+msgid "Object updates"
+msgstr ""
+
+#: extras/forms/filtersets.py:267
+msgid "Object deletions"
+msgstr ""
+
+#: extras/forms/filtersets.py:274
+msgid "Job starts"
+msgstr ""
+
+#: extras/forms/filtersets.py:281 extras/forms/model_forms.py:250
+msgid "Job terminations"
+msgstr ""
+
+#: extras/forms/filtersets.py:290
+msgid "Tagged object type"
+msgstr ""
+
+#: extras/forms/filtersets.py:295
+msgid "Allowed object type"
+msgstr ""
+
+#: extras/forms/filtersets.py:324 extras/forms/model_forms.py:281
+#: netbox/navigation/menu.py:19
+msgid "Regions"
+msgstr ""
+
+#: extras/forms/filtersets.py:329 extras/forms/model_forms.py:286
+msgid "Site groups"
+msgstr ""
+
+#: extras/forms/filtersets.py:339 extras/forms/model_forms.py:296
+#: netbox/navigation/menu.py:21
+msgid "Locations"
+msgstr ""
+
+#: extras/forms/filtersets.py:344 extras/forms/model_forms.py:301
+msgid "Device types"
+msgstr ""
+
+#: extras/forms/filtersets.py:349 extras/forms/model_forms.py:306
+msgid "Roles"
+msgstr ""
+
+#: extras/forms/filtersets.py:359 extras/forms/model_forms.py:316
+msgid "Cluster types"
+msgstr ""
+
+#: extras/forms/filtersets.py:365 extras/forms/model_forms.py:321
+msgid "Cluster groups"
+msgstr ""
+
+#: extras/forms/filtersets.py:370 extras/forms/model_forms.py:326
+#: netbox/navigation/menu.py:224 netbox/navigation/menu.py:226
+#: templates/virtualization/clustertype.html:33
+#: virtualization/tables/clusters.py:23 virtualization/tables/clusters.py:45
+msgid "Clusters"
+msgstr ""
+
+#: extras/forms/filtersets.py:375 extras/forms/model_forms.py:331
+msgid "Tenant groups"
+msgstr ""
+
+#: extras/forms/filtersets.py:429 extras/forms/filtersets.py:470
+msgid "After"
+msgstr ""
+
+#: extras/forms/filtersets.py:434 extras/forms/filtersets.py:475
+msgid "Before"
+msgstr ""
+
+#: extras/forms/filtersets.py:465 extras/tables/tables.py:426
+#: templates/extras/htmx/report_result.html:43
+#: templates/extras/objectchange.html:34
+msgid "Time"
+msgstr ""
+
+#: extras/forms/filtersets.py:479 extras/tables/tables.py:440
+#: templates/extras/objectchange.html:50
+msgid "Action"
+msgstr ""
+
+#: extras/forms/mixins.py:71 extras/forms/model_forms.py:195
+#: templates/extras/savedfilter.html:10
+msgid "Saved Filter"
+msgstr ""
+
+#: extras/forms/model_forms.py:56
+msgid "Type of the related object (for object/multi-object fields only)"
+msgstr ""
+
+#: extras/forms/model_forms.py:64 templates/extras/customfield.html:11
+msgid "Custom Field"
+msgstr ""
+
+#: extras/forms/model_forms.py:67 templates/extras/customfield.html:60
+msgid "Behavior"
+msgstr ""
+
+#: extras/forms/model_forms.py:68
+msgid "Values"
+msgstr ""
+
+#: extras/forms/model_forms.py:69 extras/forms/model_forms.py:494
+#: templates/extras/configrevision.html:147
+msgid "Validation"
+msgstr ""
+
+#: extras/forms/model_forms.py:77
+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:80
+msgid ""
+"This will be displayed as help text for the form field. Markdown is "
+"supported."
+msgstr ""
+
+#: extras/forms/model_forms.py:97
+msgid ""
+"Enter one choice per line. An optional label may be specified for each "
+"choice by appending it with a comma. Example:"
+msgstr ""
+
+#: extras/forms/model_forms.py:125 templates/extras/customlink.html:10
+msgid "Custom Link"
+msgstr ""
+
+#: extras/forms/model_forms.py:126
+msgid "Templates"
+msgstr ""
+
+#: extras/forms/model_forms.py:138
+msgid ""
+"Jinja2 template code for the link text. Reference the object as "
+"{{ object }}
. Links which render as empty text will not be "
+"displayed."
+msgstr ""
+
+#: extras/forms/model_forms.py:141
+msgid ""
+"Jinja2 template code for the link URL. Reference the object as "
+"{{ object }}
."
+msgstr ""
+
+#: extras/forms/model_forms.py:152 extras/forms/model_forms.py:397
+msgid "Template code"
+msgstr ""
+
+#: extras/forms/model_forms.py:158 templates/extras/exporttemplate.html:17
+msgid "Export Template"
+msgstr ""
+
+#: extras/forms/model_forms.py:160
+msgid "Rendering"
+msgstr ""
+
+#: extras/forms/model_forms.py:174 extras/forms/model_forms.py:422
+msgid "Template content is populated from the remote source selected below."
+msgstr ""
+
+#: extras/forms/model_forms.py:181 extras/forms/model_forms.py:429
+msgid "Must specify either local content or a data file"
+msgstr ""
+
+#: extras/forms/model_forms.py:233 templates/extras/webhook.html:11
+msgid "Webhook"
+msgstr ""
+
+#: extras/forms/model_forms.py:235 templates/extras/webhook.html:57
+msgid "HTTP Request"
+msgstr ""
+
+#: extras/forms/model_forms.py:238 templates/extras/webhook.html:116
+msgid "Conditions"
+msgstr ""
+
+#: extras/forms/model_forms.py:239 templates/extras/webhook.html:82
+msgid "SSL"
+msgstr ""
+
+#: extras/forms/model_forms.py:246
+msgid "Creations"
+msgstr ""
+
+#: extras/forms/model_forms.py:247
+msgid "Updates"
+msgstr ""
+
+#: extras/forms/model_forms.py:248
+msgid "Deletions"
+msgstr ""
+
+#: extras/forms/model_forms.py:249
+msgid "Job executions"
+msgstr ""
+
+#: extras/forms/model_forms.py:262 users/forms/model_forms.py:285
+msgid "Object types"
+msgstr ""
+
+#: extras/forms/model_forms.py:336 netbox/navigation/menu.py:40
+#: tenancy/tables/tenants.py:22
+msgid "Tenants"
+msgstr ""
+
+#: extras/forms/model_forms.py:353 ipam/forms/filtersets.py:145
+#: templates/extras/configcontext.html:62 templates/ipam/ipaddress.html:62
+#: templates/ipam/vlan_edit.html:30 tenancy/forms/filtersets.py:87
+#: users/forms/model_forms.py:323
+msgid "Assignment"
+msgstr ""
+
+#: extras/forms/model_forms.py:379
+msgid "Data is populated from the remote source selected below."
+msgstr ""
+
+#: extras/forms/model_forms.py:385
+msgid "Must specify either local data or a data file"
+msgstr ""
+
+#: extras/forms/model_forms.py:404 templates/core/datafile.html:65
+msgid "Content"
+msgstr ""
+
+#: extras/forms/model_forms.py:488 templates/dcim/rack_elevation_list.html:6
+#: templates/extras/configrevision.html:43
+msgid "Rack Elevations"
+msgstr ""
+
+#: extras/forms/model_forms.py:490 netbox/navigation/menu.py:142
+#: templates/extras/configrevision.html:79
+msgid "IPAM"
+msgstr ""
+
+#: extras/forms/model_forms.py:491 templates/extras/configrevision.html:95
+msgid "Security"
+msgstr ""
+
+#: extras/forms/model_forms.py:492 templates/extras/configrevision.html:107
+msgid "Banners"
+msgstr ""
+
+#: extras/forms/model_forms.py:493 templates/extras/configrevision.html:131
+msgid "Pagination"
+msgstr ""
+
+#: extras/forms/model_forms.py:495 templates/account/preferences.html:6
+#: templates/extras/configrevision.html:159
+msgid "User Preferences"
+msgstr ""
+
+#: extras/forms/model_forms.py:499
+msgid "Config Revision"
+msgstr ""
+
+#: extras/forms/model_forms.py:537
+msgid "This parameter has been defined statically and cannot be modified."
+msgstr ""
+
+#: extras/forms/model_forms.py:545
+#, python-brace-format
+msgid "Current value: {value}"
+msgstr ""
+
+#: extras/forms/model_forms.py:547
+msgid " (default)"
+msgstr ""
+
+#: extras/forms/reports.py:18 extras/forms/scripts.py:24
+msgid "Schedule at"
+msgstr ""
+
+#: extras/forms/reports.py:19
+msgid "Schedule execution of report to a set time"
+msgstr ""
+
+#: extras/forms/reports.py:24 extras/forms/scripts.py:30
+msgid "Recurs every"
+msgstr ""
+
+#: extras/forms/reports.py:28
+msgid "Interval at which this report is re-run (in minutes)"
+msgstr ""
+
+#: extras/forms/reports.py:36 extras/forms/scripts.py:42
+#, python-brace-format
+msgid " (current time: {now})"
+msgstr ""
+
+#: extras/forms/reports.py:46 extras/forms/scripts.py:52
+msgid "Scheduled time must be in the future."
+msgstr ""
+
+#: extras/forms/scripts.py:18
+msgid "Commit changes"
+msgstr ""
+
+#: extras/forms/scripts.py:19
+msgid "Commit changes to the database (uncheck for a dry-run)"
+msgstr ""
+
+#: extras/forms/scripts.py:25
+msgid "Schedule execution of script to a set time"
+msgstr ""
+
+#: extras/forms/scripts.py:34
+msgid "Interval at which this script is re-run (in minutes)"
+msgstr ""
+
+#: extras/models/change_logging.py:23
+msgid "time"
+msgstr ""
+
+#: extras/models/change_logging.py:36
+msgid "user name"
+msgstr ""
+
+#: extras/models/change_logging.py:41
+msgid "request ID"
+msgstr ""
+
+#: extras/models/change_logging.py:46 extras/models/staging.py:69
+msgid "action"
+msgstr ""
+
+#: extras/models/change_logging.py:80
+msgid "pre-change data"
+msgstr ""
+
+#: extras/models/change_logging.py:86
+msgid "post-change data"
+msgstr ""
+
+#: extras/models/change_logging.py:96
+msgid "object change"
+msgstr ""
+
+#: extras/models/change_logging.py:97
+msgid "object changes"
+msgstr ""
+
+#: extras/models/configs.py:130
+msgid "config context"
+msgstr ""
+
+#: extras/models/configs.py:131
+msgid "config contexts"
+msgstr ""
+
+#: extras/models/configs.py:149 extras/models/configs.py:205
+msgid "JSON data must be in object form. Example:"
+msgstr ""
+
+#: 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
+msgid "template code"
+msgstr ""
+
+#: extras/models/configs.py:225
+msgid "Jinja2 template code."
+msgstr ""
+
+#: extras/models/configs.py:228
+msgid "environment parameters"
+msgstr ""
+
+#: extras/models/configs.py:233
+msgid ""
+"Any additional parameters to pass when constructing the Jinja2 "
+"environment."
+msgstr ""
+
+#: extras/models/configs.py:240
+msgid "config template"
+msgstr ""
+
+#: extras/models/configs.py:241
+msgid "config templates"
+msgstr ""
+
+#: extras/models/customfields.py:66
+msgid "The object(s) to which this field applies."
+msgstr ""
+
+#: extras/models/customfields.py:73
+msgid "The type of data this custom field holds"
+msgstr ""
+
+#: extras/models/customfields.py:80
+msgid "The type of NetBox object this field maps to (for object fields)"
+msgstr ""
+
+#: extras/models/customfields.py:86
+msgid "Internal field name"
+msgstr ""
+
+#: extras/models/customfields.py:90
+msgid "Only alphanumeric characters and underscores are allowed."
+msgstr ""
+
+#: extras/models/customfields.py:95
+msgid "Double underscores are not permitted in custom field names."
+msgstr ""
+
+#: extras/models/customfields.py:106
+msgid ""
+"Name of the field as displayed to users (if not provided, 'the field's name "
+"will be used)"
+msgstr ""
+
+#: extras/models/customfields.py:110 extras/models/models.py:264
+msgid "group name"
+msgstr ""
+
+#: extras/models/customfields.py:113
+msgid "Custom fields within the same group will be displayed together"
+msgstr ""
+
+#: extras/models/customfields.py:121
+msgid "required"
+msgstr ""
+
+#: extras/models/customfields.py:123
+msgid ""
+"If true, this field is required when creating new objects or editing an "
+"existing object."
+msgstr ""
+
+#: extras/models/customfields.py:126
+msgid "search weight"
+msgstr ""
+
+#: extras/models/customfields.py:129
+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:134
+msgid "filter logic"
+msgstr ""
+
+#: extras/models/customfields.py:138
+msgid ""
+"Loose matches any instance of a given string; exact matches the entire field."
+msgstr ""
+
+#: extras/models/customfields.py:141
+msgid "default"
+msgstr ""
+
+#: extras/models/customfields.py:145
+msgid ""
+"Default value for the field (must be a JSON value). Encapsulate strings with "
+"double quotes (e.g. \"Foo\")."
+msgstr ""
+
+#: extras/models/customfields.py:150
+msgid "display weight"
+msgstr ""
+
+#: extras/models/customfields.py:151
+msgid "Fields with higher weights appear lower in a form."
+msgstr ""
+
+#: extras/models/customfields.py:156
+msgid "minimum value"
+msgstr ""
+
+#: extras/models/customfields.py:157
+msgid "Minimum allowed value (for numeric fields)"
+msgstr ""
+
+#: extras/models/customfields.py:162
+msgid "maximum value"
+msgstr ""
+
+#: extras/models/customfields.py:163
+msgid "Maximum allowed value (for numeric fields)"
+msgstr ""
+
+#: extras/models/customfields.py:169
+msgid "validation regex"
+msgstr ""
+
+#: extras/models/customfields.py:171
+#, python-brace-format
+msgid ""
+"Regular expression to enforce on text field values. Use ^ and $ to force "
+"matching of entire string. For example, ^[A-Z]{3}$
will limit "
+"values to exactly three uppercase letters."
+msgstr ""
+
+#: extras/models/customfields.py:179
+msgid "choice set"
+msgstr ""
+
+#: extras/models/customfields.py:188
+msgid "Specifies the visibility of custom field in the UI"
+msgstr ""
+
+#: extras/models/customfields.py:192
+msgid "is cloneable"
+msgstr ""
+
+#: extras/models/customfields.py:193
+msgid "Replicate this value when cloning objects"
+msgstr ""
+
+#: extras/models/customfields.py:206
+msgid "custom field"
+msgstr ""
+
+#: extras/models/customfields.py:207
+msgid "custom fields"
+msgstr ""
+
+#: extras/models/customfields.py:290
+#, python-brace-format
+msgid "Invalid default value \"{value}\": {error}"
+msgstr ""
+
+#: extras/models/customfields.py:297
+msgid "A minimum value may be set only for numeric fields"
+msgstr ""
+
+#: extras/models/customfields.py:299
+msgid "A maximum value may be set only for numeric fields"
+msgstr ""
+
+#: extras/models/customfields.py:309
+msgid "Regular expression validation is supported only for text and URL fields"
+msgstr ""
+
+#: extras/models/customfields.py:319
+msgid "Selection fields must specify a set of choices."
+msgstr ""
+
+#: extras/models/customfields.py:323
+msgid "Choices may be set only on selection fields."
+msgstr ""
+
+#: extras/models/customfields.py:330
+msgid "Object fields must define an object type."
+msgstr ""
+
+#: extras/models/customfields.py:335
+#, python-brace-format
+msgid "{type} fields may not define an object type."
+msgstr ""
+
+#: extras/models/customfields.py:415
+msgid "True"
+msgstr ""
+
+#: extras/models/customfields.py:416
+msgid "False"
+msgstr ""
+
+#: extras/models/customfields.py:498
+#, python-brace-format
+msgid "Values must match this regex: {regex}
"
+msgstr ""
+
+#: extras/models/customfields.py:513
+msgid "Field is set to read-only."
+msgstr ""
+
+#: extras/models/customfields.py:595
+msgid "Value must be a string."
+msgstr ""
+
+#: extras/models/customfields.py:597
+#, python-brace-format
+msgid "Value must match regex '{regex}'"
+msgstr ""
+
+#: extras/models/customfields.py:602
+msgid "Value must be an integer."
+msgstr ""
+
+#: extras/models/customfields.py:605 extras/models/customfields.py:620
+#, python-brace-format
+msgid "Value must be at least {minimum}"
+msgstr ""
+
+#: extras/models/customfields.py:609 extras/models/customfields.py:624
+#, python-brace-format
+msgid "Value must not exceed {maximum}"
+msgstr ""
+
+#: extras/models/customfields.py:617
+msgid "Value must be a decimal."
+msgstr ""
+
+#: extras/models/customfields.py:629
+msgid "Value must be true or false."
+msgstr ""
+
+#: extras/models/customfields.py:637
+msgid "Date values must be in ISO 8601 format (YYYY-MM-DD)."
+msgstr ""
+
+#: extras/models/customfields.py:646
+msgid "Date and time values must be in ISO 8601 format (YYYY-MM-DD HH:MM:SS)."
+msgstr ""
+
+#: extras/models/customfields.py:653
+#, python-brace-format
+msgid "Invalid choice ({value}) for choice set {choiceset}."
+msgstr ""
+
+#: extras/models/customfields.py:663
+#, python-brace-format
+msgid "Invalid choice(s) ({value}) for choice set {choiceset}."
+msgstr ""
+
+#: extras/models/customfields.py:672
+#, python-brace-format
+msgid "Value must be an object ID, not {type}"
+msgstr ""
+
+#: extras/models/customfields.py:678
+#, python-brace-format
+msgid "Value must be a list of object IDs, not {type}"
+msgstr ""
+
+#: extras/models/customfields.py:682
+#, python-brace-format
+msgid "Found invalid object ID: {id}"
+msgstr ""
+
+#: extras/models/customfields.py:685
+msgid "Required field cannot be empty."
+msgstr ""
+
+#: extras/models/customfields.py:704
+msgid "Base set of predefined choices (optional)"
+msgstr ""
+
+#: extras/models/customfields.py:716
+msgid "Choices are automatically ordered alphabetically"
+msgstr ""
+
+#: extras/models/customfields.py:723
+msgid "custom field choice set"
+msgstr ""
+
+#: extras/models/customfields.py:724
+msgid "custom field choice sets"
+msgstr ""
+
+#: extras/models/customfields.py:760
+msgid "Must define base or extra choices."
+msgstr ""
+
+#: extras/models/dashboard.py:19
+msgid "layout"
+msgstr ""
+
+#: extras/models/dashboard.py:23
+msgid "config"
+msgstr ""
+
+#: extras/models/dashboard.py:28
+msgid "dashboard"
+msgstr ""
+
+#: extras/models/dashboard.py:29
+msgid "dashboards"
+msgstr ""
+
+#: extras/models/models.py:50
+msgid "object types"
+msgstr ""
+
+#: extras/models/models.py:52
+msgid "The object(s) to which this Webhook applies."
+msgstr ""
+
+#: extras/models/models.py:60
+msgid "on create"
+msgstr ""
+
+#: extras/models/models.py:62
+msgid "Triggers when a matching object is created."
+msgstr ""
+
+#: extras/models/models.py:65
+msgid "on update"
+msgstr ""
+
+#: extras/models/models.py:67
+msgid "Triggers when a matching object is updated."
+msgstr ""
+
+#: extras/models/models.py:70
+msgid "on delete"
+msgstr ""
+
+#: extras/models/models.py:72
+msgid "Triggers when a matching object is deleted."
+msgstr ""
+
+#: extras/models/models.py:75
+msgid "on job start"
+msgstr ""
+
+#: extras/models/models.py:77
+msgid "Triggers when a job for a matching object is started."
+msgstr ""
+
+#: extras/models/models.py:80
+msgid "on job end"
+msgstr ""
+
+#: extras/models/models.py:82
+msgid "Triggers when a job for a matching object terminates."
+msgstr ""
+
+#: extras/models/models.py:88
+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:105
+msgid "HTTP content type"
+msgstr ""
+
+#: extras/models/models.py:107
+msgid ""
+"The complete list of official content types is available here."
+msgstr ""
+
+#: extras/models/models.py:112
+msgid "additional headers"
+msgstr ""
+
+#: extras/models/models.py:115
+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: "
+"Value
. Jinja2 template processing is supported with the same context "
+"as the request body (below)."
+msgstr ""
+
+#: extras/models/models.py:121
+msgid "body template"
+msgstr ""
+
+#: extras/models/models.py:124
+msgid ""
+"Jinja2 template for a custom request body. If blank, a JSON object "
+"representing the change will be included. Available context data includes: "
+"event
, model
, timestamp
, "
+"username
, request_id
, and data
."
+msgstr ""
+
+#: extras/models/models.py:130
+msgid "secret"
+msgstr ""
+
+#: extras/models/models.py:134
+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:139
+msgid "conditions"
+msgstr ""
+
+#: extras/models/models.py:142
+msgid ""
+"A set of conditions which determine whether the webhook will be generated."
+msgstr ""
+
+#: extras/models/models.py:147
+msgid "Enable SSL certificate verification. Disable with caution!"
+msgstr ""
+
+#: extras/models/models.py:153 templates/extras/webhook.html:91
+msgid "CA File Path"
+msgstr ""
+
+#: extras/models/models.py:155
+msgid ""
+"The specific CA certificate file to use for SSL verification. Leave blank to "
+"use the system defaults."
+msgstr ""
+
+#: extras/models/models.py:167
+msgid "webhook"
+msgstr ""
+
+#: extras/models/models.py:168
+msgid "webhooks"
+msgstr ""
+
+#: extras/models/models.py:188
+msgid ""
+"At least one event type must be selected: create, update, delete, job_start, "
+"and/or job_end."
+msgstr ""
+
+#: extras/models/models.py:200
+msgid "Do not specify a CA certificate file if SSL verification is disabled."
+msgstr ""
+
+#: extras/models/models.py:240
+msgid "The object type(s) to which this link applies."
+msgstr ""
+
+#: extras/models/models.py:252
+msgid "link text"
+msgstr ""
+
+#: extras/models/models.py:253
+msgid "Jinja2 template code for link text"
+msgstr ""
+
+#: extras/models/models.py:256
+msgid "link URL"
+msgstr ""
+
+#: extras/models/models.py:257
+msgid "Jinja2 template code for link URL"
+msgstr ""
+
+#: extras/models/models.py:267
+msgid "Links with the same group will appear as a dropdown menu"
+msgstr ""
+
+#: extras/models/models.py:270
+msgid "button class"
+msgstr ""
+
+#: extras/models/models.py:274
+msgid ""
+"The class of the first link in a group will be used for the dropdown button"
+msgstr ""
+
+#: extras/models/models.py:277
+msgid "new window"
+msgstr ""
+
+#: extras/models/models.py:279
+msgid "Force link to open in a new window"
+msgstr ""
+
+#: extras/models/models.py:288
+msgid "custom link"
+msgstr ""
+
+#: extras/models/models.py:289
+msgid "custom links"
+msgstr ""
+
+#: extras/models/models.py:336
+msgid "The object type(s) to which this template applies."
+msgstr ""
+
+#: extras/models/models.py:349
+msgid ""
+"Jinja2 template code. The list of objects being exported is passed as a "
+"context variable named queryset
."
+msgstr ""
+
+#: extras/models/models.py:357
+msgid "Defaults to text/plain; charset=utf-8
"
+msgstr ""
+
+#: extras/models/models.py:360
+msgid "file extension"
+msgstr ""
+
+#: extras/models/models.py:363
+msgid "Extension to append to the rendered filename"
+msgstr ""
+
+#: extras/models/models.py:366
+msgid "as attachment"
+msgstr ""
+
+#: extras/models/models.py:368
+msgid "Download file as attachment"
+msgstr ""
+
+#: extras/models/models.py:377
+msgid "export template"
+msgstr ""
+
+#: extras/models/models.py:378
+msgid "export templates"
+msgstr ""
+
+#: extras/models/models.py:395
+#, python-brace-format
+msgid "\"{name}\" is a reserved name. Please choose a different name."
+msgstr ""
+
+#: extras/models/models.py:445
+msgid "The object type(s) to which this filter applies."
+msgstr ""
+
+#: extras/models/models.py:477
+msgid "shared"
+msgstr ""
+
+#: extras/models/models.py:490
+msgid "saved filter"
+msgstr ""
+
+#: extras/models/models.py:491
+msgid "saved filters"
+msgstr ""
+
+#: extras/models/models.py:509
+msgid "Filter parameters must be stored as a dictionary of keyword arguments."
+msgstr ""
+
+#: extras/models/models.py:537
+msgid "image height"
+msgstr ""
+
+#: extras/models/models.py:540
+msgid "image width"
+msgstr ""
+
+#: extras/models/models.py:554
+msgid "image attachment"
+msgstr ""
+
+#: extras/models/models.py:555
+msgid "image attachments"
+msgstr ""
+
+#: extras/models/models.py:623
+msgid "kind"
+msgstr ""
+
+#: extras/models/models.py:634
+msgid "journal entry"
+msgstr ""
+
+#: extras/models/models.py:635
+msgid "journal entries"
+msgstr ""
+
+#: extras/models/models.py:651
+#, python-brace-format
+msgid "Journaling is not supported for this object type ({type})."
+msgstr ""
+
+#: extras/models/models.py:690
+msgid "bookmark"
+msgstr ""
+
+#: extras/models/models.py:691
+msgid "bookmarks"
+msgstr ""
+
+#: extras/models/models.py:708
+msgid "comment"
+msgstr ""
+
+#: extras/models/models.py:715
+msgid "configuration data"
+msgstr ""
+
+#: extras/models/models.py:722
+msgid "config revision"
+msgstr ""
+
+#: extras/models/models.py:723
+msgid "config revisions"
+msgstr ""
+
+#: extras/models/models.py:727
+msgid "Default configuration"
+msgstr ""
+
+#: extras/models/models.py:729
+msgid "Current configuration"
+msgstr ""
+
+#: extras/models/models.py:730
+#, python-brace-format
+msgid "Config revision #{id}"
+msgstr ""
+
+#: extras/models/reports.py:46
+msgid "report module"
+msgstr ""
+
+#: extras/models/reports.py:47
+msgid "report modules"
+msgstr ""
+
+#: extras/models/scripts.py:46
+msgid "script module"
+msgstr ""
+
+#: extras/models/scripts.py:47
+msgid "script modules"
+msgstr ""
+
+#: extras/models/search.py:22
+msgid "timestamp"
+msgstr ""
+
+#: extras/models/search.py:37
+msgid "field"
+msgstr ""
+
+#: extras/models/search.py:45
+msgid "value"
+msgstr ""
+
+#: extras/models/search.py:54
+msgid "cached value"
+msgstr ""
+
+#: extras/models/search.py:55
+msgid "cached values"
+msgstr ""
+
+#: extras/models/staging.py:44
+msgid "branch"
+msgstr ""
+
+#: extras/models/staging.py:45
+msgid "branches"
+msgstr ""
+
+#: extras/models/staging.py:94
+msgid "staged change"
+msgstr ""
+
+#: extras/models/staging.py:95
+msgid "staged changes"
+msgstr ""
+
+#: extras/models/tags.py:44
+msgid "The object type(s) to which this this tag can be applied."
+msgstr ""
+
+#: extras/models/tags.py:53
+msgid "tag"
+msgstr ""
+
+#: extras/models/tags.py:54
+msgid "tags"
+msgstr ""
+
+#: extras/models/tags.py:80
+msgid "tagged item"
+msgstr ""
+
+#: extras/models/tags.py:81
+msgid "tagged items"
+msgstr ""
+
+#: extras/tables/tables.py:48 users/forms/filtersets.py:47 users/tables.py:39
+msgid "Is Active"
+msgstr ""
+
+#: extras/tables/tables.py:69 extras/tables/tables.py:141
+#: extras/tables/tables.py:165 extras/tables/tables.py:230
+#: extras/tables/tables.py:277
+msgid "Content Types"
+msgstr ""
+
+#: extras/tables/tables.py:75 templates/extras/customfield.html:82
+msgid "UI Visibility"
+msgstr ""
+
+#: extras/tables/tables.py:82 templates/extras/customfield.html:48
+msgid "Choice Set"
+msgstr ""
+
+#: extras/tables/tables.py:90
+msgid "Is Cloneable"
+msgstr ""
+
+#: extras/tables/tables.py:120
+msgid "Count"
+msgstr ""
+
+#: extras/tables/tables.py:123
+msgid "Order Alphabetically"
+msgstr ""
+
+#: extras/tables/tables.py:147 templates/extras/customlink.html:34
+msgid "New Window"
+msgstr ""
+
+#: extras/tables/tables.py:168
+msgid "As Attachment"
+msgstr ""
+
+#: extras/tables/tables.py:175 extras/tables/tables.py:367
+#: extras/tables/tables.py:402 templates/core/datafile.html:32
+#: templates/dcim/device/render_config.html:23
+#: templates/extras/configcontext.html:40
+#: templates/extras/configtemplate.html:32
+#: templates/extras/exporttemplate.html:51
+#: templates/generic/bulk_import.html:30
+#: templates/virtualization/virtualmachine/render_config.html:23
+msgid "Data File"
+msgstr ""
+
+#: extras/tables/tables.py:180 extras/tables/tables.py:379
+#: extras/tables/tables.py:407
+msgid "Synced"
+msgstr ""
+
+#: extras/tables/tables.py:200
+msgid "Content Type"
+msgstr ""
+
+#: extras/tables/tables.py:207
+msgid "Image"
+msgstr ""
+
+#: extras/tables/tables.py:212
+msgid "Size (Bytes)"
+msgstr ""
+
+#: extras/tables/tables.py:255 extras/tables/tables.py:326
+#: templates/extras/customfield.html:92
+#: templates/users/objectpermission.html:68 users/tables.py:83
+msgid "Object Types"
+msgstr ""
+
+#: extras/tables/tables.py:292
+msgid "Job Start"
+msgstr ""
+
+#: extras/tables/tables.py:295
+msgid "Job End"
+msgstr ""
+
+#: extras/tables/tables.py:298
+msgid "SSL Validation"
+msgstr ""
+
+#: extras/tables/tables.py:436 templates/account/profile.html:20
+#: templates/users/user.html:22
+msgid "Full Name"
+msgstr ""
+
+#: extras/tables/tables.py:453 templates/extras/objectchange.html:72
+msgid "Request ID"
+msgstr ""
+
+#: extras/tables/tables.py:490
+msgid "Comments (Short)"
+msgstr ""
+
+#: extras/views.py:836
+msgid "Your dashboard has been reset."
+msgstr ""
+
+#: ipam/api/field_serializers.py:17
+msgid "Enter a valid IPv4 or IPv6 address with optional mask."
+msgstr ""
+
+#: ipam/api/field_serializers.py:24
+#, python-brace-format
+msgid "Invalid IP address format: {data}"
+msgstr ""
+
+#: 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
+#, python-brace-format
+msgid "Invalid IP prefix format: {data}"
+msgstr ""
+
+#: ipam/choices.py:30
+msgid "Container"
+msgstr ""
+
+#: ipam/choices.py:72
+msgid "DHCP"
+msgstr ""
+
+#: ipam/choices.py:73
+msgid "SLAAC"
+msgstr ""
+
+#: ipam/choices.py:89
+msgid "Loopback"
+msgstr ""
+
+#: ipam/choices.py:90 tenancy/choices.py:18
+msgid "Secondary"
+msgstr ""
+
+#: ipam/choices.py:91
+msgid "Anycast"
+msgstr ""
+
+#: ipam/choices.py:115
+msgid "Standard"
+msgstr ""
+
+#: ipam/choices.py:120
+msgid "CheckPoint"
+msgstr ""
+
+#: ipam/choices.py:123
+msgid "Cisco"
+msgstr ""
+
+#: ipam/choices.py:137
+msgid "Plaintext"
+msgstr ""
+
+#: ipam/filtersets.py:47 ipam/filtersets.py:1068
+msgid "Import target"
+msgstr ""
+
+#: ipam/filtersets.py:53 ipam/filtersets.py:1074
+msgid "Import target (name)"
+msgstr ""
+
+#: ipam/filtersets.py:58 ipam/filtersets.py:1079
+msgid "Export target"
+msgstr ""
+
+#: ipam/filtersets.py:64 ipam/filtersets.py:1085
+msgid "Export target (name)"
+msgstr ""
+
+#: ipam/filtersets.py:85
+msgid "Importing VRF"
+msgstr ""
+
+#: ipam/filtersets.py:91
+msgid "Import VRF (RD)"
+msgstr ""
+
+#: ipam/filtersets.py:96
+msgid "Exporting VRF"
+msgstr ""
+
+#: ipam/filtersets.py:102
+msgid "Export VRF (RD)"
+msgstr ""
+
+#: ipam/filtersets.py:132 ipam/filtersets.py:247 ipam/forms/model_forms.py:231
+#: ipam/tables/ip.py:211 templates/ipam/prefix.html:11
+msgid "Prefix"
+msgstr ""
+
+#: ipam/filtersets.py:136 ipam/filtersets.py:175 ipam/filtersets.py:198
+msgid "RIR (ID)"
+msgstr ""
+
+#: ipam/filtersets.py:142 ipam/filtersets.py:181 ipam/filtersets.py:204
+msgid "RIR (slug)"
+msgstr ""
+
+#: ipam/filtersets.py:251
+msgid "Within prefix"
+msgstr ""
+
+#: ipam/filtersets.py:255
+msgid "Within and including prefix"
+msgstr ""
+
+#: ipam/filtersets.py:259
+msgid "Prefixes which contain this prefix or IP"
+msgstr ""
+
+#: ipam/filtersets.py:338 ipam/filtersets.py:1191
+msgid "VLAN (ID)"
+msgstr ""
+
+#: ipam/filtersets.py:342 ipam/filtersets.py:1186
+msgid "VLAN number (1-4094)"
+msgstr ""
+
+#: ipam/filtersets.py:436 ipam/filtersets.py:440 ipam/filtersets.py:532
+#: ipam/forms/model_forms.py:446 templates/tenancy/contact.html:54
+#: tenancy/forms/bulk_edit.py:112
+msgid "Address"
+msgstr ""
+
+#: ipam/filtersets.py:444
+msgid "Ranges which contain this prefix or IP"
+msgstr ""
+
+#: ipam/filtersets.py:472 ipam/filtersets.py:528
+msgid "Parent prefix"
+msgstr ""
+
+#: ipam/filtersets.py:536 ipam/forms/bulk_edit.py:328
+#: ipam/forms/filtersets.py:195 ipam/forms/filtersets.py:320
+msgid "Mask length"
+msgstr ""
+
+#: ipam/filtersets.py:572 ipam/filtersets.py:807 ipam/filtersets.py:1026
+#: ipam/filtersets.py:1149
+msgid "Virtual machine (name)"
+msgstr ""
+
+#: ipam/filtersets.py:577 ipam/filtersets.py:812 ipam/filtersets.py:1020
+#: ipam/filtersets.py:1154 virtualization/filtersets.py:273
+msgid "Virtual machine (ID)"
+msgstr ""
+
+#: ipam/filtersets.py:583 ipam/filtersets.py:1160
+msgid "Interface (name)"
+msgstr ""
+
+#: ipam/filtersets.py:588 ipam/filtersets.py:1165
+msgid "Interface (ID)"
+msgstr ""
+
+#: ipam/filtersets.py:594 ipam/filtersets.py:1171
+msgid "VM interface (name)"
+msgstr ""
+
+#: ipam/filtersets.py:599
+msgid "VM interface (ID)"
+msgstr ""
+
+#: ipam/filtersets.py:604
+msgid "FHRP group (ID)"
+msgstr ""
+
+#: ipam/filtersets.py:608
+msgid "Is assigned to an interface"
+msgstr ""
+
+#: ipam/filtersets.py:612
+msgid "Is assigned"
+msgstr ""
+
+#: ipam/filtersets.py:1031
+msgid "IP address (ID)"
+msgstr ""
+
+#: ipam/filtersets.py:1037 ipam/models/ip.py:786
+msgid "IP address"
+msgstr ""
+
+#: ipam/filtersets.py:1112
+msgid "L2VPN (slug)"
+msgstr ""
+
+#: ipam/filtersets.py:1176
+msgid "VM Interface (ID)"
+msgstr ""
+
+#: ipam/filtersets.py:1182
+msgid "VLAN (name)"
+msgstr ""
+
+#: ipam/forms/bulk_create.py:14
+msgid "Address pattern"
+msgstr ""
+
+#: ipam/forms/bulk_edit.py:87
+msgid "Is private"
+msgstr ""
+
+#: ipam/forms/bulk_edit.py:108 ipam/forms/bulk_edit.py:137
+#: ipam/forms/bulk_edit.py:162 ipam/forms/bulk_import.py:91
+#: ipam/forms/bulk_import.py:111 ipam/forms/bulk_import.py:131
+#: ipam/forms/filtersets.py:113 ipam/forms/filtersets.py:128
+#: ipam/forms/filtersets.py:151 ipam/forms/model_forms.py:95
+#: ipam/forms/model_forms.py:110 ipam/forms/model_forms.py:132
+#: ipam/forms/model_forms.py:150 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/tables/asn.py:45 templates/ipam/aggregate.html:19
+#: templates/ipam/asn.html:28 templates/ipam/asnrange.html:20
+#: templates/ipam/rir.html:20
+msgid "RIR"
+msgstr ""
+
+#: ipam/forms/bulk_edit.py:170
+msgid "Date added"
+msgstr ""
+
+#: ipam/forms/bulk_edit.py:231
+msgid "Prefix length"
+msgstr ""
+
+#: ipam/forms/bulk_edit.py:254 ipam/forms/filtersets.py:240
+#: templates/ipam/prefix.html:86
+msgid "Is a pool"
+msgstr ""
+
+#: ipam/forms/bulk_edit.py:259 ipam/forms/bulk_edit.py:303
+#: ipam/models/ip.py:271 ipam/models/ip.py:538
+#, python-format
+msgid "Treat as 100% utilized"
+msgstr ""
+
+#: ipam/forms/bulk_edit.py:351 ipam/models/ip.py:771
+msgid "DNS name"
+msgstr ""
+
+#: ipam/forms/bulk_edit.py:372 ipam/forms/bulk_edit.py:571
+#: ipam/forms/bulk_import.py:396 ipam/forms/bulk_import.py:480
+#: ipam/forms/bulk_import.py:506 ipam/forms/filtersets.py:379
+#: ipam/forms/filtersets.py:513 templates/ipam/fhrpgroup.html:23
+#: templates/ipam/inc/panels/fhrp_groups.html:11 templates/ipam/service.html:35
+#: templates/ipam/servicetemplate.html:20
+msgid "Protocol"
+msgstr ""
+
+#: ipam/forms/bulk_edit.py:379 ipam/forms/filtersets.py:386
+#: ipam/tables/fhrp.py:22 templates/ipam/fhrpgroup.html:27
+msgid "Group ID"
+msgstr ""
+
+#: ipam/forms/bulk_edit.py:384 ipam/forms/filtersets.py:391
+#: wireless/forms/bulk_edit.py:67 wireless/forms/bulk_edit.py:114
+#: 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:53 wireless/forms/filtersets.py:87
+msgid "Authentication type"
+msgstr ""
+
+#: ipam/forms/bulk_edit.py:389 ipam/forms/filtersets.py:395
+msgid "Authentication key"
+msgstr ""
+
+#: ipam/forms/bulk_edit.py:406 ipam/forms/filtersets.py:372
+#: ipam/forms/model_forms.py:457 netbox/navigation/menu.py:356
+#: templates/ipam/fhrpgroup.html:51
+#: templates/wireless/inc/authentication_attrs.html:5
+#: wireless/forms/bulk_edit.py:90 wireless/forms/bulk_edit.py:137
+#: wireless/forms/filtersets.py:35 wireless/forms/filtersets.py:75
+#: wireless/forms/model_forms.py:56 wireless/forms/model_forms.py:161
+msgid "Authentication"
+msgstr ""
+
+#: ipam/forms/bulk_edit.py:416
+msgid "Minimum child VLAN VID"
+msgstr ""
+
+#: ipam/forms/bulk_edit.py:422
+msgid "Maximum child VLAN VID"
+msgstr ""
+
+#: ipam/forms/bulk_edit.py:430 ipam/forms/model_forms.py:529
+msgid "Scope type"
+msgstr ""
+
+#: ipam/forms/bulk_edit.py:491 ipam/forms/model_forms.py:602
+#: ipam/tables/vlans.py:71 templates/ipam/vlangroup.html:39
+msgid "Scope"
+msgstr ""
+
+#: ipam/forms/bulk_edit.py:562
+msgid "Site & Group"
+msgstr ""
+
+#: ipam/forms/bulk_edit.py:576 ipam/forms/model_forms.py:665
+#: ipam/forms/model_forms.py:699 ipam/tables/services.py:19
+#: ipam/tables/services.py:49 templates/ipam/service.html:39
+#: templates/ipam/servicetemplate.html:24
+msgid "Ports"
+msgstr ""
+
+#: ipam/forms/bulk_import.py:50
+msgid "Import route targets"
+msgstr ""
+
+#: ipam/forms/bulk_import.py:56
+msgid "Export route targets"
+msgstr ""
+
+#: ipam/forms/bulk_import.py:94 ipam/forms/bulk_import.py:114
+#: ipam/forms/bulk_import.py:134
+msgid "Assigned RIR"
+msgstr ""
+
+#: ipam/forms/bulk_import.py:184
+msgid "VLAN's group (if any)"
+msgstr ""
+
+#: ipam/forms/bulk_import.py:187 ipam/forms/bulk_import.py:564
+#: ipam/forms/filtersets.py:603 ipam/forms/model_forms.py:221
+#: ipam/forms/model_forms.py:804 ipam/models/vlans.py:213 ipam/tables/ip.py:254
+#: templates/ipam/l2vpntermination_edit.html:17 templates/ipam/prefix.html:61
+#: templates/ipam/vlan.html:12 templates/ipam/vlan/base.html:6
+#: templates/ipam/vlan_edit.html:10 templates/wireless/wirelesslan.html:31
+#: wireless/forms/bulk_edit.py:54 wireless/forms/bulk_import.py:48
+#: wireless/forms/model_forms.py:49 wireless/models.py:101
+msgid "VLAN"
+msgstr ""
+
+#: ipam/forms/bulk_import.py:310
+msgid "Parent device of assigned interface (if any)"
+msgstr ""
+
+#: ipam/forms/bulk_import.py:313 ipam/forms/bulk_import.py:499
+#: ipam/forms/bulk_import.py:550 ipam/forms/model_forms.py:693
+#: virtualization/filtersets.py:279 virtualization/forms/bulk_edit.py:197
+#: virtualization/forms/bulk_import.py:145
+#: virtualization/forms/filtersets.py:200
+#: virtualization/forms/model_forms.py:280
+msgid "Virtual machine"
+msgstr ""
+
+#: ipam/forms/bulk_import.py:317
+msgid "Parent VM of assigned interface (if any)"
+msgstr ""
+
+#: ipam/forms/bulk_import.py:324
+msgid "Assigned interface"
+msgstr ""
+
+#: ipam/forms/bulk_import.py:327
+msgid "Is primary"
+msgstr ""
+
+#: ipam/forms/bulk_import.py:328
+msgid "Make this the primary IP for the assigned device"
+msgstr ""
+
+#: ipam/forms/bulk_import.py:367
+msgid "No device or virtual machine specified; cannot set as primary IP"
+msgstr ""
+
+#: ipam/forms/bulk_import.py:371
+msgid "No interface specified; cannot set as primary IP"
+msgstr ""
+
+#: ipam/forms/bulk_import.py:400
+msgid "Auth type"
+msgstr ""
+
+#: ipam/forms/bulk_import.py:415
+msgid "Scope type (app & model)"
+msgstr ""
+
+#: ipam/forms/bulk_import.py:421
+#, python-brace-format
+msgid "Minimum child VLAN VID (default: {minimum})"
+msgstr ""
+
+#: ipam/forms/bulk_import.py:427
+#, python-brace-format
+msgid "Maximum child VLAN VID (default: {maximum})"
+msgstr ""
+
+#: ipam/forms/bulk_import.py:451
+msgid "Assigned VLAN group"
+msgstr ""
+
+#: ipam/forms/bulk_import.py:482 ipam/forms/bulk_import.py:508
+msgid "IP protocol"
+msgstr ""
+
+#: ipam/forms/bulk_import.py:496
+msgid "Required if not assigned to a VM"
+msgstr ""
+
+#: ipam/forms/bulk_import.py:503
+msgid "Required if not assigned to a device"
+msgstr ""
+
+#: ipam/forms/bulk_import.py:526
+msgid "L2VPN type"
+msgstr ""
+
+#: ipam/forms/bulk_import.py:547
+msgid "Parent device (for interface)"
+msgstr ""
+
+#: ipam/forms/bulk_import.py:554
+msgid "Parent virtual machine (for interface)"
+msgstr ""
+
+#: ipam/forms/bulk_import.py:561
+msgid "Assigned interface (device or VM)"
+msgstr ""
+
+#: ipam/forms/bulk_import.py:594
+msgid "Cannot import device and VM interface terminations simultaneously."
+msgstr ""
+
+#: ipam/forms/bulk_import.py:596
+msgid "Each termination must specify either an interface or a VLAN."
+msgstr ""
+
+#: ipam/forms/bulk_import.py:598
+msgid "Cannot assign both an interface and a VLAN."
+msgstr ""
+
+#: ipam/forms/filtersets.py:50 ipam/forms/model_forms.py:62
+#: ipam/forms/model_forms.py:780 netbox/navigation/menu.py:177
+msgid "Route Targets"
+msgstr ""
+
+#: ipam/forms/filtersets.py:56 ipam/forms/filtersets.py:544
+#: ipam/forms/model_forms.py:49 ipam/forms/model_forms.py:767
+msgid "Import targets"
+msgstr ""
+
+#: ipam/forms/filtersets.py:61 ipam/forms/filtersets.py:549
+#: ipam/forms/model_forms.py:54 ipam/forms/model_forms.py:772
+msgid "Export targets"
+msgstr ""
+
+#: ipam/forms/filtersets.py:76
+msgid "Imported by VRF"
+msgstr ""
+
+#: ipam/forms/filtersets.py:81
+msgid "Exported by VRF"
+msgstr ""
+
+#: ipam/forms/filtersets.py:90 ipam/tables/ip.py:89 templates/ipam/rir.html:33
+msgid "Private"
+msgstr ""
+
+#: ipam/forms/filtersets.py:108 ipam/forms/filtersets.py:190
+#: ipam/forms/filtersets.py:265 ipam/forms/filtersets.py:315
+msgid "Address family"
+msgstr ""
+
+#: ipam/forms/filtersets.py:122 templates/ipam/asnrange.html:26
+msgid "Range"
+msgstr ""
+
+#: ipam/forms/filtersets.py:131
+msgid "Start"
+msgstr ""
+
+#: ipam/forms/filtersets.py:135
+msgid "End"
+msgstr ""
+
+#: ipam/forms/filtersets.py:185
+msgid "Search within"
+msgstr ""
+
+#: ipam/forms/filtersets.py:206 ipam/forms/filtersets.py:331
+msgid "Present in VRF"
+msgstr ""
+
+#: ipam/forms/filtersets.py:247 ipam/forms/filtersets.py:286
+#, python-format
+msgid "Marked as 100% utilized"
+msgstr ""
+
+#: ipam/forms/filtersets.py:301
+msgid "Device/VM"
+msgstr ""
+
+#: ipam/forms/filtersets.py:336
+msgid "Assigned Device"
+msgstr ""
+
+#: ipam/forms/filtersets.py:341
+msgid "Assigned VM"
+msgstr ""
+
+#: ipam/forms/filtersets.py:355
+msgid "Assigned to an interface"
+msgstr ""
+
+#: ipam/forms/filtersets.py:362 templates/ipam/ipaddress.html:54
+msgid "DNS Name"
+msgstr ""
+
+#: ipam/forms/filtersets.py:404 ipam/forms/filtersets.py:496
+#: ipam/models/vlans.py:154 templates/ipam/vlan.html:34
+msgid "VLAN ID"
+msgstr ""
+
+#: ipam/forms/filtersets.py:436
+msgid "Minimum VID"
+msgstr ""
+
+#: ipam/forms/filtersets.py:442
+msgid "Maximum VID"
+msgstr ""
+
+#: ipam/forms/filtersets.py:518
+msgid "Port"
+msgstr ""
+
+#: ipam/forms/filtersets.py:558 ipam/tables/ip.py:424
+#: templates/ipam/l2vpntermination.html:19
+msgid "Assigned Object"
+msgstr ""
+
+#: ipam/forms/filtersets.py:570
+msgid "Assigned Object Type"
+msgstr ""
+
+#: ipam/forms/filtersets.py:612 ipam/tables/vlans.py:191
+#: templates/ipam/ipaddress_edit.html:47
+#: templates/ipam/l2vpntermination_edit.html:27
+#: templates/ipam/service_create.html:22 templates/ipam/service_edit.html:21
+#: templates/virtualization/virtualmachine.html:13
+#: templates/virtualization/vminterface.html:24
+#: virtualization/forms/filtersets.py:186
+#: virtualization/forms/model_forms.py:221
+#: virtualization/tables/virtualmachines.py:110
+msgid "Virtual Machine"
+msgstr ""
+
+#: ipam/forms/model_forms.py:115 ipam/tables/ip.py:116
+#: templates/ipam/aggregate.html:11 templates/ipam/prefix.html:38
+msgid "Aggregate"
+msgstr ""
+
+#: ipam/forms/model_forms.py:136 templates/ipam/asnrange.html:12
+msgid "ASN Range"
+msgstr ""
+
+#: ipam/forms/model_forms.py:232
+msgid "Site/VLAN Assignment"
+msgstr ""
+
+#: ipam/forms/model_forms.py:258 templates/ipam/iprange.html:11
+msgid "IP Range"
+msgstr ""
+
+#: ipam/forms/model_forms.py:287 ipam/forms/model_forms.py:456
+#: templates/ipam/fhrpgroup.html:19 templates/ipam/ipaddress_edit.html:52
+msgid "FHRP Group"
+msgstr ""
+
+#: ipam/forms/model_forms.py:302
+msgid "Make this the primary IP for the device/VM"
+msgstr ""
+
+#: ipam/forms/model_forms.py:353
+msgid "An IP address can only be assigned to a single object."
+msgstr ""
+
+#: ipam/forms/model_forms.py:359 ipam/models/ip.py:877
+msgid ""
+"Cannot reassign IP address while it is designated as the primary IP for the "
+"parent object"
+msgstr ""
+
+#: ipam/forms/model_forms.py:369
+msgid ""
+"Only IP addresses assigned to an interface can be designated as primary IPs."
+msgstr ""
+
+#: ipam/forms/model_forms.py:375
+#, python-brace-format
+msgid "{ip} is a network ID, which may not be assigned to an interface."
+msgstr ""
+
+#: ipam/forms/model_forms.py:381
+#, python-brace-format
+msgid "{ip} is a broadcast address, which may not be assigned to an interface."
+msgstr ""
+
+#: ipam/forms/model_forms.py:458
+msgid "Virtual IP Address"
+msgstr ""
+
+#: ipam/forms/model_forms.py:600 ipam/forms/model_forms.py:639
+#: 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:601
+msgid "Child VLANs"
+msgstr ""
+
+#: ipam/forms/model_forms.py:670 ipam/forms/model_forms.py:704
+msgid ""
+"Comma-separated list of one or more port numbers. A range may be specified "
+"using a hyphen."
+msgstr ""
+
+#: ipam/forms/model_forms.py:675 templates/ipam/servicetemplate.html:12
+msgid "Service Template"
+msgstr ""
+
+#: ipam/forms/model_forms.py:726
+msgid "Service template"
+msgstr ""
+
+#: ipam/forms/model_forms.py:846
+msgid "A termination must specify an interface or VLAN."
+msgstr ""
+
+#: ipam/forms/model_forms.py:848
+msgid ""
+"A termination can only have one terminating object (an interface or VLAN)."
+msgstr ""
+
+#: ipam/models/asns.py:34
+msgid "start"
+msgstr ""
+
+#: ipam/models/asns.py:51
+msgid "ASN range"
+msgstr ""
+
+#: ipam/models/asns.py:52
+msgid "ASN ranges"
+msgstr ""
+
+#: 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
+msgid "Regional Internet Registry responsible for this AS number space"
+msgstr ""
+
+#: ipam/models/asns.py:109
+msgid "16- or 32-bit autonomous system number"
+msgstr ""
+
+#: ipam/models/fhrp.py:23
+msgid "group ID"
+msgstr ""
+
+#: ipam/models/fhrp.py:31 ipam/models/services.py:22
+msgid "protocol"
+msgstr ""
+
+#: ipam/models/fhrp.py:39 wireless/models.py:27
+msgid "authentication type"
+msgstr ""
+
+#: ipam/models/fhrp.py:44
+msgid "authentication key"
+msgstr ""
+
+#: ipam/models/fhrp.py:57
+msgid "FHRP group"
+msgstr ""
+
+#: ipam/models/fhrp.py:58
+msgid "FHRP groups"
+msgstr ""
+
+#: ipam/models/fhrp.py:94 tenancy/models/contacts.py:133
+msgid "priority"
+msgstr ""
+
+#: ipam/models/fhrp.py:111
+msgid "FHRP group assignment"
+msgstr ""
+
+#: ipam/models/fhrp.py:112
+msgid "FHRP group assignments"
+msgstr ""
+
+#: ipam/models/ip.py:64
+msgid "private"
+msgstr ""
+
+#: ipam/models/ip.py:65
+msgid "IP space managed by this RIR is considered private"
+msgstr ""
+
+#: ipam/models/ip.py:71 netbox/navigation/menu.py:170
+msgid "RIRs"
+msgstr ""
+
+#: ipam/models/ip.py:83
+msgid "IPv4 or IPv6 network"
+msgstr ""
+
+#: ipam/models/ip.py:90
+msgid "Regional Internet Registry responsible for this IP space"
+msgstr ""
+
+#: ipam/models/ip.py:100
+msgid "date added"
+msgstr ""
+
+#: ipam/models/ip.py:114
+msgid "aggregate"
+msgstr ""
+
+#: ipam/models/ip.py:115
+msgid "aggregates"
+msgstr ""
+
+#: ipam/models/ip.py:131
+msgid "Cannot create aggregate with /0 mask."
+msgstr ""
+
+#: ipam/models/ip.py:143
+#, python-brace-format
+msgid ""
+"Aggregates cannot overlap. {prefix} is already covered by an existing "
+"aggregate ({aggregate})."
+msgstr ""
+
+#: ipam/models/ip.py:157
+#, 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
+msgid "role"
+msgstr ""
+
+#: ipam/models/ip.py:200
+msgid "roles"
+msgstr ""
+
+#: ipam/models/ip.py:216 ipam/models/ip.py:292
+msgid "prefix"
+msgstr ""
+
+#: ipam/models/ip.py:217
+msgid "IPv4 or IPv6 network with mask"
+msgstr ""
+
+#: ipam/models/ip.py:253
+msgid "Operational status of this prefix"
+msgstr ""
+
+#: ipam/models/ip.py:261
+msgid "The primary function of this prefix"
+msgstr ""
+
+#: ipam/models/ip.py:264
+msgid "is a pool"
+msgstr ""
+
+#: ipam/models/ip.py:266
+msgid "All IP addresses within this prefix are considered usable"
+msgstr ""
+
+#: ipam/models/ip.py:269 ipam/models/ip.py:536
+msgid "mark utilized"
+msgstr ""
+
+#: ipam/models/ip.py:293
+msgid "prefixes"
+msgstr ""
+
+#: ipam/models/ip.py:316
+msgid "Cannot create prefix with /0 mask."
+msgstr ""
+
+#: ipam/models/ip.py:323 ipam/models/ip.py:853
+#, python-brace-format
+msgid "VRF {vrf}"
+msgstr ""
+
+#: ipam/models/ip.py:323 ipam/models/ip.py:853
+msgid "global table"
+msgstr ""
+
+#: ipam/models/ip.py:325
+#, python-brace-format
+msgid "Duplicate prefix found in {table}: {prefix}"
+msgstr ""
+
+#: ipam/models/ip.py:494
+msgid "start address"
+msgstr ""
+
+#: ipam/models/ip.py:495 ipam/models/ip.py:499 ipam/models/ip.py:711
+msgid "IPv4 or IPv6 address (with mask)"
+msgstr ""
+
+#: ipam/models/ip.py:498
+msgid "end address"
+msgstr ""
+
+#: ipam/models/ip.py:525
+msgid "Operational status of this range"
+msgstr ""
+
+#: ipam/models/ip.py:533
+msgid "The primary function of this range"
+msgstr ""
+
+#: ipam/models/ip.py:547
+msgid "IP range"
+msgstr ""
+
+#: ipam/models/ip.py:548
+msgid "IP ranges"
+msgstr ""
+
+#: ipam/models/ip.py:564
+msgid "Starting and ending IP address versions must match"
+msgstr ""
+
+#: ipam/models/ip.py:570
+msgid "Starting and ending IP address masks must match"
+msgstr ""
+
+#: ipam/models/ip.py:577
+#, python-brace-format
+msgid ""
+"Ending address must be lower than the starting address ({start_address})"
+msgstr ""
+
+#: ipam/models/ip.py:589
+#, python-brace-format
+msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}"
+msgstr ""
+
+#: ipam/models/ip.py:598
+#, python-brace-format
+msgid "Defined range exceeds maximum supported size ({max_size})"
+msgstr ""
+
+#: ipam/models/ip.py:710 tenancy/models/contacts.py:81
+msgid "address"
+msgstr ""
+
+#: ipam/models/ip.py:733
+msgid "The operational status of this IP"
+msgstr ""
+
+#: ipam/models/ip.py:740
+msgid "The functional role of this IP"
+msgstr ""
+
+#: ipam/models/ip.py:764 templates/ipam/ipaddress.html:75
+msgid "NAT (inside)"
+msgstr ""
+
+#: ipam/models/ip.py:765
+msgid "The IP for which this address is the \"outside\" IP"
+msgstr ""
+
+#: ipam/models/ip.py:772
+msgid "Hostname or FQDN (not case-sensitive)"
+msgstr ""
+
+#: ipam/models/ip.py:787 ipam/models/services.py:94
+msgid "IP addresses"
+msgstr ""
+
+#: ipam/models/ip.py:843
+msgid "Cannot create IP address with /0 mask."
+msgstr ""
+
+#: ipam/models/ip.py:855
+#, python-brace-format
+msgid "Duplicate IP address found in {table}: {ipaddress}"
+msgstr ""
+
+#: ipam/models/ip.py:884
+msgid "Only IPv6 addresses can be assigned SLAAC status"
+msgstr ""
+
+#: ipam/models/l2vpn.py:64 netbox/navigation/menu.py:205
+msgid "L2VPNs"
+msgstr ""
+
+#: ipam/models/l2vpn.py:113
+msgid "L2VPN termination"
+msgstr ""
+
+#: ipam/models/l2vpn.py:114
+msgid "L2VPN terminations"
+msgstr ""
+
+#: ipam/models/l2vpn.py:132
+#, python-brace-format
+msgid "L2VPN Termination already assigned ({assigned_object})"
+msgstr ""
+
+#: ipam/models/l2vpn.py:144
+#, python-brace-format
+msgid ""
+"{l2vpn_type} L2VPNs cannot have more than two terminations; found "
+"{terminations_count} already defined."
+msgstr ""
+
+#: ipam/models/services.py:33
+msgid "port numbers"
+msgstr ""
+
+#: ipam/models/services.py:59
+msgid "service template"
+msgstr ""
+
+#: ipam/models/services.py:60
+msgid "service templates"
+msgstr ""
+
+#: ipam/models/services.py:95
+msgid "The specific IP addresses (if any) to which this service is bound"
+msgstr ""
+
+#: ipam/models/services.py:102
+msgid "service"
+msgstr ""
+
+#: ipam/models/services.py:103
+msgid "services"
+msgstr ""
+
+#: ipam/models/services.py:117
+msgid ""
+"A service cannot be associated with both a device and a virtual machine."
+msgstr ""
+
+#: ipam/models/services.py:119
+msgid "A service must be associated with either a device or a virtual machine."
+msgstr ""
+
+#: ipam/models/vlans.py:50
+msgid "minimum VLAN ID"
+msgstr ""
+
+#: ipam/models/vlans.py:56
+msgid "Lowest permissible ID of a child VLAN"
+msgstr ""
+
+#: ipam/models/vlans.py:59
+msgid "maximum VLAN ID"
+msgstr ""
+
+#: ipam/models/vlans.py:65
+msgid "Highest permissible ID of a child VLAN"
+msgstr ""
+
+#: ipam/models/vlans.py:83
+msgid "VLAN groups"
+msgstr ""
+
+#: ipam/models/vlans.py:93
+msgid "Cannot set scope_type without scope_id."
+msgstr ""
+
+#: ipam/models/vlans.py:95
+msgid "Cannot set scope_id without scope_type."
+msgstr ""
+
+#: ipam/models/vlans.py:100
+msgid "Maximum child VID must be greater than or equal to minimum child VID"
+msgstr ""
+
+#: ipam/models/vlans.py:143
+msgid "The specific site to which this VLAN is assigned (if any)"
+msgstr ""
+
+#: ipam/models/vlans.py:151
+msgid "VLAN group (optional)"
+msgstr ""
+
+#: ipam/models/vlans.py:159
+msgid "Numeric VLAN ID (1-4094)"
+msgstr ""
+
+#: ipam/models/vlans.py:177
+msgid "Operational status of this VLAN"
+msgstr ""
+
+#: ipam/models/vlans.py:185
+msgid "The primary function of this VLAN"
+msgstr ""
+
+#: ipam/models/vlans.py:214 ipam/tables/ip.py:175 ipam/tables/vlans.py:78
+#: ipam/views.py:942 netbox/navigation/menu.py:181
+#: netbox/navigation/menu.py:183
+msgid "VLANs"
+msgstr ""
+
+#: ipam/models/vlans.py:229
+#, python-brace-format
+msgid ""
+"VLAN is assigned to group {group} (scope: {scope}); cannot also assign to "
+"site {site}."
+msgstr ""
+
+#: ipam/models/vlans.py:237
+#, python-brace-format
+msgid "VID must be between {minimum} and {maximum} for VLANs in group {group}"
+msgstr ""
+
+#: ipam/models/vrfs.py:30
+msgid "route distinguisher"
+msgstr ""
+
+#: ipam/models/vrfs.py:31
+msgid "Unique route distinguisher (as defined in RFC 4364)"
+msgstr ""
+
+#: ipam/models/vrfs.py:42
+msgid "enforce unique space"
+msgstr ""
+
+#: ipam/models/vrfs.py:43
+msgid "Prevent duplicate prefixes/IP addresses within this VRF"
+msgstr ""
+
+#: ipam/models/vrfs.py:63 netbox/navigation/menu.py:174
+#: netbox/navigation/menu.py:176
+msgid "VRFs"
+msgstr ""
+
+#: ipam/models/vrfs.py:82
+msgid "Route target value (formatted in accordance with RFC 4360)"
+msgstr ""
+
+#: ipam/models/vrfs.py:94
+msgid "route target"
+msgstr ""
+
+#: ipam/models/vrfs.py:95
+msgid "route targets"
+msgstr ""
+
+#: ipam/tables/asn.py:51
+msgid "ASDOT"
+msgstr ""
+
+#: ipam/tables/asn.py:56
+msgid "Site Count"
+msgstr ""
+
+#: ipam/tables/asn.py:61
+msgid "Provider Count"
+msgstr ""
+
+#: ipam/tables/ip.py:94 netbox/navigation/menu.py:167
+#: netbox/navigation/menu.py:169
+msgid "Aggregates"
+msgstr ""
+
+#: 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:351 netbox/navigation/menu.py:153
+#: netbox/navigation/menu.py:155 templates/ipam/vlan.html:87
+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:280
+#: templates/ipam/aggregate.html:25 templates/ipam/iprange.html:32
+#: templates/ipam/prefix.html:100
+msgid "Utilization"
+msgstr ""
+
+#: ipam/tables/ip.py:170 netbox/navigation/menu.py:149
+msgid "IP Ranges"
+msgstr ""
+
+#: ipam/tables/ip.py:220
+msgid "Prefix (Flat)"
+msgstr ""
+
+#: ipam/tables/ip.py:224 templates/dcim/rack_edit.html:52
+msgid "Depth"
+msgstr ""
+
+#: ipam/tables/ip.py:233
+msgid "Children"
+msgstr ""
+
+#: ipam/tables/ip.py:261
+msgid "Pool"
+msgstr ""
+
+#: ipam/tables/ip.py:264 ipam/tables/ip.py:317
+msgid "Marked Utilized"
+msgstr ""
+
+#: ipam/tables/ip.py:301
+msgid "Start address"
+msgstr ""
+
+#: ipam/tables/ip.py:379
+msgid "NAT (Inside)"
+msgstr ""
+
+#: ipam/tables/ip.py:384
+msgid "NAT (Outside)"
+msgstr ""
+
+#: ipam/tables/ip.py:389
+msgid "Assigned"
+msgstr ""
+
+#: ipam/tables/l2vpn.py:27 ipam/tables/vrfs.py:36
+msgid "Import Targets"
+msgstr ""
+
+#: ipam/tables/l2vpn.py:32 ipam/tables/vrfs.py:41
+msgid "Export Targets"
+msgstr ""
+
+#: ipam/tables/l2vpn.py:69
+msgid "Object Parent"
+msgstr ""
+
+#: ipam/tables/l2vpn.py:74
+msgid "Object Site"
+msgstr ""
+
+#: 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
+msgid "VID"
+msgstr ""
+
+#: ipam/tables/vrfs.py:30
+msgid "RD"
+msgstr ""
+
+#: ipam/tables/vrfs.py:33
+msgid "Unique"
+msgstr ""
+
+#: ipam/views.py:538
+msgid "Child Prefixes"
+msgstr ""
+
+#: ipam/views.py:573
+msgid "Child Ranges"
+msgstr ""
+
+#: ipam/views.py:870
+msgid "Related IPs"
+msgstr ""
+
+#: ipam/views.py:1093
+msgid "Device Interfaces"
+msgstr ""
+
+#: ipam/views.py:1111
+msgid "VM Interfaces"
+msgstr ""
+
+#: netbox/config/parameters.py:22 templates/extras/configrevision.html:111
+msgid "Login banner"
+msgstr ""
+
+#: netbox/config/parameters.py:24
+msgid "Additional content to display on the login page"
+msgstr ""
+
+#: netbox/config/parameters.py:33 templates/extras/configrevision.html:115
+msgid "Maintenance banner"
+msgstr ""
+
+#: netbox/config/parameters.py:35
+msgid "Additional content to display when in maintenance mode"
+msgstr ""
+
+#: netbox/config/parameters.py:44 templates/extras/configrevision.html:119
+msgid "Top banner"
+msgstr ""
+
+#: netbox/config/parameters.py:46
+msgid "Additional content to display at the top of every page"
+msgstr ""
+
+#: netbox/config/parameters.py:55 templates/extras/configrevision.html:123
+msgid "Bottom banner"
+msgstr ""
+
+#: netbox/config/parameters.py:57
+msgid "Additional content to display at the bottom of every page"
+msgstr ""
+
+#: netbox/config/parameters.py:68
+msgid "Globally unique IP space"
+msgstr ""
+
+#: netbox/config/parameters.py:70
+msgid "Enforce unique IP addressing within the global table"
+msgstr ""
+
+#: netbox/config/parameters.py:75 templates/extras/configrevision.html:87
+msgid "Prefer IPv4"
+msgstr ""
+
+#: netbox/config/parameters.py:77
+msgid "Prefer IPv4 addresses over IPv6"
+msgstr ""
+
+#: netbox/config/parameters.py:84
+msgid "Rack unit height"
+msgstr ""
+
+#: netbox/config/parameters.py:86
+msgid "Default unit height for rendered rack elevations"
+msgstr ""
+
+#: netbox/config/parameters.py:91
+msgid "Rack unit width"
+msgstr ""
+
+#: netbox/config/parameters.py:93
+msgid "Default unit width for rendered rack elevations"
+msgstr ""
+
+#: netbox/config/parameters.py:100
+msgid "Powerfeed voltage"
+msgstr ""
+
+#: netbox/config/parameters.py:102
+msgid "Default voltage for powerfeeds"
+msgstr ""
+
+#: netbox/config/parameters.py:107
+msgid "Powerfeed amperage"
+msgstr ""
+
+#: netbox/config/parameters.py:109
+msgid "Default amperage for powerfeeds"
+msgstr ""
+
+#: netbox/config/parameters.py:114
+msgid "Powerfeed max utilization"
+msgstr ""
+
+#: netbox/config/parameters.py:116
+msgid "Default max utilization for powerfeeds"
+msgstr ""
+
+#: netbox/config/parameters.py:123 templates/extras/configrevision.html:99
+msgid "Allowed URL schemes"
+msgstr ""
+
+#: netbox/config/parameters.py:128
+msgid "Permitted schemes for URLs in user-provided content"
+msgstr ""
+
+#: netbox/config/parameters.py:136
+msgid "Default page size"
+msgstr ""
+
+#: netbox/config/parameters.py:142
+msgid "Maximum page size"
+msgstr ""
+
+#: netbox/config/parameters.py:150 templates/extras/configrevision.html:151
+msgid "Custom validators"
+msgstr ""
+
+#: netbox/config/parameters.py:152
+msgid "Custom validation rules (JSON)"
+msgstr ""
+
+#: netbox/config/parameters.py:164
+msgid "Default preferences"
+msgstr ""
+
+#: netbox/config/parameters.py:166
+msgid "Default preferences for new users"
+msgstr ""
+
+#: netbox/config/parameters.py:173 templates/extras/configrevision.html:175
+msgid "Maintenance mode"
+msgstr ""
+
+#: netbox/config/parameters.py:175
+msgid "Enable maintenance mode"
+msgstr ""
+
+#: netbox/config/parameters.py:180 templates/extras/configrevision.html:179
+msgid "GraphQL enabled"
+msgstr ""
+
+#: netbox/config/parameters.py:182
+msgid "Enable the GraphQL API"
+msgstr ""
+
+#: netbox/config/parameters.py:187 templates/extras/configrevision.html:183
+msgid "Changelog retention"
+msgstr ""
+
+#: netbox/config/parameters.py:189
+msgid "Days to retain changelog history (set to zero for unlimited)"
+msgstr ""
+
+#: netbox/config/parameters.py:194
+msgid "Job result retention"
+msgstr ""
+
+#: netbox/config/parameters.py:196
+msgid "Days to retain job result history (set to zero for unlimited)"
+msgstr ""
+
+#: netbox/config/parameters.py:201 templates/extras/configrevision.html:191
+msgid "Maps URL"
+msgstr ""
+
+#: netbox/config/parameters.py:203
+msgid "Base URL for mapping geographic locations"
+msgstr ""
+
+#: netbox/forms/__init__.py:13
+msgid "Partial match"
+msgstr ""
+
+#: netbox/forms/__init__.py:14
+msgid "Exact match"
+msgstr ""
+
+#: netbox/forms/__init__.py:15
+msgid "Starts with"
+msgstr ""
+
+#: netbox/forms/__init__.py:16
+msgid "Ends with"
+msgstr ""
+
+#: netbox/forms/__init__.py:17
+msgid "Regex"
+msgstr ""
+
+#: netbox/forms/__init__.py:35
+msgid "Object type(s)"
+msgstr ""
+
+#: netbox/forms/base.py:66
+msgid "Id"
+msgstr ""
+
+#: netbox/forms/base.py:107
+msgid "Add tags"
+msgstr ""
+
+#: netbox/forms/base.py:112
+msgid "Remove tags"
+msgstr ""
+
+#: netbox/models/features.py:422
+msgid "Remote data source"
+msgstr ""
+
+#: netbox/models/features.py:432
+msgid "data path"
+msgstr ""
+
+#: netbox/models/features.py:436
+msgid "Path to remote file (relative to data source root)"
+msgstr ""
+
+#: netbox/models/features.py:439
+msgid "auto sync enabled"
+msgstr ""
+
+#: netbox/models/features.py:441
+msgid "Enable automatic synchronization of data when the data file is updated"
+msgstr ""
+
+#: netbox/models/features.py:444
+msgid "date synced"
+msgstr ""
+
+#: netbox/navigation/menu.py:12
+msgid "Organization"
+msgstr ""
+
+#: netbox/navigation/menu.py:20
+msgid "Site Groups"
+msgstr ""
+
+#: netbox/navigation/menu.py:28
+msgid "Rack Roles"
+msgstr ""
+
+#: netbox/navigation/menu.py:32
+msgid "Elevations"
+msgstr ""
+
+#: netbox/navigation/menu.py:41
+msgid "Tenant Groups"
+msgstr ""
+
+#: netbox/navigation/menu.py:48
+msgid "Contact Groups"
+msgstr ""
+
+#: netbox/navigation/menu.py:49 templates/tenancy/contactrole.html:8
+msgid "Contact Roles"
+msgstr ""
+
+#: netbox/navigation/menu.py:50
+msgid "Contact Assignments"
+msgstr ""
+
+#: netbox/navigation/menu.py:64
+msgid "Modules"
+msgstr ""
+
+#: netbox/navigation/menu.py:65 templates/dcim/devicerole.html:8
+msgid "Device Roles"
+msgstr ""
+
+#: netbox/navigation/menu.py:68 templates/dcim/device.html:179
+#: templates/dcim/virtualdevicecontext.html:8
+msgid "Virtual Device Contexts"
+msgstr ""
+
+#: netbox/navigation/menu.py:76
+msgid "Manufacturers"
+msgstr ""
+
+#: netbox/navigation/menu.py:80
+msgid "Device Components"
+msgstr ""
+
+#: netbox/navigation/menu.py:92 templates/dcim/inventoryitemrole.html:8
+msgid "Inventory Item Roles"
+msgstr ""
+
+#: netbox/navigation/menu.py:99 netbox/navigation/menu.py:103
+msgid "Connections"
+msgstr ""
+
+#: netbox/navigation/menu.py:105
+msgid "Cables"
+msgstr ""
+
+#: netbox/navigation/menu.py:106
+msgid "Wireless Links"
+msgstr ""
+
+#: netbox/navigation/menu.py:109
+msgid "Interface Connections"
+msgstr ""
+
+#: netbox/navigation/menu.py:114
+msgid "Console Connections"
+msgstr ""
+
+#: netbox/navigation/menu.py:119
+msgid "Power Connections"
+msgstr ""
+
+#: netbox/navigation/menu.py:135
+msgid "Wireless LAN Groups"
+msgstr ""
+
+#: netbox/navigation/menu.py:156
+msgid "Prefix & VLAN Roles"
+msgstr ""
+
+#: netbox/navigation/menu.py:162
+msgid "ASN Ranges"
+msgstr ""
+
+#: netbox/navigation/menu.py:184
+msgid "VLAN Groups"
+msgstr ""
+
+#: netbox/navigation/menu.py:191
+msgid "Service Templates"
+msgstr ""
+
+#: netbox/navigation/menu.py:192 templates/dcim/device.html:321
+#: templates/ipam/ipaddress.html:122
+#: templates/virtualization/virtualmachine.html:155
+msgid "Services"
+msgstr ""
+
+#: netbox/navigation/menu.py:199
+msgid "Overlay"
+msgstr ""
+
+#: netbox/navigation/menu.py:206 templates/ipam/l2vpn.html:57
+msgid "Terminations"
+msgstr ""
+
+#: netbox/navigation/menu.py:213 templates/dcim/device_edit.html:78
+msgid "Virtualization"
+msgstr ""
+
+#: netbox/navigation/menu.py:217 netbox/navigation/menu.py:219
+#: virtualization/views.py:186
+msgid "Virtual Machines"
+msgstr ""
+
+#: netbox/navigation/menu.py:227
+msgid "Cluster Types"
+msgstr ""
+
+#: netbox/navigation/menu.py:228
+msgid "Cluster Groups"
+msgstr ""
+
+#: netbox/navigation/menu.py:242
+msgid "Circuit Types"
+msgstr ""
+
+#: netbox/navigation/menu.py:246 netbox/navigation/menu.py:248
+msgid "Providers"
+msgstr ""
+
+#: netbox/navigation/menu.py:249 templates/circuits/provider.html:53
+msgid "Provider Accounts"
+msgstr ""
+
+#: netbox/navigation/menu.py:250
+msgid "Provider Networks"
+msgstr ""
+
+#: netbox/navigation/menu.py:264
+msgid "Power Panels"
+msgstr ""
+
+#: netbox/navigation/menu.py:275
+msgid "Configurations"
+msgstr ""
+
+#: netbox/navigation/menu.py:277
+msgid "Config Contexts"
+msgstr ""
+
+#: netbox/navigation/menu.py:278
+msgid "Config Templates"
+msgstr ""
+
+#: netbox/navigation/menu.py:285 netbox/navigation/menu.py:289
+msgid "Customization"
+msgstr ""
+
+#: netbox/navigation/menu.py:291
+#: templates/circuits/circuittermination_edit.html:53
+#: templates/dcim/cable_edit.html:77 templates/dcim/device_edit.html:103
+#: templates/dcim/inventoryitem_edit.html:102 templates/dcim/rack_edit.html:81
+#: templates/dcim/virtualchassis_add.html:31
+#: templates/dcim/virtualchassis_edit.html:41
+#: templates/generic/bulk_edit.html:92 templates/htmx/form.html:32
+#: templates/inc/panels/custom_fields.html:7
+#: templates/ipam/ipaddress_bulk_add.html:35
+#: templates/ipam/ipaddress_edit.html:88
+#: templates/ipam/l2vpntermination_edit.html:51
+#: templates/ipam/service_create.html:75 templates/ipam/service_edit.html:62
+#: templates/ipam/vlan_edit.html:63
+msgid "Custom Fields"
+msgstr ""
+
+#: netbox/navigation/menu.py:292
+msgid "Custom Field Choices"
+msgstr ""
+
+#: netbox/navigation/menu.py:293
+msgid "Custom Links"
+msgstr ""
+
+#: netbox/navigation/menu.py:294
+msgid "Export Templates"
+msgstr ""
+
+#: netbox/navigation/menu.py:295
+msgid "Saved Filters"
+msgstr ""
+
+#: netbox/navigation/menu.py:297
+msgid "Image Attachments"
+msgstr ""
+
+#: netbox/navigation/menu.py:301
+msgid "Reports & Scripts"
+msgstr ""
+
+#: netbox/navigation/menu.py:321
+msgid "Operations"
+msgstr ""
+
+#: netbox/navigation/menu.py:325
+msgid "Integrations"
+msgstr ""
+
+#: netbox/navigation/menu.py:327
+msgid "Data Sources"
+msgstr ""
+
+#: netbox/navigation/menu.py:328
+msgid "Webhooks"
+msgstr ""
+
+#: netbox/navigation/menu.py:332 netbox/navigation/menu.py:336
+#: 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:342
+msgid "Logging"
+msgstr ""
+
+#: netbox/navigation/menu.py:344
+msgid "Journal Entries"
+msgstr ""
+
+#: netbox/navigation/menu.py:345 templates/extras/objectchange.html:8
+#: templates/extras/objectchange_list.html:4
+msgid "Change Log"
+msgstr ""
+
+#: netbox/navigation/menu.py:352 templates/inc/profile_button.html:18
+msgid "Admin"
+msgstr ""
+
+#: netbox/navigation/menu.py:361 templates/users/group.html:27
+#: users/forms/model_forms.py:242 users/forms/model_forms.py:255
+#: users/forms/model_forms.py:309 users/tables.py:105
+msgid "Users"
+msgstr ""
+
+#: netbox/navigation/menu.py:384 users/forms/model_forms.py:182
+#: users/forms/model_forms.py:195 users/forms/model_forms.py:314
+#: users/tables.py:35 users/tables.py:109
+msgid "Groups"
+msgstr ""
+
+#: netbox/navigation/menu.py:406 templates/account/base.html:21
+#: templates/inc/profile_button.html:39
+msgid "API Tokens"
+msgstr ""
+
+#: netbox/navigation/menu.py:413 users/forms/model_forms.py:188
+#: users/forms/model_forms.py:197 users/forms/model_forms.py:248
+#: users/forms/model_forms.py:256
+msgid "Permissions"
+msgstr ""
+
+#: netbox/navigation/menu.py:425
+msgid "Current Config"
+msgstr ""
+
+#: netbox/navigation/menu.py:431
+msgid "Config Revisions"
+msgstr ""
+
+#: netbox/navigation/menu.py:471 templates/500.html:35
+#: templates/account/preferences.html:29
+msgid "Plugins"
+msgstr ""
+
+#: netbox/preferences.py:17
+msgid "Color mode"
+msgstr ""
+
+#: netbox/preferences.py:25
+msgid "Page length"
+msgstr ""
+
+#: netbox/preferences.py:27
+msgid "The default number of objects to display per page"
+msgstr ""
+
+#: netbox/preferences.py:31
+msgid "Paginator placement"
+msgstr ""
+
+#: netbox/preferences.py:37
+msgid "Where the paginator controls will be displayed relative to a table"
+msgstr ""
+
+#: netbox/preferences.py:43
+msgid "Data format"
+msgstr ""
+
+#: netbox/tables/columns.py:175
+msgid "Toggle all"
+msgstr ""
+
+#: netbox/tables/columns.py:277 templates/inc/profile_button.html:56
+msgid "Toggle Dropdown"
+msgstr ""
+
+#: netbox/tables/columns.py:542
+msgid "Error"
+msgstr ""
+
+#: netbox/tables/tables.py:234 templates/generic/bulk_import.html:115
+msgid "Field"
+msgstr ""
+
+#: netbox/tables/tables.py:237
+msgid "Value"
+msgstr ""
+
+#: netbox/tables/tables.py:246
+msgid "No results found"
+msgstr ""
+
+#: netbox/tests/dummy_plugin/navigation.py:29
+msgid "Dummy Plugin"
+msgstr ""
+
+#: netbox/views/generic/feature_views.py:38
+msgid "Changelog"
+msgstr ""
+
+#: netbox/views/generic/feature_views.py:91
+msgid "Journal"
+msgstr ""
+
+#: templates/403.html:4
+msgid "Access Denied"
+msgstr ""
+
+#: templates/403.html:9
+msgid "You do not have permission to access this page"
+msgstr ""
+
+#: templates/404.html:4
+msgid "Page Not Found"
+msgstr ""
+
+#: templates/404.html:9
+msgid "The requested page does not exist"
+msgstr ""
+
+#: templates/500.html:7 templates/500.html:18
+msgid "Server Error"
+msgstr ""
+
+#: templates/500.html:23
+msgid "There was a problem with your request. Please contact an administrator"
+msgstr ""
+
+#: templates/500.html:28
+msgid "The complete exception is provided below"
+msgstr ""
+
+#: templates/500.html:33
+msgid "Python version"
+msgstr ""
+
+#: templates/500.html:34
+msgid "NetBox version"
+msgstr ""
+
+#: templates/500.html:36
+msgid "None installed"
+msgstr ""
+
+#: templates/500.html:39
+msgid "If further assistance is required, please post to the"
+msgstr ""
+
+#: templates/500.html:39
+msgid "NetBox discussion forum"
+msgstr ""
+
+#: templates/500.html:39
+msgid "on GitHub"
+msgstr ""
+
+#: templates/500.html:42 templates/base/40x.html:17
+msgid "Home Page"
+msgstr ""
+
+#: templates/account/base.html:7 templates/inc/profile_button.html:24
+msgid "Profile"
+msgstr ""
+
+#: templates/account/base.html:13 templates/inc/profile_button.html:34
+msgid "Preferences"
+msgstr ""
+
+#: templates/account/password.html:5
+msgid "Change Password"
+msgstr ""
+
+#: templates/account/password.html:17 templates/account/preferences.html:82
+#: templates/dcim/devicebay_populate.html:34
+#: templates/dcim/virtualchassis_add_member.html:24
+#: templates/dcim/virtualchassis_edit.html:104
+#: templates/extras/configrevision_restore.html:80
+#: templates/extras/object_journal.html:26 templates/extras/script.html:36
+#: templates/generic/bulk_add_component.html:55
+#: templates/generic/bulk_delete.html:46 templates/generic/bulk_edit.html:125
+#: templates/generic/bulk_import.html:53 templates/generic/bulk_import.html:75
+#: templates/generic/bulk_import.html:97 templates/generic/bulk_remove.html:42
+#: templates/generic/bulk_rename.html:44
+#: templates/generic/confirmation_form.html:20
+#: templates/generic/object_edit.html:76 templates/htmx/delete_form.html:19
+#: templates/htmx/delete_form.html:21 templates/ipam/ipaddress_assign.html:31
+#: templates/virtualization/cluster_add_devices.html:30
+msgid "Cancel"
+msgstr ""
+
+#: templates/account/password.html:18 templates/account/preferences.html:83
+#: templates/dcim/devicebay_populate.html:35
+#: templates/dcim/virtualchassis_add_member.html:26
+#: templates/dcim/virtualchassis_edit.html:106
+#: 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:66
+#: utilities/templates/helpers/applied_filters.html:16
+#: utilities/templates/helpers/table_config_form.html:40
+msgid "Save"
+msgstr ""
+
+#: templates/account/preferences.html:41
+msgid "Table Configurations"
+msgstr ""
+
+#: templates/account/preferences.html:46
+msgid "Clear table preferences"
+msgstr ""
+
+#: templates/account/preferences.html:53
+msgid "Toggle All"
+msgstr ""
+
+#: templates/account/preferences.html:55
+msgid "Table"
+msgstr ""
+
+#: templates/account/preferences.html:56
+msgid "Ordering"
+msgstr ""
+
+#: templates/account/preferences.html:57
+msgid "Columns"
+msgstr ""
+
+#: templates/account/preferences.html:76 templates/dcim/cable_trace.html:113
+#: templates/extras/object_configcontext.html:55
+msgid "None found"
+msgstr ""
+
+#: templates/account/profile.html:6
+msgid "User Profile"
+msgstr ""
+
+#: templates/account/profile.html:12
+msgid "Account Details"
+msgstr ""
+
+#: templates/account/profile.html:30 templates/tenancy/contact.html:44
+#: templates/users/user.html:26 tenancy/forms/bulk_edit.py:108
+msgid "Email"
+msgstr ""
+
+#: templates/account/profile.html:34 templates/users/user.html:30
+msgid "Account Created"
+msgstr ""
+
+#: templates/account/profile.html:38 templates/users/user.html:42
+msgid "Superuser"
+msgstr ""
+
+#: templates/account/profile.html:42
+msgid "Admin Access"
+msgstr ""
+
+#: templates/account/profile.html:51 templates/users/objectpermission.html:86
+#: templates/users/user.html:51
+msgid "Assigned Groups"
+msgstr ""
+
+#: templates/account/profile.html:56
+#: templates/circuits/circuit_terminations_swap.html:18
+#: templates/circuits/circuit_terminations_swap.html:26
+#: templates/circuits/inc/circuit_termination.html:154
+#: templates/dcim/devicebay.html:66
+#: templates/dcim/inc/panels/inventory_items.html:37
+#: templates/dcim/interface.html:302 templates/dcim/modulebay.html:79
+#: templates/extras/configcontext.html:73
+#: templates/extras/htmx/script_result.html:54
+#: templates/extras/object_configcontext.html:28
+#: templates/extras/objectchange.html:128
+#: templates/extras/objectchange.html:145 templates/extras/webhook.html:122
+#: templates/extras/webhook.html:134 templates/extras/webhook.html:146
+#: templates/inc/panel_table.html:12 templates/inc/panels/comments.html:12
+#: templates/ipam/inc/panels/fhrp_groups.html:43 templates/users/group.html:32
+#: templates/users/group.html:42 templates/users/objectpermission.html:81
+#: templates/users/objectpermission.html:91 templates/users/user.html:56
+#: templates/users/user.html:66
+msgid "None"
+msgstr ""
+
+#: templates/account/profile.html:66 templates/users/user.html:76
+msgid "Recent Activity"
+msgstr ""
+
+#: templates/account/token.html:8 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:123
+msgid "Token"
+msgstr ""
+
+#: templates/account/token.html:40 templates/users/token.html:32
+#: users/forms/bulk_edit.py:87
+msgid "Write enabled"
+msgstr ""
+
+#: templates/account/token.html:52 templates/users/token.html:44
+msgid "Last used"
+msgstr ""
+
+#: templates/account/token_list.html:12
+msgid "Add a Token"
+msgstr ""
+
+#: templates/admin/index.html:10
+msgid "System"
+msgstr ""
+
+#: templates/admin/index.html:14
+msgid "Background Tasks"
+msgstr ""
+
+#: templates/admin/index.html:19
+msgid "Installed plugins"
+msgstr ""
+
+#: templates/base/base.html:28 templates/extras/admin/plugins_list.html:8
+#: templates/home.html:24
+msgid "Home"
+msgstr ""
+
+#: templates/base/layout.html:27 templates/base/layout.html:37
+#: templates/login.html:34
+msgid "NetBox logo"
+msgstr ""
+
+#: templates/base/layout.html:76
+msgid "Debug mode is enabled"
+msgstr ""
+
+#: templates/base/layout.html:77
+msgid ""
+"Performance may be limited. Debugging should never be enabled on a "
+"production system"
+msgstr ""
+
+#: templates/base/layout.html:83
+msgid "Maintenance Mode"
+msgstr ""
+
+#: templates/base/layout.html:134
+msgid "Docs"
+msgstr ""
+
+#: templates/base/layout.html:139 templates/rest_framework/api.html:10
+msgid "REST API"
+msgstr ""
+
+#: templates/base/layout.html:144
+msgid "REST API documentation"
+msgstr ""
+
+#: templates/base/layout.html:150
+msgid "GraphQL API"
+msgstr ""
+
+#: templates/base/layout.html:156
+msgid "Source Code"
+msgstr ""
+
+#: templates/base/layout.html:161
+msgid "Community"
+msgstr ""
+
+#: templates/base/sidenav.html:12 templates/base/sidenav.html:17
+msgid "NetBox Logo"
+msgstr ""
+
+#: templates/circuits/circuit.html:48
+msgid "Install Date"
+msgstr ""
+
+#: templates/circuits/circuit.html:52
+msgid "Termination Date"
+msgstr ""
+
+#: templates/circuits/circuit_terminations_swap.html:4
+msgid "Swap Circuit Terminations"
+msgstr ""
+
+#: 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
+msgid "A side"
+msgstr ""
+
+#: templates/circuits/circuit_terminations_swap.html:22
+msgid "Z side"
+msgstr ""
+
+#: templates/circuits/circuittermination_edit.html:9
+#: templates/circuits/inc/circuit_termination.html:81
+#: templates/dcim/frontport.html:128 templates/dcim/interface.html:195
+#: templates/dcim/rearport.html:118
+msgid "Circuit Termination"
+msgstr ""
+
+#: templates/circuits/circuittermination_edit.html:41
+msgid "Termination Details"
+msgstr ""
+
+#: templates/circuits/circuittype.html:10
+msgid "Add Circuit"
+msgstr ""
+
+#: templates/circuits/inc/circuit_termination.html:9
+#: templates/dcim/devicetype/component_templates.html:30
+#: templates/dcim/manufacturer.html:11
+#: templates/dcim/moduletype/component_templates.html:30
+#: templates/generic/bulk_add_component.html:8
+#: templates/users/objectpermission.html:41
+#: utilities/templates/buttons/add.html:4
+#: utilities/templates/helpers/table_config_form.html:20
+msgid "Add"
+msgstr ""
+
+#: templates/circuits/inc/circuit_termination.html:14
+#: templates/circuits/inc/circuit_termination.html:63
+#: templates/dcim/devicetype/component_templates.html:21
+#: templates/dcim/inc/panels/inventory_items.html:24
+#: templates/dcim/moduletype/component_templates.html:21
+#: templates/dcim/powerpanel.html:61 templates/generic/object_edit.html:29
+#: templates/ipam/inc/ipaddress_edit_header.html:10
+#: templates/ipam/inc/panels/fhrp_groups.html:30
+#: utilities/templates/buttons/edit.html:3
+msgid "Edit"
+msgstr ""
+
+#: templates/circuits/inc/circuit_termination.html:17
+msgid "Swap"
+msgstr ""
+
+#: templates/circuits/inc/circuit_termination.html:26
+#, python-format
+msgid "Termination %(side)s"
+msgstr ""
+
+#: templates/circuits/inc/circuit_termination.html:42
+#: templates/dcim/cable.html:70 templates/dcim/cable.html:76
+msgid "Termination"
+msgstr ""
+
+#: templates/circuits/inc/circuit_termination.html:46
+#: templates/dcim/consoleport.html:62 templates/dcim/consoleserverport.html:62
+#: templates/dcim/powerfeed.html:122
+msgid "Marked as connected"
+msgstr ""
+
+#: templates/circuits/inc/circuit_termination.html:48
+msgid "to"
+msgstr ""
+
+#: templates/circuits/inc/circuit_termination.html:58
+#: templates/circuits/inc/circuit_termination.html:59
+#: templates/dcim/frontport.html:87
+#: templates/dcim/inc/connection_endpoints.html:7
+#: templates/dcim/interface.html:156 templates/dcim/rearport.html:83
+msgid "Trace"
+msgstr ""
+
+#: templates/circuits/inc/circuit_termination.html:62
+msgid "Edit cable"
+msgstr ""
+
+#: templates/circuits/inc/circuit_termination.html:67
+msgid "Remove cable"
+msgstr ""
+
+#: templates/circuits/inc/circuit_termination.html:68
+#: 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:66
+msgid "Disconnect"
+msgstr ""
+
+#: templates/circuits/inc/circuit_termination.html:75
+#: templates/dcim/consoleport.html:71 templates/dcim/consoleserverport.html:71
+#: templates/dcim/frontport.html:109 templates/dcim/interface.html:182
+#: templates/dcim/interface.html:202 templates/dcim/powerfeed.html:136
+#: templates/dcim/poweroutlet.html:75 templates/dcim/poweroutlet.html:76
+#: templates/dcim/powerport.html:77 templates/dcim/rearport.html:105
+msgid "Connect"
+msgstr ""
+
+#: templates/circuits/inc/circuit_termination.html:79
+#: templates/dcim/consoleport.html:78 templates/dcim/consoleserverport.html:78
+#: templates/dcim/frontport.html:18 templates/dcim/frontport.html:122
+#: templates/dcim/interface.html:189 templates/dcim/inventoryitem_edit.html:49
+#: templates/dcim/rearport.html:112
+msgid "Front Port"
+msgstr ""
+
+#: templates/circuits/inc/circuit_termination.html:97
+msgid "Downstream"
+msgstr ""
+
+#: templates/circuits/inc/circuit_termination.html:98
+msgid "Upstream"
+msgstr ""
+
+#: templates/circuits/inc/circuit_termination.html:107
+msgid "Cross-Connect"
+msgstr ""
+
+#: templates/circuits/inc/circuit_termination.html:111
+msgid "Patch Panel/Port"
+msgstr ""
+
+#: templates/circuits/provider.html:11
+msgid "Add circuit"
+msgstr ""
+
+#: templates/circuits/provideraccount.html:17
+msgid "Provider Account"
+msgstr ""
+
+#: templates/core/datafile.html:47
+msgid "Last Updated"
+msgstr ""
+
+#: templates/core/datafile.html:51 templates/ipam/iprange.html:28
+msgid "Size"
+msgstr ""
+
+#: templates/core/datafile.html:52
+msgid "bytes"
+msgstr ""
+
+#: templates/core/datafile.html:55
+msgid "SHA256 Hash"
+msgstr ""
+
+#: templates/core/datasource.html:14 templates/core/datasource.html:20
+#: utilities/templates/buttons/sync.html:5
+msgid "Sync"
+msgstr ""
+
+#: templates/core/datasource.html:51
+msgid "Last synced"
+msgstr ""
+
+#: templates/core/datasource.html:86
+msgid "Backend"
+msgstr ""
+
+#: templates/core/datasource.html:102
+msgid "No parameters defined"
+msgstr ""
+
+#: templates/core/datasource.html:118
+msgid "Files"
+msgstr ""
+
+#: templates/core/job.html:21
+msgid "Job"
+msgstr ""
+
+#: templates/core/job.html:39 templates/extras/journalentry.html:29
+msgid "Created By"
+msgstr ""
+
+#: templates/core/job.html:48
+msgid "Scheduling"
+msgstr ""
+
+#: templates/core/job.html:60
+#, python-format
+msgid "every %(interval)s seconds"
+msgstr ""
+
+#: 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_edit.html:12
+msgid "A Side"
+msgstr ""
+
+#: templates/dcim/cable_edit.html:29
+msgid "B Side"
+msgstr ""
+
+#: templates/dcim/cable_trace.html:6
+#, python-format
+msgid "Cable Trace for %(object_type)s %(object)s"
+msgstr ""
+
+#: templates/dcim/cable_trace.html:21 templates/dcim/inc/rack_elevation.html:7
+msgid "Download SVG"
+msgstr ""
+
+#: templates/dcim/cable_trace.html:27
+msgid "Asymmetric Path"
+msgstr ""
+
+#: templates/dcim/cable_trace.html:28
+msgid "The nodes below have no links and result in an asymmetric path"
+msgstr ""
+
+#: templates/dcim/cable_trace.html:35
+msgid "Path split"
+msgstr ""
+
+#: templates/dcim/cable_trace.html:36
+msgid "Select a node below to continue"
+msgstr ""
+
+#: templates/dcim/cable_trace.html:52
+msgid "Trace Completed"
+msgstr ""
+
+#: templates/dcim/cable_trace.html:55
+msgid "Total segments"
+msgstr ""
+
+#: templates/dcim/cable_trace.html:59
+msgid "Total length"
+msgstr ""
+
+#: templates/dcim/cable_trace.html:74
+msgid "No paths found"
+msgstr ""
+
+#: templates/dcim/cable_trace.html:83
+msgid "Related Paths"
+msgstr ""
+
+#: templates/dcim/cable_trace.html:89
+msgid "Origin"
+msgstr ""
+
+#: templates/dcim/cable_trace.html:90
+msgid "Destination"
+msgstr ""
+
+#: templates/dcim/cable_trace.html:91
+msgid "Segments"
+msgstr ""
+
+#: templates/dcim/cable_trace.html:104
+msgid "Incomplete"
+msgstr ""
+
+#: templates/dcim/component_list.html:14
+msgid "Rename Selected"
+msgstr ""
+
+#: templates/dcim/consoleport.html:67 templates/dcim/consoleserverport.html:67
+#: templates/dcim/frontport.html:105 templates/dcim/interface.html:178
+#: templates/dcim/poweroutlet.html:73 templates/dcim/powerport.html:73
+msgid "Not Connected"
+msgstr ""
+
+#: templates/dcim/consoleport.html:75 templates/dcim/consoleserverport.html:18
+#: templates/dcim/frontport.html:116 templates/dcim/inventoryitem_edit.html:44
+msgid "Console Server Port"
+msgstr ""
+
+#: templates/dcim/device.html:52
+msgid "Highlight device"
+msgstr ""
+
+#: templates/dcim/device.html:74
+msgid "Not racked"
+msgstr ""
+
+#: templates/dcim/device.html:81 templates/dcim/site.html:109
+msgid "GPS Coordinates"
+msgstr ""
+
+#: templates/dcim/device.html:87 templates/dcim/site.html:115
+msgid "Map It"
+msgstr ""
+
+#: templates/dcim/device.html:127 templates/dcim/inventoryitem.html:57
+#: templates/dcim/module.html:79 templates/dcim/modulebay.html:73
+#: templates/dcim/rack.html:69
+msgid "Asset Tag"
+msgstr ""
+
+#: templates/dcim/device.html:170
+msgid "View Virtual Chassis"
+msgstr ""
+
+#: templates/dcim/device.html:187
+msgid "Create VDC"
+msgstr ""
+
+#: templates/dcim/device.html:196 templates/dcim/device_edit.html:64
+#: virtualization/forms/model_forms.py:224
+msgid "Management"
+msgstr ""
+
+#: templates/dcim/device.html:217 templates/dcim/device.html:233
+#: templates/virtualization/virtualmachine.html:56
+#: templates/virtualization/virtualmachine.html:72
+msgid "NAT for"
+msgstr ""
+
+#: templates/dcim/device.html:219 templates/dcim/device.html:235
+#: templates/virtualization/virtualmachine.html:58
+#: templates/virtualization/virtualmachine.html:74
+msgid "NAT"
+msgstr ""
+
+#: templates/dcim/device.html:271 templates/dcim/rack.html:77
+msgid "Power Utilization"
+msgstr ""
+
+#: templates/dcim/device.html:276
+msgid "Input"
+msgstr ""
+
+#: templates/dcim/device.html:277
+msgid "Outlets"
+msgstr ""
+
+#: templates/dcim/device.html:278
+msgid "Allocated"
+msgstr ""
+
+#: templates/dcim/device.html:287 templates/dcim/device.html:289
+#: templates/dcim/device.html:305 templates/dcim/powerfeed.html:70
+msgid "VA"
+msgstr ""
+
+#: templates/dcim/device.html:299
+msgctxt "Leg of a power feed"
+msgid "Leg"
+msgstr ""
+
+#: templates/dcim/device.html:329
+#: templates/virtualization/virtualmachine.html:163
+msgid "Add a service"
+msgstr ""
+
+#: templates/dcim/device.html:336 templates/dcim/rack.html:84
+#: templates/dcim/rack_edit.html:38
+msgid "Dimensions"
+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_list.html:8
+msgid "Add Components"
+msgstr ""
+
+#: templates/dcim/device/consoleports.html:24
+msgid "Add Console Ports"
+msgstr ""
+
+#: templates/dcim/device/consoleserverports.html:24
+msgid "Add Console Server Ports"
+msgstr ""
+
+#: templates/dcim/device/devicebays.html:10
+msgid "Add Device Bays"
+msgstr ""
+
+#: templates/dcim/device/frontports.html:24
+msgid "Add Front Ports"
+msgstr ""
+
+#: templates/dcim/device/inc/interface_table_controls.html:9
+msgid "Hide Enabled"
+msgstr ""
+
+#: templates/dcim/device/inc/interface_table_controls.html:10
+msgid "Hide Disabled"
+msgstr ""
+
+#: templates/dcim/device/inc/interface_table_controls.html:11
+msgid "Hide Virtual"
+msgstr ""
+
+#: templates/dcim/device/inc/interface_table_controls.html:12
+msgid "Hide Disconnected"
+msgstr ""
+
+#: templates/dcim/device/interfaces.html:28
+#: templates/virtualization/virtualmachine/base.html:21
+msgid "Add Interfaces"
+msgstr ""
+
+#: templates/dcim/device/inventory.html:10
+#: templates/dcim/inc/panels/inventory_items.html:46
+msgid "Add Inventory Item"
+msgstr ""
+
+#: templates/dcim/device/modulebays.html:10
+msgid "Add Module Bays"
+msgstr ""
+
+#: templates/dcim/device/poweroutlets.html:24
+msgid "Add Power Outlets"
+msgstr ""
+
+#: templates/dcim/device/powerports.html:24
+msgid "Add Power Port"
+msgstr ""
+
+#: 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
+msgid "Config"
+msgstr ""
+
+#: templates/dcim/device/render_config.html:37
+#: templates/virtualization/virtualmachine/render_config.html:37
+msgid "Context Data"
+msgstr ""
+
+#: templates/dcim/device/render_config.html:57
+#: templates/virtualization/virtualmachine/render_config.html:57
+msgid "Download"
+msgstr ""
+
+#: templates/dcim/device/render_config.html:60
+#: templates/virtualization/virtualmachine/render_config.html:60
+msgid "Rendered Config"
+msgstr ""
+
+#: templates/dcim/device/render_config.html:65
+#: templates/virtualization/virtualmachine/render_config.html:65
+msgid "No configuration template found"
+msgstr ""
+
+#: templates/dcim/device_edit.html:44
+msgid "Parent Bay"
+msgstr ""
+
+#: templates/dcim/device_edit.html:48
+#: utilities/templates/form_helpers/render_field.html:20
+msgid "Regenerate Slug"
+msgstr ""
+
+#: templates/dcim/device_edit.html:49 templates/generic/bulk_remove.html:7
+#: utilities/templates/helpers/table_config_form.html:23
+msgid "Remove"
+msgstr ""
+
+#: templates/dcim/device_edit.html:110
+msgid "Local Config Context Data"
+msgstr ""
+
+#: templates/dcim/device_list.html:82
+#: templates/dcim/devicetype/component_templates.html:18
+#: templates/dcim/moduletype/component_templates.html:18
+#: templates/generic/bulk_rename.html:34
+#: templates/virtualization/virtualmachine/interfaces.html:11
+msgid "Rename"
+msgstr ""
+
+#: templates/dcim/devicebay.html:18
+msgid "Device Bay"
+msgstr ""
+
+#: templates/dcim/devicebay.html:48
+msgid "Installed Device"
+msgstr ""
+
+#: templates/dcim/devicebay_delete.html:6
+#, python-format
+msgid "Delete device bay %(devicebay)s?"
+msgstr ""
+
+#: templates/dcim/devicebay_delete.html:11
+#, python-format
+msgid ""
+"Are you sure you want to delete this device bay from %(device)s"
+"strong>?"
+msgstr ""
+
+#: templates/dcim/devicebay_depopulate.html:6
+#, python-format
+msgid "Remove %(device)s from %(device_bay)s?"
+msgstr ""
+
+#: 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
+msgid "Populate"
+msgstr ""
+
+#: templates/dcim/devicebay_populate.html:22
+msgid "Bay"
+msgstr ""
+
+#: templates/dcim/devicerole.html:14 templates/dcim/platform.html:17
+msgid "Add Device"
+msgstr ""
+
+#: templates/dcim/devicerole.html:43
+msgid "VM Role"
+msgstr ""
+
+#: templates/dcim/devicetype.html:21 templates/dcim/moduletype.html:19
+msgid "Model Name"
+msgstr ""
+
+#: templates/dcim/devicetype.html:28 templates/dcim/moduletype.html:23
+msgid "Part Number"
+msgstr ""
+
+#: templates/dcim/devicetype.html:40
+msgid "Height (U"
+msgstr ""
+
+#: templates/dcim/devicetype.html:44
+msgid "Exclude From Utilization"
+msgstr ""
+
+#: templates/dcim/devicetype.html:62
+msgid "Parent/Child"
+msgstr ""
+
+#: templates/dcim/devicetype.html:74
+msgid "Front Image"
+msgstr ""
+
+#: templates/dcim/devicetype.html:86
+msgid "Rear Image"
+msgstr ""
+
+#: templates/dcim/frontport.html:57
+msgid "Rear Port Position"
+msgstr ""
+
+#: templates/dcim/frontport.html:79 templates/dcim/interface.html:146
+#: templates/dcim/poweroutlet.html:67 templates/dcim/powerport.html:67
+#: templates/dcim/rearport.html:75
+msgid "Marked as Connected"
+msgstr ""
+
+#: templates/dcim/frontport.html:93 templates/dcim/rearport.html:89
+msgid "Connection Status"
+msgstr ""
+
+#: templates/dcim/inc/cable_termination.html:65
+msgid "No termination"
+msgstr ""
+
+#: templates/dcim/inc/cable_toggle_buttons.html:4
+msgid "Mark Planned"
+msgstr ""
+
+#: templates/dcim/inc/cable_toggle_buttons.html:8
+msgid "Mark Installed"
+msgstr ""
+
+#: templates/dcim/inc/connection_endpoints.html:13
+msgid "Path Status"
+msgstr ""
+
+#: templates/dcim/inc/connection_endpoints.html:18
+msgid "Not Reachable"
+msgstr ""
+
+#: templates/dcim/inc/connection_endpoints.html:23
+msgid "Path Endpoints"
+msgstr ""
+
+#: templates/dcim/inc/endpoint_connection.html:8
+#: templates/dcim/powerfeed.html:128 templates/dcim/rearport.html:101
+msgid "Not connected"
+msgstr ""
+
+#: templates/dcim/inc/interface_vlans_table.html:6
+msgid "Untagged"
+msgstr ""
+
+#: 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
+msgid "Clear"
+msgstr ""
+
+#: templates/dcim/inc/interface_vlans_table.html:47
+msgid "Clear All"
+msgstr ""
+
+#: templates/dcim/interface.html:17
+msgid "Add Child Interface"
+msgstr ""
+
+#: templates/dcim/interface.html:51
+msgid "Speed/Duplex"
+msgstr ""
+
+#: templates/dcim/interface.html:74
+msgid "PoE Mode"
+msgstr ""
+
+#: templates/dcim/interface.html:78
+msgid "PoE Type"
+msgstr ""
+
+#: templates/dcim/interface.html:82
+#: templates/virtualization/vminterface.html:66
+msgid "802.1Q Mode"
+msgstr ""
+
+#: templates/dcim/interface.html:126
+#: templates/virtualization/vminterface.html:62
+msgid "MAC Address"
+msgstr ""
+
+#: templates/dcim/interface.html:153
+msgid "Wireless Link"
+msgstr ""
+
+#: templates/dcim/interface.html:222
+msgid "Peer"
+msgstr ""
+
+#: templates/dcim/interface.html:234
+#: templates/wireless/inc/wirelesslink_interface.html:26
+msgid "Channel"
+msgstr ""
+
+#: templates/dcim/interface.html:243
+#: templates/wireless/inc/wirelesslink_interface.html:32
+msgid "Channel Frequency"
+msgstr ""
+
+#: templates/dcim/interface.html:246 templates/dcim/interface.html:254
+#: templates/dcim/interface.html:265 templates/dcim/interface.html:273
+msgid "MHz"
+msgstr ""
+
+#: templates/dcim/interface.html:262
+#: templates/wireless/inc/wirelesslink_interface.html:42
+msgid "Channel Width"
+msgstr ""
+
+#: templates/dcim/interface.html:291 templates/wireless/wirelesslan.html:15
+#: templates/wireless/wirelesslink.html:24 wireless/forms/bulk_edit.py:59
+#: wireless/forms/bulk_edit.py:101 wireless/forms/filtersets.py:39
+#: wireless/forms/filtersets.py:79 wireless/models.py:81 wireless/models.py:155
+#: wireless/tables/wirelesslan.py:44
+msgid "SSID"
+msgstr ""
+
+#: templates/dcim/interface.html:312
+msgid "LAG Members"
+msgstr ""
+
+#: templates/dcim/interface.html:331
+msgid "No member interfaces"
+msgstr ""
+
+#: templates/dcim/interface.html:355 templates/ipam/fhrpgroup.html:80
+#: templates/ipam/iprange/ip_addresses.html:7
+#: templates/ipam/prefix/ip_addresses.html:7
+#: templates/virtualization/vminterface.html:92
+msgid "Add IP Address"
+msgstr ""
+
+#: templates/dcim/inventoryitem.html:25
+msgid "Parent Item"
+msgstr ""
+
+#: templates/dcim/inventoryitem.html:49
+msgid "Part ID"
+msgstr ""
+
+#: templates/dcim/inventoryitem_bulk_delete.html:5
+msgid "This will also delete all child inventory items of those listed"
+msgstr ""
+
+#: templates/dcim/inventoryitem_edit.html:33
+msgid "Component Assignment"
+msgstr ""
+
+#: templates/dcim/inventoryitem_edit.html:59 templates/dcim/poweroutlet.html:18
+#: templates/dcim/powerport.html:81
+msgid "Power Outlet"
+msgstr ""
+
+#: templates/dcim/location.html:17
+msgid "Add Child Location"
+msgstr ""
+
+#: templates/dcim/location.html:76
+msgid "Child Locations"
+msgstr ""
+
+#: templates/dcim/location.html:84 templates/dcim/site.html:150
+msgid "Add a Location"
+msgstr ""
+
+#: templates/dcim/location.html:98 templates/dcim/site.html:164
+msgid "Add a Device"
+msgstr ""
+
+#: templates/dcim/manufacturer.html:16
+msgid "Add Device Type"
+msgstr ""
+
+#: templates/dcim/manufacturer.html:21
+msgid "Add Module Type"
+msgstr ""
+
+#: templates/dcim/powerfeed.html:56
+msgid "Connected Device"
+msgstr ""
+
+#: templates/dcim/powerfeed.html:66
+msgid "Utilization (Allocated"
+msgstr ""
+
+#: templates/dcim/powerfeed.html:85
+msgid "Electrical Characteristics"
+msgstr ""
+
+#: templates/dcim/powerfeed.html:95
+msgctxt "Abbreviation for volts"
+msgid "V"
+msgstr ""
+
+#: templates/dcim/powerfeed.html:99
+msgctxt "Abbreviation for amperes"
+msgid "A"
+msgstr ""
+
+#: templates/dcim/poweroutlet.html:51
+msgid "Feed Leg"
+msgstr ""
+
+#: templates/dcim/powerpanel.html:77
+msgid "Add Power Feeds"
+msgstr ""
+
+#: templates/dcim/powerport.html:47
+msgid "Maximum Draw"
+msgstr ""
+
+#: templates/dcim/powerport.html:51
+msgid "Allocated Draw"
+msgstr ""
+
+#: templates/dcim/rack.html:73
+msgid "Space Utilization"
+msgstr ""
+
+#: templates/dcim/rack.html:103
+msgid "descending"
+msgstr ""
+
+#: templates/dcim/rack.html:103
+msgid "ascending"
+msgstr ""
+
+#: templates/dcim/rack.html:106
+msgid "Starting Unit"
+msgstr ""
+
+#: templates/dcim/rack.html:132
+msgid "Mounting Depth"
+msgstr ""
+
+#: templates/dcim/rack.html:142
+msgid "Rack Weight"
+msgstr ""
+
+#: templates/dcim/rack.html:152 templates/dcim/rack_edit.html:67
+msgid "Maximum Weight"
+msgstr ""
+
+#: templates/dcim/rack.html:162
+msgid "Total Weight"
+msgstr ""
+
+#: templates/dcim/rack.html:180 templates/dcim/rack_elevation_list.html:16
+msgid "Images and Labels"
+msgstr ""
+
+#: templates/dcim/rack.html:181 templates/dcim/rack_elevation_list.html:17
+msgid "Images only"
+msgstr ""
+
+#: templates/dcim/rack.html:182 templates/dcim/rack_elevation_list.html:18
+msgid "Labels only"
+msgstr ""
+
+#: templates/dcim/rack/reservations.html:9
+msgid "Add reservation"
+msgstr ""
+
+#: templates/dcim/rack_edit.html:21
+msgid "Inventory Control"
+msgstr ""
+
+#: templates/dcim/rack_edit.html:45
+msgid "Outer Dimensions"
+msgstr ""
+
+#: templates/dcim/rack_edit.html:56 templates/dcim/rack_edit.html:71
+msgid "Unit"
+msgstr ""
+
+#: templates/dcim/rack_elevation_list.html:12
+msgid "View List"
+msgstr ""
+
+#: templates/dcim/rack_elevation_list.html:27
+msgid "Sort By"
+msgstr ""
+
+#: templates/dcim/rack_elevation_list.html:77
+msgid "No Racks Found"
+msgstr ""
+
+#: templates/dcim/rack_list.html:8
+msgid "View Elevations"
+msgstr ""
+
+#: templates/dcim/rackreservation.html:47
+msgid "Reservation Details"
+msgstr ""
+
+#: templates/dcim/rackrole.html:10
+msgid "Add Rack"
+msgstr ""
+
+#: templates/dcim/rearport.html:53
+msgid "Positions"
+msgstr ""
+
+#: templates/dcim/region.html:17 templates/dcim/sitegroup.html:17
+msgid "Add Site"
+msgstr ""
+
+#: templates/dcim/region.html:56
+msgid "Child Regions"
+msgstr ""
+
+#: templates/dcim/region.html:64
+msgid "Add Region"
+msgstr ""
+
+#: templates/dcim/site.html:69
+msgid "Facility"
+msgstr ""
+
+#: templates/dcim/site.html:77
+msgid "Time Zone"
+msgstr ""
+
+#: templates/dcim/site.html:80
+msgid "UTC"
+msgstr ""
+
+#: templates/dcim/site.html:81
+msgid "Site time"
+msgstr ""
+
+#: templates/dcim/site.html:88
+msgid "Physical Address"
+msgstr ""
+
+#: templates/dcim/site.html:94
+msgid "Map"
+msgstr ""
+
+#: templates/dcim/site.html:105
+msgid "Shipping Address"
+msgstr ""
+
+#: templates/dcim/sitegroup.html:56 templates/tenancy/contactgroup.html:49
+#: templates/tenancy/tenantgroup.html:58
+#: templates/wireless/wirelesslangroup.html:56
+msgid "Child Groups"
+msgstr ""
+
+#: templates/dcim/sitegroup.html:64
+msgid "Add Site Group"
+msgstr ""
+
+#: templates/dcim/trace/attachment.html:5
+#: templates/extras/exporttemplate.html:37
+msgid "Attachment"
+msgstr ""
+
+#: templates/dcim/virtualchassis.html:86
+msgid "Add Member"
+msgstr ""
+
+#: templates/dcim/virtualchassis_add.html:18
+msgid "Member Devices"
+msgstr ""
+
+#: templates/dcim/virtualchassis_add_member.html:6
+#, python-format
+msgid "Add New Member to Virtual Chassis %(virtual_chassis)s"
+msgstr ""
+
+#: templates/dcim/virtualchassis_add_member.html:17
+msgid "Add New Member"
+msgstr ""
+
+#: templates/dcim/virtualchassis_add_member.html:25
+msgid "Add Another"
+msgstr ""
+
+#: templates/dcim/virtualchassis_edit.html:7
+#, python-format
+msgid "Editing Virtual Chassis %(name)s"
+msgstr ""
+
+#: templates/dcim/virtualchassis_edit.html:54
+msgid "Rack/Unit"
+msgstr ""
+
+#: templates/dcim/virtualchassis_remove_member.html:5
+msgid "Remove Virtual Chassis Member"
+msgstr ""
+
+#: 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:29 templates/ipam/l2vpn.html:19
+msgid "Identifier"
+msgstr ""
+
+#: 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
+msgid "Missing required packages"
+msgstr ""
+
+#: 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 "
+"local_requirements.txt
, and are normally installed as part of "
+"the installation or upgrade process. To verify installed packages, run "
+"pip freeze
from the console and compare the output to the list "
+"of required packages."
+msgstr ""
+
+#: templates/exceptions/import_error.html:20
+msgid "WSGI service not restarted after upgrade"
+msgstr ""
+
+#: 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
+msgid ""
+"A file permission error was detected while processing this request. Common "
+"causes include the following:"
+msgstr ""
+
+#: templates/exceptions/permission_error.html:10
+msgid "Insufficient write permission to the media root"
+msgstr ""
+
+#: templates/exceptions/permission_error.html:11
+#, python-format
+msgid ""
+"The configured media root is %(media_root)s
. Ensure that the "
+"user NetBox runs as has access to write files to all locations within this "
+"path."
+msgstr ""
+
+#: 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
+msgid "Database migrations missing"
+msgstr ""
+
+#: 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
+msgid "Unsupported PostgreSQL version"
+msgstr ""
+
+#: 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/admin/plugins_list.html:4
+#: templates/extras/admin/plugins_list.html:9
+#: templates/extras/admin/plugins_list.html:13
+msgid "Installed Plugins"
+msgstr ""
+
+#: templates/extras/admin/plugins_list.html:23
+msgid "Package Name"
+msgstr ""
+
+#: templates/extras/admin/plugins_list.html:24
+msgid "Author"
+msgstr ""
+
+#: templates/extras/admin/plugins_list.html:25
+msgid "Author Email"
+msgstr ""
+
+#: templates/extras/admin/plugins_list.html:27
+msgid "Version"
+msgstr ""
+
+#: templates/extras/configcontext.html:46
+#: templates/extras/configtemplate.html:38
+#: templates/extras/exporttemplate.html:57
+msgid "The data file associated with this object has been deleted"
+msgstr ""
+
+#: templates/extras/configcontext.html:55
+#: templates/extras/configtemplate.html:47
+#: templates/extras/exporttemplate.html:66
+msgid "Data Synced"
+msgstr ""
+
+#: templates/extras/configcontext_list.html:7
+#: templates/extras/configtemplate_list.html:7
+#: templates/extras/exporttemplate_list.html:7
+msgid "Sync Data"
+msgstr ""
+
+#: templates/extras/configrevision.html:47
+msgid "Default unit height"
+msgstr ""
+
+#: templates/extras/configrevision.html:51
+msgid "Default unit width"
+msgstr ""
+
+#: templates/extras/configrevision.html:63
+msgid "Default voltage"
+msgstr ""
+
+#: templates/extras/configrevision.html:67
+msgid "Default amperage"
+msgstr ""
+
+#: templates/extras/configrevision.html:71
+msgid "Default max utilization"
+msgstr ""
+
+#: templates/extras/configrevision.html:83
+msgid "Enforce global unique"
+msgstr ""
+
+#: templates/extras/configrevision.html:135
+msgid "Paginate count"
+msgstr ""
+
+#: templates/extras/configrevision.html:139
+msgid "Max page size"
+msgstr ""
+
+#: templates/extras/configrevision.html:163
+msgid "Default user preferences"
+msgstr ""
+
+#: templates/extras/configrevision.html:187
+msgid "Job retention"
+msgstr ""
+
+#: templates/extras/configrevision.html:199
+msgid "Comment"
+msgstr ""
+
+#: templates/extras/configrevision_restore.html:8
+#: templates/extras/configrevision_restore.html:43
+#: templates/extras/configrevision_restore.html:79
+msgid "Restore"
+msgstr ""
+
+#: templates/extras/configrevision_restore.html:21
+msgid "Config revisions"
+msgstr ""
+
+#: templates/extras/configrevision_restore.html:54
+msgid "Parameter"
+msgstr ""
+
+#: templates/extras/configrevision_restore.html:55
+msgid "Current Value"
+msgstr ""
+
+#: templates/extras/configrevision_restore.html:56
+msgid "New Value"
+msgstr ""
+
+#: templates/extras/configrevision_restore.html:66
+msgid "Changed"
+msgstr ""
+
+#: templates/extras/configtemplate.html:58
+msgid "Environment Parameters"
+msgstr ""
+
+#: templates/extras/configtemplate.html:69
+#: templates/extras/exporttemplate.html:88
+msgid "Template"
+msgstr ""
+
+#: templates/extras/customfield.html:31 templates/extras/customlink.html:22
+msgid "Group Name"
+msgstr ""
+
+#: templates/extras/customfield.html:43
+msgid "Cloneable"
+msgstr ""
+
+#: templates/extras/customfield.html:53
+msgid "Default Value"
+msgstr ""
+
+#: templates/extras/customfield.html:64
+msgid "Search Weight"
+msgstr ""
+
+#: templates/extras/customfield.html:74
+msgid "Filter Logic"
+msgstr ""
+
+#: templates/extras/customfield.html:78
+msgid "Display Weight"
+msgstr ""
+
+#: templates/extras/customfield.html:104
+msgid "Validation Rules"
+msgstr ""
+
+#: templates/extras/customfield.html:108
+msgid "Minimum Value"
+msgstr ""
+
+#: templates/extras/customfield.html:112
+msgid "Maximum Value"
+msgstr ""
+
+#: templates/extras/customfield.html:116
+msgid "Regular Expression"
+msgstr ""
+
+#: templates/extras/customlink.html:30
+msgid "Button Class"
+msgstr ""
+
+#: templates/extras/customlink.html:41 templates/extras/exporttemplate.html:73
+#: templates/extras/savedfilter.html:41 templates/extras/webhook.html:102
+msgid "Assigned Models"
+msgstr ""
+
+#: templates/extras/customlink.html:57
+msgid "Link Text"
+msgstr ""
+
+#: templates/extras/customlink.html:65
+msgid "Link URL"
+msgstr ""
+
+#: templates/extras/dashboard/reset.html:4 templates/home.html:63
+msgid "Reset Dashboard"
+msgstr ""
+
+#: 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
+msgid ""
+"This change affects only your dashboard, and will not impact other "
+"users."
+msgstr ""
+
+#: templates/extras/dashboard/widget_add.html:7
+msgid "Add a Widget"
+msgstr ""
+
+#: templates/extras/dashboard/widgets/bookmarks.html:14
+msgid "No bookmarks have been added yet."
+msgstr ""
+
+#: templates/extras/dashboard/widgets/objectcounts.html:15
+msgid "No permission"
+msgstr ""
+
+#: templates/extras/dashboard/widgets/objectlist.html:6
+msgid "No permission to view this content"
+msgstr ""
+
+#: templates/extras/dashboard/widgets/objectlist.html:10
+msgid "Unable to load content. Invalid view name"
+msgstr ""
+
+#: templates/extras/dashboard/widgets/rssfeed.html:12
+msgid "No content found"
+msgstr ""
+
+#: templates/extras/dashboard/widgets/rssfeed.html:18
+msgid "There was a problem fetching the RSS feed"
+msgstr ""
+
+#: templates/extras/dashboard/widgets/rssfeed.html:21
+msgid "HTTP"
+msgstr ""
+
+#: templates/extras/exporttemplate.html:29
+msgid "MIME Type"
+msgstr ""
+
+#: templates/extras/exporttemplate.html:33
+msgid "File Extension"
+msgstr ""
+
+#: templates/extras/htmx/report_result.html:9
+#: templates/extras/htmx/script_result.html:10
+msgid "Scheduled for"
+msgstr ""
+
+#: templates/extras/htmx/report_result.html:14
+#: templates/extras/htmx/script_result.html:15
+msgid "Duration"
+msgstr ""
+
+#: templates/extras/htmx/report_result.html:20
+msgid "Report Methods"
+msgstr ""
+
+#: templates/extras/htmx/report_result.html:38
+msgid "Report Results"
+msgstr ""
+
+#: templates/extras/htmx/report_result.html:44
+#: templates/extras/htmx/script_result.html:26
+msgid "Level"
+msgstr ""
+
+#: templates/extras/htmx/report_result.html:46
+#: templates/extras/htmx/script_result.html:27
+msgid "Message"
+msgstr ""
+
+#: templates/extras/htmx/script_result.html:21
+msgid "Script Log"
+msgstr ""
+
+#: templates/extras/htmx/script_result.html:25
+msgid "Line"
+msgstr ""
+
+#: templates/extras/htmx/script_result.html:38
+msgid "No log output"
+msgstr ""
+
+#: templates/extras/htmx/script_result.html:46
+msgid "Exec Time"
+msgstr ""
+
+#: templates/extras/htmx/script_result.html:46
+msgctxt "Unit of time"
+msgid "seconds"
+msgstr ""
+
+#: templates/extras/htmx/script_result.html:50
+msgid "Output"
+msgstr ""
+
+#: templates/extras/inc/result_pending.html:4
+msgid "Loading"
+msgstr ""
+
+#: templates/extras/inc/result_pending.html:6
+msgid "Results pending"
+msgstr ""
+
+#: templates/extras/journalentry.html:16
+msgid "Journal Entry"
+msgstr ""
+
+#: templates/extras/object_changelog.html:15
+#: templates/extras/objectchange_list.html:9
+msgid "Change log retention"
+msgstr ""
+
+#: templates/extras/object_changelog.html:15
+#: templates/extras/objectchange_list.html:9
+msgid "days"
+msgstr ""
+
+#: templates/extras/object_changelog.html:15
+#: templates/extras/objectchange_list.html:9
+msgid "Indefinite"
+msgstr ""
+
+#: templates/extras/object_configcontext.html:11
+msgid "Rendered Context"
+msgstr ""
+
+#: templates/extras/object_configcontext.html:22
+msgid "Local Context"
+msgstr ""
+
+#: templates/extras/object_configcontext.html:34
+msgid "The local config context overwrites all source contexts"
+msgstr ""
+
+#: templates/extras/object_configcontext.html:40
+msgid "Source Contexts"
+msgstr ""
+
+#: templates/extras/object_journal.html:18
+msgid "New Journal Entry"
+msgstr ""
+
+#: templates/extras/objectchange.html:29
+#: templates/users/objectpermission.html:45
+msgid "Change"
+msgstr ""
+
+#: templates/extras/objectchange.html:84
+msgid "Difference"
+msgstr ""
+
+#: templates/extras/objectchange.html:87
+msgid "Previous"
+msgstr ""
+
+#: templates/extras/objectchange.html:90
+msgid "Next"
+msgstr ""
+
+#: templates/extras/objectchange.html:98
+msgid "Object Created"
+msgstr ""
+
+#: templates/extras/objectchange.html:100
+msgid "Object Deleted"
+msgstr ""
+
+#: templates/extras/objectchange.html:102
+msgid "No Changes"
+msgstr ""
+
+#: templates/extras/objectchange.html:117
+msgid "Pre-Change Data"
+msgstr ""
+
+#: templates/extras/objectchange.html:126
+msgid "Warning: Comparing non-atomic change to previous change record"
+msgstr ""
+
+#: templates/extras/objectchange.html:136
+msgid "Post-Change Data"
+msgstr ""
+
+#: templates/extras/objectchange.html:157
+#, python-format
+msgid "See All %(count)s Changes"
+msgstr ""
+
+#: templates/extras/report.html:14
+msgid "This report is invalid and cannot be run."
+msgstr ""
+
+#: templates/extras/report.html:23 templates/extras/report_list.html:88
+msgid "Run Again"
+msgstr ""
+
+#: templates/extras/report.html:25 templates/extras/report_list.html:90
+msgid "Run Report"
+msgstr ""
+
+#: templates/extras/report.html:36
+msgid "Last run"
+msgstr ""
+
+#: templates/extras/report/base.html:30
+msgid "Report"
+msgstr ""
+
+#: templates/extras/report_list.html:48 templates/extras/script_list.html:54
+msgid "Last Run"
+msgstr ""
+
+#: templates/extras/report_list.html:70 templates/extras/script_list.html:77
+msgid "Never"
+msgstr ""
+
+#: templates/extras/report_list.html:75
+msgid "Report has no test methods"
+msgstr ""
+
+#: templates/extras/report_list.html:76
+msgid "Invalid"
+msgstr ""
+
+#: templates/extras/report_list.html:125
+msgid "No Reports Found"
+msgstr ""
+
+#: templates/extras/report_list.html:128
+#, python-format
+msgid ""
+"Get started by creating a report from "
+"an uploaded file or data source."
+msgstr ""
+
+#: templates/extras/script.html:13
+msgid "You do not have permission to run scripts"
+msgstr ""
+
+#: templates/extras/script.html:37
+msgid "Run Script"
+msgstr ""
+
+#: templates/extras/script/base.html:29
+msgid "Script"
+msgstr ""
+
+#: templates/extras/script_list.html:44
+#, python-format
+msgid ""
+"Script file at %(file_path)s
could not be loaded."
+msgstr ""
+
+#: templates/extras/script_list.html:91
+msgid "No Scripts Found"
+msgstr ""
+
+#: templates/extras/script_list.html:94
+#, python-format
+msgid ""
+"Get started by creating a script from "
+"an uploaded file or data source."
+msgstr ""
+
+#: templates/extras/script_result.html:42
+msgid "Log"
+msgstr ""
+
+#: templates/extras/tag.html:35
+msgid "Tagged Items"
+msgstr ""
+
+#: templates/extras/tag.html:47
+msgid "Allowed Object Types"
+msgstr ""
+
+#: templates/extras/tag.html:56
+msgid "Any"
+msgstr ""
+
+#: templates/extras/tag.html:63
+msgid "Tagged Item Types"
+msgstr ""
+
+#: templates/extras/tag.html:89
+msgid "Tagged Objects"
+msgstr ""
+
+#: templates/extras/webhook.html:45
+msgid "Job start"
+msgstr ""
+
+#: templates/extras/webhook.html:49
+msgid "Job end"
+msgstr ""
+
+#: templates/extras/webhook.html:62
+msgid "HTTP Method"
+msgstr ""
+
+#: templates/extras/webhook.html:70
+msgid "HTTP Content Type"
+msgstr ""
+
+#: templates/extras/webhook.html:87
+msgid "SSL Verification"
+msgstr ""
+
+#: templates/extras/webhook.html:128
+msgid "Additional Headers"
+msgstr ""
+
+#: templates/extras/webhook.html:140
+msgid "Body Template"
+msgstr ""
+
+#: templates/generic/bulk_add_component.html:15
+msgid "Bulk Creation"
+msgstr ""
+
+#: templates/generic/bulk_add_component.html:20
+#: templates/generic/bulk_edit.html:28
+msgid "Selected Objects"
+msgstr ""
+
+#: templates/generic/bulk_add_component.html:46
+msgid "to Add"
+msgstr ""
+
+#: templates/generic/bulk_delete.html:24
+msgid "Confirm Bulk Deletion"
+msgstr ""
+
+#: templates/generic/bulk_delete.html:26
+msgctxt "Noun"
+msgid "Warning"
+msgstr ""
+
+#: templates/generic/bulk_delete.html:27
+#, python-format
+msgid ""
+"The following operation will delete %(count)s "
+"%(type_plural)s. Please carefully review the objects to be deleted and "
+"confirm below."
+msgstr ""
+
+#: templates/generic/bulk_edit.html:16 templates/generic/object_edit.html:17
+msgid "Editing"
+msgstr ""
+
+#: templates/generic/bulk_edit.html:23
+msgid "Bulk Edit"
+msgstr ""
+
+#: templates/generic/bulk_edit.html:124 templates/generic/bulk_rename.html:42
+msgid "Apply"
+msgstr ""
+
+#: templates/generic/bulk_import.html:14
+msgid "Bulk Import"
+msgstr ""
+
+#: templates/generic/bulk_import.html:20
+msgid "Direct Import"
+msgstr ""
+
+#: templates/generic/bulk_import.html:25
+msgid "Upload File"
+msgstr ""
+
+#: templates/generic/bulk_import.html:51 templates/generic/bulk_import.html:73
+#: templates/generic/bulk_import.html:95
+msgid "Submit"
+msgstr ""
+
+#: templates/generic/bulk_import.html:110
+msgid "Field Options"
+msgstr ""
+
+#: templates/generic/bulk_import.html:117
+msgid "Accessor"
+msgstr ""
+
+#: templates/generic/bulk_import.html:154
+msgid "Import Value"
+msgstr ""
+
+#: templates/generic/bulk_import.html:181
+msgid "Format: YYYY-MM-DD"
+msgstr ""
+
+#: templates/generic/bulk_import.html:183
+msgid "Specify true or false"
+msgstr ""
+
+#: templates/generic/bulk_import.html:195
+msgid "Required fields must be specified for all objects."
+msgstr ""
+
+#: 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:13
+msgid "Confirm Bulk Removal"
+msgstr ""
+
+#: templates/generic/bulk_remove.html:15
+#, python-format
+msgid ""
+"Warning: The following operation will remove %(count)s "
+"%(obj_type_plural)s from %(parent_obj)s."
+msgstr ""
+
+#: templates/generic/bulk_remove.html:21
+#, python-format
+msgid ""
+"Please carefully review the %(obj_type_plural)s to be removed and confirm "
+"below."
+msgstr ""
+
+#: templates/generic/bulk_remove.html:38
+#, python-format
+msgid "Delete these %(count)s %(obj_type_plural)s"
+msgstr ""
+
+#: templates/generic/bulk_rename.html:7
+msgid "Renaming"
+msgstr ""
+
+#: templates/generic/bulk_rename.html:16
+msgid "Current Name"
+msgstr ""
+
+#: templates/generic/bulk_rename.html:17
+msgid "New Name"
+msgstr ""
+
+#: templates/generic/bulk_rename.html:40
+#: utilities/templates/widgets/markdown_input.html:11
+msgid "Preview"
+msgstr ""
+
+#: templates/generic/confirmation_form.html:16
+msgid "Are you sure"
+msgstr ""
+
+#: templates/generic/confirmation_form.html:19
+msgid "Confirm"
+msgstr ""
+
+#: templates/generic/object.html:51
+msgid "ago"
+msgstr ""
+
+#: templates/generic/object_children.html:27
+#: utilities/templates/buttons/bulk_edit.html:4
+msgid "Edit Selected"
+msgstr ""
+
+#: templates/generic/object_children.html:41
+#: utilities/templates/buttons/bulk_delete.html:4
+msgid "Delete Selected"
+msgstr ""
+
+#: templates/generic/object_edit.html:19
+#, python-format
+msgid "Add a new %(object_type)s"
+msgstr ""
+
+#: templates/generic/object_edit.html:47
+msgid "View model documentation"
+msgstr ""
+
+#: templates/generic/object_edit.html:48
+msgid "Help"
+msgstr ""
+
+#: templates/generic/object_edit.html:73
+msgid "Create & Add Another"
+msgstr ""
+
+#: templates/generic/object_list.html:48 templates/search.html:13
+msgid "Results"
+msgstr ""
+
+#: templates/generic/object_list.html:54
+msgid "Filters"
+msgstr ""
+
+#: templates/generic/object_list.html:94
+#, python-format
+msgid ""
+"Select all %(count)s %(object_type_plural)s matching query"
+msgstr ""
+
+#: templates/home.html:12
+msgid "New Release Available"
+msgstr ""
+
+#: templates/home.html:14
+msgid "is available"
+msgstr ""
+
+#: templates/home.html:17
+msgctxt "Document title"
+msgid "Upgrade Instructions"
+msgstr ""
+
+#: templates/home.html:37
+msgid "Unlock Dashboard"
+msgstr ""
+
+#: templates/home.html:46
+msgid "Lock Dashboard"
+msgstr ""
+
+#: templates/home.html:57
+msgid "Add Widget"
+msgstr ""
+
+#: templates/home.html:60
+msgid "Save Layout"
+msgstr ""
+
+#: templates/htmx/delete_form.html:7
+msgid "Confirm Deletion"
+msgstr ""
+
+#: templates/htmx/delete_form.html:11
+#, python-format
+msgid ""
+"Are you sure you want to delete "
+"%(object_type)s %(object)s?"
+msgstr ""
+
+#: templates/htmx/object_selector.html:5
+msgid "Select"
+msgstr ""
+
+#: templates/inc/filter_list.html:50
+#: utilities/templates/helpers/table_config_form.html:39
+msgid "Reset"
+msgstr ""
+
+#: templates/inc/missing_prerequisites.html:7
+#, python-format
+msgid ""
+"Before you can add a %(model)s you must first create a "
+"%(prerequisite_model)s."
+msgstr ""
+
+#: templates/inc/paginator.html:38 templates/inc/paginator_htmx.html:53
+msgid "Per Page"
+msgstr ""
+
+#: templates/inc/paginator.html:49 templates/inc/paginator_htmx.html:69
+#, python-format
+msgid "Showing %(start)s-%(end)s of %(total)s"
+msgstr ""
+
+#: templates/inc/panels/image_attachments.html:10
+msgid "Attach an image"
+msgstr ""
+
+#: templates/inc/panels/related_objects.html:5
+msgid "Related Objects"
+msgstr ""
+
+#: templates/inc/panels/tags.html:11
+msgid "No tags assigned"
+msgstr ""
+
+#: templates/inc/profile_button.html:12 templates/inc/profile_button.html:62
+msgid "Dark Mode"
+msgstr ""
+
+#: templates/inc/profile_button.html:45
+msgid "Log Out"
+msgstr ""
+
+#: templates/inc/profile_button.html:53
+msgid "Log In"
+msgstr ""
+
+#: templates/inc/sync_warning.html:7
+msgid "Data is out of sync with upstream file"
+msgstr ""
+
+#: templates/inc/table_controls_htmx.html:16
+#: templates/inc/table_controls_htmx.html:18
+msgid "Configure Table"
+msgstr ""
+
+#: templates/ipam/aggregate.html:15 templates/ipam/ipaddress.html:17
+#: templates/ipam/iprange.html:16 templates/ipam/prefix.html:15
+msgid "Family"
+msgstr ""
+
+#: templates/ipam/aggregate.html:40
+msgid "Date Added"
+msgstr ""
+
+#: templates/ipam/aggregate/prefixes.html:8
+#: templates/ipam/prefix/prefixes.html:8 templates/ipam/role.html:10
+msgid "Add Prefix"
+msgstr ""
+
+#: templates/ipam/asn.html:24
+msgid "AS Number"
+msgstr ""
+
+#: templates/ipam/fhrpgroup.html:55
+msgid "Authentication Type"
+msgstr ""
+
+#: templates/ipam/fhrpgroup.html:59
+msgid "Authentication Key"
+msgstr ""
+
+#: templates/ipam/fhrpgroup.html:72
+msgid "Virtual IP Addresses"
+msgstr ""
+
+#: templates/ipam/fhrpgroupassignment_edit.html:8
+msgid "FHRP Group Assignment"
+msgstr ""
+
+#: templates/ipam/inc/ipaddress_edit_header.html:19
+msgid "Assign IP"
+msgstr ""
+
+#: templates/ipam/inc/ipaddress_edit_header.html:28
+msgid "Bulk Create"
+msgstr ""
+
+#: templates/ipam/inc/panels/fhrp_groups.html:12
+msgid "Virtual IPs"
+msgstr ""
+
+#: templates/ipam/inc/panels/fhrp_groups.html:52
+msgid "Create Group"
+msgstr ""
+
+#: templates/ipam/inc/panels/fhrp_groups.html:57
+msgid "Assign Group"
+msgstr ""
+
+#: templates/ipam/inc/toggle_available.html:7
+msgid "Show Assigned"
+msgstr ""
+
+#: templates/ipam/inc/toggle_available.html:10
+msgid "Show Available"
+msgstr ""
+
+#: templates/ipam/inc/toggle_available.html:13
+msgid "Show All"
+msgstr ""
+
+#: templates/ipam/ipaddress.html:26 templates/ipam/iprange.html:48
+#: templates/ipam/prefix.html:24
+msgid "Global"
+msgstr ""
+
+#: templates/ipam/ipaddress.html:88
+msgid "NAT (outside)"
+msgstr ""
+
+#: templates/ipam/ipaddress_assign.html:8
+msgid "Assign an IP Address"
+msgstr ""
+
+#: templates/ipam/ipaddress_assign.html:23
+msgid "Select IP Address"
+msgstr ""
+
+#: templates/ipam/ipaddress_assign.html:39
+msgid "Search Results"
+msgstr ""
+
+#: templates/ipam/ipaddress_bulk_add.html:6
+msgid "Bulk Add IP Addresses"
+msgstr ""
+
+#: templates/ipam/ipaddress_edit.html:35
+msgid "Interface Assignment"
+msgstr ""
+
+#: templates/ipam/ipaddress_edit.html:74
+msgid "NAT IP (Inside"
+msgstr ""
+
+#: templates/ipam/iprange.html:20
+msgid "Starting Address"
+msgstr ""
+
+#: templates/ipam/iprange.html:24
+msgid "Ending Address"
+msgstr ""
+
+#: templates/ipam/iprange.html:36 templates/ipam/prefix.html:104
+msgid "Marked fully utilized"
+msgstr ""
+
+#: templates/ipam/l2vpn.html:11 templates/ipam/l2vpntermination.html:10
+msgid "L2VPN Attributes"
+msgstr ""
+
+#: templates/ipam/l2vpn.html:65
+msgid "Add a Termination"
+msgstr ""
+
+#: templates/ipam/l2vpntermination_edit.html:9
+msgid "L2VPN Termination"
+msgstr ""
+
+#: templates/ipam/prefix.html:112
+msgid "Child IPs"
+msgstr ""
+
+#: templates/ipam/prefix.html:120
+msgid "Available IPs"
+msgstr ""
+
+#: templates/ipam/prefix.html:132
+msgid "First available IP"
+msgstr ""
+
+#: templates/ipam/prefix.html:151
+msgid "Addressing Details"
+msgstr ""
+
+#: templates/ipam/prefix.html:181
+msgid "Prefix Details"
+msgstr ""
+
+#: templates/ipam/prefix.html:187
+msgid "Network Address"
+msgstr ""
+
+#: templates/ipam/prefix.html:191
+msgid "Network Mask"
+msgstr ""
+
+#: templates/ipam/prefix.html:195
+msgid "Wildcard Mask"
+msgstr ""
+
+#: templates/ipam/prefix.html:199
+msgid "Broadcast Address"
+msgstr ""
+
+#: templates/ipam/prefix/ip_ranges.html:7
+msgid "Add IP Range"
+msgstr ""
+
+#: templates/ipam/prefix_list.html:7
+msgid "Hide Depth Indicators"
+msgstr ""
+
+#: templates/ipam/prefix_list.html:11
+msgid "Max Depth"
+msgstr ""
+
+#: templates/ipam/prefix_list.html:28
+msgid "Max Length"
+msgstr ""
+
+#: templates/ipam/rir.html:10
+msgid "Add Aggregate"
+msgstr ""
+
+#: templates/ipam/routetarget.html:10
+msgid "Route Target"
+msgstr ""
+
+#: templates/ipam/routetarget.html:40
+msgid "Importing VRFs"
+msgstr ""
+
+#: templates/ipam/routetarget.html:49
+msgid "Exporting VRFs"
+msgstr ""
+
+#: templates/ipam/routetarget.html:60
+msgid "Importing L2VPNs"
+msgstr ""
+
+#: templates/ipam/routetarget.html:69
+msgid "Exporting L2VPNs"
+msgstr ""
+
+#: templates/ipam/service.html:22 templates/ipam/service_create.html:8
+#: templates/ipam/service_edit.html:8
+msgid "Service"
+msgstr ""
+
+#: templates/ipam/service_create.html:43
+msgid "From Template"
+msgstr ""
+
+#: templates/ipam/service_create.html:48
+msgid "Custom"
+msgstr ""
+
+#: templates/ipam/service_edit.html:37
+msgid "Port(s)"
+msgstr ""
+
+#: templates/ipam/vlan.html:95
+msgid "Add a Prefix"
+msgstr ""
+
+#: templates/ipam/vlangroup.html:18
+msgid "Add VLAN"
+msgstr ""
+
+#: templates/ipam/vlangroup.html:43
+msgid "Permitted VIDs"
+msgstr ""
+
+#: templates/ipam/vrf.html:19
+msgid "Route Distinguisher"
+msgstr ""
+
+#: templates/ipam/vrf.html:32
+msgid "Unique IP Space"
+msgstr ""
+
+#: templates/login.html:20
+#: utilities/templates/form_helpers/render_errors.html:7
+msgid "Errors"
+msgstr ""
+
+#: templates/login.html:48
+msgid "Sign In"
+msgstr ""
+
+#: templates/login.html:54
+msgid "Or use a single sign-on (SSO) provider"
+msgstr ""
+
+#: templates/login.html:68
+msgid "Toggle Color Mode"
+msgstr ""
+
+#: templates/media_failure.html:7
+msgid "Static Media Failure - NetBox"
+msgstr ""
+
+#: templates/media_failure.html:21
+msgid "Static Media Failure"
+msgstr ""
+
+#: templates/media_failure.html:23
+msgid "The following static media file failed to load"
+msgstr ""
+
+#: templates/media_failure.html:26
+msgid "Check the following"
+msgstr ""
+
+#: 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
+#, python-format
+msgid ""
+"The HTTP service (e.g. nginx or Apache) is configured to serve files from "
+"the STATIC_ROOT
path. Refer to the "
+"installation documentation for further guidance."
+msgstr ""
+
+#: 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
+#, python-format
+msgid ""
+"Click here to attempt loading NetBox again."
+msgstr ""
+
+#: templates/tenancy/contact.html:18 tenancy/filtersets.py:123
+#: tenancy/forms/bulk_edit.py:136 tenancy/forms/filtersets.py:103
+#: tenancy/forms/forms.py:56 tenancy/forms/model_forms.py:112
+#: tenancy/forms/model_forms.py:135 tenancy/tables/contacts.py:98
+msgid "Contact"
+msgstr ""
+
+#: templates/tenancy/contact.html:30 tenancy/forms/bulk_edit.py:98
+msgid "Title"
+msgstr ""
+
+#: templates/tenancy/contact.html:34 tenancy/forms/bulk_edit.py:103
+#: tenancy/tables/contacts.py:64
+msgid "Phone"
+msgstr ""
+
+#: templates/tenancy/contact.html:86 tenancy/tables/contacts.py:73
+msgid "Assignments"
+msgstr ""
+
+#: templates/tenancy/contactassignment_edit.html:12
+msgid "Contact Assignment"
+msgstr ""
+
+#: templates/tenancy/contactgroup.html:19 tenancy/forms/forms.py:66
+#: tenancy/forms/model_forms.py:79
+msgid "Contact Group"
+msgstr ""
+
+#: templates/tenancy/contactgroup.html:57
+msgid "Add Contact Group"
+msgstr ""
+
+#: templates/tenancy/contactrole.html:15 tenancy/filtersets.py:128
+#: tenancy/forms/forms.py:61 tenancy/forms/model_forms.py:93
+msgid "Contact Role"
+msgstr ""
+
+#: templates/tenancy/object_contacts.html:9
+msgid "Add a contact"
+msgstr ""
+
+#: templates/tenancy/tenantgroup.html:17
+msgid "Add Tenant"
+msgstr ""
+
+#: templates/tenancy/tenantgroup.html:27 tenancy/forms/model_forms.py:34
+#: tenancy/tables/columns.py:51 tenancy/tables/columns.py:61
+msgid "Tenant Group"
+msgstr ""
+
+#: templates/tenancy/tenantgroup.html:66
+msgid "Add Tenant Group"
+msgstr ""
+
+#: templates/users/group.html:37 templates/users/user.html:61
+msgid "Assigned Permissions"
+msgstr ""
+
+#: templates/users/objectpermission.html:6
+#: templates/users/objectpermission.html:14 users/forms/filtersets.py:69
+msgid "Permission"
+msgstr ""
+
+#: templates/users/objectpermission.html:33 users/forms/filtersets.py:70
+#: users/forms/model_forms.py:321
+msgid "Actions"
+msgstr ""
+
+#: templates/users/objectpermission.html:37
+msgid "View"
+msgstr ""
+
+#: templates/users/objectpermission.html:56 users/forms/model_forms.py:324
+msgid "Constraints"
+msgstr ""
+
+#: templates/users/objectpermission.html:76
+msgid "Assigned Users"
+msgstr ""
+
+#: templates/users/user.html:38
+msgid "Staff"
+msgstr ""
+
+#: templates/virtualization/cluster.html:56
+msgid "Allocated Resources"
+msgstr ""
+
+#: templates/virtualization/cluster.html:60
+#: templates/virtualization/virtualmachine.html:128
+msgid "Virtual CPUs"
+msgstr ""
+
+#: templates/virtualization/cluster.html:64
+#: templates/virtualization/virtualmachine.html:132
+msgid "Memory"
+msgstr ""
+
+#: templates/virtualization/cluster.html:74
+#: templates/virtualization/virtualmachine.html:142
+msgid "Disk Space"
+msgstr ""
+
+#: templates/virtualization/cluster.html:77
+#: templates/virtualization/virtualmachine.html:145
+msgctxt "Abbreviation for gigabyte"
+msgid "GB"
+msgstr ""
+
+#: templates/virtualization/cluster/base.html:18
+msgid "Add Virtual Machine"
+msgstr ""
+
+#: templates/virtualization/cluster/base.html:24
+msgid "Assign Device"
+msgstr ""
+
+#: templates/virtualization/cluster/devices.html:10
+msgid "Remove Selected"
+msgstr ""
+
+#: templates/virtualization/cluster_add_devices.html:9
+#, python-format
+msgid "Add Device to Cluster %(cluster)s"
+msgstr ""
+
+#: templates/virtualization/cluster_add_devices.html:23
+msgid "Device Selection"
+msgstr ""
+
+#: templates/virtualization/cluster_add_devices.html:31
+msgid "Add Devices"
+msgstr ""
+
+#: templates/virtualization/clustergroup.html:10
+#: templates/virtualization/clustertype.html:10
+msgid "Add Cluster"
+msgstr ""
+
+#: templates/virtualization/clustergroup.html:20
+#: virtualization/forms/model_forms.py:50
+msgid "Cluster Group"
+msgstr ""
+
+#: templates/virtualization/clustertype.html:20
+#: templates/virtualization/virtualmachine.html:111
+#: virtualization/forms/model_forms.py:34
+msgid "Cluster Type"
+msgstr ""
+
+#: templates/virtualization/virtualmachine.html:124
+#: virtualization/forms/bulk_edit.py:187
+#: virtualization/forms/model_forms.py:225
+msgid "Resources"
+msgstr ""
+
+#: templates/wireless/inc/authentication_attrs.html:13
+msgid "Cipher"
+msgstr ""
+
+#: templates/wireless/inc/authentication_attrs.html:17
+msgid "PSK"
+msgstr ""
+
+#: templates/wireless/inc/authentication_attrs.html:21
+msgid "Show Secret"
+msgstr ""
+
+#: templates/wireless/inc/wirelesslink_interface.html:35
+#: templates/wireless/inc/wirelesslink_interface.html:45
+msgctxt "Abbreviation for megahertz"
+msgid "MHz"
+msgstr ""
+
+#: templates/wireless/wirelesslan.html:11 wireless/forms/model_forms.py:54
+msgid "Wireless LAN"
+msgstr ""
+
+#: templates/wireless/wirelesslan.html:59
+msgid "Attached Interfaces"
+msgstr ""
+
+#: templates/wireless/wirelesslangroup.html:17
+msgid "Add Wireless LAN"
+msgstr ""
+
+#: templates/wireless/wirelesslangroup.html:26 wireless/forms/model_forms.py:27
+msgid "Wireless LAN Group"
+msgstr ""
+
+#: templates/wireless/wirelesslangroup.html:64
+msgid "Add Wireless LAN Group"
+msgstr ""
+
+#: templates/wireless/wirelesslink.html:16
+msgid "Link Properties"
+msgstr ""
+
+#: tenancy/choices.py:19
+msgid "Tertiary"
+msgstr ""
+
+#: tenancy/choices.py:20
+msgid "Inactive"
+msgstr ""
+
+#: tenancy/filtersets.py:30 tenancy/filtersets.py:56
+msgid "Contact group (ID)"
+msgstr ""
+
+#: tenancy/filtersets.py:36 tenancy/filtersets.py:63
+msgid "Contact group (slug)"
+msgstr ""
+
+#: tenancy/filtersets.py:92
+msgid "Contact (ID)"
+msgstr ""
+
+#: tenancy/filtersets.py:96
+msgid "Contact role (ID)"
+msgstr ""
+
+#: tenancy/filtersets.py:102
+msgid "Contact role (slug)"
+msgstr ""
+
+#: tenancy/filtersets.py:134
+msgid "Contact group"
+msgstr ""
+
+#: tenancy/filtersets.py:145 tenancy/filtersets.py:164
+msgid "Tenant group (ID)"
+msgstr ""
+
+#: tenancy/filtersets.py:197
+msgid "Tenant Group (ID)"
+msgstr ""
+
+#: tenancy/filtersets.py:204
+msgid "Tenant Group (slug)"
+msgstr ""
+
+#: tenancy/forms/bulk_edit.py:65
+msgid "Desciption"
+msgstr ""
+
+#: tenancy/forms/bulk_import.py:101
+msgid "Assigned contact"
+msgstr ""
+
+#: tenancy/models/contacts.py:31
+msgid "contact group"
+msgstr ""
+
+#: tenancy/models/contacts.py:32
+msgid "contact groups"
+msgstr ""
+
+#: tenancy/models/contacts.py:47
+msgid "contact role"
+msgstr ""
+
+#: tenancy/models/contacts.py:48
+msgid "contact roles"
+msgstr ""
+
+#: tenancy/models/contacts.py:67
+msgid "title"
+msgstr ""
+
+#: tenancy/models/contacts.py:72
+msgid "phone"
+msgstr ""
+
+#: tenancy/models/contacts.py:77
+msgid "email"
+msgstr ""
+
+#: tenancy/models/contacts.py:86
+msgid "link"
+msgstr ""
+
+#: tenancy/models/contacts.py:102
+msgid "contact"
+msgstr ""
+
+#: tenancy/models/contacts.py:103
+msgid "contacts"
+msgstr ""
+
+#: tenancy/models/contacts.py:149
+msgid "contact assignment"
+msgstr ""
+
+#: tenancy/models/contacts.py:150
+msgid "contact assignments"
+msgstr ""
+
+#: tenancy/models/tenants.py:32
+msgid "tenant group"
+msgstr ""
+
+#: tenancy/models/tenants.py:33
+msgid "tenant groups"
+msgstr ""
+
+#: tenancy/models/tenants.py:70
+msgid "Tenant name must be unique per group."
+msgstr ""
+
+#: tenancy/models/tenants.py:80
+msgid "Tenant slug must be unique per group."
+msgstr ""
+
+#: tenancy/models/tenants.py:88
+msgid "tenant"
+msgstr ""
+
+#: tenancy/models/tenants.py:89
+msgid "tenants"
+msgstr ""
+
+#: tenancy/tables/contacts.py:107
+msgid "Contact Title"
+msgstr ""
+
+#: tenancy/tables/contacts.py:111
+msgid "Contact Phone"
+msgstr ""
+
+#: tenancy/tables/contacts.py:115
+msgid "Contact Email"
+msgstr ""
+
+#: tenancy/tables/contacts.py:119
+msgid "Contact Address"
+msgstr ""
+
+#: tenancy/tables/contacts.py:123
+msgid "Contact Link"
+msgstr ""
+
+#: tenancy/tables/contacts.py:127
+msgid "Contact Description"
+msgstr ""
+
+#: users/filtersets.py:48 users/filtersets.py:151
+msgid "Group (name)"
+msgstr ""
+
+#: users/forms/bulk_edit.py:24
+msgid "First name"
+msgstr ""
+
+#: users/forms/bulk_edit.py:29
+msgid "Last name"
+msgstr ""
+
+#: users/forms/bulk_edit.py:41
+msgid "Staff status"
+msgstr ""
+
+#: users/forms/bulk_edit.py:46
+msgid "Superuser status"
+msgstr ""
+
+#: users/forms/bulk_import.py:43
+msgid "If no key is provided, one will be generated automatically."
+msgstr ""
+
+#: users/forms/filtersets.py:54 users/tables.py:42
+msgid "Is Staff"
+msgstr ""
+
+#: users/forms/filtersets.py:61 users/tables.py:45
+msgid "Is Superuser"
+msgstr ""
+
+#: users/forms/filtersets.py:94 users/tables.py:89
+msgid "Can View"
+msgstr ""
+
+#: users/forms/filtersets.py:101 users/tables.py:92
+msgid "Can Add"
+msgstr ""
+
+#: users/forms/filtersets.py:108 users/tables.py:95
+msgid "Can Change"
+msgstr ""
+
+#: users/forms/filtersets.py:115 users/tables.py:98
+msgid "Can Delete"
+msgstr ""
+
+#: users/forms/model_forms.py:58
+msgid "User Interface"
+msgstr ""
+
+#: 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
+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
+msgid "Confirm password"
+msgstr ""
+
+#: users/forms/model_forms.py:179
+msgid "Enter the same password as before, for verification."
+msgstr ""
+
+#: users/forms/model_forms.py:237
+msgid "Passwords do not match! Please check your input and try again."
+msgstr ""
+
+#: users/forms/model_forms.py:303
+msgid "Additional actions"
+msgstr ""
+
+#: users/forms/model_forms.py:306
+msgid "Actions granted in addition to those listed above"
+msgstr ""
+
+#: users/forms/model_forms.py:322
+msgid "Objects"
+msgstr ""
+
+#: users/forms/model_forms.py:334
+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:372
+msgid "At least one action must be selected."
+msgstr ""
+
+#: users/forms/model_forms.py:389
+#, python-brace-format
+msgid "Invalid filter for {model}: {error}"
+msgstr ""
+
+#: users/models.py:54
+msgid "user"
+msgstr ""
+
+#: users/models.py:55
+msgid "users"
+msgstr ""
+
+#: users/models.py:66
+msgid "A user with this username already exists."
+msgstr ""
+
+#: users/models.py:78
+msgid "group"
+msgstr ""
+
+#: users/models.py:79
+msgid "groups"
+msgstr ""
+
+#: users/models.py:104 users/models.py:105
+msgid "user preferences"
+msgstr ""
+
+#: users/models.py:172
+#, python-brace-format
+msgid "Key '{path}' is a leaf node; cannot assign new keys"
+msgstr ""
+
+#: users/models.py:184
+#, python-brace-format
+msgid "Key '{path}' is a dictionary; cannot assign a non-dictionary value"
+msgstr ""
+
+#: users/models.py:249
+msgid "expires"
+msgstr ""
+
+#: users/models.py:254
+msgid "last used"
+msgstr ""
+
+#: users/models.py:259
+msgid "key"
+msgstr ""
+
+#: users/models.py:265
+msgid "write enabled"
+msgstr ""
+
+#: users/models.py:267
+msgid "Permit create/update/delete operations using this key"
+msgstr ""
+
+#: users/models.py:278
+msgid "allowed IPs"
+msgstr ""
+
+#: users/models.py:280
+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.py:288
+msgid "token"
+msgstr ""
+
+#: users/models.py:289
+msgid "tokens"
+msgstr ""
+
+#: users/models.py:370
+msgid "The list of actions granted by this permission"
+msgstr ""
+
+#: users/models.py:375
+msgid "constraints"
+msgstr ""
+
+#: users/models.py:376
+msgid "Queryset filter matching the applicable objects of the selected type(s)"
+msgstr ""
+
+#: users/models.py:383
+msgid "permission"
+msgstr ""
+
+#: users/models.py:384
+msgid "permissions"
+msgstr ""
+
+#: users/tables.py:101
+msgid "Custom Actions"
+msgstr ""
+
+#: utilities/choices.py:16
+#, python-brace-format
+msgid "{name} has a key defined but CHOICES is not a list"
+msgstr ""
+
+#: utilities/choices.py:135
+msgid "Dark Red"
+msgstr ""
+
+#: utilities/choices.py:138
+msgid "Rose"
+msgstr ""
+
+#: utilities/choices.py:139
+msgid "Fuchsia"
+msgstr ""
+
+#: utilities/choices.py:141
+msgid "Dark Purple"
+msgstr ""
+
+#: utilities/choices.py:144
+msgid "Light Blue"
+msgstr ""
+
+#: utilities/choices.py:147
+msgid "Aqua"
+msgstr ""
+
+#: utilities/choices.py:148
+msgid "Dark Green"
+msgstr ""
+
+#: utilities/choices.py:150
+msgid "Light Green"
+msgstr ""
+
+#: utilities/choices.py:151
+msgid "Lime"
+msgstr ""
+
+#: utilities/choices.py:153
+msgid "Amber"
+msgstr ""
+
+#: utilities/choices.py:155
+msgid "Dark Orange"
+msgstr ""
+
+#: utilities/choices.py:156
+msgid "Brown"
+msgstr ""
+
+#: utilities/choices.py:157
+msgid "Light Grey"
+msgstr ""
+
+#: utilities/choices.py:158
+msgid "Grey"
+msgstr ""
+
+#: utilities/choices.py:159
+msgid "Dark Grey"
+msgstr ""
+
+#: utilities/choices.py:217
+msgid "Direct"
+msgstr ""
+
+#: utilities/choices.py:218
+msgid "Upload"
+msgstr ""
+
+#: utilities/choices.py:230 utilities/choices.py:244
+msgid "Auto-detect"
+msgstr ""
+
+#: utilities/choices.py:245
+msgid "Comma"
+msgstr ""
+
+#: utilities/choices.py:246
+msgid "Semicolon"
+msgstr ""
+
+#: utilities/choices.py:247
+msgid "Tab"
+msgstr ""
+
+#: utilities/fields.py:162
+#, 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:172
+#, 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:24
+msgid "Enter object data in CSV, JSON or YAML format."
+msgstr ""
+
+#: utilities/forms/bulk_import.py:37
+msgid "CSV delimiter"
+msgstr ""
+
+#: utilities/forms/bulk_import.py:38
+msgid "The character which delimits CSV fields. Applies only to CSV format."
+msgstr ""
+
+#: utilities/forms/bulk_import.py:101
+msgid "Unable to detect data format. Please specify."
+msgstr ""
+
+#: utilities/forms/bulk_import.py:124
+msgid "Invalid CSV delimiter"
+msgstr ""
+
+#: utilities/forms/bulk_import.py:168
+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
+#, python-brace-format
+msgid ""
+"Invalid list ({value}). Must be numeric and ranges must be in ascending "
+"order."
+msgstr ""
+
+#: 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
+#, python-format
+msgid "Object not found: %(value)s"
+msgstr ""
+
+#: 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
+msgid "Object type must be specified as \"[ge,xe]-0/0/[0-9]"
+"code>)."
+msgstr ""
+
+#: 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
+#, python-brace-format
+msgid ""
+" Markdown syntax is supported"
+msgstr ""
+
+#: utilities/forms/fields/fields.py:48
+msgid "URL-friendly unique shorthand"
+msgstr ""
+
+#: utilities/forms/fields/fields.py:99
+msgid "Enter context data in JSON format."
+msgstr ""
+
+#: utilities/forms/fields/fields.py:117
+msgid "MAC address must be in EUI-48 format"
+msgstr ""
+
+#: utilities/forms/forms.py:53
+msgid "Use regular expressions"
+msgstr ""
+
+#: utilities/forms/forms.py:87
+#, python-brace-format
+msgid "Unrecognized header: {name}"
+msgstr ""
+
+#: utilities/forms/forms.py:113
+msgid "Available Columns"
+msgstr ""
+
+#: utilities/forms/forms.py:121
+msgid "Selected Columns"
+msgstr ""
+
+#: utilities/forms/mixins.py:101
+msgid ""
+"This object has been modified since the form was rendered. Please consult "
+"the object's change log for details."
+msgstr ""
+
+#: utilities/templates/builtins/customfield_value.html:30
+msgid "Not defined"
+msgstr ""
+
+#: utilities/templates/buttons/bookmark.html:9
+msgid "Unbookmark"
+msgstr ""
+
+#: utilities/templates/buttons/bookmark.html:13
+msgid "Bookmark"
+msgstr ""
+
+#: utilities/templates/buttons/clone.html:4
+msgid "Clone"
+msgstr ""
+
+#: utilities/templates/buttons/export.html:4
+msgid "Export"
+msgstr ""
+
+#: utilities/templates/buttons/export.html:7
+msgid "Current View"
+msgstr ""
+
+#: utilities/templates/buttons/export.html:8
+msgid "All Data"
+msgstr ""
+
+#: utilities/templates/buttons/export.html:28
+msgid "Add export template"
+msgstr ""
+
+#: utilities/templates/buttons/import.html:4
+msgid "Import"
+msgstr ""
+
+#: utilities/templates/form_helpers/render_field.html:36
+msgid "Copy to clipboard"
+msgstr ""
+
+#: utilities/templates/form_helpers/render_field.html:52
+msgid "This field is required"
+msgstr ""
+
+#: utilities/templates/form_helpers/render_field.html:65
+msgid "Set Null"
+msgstr ""
+
+#: utilities/templates/helpers/applied_filters.html:11
+msgid "Clear all"
+msgstr ""
+
+#: utilities/templates/helpers/table_config_form.html:8
+msgid "Table Configuration"
+msgstr ""
+
+#: utilities/templates/helpers/table_config_form.html:31
+msgid "Move Up"
+msgstr ""
+
+#: utilities/templates/helpers/table_config_form.html:34
+msgid "Move Down"
+msgstr ""
+
+#: utilities/templates/widgets/apiselect.html:7
+msgid "Open selector"
+msgstr ""
+
+#: utilities/templates/widgets/clearable_file_input.html:12
+msgid "None assigned"
+msgstr ""
+
+#: utilities/templates/widgets/markdown_input.html:6
+msgid "Write"
+msgstr ""
+
+#: utilities/templates/widgets/markdown_input.html:20
+msgid "Testing"
+msgstr ""
+
+#: virtualization/filtersets.py:77
+msgid "Parent group (ID)"
+msgstr ""
+
+#: virtualization/filtersets.py:83
+msgid "Parent group (slug)"
+msgstr ""
+
+#: virtualization/filtersets.py:87 virtualization/filtersets.py:137
+msgid "Cluster type (ID)"
+msgstr ""
+
+#: virtualization/filtersets.py:126
+msgid "Cluster group (ID)"
+msgstr ""
+
+#: virtualization/filtersets.py:147 virtualization/filtersets.py:262
+msgid "Cluster (ID)"
+msgstr ""
+
+#: virtualization/forms/bulk_edit.py:163
+#: virtualization/models/virtualmachines.py:112
+msgid "vCPUs"
+msgstr ""
+
+#: virtualization/forms/bulk_edit.py:167
+msgid "Memory (MB)"
+msgstr ""
+
+#: virtualization/forms/bulk_edit.py:171
+msgid "Disk (GB)"
+msgstr ""
+
+#: virtualization/forms/bulk_import.py:43
+msgid "Type of cluster"
+msgstr ""
+
+#: virtualization/forms/bulk_import.py:50
+msgid "Assigned cluster group"
+msgstr ""
+
+#: virtualization/forms/bulk_import.py:95
+msgid "Assigned cluster"
+msgstr ""
+
+#: virtualization/forms/bulk_import.py:102
+msgid "Assigned device within cluster"
+msgstr ""
+
+#: virtualization/forms/model_forms.py:155
+#, python-brace-format
+msgid ""
+"{device} belongs to a different site ({device_site}) than the cluster "
+"({cluster_site})"
+msgstr ""
+
+#: virtualization/forms/model_forms.py:194
+msgid "Optionally pin this VM to a specific host device within the cluster"
+msgstr ""
+
+#: virtualization/forms/model_forms.py:222
+msgid "Site/Cluster"
+msgstr ""
+
+#: virtualization/models/clusters.py:25
+msgid "cluster type"
+msgstr ""
+
+#: virtualization/models/clusters.py:26
+msgid "cluster types"
+msgstr ""
+
+#: virtualization/models/clusters.py:45
+msgid "cluster group"
+msgstr ""
+
+#: virtualization/models/clusters.py:46
+msgid "cluster groups"
+msgstr ""
+
+#: virtualization/models/clusters.py:121
+msgid "cluster"
+msgstr ""
+
+#: virtualization/models/clusters.py:122
+msgid "clusters"
+msgstr ""
+
+#: 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:120
+msgid "memory (MB)"
+msgstr ""
+
+#: virtualization/models/virtualmachines.py:125
+msgid "disk (GB)"
+msgstr ""
+
+#: virtualization/models/virtualmachines.py:154
+msgid "Virtual machine name must be unique per cluster."
+msgstr ""
+
+#: virtualization/models/virtualmachines.py:157
+msgid "virtual machine"
+msgstr ""
+
+#: virtualization/models/virtualmachines.py:158
+msgid "virtual machines"
+msgstr ""
+
+#: virtualization/models/virtualmachines.py:172
+msgid "A virtual machine must be assigned to a site and/or cluster."
+msgstr ""
+
+#: virtualization/models/virtualmachines.py:179
+#, python-brace-format
+msgid "The selected cluster ({cluster}) is not assigned to this site ({site})."
+msgstr ""
+
+#: virtualization/models/virtualmachines.py:186
+msgid "Must specify a cluster when assigning a host device."
+msgstr ""
+
+#: virtualization/models/virtualmachines.py:191
+#, python-brace-format
+msgid ""
+"The selected device ({device}) is not assigned to this cluster ({cluster})."
+msgstr ""
+
+#: virtualization/models/virtualmachines.py:204
+#, python-brace-format
+msgid "Must be an IPv{family} address. ({ip} is an IPv{version} address.)"
+msgstr ""
+
+#: virtualization/models/virtualmachines.py:213
+#, python-brace-format
+msgid "The specified IP address ({ip}) is not assigned to this VM."
+msgstr ""
+
+#: virtualization/models/virtualmachines.py:331
+#, python-brace-format
+msgid ""
+"The selected parent interface ({parent}) belongs to a different virtual "
+"machine ({virtual_machine})."
+msgstr ""
+
+#: virtualization/models/virtualmachines.py:346
+#, python-brace-format
+msgid ""
+"The selected bridge interface ({bridge}) belongs to a different virtual "
+"machine ({virtual_machine})."
+msgstr ""
+
+#: virtualization/models/virtualmachines.py:357
+#, 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 ""
+
+#: wireless/choices.py:11
+msgid "Access point"
+msgstr ""
+
+#: wireless/choices.py:12
+msgid "Station"
+msgstr ""
+
+#: wireless/choices.py:467
+msgid "Open"
+msgstr ""
+
+#: wireless/choices.py:469
+msgid "WPA Personal (PSK)"
+msgstr ""
+
+#: wireless/choices.py:470
+msgid "WPA Enterprise"
+msgstr ""
+
+#: wireless/forms/bulk_edit.py:72 wireless/forms/bulk_edit.py:119
+#: 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:58 wireless/forms/filtersets.py:92
+msgid "Authentication cipher"
+msgstr ""
+
+#: wireless/forms/bulk_edit.py:78 wireless/forms/bulk_edit.py:125
+#: wireless/forms/filtersets.py:63 wireless/forms/filtersets.py:97
+msgid "Pre-shared key"
+msgstr ""
+
+#: wireless/forms/bulk_import.py:52
+msgid "Bridged VLAN"
+msgstr ""
+
+#: wireless/forms/bulk_import.py:89 wireless/tables/wirelesslink.py:27
+msgid "Interface A"
+msgstr ""
+
+#: wireless/forms/bulk_import.py:93 wireless/tables/wirelesslink.py:36
+msgid "Interface B"
+msgstr ""
+
+#: wireless/forms/model_forms.py:158
+msgid "Side B"
+msgstr ""
+
+#: wireless/models.py:30
+msgid "authentication cipher"
+msgstr ""
+
+#: wireless/models.py:38
+msgid "pre-shared key"
+msgstr ""
+
+#: wireless/models.py:68
+msgid "wireless LAN group"
+msgstr ""
+
+#: wireless/models.py:69
+msgid "wireless LAN groups"
+msgstr ""
+
+#: wireless/models.py:115
+msgid "wireless LAN"
+msgstr ""
+
+#: wireless/models.py:143
+msgid "interface A"
+msgstr ""
+
+#: wireless/models.py:150
+msgid "interface B"
+msgstr ""
+
+#: wireless/models.py:198
+msgid "wireless link"
+msgstr ""
+
+#: wireless/models.py:199
+msgid "wireless links"
+msgstr ""
+
+#: wireless/models.py:216 wireless/models.py:222
+#, python-brace-format
+msgid "{type} is not a wireless interface."
+msgstr ""
diff --git a/netbox/users/forms/model_forms.py b/netbox/users/forms/model_forms.py
index 1c3233f87..b0a43ef22 100644
--- a/netbox/users/forms/model_forms.py
+++ b/netbox/users/forms/model_forms.py
@@ -386,5 +386,5 @@ class ObjectPermissionForm(BootstrapMixin, forms.ModelForm):
model.objects.filter(qs_filter_from_constraints(constraints, tokens)).exists()
except FieldError as e:
raise forms.ValidationError({
- 'constraints': _('Invalid filter for {model}: {e}').format(model=model, e=e)
+ 'constraints': _('Invalid filter for {model}: {error}').format(model=model, error=e)
})
diff --git a/netbox/users/models.py b/netbox/users/models.py
index 80fd0dd09..1f8772704 100644
--- a/netbox/users/models.py
+++ b/netbox/users/models.py
@@ -169,7 +169,7 @@ class UserConfig(models.Model):
elif key in d:
err_path = '.'.join(path.split('.')[:i + 1])
raise TypeError(
- _("Key '{err_path}' is a leaf node; cannot assign new keys").format(err_path=err_path)
+ _("Key '{path}' is a leaf node; cannot assign new keys").format(path=err_path)
)
else:
d = d.setdefault(key, {})
diff --git a/netbox/virtualization/forms/model_forms.py b/netbox/virtualization/forms/model_forms.py
index 21dbc895a..73d4ca841 100644
--- a/netbox/virtualization/forms/model_forms.py
+++ b/netbox/virtualization/forms/model_forms.py
@@ -151,8 +151,12 @@ class ClusterAddDevicesForm(BootstrapMixin, forms.Form):
for device in self.cleaned_data.get('devices', []):
if device.site != self.cluster.site:
raise ValidationError({
- 'devices': _("{} belongs to a different site ({}) than the cluster ({})").format(
- device, device.site, self.cluster.site
+ 'devices': _(
+ "{device} belongs to a different site ({device_site}) than the cluster ({cluster_site})"
+ ).format(
+ device=device,
+ device_site=device.site,
+ cluster_site=self.cluster.site
)
})
diff --git a/netbox/virtualization/models/clusters.py b/netbox/virtualization/models/clusters.py
index 6c8fd0c4b..f8acc4c36 100644
--- a/netbox/virtualization/models/clusters.py
+++ b/netbox/virtualization/models/clusters.py
@@ -135,10 +135,9 @@ class Cluster(ContactsMixin, PrimaryModel):
# If the Cluster is assigned to a Site, verify that all host Devices belong to that Site.
if self.pk and self.site:
- nonsite_devices = Device.objects.filter(cluster=self).exclude(site=self.site).count()
- if nonsite_devices:
+ if nonsite_devices := Device.objects.filter(cluster=self).exclude(site=self.site).count():
raise ValidationError({
- 'site': _("{} devices are assigned as hosts for this cluster but are not in site {}").format(
- nonsite_devices, self.site
- )
+ 'site': _(
+ "{count} devices are assigned as hosts for this cluster but are not in site {site}"
+ ).format(count=nonsite_devices, site=self.site)
})
diff --git a/netbox/wireless/models.py b/netbox/wireless/models.py
index e8e48eef8..0b114f85f 100644
--- a/netbox/wireless/models.py
+++ b/netbox/wireless/models.py
@@ -213,14 +213,14 @@ class WirelessLink(WirelessAuthenticationBase, PrimaryModel):
if self.interface_a.type not in WIRELESS_IFACE_TYPES:
raise ValidationError({
'interface_a': _(
- "{type_display} is not a wireless interface."
- ).format(type_display=self.interface_a.get_type_display())
+ "{type} is not a wireless interface."
+ ).format(type=self.interface_a.get_type_display())
})
if self.interface_b.type not in WIRELESS_IFACE_TYPES:
raise ValidationError({
'interface_a': _(
- "{type_display} is not a wireless interface."
- ).format(type_display=self.interface_b.get_type_display())
+ "{type} is not a wireless interface."
+ ).format(type=self.interface_b.get_type_display())
})
def save(self, *args, **kwargs):