From 4adb44f60d91fec19c800ea0e03800e2eb338f06 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 13 Mar 2024 19:37:28 -0400 Subject: [PATCH 01/32] PRVB --- docs/release-notes/version-3.7.md | 4 ++++ netbox/netbox/settings.py | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/release-notes/version-3.7.md b/docs/release-notes/version-3.7.md index fd61218e5..9724c4488 100644 --- a/docs/release-notes/version-3.7.md +++ b/docs/release-notes/version-3.7.md @@ -1,5 +1,9 @@ # NetBox v3.7 +## v3.7.5 (FUTURE) + +--- + ## v3.7.4 (2024-03-13) ### Enhancements diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index 007164a6d..e662561ee 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -28,7 +28,7 @@ from netbox.plugins import PluginConfig # Environment setup # -VERSION = '3.7.4' +VERSION = '3.7.5-dev' # Hostname HOSTNAME = platform.node() From 35e20d156d5071eeea921bbd19337011e259f713 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 21 Mar 2024 09:05:34 -0400 Subject: [PATCH 02/32] Add link to NetBox Enterprise --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a81e41854..8d2efed23 100644 --- a/README.md +++ b/README.md @@ -84,7 +84,7 @@ NetBox automatically logs the creation, modification, and deletion of all manage

NetBox Cloud
- Looking for an enterprise solution? Check out NetBox Cloud! + Looking for a managed solution? Check out NetBox Cloud or NetBox Enterprise!

## Get Involved From 6f9f1d9d43a407d57408ad841a86d7946ccb4872 Mon Sep 17 00:00:00 2001 From: Arthur Date: Thu, 14 Mar 2024 13:50:38 -0700 Subject: [PATCH 03/32] 14799 dont cache report member names --- netbox/extras/models/reports.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netbox/extras/models/reports.py b/netbox/extras/models/reports.py index f6228ef24..d28a3aec6 100644 --- a/netbox/extras/models/reports.py +++ b/netbox/extras/models/reports.py @@ -52,7 +52,7 @@ class ReportModule(PythonModuleMixin, JobsMixin, ManagedFile): def __str__(self): return self.python_name - @cached_property + @property def reports(self): def _get_name(cls): From 59e12e73c2964e716be7b7e52cb1e6086c82a805 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 25 Mar 2024 09:55:21 -0400 Subject: [PATCH 04/32] Clean up GitHub actions --- .github/workflows/{stale.yml => close-stale-issues.yml} | 5 ++--- .github/workflows/{lock.yml => lock-threads.yml} | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) rename .github/workflows/{stale.yml => close-stale-issues.yml} (96%) rename .github/workflows/{lock.yml => lock-threads.yml} (95%) diff --git a/.github/workflows/stale.yml b/.github/workflows/close-stale-issues.yml similarity index 96% rename from .github/workflows/stale.yml rename to .github/workflows/close-stale-issues.yml index 22de146a2..a1bbb0b7e 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/close-stale-issues.yml @@ -1,5 +1,5 @@ # close-stale-issues (https://github.com/marketplace/actions/close-stale-issues) -name: 'Close stale issues/PRs' +name: Close stale issues/PRs on: schedule: @@ -12,10 +12,9 @@ permissions: jobs: stale: - runs-on: ubuntu-latest steps: - - uses: actions/stale@v8 + - uses: actions/stale@v9 with: close-issue-message: > This issue has been automatically closed due to lack of activity. In an diff --git a/.github/workflows/lock.yml b/.github/workflows/lock-threads.yml similarity index 95% rename from .github/workflows/lock.yml rename to .github/workflows/lock-threads.yml index ad3bf5d75..0f3636784 100644 --- a/.github/workflows/lock.yml +++ b/.github/workflows/lock-threads.yml @@ -1,5 +1,5 @@ # lock-threads (https://github.com/marketplace/actions/lock-threads) -name: 'Lock threads' +name: Lock threads on: schedule: From 710f9e3c46159c18fbcea8bef39d3a26327a9bdd Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 25 Mar 2024 09:57:13 -0400 Subject: [PATCH 05/32] Add auto-assign-issue GitHub action --- .github/workflows/auto-assign-issue.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 .github/workflows/auto-assign-issue.yml diff --git a/.github/workflows/auto-assign-issue.yml b/.github/workflows/auto-assign-issue.yml new file mode 100644 index 000000000..154f5f0a8 --- /dev/null +++ b/.github/workflows/auto-assign-issue.yml @@ -0,0 +1,20 @@ +# auto-assign-issue (https://github.com/marketplace/actions/auto-assign-issue) +name: Issue assignment + +on: + issues: + types: [opened] + +permissions: + issues: write + +jobs: + auto-assign: + runs-on: ubuntu-latest + steps: + - uses: pozil/auto-assign-issue@v1 + with: + # Some assignees are listed multiple times to effect a weighted rotation + assignees: jeremystretch,jeremystretch,jeremystretch,jeremystretch,arthanson,arthanson,arthanson,arthanson,DanSheps,abhi1693 + numOfAssignee: 1 + abortIfPreviousAssignees: true From d2fee886001e4abbcb1b4d9ed3fd32521c820be9 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 25 Mar 2024 10:39:17 -0400 Subject: [PATCH 06/32] Apply "needs triage" label to new issues by default --- .github/ISSUE_TEMPLATE/bug_report.yaml | 2 +- .github/ISSUE_TEMPLATE/documentation_change.yaml | 2 +- .github/ISSUE_TEMPLATE/feature_request.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml index 612d01d89..44c797241 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -1,7 +1,7 @@ --- name: 🐛 Bug Report description: Report a reproducible bug in the current release of NetBox -labels: ["type: bug"] +labels: ["type: bug", "needs triage"] body: - type: markdown attributes: diff --git a/.github/ISSUE_TEMPLATE/documentation_change.yaml b/.github/ISSUE_TEMPLATE/documentation_change.yaml index cb097d579..0f80f1716 100644 --- a/.github/ISSUE_TEMPLATE/documentation_change.yaml +++ b/.github/ISSUE_TEMPLATE/documentation_change.yaml @@ -1,7 +1,7 @@ --- name: 📖 Documentation Change description: Suggest an addition or modification to the NetBox documentation -labels: ["type: documentation"] +labels: ["type: documentation", "needs triage"] body: - type: dropdown attributes: diff --git a/.github/ISSUE_TEMPLATE/feature_request.yaml b/.github/ISSUE_TEMPLATE/feature_request.yaml index 8eb47180d..a550bff57 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yaml +++ b/.github/ISSUE_TEMPLATE/feature_request.yaml @@ -1,7 +1,7 @@ --- name: ✨ Feature Request description: Propose a new NetBox feature or enhancement -labels: ["type: feature"] +labels: ["type: feature", "needs triage"] body: - type: markdown attributes: From da6a1ef03e9889a116738eb3080ff8cced83c120 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Tue, 26 Mar 2024 16:26:47 -0400 Subject: [PATCH 07/32] Clean up the Markdown reference guide --- docs/reference/markdown.md | 541 +++++++++++++++---------------------- 1 file changed, 221 insertions(+), 320 deletions(-) diff --git a/docs/reference/markdown.md b/docs/reference/markdown.md index 0759fa2ec..cff3f0943 100644 --- a/docs/reference/markdown.md +++ b/docs/reference/markdown.md @@ -1,353 +1,254 @@ ---- -hide: - - toc ---- - # Markdown -NetBox supports markdown rendering for certain text fields. +NetBox supports Markdown rendering for certain text fields. Some common examples are provided below. For a complete Markdown reference, please see [Markdownguide.org](https://www.markdownguide.org/basic-syntax/). -## Syntax - -##### Table of Contents -[Headers](#headers) -[Emphasis](#emphasis) -[Lists](#lists) -[Links](#links) -[Images](#images) -[Code Blocks](#code) -[Tables](#tables) -[Blockquotes](#blockquotes) -[Inline HTML](#html) -[Horizontal Rule](#hr) -[Line Breaks](#lines) - - - -## Headers +## Headings ```no-highlight -# H1 -## H2 -### H3 -#### H4 -##### H5 -###### H6 +# Heading 1 +## Heading 2 +### Heading 3 +#### Heading 4 +##### Heading 5 +###### Heading 6 +``` + +

Heading 1

+

Heading 2

+

Heading 3

+

Heading 4

+
Heading 5
+
Heading 6
Alternatively, for H1 and H2, an underline-ish style: -Alt-H1 -====== +```no-highlight +Heading 1 +========= -Alt-H2 ------- +Heading 2 +--------- ``` -# H1 -## H2 -### H3 -#### H4 -##### H5 -###### H6 +

Heading 1

+

Heading 2

- - -## Emphasis +## Text ```no-highlight -Emphasis, aka italics, with *asterisks* or _underscores_. - -Strong emphasis, aka bold, with **asterisks** or __underscores__. - -Combined emphasis with **asterisks and _underscores_**. - -Strikethrough uses two tildes. ~~Scratch this.~~ +Italicize text with *asterisks* or _underscores_. ``` -Emphasis, aka italics, with *asterisks* or _underscores_. - -Strong emphasis, aka bold, with **asterisks** or __underscores__. - -Combined emphasis with **asterisks and _underscores_**. - -Strikethrough uses two tildes. ~~Scratch this.~~ - - - - -## Lists - -(In this example, leading and trailing spaces are shown with with dots: ⋅) +Italicize text with *asterisks* or _underscores_. ```no-highlight -1. First ordered list item -2. Another item -⋅⋅* Unordered sub-list. -1. Actual numbers don't matter, just that it's a number -⋅⋅1. Ordered sub-list -4. And another item. - -⋅⋅⋅You can have properly indented paragraphs within list items. Notice the blank line above, and the leading spaces (at least one, but we'll use three here to also align the raw Markdown). - -⋅⋅⋅To have a line break without a paragraph, you will need to use two trailing spaces.⋅⋅ -⋅⋅⋅Note that this line is separate, but within the same paragraph.⋅⋅ -⋅⋅⋅(This is contrary to the typical GFM line break behaviour, where trailing spaces are not required.) - -* Unordered list can use asterisks -- Or minuses -+ Or pluses +Bold text with two **asterisks** or __underscores__. ``` -1. First ordered list item -2. Another item - * Unordered sub-list. -1. Actual numbers don't matter, just that it's a number - 1. Ordered sub-list -4. And another item. - - You can have properly indented paragraphs within list items. Notice the blank line above, and the leading spaces (at least one, but we'll use three here to also align the raw Markdown). - - To have a line break without a paragraph, you will need to use two trailing spaces. - Note that this line is separate, but within the same paragraph. - (This is contrary to the typical GFM line break behaviour, where trailing spaces are not required.) - -* Unordered list can use asterisks -- Or minuses -+ Or pluses - - - -## Links - -There are two ways to create links. +Bold text with two **asterisks** or __underscores__. ```no-highlight -[I'm an inline-style link](https://www.google.com) - -[I'm an inline-style link with title](https://www.google.com "Google's Homepage") - -[I'm a reference-style link][Arbitrary case-insensitive reference text] - -[You can use numbers for reference-style link definitions][1] - -Or leave it empty and use the [link text itself]. - -URLs and URLs in angle brackets will automatically get turned into links. -http://www.example.com or and sometimes -example.com (but not on Github, for example). - -Some text to show that the reference links can follow later. - -[arbitrary case-insensitive reference text]: https://www.mozilla.org -[1]: http://slashdot.org -[link text itself]: http://www.reddit.com +Strike text with two tildes. ~~Deleted text.~~ ``` -[I'm an inline-style link](https://www.google.com) - -[I'm an inline-style link with title](https://www.google.com "Google's Homepage") - -[I'm a reference-style link][Arbitrary case-insensitive reference text] - -[You can use numbers for reference-style link definitions][1] - -Or leave it empty and use the [link text itself]. - -URLs and URLs in angle brackets will automatically get turned into links. -http://www.example.com or and sometimes -example.com (but not on Github, for example). - -Some text to show that the reference links can follow later. - -[arbitrary case-insensitive reference text]: https://www.mozilla.org -[1]: http://slashdot.org -[link text itself]: http://www.reddit.com - - - -## Images - -``` -Here's the NetBox logo (hover to see the title text): - -Inline-style: -![alt text](/media/misc/netbox_logo.png "Logo Title Text 1") - -Reference-style: -![alt text][logo] - -[logo]: /media/misc/netbox_logo.png "Logo Title Text 2" -``` - -Here's the NetBox logo (hover to see the title text): - -Inline-style: -![alt text](../media/misc/netbox_logo.png "Logo Title Text 1") - -Reference-style: -![alt text][logo] - -[logo]: ../media/misc/netbox_logo.png "Logo Title Text 2" - - - -## Code blocks - -``` -Inline `code` has `back-ticks around` it. -``` - -Inline `code` has `back-ticks around` it. - -Blocks of code are fenced by lines with three back-ticks ``` - -```` -``` -var s = "Code block"; -alert(s); -``` -```` - -``` -var s = "Code block"; -alert(s); -``` - - - -## Tables - -```no-highlight -Colons can be used to align columns. - -| Tables | Are | Cool | -| ------------- |:-------------:| -----:| -| col 3 is | right-aligned | $1600 | -| col 2 is | centered | $12 | -| zebra stripes | are neat | $1 | - -There must be at least 3 dashes separating each header cell. -The outer pipes (|) are optional, and you don't need to make the -raw Markdown line up prettily. You can also use inline Markdown. - -Markdown | Less | Pretty ---- | --- | --- -*Still* | `renders` | **nicely** -1 | 2 | 3 -``` - -Colons can be used to align columns. - -| Tables | Are | Cool | -| ------------- |:-------------:| -----:| -| col 3 is | right-aligned | $1600 | -| col 2 is | centered | $12 | -| zebra stripes | are neat | $1 | - -There must be at least 3 dashes separating each header cell. The outer pipes (|) are optional, and you don't need to make the raw Markdown line up prettily. You can also use inline Markdown. - -Markdown | Less | Pretty ---- | --- | --- -*Still* | `renders` | **nicely** -1 | 2 | 3 - - - -## Blockquotes - -```no-highlight -> Blockquotes are very handy in email to emulate reply text. -> This line is part of the same quote. - -Quote break. - -> This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can *put* **Markdown** into a blockquote. -``` - -> Blockquotes are very handy in email to emulate reply text. -> This line is part of the same quote. - -Quote break. - -> This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can *put* **Markdown** into a blockquote. - - - -## Inline HTML - -You can also use raw HTML in your Markdown, and it'll mostly work pretty well. - -```no-highlight -
-
Definition list
-
Is something people use sometimes.
- -
Markdown in HTML
-
Does *not* work **very** well. Use HTML tags.
-
-``` - -
-
Definition list
-
Is something people use sometimes.
- -
Markdown in HTML
-
Does *not* work **very** well. Use HTML tags.
-
- - - -## Horizontal Rule - -``` -Three or more... - ---- - -Hyphens - -*** - -Asterisks - -___ - -Underscores -``` - -Three or more... - ---- - -Hyphens - -*** - -Asterisks - -___ - -Underscores - - +Strike text with two tildes. ~~Deleted text.~~ ## Line Breaks +By default, Markdown will remove line breaks between successive lines of text. For example: -``` -Here's a line for us to start with. - -This line is separated from the one above by two newlines, so it will be a *separate paragraph*. - -This line is also a separate paragraph, but... -This line is only separated by a single newline, so it's a separate line in the *same paragraph*. +```no-highlight +This is one line. +And this is another line. +One more line here. ``` -Here's a line for us to start with. +This is one line. +And this is another line. +One more line here. -This line is separated from the one above by two newlines, so it will be a *separate paragraph*. +To preserve line breaks, append two spaces to each line (represented below with the `⋅` character). -This line is also begins a separate paragraph, but... -This line is only separated by a single newline, so it's a separate line in the *same paragraph*. +```no-highlight +This is one line.⋅⋅ +And this is another line.⋅⋅ +One more line here. +``` -Based on [Markdown-Cheatsheet](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) by [adam-p](https://github.com/adam-p) licensed under [CC-BY](https://creativecommons.org/licenses/by/3.0/) \ No newline at end of file +This is one line. +And this is another line. +One more line here. + +## Lists + +Use asterisks or hyphens for unordered lists. Indent items by four spaces to start a child list. + +```no-highlight +* Alpha +* Bravo +* Charlie + * Child item 1 + * Child item 2 +* Delta +``` + +* Alpha +* Bravo +* Charlie + * Child item 1 + * Child item 2 +* Delta + +Use digits followed by periods for ordered (numbered) lists. + +```no-highlight +1. Red +2. Green +3. Blue + 1. Light blue + 2. Dark blue +4. Orange +``` + +1. Red +2. Green +3. Blue + 1. Light blue + 2. Dark blue +4. Orange + +## Links + +Text can be rendered as a hyperlink by encasing it in square brackets, followed by a URL in parentheses. A title (text displayed on hover) may optionally be included as well. + +```no-highlight +Here's an [example](https://www.example.com) of a link. + +And here's [another link](https://www.example.com "Click me!"), this time with a title. +``` + +Here's an [example](https://www.example.com) of a link. + +And here's [another link](https://www.example.com "Click me!"), with a title. + +## Images + +The syntax for embedding an image is very similar to that used for a hyperlink. Alternate text should always be provided; this will be displayed if the image fails to load. As with hyperlinks, title text is optional. + +```no-highlight +![Alternate text](/path/to/image.png "Image title text") +``` + +## Code Blocks + +Single backticks can be used to annotate code inline. Text enclosed by lines of three backticks will be displayed as a code block. + +```no-highlight +Paragraphs are rendered in HTML using `

` and `

` tags. +``` + +Paragraphs are rendered in HTML using `

` and `

` tags. + +```` +``` +def my_func(foo, bar): + # Do something + return foo * bar +``` +```` + +```no-highlight +def my_func(foo, bar): + # Do something + return foo * bar +``` + +## Tables + +Simple tables can be constructed using the pipe character (`|`) to denote columns, and hyphens (`-`) to denote the heading. Inline Markdown can be used to style text within columns. + +```no-highlight +| Heading 1 | Heading 2 | Heading 3 | +|-----------|-----------|-----------| +| Row 1 | Alpha | Red | +| Row 2 | **Bravo** | Green | +| Row 3 | Charlie | ~~Blue~~ | +``` + +| Heading 1 | Heading 2 | Heading 3 | +|-----------|-----------|-----------| +| _Row 1_ | Alpha | Red | +| Row 2 | **Bravo** | Green | +| Row 3 | Charlie | ~~Blue~~ | + +Colons can be used to align text to the left or right side of a column. + +```no-highlight +| Left-aligned | Centered | Right-aligned | +|:-------------|:--------:|--------------:| +| Text | Text | Text | +| Text | Text | Text | +| Text | Text | Text | +``` + +| Left-aligned | Centered | Right-aligned | +|:-------------|:--------:|--------------:| +| Text | Text | Text | +| Text | Text | Text | +| Text | Text | Text | + +## Blockquotes + +Text can be wrapped in a blockquote by prepending a right angle bracket (`>`) before each line. + +```no-highlight +> I think that I shall never see +> a graph more lovely than a tree. +> A tree whose crucial property +> is loop-free connectivity. +``` + +> I think that I shall never see +> a graph more lovely than a tree. +> A tree whose crucial property +> is loop-free connectivity. + +Markdown removes line breaks by default. To preserve line breaks, append two spaces to each line (represented below with the `⋅` character). + +```no-highlight +> I think that I shall never see⋅⋅ +> a graph more lovely than a tree.⋅⋅ +> A tree whose crucial property⋅⋅ +> is loop-free connectivity. +``` + +> I think that I shall never see +> a graph more lovely than a tree. +> A tree whose crucial property +> is loop-free connectivity. + +## Horizontal Rule + +A horizontal rule is a single line rendered across the width of the page using a series of three or more hyphens or asterisks. It can be useful for separating sections of content. + +```no-highlight +Content + +--- + +More content + +*** + +Final content +``` + +Content + +--- + +More content + +*** + +Final content From 69c0aac1051015660133b2ae3c86607dabd8084b Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 28 Mar 2024 11:48:15 -0400 Subject: [PATCH 08/32] Add Jeff; remove duplicate entries from rotation (not supported) --- .github/workflows/auto-assign-issue.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/auto-assign-issue.yml b/.github/workflows/auto-assign-issue.yml index 154f5f0a8..5af9d0dbc 100644 --- a/.github/workflows/auto-assign-issue.yml +++ b/.github/workflows/auto-assign-issue.yml @@ -14,7 +14,6 @@ jobs: steps: - uses: pozil/auto-assign-issue@v1 with: - # Some assignees are listed multiple times to effect a weighted rotation - assignees: jeremystretch,jeremystretch,jeremystretch,jeremystretch,arthanson,arthanson,arthanson,arthanson,DanSheps,abhi1693 + assignees: abhi1693,arthanson,DanSheps,jeffgdotorg,jeremystretch numOfAssignee: 1 abortIfPreviousAssignees: true From d37a6210fa370b97b9ddb64f54d091a83e039b82 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 28 Mar 2024 14:14:34 -0400 Subject: [PATCH 09/32] Limit auto-assignment to bug reports & feature requests --- .github/workflows/auto-assign-issue.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/auto-assign-issue.yml b/.github/workflows/auto-assign-issue.yml index 5af9d0dbc..20e054806 100644 --- a/.github/workflows/auto-assign-issue.yml +++ b/.github/workflows/auto-assign-issue.yml @@ -13,6 +13,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: pozil/auto-assign-issue@v1 + if: "contains(github.event.issue.labels.*.name, 'type: bug') || contains(github.event.issue.labels.*.name, 'type: feature')" with: assignees: abhi1693,arthanson,DanSheps,jeffgdotorg,jeremystretch numOfAssignee: 1 From 3cb68e4bc032f0270c5c12a08811d2c1ae3913c7 Mon Sep 17 00:00:00 2001 From: teapot Date: Fri, 29 Mar 2024 02:01:08 +0900 Subject: [PATCH 10/32] Fixes #15567: Correct typo in help text Fixes #15567: Correct typo in help text --- netbox/extras/models/tags.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netbox/extras/models/tags.py b/netbox/extras/models/tags.py index 3aba6df60..97b9087c5 100644 --- a/netbox/extras/models/tags.py +++ b/netbox/extras/models/tags.py @@ -37,7 +37,7 @@ class Tag(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel, TagBase): to='contenttypes.ContentType', related_name='+', blank=True, - help_text=_("The object type(s) to which this this tag can be applied.") + help_text=_("The object type(s) to which this tag can be applied.") ) clone_fields = ( From 699dd7259761da0d70f1a1bf94b088d44090f56d Mon Sep 17 00:00:00 2001 From: "Daniel W. Anner" Date: Wed, 27 Mar 2024 20:56:56 +0000 Subject: [PATCH 11/32] Adding JSON schema changes to implement and within the generated schema template per issue #15555 --- contrib/generated_schema.json | 2 ++ netbox/templates/extras/schema/devicetype_schema.jinja2 | 2 ++ 2 files changed, 4 insertions(+) diff --git a/contrib/generated_schema.json b/contrib/generated_schema.json index 1164f2e48..b6632dd4c 100644 --- a/contrib/generated_schema.json +++ b/contrib/generated_schema.json @@ -1,5 +1,7 @@ { "type": "object", + "$id": "urn:devicetype-library:generated-schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "definitions": { "airflow": { diff --git a/netbox/templates/extras/schema/devicetype_schema.jinja2 b/netbox/templates/extras/schema/devicetype_schema.jinja2 index b08ab24de..19cacab69 100644 --- a/netbox/templates/extras/schema/devicetype_schema.jinja2 +++ b/netbox/templates/extras/schema/devicetype_schema.jinja2 @@ -1,5 +1,7 @@ { "type": "object", + "$id": "urn:devicetype-library:generated-schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "definitions": { "airflow": { From d285edc0c72f2913e02aa9c42bb968805ed95724 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markku=20Leini=C3=B6?= Date: Wed, 3 Apr 2024 14:58:46 +0300 Subject: [PATCH 12/32] Fixes #15583: Update API token provisioning example response (#15584) * Fixes #15583: Update API token provisioning example response * Fix 'display' field output --- docs/integrations/rest-api.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/integrations/rest-api.md b/docs/integrations/rest-api.md index 03a34abf4..437f652b7 100644 --- a/docs/integrations/rest-api.md +++ b/docs/integrations/rest-api.md @@ -647,18 +647,20 @@ Note that we are _not_ passing an existing REST API token with this request. If { "id": 6, "url": "https://netbox/api/users/tokens/6/", - "display": "3c9cb9 (hankhill)", + "display": "**********************************3c9cb9", "user": { "id": 2, "url": "https://netbox/api/users/users/2/", "display": "hankhill", "username": "hankhill" }, - "created": "2021-06-11T20:09:13.339367Z", + "created": "2024-03-11T20:09:13.339367Z", "expires": null, + "last_used": null, "key": "9fc9b897abec9ada2da6aec9dbc34596293c9cb9", "write_enabled": true, - "description": "" + "description": "", + "allowed_ips": [] } ``` From bbd7ddb7aad0bf2097776523f03827b314a6737b Mon Sep 17 00:00:00 2001 From: tobiWu <42635628+tobiWu@users.noreply.github.com> Date: Wed, 3 Apr 2024 14:05:47 +0200 Subject: [PATCH 13/32] Fix #15506 Update documentation for plugins index.md (#15518) * Update documentation for plugins index.md You should restart netbox-rq workers if you added a plugin. Otherwise you can't load modules from plugin to custom scripts later. * Update docs/plugins/index.md --------- Co-authored-by: Jeremy Stretch --- docs/plugins/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/plugins/index.md b/docs/plugins/index.md index 0658ed402..39314187b 100644 --- a/docs/plugins/index.md +++ b/docs/plugins/index.md @@ -82,10 +82,10 @@ Plugins may package static files to be served directly by the HTTP front end. En ### Restart WSGI Service -Restart the WSGI service to load the new plugin: +Restart the WSGI service and RQ workers to load the new plugin: ```no-highlight -# sudo systemctl restart netbox +# sudo systemctl restart netbox netbox-rq ``` ## Removing Plugins From 7d5435714685359a68473fc52e1e59849d334387 Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Fri, 22 Mar 2024 10:24:43 -0500 Subject: [PATCH 14/32] Fixes: #15502 - Correct exception on IP import form when VM is target --- netbox/ipam/forms/bulk_import.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netbox/ipam/forms/bulk_import.py b/netbox/ipam/forms/bulk_import.py index 0627a6765..bfff1f4f4 100644 --- a/netbox/ipam/forms/bulk_import.py +++ b/netbox/ipam/forms/bulk_import.py @@ -378,7 +378,7 @@ class IPAddressImportForm(NetBoxModelImportForm): # Set as primary for device/VM if self.cleaned_data.get('is_primary'): - parent = self.cleaned_data['device'] or self.cleaned_data['virtual_machine'] + parent = self.cleaned_data.get('device') or self.cleaned_data.get('virtual_machine') if self.instance.address.version == 4: parent.primary_ip4 = ipaddress elif self.instance.address.version == 6: From bb4930b62fcca5b92e59c029f665f66abf274708 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 3 Apr 2024 08:15:44 -0400 Subject: [PATCH 15/32] Change log for #14799, #15502 --- docs/release-notes/version-3.7.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/release-notes/version-3.7.md b/docs/release-notes/version-3.7.md index 9724c4488..0e4bcfc5b 100644 --- a/docs/release-notes/version-3.7.md +++ b/docs/release-notes/version-3.7.md @@ -2,6 +2,11 @@ ## v3.7.5 (FUTURE) +### Bug Fixes + +* [#14799](https://github.com/netbox-community/netbox/issues/14799) - Avoid caching modified reports & scripts +* [#15502](https://github.com/netbox-community/netbox/issues/15502) - Fix KeyError exception when modifying an IP address assigned to a virtual machine + --- ## v3.7.4 (2024-03-13) From 83dad6f7717f7de3e4dec778ebd4a6fb2f16c89c Mon Sep 17 00:00:00 2001 From: Arthur Date: Wed, 3 Apr 2024 09:25:03 -0700 Subject: [PATCH 16/32] 15597 add button_class choices to import form --- netbox/extras/forms/bulk_import.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/netbox/extras/forms/bulk_import.py b/netbox/extras/forms/bulk_import.py index 59ccc2bf9..2baf373c0 100644 --- a/netbox/extras/forms/bulk_import.py +++ b/netbox/extras/forms/bulk_import.py @@ -116,6 +116,12 @@ class CustomLinkImportForm(CSVModelForm): queryset=ContentType.objects.with_feature('custom_links'), help_text=_("One or more assigned object types") ) + button_class = CSVChoiceField( + label=_('button class'), + required=False, + choices=CustomLinkButtonClassChoices, + help_text=_('The class of the first link in a group will be used for the dropdown button') + ) class Meta: model = CustomLink From 6030c521f45317ffa39f626fe37684320c84a04a Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Thu, 14 Mar 2024 17:15:35 +0100 Subject: [PATCH 17/32] Fix typo in Add Components dropdown --- netbox/templates/dcim/device/base.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netbox/templates/dcim/device/base.html b/netbox/templates/dcim/device/base.html index 43d5c5ae9..90cb829ac 100644 --- a/netbox/templates/dcim/device/base.html +++ b/netbox/templates/dcim/device/base.html @@ -42,7 +42,7 @@ {% if perms.dcim.add_rearport %}
  • {% trans "Rear Ports" %}
  • {% endif %} - {% if perms.dcim.add_devicebay %} + {% if perms.dcim.add_modulebay %}
  • {% trans "Module Bays" %}
  • {% endif %} {% if perms.dcim.add_devicebay %} From e4984d288369056650c92301c9f740bd2d3fe429 Mon Sep 17 00:00:00 2001 From: Abhimanyu Saharan Date: Fri, 9 Feb 2024 22:57:38 +0530 Subject: [PATCH 18/32] fixed user and group filter form name #15102 --- netbox/users/forms/filtersets.py | 8 ++++---- netbox/users/views.py | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/netbox/users/forms/filtersets.py b/netbox/users/forms/filtersets.py index 4ae2bd729..0e9e99a83 100644 --- a/netbox/users/forms/filtersets.py +++ b/netbox/users/forms/filtersets.py @@ -11,21 +11,21 @@ from utilities.forms.fields import DynamicModelMultipleChoiceField from utilities.forms.widgets import DateTimePicker __all__ = ( - 'GroupFilterForm', + 'NetBoxGroupFilterForm', 'ObjectPermissionFilterForm', - 'UserFilterForm', + 'NetBoxUserFilterForm', 'TokenFilterForm', ) -class GroupFilterForm(NetBoxModelFilterSetForm): +class NetBoxGroupFilterForm(NetBoxModelFilterSetForm): model = NetBoxGroup fieldsets = ( (None, ('q', 'filter_id',)), ) -class UserFilterForm(NetBoxModelFilterSetForm): +class NetBoxUserFilterForm(NetBoxModelFilterSetForm): model = NetBoxUser fieldsets = ( (None, ('q', 'filter_id',)), diff --git a/netbox/users/views.py b/netbox/users/views.py index 2e7a47c12..e0fda403e 100644 --- a/netbox/users/views.py +++ b/netbox/users/views.py @@ -58,7 +58,7 @@ class TokenBulkDeleteView(generic.BulkDeleteView): class UserListView(generic.ObjectListView): queryset = NetBoxUser.objects.all() filterset = filtersets.UserFilterSet - filterset_form = forms.UserFilterForm + filterset_form = forms.NetBoxUserFilterForm table = tables.UserTable @@ -112,7 +112,7 @@ class UserBulkDeleteView(generic.BulkDeleteView): class GroupListView(generic.ObjectListView): queryset = NetBoxGroup.objects.annotate(users_count=Count('user')) filterset = filtersets.GroupFilterSet - filterset_form = forms.GroupFilterForm + filterset_form = forms.NetBoxGroupFilterForm table = tables.GroupTable From fca23c6419f7027dadf842f03e4de8c43323fd18 Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 5 Feb 2024 10:37:01 -0800 Subject: [PATCH 19/32] 15029 check if duplicate FHRP group assignment --- netbox/ipam/forms/model_forms.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/netbox/ipam/forms/model_forms.py b/netbox/ipam/forms/model_forms.py index 71aa32d52..a0e004298 100644 --- a/netbox/ipam/forms/model_forms.py +++ b/netbox/ipam/forms/model_forms.py @@ -507,6 +507,24 @@ class FHRPGroupAssignmentForm(BootstrapMixin, forms.ModelForm): for ipaddress in ipaddresses: self.fields['group'].widget.add_query_param('related_ip', ipaddress.pk) + def clean_group(self): + group = self.cleaned_data['group'] + + conflicting_assignments = FHRPGroupAssignment.objects.filter( + interface_type=self.instance.interface_type, + interface_id=self.instance.interface_id, + group=group + ) + if self.instance.id: + conflicting_assignments = conflicting_assignments.exclude(id=self.instance.id) + + if conflicting_assignments.exists(): + raise forms.ValidationError( + _('Assignment already exists') + ) + + return group + class VLANGroupForm(NetBoxModelForm): scope_type = ContentTypeChoiceField( From 24e2fc253ab4ce529bebc189bd17069b1916560a Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 3 Apr 2024 14:12:35 -0400 Subject: [PATCH 20/32] Changelog for #15029, #15102, #15435, #15597 --- docs/release-notes/version-3.7.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/release-notes/version-3.7.md b/docs/release-notes/version-3.7.md index 0e4bcfc5b..906b27ef3 100644 --- a/docs/release-notes/version-3.7.md +++ b/docs/release-notes/version-3.7.md @@ -5,7 +5,11 @@ ### Bug Fixes * [#14799](https://github.com/netbox-community/netbox/issues/14799) - Avoid caching modified reports & scripts +* [#15029](https://github.com/netbox-community/netbox/issues/15029) - Raise a clean validation error when attempting to make duplicate FHRP group assignments +* [#15102](https://github.com/netbox-community/netbox/issues/15102) - Fix usage of selector widget for form fields referencing users/groups +* [#15435](https://github.com/netbox-community/netbox/issues/15435) - Correct permissions name to allow adding a module bay to a device via the UI * [#15502](https://github.com/netbox-community/netbox/issues/15502) - Fix KeyError exception when modifying an IP address assigned to a virtual machine +* [#15597](https://github.com/netbox-community/netbox/issues/15597) - Restore help modal for `button_class` field on custom link bulk import form --- From 1c370f45d06dabf78072e73949bd5f2494687563 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 4 Apr 2024 09:20:20 -0400 Subject: [PATCH 21/32] Add weighted assignments & enable for documentation issue --- .github/workflows/auto-assign-issue.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/auto-assign-issue.yml b/.github/workflows/auto-assign-issue.yml index 20e054806..7a9f857a9 100644 --- a/.github/workflows/auto-assign-issue.yml +++ b/.github/workflows/auto-assign-issue.yml @@ -13,8 +13,12 @@ jobs: runs-on: ubuntu-latest steps: - uses: pozil/auto-assign-issue@v1 - if: "contains(github.event.issue.labels.*.name, 'type: bug') || contains(github.event.issue.labels.*.name, 'type: feature')" + if: > + contains(github.event.issue.labels.*.name, 'type: bug') || + contains(github.event.issue.labels.*.name, 'type: feature') || + contains(github.event.issue.labels.*.name, 'type: documentation') with: - assignees: abhi1693,arthanson,DanSheps,jeffgdotorg,jeremystretch + # Weighted assignments + assignees: arthanson:3, jeffgdotorg:3, jeremystretch:3, abhi1693, DanSheps numOfAssignee: 1 abortIfPreviousAssignees: true From 0e94f2e05d871c13afb5a0f9da45778e9e390a52 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 4 Apr 2024 09:53:49 -0400 Subject: [PATCH 22/32] Simplify auto-assignment qualification --- .github/workflows/auto-assign-issue.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/auto-assign-issue.yml b/.github/workflows/auto-assign-issue.yml index 7a9f857a9..3d0330dc9 100644 --- a/.github/workflows/auto-assign-issue.yml +++ b/.github/workflows/auto-assign-issue.yml @@ -13,10 +13,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: pozil/auto-assign-issue@v1 - if: > - contains(github.event.issue.labels.*.name, 'type: bug') || - contains(github.event.issue.labels.*.name, 'type: feature') || - contains(github.event.issue.labels.*.name, 'type: documentation') + if: contains(github.event.issue.labels.*.name, 'needs triage') with: # Weighted assignments assignees: arthanson:3, jeffgdotorg:3, jeremystretch:3, abhi1693, DanSheps From e1753c0f9b15822b3fd2683124d8e8f53484f812 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 4 Apr 2024 10:03:12 -0400 Subject: [PATCH 23/32] Fix formatting --- .github/workflows/auto-assign-issue.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/auto-assign-issue.yml b/.github/workflows/auto-assign-issue.yml index 3d0330dc9..9abbc0cce 100644 --- a/.github/workflows/auto-assign-issue.yml +++ b/.github/workflows/auto-assign-issue.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: pozil/auto-assign-issue@v1 - if: contains(github.event.issue.labels.*.name, 'needs triage') + if: "contains(github.event.issue.labels.*.name, 'needs triage')" with: # Weighted assignments assignees: arthanson:3, jeffgdotorg:3, jeremystretch:3, abhi1693, DanSheps From 282dc7a705240b29838731869a8ed2acef53b2b6 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 3 Apr 2024 16:18:34 -0400 Subject: [PATCH 24/32] Fixes #15608: Avoid caching values of null fields in search index --- netbox/netbox/search/__init__.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/netbox/netbox/search/__init__.py b/netbox/netbox/search/__init__.py index 590188f21..7537c0419 100644 --- a/netbox/netbox/search/__init__.py +++ b/netbox/netbox/search/__init__.py @@ -59,9 +59,10 @@ class SearchIndex: @staticmethod def get_field_value(instance, field_name): """ - Return the value of the specified model field as a string. + Return the value of the specified model field as a string (or None). """ - return str(getattr(instance, field_name)) + if value := getattr(instance, field_name): + return str(value) @classmethod def get_category(cls): From d9a7b4ee0ebb225b5239306ec94b6f369956be9b Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 3 Apr 2024 16:04:41 -0400 Subject: [PATCH 25/32] Fixes #15609: Fix filtering providers list by assigned ASN --- netbox/circuits/filtersets.py | 6 ++++++ netbox/circuits/forms/filtersets.py | 6 +----- netbox/circuits/tests/test_filtersets.py | 4 +++- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/netbox/circuits/filtersets.py b/netbox/circuits/filtersets.py index 97be1cf57..9a14b5286 100644 --- a/netbox/circuits/filtersets.py +++ b/netbox/circuits/filtersets.py @@ -64,6 +64,12 @@ class ProviderFilterSet(NetBoxModelFilterSet, ContactModelFilterSet): queryset=ASN.objects.all(), label=_('ASN (ID)'), ) + asn = django_filters.ModelMultipleChoiceFilter( + field_name='asns__asn', + queryset=ASN.objects.all(), + to_field_name='asn', + label=_('ASN'), + ) class Meta: model = Provider diff --git a/netbox/circuits/forms/filtersets.py b/netbox/circuits/forms/filtersets.py index 1e1abd068..8f730ba10 100644 --- a/netbox/circuits/forms/filtersets.py +++ b/netbox/circuits/forms/filtersets.py @@ -24,7 +24,7 @@ class ProviderFilterForm(ContactModelFilterForm, NetBoxModelFilterSetForm): fieldsets = ( (None, ('q', 'filter_id', 'tag')), (_('Location'), ('region_id', 'site_group_id', 'site_id')), - (_('ASN'), ('asn',)), + (_('ASN'), ('asn_id',)), (_('Contacts'), ('contact', 'contact_role', 'contact_group')), ) region_id = DynamicModelMultipleChoiceField( @@ -46,10 +46,6 @@ class ProviderFilterForm(ContactModelFilterForm, NetBoxModelFilterSetForm): }, label=_('Site') ) - asn = forms.IntegerField( - required=False, - label=_('ASN (legacy)') - ) asn_id = DynamicModelMultipleChoiceField( queryset=ASN.objects.all(), required=False, diff --git a/netbox/circuits/tests/test_filtersets.py b/netbox/circuits/tests/test_filtersets.py index 6553179ec..ae9de03e9 100644 --- a/netbox/circuits/tests/test_filtersets.py +++ b/netbox/circuits/tests/test_filtersets.py @@ -90,10 +90,12 @@ class ProviderTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'description': ['foobar1', 'foobar2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - def test_asn_id(self): # ASN object assignment + def test_asn(self): asns = ASN.objects.all()[:2] params = {'asn_id': [asns[0].pk, asns[1].pk]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + params = {'asn': [asns[0].asn, asns[1].asn]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) def test_region(self): regions = Region.objects.all()[:2] From 5b50920c618d20a770ddfce217b974cefbd28212 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markku=20Leini=C3=B6?= Date: Thu, 4 Apr 2024 18:46:01 +0300 Subject: [PATCH 26/32] Closes #14707: Change 'Interface' to 'Tunnel interface' in VPN tunnel forms --- netbox/vpn/forms/model_forms.py | 6 +++--- netbox/vpn/tables/tunnels.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/netbox/vpn/forms/model_forms.py b/netbox/vpn/forms/model_forms.py index f936de88c..adf358be7 100644 --- a/netbox/vpn/forms/model_forms.py +++ b/netbox/vpn/forms/model_forms.py @@ -91,7 +91,7 @@ class TunnelCreateForm(TunnelForm): termination1_termination = DynamicModelChoiceField( queryset=Interface.objects.all(), required=False, - label=_('Interface'), + label=_('Tunnel interface'), query_params={ 'device_id': '$termination1_parent', } @@ -126,7 +126,7 @@ class TunnelCreateForm(TunnelForm): termination2_termination = DynamicModelChoiceField( queryset=Interface.objects.all(), required=False, - label=_('Interface'), + label=_('Tunnel interface'), query_params={ 'device_id': '$termination2_parent', } @@ -238,7 +238,7 @@ class TunnelTerminationForm(NetBoxModelForm): ) termination = DynamicModelChoiceField( queryset=Interface.objects.all(), - label=_('Interface'), + label=_('Tunnel interface'), query_params={ 'device_id': '$parent', } diff --git a/netbox/vpn/tables/tunnels.py b/netbox/vpn/tables/tunnels.py index bc591c1e6..cf4230652 100644 --- a/netbox/vpn/tables/tunnels.py +++ b/netbox/vpn/tables/tunnels.py @@ -88,7 +88,7 @@ class TunnelTerminationTable(TenancyColumnsMixin, NetBoxTable): verbose_name=_('Host') ) termination = tables.Column( - verbose_name=_('Interface'), + verbose_name=_('Tunnel interface'), linkify=True ) ip_addresses = tables.ManyToManyColumn( From da13fa55694eaaaf2a99069815afc0b24bc19c84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markku=20Leini=C3=B6?= Date: Thu, 4 Apr 2024 19:17:57 +0300 Subject: [PATCH 27/32] Closes #15039: Add Clone button in API token --- netbox/users/models.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/netbox/users/models.py b/netbox/users/models.py index 52ce55e6c..160f49ac4 100644 --- a/netbox/users/models.py +++ b/netbox/users/models.py @@ -17,6 +17,7 @@ from netaddr import IPNetwork from core.models import ContentType from ipam.fields import IPNetworkField from netbox.config import get_config +from netbox.models.features import CloningMixin from utilities.querysets import RestrictedQuerySet from utilities.utils import flatten_dict from .constants import * @@ -234,7 +235,7 @@ def create_userconfig(instance, created, raw=False, **kwargs): # REST API # -class Token(models.Model): +class Token(CloningMixin, models.Model): """ An API token used for user authentication. This extends the stock model to allow each user to have multiple tokens. It also supports setting an expiration time and toggling write ability. @@ -285,6 +286,10 @@ class Token(models.Model): ), ) + clone_fields = ( + 'user', 'expires', 'write_enabled', 'description', 'allowed_ips', + ) + objects = RestrictedQuerySet.as_manager() class Meta: From 3b3511c43c0c8565d846817e5d6233f1ef610767 Mon Sep 17 00:00:00 2001 From: padthaitofuhot Date: Tue, 2 Apr 2024 23:30:13 -0400 Subject: [PATCH 28/32] Refactor 32264ac3 to re-separate bulk and single device creation. Fixes #15598. --- netbox/dcim/models/devices.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/netbox/dcim/models/devices.py b/netbox/dcim/models/devices.py index 2a1269a8d..588901709 100644 --- a/netbox/dcim/models/devices.py +++ b/netbox/dcim/models/devices.py @@ -996,17 +996,16 @@ class Device( bulk_create: If True, bulk_create() will be called to create all components in a single query (default). Otherwise, save() will be called on each instance individually. """ - components = [obj.instantiate(device=self) for obj in queryset] - if not components: - return - - # Set default values for any applicable custom fields model = queryset.model.component_model - if cf_defaults := CustomField.objects.get_defaults_for_model(model): - for component in components: - component.custom_field_data = cf_defaults if bulk_create: + components = [obj.instantiate(device=self) for obj in queryset] + if not components: + return + # Set default values for any applicable custom fields + if cf_defaults := CustomField.objects.get_defaults_for_model(model): + for component in components: + component.custom_field_data = cf_defaults model.objects.bulk_create(components) # Manually send the post_save signal for each of the newly created components for component in components: @@ -1019,7 +1018,11 @@ class Device( update_fields=None ) else: - for component in components: + for obj in queryset: + component = obj.instantiate(device=self) + # Set default values for any applicable custom fields + if cf_defaults := CustomField.objects.get_defaults_for_model(model): + component.custom_field_data = cf_defaults component.save() def save(self, *args, **kwargs): From 238fa704b9c5a684e13ca3070fa32ce4bdd7dea2 Mon Sep 17 00:00:00 2001 From: muTeREdO <133774274+muTeREdO@users.noreply.github.com> Date: Thu, 4 Apr 2024 14:21:26 -0400 Subject: [PATCH 29/32] add example showing how to order results. (#15627) * add example showing how to order results. This addresses issue 15622 by building off filtering example to show how to order results on a named field. * Apply suggestions from code review --------- Co-authored-by: Frank Clements Co-authored-by: Jeremy Stretch --- docs/integrations/rest-api.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/integrations/rest-api.md b/docs/integrations/rest-api.md index 437f652b7..1ba00958f 100644 --- a/docs/integrations/rest-api.md +++ b/docs/integrations/rest-api.md @@ -85,13 +85,19 @@ Each model generally has two views associated with it: a list view and a detail * `/api/dcim/devices/` - List existing devices or create a new device * `/api/dcim/devices/123/` - Retrieve, update, or delete the device with ID 123 -Lists of objects can be filtered using a set of query parameters. For example, to find all interfaces belonging to the device with ID 123: +Lists of objects can be filtered and ordered using a set of query parameters. For example, to find all interfaces belonging to the device with ID 123: ``` GET /api/dcim/interfaces/?device_id=123 ``` -See the [filtering documentation](../reference/filtering.md) for more details. +An optional `ordering` parameter can be used to define how to sort the results. Building off the previous example, to sort all the interfaces in reverse order of creation (newest to oldest) for a device with ID 123: + +``` +GET /api/dcim/interfaces/?device_id=123&ordering=-created +``` + +See the [filtering documentation](../reference/filtering.md) for more details on topics related to filtering, ordering and lookup expressions. ## Serialization From 48a3f3cb70a4dcaeb3ad26495416f5cc2b207051 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 4 Apr 2024 15:05:49 -0400 Subject: [PATCH 30/32] Changelog for #14707, #15039, #15598, #15608, #15609 --- docs/release-notes/version-3.7.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/release-notes/version-3.7.md b/docs/release-notes/version-3.7.md index 906b27ef3..15159b4f3 100644 --- a/docs/release-notes/version-3.7.md +++ b/docs/release-notes/version-3.7.md @@ -2,6 +2,11 @@ ## v3.7.5 (FUTURE) +### Enhancements + +* [#14707](https://github.com/netbox-community/netbox/issues/14707) - Clarify interface designation when creating tunnel terminations +* [#15039](https://github.com/netbox-community/netbox/issues/15039) - Allow API tokens to be cloned + ### Bug Fixes * [#14799](https://github.com/netbox-community/netbox/issues/14799) - Avoid caching modified reports & scripts @@ -10,6 +15,9 @@ * [#15435](https://github.com/netbox-community/netbox/issues/15435) - Correct permissions name to allow adding a module bay to a device via the UI * [#15502](https://github.com/netbox-community/netbox/issues/15502) - Fix KeyError exception when modifying an IP address assigned to a virtual machine * [#15597](https://github.com/netbox-community/netbox/issues/15597) - Restore help modal for `button_class` field on custom link bulk import form +* [#15598](https://github.com/netbox-community/netbox/issues/15598) - Fix exception when creating a device from a device type with one or more child inventory items +* [#15608](https://github.com/netbox-community/netbox/issues/15608) - Avoid caching values of null fields in search index +* [#15609](https://github.com/netbox-community/netbox/issues/15609) - Fix filtering of the providers list by assigned ASN --- From e10f5ec3b4f93f43ba794de6d3f89bbd1f2cb76f Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 4 Apr 2024 15:12:51 -0400 Subject: [PATCH 31/32] Update source strings for translation --- netbox/translations/en/LC_MESSAGES/django.po | 790 ++++++++++--------- 1 file changed, 401 insertions(+), 389 deletions(-) diff --git a/netbox/translations/en/LC_MESSAGES/django.po b/netbox/translations/en/LC_MESSAGES/django.po index 80d8b317a..dfb5a7a59 100644 --- a/netbox/translations/en/LC_MESSAGES/django.po +++ b/netbox/translations/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-21 19:48+0000\n" +"POT-Creation-Date: 2024-04-04 19:11+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -60,8 +60,8 @@ msgid "Your preferences have been updated." msgstr "" #: circuits/choices.py:21 dcim/choices.py:20 dcim/choices.py:102 -#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1419 -#: dcim/choices.py:1495 dcim/choices.py:1545 virtualization/choices.py:20 +#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1425 +#: dcim/choices.py:1501 dcim/choices.py:1551 virtualization/choices.py:20 #: virtualization/choices.py:45 vpn/choices.py:18 msgid "Planned" msgstr "" @@ -71,8 +71,8 @@ msgid "Provisioning" msgstr "" #: circuits/choices.py:23 dcim/choices.py:22 dcim/choices.py:103 -#: dcim/choices.py:173 dcim/choices.py:219 dcim/choices.py:1494 -#: dcim/choices.py:1544 extras/tables/tables.py:380 ipam/choices.py:31 +#: dcim/choices.py:173 dcim/choices.py:219 dcim/choices.py:1500 +#: dcim/choices.py:1550 extras/tables/tables.py:380 ipam/choices.py:31 #: ipam/choices.py:49 ipam/choices.py:69 ipam/choices.py:154 #: templates/extras/configcontext.html:26 templates/users/user.html:38 #: users/forms/bulk_edit.py:36 virtualization/choices.py:22 @@ -81,7 +81,7 @@ msgid "Active" msgstr "" #: circuits/choices.py:24 dcim/choices.py:172 dcim/choices.py:218 -#: dcim/choices.py:1493 dcim/choices.py:1546 virtualization/choices.py:24 +#: dcim/choices.py:1499 dcim/choices.py:1552 virtualization/choices.py:24 #: virtualization/choices.py:43 msgid "Offline" msgstr "" @@ -94,7 +94,7 @@ msgstr "" msgid "Decommissioned" msgstr "" -#: circuits/filtersets.py:29 circuits/filtersets.py:184 dcim/filtersets.py:124 +#: circuits/filtersets.py:29 circuits/filtersets.py:190 dcim/filtersets.py:124 #: dcim/filtersets.py:185 dcim/filtersets.py:260 dcim/filtersets.py:369 #: dcim/filtersets.py:903 dcim/filtersets.py:1207 dcim/filtersets.py:1702 #: dcim/filtersets.py:1945 dcim/filtersets.py:2003 ipam/filtersets.py:305 @@ -103,7 +103,7 @@ msgstr "" msgid "Region (ID)" msgstr "" -#: circuits/filtersets.py:36 circuits/filtersets.py:191 dcim/filtersets.py:130 +#: circuits/filtersets.py:36 circuits/filtersets.py:197 dcim/filtersets.py:130 #: dcim/filtersets.py:192 dcim/filtersets.py:267 dcim/filtersets.py:376 #: dcim/filtersets.py:910 dcim/filtersets.py:1214 dcim/filtersets.py:1709 #: dcim/filtersets.py:1952 dcim/filtersets.py:2010 extras/filtersets.py:414 @@ -113,7 +113,7 @@ msgstr "" msgid "Region (slug)" msgstr "" -#: circuits/filtersets.py:42 circuits/filtersets.py:197 dcim/filtersets.py:198 +#: circuits/filtersets.py:42 circuits/filtersets.py:203 dcim/filtersets.py:198 #: dcim/filtersets.py:273 dcim/filtersets.py:382 dcim/filtersets.py:916 #: dcim/filtersets.py:1220 dcim/filtersets.py:1715 dcim/filtersets.py:1958 #: dcim/filtersets.py:2016 ipam/filtersets.py:318 ipam/filtersets.py:909 @@ -121,7 +121,7 @@ msgstr "" msgid "Site group (ID)" msgstr "" -#: circuits/filtersets.py:49 circuits/filtersets.py:204 dcim/filtersets.py:205 +#: circuits/filtersets.py:49 circuits/filtersets.py:210 dcim/filtersets.py:205 #: dcim/filtersets.py:280 dcim/filtersets.py:389 dcim/filtersets.py:923 #: dcim/filtersets.py:1227 dcim/filtersets.py:1722 dcim/filtersets.py:1965 #: dcim/filtersets.py:2023 extras/filtersets.py:420 ipam/filtersets.py:325 @@ -131,7 +131,7 @@ msgid "Site group (slug)" msgstr "" #: circuits/filtersets.py:54 circuits/forms/bulk_import.py:117 -#: circuits/forms/filtersets.py:47 circuits/forms/filtersets.py:171 +#: circuits/forms/filtersets.py:47 circuits/forms/filtersets.py:167 #: circuits/forms/model_forms.py:137 dcim/forms/bulk_edit.py:166 #: dcim/forms/bulk_edit.py:238 dcim/forms/bulk_edit.py:570 #: dcim/forms/bulk_edit.py:763 dcim/forms/bulk_import.py:130 @@ -154,8 +154,8 @@ msgstr "" #: ipam/forms/bulk_import.py:170 ipam/forms/bulk_import.py:437 #: ipam/forms/filtersets.py:152 ipam/forms/filtersets.py:226 #: ipam/forms/filtersets.py:417 ipam/forms/filtersets.py:470 -#: ipam/forms/model_forms.py:206 ipam/forms/model_forms.py:548 -#: ipam/forms/model_forms.py:640 ipam/tables/ip.py:244 ipam/tables/vlans.py:114 +#: ipam/forms/model_forms.py:206 ipam/forms/model_forms.py:552 +#: ipam/forms/model_forms.py:644 ipam/tables/ip.py:244 ipam/tables/vlans.py:114 #: ipam/tables/vlans.py:216 templates/circuits/circuittermination_edit.html:20 #: templates/circuits/inc/circuit_termination.html:33 #: templates/dcim/device.html:22 templates/dcim/inc/cable_termination.html:8 @@ -172,13 +172,13 @@ msgstr "" #: virtualization/forms/model_forms.py:74 #: virtualization/forms/model_forms.py:107 #: virtualization/forms/model_forms.py:174 virtualization/tables/clusters.py:77 -#: virtualization/tables/virtualmachines.py:53 vpn/forms/filtersets.py:262 +#: virtualization/tables/virtualmachines.py:62 vpn/forms/filtersets.py:262 #: wireless/forms/model_forms.py:77 wireless/forms/model_forms.py:117 msgid "Site" msgstr "" -#: circuits/filtersets.py:60 circuits/filtersets.py:215 -#: circuits/filtersets.py:252 dcim/filtersets.py:215 dcim/filtersets.py:290 +#: circuits/filtersets.py:60 circuits/filtersets.py:221 +#: circuits/filtersets.py:258 dcim/filtersets.py:215 dcim/filtersets.py:290 #: dcim/filtersets.py:363 extras/filtersets.py:436 ipam/filtersets.py:215 #: ipam/filtersets.py:335 ipam/filtersets.py:926 #: virtualization/filtersets.py:75 virtualization/filtersets.py:203 @@ -190,33 +190,39 @@ msgstr "" msgid "ASN (ID)" msgstr "" -#: circuits/filtersets.py:87 circuits/filtersets.py:114 -#: circuits/filtersets.py:148 -msgid "Provider (ID)" +#: circuits/filtersets.py:71 circuits/forms/filtersets.py:27 +#: ipam/forms/model_forms.py:158 ipam/models/asns.py:108 +#: ipam/models/asns.py:125 ipam/tables/asn.py:41 templates/ipam/asn.html:20 +msgid "ASN" msgstr "" #: circuits/filtersets.py:93 circuits/filtersets.py:120 #: circuits/filtersets.py:154 +msgid "Provider (ID)" +msgstr "" + +#: circuits/filtersets.py:99 circuits/filtersets.py:126 +#: circuits/filtersets.py:160 msgid "Provider (slug)" msgstr "" -#: circuits/filtersets.py:159 +#: circuits/filtersets.py:165 msgid "Provider account (ID)" msgstr "" -#: circuits/filtersets.py:164 +#: circuits/filtersets.py:170 msgid "Provider network (ID)" msgstr "" -#: circuits/filtersets.py:168 +#: circuits/filtersets.py:174 msgid "Circuit type (ID)" msgstr "" -#: circuits/filtersets.py:174 +#: circuits/filtersets.py:180 msgid "Circuit type (slug)" msgstr "" -#: circuits/filtersets.py:209 circuits/filtersets.py:246 dcim/filtersets.py:209 +#: circuits/filtersets.py:215 circuits/filtersets.py:252 dcim/filtersets.py:209 #: dcim/filtersets.py:284 dcim/filtersets.py:357 dcim/filtersets.py:927 #: dcim/filtersets.py:1232 dcim/filtersets.py:1727 dcim/filtersets.py:1969 #: dcim/filtersets.py:2028 ipam/filtersets.py:209 ipam/filtersets.py:329 @@ -225,13 +231,13 @@ msgstr "" msgid "Site (ID)" msgstr "" -#: circuits/filtersets.py:238 core/filtersets.py:73 core/filtersets.py:132 +#: circuits/filtersets.py:244 core/filtersets.py:73 core/filtersets.py:132 #: dcim/filtersets.py:640 dcim/filtersets.py:1201 dcim/filtersets.py:2076 #: extras/filtersets.py:40 extras/filtersets.py:69 extras/filtersets.py:101 #: extras/filtersets.py:140 extras/filtersets.py:168 extras/filtersets.py:195 #: extras/filtersets.py:226 extras/filtersets.py:295 extras/filtersets.py:343 #: extras/filtersets.py:403 extras/filtersets.py:562 extras/filtersets.py:604 -#: extras/filtersets.py:645 ipam/forms/model_forms.py:430 +#: extras/filtersets.py:645 ipam/forms/model_forms.py:416 #: netbox/filtersets.py:275 netbox/forms/__init__.py:23 #: netbox/forms/base.py:163 templates/htmx/object_selector.html:28 #: templates/inc/filter_list.html:53 templates/ipam/ipaddress_assign.html:32 @@ -241,7 +247,7 @@ msgstr "" msgid "Search" msgstr "" -#: circuits/filtersets.py:242 circuits/forms/bulk_edit.py:167 +#: circuits/filtersets.py:248 circuits/forms/bulk_edit.py:167 #: circuits/forms/model_forms.py:110 circuits/forms/model_forms.py:132 #: dcim/forms/connections.py:66 templates/circuits/circuit.html:15 #: templates/dcim/inc/cable_termination.html:55 @@ -249,11 +255,11 @@ msgstr "" msgid "Circuit" msgstr "" -#: circuits/filtersets.py:256 +#: circuits/filtersets.py:262 msgid "ProviderNetwork (ID)" msgstr "" -#: circuits/forms/bulk_edit.py:25 circuits/forms/filtersets.py:56 +#: circuits/forms/bulk_edit.py:25 circuits/forms/filtersets.py:52 #: circuits/forms/model_forms.py:26 circuits/tables/providers.py:33 #: dcim/forms/bulk_edit.py:126 dcim/forms/filtersets.py:187 #: dcim/forms/model_forms.py:126 dcim/tables/sites.py:94 @@ -360,8 +366,8 @@ msgstr "" #: circuits/forms/bulk_edit.py:46 circuits/forms/bulk_edit.py:68 #: circuits/forms/bulk_edit.py:118 circuits/forms/bulk_import.py:35 #: circuits/forms/bulk_import.py:50 circuits/forms/bulk_import.py:76 -#: circuits/forms/filtersets.py:70 circuits/forms/filtersets.py:88 -#: circuits/forms/filtersets.py:116 circuits/forms/filtersets.py:131 +#: circuits/forms/filtersets.py:66 circuits/forms/filtersets.py:84 +#: circuits/forms/filtersets.py:112 circuits/forms/filtersets.py:127 #: circuits/forms/model_forms.py:32 circuits/forms/model_forms.py:44 #: circuits/forms/model_forms.py:58 circuits/forms/model_forms.py:92 #: circuits/tables/circuits.py:55 circuits/tables/providers.py:72 @@ -373,18 +379,18 @@ msgstr "" msgid "Provider" msgstr "" -#: circuits/forms/bulk_edit.py:75 circuits/forms/filtersets.py:91 +#: circuits/forms/bulk_edit.py:75 circuits/forms/filtersets.py:87 #: templates/circuits/providernetwork.html:31 msgid "Service ID" msgstr "" -#: circuits/forms/bulk_edit.py:95 circuits/forms/filtersets.py:107 +#: circuits/forms/bulk_edit.py:95 circuits/forms/filtersets.py:103 #: dcim/forms/bulk_edit.py:204 dcim/forms/bulk_edit.py:500 #: dcim/forms/bulk_edit.py:694 dcim/forms/bulk_edit.py:1063 #: dcim/forms/bulk_edit.py:1090 dcim/forms/bulk_edit.py:1562 #: dcim/forms/filtersets.py:977 dcim/forms/filtersets.py:1353 -#: dcim/forms/filtersets.py:1374 dcim/tables/devices.py:722 -#: dcim/tables/devices.py:782 dcim/tables/devices.py:1009 +#: dcim/forms/filtersets.py:1374 dcim/tables/devices.py:726 +#: dcim/tables/devices.py:786 dcim/tables/devices.py:1013 #: dcim/tables/devicetypes.py:245 dcim/tables/devicetypes.py:260 #: dcim/tables/racks.py:32 extras/forms/bulk_edit.py:259 #: extras/tables/tables.py:328 templates/circuits/circuittype.html:33 @@ -396,7 +402,7 @@ msgid "Color" msgstr "" #: circuits/forms/bulk_edit.py:113 circuits/forms/bulk_import.py:89 -#: circuits/forms/filtersets.py:126 core/forms/bulk_edit.py:17 +#: circuits/forms/filtersets.py:122 core/forms/bulk_edit.py:17 #: core/forms/filtersets.py:29 core/tables/data.py:20 core/tables/jobs.py:18 #: dcim/forms/bulk_edit.py:281 dcim/forms/bulk_edit.py:672 #: dcim/forms/bulk_edit.py:811 dcim/forms/bulk_edit.py:879 @@ -415,7 +421,7 @@ msgstr "" #: dcim/forms/filtersets.py:1253 dcim/forms/filtersets.py:1348 #: dcim/forms/filtersets.py:1369 dcim/forms/object_import.py:89 #: dcim/forms/object_import.py:118 dcim/forms/object_import.py:150 -#: dcim/tables/devices.py:211 dcim/tables/devices.py:838 +#: dcim/tables/devices.py:211 dcim/tables/devices.py:842 #: dcim/tables/power.py:77 extras/forms/bulk_import.py:39 #: extras/tables/tables.py:278 extras/tables/tables.py:350 #: extras/tables/tables.py:448 netbox/tables/tables.py:234 @@ -440,12 +446,12 @@ msgid "Type" msgstr "" #: circuits/forms/bulk_edit.py:123 circuits/forms/bulk_import.py:82 -#: circuits/forms/filtersets.py:139 circuits/forms/model_forms.py:97 +#: circuits/forms/filtersets.py:135 circuits/forms/model_forms.py:97 msgid "Provider account" msgstr "" #: circuits/forms/bulk_edit.py:131 circuits/forms/bulk_import.py:95 -#: circuits/forms/filtersets.py:150 core/forms/filtersets.py:34 +#: circuits/forms/filtersets.py:146 core/forms/filtersets.py:34 #: core/forms/filtersets.py:75 core/tables/data.py:23 core/tables/jobs.py:26 #: dcim/forms/bulk_edit.py:104 dcim/forms/bulk_edit.py:179 #: dcim/forms/bulk_edit.py:260 dcim/forms/bulk_edit.py:593 @@ -459,8 +465,8 @@ msgstr "" #: dcim/forms/filtersets.py:281 dcim/forms/filtersets.py:726 #: dcim/forms/filtersets.py:835 dcim/forms/filtersets.py:871 #: dcim/forms/filtersets.py:972 dcim/forms/filtersets.py:1083 -#: dcim/tables/devices.py:173 dcim/tables/devices.py:841 -#: dcim/tables/devices.py:1069 dcim/tables/modules.py:69 +#: dcim/tables/devices.py:173 dcim/tables/devices.py:845 +#: dcim/tables/devices.py:1073 dcim/tables/modules.py:69 #: dcim/tables/power.py:74 dcim/tables/racks.py:66 dcim/tables/sites.py:82 #: dcim/tables/sites.py:133 ipam/forms/bulk_edit.py:240 #: ipam/forms/bulk_edit.py:289 ipam/forms/bulk_edit.py:337 @@ -468,7 +474,7 @@ msgstr "" #: ipam/forms/bulk_import.py:256 ipam/forms/bulk_import.py:292 #: ipam/forms/bulk_import.py:458 ipam/forms/filtersets.py:205 #: ipam/forms/filtersets.py:270 ipam/forms/filtersets.py:341 -#: ipam/forms/filtersets.py:482 ipam/forms/model_forms.py:449 +#: ipam/forms/filtersets.py:482 ipam/forms/model_forms.py:435 #: ipam/tables/ip.py:236 ipam/tables/ip.py:309 ipam/tables/ip.py:359 #: ipam/tables/ip.py:421 ipam/tables/ip.py:448 ipam/tables/vlans.py:122 #: ipam/tables/vlans.py:227 templates/circuits/circuit.html:35 @@ -487,7 +493,7 @@ msgstr "" #: virtualization/forms/bulk_edit.py:117 virtualization/forms/bulk_import.py:54 #: virtualization/forms/bulk_import.py:80 virtualization/forms/filtersets.py:61 #: virtualization/forms/filtersets.py:156 virtualization/tables/clusters.py:74 -#: virtualization/tables/virtualmachines.py:50 vpn/forms/bulk_edit.py:38 +#: virtualization/tables/virtualmachines.py:59 vpn/forms/bulk_edit.py:38 #: vpn/forms/bulk_import.py:37 vpn/forms/filtersets.py:46 #: vpn/tables/tunnels.py:48 wireless/forms/bulk_edit.py:42 #: wireless/forms/bulk_edit.py:104 wireless/forms/bulk_import.py:43 @@ -498,7 +504,7 @@ msgid "Status" msgstr "" #: circuits/forms/bulk_edit.py:137 circuits/forms/bulk_import.py:100 -#: circuits/forms/filtersets.py:119 dcim/forms/bulk_edit.py:120 +#: circuits/forms/filtersets.py:115 dcim/forms/bulk_edit.py:120 #: dcim/forms/bulk_edit.py:185 dcim/forms/bulk_edit.py:255 #: dcim/forms/bulk_edit.py:366 dcim/forms/bulk_edit.py:583 #: dcim/forms/bulk_edit.py:684 dcim/forms/bulk_edit.py:1590 @@ -554,15 +560,15 @@ msgstr "" msgid "Tenant" msgstr "" -#: circuits/forms/bulk_edit.py:142 circuits/forms/filtersets.py:174 +#: circuits/forms/bulk_edit.py:142 circuits/forms/filtersets.py:170 msgid "Install date" msgstr "" -#: circuits/forms/bulk_edit.py:147 circuits/forms/filtersets.py:179 +#: circuits/forms/bulk_edit.py:147 circuits/forms/filtersets.py:175 msgid "Termination date" msgstr "" -#: circuits/forms/bulk_edit.py:153 circuits/forms/filtersets.py:186 +#: circuits/forms/bulk_edit.py:153 circuits/forms/filtersets.py:182 msgid "Commit rate (Kbps)" msgstr "" @@ -595,7 +601,7 @@ msgstr "" #: circuits/forms/bulk_import.py:70 dcim/forms/bulk_import.py:178 #: dcim/forms/bulk_import.py:388 dcim/forms/bulk_import.py:1108 -#: dcim/forms/bulk_import.py:1187 extras/forms/bulk_import.py:229 +#: dcim/forms/bulk_import.py:1187 extras/forms/bulk_import.py:235 msgid "RGB color in hexadecimal. Example:" msgstr "" @@ -631,12 +637,12 @@ msgstr "" msgid "Assigned tenant" msgstr "" -#: circuits/forms/bulk_import.py:123 circuits/forms/filtersets.py:147 +#: circuits/forms/bulk_import.py:123 circuits/forms/filtersets.py:143 #: circuits/forms/model_forms.py:143 msgid "Provider network" msgstr "" -#: circuits/forms/filtersets.py:26 circuits/forms/filtersets.py:118 +#: circuits/forms/filtersets.py:26 circuits/forms/filtersets.py:114 #: dcim/forms/bulk_edit.py:247 dcim/forms/bulk_edit.py:345 #: dcim/forms/bulk_edit.py:575 dcim/forms/bulk_edit.py:622 #: dcim/forms/bulk_edit.py:772 dcim/forms/bulk_import.py:189 @@ -660,7 +666,7 @@ msgstr "" #: extras/filtersets.py:441 extras/forms/filtersets.py:328 #: ipam/forms/bulk_edit.py:456 ipam/forms/filtersets.py:168 #: ipam/forms/filtersets.py:400 ipam/forms/filtersets.py:422 -#: ipam/forms/filtersets.py:448 ipam/forms/model_forms.py:560 +#: ipam/forms/filtersets.py:448 ipam/forms/model_forms.py:564 #: templates/dcim/device.html:26 templates/dcim/device_edit.html:30 #: templates/dcim/inc/cable_termination.html:12 templates/dcim/location.html:27 #: templates/dcim/powerpanel.html:27 templates/dcim/rack.html:29 @@ -670,13 +676,7 @@ msgstr "" msgid "Location" msgstr "" -#: circuits/forms/filtersets.py:27 ipam/forms/model_forms.py:158 -#: ipam/models/asns.py:108 ipam/models/asns.py:125 ipam/tables/asn.py:41 -#: templates/ipam/asn.html:20 -msgid "ASN" -msgstr "" - -#: circuits/forms/filtersets.py:28 circuits/forms/filtersets.py:120 +#: circuits/forms/filtersets.py:28 circuits/forms/filtersets.py:116 #: dcim/forms/filtersets.py:136 dcim/forms/filtersets.py:150 #: dcim/forms/filtersets.py:166 dcim/forms/filtersets.py:198 #: dcim/forms/filtersets.py:249 dcim/forms/filtersets.py:334 @@ -689,7 +689,7 @@ msgstr "" msgid "Contacts" msgstr "" -#: circuits/forms/filtersets.py:33 circuits/forms/filtersets.py:157 +#: circuits/forms/filtersets.py:33 circuits/forms/filtersets.py:153 #: dcim/forms/bulk_edit.py:110 dcim/forms/bulk_edit.py:222 #: dcim/forms/bulk_edit.py:747 dcim/forms/bulk_import.py:92 #: dcim/forms/filtersets.py:70 dcim/forms/filtersets.py:177 @@ -704,7 +704,7 @@ msgstr "" #: ipam/forms/bulk_edit.py:205 ipam/forms/bulk_edit.py:437 #: ipam/forms/bulk_edit.py:509 ipam/forms/filtersets.py:212 #: ipam/forms/filtersets.py:407 ipam/forms/filtersets.py:456 -#: ipam/forms/model_forms.py:532 templates/dcim/device.html:18 +#: ipam/forms/model_forms.py:536 templates/dcim/device.html:18 #: templates/dcim/rack.html:19 templates/dcim/rackreservation.html:25 #: templates/dcim/region.html:26 templates/dcim/site.html:31 #: templates/ipam/prefix.html:50 templates/ipam/vlan.html:19 @@ -714,7 +714,7 @@ msgstr "" msgid "Region" msgstr "" -#: circuits/forms/filtersets.py:38 circuits/forms/filtersets.py:162 +#: circuits/forms/filtersets.py:38 circuits/forms/filtersets.py:158 #: dcim/forms/bulk_edit.py:230 dcim/forms/bulk_edit.py:755 #: dcim/forms/filtersets.py:75 dcim/forms/filtersets.py:182 #: dcim/forms/filtersets.py:208 dcim/forms/filtersets.py:269 @@ -724,19 +724,15 @@ msgstr "" #: extras/filtersets.py:425 ipam/forms/bulk_edit.py:210 #: ipam/forms/bulk_edit.py:444 ipam/forms/bulk_edit.py:514 #: ipam/forms/filtersets.py:217 ipam/forms/filtersets.py:412 -#: ipam/forms/filtersets.py:461 ipam/forms/model_forms.py:545 +#: ipam/forms/filtersets.py:461 ipam/forms/model_forms.py:549 #: virtualization/forms/bulk_edit.py:85 virtualization/forms/filtersets.py:68 #: virtualization/forms/filtersets.py:134 #: virtualization/forms/model_forms.py:101 msgid "Site group" msgstr "" -#: circuits/forms/filtersets.py:51 -msgid "ASN (legacy)" -msgstr "" - -#: circuits/forms/filtersets.py:65 circuits/forms/filtersets.py:83 -#: circuits/forms/filtersets.py:102 circuits/forms/filtersets.py:117 +#: circuits/forms/filtersets.py:61 circuits/forms/filtersets.py:79 +#: circuits/forms/filtersets.py:98 circuits/forms/filtersets.py:113 #: core/forms/filtersets.py:63 dcim/forms/bulk_edit.py:718 #: dcim/forms/filtersets.py:164 dcim/forms/filtersets.py:196 #: dcim/forms/filtersets.py:825 dcim/forms/filtersets.py:920 @@ -761,7 +757,7 @@ msgstr "" msgid "Attributes" msgstr "" -#: circuits/forms/filtersets.py:73 circuits/tables/circuits.py:60 +#: circuits/forms/filtersets.py:69 circuits/tables/circuits.py:60 #: circuits/tables/providers.py:66 templates/circuits/circuit.html:23 #: templates/circuits/provideraccount.html:25 msgid "Account" @@ -782,7 +778,7 @@ msgstr "" #: dcim/models/device_component_templates.py:491 #: dcim/models/device_component_templates.py:591 #: dcim/models/device_components.py:976 dcim/models/device_components.py:1050 -#: dcim/models/device_components.py:1166 dcim/models/devices.py:467 +#: dcim/models/device_components.py:1166 dcim/models/devices.py:469 #: dcim/models/racks.py:43 extras/models/tags.py:28 msgid "color" msgstr "" @@ -804,8 +800,8 @@ msgid "Unique circuit ID" msgstr "" #: circuits/models/circuits.py:67 core/models/data.py:55 core/models/jobs.py:85 -#: dcim/models/cables.py:49 dcim/models/devices.py:641 -#: dcim/models/devices.py:1165 dcim/models/devices.py:1374 +#: dcim/models/cables.py:49 dcim/models/devices.py:643 +#: dcim/models/devices.py:1170 dcim/models/devices.py:1379 #: dcim/models/power.py:95 dcim/models/racks.py:97 dcim/models/sites.py:154 #: dcim/models/sites.py:266 ipam/models/ip.py:252 ipam/models/ip.py:521 #: ipam/models/ip.py:729 ipam/models/vlans.py:175 @@ -883,7 +879,7 @@ msgstr "" #: extras/models/models.py:541 extras/models/staging.py:31 #: extras/models/tags.py:32 netbox/models/__init__.py:109 #: netbox/models/__init__.py:144 netbox/models/__init__.py:190 -#: users/models.py:273 users/models.py:348 +#: users/models.py:274 users/models.py:353 #: virtualization/models/virtualmachines.py:282 msgid "description" msgstr "" @@ -909,8 +905,8 @@ msgstr "" #: circuits/models/providers.py:22 circuits/models/providers.py:66 #: circuits/models/providers.py:104 core/models/data.py:42 #: core/models/jobs.py:46 dcim/models/device_component_templates.py:43 -#: dcim/models/device_components.py:54 dcim/models/devices.py:581 -#: dcim/models/devices.py:1305 dcim/models/devices.py:1370 +#: dcim/models/device_components.py:54 dcim/models/devices.py:583 +#: dcim/models/devices.py:1310 dcim/models/devices.py:1375 #: dcim/models/power.py:39 dcim/models/power.py:91 dcim/models/racks.py:62 #: dcim/models/sites.py:138 extras/models/configs.py:36 #: extras/models/configs.py:215 extras/models/customfields.py:89 @@ -923,7 +919,7 @@ msgstr "" #: ipam/models/vrfs.py:79 netbox/models/__init__.py:136 #: netbox/models/__init__.py:180 tenancy/models/contacts.py:64 #: tenancy/models/tenants.py:20 tenancy/models/tenants.py:45 -#: users/models.py:344 virtualization/models/clusters.py:57 +#: users/models.py:349 virtualization/models/clusters.py:57 #: virtualization/models/virtualmachines.py:70 #: virtualization/models/virtualmachines.py:272 vpn/models/crypto.py:24 #: vpn/models/crypto.py:71 vpn/models/crypto.py:131 vpn/models/crypto.py:183 @@ -981,13 +977,13 @@ msgstr "" #: core/tables/data.py:16 core/tables/jobs.py:14 dcim/forms/filtersets.py:60 #: dcim/forms/object_create.py:42 dcim/tables/devices.py:88 #: dcim/tables/devices.py:125 dcim/tables/devices.py:167 -#: dcim/tables/devices.py:318 dcim/tables/devices.py:400 -#: dcim/tables/devices.py:444 dcim/tables/devices.py:496 -#: dcim/tables/devices.py:548 dcim/tables/devices.py:668 -#: dcim/tables/devices.py:749 dcim/tables/devices.py:799 -#: dcim/tables/devices.py:865 dcim/tables/devices.py:980 -#: dcim/tables/devices.py:1000 dcim/tables/devices.py:1029 -#: dcim/tables/devices.py:1059 dcim/tables/devicetypes.py:32 +#: dcim/tables/devices.py:322 dcim/tables/devices.py:404 +#: dcim/tables/devices.py:448 dcim/tables/devices.py:500 +#: dcim/tables/devices.py:552 dcim/tables/devices.py:672 +#: dcim/tables/devices.py:753 dcim/tables/devices.py:803 +#: dcim/tables/devices.py:869 dcim/tables/devices.py:984 +#: dcim/tables/devices.py:1004 dcim/tables/devices.py:1033 +#: dcim/tables/devices.py:1063 dcim/tables/devicetypes.py:32 #: dcim/tables/power.py:22 dcim/tables/power.py:62 dcim/tables/racks.py:23 #: dcim/tables/racks.py:53 dcim/tables/sites.py:24 dcim/tables/sites.py:51 #: dcim/tables/sites.py:78 dcim/tables/sites.py:125 @@ -1050,9 +1046,9 @@ msgstr "" #: virtualization/forms/object_create.py:23 #: virtualization/tables/clusters.py:17 virtualization/tables/clusters.py:39 #: virtualization/tables/clusters.py:62 -#: virtualization/tables/virtualmachines.py:45 -#: virtualization/tables/virtualmachines.py:119 -#: virtualization/tables/virtualmachines.py:172 vpn/tables/crypto.py:18 +#: virtualization/tables/virtualmachines.py:54 +#: virtualization/tables/virtualmachines.py:132 +#: virtualization/tables/virtualmachines.py:185 vpn/tables/crypto.py:18 #: vpn/tables/crypto.py:57 vpn/tables/crypto.py:93 vpn/tables/crypto.py:129 #: vpn/tables/crypto.py:158 vpn/tables/l2vpn.py:23 vpn/tables/tunnels.py:18 #: vpn/tables/tunnels.py:40 wireless/tables/wirelesslan.py:18 @@ -1087,7 +1083,7 @@ msgstr "" #: circuits/tables/circuits.py:75 circuits/tables/providers.py:48 #: circuits/tables/providers.py:82 circuits/tables/providers.py:107 -#: dcim/tables/devices.py:1042 dcim/tables/devicetypes.py:92 +#: dcim/tables/devices.py:1046 dcim/tables/devicetypes.py:92 #: dcim/tables/modules.py:29 dcim/tables/modules.py:72 dcim/tables/power.py:39 #: dcim/tables/power.py:96 dcim/tables/racks.py:76 dcim/tables/racks.py:156 #: dcim/tables/sites.py:103 extras/forms/bulk_edit.py:320 @@ -1099,7 +1095,7 @@ msgstr "" #: templates/inc/panels/comments.html:6 tenancy/tables/contacts.py:68 #: tenancy/tables/tenants.py:46 utilities/forms/fields/fields.py:29 #: virtualization/tables/clusters.py:91 -#: virtualization/tables/virtualmachines.py:68 vpn/tables/crypto.py:37 +#: virtualization/tables/virtualmachines.py:81 vpn/tables/crypto.py:37 #: vpn/tables/crypto.py:74 vpn/tables/crypto.py:109 vpn/tables/crypto.py:140 #: vpn/tables/crypto.py:173 vpn/tables/l2vpn.py:37 vpn/tables/tunnels.py:61 #: wireless/tables/wirelesslan.py:27 wireless/tables/wirelesslan.py:58 @@ -1136,7 +1132,7 @@ msgid "Completed" msgstr "" #: core/choices.py:22 core/choices.py:59 dcim/choices.py:176 -#: dcim/choices.py:222 dcim/choices.py:1496 extras/choices.py:212 +#: dcim/choices.py:222 dcim/choices.py:1502 extras/choices.py:212 #: virtualization/choices.py:47 msgid "Failed" msgstr "" @@ -1218,7 +1214,7 @@ msgstr "" #: core/forms/bulk_edit.py:24 core/forms/filtersets.py:39 #: core/tables/data.py:26 dcim/forms/bulk_edit.py:1012 #: dcim/forms/bulk_edit.py:1285 dcim/forms/filtersets.py:1270 -#: dcim/tables/devices.py:573 dcim/tables/devicetypes.py:221 +#: dcim/tables/devices.py:577 dcim/tables/devicetypes.py:221 #: extras/forms/bulk_edit.py:97 extras/forms/bulk_edit.py:161 #: extras/forms/bulk_edit.py:220 extras/forms/filtersets.py:119 #: extras/forms/filtersets.py:206 extras/forms/filtersets.py:267 @@ -1352,7 +1348,7 @@ msgstr "" msgid "Rack Elevations" msgstr "" -#: core/forms/model_forms.py:148 dcim/choices.py:1407 +#: core/forms/model_forms.py:148 dcim/choices.py:1413 #: dcim/forms/bulk_edit.py:859 dcim/forms/bulk_edit.py:1242 #: dcim/forms/bulk_edit.py:1260 dcim/tables/racks.py:89 #: netbox/navigation/menu.py:276 netbox/navigation/menu.py:280 @@ -1413,7 +1409,7 @@ msgstr "" #: core/models/config.py:18 core/models/data.py:282 core/models/files.py:27 #: core/models/jobs.py:50 extras/models/models.py:760 -#: netbox/models/features.py:52 users/models.py:248 +#: netbox/models/features.py:52 users/models.py:249 msgid "created" msgstr "" @@ -1471,7 +1467,7 @@ msgstr "" #: core/models/data.py:62 dcim/models/device_component_templates.py:392 #: dcim/models/device_components.py:513 extras/models/models.py:88 -#: extras/models/models.py:331 extras/models/models.py:556 users/models.py:353 +#: extras/models/models.py:331 extras/models/models.py:556 users/models.py:358 msgid "enabled" msgstr "" @@ -1681,7 +1677,7 @@ msgid "Staging" msgstr "" #: dcim/choices.py:23 dcim/choices.py:178 dcim/choices.py:223 -#: dcim/choices.py:1420 virtualization/choices.py:23 +#: dcim/choices.py:1426 virtualization/choices.py:23 #: virtualization/choices.py:48 msgid "Decommissioning" msgstr "" @@ -1741,7 +1737,7 @@ msgstr "" msgid "Millimeters" msgstr "" -#: dcim/choices.py:115 dcim/choices.py:1442 +#: dcim/choices.py:115 dcim/choices.py:1448 msgid "Inches" msgstr "" @@ -1753,8 +1749,8 @@ msgstr "" #: dcim/forms/filtersets.py:226 dcim/forms/model_forms.py:73 #: dcim/forms/model_forms.py:94 dcim/forms/model_forms.py:172 #: dcim/forms/model_forms.py:962 dcim/forms/model_forms.py:1303 -#: dcim/forms/object_import.py:181 dcim/tables/devices.py:676 -#: dcim/tables/devices.py:960 extras/tables/tables.py:181 +#: dcim/forms/object_import.py:181 dcim/tables/devices.py:680 +#: dcim/tables/devices.py:964 extras/tables/tables.py:181 #: ipam/tables/fhrp.py:59 ipam/tables/ip.py:374 ipam/tables/services.py:44 #: templates/dcim/interface.html:105 templates/dcim/interface.html:321 #: templates/dcim/location.html:44 templates/dcim/region.html:38 @@ -1766,7 +1762,7 @@ msgstr "" #: tenancy/forms/bulk_import.py:58 tenancy/forms/model_forms.py:24 #: tenancy/forms/model_forms.py:69 virtualization/forms/bulk_edit.py:206 #: virtualization/forms/bulk_import.py:151 -#: virtualization/tables/virtualmachines.py:142 wireless/forms/bulk_edit.py:23 +#: virtualization/tables/virtualmachines.py:155 wireless/forms/bulk_edit.py:23 #: wireless/forms/bulk_import.py:21 wireless/forms/model_forms.py:20 msgid "Parent" msgstr "" @@ -1815,7 +1811,7 @@ msgstr "" msgid "Side to rear" msgstr "" -#: dcim/choices.py:198 dcim/choices.py:1215 +#: dcim/choices.py:198 dcim/choices.py:1221 msgid "Passive" msgstr "" @@ -1843,8 +1839,8 @@ msgstr "" msgid "Proprietary" msgstr "" -#: dcim/choices.py:534 dcim/choices.py:764 dcim/choices.py:1131 -#: dcim/choices.py:1133 dcim/choices.py:1338 dcim/choices.py:1340 +#: dcim/choices.py:534 dcim/choices.py:764 dcim/choices.py:1137 +#: dcim/choices.py:1139 dcim/choices.py:1344 dcim/choices.py:1346 #: netbox/navigation/menu.py:188 msgid "Other" msgstr "" @@ -1857,177 +1853,177 @@ msgstr "" msgid "Physical" msgstr "" -#: dcim/choices.py:795 dcim/choices.py:949 +#: dcim/choices.py:795 dcim/choices.py:952 msgid "Virtual" msgstr "" -#: dcim/choices.py:796 dcim/choices.py:1019 dcim/forms/bulk_edit.py:1398 +#: dcim/choices.py:796 dcim/choices.py:1022 dcim/forms/bulk_edit.py:1398 #: dcim/forms/filtersets.py:1233 dcim/forms/model_forms.py:888 #: dcim/forms/model_forms.py:1197 netbox/navigation/menu.py:128 #: netbox/navigation/menu.py:132 templates/dcim/interface.html:217 msgid "Wireless" msgstr "" -#: dcim/choices.py:947 +#: dcim/choices.py:950 msgid "Virtual interfaces" msgstr "" -#: dcim/choices.py:950 dcim/forms/bulk_edit.py:1295 +#: dcim/choices.py:953 dcim/forms/bulk_edit.py:1295 #: dcim/forms/bulk_import.py:785 dcim/forms/model_forms.py:876 -#: dcim/tables/devices.py:680 templates/dcim/interface.html:109 +#: dcim/tables/devices.py:684 templates/dcim/interface.html:109 #: templates/virtualization/vminterface.html:46 #: virtualization/forms/bulk_edit.py:211 #: virtualization/forms/bulk_import.py:158 -#: virtualization/tables/virtualmachines.py:146 +#: virtualization/tables/virtualmachines.py:159 msgid "Bridge" msgstr "" -#: dcim/choices.py:951 +#: dcim/choices.py:954 msgid "Link Aggregation Group (LAG)" msgstr "" -#: dcim/choices.py:955 +#: dcim/choices.py:958 msgid "Ethernet (fixed)" msgstr "" -#: dcim/choices.py:969 +#: dcim/choices.py:972 msgid "Ethernet (modular)" msgstr "" -#: dcim/choices.py:1005 +#: dcim/choices.py:1008 msgid "Ethernet (backplane)" msgstr "" -#: dcim/choices.py:1033 +#: dcim/choices.py:1036 msgid "Cellular" msgstr "" -#: dcim/choices.py:1080 dcim/forms/filtersets.py:302 +#: dcim/choices.py:1086 dcim/forms/filtersets.py:302 #: dcim/forms/filtersets.py:736 dcim/forms/filtersets.py:876 #: dcim/forms/filtersets.py:1426 templates/dcim/inventoryitem.html:53 #: templates/dcim/virtualchassis_edit.html:55 msgid "Serial" msgstr "" -#: dcim/choices.py:1095 +#: dcim/choices.py:1101 msgid "Coaxial" msgstr "" -#: dcim/choices.py:1112 +#: dcim/choices.py:1118 msgid "Stacking" msgstr "" -#: dcim/choices.py:1162 +#: dcim/choices.py:1168 msgid "Half" msgstr "" -#: dcim/choices.py:1163 +#: dcim/choices.py:1169 msgid "Full" msgstr "" -#: dcim/choices.py:1164 netbox/preferences.py:29 wireless/choices.py:480 +#: dcim/choices.py:1170 netbox/preferences.py:29 wireless/choices.py:480 msgid "Auto" msgstr "" -#: dcim/choices.py:1175 +#: dcim/choices.py:1181 msgid "Access" msgstr "" -#: dcim/choices.py:1176 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 +#: dcim/choices.py:1182 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 #: templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "" -#: dcim/choices.py:1177 +#: dcim/choices.py:1183 msgid "Tagged (All)" msgstr "" -#: dcim/choices.py:1206 +#: dcim/choices.py:1212 msgid "IEEE Standard" msgstr "" -#: dcim/choices.py:1217 +#: dcim/choices.py:1223 msgid "Passive 24V (2-pair)" msgstr "" -#: dcim/choices.py:1218 +#: dcim/choices.py:1224 msgid "Passive 24V (4-pair)" msgstr "" -#: dcim/choices.py:1219 +#: dcim/choices.py:1225 msgid "Passive 48V (2-pair)" msgstr "" -#: dcim/choices.py:1220 +#: dcim/choices.py:1226 msgid "Passive 48V (4-pair)" msgstr "" -#: dcim/choices.py:1282 dcim/choices.py:1378 +#: dcim/choices.py:1288 dcim/choices.py:1384 msgid "Copper" msgstr "" -#: dcim/choices.py:1305 +#: dcim/choices.py:1311 msgid "Fiber Optic" msgstr "" -#: dcim/choices.py:1394 +#: dcim/choices.py:1400 msgid "Fiber" msgstr "" -#: dcim/choices.py:1418 dcim/forms/filtersets.py:1140 +#: dcim/choices.py:1424 dcim/forms/filtersets.py:1140 msgid "Connected" msgstr "" -#: dcim/choices.py:1437 +#: dcim/choices.py:1443 msgid "Kilometers" msgstr "" -#: dcim/choices.py:1438 templates/dcim/cable_trace.html:62 +#: dcim/choices.py:1444 templates/dcim/cable_trace.html:62 msgid "Meters" msgstr "" -#: dcim/choices.py:1439 +#: dcim/choices.py:1445 msgid "Centimeters" msgstr "" -#: dcim/choices.py:1440 +#: dcim/choices.py:1446 msgid "Miles" msgstr "" -#: dcim/choices.py:1441 templates/dcim/cable_trace.html:63 +#: dcim/choices.py:1447 templates/dcim/cable_trace.html:63 msgid "Feet" msgstr "" -#: dcim/choices.py:1457 templates/dcim/device.html:332 +#: dcim/choices.py:1463 templates/dcim/device.html:332 #: templates/dcim/rack.html:157 msgid "Kilograms" msgstr "" -#: dcim/choices.py:1458 +#: dcim/choices.py:1464 msgid "Grams" msgstr "" -#: dcim/choices.py:1459 templates/dcim/rack.html:158 +#: dcim/choices.py:1465 templates/dcim/rack.html:158 msgid "Pounds" msgstr "" -#: dcim/choices.py:1460 +#: dcim/choices.py:1466 msgid "Ounces" msgstr "" -#: dcim/choices.py:1506 tenancy/choices.py:17 +#: dcim/choices.py:1512 tenancy/choices.py:17 msgid "Primary" msgstr "" -#: dcim/choices.py:1507 +#: dcim/choices.py:1513 msgid "Redundant" msgstr "" -#: dcim/choices.py:1528 +#: dcim/choices.py:1534 msgid "Single phase" msgstr "" -#: dcim/choices.py:1529 +#: dcim/choices.py:1535 msgid "Three-phase" msgstr "" @@ -2304,7 +2300,7 @@ msgid "Virtual Chassis (ID)" msgstr "" #: dcim/filtersets.py:1303 dcim/forms/filtersets.py:106 -#: dcim/tables/devices.py:235 netbox/navigation/menu.py:67 +#: dcim/tables/devices.py:239 netbox/navigation/menu.py:67 #: templates/dcim/device.html:123 templates/dcim/device_edit.html:93 #: templates/dcim/virtualchassis.html:20 #: templates/dcim/virtualchassis_add.html:8 @@ -2328,7 +2324,7 @@ msgstr "" #: dcim/filtersets.py:1448 dcim/forms/bulk_edit.py:1374 #: dcim/forms/bulk_import.py:836 dcim/forms/filtersets.py:1328 #: dcim/forms/model_forms.py:1182 dcim/models/device_components.py:712 -#: dcim/tables/devices.py:642 ipam/filtersets.py:282 ipam/filtersets.py:293 +#: dcim/tables/devices.py:646 ipam/filtersets.py:282 ipam/filtersets.py:293 #: ipam/filtersets.py:449 ipam/filtersets.py:550 ipam/filtersets.py:561 #: ipam/forms/bulk_edit.py:226 ipam/forms/bulk_edit.py:281 #: ipam/forms/bulk_edit.py:323 ipam/forms/bulk_import.py:156 @@ -2336,8 +2332,8 @@ msgstr "" #: ipam/forms/filtersets.py:66 ipam/forms/filtersets.py:167 #: ipam/forms/filtersets.py:295 ipam/forms/model_forms.py:59 #: ipam/forms/model_forms.py:203 ipam/forms/model_forms.py:246 -#: ipam/forms/model_forms.py:290 ipam/forms/model_forms.py:412 -#: ipam/forms/model_forms.py:426 ipam/forms/model_forms.py:440 +#: ipam/forms/model_forms.py:290 ipam/forms/model_forms.py:398 +#: ipam/forms/model_forms.py:412 ipam/forms/model_forms.py:426 #: ipam/models/ip.py:232 ipam/models/ip.py:511 ipam/models/ip.py:719 #: ipam/models/vrfs.py:62 ipam/tables/ip.py:241 ipam/tables/ip.py:306 #: ipam/tables/ip.py:356 ipam/tables/ip.py:445 @@ -2350,7 +2346,7 @@ msgstr "" #: virtualization/forms/filtersets.py:220 #: virtualization/forms/model_forms.py:347 #: virtualization/models/virtualmachines.py:348 -#: virtualization/tables/virtualmachines.py:123 +#: virtualization/tables/virtualmachines.py:136 msgid "VRF" msgstr "" @@ -2364,7 +2360,7 @@ msgid "L2VPN (ID)" msgstr "" #: dcim/filtersets.py:1465 dcim/forms/filtersets.py:1333 -#: dcim/tables/devices.py:590 ipam/filtersets.py:973 +#: dcim/tables/devices.py:594 ipam/filtersets.py:973 #: ipam/forms/filtersets.py:499 ipam/tables/vlans.py:133 #: templates/dcim/interface.html:94 templates/ipam/vlan.html:69 #: templates/vpn/l2vpntermination.html:15 @@ -2435,7 +2431,7 @@ msgstr "" #: dcim/forms/bulk_create.py:112 dcim/forms/filtersets.py:1390 #: dcim/forms/model_forms.py:426 dcim/forms/model_forms.py:475 #: dcim/forms/object_create.py:196 dcim/forms/object_create.py:352 -#: dcim/tables/devices.py:198 dcim/tables/devices.py:725 +#: dcim/tables/devices.py:198 dcim/tables/devices.py:729 #: dcim/tables/devicetypes.py:242 templates/dcim/device.html:45 #: templates/dcim/device.html:129 templates/dcim/modulebay.html:35 #: templates/dcim/virtualchassis.html:59 @@ -2452,7 +2448,7 @@ msgstr "" #: dcim/forms/bulk_edit.py:115 dcim/forms/bulk_import.py:99 #: dcim/forms/model_forms.py:120 dcim/tables/sites.py:89 ipam/filtersets.py:936 #: ipam/forms/bulk_edit.py:528 ipam/forms/bulk_import.py:444 -#: ipam/forms/model_forms.py:509 ipam/tables/fhrp.py:67 +#: ipam/forms/model_forms.py:495 ipam/tables/fhrp.py:67 #: ipam/tables/vlans.py:118 ipam/tables/vlans.py:221 #: templates/dcim/interface.html:294 templates/dcim/site.html:37 #: templates/ipam/inc/panels/fhrp_groups.html:10 templates/ipam/vlan.html:30 @@ -2502,8 +2498,8 @@ msgstr "" #: dcim/forms/filtersets.py:704 dcim/forms/filtersets.py:1417 #: dcim/forms/model_forms.py:224 dcim/forms/model_forms.py:970 #: dcim/forms/model_forms.py:1311 dcim/forms/object_import.py:186 -#: dcim/tables/devices.py:202 dcim/tables/devices.py:833 -#: dcim/tables/devices.py:944 dcim/tables/devicetypes.py:300 +#: dcim/tables/devices.py:202 dcim/tables/devices.py:837 +#: dcim/tables/devices.py:948 dcim/tables/devicetypes.py:300 #: dcim/tables/racks.py:69 extras/filtersets.py:457 ipam/forms/bulk_edit.py:245 #: ipam/forms/bulk_edit.py:294 ipam/forms/bulk_edit.py:342 #: ipam/forms/bulk_edit.py:546 ipam/forms/bulk_import.py:196 @@ -2512,7 +2508,7 @@ msgstr "" #: ipam/forms/filtersets.py:278 ipam/forms/filtersets.py:346 #: ipam/forms/filtersets.py:490 ipam/forms/model_forms.py:187 #: ipam/forms/model_forms.py:222 ipam/forms/model_forms.py:249 -#: ipam/forms/model_forms.py:647 ipam/tables/ip.py:257 ipam/tables/ip.py:313 +#: ipam/forms/model_forms.py:651 ipam/tables/ip.py:257 ipam/tables/ip.py:313 #: ipam/tables/ip.py:363 ipam/tables/vlans.py:126 ipam/tables/vlans.py:230 #: templates/dcim/device.html:187 #: templates/dcim/inc/panels/inventory_items.html:12 @@ -2529,7 +2525,7 @@ msgstr "" #: virtualization/forms/bulk_import.py:106 #: virtualization/forms/filtersets.py:153 #: virtualization/forms/model_forms.py:198 -#: virtualization/tables/virtualmachines.py:65 vpn/forms/bulk_edit.py:86 +#: virtualization/tables/virtualmachines.py:74 vpn/forms/bulk_edit.py:86 #: vpn/forms/bulk_import.py:81 vpn/forms/filtersets.py:84 #: vpn/forms/model_forms.py:77 vpn/forms/model_forms.py:112 #: vpn/tables/tunnels.py:82 @@ -2623,7 +2619,7 @@ msgstr "" #: dcim/forms/model_forms.py:669 dcim/forms/object_create.py:399 #: dcim/tables/devices.py:194 dcim/tables/power.py:70 dcim/tables/racks.py:148 #: ipam/forms/bulk_edit.py:464 ipam/forms/filtersets.py:427 -#: ipam/forms/model_forms.py:571 templates/dcim/device.html:30 +#: ipam/forms/model_forms.py:575 templates/dcim/device.html:30 #: templates/dcim/inc/cable_termination.html:16 #: templates/dcim/powerfeed.html:31 templates/dcim/rack.html:14 #: templates/dcim/rack/base.html:4 templates/dcim/rack_edit.html:8 @@ -2655,7 +2651,7 @@ msgstr "" #: dcim/forms/model_forms.py:334 dcim/forms/model_forms.py:374 #: dcim/forms/model_forms.py:975 dcim/forms/model_forms.py:1316 #: dcim/forms/object_import.py:192 dcim/tables/devices.py:129 -#: dcim/tables/devices.py:205 dcim/tables/devices.py:947 +#: dcim/tables/devices.py:205 dcim/tables/devices.py:951 #: dcim/tables/devicetypes.py:81 dcim/tables/devicetypes.py:304 #: dcim/tables/modules.py:20 dcim/tables/modules.py:60 #: templates/dcim/devicetype.html:17 templates/dcim/inventoryitem.html:45 @@ -2702,7 +2698,7 @@ msgstr "" msgid "Module Type" msgstr "" -#: dcim/forms/bulk_edit.py:506 dcim/models/devices.py:472 +#: dcim/forms/bulk_edit.py:506 dcim/models/devices.py:474 msgid "VM role" msgstr "" @@ -2734,13 +2730,15 @@ msgstr "" #: dcim/forms/bulk_edit.py:588 dcim/forms/bulk_import.py:443 #: dcim/forms/filtersets.py:723 dcim/forms/model_forms.py:389 -#: dcim/forms/model_forms.py:448 extras/filtersets.py:468 -#: templates/dcim/device.html:191 templates/dcim/platform.html:27 +#: dcim/forms/model_forms.py:448 dcim/tables/devices.py:215 +#: extras/filtersets.py:468 templates/dcim/device.html:191 +#: templates/dcim/platform.html:27 #: templates/virtualization/virtualmachine.html:30 #: virtualization/forms/bulk_edit.py:159 #: virtualization/forms/bulk_import.py:122 #: virtualization/forms/filtersets.py:164 #: virtualization/forms/model_forms.py:206 +#: virtualization/tables/virtualmachines.py:78 msgid "Platform" msgstr "" @@ -2764,16 +2762,16 @@ msgstr "" #: dcim/forms/model_forms.py:760 dcim/forms/model_forms.py:1011 #: dcim/forms/model_forms.py:1460 dcim/forms/object_create.py:256 #: dcim/tables/connections.py:22 dcim/tables/connections.py:41 -#: dcim/tables/connections.py:60 dcim/tables/devices.py:314 -#: dcim/tables/devices.py:379 dcim/tables/devices.py:423 -#: dcim/tables/devices.py:468 dcim/tables/devices.py:522 -#: dcim/tables/devices.py:614 dcim/tables/devices.py:715 -#: dcim/tables/devices.py:775 dcim/tables/devices.py:825 -#: dcim/tables/devices.py:885 dcim/tables/devices.py:937 -#: dcim/tables/devices.py:1063 dcim/tables/modules.py:52 +#: dcim/tables/connections.py:60 dcim/tables/devices.py:318 +#: dcim/tables/devices.py:383 dcim/tables/devices.py:427 +#: dcim/tables/devices.py:472 dcim/tables/devices.py:526 +#: dcim/tables/devices.py:618 dcim/tables/devices.py:719 +#: dcim/tables/devices.py:779 dcim/tables/devices.py:829 +#: dcim/tables/devices.py:889 dcim/tables/devices.py:941 +#: dcim/tables/devices.py:1067 dcim/tables/modules.py:52 #: extras/forms/filtersets.py:329 ipam/forms/bulk_import.py:303 #: ipam/forms/bulk_import.py:489 ipam/forms/filtersets.py:532 -#: ipam/forms/model_forms.py:685 ipam/tables/vlans.py:176 +#: ipam/forms/model_forms.py:689 ipam/tables/vlans.py:176 #: templates/dcim/consoleport.html:23 templates/dcim/consoleserverport.html:23 #: templates/dcim/device.html:14 templates/dcim/device.html:128 #: templates/dcim/device_edit.html:10 templates/dcim/devicebay.html:23 @@ -2795,7 +2793,7 @@ msgstr "" #: virtualization/forms/bulk_import.py:99 #: virtualization/forms/filtersets.py:124 #: virtualization/forms/model_forms.py:188 -#: virtualization/tables/virtualmachines.py:61 vpn/choices.py:44 +#: virtualization/tables/virtualmachines.py:70 vpn/choices.py:44 #: vpn/forms/bulk_import.py:86 vpn/forms/bulk_import.py:283 #: vpn/forms/filtersets.py:271 vpn/forms/model_forms.py:89 #: vpn/forms/model_forms.py:124 vpn/forms/model_forms.py:237 @@ -2934,7 +2932,7 @@ msgid "Wireless role" msgstr "" #: dcim/forms/bulk_edit.py:1178 dcim/forms/model_forms.py:595 -#: dcim/forms/model_forms.py:1026 dcim/tables/devices.py:337 +#: dcim/forms/model_forms.py:1026 dcim/tables/devices.py:341 #: templates/dcim/consoleport.html:27 templates/dcim/consoleserverport.html:27 #: templates/dcim/frontport.html:27 templates/dcim/interface.html:35 #: templates/dcim/module.html:51 templates/dcim/modulebay.html:57 @@ -2943,7 +2941,7 @@ msgstr "" msgid "Module" msgstr "" -#: dcim/forms/bulk_edit.py:1305 dcim/tables/devices.py:685 +#: dcim/forms/bulk_edit.py:1305 dcim/tables/devices.py:689 #: templates/dcim/interface.html:113 msgid "LAG" msgstr "" @@ -2955,7 +2953,7 @@ msgstr "" #: dcim/forms/bulk_edit.py:1316 dcim/forms/bulk_import.py:659 #: dcim/forms/bulk_import.py:685 dcim/forms/filtersets.py:1163 #: dcim/forms/filtersets.py:1185 dcim/forms/filtersets.py:1258 -#: dcim/tables/devices.py:626 +#: dcim/tables/devices.py:630 #: templates/circuits/inc/circuit_termination.html:94 #: templates/dcim/consoleport.html:43 templates/dcim/consoleserverport.html:43 msgid "Speed" @@ -2980,13 +2978,13 @@ msgid "VLAN group" msgstr "" #: dcim/forms/bulk_edit.py:1361 dcim/forms/model_forms.py:1164 -#: dcim/tables/devices.py:599 virtualization/forms/bulk_edit.py:247 +#: dcim/tables/devices.py:603 virtualization/forms/bulk_edit.py:247 #: virtualization/forms/model_forms.py:329 msgid "Untagged VLAN" msgstr "" #: dcim/forms/bulk_edit.py:1369 dcim/forms/model_forms.py:1173 -#: dcim/tables/devices.py:605 virtualization/forms/bulk_edit.py:255 +#: dcim/tables/devices.py:609 virtualization/forms/bulk_edit.py:255 #: virtualization/forms/model_forms.py:338 msgid "Tagged VLANs" msgstr "" @@ -2996,7 +2994,7 @@ msgid "Wireless LAN group" msgstr "" #: dcim/forms/bulk_edit.py:1384 dcim/forms/model_forms.py:1151 -#: dcim/tables/devices.py:635 netbox/navigation/menu.py:134 +#: dcim/tables/devices.py:639 netbox/navigation/menu.py:134 #: templates/dcim/interface.html:289 wireless/tables/wirelesslan.py:24 msgid "Wireless LANs" msgstr "" @@ -3167,9 +3165,9 @@ msgid "Virtual chassis" msgstr "" #: dcim/forms/bulk_import.py:462 dcim/forms/model_forms.py:457 -#: dcim/tables/devices.py:231 extras/filtersets.py:501 +#: dcim/tables/devices.py:235 extras/filtersets.py:501 #: extras/forms/filtersets.py:330 ipam/forms/bulk_edit.py:478 -#: ipam/forms/model_forms.py:588 templates/dcim/device.html:239 +#: ipam/forms/model_forms.py:592 templates/dcim/device.html:239 #: templates/virtualization/cluster.html:11 #: templates/virtualization/virtualmachine.html:92 #: templates/virtualization/virtualmachine.html:102 @@ -3179,7 +3177,7 @@ msgstr "" #: virtualization/forms/filtersets.py:196 #: virtualization/forms/model_forms.py:82 #: virtualization/forms/model_forms.py:179 -#: virtualization/tables/virtualmachines.py:57 +#: virtualization/tables/virtualmachines.py:66 msgid "Cluster" msgstr "" @@ -3356,7 +3354,7 @@ msgstr "" msgid "Physical medium classification" msgstr "" -#: dcim/forms/bulk_import.py:973 dcim/tables/devices.py:846 +#: dcim/forms/bulk_import.py:973 dcim/tables/devices.py:850 msgid "Installed device" msgstr "" @@ -3444,7 +3442,7 @@ msgid "{side_upper} side termination not found: {device} {name}" msgstr "" #: dcim/forms/bulk_import.py:1244 dcim/forms/model_forms.py:696 -#: dcim/tables/devices.py:1033 templates/dcim/device.html:130 +#: dcim/tables/devices.py:1037 templates/dcim/device.html:130 #: templates/dcim/virtualchassis.html:28 templates/dcim/virtualchassis.html:60 msgid "Master" msgstr "" @@ -3566,7 +3564,7 @@ msgstr "" #: dcim/forms/filtersets.py:1155 dcim/forms/filtersets.py:1177 #: dcim/forms/filtersets.py:1199 dcim/forms/filtersets.py:1216 -#: dcim/forms/filtersets.py:1236 dcim/tables/devices.py:372 +#: dcim/forms/filtersets.py:1236 dcim/tables/devices.py:376 #: templates/dcim/consoleport.html:59 templates/dcim/consoleserverport.html:59 #: templates/dcim/frontport.html:74 templates/dcim/interface.html:146 #: templates/dcim/powerfeed.html:118 templates/dcim/poweroutlet.html:63 @@ -3580,7 +3578,7 @@ msgid "Virtual Device Context" msgstr "" #: dcim/forms/filtersets.py:1248 extras/forms/bulk_edit.py:315 -#: extras/forms/bulk_import.py:239 extras/forms/filtersets.py:479 +#: extras/forms/bulk_import.py:245 extras/forms/filtersets.py:479 #: extras/forms/model_forms.py:557 extras/tables/tables.py:487 #: templates/extras/journalentry.html:33 msgid "Kind" @@ -3612,7 +3610,7 @@ msgid "Transmit power (dBm)" msgstr "" #: dcim/forms/filtersets.py:1344 dcim/forms/filtersets.py:1366 -#: dcim/tables/devices.py:344 templates/dcim/cable.html:12 +#: dcim/tables/devices.py:348 templates/dcim/cable.html:12 #: templates/dcim/cable_edit.html:46 templates/dcim/cable_trace.html:43 #: templates/dcim/frontport.html:84 #: templates/dcim/inc/connection_endpoints.html:4 @@ -3620,7 +3618,7 @@ msgstr "" msgid "Cable" msgstr "" -#: dcim/forms/filtersets.py:1434 dcim/tables/devices.py:956 +#: dcim/forms/filtersets.py:1434 dcim/tables/devices.py:960 msgid "Discovered" msgstr "" @@ -3665,7 +3663,7 @@ msgstr "" msgid "Device Role" msgstr "" -#: dcim/forms/model_forms.py:428 dcim/models/devices.py:632 +#: dcim/forms/model_forms.py:428 dcim/models/devices.py:634 msgid "The lowest-numbered unit occupied by the device" msgstr "" @@ -3716,9 +3714,7 @@ msgstr "" #: templates/wireless/wirelesslink.html:10 #: templates/wireless/wirelesslink.html:49 #: virtualization/forms/model_forms.py:351 vpn/forms/bulk_import.py:297 -#: vpn/forms/model_forms.py:94 vpn/forms/model_forms.py:129 -#: vpn/forms/model_forms.py:241 vpn/forms/model_forms.py:436 -#: vpn/forms/model_forms.py:445 vpn/tables/tunnels.py:91 +#: vpn/forms/model_forms.py:436 vpn/forms/model_forms.py:445 #: wireless/forms/model_forms.py:112 wireless/forms/model_forms.py:152 msgid "Interface" msgstr "" @@ -3789,7 +3785,7 @@ msgid "" msgstr "" #: dcim/forms/object_create.py:109 dcim/forms/object_create.py:270 -#: dcim/tables/devices.py:281 +#: dcim/tables/devices.py:285 msgid "Rear ports" msgstr "" @@ -3818,7 +3814,7 @@ msgid "" "selected number of rear port positions ({rearport_count})." msgstr "" -#: dcim/forms/object_create.py:408 dcim/tables/devices.py:1039 +#: dcim/forms/object_create.py:408 dcim/tables/devices.py:1043 #: ipam/tables/fhrp.py:31 templates/dcim/virtualchassis.html:54 #: templates/dcim/virtualchassis_edit.html:48 templates/ipam/fhrpgroup.html:39 msgid "Members" @@ -4501,13 +4497,13 @@ msgstr "" msgid "inventory item roles" msgstr "" -#: dcim/models/device_components.py:1230 dcim/models/devices.py:595 -#: dcim/models/devices.py:1173 dcim/models/racks.py:113 +#: dcim/models/device_components.py:1230 dcim/models/devices.py:597 +#: dcim/models/devices.py:1178 dcim/models/racks.py:113 msgid "serial number" msgstr "" -#: dcim/models/device_components.py:1238 dcim/models/devices.py:603 -#: dcim/models/devices.py:1180 dcim/models/racks.py:120 +#: dcim/models/device_components.py:1238 dcim/models/devices.py:605 +#: dcim/models/devices.py:1185 dcim/models/racks.py:120 msgid "asset tag" msgstr "" @@ -4555,7 +4551,7 @@ msgstr "" msgid "manufacturers" msgstr "" -#: dcim/models/devices.py:82 dcim/models/devices.py:381 +#: dcim/models/devices.py:82 dcim/models/devices.py:382 msgid "model" msgstr "" @@ -4563,11 +4559,11 @@ msgstr "" msgid "default platform" msgstr "" -#: dcim/models/devices.py:98 dcim/models/devices.py:385 +#: dcim/models/devices.py:98 dcim/models/devices.py:386 msgid "part number" msgstr "" -#: dcim/models/devices.py:101 dcim/models/devices.py:388 +#: dcim/models/devices.py:101 dcim/models/devices.py:389 msgid "Discrete part number (optional)" msgstr "" @@ -4601,7 +4597,7 @@ msgid "" "device type is neither a parent nor a child." msgstr "" -#: dcim/models/devices.py:128 dcim/models/devices.py:647 +#: dcim/models/devices.py:128 dcim/models/devices.py:649 msgid "airflow" msgstr "" @@ -4613,289 +4609,289 @@ msgstr "" msgid "device types" msgstr "" -#: dcim/models/devices.py:289 +#: dcim/models/devices.py:290 msgid "U height must be in increments of 0.5 rack units." msgstr "" -#: dcim/models/devices.py:306 +#: dcim/models/devices.py:307 #, python-brace-format msgid "" "Device {device} in rack {rack} does not have sufficient space to accommodate " "a height of {height}U" msgstr "" -#: dcim/models/devices.py:321 +#: dcim/models/devices.py:322 #, python-brace-format msgid "" "Unable to set 0U height: Found {racked_instance_count} " "instances already mounted within racks." msgstr "" -#: dcim/models/devices.py:330 +#: dcim/models/devices.py:331 msgid "" "Must delete all device bay templates associated with this device before " "declassifying it as a parent device." msgstr "" -#: dcim/models/devices.py:336 +#: dcim/models/devices.py:337 msgid "Child device types must be 0U." msgstr "" -#: dcim/models/devices.py:404 +#: dcim/models/devices.py:405 msgid "module type" msgstr "" -#: dcim/models/devices.py:405 +#: dcim/models/devices.py:406 msgid "module types" msgstr "" -#: dcim/models/devices.py:473 +#: dcim/models/devices.py:475 msgid "Virtual machines may be assigned to this role" msgstr "" -#: dcim/models/devices.py:485 +#: dcim/models/devices.py:487 msgid "device role" msgstr "" -#: dcim/models/devices.py:486 +#: dcim/models/devices.py:488 msgid "device roles" msgstr "" -#: dcim/models/devices.py:503 +#: dcim/models/devices.py:505 msgid "Optionally limit this platform to devices of a certain manufacturer" msgstr "" -#: dcim/models/devices.py:515 +#: dcim/models/devices.py:517 msgid "platform" msgstr "" -#: dcim/models/devices.py:516 +#: dcim/models/devices.py:518 msgid "platforms" msgstr "" -#: dcim/models/devices.py:564 +#: dcim/models/devices.py:566 msgid "The function this device serves" msgstr "" -#: dcim/models/devices.py:596 +#: dcim/models/devices.py:598 msgid "Chassis serial number, assigned by the manufacturer" msgstr "" -#: dcim/models/devices.py:604 dcim/models/devices.py:1181 +#: dcim/models/devices.py:606 dcim/models/devices.py:1186 msgid "A unique tag used to identify this device" msgstr "" -#: dcim/models/devices.py:631 +#: dcim/models/devices.py:633 msgid "position (U)" msgstr "" -#: dcim/models/devices.py:638 +#: dcim/models/devices.py:640 msgid "rack face" msgstr "" -#: dcim/models/devices.py:658 dcim/models/devices.py:1390 +#: dcim/models/devices.py:660 dcim/models/devices.py:1395 #: virtualization/models/virtualmachines.py:98 msgid "primary IPv4" msgstr "" -#: dcim/models/devices.py:666 dcim/models/devices.py:1398 +#: dcim/models/devices.py:668 dcim/models/devices.py:1403 #: virtualization/models/virtualmachines.py:106 msgid "primary IPv6" msgstr "" -#: dcim/models/devices.py:674 +#: dcim/models/devices.py:676 msgid "out-of-band IP" msgstr "" -#: dcim/models/devices.py:691 +#: dcim/models/devices.py:693 msgid "VC position" msgstr "" -#: dcim/models/devices.py:695 +#: dcim/models/devices.py:697 msgid "Virtual chassis position" msgstr "" -#: dcim/models/devices.py:698 +#: dcim/models/devices.py:700 msgid "VC priority" msgstr "" -#: dcim/models/devices.py:702 +#: dcim/models/devices.py:704 msgid "Virtual chassis master election priority" msgstr "" -#: dcim/models/devices.py:705 dcim/models/sites.py:207 +#: dcim/models/devices.py:707 dcim/models/sites.py:207 msgid "latitude" msgstr "" -#: dcim/models/devices.py:710 dcim/models/devices.py:718 +#: dcim/models/devices.py:712 dcim/models/devices.py:720 #: 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 +#: dcim/models/devices.py:715 dcim/models/sites.py:215 msgid "longitude" msgstr "" -#: dcim/models/devices.py:786 +#: dcim/models/devices.py:788 msgid "Device name must be unique per site." msgstr "" -#: dcim/models/devices.py:797 ipam/models/services.py:75 +#: dcim/models/devices.py:799 ipam/models/services.py:75 msgid "device" msgstr "" -#: dcim/models/devices.py:798 +#: dcim/models/devices.py:800 msgid "devices" msgstr "" -#: dcim/models/devices.py:838 +#: dcim/models/devices.py:840 #, python-brace-format msgid "Rack {rack} does not belong to site {site}." msgstr "" -#: dcim/models/devices.py:843 +#: dcim/models/devices.py:845 #, python-brace-format msgid "Location {location} does not belong to site {site}." msgstr "" -#: dcim/models/devices.py:849 +#: dcim/models/devices.py:851 #, python-brace-format msgid "Rack {rack} does not belong to location {location}." msgstr "" -#: dcim/models/devices.py:856 +#: dcim/models/devices.py:858 msgid "Cannot select a rack face without assigning a rack." msgstr "" -#: dcim/models/devices.py:860 +#: dcim/models/devices.py:862 msgid "Cannot select a rack position without assigning a rack." msgstr "" -#: dcim/models/devices.py:866 +#: dcim/models/devices.py:868 msgid "Position must be in increments of 0.5 rack units." msgstr "" -#: dcim/models/devices.py:870 +#: dcim/models/devices.py:872 msgid "Must specify rack face when defining rack position." msgstr "" -#: dcim/models/devices.py:878 +#: dcim/models/devices.py:880 #, python-brace-format msgid "A 0U device type ({device_type}) cannot be assigned to a rack position." msgstr "" -#: dcim/models/devices.py:889 +#: dcim/models/devices.py:891 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 +#: dcim/models/devices.py:898 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 +#: dcim/models/devices.py:912 #, 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 +#: dcim/models/devices.py:927 #, python-brace-format msgid "{ip} is not an IPv4 address." msgstr "" -#: dcim/models/devices.py:934 dcim/models/devices.py:949 +#: dcim/models/devices.py:936 dcim/models/devices.py:951 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this device." msgstr "" -#: dcim/models/devices.py:940 +#: dcim/models/devices.py:942 #, python-brace-format msgid "{ip} is not an IPv6 address." msgstr "" -#: dcim/models/devices.py:967 +#: dcim/models/devices.py:969 #, 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 +#: dcim/models/devices.py:980 #, python-brace-format msgid "The assigned cluster belongs to a different site ({site})" msgstr "" -#: dcim/models/devices.py:986 +#: dcim/models/devices.py:988 msgid "A device assigned to a virtual chassis must have its position defined." msgstr "" -#: dcim/models/devices.py:1188 +#: dcim/models/devices.py:1193 msgid "module" msgstr "" -#: dcim/models/devices.py:1189 +#: dcim/models/devices.py:1194 msgid "modules" msgstr "" -#: dcim/models/devices.py:1205 +#: dcim/models/devices.py:1210 #, python-brace-format msgid "" "Module must be installed within a module bay belonging to the assigned " "device ({device})." msgstr "" -#: dcim/models/devices.py:1309 +#: dcim/models/devices.py:1314 msgid "domain" msgstr "" -#: dcim/models/devices.py:1322 dcim/models/devices.py:1323 +#: dcim/models/devices.py:1327 dcim/models/devices.py:1328 msgid "virtual chassis" msgstr "" -#: dcim/models/devices.py:1338 +#: dcim/models/devices.py:1343 #, python-brace-format msgid "The selected master ({master}) is not assigned to this virtual chassis." msgstr "" -#: dcim/models/devices.py:1354 +#: dcim/models/devices.py:1359 #, 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:1379 vpn/models/l2vpn.py:37 +#: dcim/models/devices.py:1384 vpn/models/l2vpn.py:37 msgid "identifier" msgstr "" -#: dcim/models/devices.py:1380 +#: dcim/models/devices.py:1385 msgid "Numeric identifier unique to the parent device" msgstr "" -#: dcim/models/devices.py:1408 extras/models/models.py:129 +#: dcim/models/devices.py:1413 extras/models/models.py:129 #: extras/models/models.py:724 netbox/models/__init__.py:114 msgid "comments" msgstr "" -#: dcim/models/devices.py:1424 +#: dcim/models/devices.py:1429 msgid "virtual device context" msgstr "" -#: dcim/models/devices.py:1425 +#: dcim/models/devices.py:1430 msgid "virtual device contexts" msgstr "" -#: dcim/models/devices.py:1457 +#: dcim/models/devices.py:1462 #, python-brace-format msgid "{ip} is not an IPv{family} address." msgstr "" -#: dcim/models/devices.py:1463 +#: dcim/models/devices.py:1468 msgid "Primary IP address must belong to an interface on the assigned device." msgstr "" @@ -5269,7 +5265,7 @@ msgstr "" msgid "Reachable" msgstr "" -#: dcim/tables/connections.py:46 dcim/tables/devices.py:529 +#: dcim/tables/connections.py:46 dcim/tables/devices.py:533 #: templates/dcim/inventoryitem_edit.html:64 templates/dcim/poweroutlet.html:47 #: templates/dcim/powerport.html:18 msgid "Power Port" @@ -5288,7 +5284,7 @@ msgstr "" msgid "VMs" msgstr "" -#: dcim/tables/devices.py:133 dcim/tables/devices.py:245 +#: dcim/tables/devices.py:133 dcim/tables/devices.py:249 #: extras/forms/model_forms.py:515 templates/dcim/device.html:114 #: templates/dcim/device/render_config.html:11 #: templates/dcim/device/render_config.html:15 @@ -5297,62 +5293,62 @@ msgstr "" #: templates/virtualization/virtualmachine.html:47 #: templates/virtualization/virtualmachine/render_config.html:11 #: templates/virtualization/virtualmachine/render_config.html:15 -#: virtualization/tables/virtualmachines.py:93 +#: virtualization/tables/virtualmachines.py:106 msgid "Config Template" msgstr "" -#: dcim/tables/devices.py:216 dcim/tables/devices.py:1074 +#: dcim/tables/devices.py:220 dcim/tables/devices.py:1078 #: ipam/forms/bulk_import.py:511 ipam/forms/model_forms.py:296 #: 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:81 +#: virtualization/tables/virtualmachines.py:94 msgid "IP Address" msgstr "" -#: dcim/tables/devices.py:220 dcim/tables/devices.py:1078 -#: virtualization/tables/virtualmachines.py:72 +#: dcim/tables/devices.py:224 dcim/tables/devices.py:1082 +#: virtualization/tables/virtualmachines.py:85 msgid "IPv4 Address" msgstr "" -#: dcim/tables/devices.py:224 dcim/tables/devices.py:1082 -#: virtualization/tables/virtualmachines.py:76 +#: dcim/tables/devices.py:228 dcim/tables/devices.py:1086 +#: virtualization/tables/virtualmachines.py:89 msgid "IPv6 Address" msgstr "" -#: dcim/tables/devices.py:239 +#: dcim/tables/devices.py:243 msgid "VC Position" msgstr "" -#: dcim/tables/devices.py:242 +#: dcim/tables/devices.py:246 msgid "VC Priority" msgstr "" -#: dcim/tables/devices.py:249 templates/dcim/device_edit.html:38 +#: dcim/tables/devices.py:253 templates/dcim/device_edit.html:38 #: templates/dcim/devicebay_populate.html:16 msgid "Parent Device" msgstr "" -#: dcim/tables/devices.py:254 +#: dcim/tables/devices.py:258 msgid "Position (Device Bay)" msgstr "" -#: dcim/tables/devices.py:263 +#: dcim/tables/devices.py:267 msgid "Console ports" msgstr "" -#: dcim/tables/devices.py:266 +#: dcim/tables/devices.py:270 msgid "Console server ports" msgstr "" -#: dcim/tables/devices.py:269 +#: dcim/tables/devices.py:273 msgid "Power ports" msgstr "" -#: dcim/tables/devices.py:272 +#: dcim/tables/devices.py:276 msgid "Power outlets" msgstr "" -#: dcim/tables/devices.py:275 dcim/tables/devices.py:1087 +#: dcim/tables/devices.py:279 dcim/tables/devices.py:1091 #: dcim/tables/devicetypes.py:125 dcim/views.py:1005 dcim/views.py:1244 #: dcim/views.py:1930 netbox/navigation/menu.py:82 #: netbox/navigation/menu.py:238 templates/dcim/device/base.html:37 @@ -5362,53 +5358,53 @@ msgstr "" #: templates/dcim/virtualdevicecontext.html:85 #: templates/virtualization/virtualmachine/base.html:27 #: templates/virtualization/virtualmachine_list.html:14 -#: virtualization/tables/virtualmachines.py:87 virtualization/views.py:368 +#: virtualization/tables/virtualmachines.py:100 virtualization/views.py:368 #: wireless/tables/wirelesslan.py:55 msgid "Interfaces" msgstr "" -#: dcim/tables/devices.py:278 +#: dcim/tables/devices.py:282 msgid "Front ports" msgstr "" -#: dcim/tables/devices.py:284 +#: dcim/tables/devices.py:288 msgid "Device bays" msgstr "" -#: dcim/tables/devices.py:287 +#: dcim/tables/devices.py:291 msgid "Module bays" msgstr "" -#: dcim/tables/devices.py:290 +#: dcim/tables/devices.py:294 msgid "Inventory items" msgstr "" -#: dcim/tables/devices.py:329 dcim/tables/modules.py:56 +#: dcim/tables/devices.py:333 dcim/tables/modules.py:56 #: templates/dcim/modulebay.html:17 msgid "Module Bay" msgstr "" -#: dcim/tables/devices.py:350 +#: dcim/tables/devices.py:354 msgid "Cable Color" msgstr "" -#: dcim/tables/devices.py:356 +#: dcim/tables/devices.py:360 msgid "Link Peers" msgstr "" -#: dcim/tables/devices.py:359 +#: dcim/tables/devices.py:363 msgid "Mark Connected" msgstr "" -#: dcim/tables/devices.py:475 +#: dcim/tables/devices.py:479 msgid "Maximum draw (W)" msgstr "" -#: dcim/tables/devices.py:478 +#: dcim/tables/devices.py:482 msgid "Allocated draw (W)" msgstr "" -#: dcim/tables/devices.py:578 ipam/forms/model_forms.py:707 +#: dcim/tables/devices.py:582 ipam/forms/model_forms.py:711 #: ipam/tables/fhrp.py:28 ipam/views.py:597 ipam/views.py:691 #: netbox/navigation/menu.py:146 netbox/navigation/menu.py:148 #: templates/dcim/interface.html:351 templates/ipam/ipaddress_bulk_add.html:15 @@ -5417,12 +5413,12 @@ msgstr "" msgid "IP Addresses" msgstr "" -#: dcim/tables/devices.py:584 netbox/navigation/menu.py:190 +#: dcim/tables/devices.py:588 netbox/navigation/menu.py:190 #: templates/ipam/inc/panels/fhrp_groups.html:5 msgid "FHRP Groups" msgstr "" -#: dcim/tables/devices.py:596 templates/dcim/interface.html:90 +#: dcim/tables/devices.py:600 templates/dcim/interface.html:90 #: templates/virtualization/vminterface.html:70 templates/vpn/tunnel.html:18 #: templates/vpn/tunneltermination.html:14 vpn/forms/bulk_edit.py:75 #: vpn/forms/bulk_import.py:76 vpn/forms/filtersets.py:41 @@ -5431,20 +5427,20 @@ msgstr "" msgid "Tunnel" msgstr "" -#: dcim/tables/devices.py:621 dcim/tables/devicetypes.py:224 +#: dcim/tables/devices.py:625 dcim/tables/devicetypes.py:224 #: templates/dcim/interface.html:66 msgid "Management Only" msgstr "" -#: dcim/tables/devices.py:629 +#: dcim/tables/devices.py:633 msgid "Wireless link" msgstr "" -#: dcim/tables/devices.py:639 +#: dcim/tables/devices.py:643 msgid "VDCs" msgstr "" -#: dcim/tables/devices.py:647 dcim/tables/devicetypes.py:48 +#: dcim/tables/devices.py:651 dcim/tables/devicetypes.py:48 #: dcim/tables/devicetypes.py:140 dcim/views.py:1080 dcim/views.py:2023 #: netbox/navigation/menu.py:91 templates/dcim/device/base.html:52 #: templates/dcim/device_list.html:71 templates/dcim/devicetype/base.html:49 @@ -5453,7 +5449,7 @@ msgstr "" msgid "Inventory Items" msgstr "" -#: dcim/tables/devices.py:728 +#: dcim/tables/devices.py:732 #: 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 @@ -5462,28 +5458,28 @@ msgstr "" msgid "Rear Port" msgstr "" -#: dcim/tables/devices.py:893 templates/dcim/modulebay.html:51 +#: dcim/tables/devices.py:897 templates/dcim/modulebay.html:51 msgid "Installed Module" msgstr "" -#: dcim/tables/devices.py:896 +#: dcim/tables/devices.py:900 msgid "Module Serial" msgstr "" -#: dcim/tables/devices.py:900 +#: dcim/tables/devices.py:904 msgid "Module Asset Tag" msgstr "" -#: dcim/tables/devices.py:909 +#: dcim/tables/devices.py:913 msgid "Module Status" msgstr "" -#: dcim/tables/devices.py:951 dcim/tables/devicetypes.py:308 +#: dcim/tables/devices.py:955 dcim/tables/devicetypes.py:308 #: templates/dcim/inventoryitem.html:41 msgid "Component" msgstr "" -#: dcim/tables/devices.py:1006 +#: dcim/tables/devices.py:1010 msgid "Items" msgstr "" @@ -6041,7 +6037,7 @@ msgid "Cluster type (slug)" msgstr "" #: extras/filtersets.py:490 ipam/forms/bulk_edit.py:475 -#: ipam/forms/model_forms.py:585 virtualization/forms/filtersets.py:108 +#: ipam/forms/model_forms.py:589 virtualization/forms/filtersets.py:108 msgid "Cluster group" msgstr "" @@ -6170,8 +6166,8 @@ msgid "Is active" msgstr "" #: extras/forms/bulk_import.py:34 extras/forms/bulk_import.py:115 -#: extras/forms/bulk_import.py:130 extras/forms/bulk_import.py:153 -#: extras/forms/bulk_import.py:177 extras/forms/filtersets.py:114 +#: extras/forms/bulk_import.py:136 extras/forms/bulk_import.py:159 +#: extras/forms/bulk_import.py:183 extras/forms/filtersets.py:114 #: extras/forms/filtersets.py:160 extras/forms/filtersets.py:201 #: extras/forms/model_forms.py:43 extras/forms/model_forms.py:127 #: extras/forms/model_forms.py:156 extras/forms/model_forms.py:197 @@ -6180,8 +6176,8 @@ msgid "Content types" msgstr "" #: extras/forms/bulk_import.py:36 extras/forms/bulk_import.py:117 -#: extras/forms/bulk_import.py:132 extras/forms/bulk_import.py:155 -#: extras/forms/bulk_import.py:179 tenancy/forms/bulk_import.py:96 +#: extras/forms/bulk_import.py:138 extras/forms/bulk_import.py:161 +#: extras/forms/bulk_import.py:185 tenancy/forms/bulk_import.py:96 msgid "One or more assigned object types" msgstr "" @@ -6225,29 +6221,38 @@ msgid "" "separated by colon: \"choice1:First Choice,choice2:Second Choice\"" msgstr "" -#: extras/forms/bulk_import.py:182 +#: extras/forms/bulk_import.py:120 extras/models/models.py:353 +msgid "button class" +msgstr "" + +#: extras/forms/bulk_import.py:123 extras/models/models.py:357 +msgid "" +"The class of the first link in a group will be used for the dropdown button" +msgstr "" + +#: extras/forms/bulk_import.py:188 msgid "Action object" msgstr "" -#: extras/forms/bulk_import.py:184 +#: extras/forms/bulk_import.py:190 msgid "Webhook name or script as dotted path module.Class" msgstr "" -#: extras/forms/bulk_import.py:205 +#: extras/forms/bulk_import.py:211 #, python-brace-format msgid "Webhook {name} not found" msgstr "" -#: extras/forms/bulk_import.py:214 +#: extras/forms/bulk_import.py:220 #, python-brace-format msgid "Script {name} not found" msgstr "" -#: extras/forms/bulk_import.py:236 +#: extras/forms/bulk_import.py:242 msgid "Assigned object type" msgstr "" -#: extras/forms/bulk_import.py:241 +#: extras/forms/bulk_import.py:247 msgid "The classification of entry" msgstr "" @@ -7129,15 +7134,6 @@ msgstr "" msgid "Links with the same group will appear as a dropdown menu" msgstr "" -#: extras/models/models.py:353 -msgid "button class" -msgstr "" - -#: extras/models/models.py:357 -msgid "" -"The class of the first link in a group will be used for the dropdown button" -msgstr "" - #: extras/models/models.py:360 msgid "new window" msgstr "" @@ -7321,7 +7317,7 @@ msgid "staged changes" msgstr "" #: extras/models/tags.py:40 -msgid "The object type(s) to which this this tag can be applied." +msgid "The object type(s) to which this tag can be applied." msgstr "" #: extras/models/tags.py:49 @@ -7620,7 +7616,7 @@ msgid "VLAN number (1-4094)" msgstr "" #: ipam/filtersets.py:437 ipam/filtersets.py:441 ipam/filtersets.py:533 -#: ipam/forms/model_forms.py:444 templates/tenancy/contact.html:54 +#: ipam/forms/model_forms.py:430 templates/tenancy/contact.html:54 #: tenancy/forms/bulk_edit.py:112 msgid "Address" msgstr "" @@ -7789,7 +7785,7 @@ msgid "Authentication key" msgstr "" #: ipam/forms/bulk_edit.py:404 ipam/forms/filtersets.py:369 -#: ipam/forms/model_forms.py:455 netbox/navigation/menu.py:376 +#: ipam/forms/model_forms.py:441 netbox/navigation/menu.py:376 #: templates/ipam/fhrpgroup.html:51 #: templates/wireless/inc/authentication_attrs.html:5 #: wireless/forms/bulk_edit.py:90 wireless/forms/bulk_edit.py:137 @@ -7806,11 +7802,11 @@ msgstr "" msgid "Maximum child VLAN VID" msgstr "" -#: ipam/forms/bulk_edit.py:428 ipam/forms/model_forms.py:527 +#: ipam/forms/bulk_edit.py:428 ipam/forms/model_forms.py:531 msgid "Scope type" msgstr "" -#: ipam/forms/bulk_edit.py:489 ipam/forms/model_forms.py:600 +#: ipam/forms/bulk_edit.py:489 ipam/forms/model_forms.py:604 #: ipam/tables/vlans.py:71 templates/ipam/vlangroup.html:39 msgid "Scope" msgstr "" @@ -7819,8 +7815,8 @@ msgstr "" msgid "Site & Group" msgstr "" -#: ipam/forms/bulk_edit.py:574 ipam/forms/model_forms.py:663 -#: ipam/forms/model_forms.py:697 ipam/tables/services.py:19 +#: ipam/forms/bulk_edit.py:574 ipam/forms/model_forms.py:667 +#: ipam/forms/model_forms.py:701 ipam/tables/services.py:19 #: ipam/tables/services.py:49 templates/ipam/service.html:39 #: templates/ipam/servicetemplate.html:24 msgid "Ports" @@ -7859,7 +7855,7 @@ msgid "Parent device of assigned interface (if any)" msgstr "" #: ipam/forms/bulk_import.py:310 ipam/forms/bulk_import.py:496 -#: ipam/forms/model_forms.py:691 virtualization/filtersets.py:284 +#: ipam/forms/model_forms.py:695 virtualization/filtersets.py:284 #: virtualization/filtersets.py:323 virtualization/forms/bulk_edit.py:199 #: virtualization/forms/bulk_edit.py:325 #: virtualization/forms/bulk_import.py:146 @@ -8034,8 +8030,8 @@ msgstr "" #: virtualization/forms/filtersets.py:189 #: virtualization/forms/filtersets.py:234 #: virtualization/forms/model_forms.py:223 -#: virtualization/tables/virtualmachines.py:115 -#: virtualization/tables/virtualmachines.py:168 vpn/choices.py:45 +#: virtualization/tables/virtualmachines.py:128 +#: virtualization/tables/virtualmachines.py:181 vpn/choices.py:45 #: vpn/forms/filtersets.py:289 vpn/forms/model_forms.py:161 #: vpn/forms/model_forms.py:172 vpn/forms/model_forms.py:274 msgid "Virtual Machine" @@ -8058,7 +8054,7 @@ msgstr "" msgid "IP Range" msgstr "" -#: ipam/forms/model_forms.py:285 ipam/forms/model_forms.py:454 +#: ipam/forms/model_forms.py:285 ipam/forms/model_forms.py:440 #: templates/ipam/fhrpgroup.html:19 templates/ipam/ipaddress_edit.html:52 msgid "FHRP Group" msgstr "" @@ -8071,7 +8067,7 @@ msgstr "" msgid "An IP address can only be assigned to a single object." msgstr "" -#: ipam/forms/model_forms.py:357 ipam/models/ip.py:877 +#: ipam/forms/model_forms.py:357 ipam/models/ip.py:896 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" @@ -8082,45 +8078,39 @@ msgid "" "Only IP addresses assigned to an interface can be designated as primary IPs." msgstr "" -#: ipam/forms/model_forms.py:373 -#, python-brace-format -msgid "{ip} is a network ID, which may not be assigned to an interface." -msgstr "" - -#: ipam/forms/model_forms.py:379 -#, python-brace-format -msgid "{ip} is a broadcast address, which may not be assigned to an interface." -msgstr "" - -#: ipam/forms/model_forms.py:456 +#: ipam/forms/model_forms.py:442 msgid "Virtual IP Address" msgstr "" -#: ipam/forms/model_forms.py:598 ipam/forms/model_forms.py:637 +#: ipam/forms/model_forms.py:523 +msgid "Assignment already exists" +msgstr "" + +#: ipam/forms/model_forms.py:602 ipam/forms/model_forms.py:641 #: 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:599 +#: ipam/forms/model_forms.py:603 msgid "Child VLANs" msgstr "" -#: ipam/forms/model_forms.py:668 ipam/forms/model_forms.py:702 +#: ipam/forms/model_forms.py:672 ipam/forms/model_forms.py:706 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." msgstr "" -#: ipam/forms/model_forms.py:673 templates/ipam/servicetemplate.html:12 +#: ipam/forms/model_forms.py:677 templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "" -#: ipam/forms/model_forms.py:724 +#: ipam/forms/model_forms.py:728 msgid "Service template" msgstr "" -#: ipam/forms/model_forms.py:754 +#: ipam/forms/model_forms.py:758 msgid "" "Must specify name, protocol, and port(s) if not using a service template." msgstr "" @@ -8280,12 +8270,12 @@ msgstr "" msgid "Cannot create prefix with /0 mask." msgstr "" -#: ipam/models/ip.py:323 ipam/models/ip.py:854 +#: ipam/models/ip.py:323 ipam/models/ip.py:873 #, python-brace-format msgid "VRF {vrf}" msgstr "" -#: ipam/models/ip.py:323 ipam/models/ip.py:854 +#: ipam/models/ip.py:323 ipam/models/ip.py:873 msgid "global table" msgstr "" @@ -8378,12 +8368,22 @@ msgstr "" msgid "Cannot create IP address with /0 mask." msgstr "" -#: ipam/models/ip.py:856 +#: ipam/models/ip.py:850 +#, python-brace-format +msgid "{ip} is a network ID, which may not be assigned to an interface." +msgstr "" + +#: ipam/models/ip.py:861 +#, python-brace-format +msgid "{ip} is a broadcast address, which may not be assigned to an interface." +msgstr "" + +#: ipam/models/ip.py:875 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "" -#: ipam/models/ip.py:883 +#: ipam/models/ip.py:902 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "" @@ -9141,7 +9141,7 @@ msgstr "" #: templates/virtualization/virtualmachine.html:177 #: templates/virtualization/virtualmachine/base.html:32 #: templates/virtualization/virtualmachine_list.html:21 -#: virtualization/tables/virtualmachines.py:90 virtualization/views.py:389 +#: virtualization/tables/virtualmachines.py:103 virtualization/views.py:389 msgid "Virtual Disks" msgstr "" @@ -10054,7 +10054,7 @@ msgstr "" #: templates/core/job.html:66 #, python-format -msgid "every %(interval)s seconds" +msgid "every %(interval)s minutes" msgstr "" #: templates/dcim/bulk_disconnect.html:9 @@ -12525,95 +12525,95 @@ msgstr "" msgid "Invalid filter for {model}: {error}" msgstr "" -#: users/models.py:54 +#: users/models.py:55 msgid "user" msgstr "" -#: users/models.py:55 +#: users/models.py:56 msgid "users" msgstr "" -#: users/models.py:66 +#: users/models.py:67 msgid "A user with this username already exists." msgstr "" -#: users/models.py:78 vpn/models/crypto.py:42 +#: users/models.py:79 vpn/models/crypto.py:42 msgid "group" msgstr "" -#: users/models.py:79 +#: users/models.py:80 msgid "groups" msgstr "" -#: users/models.py:106 users/models.py:107 +#: users/models.py:107 users/models.py:108 msgid "user preferences" msgstr "" -#: users/models.py:174 +#: users/models.py:175 #, python-brace-format msgid "Key '{path}' is a leaf node; cannot assign new keys" msgstr "" -#: users/models.py:186 +#: users/models.py:187 #, python-brace-format msgid "Key '{path}' is a dictionary; cannot assign a non-dictionary value" msgstr "" -#: users/models.py:252 +#: users/models.py:253 msgid "expires" msgstr "" -#: users/models.py:257 +#: users/models.py:258 msgid "last used" msgstr "" -#: users/models.py:262 +#: users/models.py:263 msgid "key" msgstr "" -#: users/models.py:268 +#: users/models.py:269 msgid "write enabled" msgstr "" -#: users/models.py:270 +#: users/models.py:271 msgid "Permit create/update/delete operations using this key" msgstr "" -#: users/models.py:281 +#: users/models.py:282 msgid "allowed IPs" msgstr "" -#: users/models.py:283 +#: users/models.py:284 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:291 +#: users/models.py:296 msgid "token" msgstr "" -#: users/models.py:292 +#: users/models.py:297 msgid "tokens" msgstr "" -#: users/models.py:373 +#: users/models.py:378 msgid "The list of actions granted by this permission" msgstr "" -#: users/models.py:378 +#: users/models.py:383 msgid "constraints" msgstr "" -#: users/models.py:379 +#: users/models.py:384 msgid "Queryset filter matching the applicable objects of the selected type(s)" msgstr "" -#: users/models.py:386 +#: users/models.py:391 msgid "permission" msgstr "" -#: users/models.py:387 +#: users/models.py:392 msgid "permissions" msgstr "" @@ -12860,43 +12860,50 @@ msgid "" "the object's change log for details." msgstr "" -#: utilities/forms/utils.py:42 utilities/forms/utils.py:65 -#: utilities/forms/utils.py:77 utilities/forms/utils.py:80 +#: utilities/forms/utils.py:42 utilities/forms/utils.py:68 +#: utilities/forms/utils.py:85 utilities/forms/utils.py:87 #, python-brace-format msgid "Range \"{value}\" is invalid." msgstr "" -#: utilities/forms/utils.py:225 +#: utilities/forms/utils.py:74 +#, python-brace-format +msgid "" +"Invalid range: Ending value ({end}) must be greater than beginning value " +"({begin})." +msgstr "" + +#: utilities/forms/utils.py:232 #, python-brace-format msgid "Duplicate or conflicting column header for \"{field}\"" msgstr "" -#: utilities/forms/utils.py:231 +#: utilities/forms/utils.py:238 #, python-brace-format msgid "Duplicate or conflicting column header for \"{header}\"" msgstr "" -#: utilities/forms/utils.py:240 +#: utilities/forms/utils.py:247 #, python-brace-format msgid "Row {row}: Expected {count_expected} columns but found {count_found}" msgstr "" -#: utilities/forms/utils.py:263 +#: utilities/forms/utils.py:270 #, python-brace-format msgid "Unexpected column header \"{field}\" found." msgstr "" -#: utilities/forms/utils.py:265 +#: utilities/forms/utils.py:272 #, python-brace-format msgid "Column \"{field}\" is not a related object; cannot use dots" msgstr "" -#: utilities/forms/utils.py:269 +#: utilities/forms/utils.py:276 #, python-brace-format msgid "Invalid related object attribute for column \"{field}\": {to_field}" msgstr "" -#: utilities/forms/utils.py:277 +#: utilities/forms/utils.py:284 #, python-brace-format msgid "Required column header \"{header}\" not found." msgstr "" @@ -13502,6 +13509,11 @@ msgstr "" msgid "Assigned Object Type" msgstr "" +#: vpn/forms/model_forms.py:94 vpn/forms/model_forms.py:129 +#: vpn/forms/model_forms.py:241 vpn/tables/tunnels.py:91 +msgid "Tunnel interface" +msgstr "" + #: vpn/forms/model_forms.py:147 msgid "First Termination" msgstr "" From ad0e476788891e41a9a81cc9d9cf88a2fa89f3d6 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 4 Apr 2024 16:06:42 -0400 Subject: [PATCH 32/32] Release v3.7.5 --- .github/ISSUE_TEMPLATE/bug_report.yaml | 2 +- .github/ISSUE_TEMPLATE/feature_request.yaml | 2 +- docs/release-notes/version-3.7.md | 2 +- netbox/netbox/settings.py | 2 +- netbox/translations/es/LC_MESSAGES/django.mo | Bin 218182 -> 218466 bytes netbox/translations/es/LC_MESSAGES/django.po | 804 +++++------ netbox/translations/fr/LC_MESSAGES/django.mo | Bin 220002 -> 220300 bytes netbox/translations/fr/LC_MESSAGES/django.po | 808 +++++------ netbox/translations/ja/LC_MESSAGES/django.mo | Bin 234165 -> 233614 bytes netbox/translations/ja/LC_MESSAGES/django.po | 1011 +++++++------- netbox/translations/pt/LC_MESSAGES/django.mo | Bin 215341 -> 215621 bytes netbox/translations/pt/LC_MESSAGES/django.po | 804 +++++------ netbox/translations/ru/LC_MESSAGES/django.mo | Bin 276912 -> 275547 bytes netbox/translations/ru/LC_MESSAGES/django.po | 1277 +++++++++--------- netbox/translations/tr/LC_MESSAGES/django.mo | Bin 209700 -> 209985 bytes netbox/translations/tr/LC_MESSAGES/django.po | 800 +++++------ requirements.txt | 18 +- 17 files changed, 2803 insertions(+), 2727 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml index 44c797241..d4a9bab72 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -26,7 +26,7 @@ body: attributes: label: NetBox Version description: What version of NetBox are you currently running? - placeholder: v3.7.4 + placeholder: v3.7.5 validations: required: true - type: dropdown diff --git a/.github/ISSUE_TEMPLATE/feature_request.yaml b/.github/ISSUE_TEMPLATE/feature_request.yaml index a550bff57..2cee040f8 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yaml +++ b/.github/ISSUE_TEMPLATE/feature_request.yaml @@ -14,7 +14,7 @@ body: attributes: label: NetBox version description: What version of NetBox are you currently running? - placeholder: v3.7.4 + placeholder: v3.7.5 validations: required: true - type: dropdown diff --git a/docs/release-notes/version-3.7.md b/docs/release-notes/version-3.7.md index 15159b4f3..ddbeb4bca 100644 --- a/docs/release-notes/version-3.7.md +++ b/docs/release-notes/version-3.7.md @@ -1,6 +1,6 @@ # NetBox v3.7 -## v3.7.5 (FUTURE) +## v3.7.5 (2024-04-04) ### Enhancements diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index e662561ee..0ae43da66 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -28,7 +28,7 @@ from netbox.plugins import PluginConfig # Environment setup # -VERSION = '3.7.5-dev' +VERSION = '3.7.5' # Hostname HOSTNAME = platform.node() diff --git a/netbox/translations/es/LC_MESSAGES/django.mo b/netbox/translations/es/LC_MESSAGES/django.mo index 6ea16e7ff15ea4a5230ee891d1ee6250df9eb88e..ef13cd45b54415eeaeceeff87f6dda810a424f86 100644 GIT binary patch delta 61626 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
    @YMou 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 delta 61372 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 " @@ -4781,7 +4777,7 @@ msgstr "" "href=\"{url}\">{racked_instance_count} instancias ya está montado dentro" " de bastidores." -#: dcim/models/devices.py:330 +#: dcim/models/devices.py:331 msgid "" "Must delete all device bay templates associated with this device before " "declassifying it as a parent device." @@ -4790,155 +4786,155 @@ msgstr "" "asociadas a este dispositivo antes de desclasificarlo como dispositivo " "principal." -#: dcim/models/devices.py:336 +#: dcim/models/devices.py:337 msgid "Child device types must be 0U." msgstr "Los tipos de dispositivos secundarios deben ser 0U." -#: dcim/models/devices.py:404 +#: dcim/models/devices.py:405 msgid "module type" msgstr "tipo de módulo" -#: dcim/models/devices.py:405 +#: dcim/models/devices.py:406 msgid "module types" msgstr "tipos de módulos" -#: dcim/models/devices.py:473 +#: dcim/models/devices.py:475 msgid "Virtual machines may be assigned to this role" msgstr "Se pueden asignar máquinas virtuales a esta función" -#: dcim/models/devices.py:485 +#: dcim/models/devices.py:487 msgid "device role" msgstr "rol del dispositivo" -#: dcim/models/devices.py:486 +#: dcim/models/devices.py:488 msgid "device roles" msgstr "funciones del dispositivo" -#: dcim/models/devices.py:503 +#: dcim/models/devices.py:505 msgid "Optionally limit this platform to devices of a certain manufacturer" msgstr "" "Si lo desea, limite esta plataforma a dispositivos de un fabricante " "determinado." -#: dcim/models/devices.py:515 +#: dcim/models/devices.py:517 msgid "platform" msgstr "plataforma" -#: dcim/models/devices.py:516 +#: dcim/models/devices.py:518 msgid "platforms" msgstr "plataformas" -#: dcim/models/devices.py:564 +#: dcim/models/devices.py:566 msgid "The function this device serves" msgstr "La función que cumple este dispositivo" -#: dcim/models/devices.py:596 +#: dcim/models/devices.py:598 msgid "Chassis serial number, assigned by the manufacturer" msgstr "Número de serie del chasis, asignado por el fabricante" -#: dcim/models/devices.py:604 dcim/models/devices.py:1181 +#: dcim/models/devices.py:606 dcim/models/devices.py:1186 msgid "A unique tag used to identify this device" msgstr "Una etiqueta única que se utiliza para identificar este dispositivo" -#: dcim/models/devices.py:631 +#: dcim/models/devices.py:633 msgid "position (U)" msgstr "posición (U)" -#: dcim/models/devices.py:638 +#: dcim/models/devices.py:640 msgid "rack face" msgstr "cara del estante" -#: dcim/models/devices.py:658 dcim/models/devices.py:1390 +#: dcim/models/devices.py:660 dcim/models/devices.py:1395 #: virtualization/models/virtualmachines.py:98 msgid "primary IPv4" msgstr "IPv4 principal" -#: dcim/models/devices.py:666 dcim/models/devices.py:1398 +#: dcim/models/devices.py:668 dcim/models/devices.py:1403 #: virtualization/models/virtualmachines.py:106 msgid "primary IPv6" msgstr "IPv6 principal" -#: dcim/models/devices.py:674 +#: dcim/models/devices.py:676 msgid "out-of-band IP" msgstr "IP fuera de banda" -#: dcim/models/devices.py:691 +#: dcim/models/devices.py:693 msgid "VC position" msgstr "Posición VC" -#: dcim/models/devices.py:695 +#: dcim/models/devices.py:697 msgid "Virtual chassis position" msgstr "Posición virtual del chasis" -#: dcim/models/devices.py:698 +#: dcim/models/devices.py:700 msgid "VC priority" msgstr "Prioridad VC" -#: dcim/models/devices.py:702 +#: dcim/models/devices.py:704 msgid "Virtual chassis master election priority" msgstr "Prioridad de elección del maestro del chasis virtual" -#: dcim/models/devices.py:705 dcim/models/sites.py:207 +#: dcim/models/devices.py:707 dcim/models/sites.py:207 msgid "latitude" msgstr "latitud" -#: dcim/models/devices.py:710 dcim/models/devices.py:718 +#: dcim/models/devices.py:712 dcim/models/devices.py:720 #: dcim/models/sites.py:212 dcim/models/sites.py:220 msgid "GPS coordinate in decimal format (xx.yyyyyy)" msgstr "Coordenada GPS en formato decimal (xx.aaaaa)" -#: dcim/models/devices.py:713 dcim/models/sites.py:215 +#: dcim/models/devices.py:715 dcim/models/sites.py:215 msgid "longitude" msgstr "longitud" -#: dcim/models/devices.py:786 +#: dcim/models/devices.py:788 msgid "Device name must be unique per site." msgstr "El nombre del dispositivo debe ser único por sitio." -#: dcim/models/devices.py:797 ipam/models/services.py:75 +#: dcim/models/devices.py:799 ipam/models/services.py:75 msgid "device" msgstr "dispositivo" -#: dcim/models/devices.py:798 +#: dcim/models/devices.py:800 msgid "devices" msgstr "dispositivos" -#: dcim/models/devices.py:838 +#: dcim/models/devices.py:840 #, python-brace-format msgid "Rack {rack} does not belong to site {site}." msgstr "Estante {rack} no pertenece al sitio {site}." -#: dcim/models/devices.py:843 +#: dcim/models/devices.py:845 #, python-brace-format msgid "Location {location} does not belong to site {site}." msgstr "Ubicación {location} no pertenece al sitio {site}." -#: dcim/models/devices.py:849 +#: dcim/models/devices.py:851 #, python-brace-format msgid "Rack {rack} does not belong to location {location}." msgstr "Estante {rack} no pertenece a la ubicación {location}." -#: dcim/models/devices.py:856 +#: dcim/models/devices.py:858 msgid "Cannot select a rack face without assigning a rack." msgstr "No se puede seleccionar una cara de bastidor sin asignar un bastidor." -#: dcim/models/devices.py:860 +#: dcim/models/devices.py:862 msgid "Cannot select a rack position without assigning a rack." msgstr "" "No se puede seleccionar una posición de cremallera sin asignar una " "cremallera." -#: dcim/models/devices.py:866 +#: dcim/models/devices.py:868 msgid "Position must be in increments of 0.5 rack units." msgstr "La posición debe estar en incrementos de 0,5 unidades de estante." -#: dcim/models/devices.py:870 +#: dcim/models/devices.py:872 msgid "Must specify rack face when defining rack position." msgstr "" "Debe especificar la cara de la cremallera al definir la posición de la " "cremallera." -#: dcim/models/devices.py:878 +#: dcim/models/devices.py:880 #, python-brace-format msgid "" "A 0U device type ({device_type}) cannot be assigned to a rack position." @@ -4946,7 +4942,7 @@ msgstr "" "Un tipo de dispositivo 0U ({device_type}) no se puede asignar a una posición" " de estantería." -#: dcim/models/devices.py:889 +#: dcim/models/devices.py:891 msgid "" "Child device types cannot be assigned to a rack face. This is an attribute " "of the parent device." @@ -4954,7 +4950,7 @@ msgstr "" "Los tipos de dispositivos secundarios no se pueden asignar a la cara de un " "bastidor. Este es un atributo del dispositivo principal." -#: dcim/models/devices.py:896 +#: dcim/models/devices.py:898 msgid "" "Child device types cannot be assigned to a rack position. This is an " "attribute of the parent device." @@ -4962,7 +4958,7 @@ msgstr "" "Los tipos de dispositivos secundarios no se pueden asignar a una posición de" " bastidor. Este es un atributo del dispositivo principal." -#: dcim/models/devices.py:910 +#: dcim/models/devices.py:912 #, python-brace-format msgid "" "U{position} is already occupied or does not have sufficient space to " @@ -4971,23 +4967,23 @@ msgstr "" "U{position} ya está ocupado o no tiene espacio suficiente para este tipo de " "dispositivo: {device_type} ({u_height}U)" -#: dcim/models/devices.py:925 +#: dcim/models/devices.py:927 #, python-brace-format msgid "{ip} is not an IPv4 address." msgstr "{ip} no es una dirección IPv4." -#: dcim/models/devices.py:934 dcim/models/devices.py:949 +#: dcim/models/devices.py:936 dcim/models/devices.py:951 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this device." msgstr "" "La dirección IP especificada ({ip}) no está asignado a este dispositivo." -#: dcim/models/devices.py:940 +#: dcim/models/devices.py:942 #, python-brace-format msgid "{ip} is not an IPv6 address." msgstr "{ip} no es una dirección IPv6." -#: dcim/models/devices.py:967 +#: dcim/models/devices.py:969 #, python-brace-format msgid "" "The assigned platform is limited to {platform_manufacturer} device types, " @@ -4997,25 +4993,25 @@ msgstr "" "dispositivos, pero el tipo de este dispositivo pertenece a " "{devicetype_manufacturer}." -#: dcim/models/devices.py:978 +#: dcim/models/devices.py:980 #, python-brace-format msgid "The assigned cluster belongs to a different site ({site})" msgstr "El clúster asignado pertenece a un sitio diferente ({site})" -#: dcim/models/devices.py:986 +#: dcim/models/devices.py:988 msgid "A device assigned to a virtual chassis must have its position defined." msgstr "" "Un dispositivo asignado a un chasis virtual debe tener su posición definida." -#: dcim/models/devices.py:1188 +#: dcim/models/devices.py:1193 msgid "module" msgstr "módulo" -#: dcim/models/devices.py:1189 +#: dcim/models/devices.py:1194 msgid "modules" msgstr "módulos" -#: dcim/models/devices.py:1205 +#: dcim/models/devices.py:1210 #, python-brace-format msgid "" "Module must be installed within a module bay belonging to the assigned " @@ -5024,22 +5020,22 @@ msgstr "" "El módulo debe instalarse en un compartimiento de módulos que pertenezca al " "dispositivo asignado ({device})." -#: dcim/models/devices.py:1309 +#: dcim/models/devices.py:1314 msgid "domain" msgstr "dominio" -#: dcim/models/devices.py:1322 dcim/models/devices.py:1323 +#: dcim/models/devices.py:1327 dcim/models/devices.py:1328 msgid "virtual chassis" msgstr "chasis virtual" -#: dcim/models/devices.py:1338 +#: dcim/models/devices.py:1343 #, python-brace-format msgid "" "The selected master ({master}) is not assigned to this virtual chassis." msgstr "" "El maestro seleccionado ({master}) no está asignado a este chasis virtual." -#: dcim/models/devices.py:1354 +#: dcim/models/devices.py:1359 #, python-brace-format msgid "" "Unable to delete virtual chassis {self}. There are member interfaces which " @@ -5048,33 +5044,33 @@ msgstr "" "No se puede eliminar el chasis virtual {self}. Hay interfaces miembros que " "forman interfaces LAG entre chasis." -#: dcim/models/devices.py:1379 vpn/models/l2vpn.py:37 +#: dcim/models/devices.py:1384 vpn/models/l2vpn.py:37 msgid "identifier" msgstr "identificador" -#: dcim/models/devices.py:1380 +#: dcim/models/devices.py:1385 msgid "Numeric identifier unique to the parent device" msgstr "Identificador numérico exclusivo del dispositivo principal" -#: dcim/models/devices.py:1408 extras/models/models.py:129 +#: dcim/models/devices.py:1413 extras/models/models.py:129 #: extras/models/models.py:724 netbox/models/__init__.py:114 msgid "comments" msgstr "comentarios" -#: dcim/models/devices.py:1424 +#: dcim/models/devices.py:1429 msgid "virtual device context" msgstr "contexto de dispositivo virtual" -#: dcim/models/devices.py:1425 +#: dcim/models/devices.py:1430 msgid "virtual device contexts" msgstr "contextos de dispositivos virtuales" -#: dcim/models/devices.py:1457 +#: dcim/models/devices.py:1462 #, python-brace-format msgid "{ip} is not an IPv{family} address." msgstr "{ip} no es un IPv{family} dirección." -#: dcim/models/devices.py:1463 +#: dcim/models/devices.py:1468 msgid "Primary IP address must belong to an interface on the assigned device." msgstr "" "La dirección IP principal debe pertenecer a una interfaz del dispositivo " @@ -5465,7 +5461,7 @@ msgstr "Puerto de consola" msgid "Reachable" msgstr "Accesible" -#: dcim/tables/connections.py:46 dcim/tables/devices.py:529 +#: dcim/tables/connections.py:46 dcim/tables/devices.py:533 #: templates/dcim/inventoryitem_edit.html:64 #: templates/dcim/poweroutlet.html:47 templates/dcim/powerport.html:18 msgid "Power Port" @@ -5484,7 +5480,7 @@ msgstr "Dispositivos" msgid "VMs" msgstr "VM" -#: dcim/tables/devices.py:133 dcim/tables/devices.py:245 +#: dcim/tables/devices.py:133 dcim/tables/devices.py:249 #: extras/forms/model_forms.py:515 templates/dcim/device.html:114 #: templates/dcim/device/render_config.html:11 #: templates/dcim/device/render_config.html:15 @@ -5493,62 +5489,62 @@ msgstr "VM" #: templates/virtualization/virtualmachine.html:47 #: templates/virtualization/virtualmachine/render_config.html:11 #: templates/virtualization/virtualmachine/render_config.html:15 -#: virtualization/tables/virtualmachines.py:93 +#: virtualization/tables/virtualmachines.py:106 msgid "Config Template" msgstr "Plantilla de configuración" -#: dcim/tables/devices.py:216 dcim/tables/devices.py:1074 +#: dcim/tables/devices.py:220 dcim/tables/devices.py:1078 #: ipam/forms/bulk_import.py:511 ipam/forms/model_forms.py:296 #: 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:81 +#: virtualization/tables/virtualmachines.py:94 msgid "IP Address" msgstr "Dirección IP" -#: dcim/tables/devices.py:220 dcim/tables/devices.py:1078 -#: virtualization/tables/virtualmachines.py:72 +#: dcim/tables/devices.py:224 dcim/tables/devices.py:1082 +#: virtualization/tables/virtualmachines.py:85 msgid "IPv4 Address" msgstr "Dirección IPv4" -#: dcim/tables/devices.py:224 dcim/tables/devices.py:1082 -#: virtualization/tables/virtualmachines.py:76 +#: dcim/tables/devices.py:228 dcim/tables/devices.py:1086 +#: virtualization/tables/virtualmachines.py:89 msgid "IPv6 Address" msgstr "Dirección IPv6" -#: dcim/tables/devices.py:239 +#: dcim/tables/devices.py:243 msgid "VC Position" msgstr "Posición VC" -#: dcim/tables/devices.py:242 +#: dcim/tables/devices.py:246 msgid "VC Priority" msgstr "Prioridad VC" -#: dcim/tables/devices.py:249 templates/dcim/device_edit.html:38 +#: dcim/tables/devices.py:253 templates/dcim/device_edit.html:38 #: templates/dcim/devicebay_populate.html:16 msgid "Parent Device" msgstr "Dispositivo principal" -#: dcim/tables/devices.py:254 +#: dcim/tables/devices.py:258 msgid "Position (Device Bay)" msgstr "Posición (bahía de dispositivos)" -#: dcim/tables/devices.py:263 +#: dcim/tables/devices.py:267 msgid "Console ports" msgstr "Puertos de consola" -#: dcim/tables/devices.py:266 +#: dcim/tables/devices.py:270 msgid "Console server ports" msgstr "Puertos de servidor de consola" -#: dcim/tables/devices.py:269 +#: dcim/tables/devices.py:273 msgid "Power ports" msgstr "Puertos de alimentación" -#: dcim/tables/devices.py:272 +#: dcim/tables/devices.py:276 msgid "Power outlets" msgstr "tomas de corriente" -#: dcim/tables/devices.py:275 dcim/tables/devices.py:1087 +#: dcim/tables/devices.py:279 dcim/tables/devices.py:1091 #: dcim/tables/devicetypes.py:125 dcim/views.py:1005 dcim/views.py:1244 #: dcim/views.py:1930 netbox/navigation/menu.py:82 #: netbox/navigation/menu.py:238 templates/dcim/device/base.html:37 @@ -5558,53 +5554,53 @@ msgstr "tomas de corriente" #: templates/dcim/virtualdevicecontext.html:85 #: templates/virtualization/virtualmachine/base.html:27 #: templates/virtualization/virtualmachine_list.html:14 -#: virtualization/tables/virtualmachines.py:87 virtualization/views.py:368 +#: virtualization/tables/virtualmachines.py:100 virtualization/views.py:368 #: wireless/tables/wirelesslan.py:55 msgid "Interfaces" msgstr "Interfaces" -#: dcim/tables/devices.py:278 +#: dcim/tables/devices.py:282 msgid "Front ports" msgstr "Puertos frontales" -#: dcim/tables/devices.py:284 +#: dcim/tables/devices.py:288 msgid "Device bays" msgstr "Compartimentos para dispositivos" -#: dcim/tables/devices.py:287 +#: dcim/tables/devices.py:291 msgid "Module bays" msgstr "Bahías de módulos" -#: dcim/tables/devices.py:290 +#: dcim/tables/devices.py:294 msgid "Inventory items" msgstr "Artículos de inventario" -#: dcim/tables/devices.py:329 dcim/tables/modules.py:56 +#: dcim/tables/devices.py:333 dcim/tables/modules.py:56 #: templates/dcim/modulebay.html:17 msgid "Module Bay" msgstr "Bahía de módulos" -#: dcim/tables/devices.py:350 +#: dcim/tables/devices.py:354 msgid "Cable Color" msgstr "Color del cable" -#: dcim/tables/devices.py:356 +#: dcim/tables/devices.py:360 msgid "Link Peers" msgstr "Vincula a tus compañeros" -#: dcim/tables/devices.py:359 +#: dcim/tables/devices.py:363 msgid "Mark Connected" msgstr "Marcar conectado" -#: dcim/tables/devices.py:475 +#: dcim/tables/devices.py:479 msgid "Maximum draw (W)" msgstr "Consumo máximo (W)" -#: dcim/tables/devices.py:478 +#: dcim/tables/devices.py:482 msgid "Allocated draw (W)" msgstr "Sorteo asignado (W)" -#: dcim/tables/devices.py:578 ipam/forms/model_forms.py:707 +#: dcim/tables/devices.py:582 ipam/forms/model_forms.py:711 #: ipam/tables/fhrp.py:28 ipam/views.py:597 ipam/views.py:691 #: netbox/navigation/menu.py:146 netbox/navigation/menu.py:148 #: templates/dcim/interface.html:351 templates/ipam/ipaddress_bulk_add.html:15 @@ -5613,12 +5609,12 @@ msgstr "Sorteo asignado (W)" msgid "IP Addresses" msgstr "Direcciones IP" -#: dcim/tables/devices.py:584 netbox/navigation/menu.py:190 +#: dcim/tables/devices.py:588 netbox/navigation/menu.py:190 #: templates/ipam/inc/panels/fhrp_groups.html:5 msgid "FHRP Groups" msgstr "Grupos FHRP" -#: dcim/tables/devices.py:596 templates/dcim/interface.html:90 +#: dcim/tables/devices.py:600 templates/dcim/interface.html:90 #: templates/virtualization/vminterface.html:70 templates/vpn/tunnel.html:18 #: templates/vpn/tunneltermination.html:14 vpn/forms/bulk_edit.py:75 #: vpn/forms/bulk_import.py:76 vpn/forms/filtersets.py:41 @@ -5627,20 +5623,20 @@ msgstr "Grupos FHRP" msgid "Tunnel" msgstr "Túnel" -#: dcim/tables/devices.py:621 dcim/tables/devicetypes.py:224 +#: dcim/tables/devices.py:625 dcim/tables/devicetypes.py:224 #: templates/dcim/interface.html:66 msgid "Management Only" msgstr "Solo administración" -#: dcim/tables/devices.py:629 +#: dcim/tables/devices.py:633 msgid "Wireless link" msgstr "Enlace inalámbrico" -#: dcim/tables/devices.py:639 +#: dcim/tables/devices.py:643 msgid "VDCs" msgstr "VDC" -#: dcim/tables/devices.py:647 dcim/tables/devicetypes.py:48 +#: dcim/tables/devices.py:651 dcim/tables/devicetypes.py:48 #: dcim/tables/devicetypes.py:140 dcim/views.py:1080 dcim/views.py:2023 #: netbox/navigation/menu.py:91 templates/dcim/device/base.html:52 #: templates/dcim/device_list.html:71 templates/dcim/devicetype/base.html:49 @@ -5649,7 +5645,7 @@ msgstr "VDC" msgid "Inventory Items" msgstr "Artículos de inventario" -#: dcim/tables/devices.py:728 +#: dcim/tables/devices.py:732 #: 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 @@ -5658,28 +5654,28 @@ msgstr "Artículos de inventario" msgid "Rear Port" msgstr "Puerto trasero" -#: dcim/tables/devices.py:893 templates/dcim/modulebay.html:51 +#: dcim/tables/devices.py:897 templates/dcim/modulebay.html:51 msgid "Installed Module" msgstr "Módulo instalado" -#: dcim/tables/devices.py:896 +#: dcim/tables/devices.py:900 msgid "Module Serial" msgstr "Serie del módulo" -#: dcim/tables/devices.py:900 +#: dcim/tables/devices.py:904 msgid "Module Asset Tag" msgstr "Etiqueta de activo del módulo" -#: dcim/tables/devices.py:909 +#: dcim/tables/devices.py:913 msgid "Module Status" msgstr "Estado del módulo" -#: dcim/tables/devices.py:951 dcim/tables/devicetypes.py:308 +#: dcim/tables/devices.py:955 dcim/tables/devicetypes.py:308 #: templates/dcim/inventoryitem.html:41 msgid "Component" msgstr "Componente" -#: dcim/tables/devices.py:1006 +#: dcim/tables/devices.py:1010 msgid "Items" msgstr "Artículos" @@ -6244,7 +6240,7 @@ msgid "Cluster type (slug)" msgstr "Tipo de clúster (babosa)" #: extras/filtersets.py:490 ipam/forms/bulk_edit.py:475 -#: ipam/forms/model_forms.py:585 virtualization/forms/filtersets.py:108 +#: ipam/forms/model_forms.py:589 virtualization/forms/filtersets.py:108 msgid "Cluster group" msgstr "Grupo de clústeres" @@ -6375,8 +6371,8 @@ msgid "Is active" msgstr "Está activo" #: extras/forms/bulk_import.py:34 extras/forms/bulk_import.py:115 -#: extras/forms/bulk_import.py:130 extras/forms/bulk_import.py:153 -#: extras/forms/bulk_import.py:177 extras/forms/filtersets.py:114 +#: extras/forms/bulk_import.py:136 extras/forms/bulk_import.py:159 +#: extras/forms/bulk_import.py:183 extras/forms/filtersets.py:114 #: extras/forms/filtersets.py:160 extras/forms/filtersets.py:201 #: extras/forms/model_forms.py:43 extras/forms/model_forms.py:127 #: extras/forms/model_forms.py:156 extras/forms/model_forms.py:197 @@ -6385,8 +6381,8 @@ msgid "Content types" msgstr "Tipos de contenido" #: extras/forms/bulk_import.py:36 extras/forms/bulk_import.py:117 -#: extras/forms/bulk_import.py:132 extras/forms/bulk_import.py:155 -#: extras/forms/bulk_import.py:179 tenancy/forms/bulk_import.py:96 +#: extras/forms/bulk_import.py:138 extras/forms/bulk_import.py:161 +#: extras/forms/bulk_import.py:185 tenancy/forms/bulk_import.py:96 msgid "One or more assigned object types" msgstr "Uno o más tipos de objetos asignados" @@ -6434,29 +6430,39 @@ msgstr "" " opcionales separadas por dos puntos: «Choice1:First Choice, Choice2:Second " "Choice»" -#: extras/forms/bulk_import.py:182 +#: extras/forms/bulk_import.py:120 extras/models/models.py:353 +msgid "button class" +msgstr "clase de botones" + +#: extras/forms/bulk_import.py:123 extras/models/models.py:357 +msgid "" +"The class of the first link in a group will be used for the dropdown button" +msgstr "" +"La clase del primer enlace de un grupo se usará para el botón desplegable" + +#: extras/forms/bulk_import.py:188 msgid "Action object" msgstr "Objeto de acción" -#: extras/forms/bulk_import.py:184 +#: extras/forms/bulk_import.py:190 msgid "Webhook name or script as dotted path module.Class" msgstr "Nombre o script del webhook como ruta punteada module.Class" -#: extras/forms/bulk_import.py:205 +#: extras/forms/bulk_import.py:211 #, python-brace-format msgid "Webhook {name} not found" msgstr "Webhook {name} no se encontró" -#: extras/forms/bulk_import.py:214 +#: extras/forms/bulk_import.py:220 #, python-brace-format msgid "Script {name} not found" msgstr "Guión {name} no se encontró" -#: extras/forms/bulk_import.py:236 +#: extras/forms/bulk_import.py:242 msgid "Assigned object type" msgstr "Tipo de objeto asignado" -#: extras/forms/bulk_import.py:241 +#: extras/forms/bulk_import.py:247 msgid "The classification of entry" msgstr "La clasificación de entrada" @@ -7422,16 +7428,6 @@ msgstr "Código de plantilla Jinja2 para la URL del enlace" msgid "Links with the same group will appear as a dropdown menu" msgstr "Los enlaces con el mismo grupo aparecerán en un menú desplegable" -#: extras/models/models.py:353 -msgid "button class" -msgstr "clase de botones" - -#: extras/models/models.py:357 -msgid "" -"The class of the first link in a group will be used for the dropdown button" -msgstr "" -"La clase del primer enlace de un grupo se usará para el botón desplegable" - #: extras/models/models.py:360 msgid "new window" msgstr "ventana nueva" @@ -7621,7 +7617,7 @@ msgid "staged changes" msgstr "cambios por etapas" #: extras/models/tags.py:40 -msgid "The object type(s) to which this this tag can be applied." +msgid "The object type(s) to which this tag can be applied." msgstr "Los tipos de objeto a los que se puede aplicar esta etiqueta." #: extras/models/tags.py:49 @@ -7922,7 +7918,7 @@ msgid "VLAN number (1-4094)" msgstr "Número de VLAN (1-4094)" #: ipam/filtersets.py:437 ipam/filtersets.py:441 ipam/filtersets.py:533 -#: ipam/forms/model_forms.py:444 templates/tenancy/contact.html:54 +#: ipam/forms/model_forms.py:430 templates/tenancy/contact.html:54 #: tenancy/forms/bulk_edit.py:112 msgid "Address" msgstr "Dirección" @@ -8091,7 +8087,7 @@ msgid "Authentication key" msgstr "Clave de autenticación" #: ipam/forms/bulk_edit.py:404 ipam/forms/filtersets.py:369 -#: ipam/forms/model_forms.py:455 netbox/navigation/menu.py:376 +#: ipam/forms/model_forms.py:441 netbox/navigation/menu.py:376 #: templates/ipam/fhrpgroup.html:51 #: templates/wireless/inc/authentication_attrs.html:5 #: wireless/forms/bulk_edit.py:90 wireless/forms/bulk_edit.py:137 @@ -8108,11 +8104,11 @@ msgstr "VLAN (VID) secundaria mínima" msgid "Maximum child VLAN VID" msgstr "VLAN (VID) secundaria máxima" -#: ipam/forms/bulk_edit.py:428 ipam/forms/model_forms.py:527 +#: ipam/forms/bulk_edit.py:428 ipam/forms/model_forms.py:531 msgid "Scope type" msgstr "Tipo de ámbito" -#: ipam/forms/bulk_edit.py:489 ipam/forms/model_forms.py:600 +#: ipam/forms/bulk_edit.py:489 ipam/forms/model_forms.py:604 #: ipam/tables/vlans.py:71 templates/ipam/vlangroup.html:39 msgid "Scope" msgstr "Alcance" @@ -8121,8 +8117,8 @@ msgstr "Alcance" msgid "Site & Group" msgstr "Sitio y grupo" -#: ipam/forms/bulk_edit.py:574 ipam/forms/model_forms.py:663 -#: ipam/forms/model_forms.py:697 ipam/tables/services.py:19 +#: ipam/forms/bulk_edit.py:574 ipam/forms/model_forms.py:667 +#: ipam/forms/model_forms.py:701 ipam/tables/services.py:19 #: ipam/tables/services.py:49 templates/ipam/service.html:39 #: templates/ipam/servicetemplate.html:24 msgid "Ports" @@ -8162,7 +8158,7 @@ msgid "Parent device of assigned interface (if any)" msgstr "Dispositivo principal de la interfaz asignada (si existe)" #: ipam/forms/bulk_import.py:310 ipam/forms/bulk_import.py:496 -#: ipam/forms/model_forms.py:691 virtualization/filtersets.py:284 +#: ipam/forms/model_forms.py:695 virtualization/filtersets.py:284 #: virtualization/filtersets.py:323 virtualization/forms/bulk_edit.py:199 #: virtualization/forms/bulk_edit.py:325 #: virtualization/forms/bulk_import.py:146 @@ -8340,8 +8336,8 @@ msgstr "Puerto" #: virtualization/forms/filtersets.py:189 #: virtualization/forms/filtersets.py:234 #: virtualization/forms/model_forms.py:223 -#: virtualization/tables/virtualmachines.py:115 -#: virtualization/tables/virtualmachines.py:168 vpn/choices.py:45 +#: virtualization/tables/virtualmachines.py:128 +#: virtualization/tables/virtualmachines.py:181 vpn/choices.py:45 #: vpn/forms/filtersets.py:289 vpn/forms/model_forms.py:161 #: vpn/forms/model_forms.py:172 vpn/forms/model_forms.py:274 msgid "Virtual Machine" @@ -8364,7 +8360,7 @@ msgstr "Asignación de sitio/VLAN" msgid "IP Range" msgstr "Rango de IP" -#: ipam/forms/model_forms.py:285 ipam/forms/model_forms.py:454 +#: ipam/forms/model_forms.py:285 ipam/forms/model_forms.py:440 #: templates/ipam/fhrpgroup.html:19 templates/ipam/ipaddress_edit.html:52 msgid "FHRP Group" msgstr "Grupo FHRP" @@ -8377,7 +8373,7 @@ msgstr "Haga que esta sea la IP principal del dispositivo/VM" msgid "An IP address can only be assigned to a single object." msgstr "Solo se puede asignar una dirección IP a un único objeto." -#: ipam/forms/model_forms.py:357 ipam/models/ip.py:877 +#: ipam/forms/model_forms.py:357 ipam/models/ip.py:896 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" @@ -8392,34 +8388,25 @@ msgstr "" "Solo las direcciones IP asignadas a una interfaz se pueden designar como IP " "principales." -#: ipam/forms/model_forms.py:373 -#, python-brace-format -msgid "{ip} is a network ID, which may not be assigned to an interface." -msgstr "{ip} es un ID de red, que no puede asignarse a una interfaz." - -#: ipam/forms/model_forms.py:379 -#, python-brace-format -msgid "" -"{ip} is a broadcast address, which may not be assigned to an interface." -msgstr "" -"{ip} es una dirección de transmisión, que puede no estar asignada a una " -"interfaz." - -#: ipam/forms/model_forms.py:456 +#: ipam/forms/model_forms.py:442 msgid "Virtual IP Address" msgstr "Dirección IP virtual" -#: ipam/forms/model_forms.py:598 ipam/forms/model_forms.py:637 +#: ipam/forms/model_forms.py:523 +msgid "Assignment already exists" +msgstr "La asignación ya existe" + +#: ipam/forms/model_forms.py:602 ipam/forms/model_forms.py:641 #: ipam/tables/ip.py:250 templates/ipam/vlan_edit.html:37 #: templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "Grupo VLAN" -#: ipam/forms/model_forms.py:599 +#: ipam/forms/model_forms.py:603 msgid "Child VLANs" msgstr "VLAN secundarias" -#: ipam/forms/model_forms.py:668 ipam/forms/model_forms.py:702 +#: ipam/forms/model_forms.py:672 ipam/forms/model_forms.py:706 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." @@ -8427,15 +8414,15 @@ msgstr "" "Lista separada por comas de uno o más números de puerto. Se puede " "especificar un rango mediante un guión." -#: ipam/forms/model_forms.py:673 templates/ipam/servicetemplate.html:12 +#: ipam/forms/model_forms.py:677 templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "Plantilla de servicio" -#: ipam/forms/model_forms.py:724 +#: ipam/forms/model_forms.py:728 msgid "Service template" msgstr "Plantilla de servicio" -#: ipam/forms/model_forms.py:754 +#: ipam/forms/model_forms.py:758 msgid "" "Must specify name, protocol, and port(s) if not using a service template." msgstr "" @@ -8603,12 +8590,12 @@ msgstr "prefijos" msgid "Cannot create prefix with /0 mask." msgstr "No se puede crear un prefijo con la máscara /0." -#: ipam/models/ip.py:323 ipam/models/ip.py:854 +#: ipam/models/ip.py:323 ipam/models/ip.py:873 #, python-brace-format msgid "VRF {vrf}" msgstr "VRF {vrf}" -#: ipam/models/ip.py:323 ipam/models/ip.py:854 +#: ipam/models/ip.py:323 ipam/models/ip.py:873 msgid "global table" msgstr "tabla global" @@ -8705,12 +8692,25 @@ msgstr "direcciones IP" msgid "Cannot create IP address with /0 mask." msgstr "No se puede crear una dirección IP con la máscara /0." -#: ipam/models/ip.py:856 +#: ipam/models/ip.py:850 +#, python-brace-format +msgid "{ip} is a network ID, which may not be assigned to an interface." +msgstr "{ip} es un ID de red, que no puede asignarse a una interfaz." + +#: ipam/models/ip.py:861 +#, python-brace-format +msgid "" +"{ip} is a broadcast address, which may not be assigned to an interface." +msgstr "" +"{ip} es una dirección de transmisión, que puede no estar asignada a una " +"interfaz." + +#: ipam/models/ip.py:875 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "Se encontró una dirección IP duplicada en {table}: {ipaddress}" -#: ipam/models/ip.py:883 +#: ipam/models/ip.py:902 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "Solo a las direcciones IPv6 se les puede asignar el estado SLAAC" @@ -9504,7 +9504,7 @@ msgstr "Máquinas virtuales" #: templates/virtualization/virtualmachine.html:177 #: templates/virtualization/virtualmachine/base.html:32 #: templates/virtualization/virtualmachine_list.html:21 -#: virtualization/tables/virtualmachines.py:90 virtualization/views.py:389 +#: virtualization/tables/virtualmachines.py:103 virtualization/views.py:389 msgid "Virtual Disks" msgstr "Discos virtuales" @@ -10431,8 +10431,8 @@ msgstr "Programación" #: templates/core/job.html:66 #, python-format -msgid "every %(interval)s seconds" -msgstr "cada %(interval)s segundos" +msgid "every %(interval)s minutes" +msgstr "cada %(interval)s minutos" #: templates/dcim/bulk_disconnect.html:9 #, python-format @@ -12994,68 +12994,68 @@ msgstr "Este tipo de objeto no admite restricciones." msgid "Invalid filter for {model}: {error}" msgstr "Filtro no válido para {model}: {error}" -#: users/models.py:54 +#: users/models.py:55 msgid "user" msgstr "usuario" -#: users/models.py:55 +#: users/models.py:56 msgid "users" msgstr "usuarios" -#: users/models.py:66 +#: users/models.py:67 msgid "A user with this username already exists." msgstr "Ya existe un usuario con este nombre de usuario." -#: users/models.py:78 vpn/models/crypto.py:42 +#: users/models.py:79 vpn/models/crypto.py:42 msgid "group" msgstr "grupo" -#: users/models.py:79 +#: users/models.py:80 msgid "groups" msgstr "grupos" -#: users/models.py:106 users/models.py:107 +#: users/models.py:107 users/models.py:108 msgid "user preferences" msgstr "preferencias de usuario" -#: users/models.py:174 +#: users/models.py:175 #, python-brace-format msgid "Key '{path}' is a leaf node; cannot assign new keys" msgstr "Clave '{path}'es un nodo de hoja; no se pueden asignar claves nuevas" -#: users/models.py:186 +#: users/models.py:187 #, python-brace-format msgid "Key '{path}' is a dictionary; cannot assign a non-dictionary value" msgstr "" "Clave '{path}'es un diccionario; no puede asignar un valor que no sea de " "diccionario" -#: users/models.py:252 +#: users/models.py:253 msgid "expires" msgstr "caduca" -#: users/models.py:257 +#: users/models.py:258 msgid "last used" msgstr "utilizado por última vez" -#: users/models.py:262 +#: users/models.py:263 msgid "key" msgstr "clave" -#: users/models.py:268 +#: users/models.py:269 msgid "write enabled" msgstr "escritura habilitada" -#: users/models.py:270 +#: users/models.py:271 msgid "Permit create/update/delete operations using this key" msgstr "" "Permitir operaciones de creación/actualización/eliminación con esta clave" -#: users/models.py:281 +#: users/models.py:282 msgid "allowed IPs" msgstr "IP permitidas" -#: users/models.py:283 +#: users/models.py:284 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\"" @@ -13064,34 +13064,34 @@ msgstr "" "blanco para que no haya restricciones. Por ejemplo: «10.1.1.0/24, " "192.168.10.16/32, 2001:DB 8:1: :/64\"" -#: users/models.py:291 +#: users/models.py:296 msgid "token" msgstr "simbólico" -#: users/models.py:292 +#: users/models.py:297 msgid "tokens" msgstr "fichas" -#: users/models.py:373 +#: users/models.py:378 msgid "The list of actions granted by this permission" msgstr "La lista de acciones concedidas por este permiso" -#: users/models.py:378 +#: users/models.py:383 msgid "constraints" msgstr "restricciones" -#: users/models.py:379 +#: users/models.py:384 msgid "" "Queryset filter matching the applicable objects of the selected type(s)" msgstr "" "Filtro Queryset que coincide con los objetos aplicables de los tipos " "seleccionados" -#: users/models.py:386 +#: users/models.py:391 msgid "permission" msgstr "permiso" -#: users/models.py:387 +#: users/models.py:392 msgid "permissions" msgstr "permisos" @@ -13366,47 +13366,56 @@ msgstr "" "Este objeto se ha modificado desde que se renderizó el formulario. Consulte " "el registro de cambios del objeto para obtener más información." -#: utilities/forms/utils.py:42 utilities/forms/utils.py:65 -#: utilities/forms/utils.py:77 utilities/forms/utils.py:80 +#: utilities/forms/utils.py:42 utilities/forms/utils.py:68 +#: utilities/forms/utils.py:85 utilities/forms/utils.py:87 #, python-brace-format msgid "Range \"{value}\" is invalid." msgstr "Gama»{value}«no es válido." -#: utilities/forms/utils.py:225 +#: utilities/forms/utils.py:74 +#, python-brace-format +msgid "" +"Invalid range: Ending value ({end}) must be greater than beginning value " +"({begin})." +msgstr "" +"Intervalo no válido: valor final ({end}) debe ser mayor que el valor inicial" +" ({begin})." + +#: utilities/forms/utils.py:232 #, python-brace-format msgid "Duplicate or conflicting column header for \"{field}\"" msgstr "Cabecera de columna duplicada o conflictiva para»{field}»" -#: utilities/forms/utils.py:231 +#: utilities/forms/utils.py:238 #, python-brace-format msgid "Duplicate or conflicting column header for \"{header}\"" msgstr "Cabecera de columna duplicada o conflictiva para»{header}»" -#: utilities/forms/utils.py:240 +#: utilities/forms/utils.py:247 #, python-brace-format msgid "Row {row}: Expected {count_expected} columns but found {count_found}" msgstr "" "Fila {row}: Esperado {count_expected} columnas pero encontradas " "{count_found}" -#: utilities/forms/utils.py:263 +#: utilities/forms/utils.py:270 #, python-brace-format msgid "Unexpected column header \"{field}\" found." msgstr "Encabezado de columna inesperado»{field}«encontrado." -#: utilities/forms/utils.py:265 +#: utilities/forms/utils.py:272 #, python-brace-format msgid "Column \"{field}\" is not a related object; cannot use dots" msgstr "Columna»{field}\"no es un objeto relacionado; no puede usar puntos" -#: utilities/forms/utils.py:269 +#: utilities/forms/utils.py:276 #, python-brace-format msgid "Invalid related object attribute for column \"{field}\": {to_field}" msgstr "" "Atributo de objeto relacionado no válido para la columna»{field}«: " "{to_field}" -#: utilities/forms/utils.py:277 +#: utilities/forms/utils.py:284 #, python-brace-format msgid "Required column header \"{header}\" not found." msgstr "Encabezado de columna obligatorio»{header}«no se encontró." @@ -14048,6 +14057,11 @@ msgstr "Propuesta" msgid "Assigned Object Type" msgstr "Tipo de objeto asignado" +#: vpn/forms/model_forms.py:94 vpn/forms/model_forms.py:129 +#: vpn/forms/model_forms.py:241 vpn/tables/tunnels.py:91 +msgid "Tunnel interface" +msgstr "Interfaz de túnel" + #: vpn/forms/model_forms.py:147 msgid "First Termination" msgstr "Primera rescisión" diff --git a/netbox/translations/fr/LC_MESSAGES/django.mo b/netbox/translations/fr/LC_MESSAGES/django.mo index 234a12ba9719719879dc2b6181f28054329d2887..b5dac2ef5cd89f65ae7147f48d886b2a5d232d7f 100644 GIT binary patch delta 61626 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 diff --git a/netbox/translations/fr/LC_MESSAGES/django.po b/netbox/translations/fr/LC_MESSAGES/django.po index 374b65e7e..8c8a362ff 100644 --- a/netbox/translations/fr/LC_MESSAGES/django.po +++ b/netbox/translations/fr/LC_MESSAGES/django.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-21 19:48+0000\n" +"POT-Creation-Date: 2024-04-04 19:11+0000\n" "PO-Revision-Date: 2023-10-30 17:48+0000\n" "Last-Translator: Jeremy Stretch, 2024\n" "Language-Team: French (https://app.transifex.com/netbox-community/teams/178115/fr/)\n" @@ -64,8 +64,8 @@ msgid "Your preferences have been updated." msgstr "Vos préférences ont été mises à jour." #: circuits/choices.py:21 dcim/choices.py:20 dcim/choices.py:102 -#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1419 -#: dcim/choices.py:1495 dcim/choices.py:1545 virtualization/choices.py:20 +#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1425 +#: dcim/choices.py:1501 dcim/choices.py:1551 virtualization/choices.py:20 #: virtualization/choices.py:45 vpn/choices.py:18 msgid "Planned" msgstr "Planifié" @@ -75,8 +75,8 @@ msgid "Provisioning" msgstr "Approvisionnement" #: circuits/choices.py:23 dcim/choices.py:22 dcim/choices.py:103 -#: dcim/choices.py:173 dcim/choices.py:219 dcim/choices.py:1494 -#: dcim/choices.py:1544 extras/tables/tables.py:380 ipam/choices.py:31 +#: dcim/choices.py:173 dcim/choices.py:219 dcim/choices.py:1500 +#: dcim/choices.py:1550 extras/tables/tables.py:380 ipam/choices.py:31 #: ipam/choices.py:49 ipam/choices.py:69 ipam/choices.py:154 #: templates/extras/configcontext.html:26 templates/users/user.html:38 #: users/forms/bulk_edit.py:36 virtualization/choices.py:22 @@ -85,7 +85,7 @@ msgid "Active" msgstr "Actif" #: circuits/choices.py:24 dcim/choices.py:172 dcim/choices.py:218 -#: dcim/choices.py:1493 dcim/choices.py:1546 virtualization/choices.py:24 +#: dcim/choices.py:1499 dcim/choices.py:1552 virtualization/choices.py:24 #: virtualization/choices.py:43 msgid "Offline" msgstr "Hors ligne" @@ -98,7 +98,7 @@ msgstr "Déprovisionnement" msgid "Decommissioned" msgstr "Mis hors service" -#: circuits/filtersets.py:29 circuits/filtersets.py:184 dcim/filtersets.py:124 +#: circuits/filtersets.py:29 circuits/filtersets.py:190 dcim/filtersets.py:124 #: dcim/filtersets.py:185 dcim/filtersets.py:260 dcim/filtersets.py:369 #: dcim/filtersets.py:903 dcim/filtersets.py:1207 dcim/filtersets.py:1702 #: dcim/filtersets.py:1945 dcim/filtersets.py:2003 ipam/filtersets.py:305 @@ -107,7 +107,7 @@ msgstr "Mis hors service" msgid "Region (ID)" msgstr "Région (ID)" -#: circuits/filtersets.py:36 circuits/filtersets.py:191 dcim/filtersets.py:130 +#: circuits/filtersets.py:36 circuits/filtersets.py:197 dcim/filtersets.py:130 #: dcim/filtersets.py:192 dcim/filtersets.py:267 dcim/filtersets.py:376 #: dcim/filtersets.py:910 dcim/filtersets.py:1214 dcim/filtersets.py:1709 #: dcim/filtersets.py:1952 dcim/filtersets.py:2010 extras/filtersets.py:414 @@ -117,7 +117,7 @@ msgstr "Région (ID)" msgid "Region (slug)" msgstr "Région (slug)" -#: circuits/filtersets.py:42 circuits/filtersets.py:197 dcim/filtersets.py:198 +#: circuits/filtersets.py:42 circuits/filtersets.py:203 dcim/filtersets.py:198 #: dcim/filtersets.py:273 dcim/filtersets.py:382 dcim/filtersets.py:916 #: dcim/filtersets.py:1220 dcim/filtersets.py:1715 dcim/filtersets.py:1958 #: dcim/filtersets.py:2016 ipam/filtersets.py:318 ipam/filtersets.py:909 @@ -125,7 +125,7 @@ msgstr "Région (slug)" msgid "Site group (ID)" msgstr "Groupe de sites (ID)" -#: circuits/filtersets.py:49 circuits/filtersets.py:204 dcim/filtersets.py:205 +#: circuits/filtersets.py:49 circuits/filtersets.py:210 dcim/filtersets.py:205 #: dcim/filtersets.py:280 dcim/filtersets.py:389 dcim/filtersets.py:923 #: dcim/filtersets.py:1227 dcim/filtersets.py:1722 dcim/filtersets.py:1965 #: dcim/filtersets.py:2023 extras/filtersets.py:420 ipam/filtersets.py:325 @@ -135,7 +135,7 @@ msgid "Site group (slug)" msgstr "Groupe de sites (slug)" #: circuits/filtersets.py:54 circuits/forms/bulk_import.py:117 -#: circuits/forms/filtersets.py:47 circuits/forms/filtersets.py:171 +#: circuits/forms/filtersets.py:47 circuits/forms/filtersets.py:167 #: circuits/forms/model_forms.py:137 dcim/forms/bulk_edit.py:166 #: dcim/forms/bulk_edit.py:238 dcim/forms/bulk_edit.py:570 #: dcim/forms/bulk_edit.py:763 dcim/forms/bulk_import.py:130 @@ -158,8 +158,8 @@ msgstr "Groupe de sites (slug)" #: ipam/forms/bulk_import.py:170 ipam/forms/bulk_import.py:437 #: ipam/forms/filtersets.py:152 ipam/forms/filtersets.py:226 #: ipam/forms/filtersets.py:417 ipam/forms/filtersets.py:470 -#: ipam/forms/model_forms.py:206 ipam/forms/model_forms.py:548 -#: ipam/forms/model_forms.py:640 ipam/tables/ip.py:244 +#: ipam/forms/model_forms.py:206 ipam/forms/model_forms.py:552 +#: ipam/forms/model_forms.py:644 ipam/tables/ip.py:244 #: ipam/tables/vlans.py:114 ipam/tables/vlans.py:216 #: templates/circuits/circuittermination_edit.html:20 #: templates/circuits/inc/circuit_termination.html:33 @@ -181,13 +181,13 @@ msgstr "Groupe de sites (slug)" #: virtualization/forms/model_forms.py:107 #: virtualization/forms/model_forms.py:174 #: virtualization/tables/clusters.py:77 -#: virtualization/tables/virtualmachines.py:53 vpn/forms/filtersets.py:262 +#: virtualization/tables/virtualmachines.py:62 vpn/forms/filtersets.py:262 #: wireless/forms/model_forms.py:77 wireless/forms/model_forms.py:117 msgid "Site" msgstr "Site" -#: circuits/filtersets.py:60 circuits/filtersets.py:215 -#: circuits/filtersets.py:252 dcim/filtersets.py:215 dcim/filtersets.py:290 +#: circuits/filtersets.py:60 circuits/filtersets.py:221 +#: circuits/filtersets.py:258 dcim/filtersets.py:215 dcim/filtersets.py:290 #: dcim/filtersets.py:363 extras/filtersets.py:436 ipam/filtersets.py:215 #: ipam/filtersets.py:335 ipam/filtersets.py:926 #: virtualization/filtersets.py:75 virtualization/filtersets.py:203 @@ -199,33 +199,39 @@ msgstr "Site (slug)" msgid "ASN (ID)" msgstr "ASN (ID)" -#: circuits/filtersets.py:87 circuits/filtersets.py:114 -#: circuits/filtersets.py:148 -msgid "Provider (ID)" -msgstr "Fournisseur (ID)" +#: circuits/filtersets.py:71 circuits/forms/filtersets.py:27 +#: ipam/forms/model_forms.py:158 ipam/models/asns.py:108 +#: ipam/models/asns.py:125 ipam/tables/asn.py:41 templates/ipam/asn.html:20 +msgid "ASN" +msgstr "ASN" #: circuits/filtersets.py:93 circuits/filtersets.py:120 #: circuits/filtersets.py:154 +msgid "Provider (ID)" +msgstr "Fournisseur (ID)" + +#: circuits/filtersets.py:99 circuits/filtersets.py:126 +#: circuits/filtersets.py:160 msgid "Provider (slug)" msgstr "Fournisseur (slug)" -#: circuits/filtersets.py:159 +#: circuits/filtersets.py:165 msgid "Provider account (ID)" msgstr "Compte fournisseur (ID)" -#: circuits/filtersets.py:164 +#: circuits/filtersets.py:170 msgid "Provider network (ID)" msgstr "Réseau fournisseur (ID)" -#: circuits/filtersets.py:168 +#: circuits/filtersets.py:174 msgid "Circuit type (ID)" msgstr "Type de circuit (ID)" -#: circuits/filtersets.py:174 +#: circuits/filtersets.py:180 msgid "Circuit type (slug)" msgstr "Type de circuit (slug)" -#: circuits/filtersets.py:209 circuits/filtersets.py:246 +#: circuits/filtersets.py:215 circuits/filtersets.py:252 #: dcim/filtersets.py:209 dcim/filtersets.py:284 dcim/filtersets.py:357 #: dcim/filtersets.py:927 dcim/filtersets.py:1232 dcim/filtersets.py:1727 #: dcim/filtersets.py:1969 dcim/filtersets.py:2028 ipam/filtersets.py:209 @@ -235,13 +241,13 @@ msgstr "Type de circuit (slug)" msgid "Site (ID)" msgstr "Site (ID)" -#: circuits/filtersets.py:238 core/filtersets.py:73 core/filtersets.py:132 +#: circuits/filtersets.py:244 core/filtersets.py:73 core/filtersets.py:132 #: dcim/filtersets.py:640 dcim/filtersets.py:1201 dcim/filtersets.py:2076 #: extras/filtersets.py:40 extras/filtersets.py:69 extras/filtersets.py:101 #: extras/filtersets.py:140 extras/filtersets.py:168 extras/filtersets.py:195 #: extras/filtersets.py:226 extras/filtersets.py:295 extras/filtersets.py:343 #: extras/filtersets.py:403 extras/filtersets.py:562 extras/filtersets.py:604 -#: extras/filtersets.py:645 ipam/forms/model_forms.py:430 +#: extras/filtersets.py:645 ipam/forms/model_forms.py:416 #: netbox/filtersets.py:275 netbox/forms/__init__.py:23 #: netbox/forms/base.py:163 templates/htmx/object_selector.html:28 #: templates/inc/filter_list.html:53 templates/ipam/ipaddress_assign.html:32 @@ -251,7 +257,7 @@ msgstr "Site (ID)" msgid "Search" msgstr "Rechercher" -#: circuits/filtersets.py:242 circuits/forms/bulk_edit.py:167 +#: circuits/filtersets.py:248 circuits/forms/bulk_edit.py:167 #: circuits/forms/model_forms.py:110 circuits/forms/model_forms.py:132 #: dcim/forms/connections.py:66 templates/circuits/circuit.html:15 #: templates/dcim/inc/cable_termination.html:55 @@ -259,11 +265,11 @@ msgstr "Rechercher" msgid "Circuit" msgstr "Circuit" -#: circuits/filtersets.py:256 +#: circuits/filtersets.py:262 msgid "ProviderNetwork (ID)" msgstr "Réseau fournisseur (ID)" -#: circuits/forms/bulk_edit.py:25 circuits/forms/filtersets.py:56 +#: circuits/forms/bulk_edit.py:25 circuits/forms/filtersets.py:52 #: circuits/forms/model_forms.py:26 circuits/tables/providers.py:33 #: dcim/forms/bulk_edit.py:126 dcim/forms/filtersets.py:187 #: dcim/forms/model_forms.py:126 dcim/tables/sites.py:94 @@ -374,8 +380,8 @@ msgstr "Description" #: circuits/forms/bulk_edit.py:46 circuits/forms/bulk_edit.py:68 #: circuits/forms/bulk_edit.py:118 circuits/forms/bulk_import.py:35 #: circuits/forms/bulk_import.py:50 circuits/forms/bulk_import.py:76 -#: circuits/forms/filtersets.py:70 circuits/forms/filtersets.py:88 -#: circuits/forms/filtersets.py:116 circuits/forms/filtersets.py:131 +#: circuits/forms/filtersets.py:66 circuits/forms/filtersets.py:84 +#: circuits/forms/filtersets.py:112 circuits/forms/filtersets.py:127 #: circuits/forms/model_forms.py:32 circuits/forms/model_forms.py:44 #: circuits/forms/model_forms.py:58 circuits/forms/model_forms.py:92 #: circuits/tables/circuits.py:55 circuits/tables/providers.py:72 @@ -387,18 +393,18 @@ msgstr "Description" msgid "Provider" msgstr "Prestataire" -#: circuits/forms/bulk_edit.py:75 circuits/forms/filtersets.py:91 +#: circuits/forms/bulk_edit.py:75 circuits/forms/filtersets.py:87 #: templates/circuits/providernetwork.html:31 msgid "Service ID" msgstr "Identifiant du service" -#: circuits/forms/bulk_edit.py:95 circuits/forms/filtersets.py:107 +#: circuits/forms/bulk_edit.py:95 circuits/forms/filtersets.py:103 #: dcim/forms/bulk_edit.py:204 dcim/forms/bulk_edit.py:500 #: dcim/forms/bulk_edit.py:694 dcim/forms/bulk_edit.py:1063 #: dcim/forms/bulk_edit.py:1090 dcim/forms/bulk_edit.py:1562 #: dcim/forms/filtersets.py:977 dcim/forms/filtersets.py:1353 -#: dcim/forms/filtersets.py:1374 dcim/tables/devices.py:722 -#: dcim/tables/devices.py:782 dcim/tables/devices.py:1009 +#: dcim/forms/filtersets.py:1374 dcim/tables/devices.py:726 +#: dcim/tables/devices.py:786 dcim/tables/devices.py:1013 #: dcim/tables/devicetypes.py:245 dcim/tables/devicetypes.py:260 #: dcim/tables/racks.py:32 extras/forms/bulk_edit.py:259 #: extras/tables/tables.py:328 templates/circuits/circuittype.html:33 @@ -410,7 +416,7 @@ msgid "Color" msgstr "Couleur" #: circuits/forms/bulk_edit.py:113 circuits/forms/bulk_import.py:89 -#: circuits/forms/filtersets.py:126 core/forms/bulk_edit.py:17 +#: circuits/forms/filtersets.py:122 core/forms/bulk_edit.py:17 #: core/forms/filtersets.py:29 core/tables/data.py:20 core/tables/jobs.py:18 #: dcim/forms/bulk_edit.py:281 dcim/forms/bulk_edit.py:672 #: dcim/forms/bulk_edit.py:811 dcim/forms/bulk_edit.py:879 @@ -429,7 +435,7 @@ msgstr "Couleur" #: dcim/forms/filtersets.py:1253 dcim/forms/filtersets.py:1348 #: dcim/forms/filtersets.py:1369 dcim/forms/object_import.py:89 #: dcim/forms/object_import.py:118 dcim/forms/object_import.py:150 -#: dcim/tables/devices.py:211 dcim/tables/devices.py:838 +#: dcim/tables/devices.py:211 dcim/tables/devices.py:842 #: dcim/tables/power.py:77 extras/forms/bulk_import.py:39 #: extras/tables/tables.py:278 extras/tables/tables.py:350 #: extras/tables/tables.py:448 netbox/tables/tables.py:234 @@ -454,12 +460,12 @@ msgid "Type" msgstr "Type" #: circuits/forms/bulk_edit.py:123 circuits/forms/bulk_import.py:82 -#: circuits/forms/filtersets.py:139 circuits/forms/model_forms.py:97 +#: circuits/forms/filtersets.py:135 circuits/forms/model_forms.py:97 msgid "Provider account" msgstr "Identifiant de compte du prestataire" #: circuits/forms/bulk_edit.py:131 circuits/forms/bulk_import.py:95 -#: circuits/forms/filtersets.py:150 core/forms/filtersets.py:34 +#: circuits/forms/filtersets.py:146 core/forms/filtersets.py:34 #: core/forms/filtersets.py:75 core/tables/data.py:23 core/tables/jobs.py:26 #: dcim/forms/bulk_edit.py:104 dcim/forms/bulk_edit.py:179 #: dcim/forms/bulk_edit.py:260 dcim/forms/bulk_edit.py:593 @@ -473,8 +479,8 @@ msgstr "Identifiant de compte du prestataire" #: dcim/forms/filtersets.py:281 dcim/forms/filtersets.py:726 #: dcim/forms/filtersets.py:835 dcim/forms/filtersets.py:871 #: dcim/forms/filtersets.py:972 dcim/forms/filtersets.py:1083 -#: dcim/tables/devices.py:173 dcim/tables/devices.py:841 -#: dcim/tables/devices.py:1069 dcim/tables/modules.py:69 +#: dcim/tables/devices.py:173 dcim/tables/devices.py:845 +#: dcim/tables/devices.py:1073 dcim/tables/modules.py:69 #: dcim/tables/power.py:74 dcim/tables/racks.py:66 dcim/tables/sites.py:82 #: dcim/tables/sites.py:133 ipam/forms/bulk_edit.py:240 #: ipam/forms/bulk_edit.py:289 ipam/forms/bulk_edit.py:337 @@ -482,7 +488,7 @@ msgstr "Identifiant de compte du prestataire" #: ipam/forms/bulk_import.py:256 ipam/forms/bulk_import.py:292 #: ipam/forms/bulk_import.py:458 ipam/forms/filtersets.py:205 #: ipam/forms/filtersets.py:270 ipam/forms/filtersets.py:341 -#: ipam/forms/filtersets.py:482 ipam/forms/model_forms.py:449 +#: ipam/forms/filtersets.py:482 ipam/forms/model_forms.py:435 #: ipam/tables/ip.py:236 ipam/tables/ip.py:309 ipam/tables/ip.py:359 #: ipam/tables/ip.py:421 ipam/tables/ip.py:448 ipam/tables/vlans.py:122 #: ipam/tables/vlans.py:227 templates/circuits/circuit.html:35 @@ -503,7 +509,7 @@ msgstr "Identifiant de compte du prestataire" #: virtualization/forms/bulk_import.py:80 #: virtualization/forms/filtersets.py:61 #: virtualization/forms/filtersets.py:156 virtualization/tables/clusters.py:74 -#: virtualization/tables/virtualmachines.py:50 vpn/forms/bulk_edit.py:38 +#: virtualization/tables/virtualmachines.py:59 vpn/forms/bulk_edit.py:38 #: vpn/forms/bulk_import.py:37 vpn/forms/filtersets.py:46 #: vpn/tables/tunnels.py:48 wireless/forms/bulk_edit.py:42 #: wireless/forms/bulk_edit.py:104 wireless/forms/bulk_import.py:43 @@ -514,7 +520,7 @@ msgid "Status" msgstr "Statut" #: circuits/forms/bulk_edit.py:137 circuits/forms/bulk_import.py:100 -#: circuits/forms/filtersets.py:119 dcim/forms/bulk_edit.py:120 +#: circuits/forms/filtersets.py:115 dcim/forms/bulk_edit.py:120 #: dcim/forms/bulk_edit.py:185 dcim/forms/bulk_edit.py:255 #: dcim/forms/bulk_edit.py:366 dcim/forms/bulk_edit.py:583 #: dcim/forms/bulk_edit.py:684 dcim/forms/bulk_edit.py:1590 @@ -572,15 +578,15 @@ msgstr "Statut" msgid "Tenant" msgstr "Locataire" -#: circuits/forms/bulk_edit.py:142 circuits/forms/filtersets.py:174 +#: circuits/forms/bulk_edit.py:142 circuits/forms/filtersets.py:170 msgid "Install date" msgstr "Date d'installation" -#: circuits/forms/bulk_edit.py:147 circuits/forms/filtersets.py:179 +#: circuits/forms/bulk_edit.py:147 circuits/forms/filtersets.py:175 msgid "Termination date" msgstr "Date de résiliation" -#: circuits/forms/bulk_edit.py:153 circuits/forms/filtersets.py:186 +#: circuits/forms/bulk_edit.py:153 circuits/forms/filtersets.py:182 msgid "Commit rate (Kbps)" msgstr "Débit engagé (Kbits/s)" @@ -613,7 +619,7 @@ msgstr "Prestataire assigné" #: circuits/forms/bulk_import.py:70 dcim/forms/bulk_import.py:178 #: dcim/forms/bulk_import.py:388 dcim/forms/bulk_import.py:1108 -#: dcim/forms/bulk_import.py:1187 extras/forms/bulk_import.py:229 +#: dcim/forms/bulk_import.py:1187 extras/forms/bulk_import.py:235 msgid "RGB color in hexadecimal. Example:" msgstr "Couleur RVB en hexadécimal. Exemple :" @@ -649,12 +655,12 @@ msgstr "État opérationnel" msgid "Assigned tenant" msgstr "Locataire assigné" -#: circuits/forms/bulk_import.py:123 circuits/forms/filtersets.py:147 +#: circuits/forms/bulk_import.py:123 circuits/forms/filtersets.py:143 #: circuits/forms/model_forms.py:143 msgid "Provider network" msgstr "Réseau de fournisseurs" -#: circuits/forms/filtersets.py:26 circuits/forms/filtersets.py:118 +#: circuits/forms/filtersets.py:26 circuits/forms/filtersets.py:114 #: dcim/forms/bulk_edit.py:247 dcim/forms/bulk_edit.py:345 #: dcim/forms/bulk_edit.py:575 dcim/forms/bulk_edit.py:622 #: dcim/forms/bulk_edit.py:772 dcim/forms/bulk_import.py:189 @@ -678,7 +684,7 @@ msgstr "Réseau de fournisseurs" #: extras/filtersets.py:441 extras/forms/filtersets.py:328 #: ipam/forms/bulk_edit.py:456 ipam/forms/filtersets.py:168 #: ipam/forms/filtersets.py:400 ipam/forms/filtersets.py:422 -#: ipam/forms/filtersets.py:448 ipam/forms/model_forms.py:560 +#: ipam/forms/filtersets.py:448 ipam/forms/model_forms.py:564 #: templates/dcim/device.html:26 templates/dcim/device_edit.html:30 #: templates/dcim/inc/cable_termination.html:12 #: templates/dcim/location.html:27 templates/dcim/powerpanel.html:27 @@ -688,13 +694,7 @@ msgstr "Réseau de fournisseurs" msgid "Location" msgstr "Emplacement" -#: circuits/forms/filtersets.py:27 ipam/forms/model_forms.py:158 -#: ipam/models/asns.py:108 ipam/models/asns.py:125 ipam/tables/asn.py:41 -#: templates/ipam/asn.html:20 -msgid "ASN" -msgstr "ASN" - -#: circuits/forms/filtersets.py:28 circuits/forms/filtersets.py:120 +#: circuits/forms/filtersets.py:28 circuits/forms/filtersets.py:116 #: dcim/forms/filtersets.py:136 dcim/forms/filtersets.py:150 #: dcim/forms/filtersets.py:166 dcim/forms/filtersets.py:198 #: dcim/forms/filtersets.py:249 dcim/forms/filtersets.py:334 @@ -707,7 +707,7 @@ msgstr "ASN" msgid "Contacts" msgstr "Contacts" -#: circuits/forms/filtersets.py:33 circuits/forms/filtersets.py:157 +#: circuits/forms/filtersets.py:33 circuits/forms/filtersets.py:153 #: dcim/forms/bulk_edit.py:110 dcim/forms/bulk_edit.py:222 #: dcim/forms/bulk_edit.py:747 dcim/forms/bulk_import.py:92 #: dcim/forms/filtersets.py:70 dcim/forms/filtersets.py:177 @@ -722,7 +722,7 @@ msgstr "Contacts" #: ipam/forms/bulk_edit.py:205 ipam/forms/bulk_edit.py:437 #: ipam/forms/bulk_edit.py:509 ipam/forms/filtersets.py:212 #: ipam/forms/filtersets.py:407 ipam/forms/filtersets.py:456 -#: ipam/forms/model_forms.py:532 templates/dcim/device.html:18 +#: ipam/forms/model_forms.py:536 templates/dcim/device.html:18 #: templates/dcim/rack.html:19 templates/dcim/rackreservation.html:25 #: templates/dcim/region.html:26 templates/dcim/site.html:31 #: templates/ipam/prefix.html:50 templates/ipam/vlan.html:19 @@ -732,7 +732,7 @@ msgstr "Contacts" msgid "Region" msgstr "Région" -#: circuits/forms/filtersets.py:38 circuits/forms/filtersets.py:162 +#: circuits/forms/filtersets.py:38 circuits/forms/filtersets.py:158 #: dcim/forms/bulk_edit.py:230 dcim/forms/bulk_edit.py:755 #: dcim/forms/filtersets.py:75 dcim/forms/filtersets.py:182 #: dcim/forms/filtersets.py:208 dcim/forms/filtersets.py:269 @@ -742,19 +742,15 @@ msgstr "Région" #: extras/filtersets.py:425 ipam/forms/bulk_edit.py:210 #: ipam/forms/bulk_edit.py:444 ipam/forms/bulk_edit.py:514 #: ipam/forms/filtersets.py:217 ipam/forms/filtersets.py:412 -#: ipam/forms/filtersets.py:461 ipam/forms/model_forms.py:545 +#: ipam/forms/filtersets.py:461 ipam/forms/model_forms.py:549 #: virtualization/forms/bulk_edit.py:85 virtualization/forms/filtersets.py:68 #: virtualization/forms/filtersets.py:134 #: virtualization/forms/model_forms.py:101 msgid "Site group" msgstr "Groupe de sites" -#: circuits/forms/filtersets.py:51 -msgid "ASN (legacy)" -msgstr "ASN (ancien)" - -#: circuits/forms/filtersets.py:65 circuits/forms/filtersets.py:83 -#: circuits/forms/filtersets.py:102 circuits/forms/filtersets.py:117 +#: circuits/forms/filtersets.py:61 circuits/forms/filtersets.py:79 +#: circuits/forms/filtersets.py:98 circuits/forms/filtersets.py:113 #: core/forms/filtersets.py:63 dcim/forms/bulk_edit.py:718 #: dcim/forms/filtersets.py:164 dcim/forms/filtersets.py:196 #: dcim/forms/filtersets.py:825 dcim/forms/filtersets.py:920 @@ -780,7 +776,7 @@ msgstr "ASN (ancien)" msgid "Attributes" msgstr "Attributs" -#: circuits/forms/filtersets.py:73 circuits/tables/circuits.py:60 +#: circuits/forms/filtersets.py:69 circuits/tables/circuits.py:60 #: circuits/tables/providers.py:66 templates/circuits/circuit.html:23 #: templates/circuits/provideraccount.html:25 msgid "Account" @@ -801,7 +797,7 @@ msgstr "Type de circuit" #: dcim/models/device_component_templates.py:491 #: dcim/models/device_component_templates.py:591 #: dcim/models/device_components.py:976 dcim/models/device_components.py:1050 -#: dcim/models/device_components.py:1166 dcim/models/devices.py:467 +#: dcim/models/device_components.py:1166 dcim/models/devices.py:469 #: dcim/models/racks.py:43 extras/models/tags.py:28 msgid "color" msgstr "couleur" @@ -823,8 +819,8 @@ msgid "Unique circuit ID" msgstr "ID de circuit unique" #: circuits/models/circuits.py:67 core/models/data.py:55 -#: core/models/jobs.py:85 dcim/models/cables.py:49 dcim/models/devices.py:641 -#: dcim/models/devices.py:1165 dcim/models/devices.py:1374 +#: core/models/jobs.py:85 dcim/models/cables.py:49 dcim/models/devices.py:643 +#: dcim/models/devices.py:1170 dcim/models/devices.py:1379 #: dcim/models/power.py:95 dcim/models/racks.py:97 dcim/models/sites.py:154 #: dcim/models/sites.py:266 ipam/models/ip.py:252 ipam/models/ip.py:521 #: ipam/models/ip.py:729 ipam/models/vlans.py:175 @@ -903,7 +899,7 @@ msgstr "ID du panneau de raccordement et numéro (s) de port" #: extras/models/models.py:541 extras/models/staging.py:31 #: extras/models/tags.py:32 netbox/models/__init__.py:109 #: netbox/models/__init__.py:144 netbox/models/__init__.py:190 -#: users/models.py:273 users/models.py:348 +#: users/models.py:274 users/models.py:353 #: virtualization/models/virtualmachines.py:282 msgid "description" msgstr "description" @@ -933,8 +929,8 @@ msgstr "" #: circuits/models/providers.py:22 circuits/models/providers.py:66 #: circuits/models/providers.py:104 core/models/data.py:42 #: core/models/jobs.py:46 dcim/models/device_component_templates.py:43 -#: dcim/models/device_components.py:54 dcim/models/devices.py:581 -#: dcim/models/devices.py:1305 dcim/models/devices.py:1370 +#: dcim/models/device_components.py:54 dcim/models/devices.py:583 +#: dcim/models/devices.py:1310 dcim/models/devices.py:1375 #: dcim/models/power.py:39 dcim/models/power.py:91 dcim/models/racks.py:62 #: dcim/models/sites.py:138 extras/models/configs.py:36 #: extras/models/configs.py:215 extras/models/customfields.py:89 @@ -947,7 +943,7 @@ msgstr "" #: ipam/models/vrfs.py:79 netbox/models/__init__.py:136 #: netbox/models/__init__.py:180 tenancy/models/contacts.py:64 #: tenancy/models/tenants.py:20 tenancy/models/tenants.py:45 -#: users/models.py:344 virtualization/models/clusters.py:57 +#: users/models.py:349 virtualization/models/clusters.py:57 #: virtualization/models/virtualmachines.py:70 #: virtualization/models/virtualmachines.py:272 vpn/models/crypto.py:24 #: vpn/models/crypto.py:71 vpn/models/crypto.py:131 vpn/models/crypto.py:183 @@ -1005,13 +1001,13 @@ msgstr "réseaux de fournisseurs" #: core/tables/data.py:16 core/tables/jobs.py:14 dcim/forms/filtersets.py:60 #: dcim/forms/object_create.py:42 dcim/tables/devices.py:88 #: dcim/tables/devices.py:125 dcim/tables/devices.py:167 -#: dcim/tables/devices.py:318 dcim/tables/devices.py:400 -#: dcim/tables/devices.py:444 dcim/tables/devices.py:496 -#: dcim/tables/devices.py:548 dcim/tables/devices.py:668 -#: dcim/tables/devices.py:749 dcim/tables/devices.py:799 -#: dcim/tables/devices.py:865 dcim/tables/devices.py:980 -#: dcim/tables/devices.py:1000 dcim/tables/devices.py:1029 -#: dcim/tables/devices.py:1059 dcim/tables/devicetypes.py:32 +#: dcim/tables/devices.py:322 dcim/tables/devices.py:404 +#: dcim/tables/devices.py:448 dcim/tables/devices.py:500 +#: dcim/tables/devices.py:552 dcim/tables/devices.py:672 +#: dcim/tables/devices.py:753 dcim/tables/devices.py:803 +#: dcim/tables/devices.py:869 dcim/tables/devices.py:984 +#: dcim/tables/devices.py:1004 dcim/tables/devices.py:1033 +#: dcim/tables/devices.py:1063 dcim/tables/devicetypes.py:32 #: dcim/tables/power.py:22 dcim/tables/power.py:62 dcim/tables/racks.py:23 #: dcim/tables/racks.py:53 dcim/tables/sites.py:24 dcim/tables/sites.py:51 #: dcim/tables/sites.py:78 dcim/tables/sites.py:125 @@ -1077,9 +1073,9 @@ msgstr "réseaux de fournisseurs" #: virtualization/forms/object_create.py:23 #: virtualization/tables/clusters.py:17 virtualization/tables/clusters.py:39 #: virtualization/tables/clusters.py:62 -#: virtualization/tables/virtualmachines.py:45 -#: virtualization/tables/virtualmachines.py:119 -#: virtualization/tables/virtualmachines.py:172 vpn/tables/crypto.py:18 +#: virtualization/tables/virtualmachines.py:54 +#: virtualization/tables/virtualmachines.py:132 +#: virtualization/tables/virtualmachines.py:185 vpn/tables/crypto.py:18 #: vpn/tables/crypto.py:57 vpn/tables/crypto.py:93 vpn/tables/crypto.py:129 #: vpn/tables/crypto.py:158 vpn/tables/l2vpn.py:23 vpn/tables/tunnels.py:18 #: vpn/tables/tunnels.py:40 wireless/tables/wirelesslan.py:18 @@ -1114,7 +1110,7 @@ msgstr "Taux d'engagement" #: circuits/tables/circuits.py:75 circuits/tables/providers.py:48 #: circuits/tables/providers.py:82 circuits/tables/providers.py:107 -#: dcim/tables/devices.py:1042 dcim/tables/devicetypes.py:92 +#: dcim/tables/devices.py:1046 dcim/tables/devicetypes.py:92 #: dcim/tables/modules.py:29 dcim/tables/modules.py:72 dcim/tables/power.py:39 #: dcim/tables/power.py:96 dcim/tables/racks.py:76 dcim/tables/racks.py:156 #: dcim/tables/sites.py:103 extras/forms/bulk_edit.py:320 @@ -1126,7 +1122,7 @@ msgstr "Taux d'engagement" #: templates/inc/panels/comments.html:6 tenancy/tables/contacts.py:68 #: tenancy/tables/tenants.py:46 utilities/forms/fields/fields.py:29 #: virtualization/tables/clusters.py:91 -#: virtualization/tables/virtualmachines.py:68 vpn/tables/crypto.py:37 +#: virtualization/tables/virtualmachines.py:81 vpn/tables/crypto.py:37 #: vpn/tables/crypto.py:74 vpn/tables/crypto.py:109 vpn/tables/crypto.py:140 #: vpn/tables/crypto.py:173 vpn/tables/l2vpn.py:37 vpn/tables/tunnels.py:61 #: wireless/tables/wirelesslan.py:27 wireless/tables/wirelesslan.py:58 @@ -1163,7 +1159,7 @@ msgid "Completed" msgstr "Terminé" #: core/choices.py:22 core/choices.py:59 dcim/choices.py:176 -#: dcim/choices.py:222 dcim/choices.py:1496 extras/choices.py:212 +#: dcim/choices.py:222 dcim/choices.py:1502 extras/choices.py:212 #: virtualization/choices.py:47 msgid "Failed" msgstr "Échoué" @@ -1245,7 +1241,7 @@ msgstr "Source de données (nom)" #: core/forms/bulk_edit.py:24 core/forms/filtersets.py:39 #: core/tables/data.py:26 dcim/forms/bulk_edit.py:1012 #: dcim/forms/bulk_edit.py:1285 dcim/forms/filtersets.py:1270 -#: dcim/tables/devices.py:573 dcim/tables/devicetypes.py:221 +#: dcim/tables/devices.py:577 dcim/tables/devicetypes.py:221 #: extras/forms/bulk_edit.py:97 extras/forms/bulk_edit.py:161 #: extras/forms/bulk_edit.py:220 extras/forms/filtersets.py:119 #: extras/forms/filtersets.py:206 extras/forms/filtersets.py:267 @@ -1384,7 +1380,7 @@ msgstr "" msgid "Rack Elevations" msgstr "Élévations des rayonnages" -#: core/forms/model_forms.py:148 dcim/choices.py:1407 +#: core/forms/model_forms.py:148 dcim/choices.py:1413 #: dcim/forms/bulk_edit.py:859 dcim/forms/bulk_edit.py:1242 #: dcim/forms/bulk_edit.py:1260 dcim/tables/racks.py:89 #: netbox/navigation/menu.py:276 netbox/navigation/menu.py:280 @@ -1446,7 +1442,7 @@ msgstr " (par défaut)" #: core/models/config.py:18 core/models/data.py:282 core/models/files.py:27 #: core/models/jobs.py:50 extras/models/models.py:760 -#: netbox/models/features.py:52 users/models.py:248 +#: netbox/models/features.py:52 users/models.py:249 msgid "created" msgstr "créé" @@ -1504,7 +1500,7 @@ msgstr "URL" #: core/models/data.py:62 dcim/models/device_component_templates.py:392 #: dcim/models/device_components.py:513 extras/models/models.py:88 -#: extras/models/models.py:331 extras/models/models.py:556 users/models.py:353 +#: extras/models/models.py:331 extras/models/models.py:556 users/models.py:358 msgid "enabled" msgstr "activé" @@ -1723,7 +1719,7 @@ msgid "Staging" msgstr "Mise en scène" #: dcim/choices.py:23 dcim/choices.py:178 dcim/choices.py:223 -#: dcim/choices.py:1420 virtualization/choices.py:23 +#: dcim/choices.py:1426 virtualization/choices.py:23 #: virtualization/choices.py:48 msgid "Decommissioning" msgstr "Démantèlement" @@ -1783,7 +1779,7 @@ msgstr "Obsolète" msgid "Millimeters" msgstr "Millimètres" -#: dcim/choices.py:115 dcim/choices.py:1442 +#: dcim/choices.py:115 dcim/choices.py:1448 msgid "Inches" msgstr "Pouces" @@ -1795,8 +1791,8 @@ msgstr "Pouces" #: dcim/forms/filtersets.py:226 dcim/forms/model_forms.py:73 #: dcim/forms/model_forms.py:94 dcim/forms/model_forms.py:172 #: dcim/forms/model_forms.py:962 dcim/forms/model_forms.py:1303 -#: dcim/forms/object_import.py:181 dcim/tables/devices.py:676 -#: dcim/tables/devices.py:960 extras/tables/tables.py:181 +#: dcim/forms/object_import.py:181 dcim/tables/devices.py:680 +#: dcim/tables/devices.py:964 extras/tables/tables.py:181 #: ipam/tables/fhrp.py:59 ipam/tables/ip.py:374 ipam/tables/services.py:44 #: templates/dcim/interface.html:105 templates/dcim/interface.html:321 #: templates/dcim/location.html:44 templates/dcim/region.html:38 @@ -1809,7 +1805,7 @@ msgstr "Pouces" #: tenancy/forms/bulk_import.py:58 tenancy/forms/model_forms.py:24 #: tenancy/forms/model_forms.py:69 virtualization/forms/bulk_edit.py:206 #: virtualization/forms/bulk_import.py:151 -#: virtualization/tables/virtualmachines.py:142 wireless/forms/bulk_edit.py:23 +#: virtualization/tables/virtualmachines.py:155 wireless/forms/bulk_edit.py:23 #: wireless/forms/bulk_import.py:21 wireless/forms/model_forms.py:20 msgid "Parent" msgstr "Parent" @@ -1858,7 +1854,7 @@ msgstr "De droite à gauche" msgid "Side to rear" msgstr "D'un côté à l'arrière" -#: dcim/choices.py:198 dcim/choices.py:1215 +#: dcim/choices.py:198 dcim/choices.py:1221 msgid "Passive" msgstr "Passif" @@ -1886,8 +1882,8 @@ msgstr "International/ITA" msgid "Proprietary" msgstr "Propriétaire" -#: dcim/choices.py:534 dcim/choices.py:764 dcim/choices.py:1131 -#: dcim/choices.py:1133 dcim/choices.py:1338 dcim/choices.py:1340 +#: dcim/choices.py:534 dcim/choices.py:764 dcim/choices.py:1137 +#: dcim/choices.py:1139 dcim/choices.py:1344 dcim/choices.py:1346 #: netbox/navigation/menu.py:188 msgid "Other" msgstr "Autres" @@ -1900,177 +1896,177 @@ msgstr "ITA/International" msgid "Physical" msgstr "Physique" -#: dcim/choices.py:795 dcim/choices.py:949 +#: dcim/choices.py:795 dcim/choices.py:952 msgid "Virtual" msgstr "Virtuel" -#: dcim/choices.py:796 dcim/choices.py:1019 dcim/forms/bulk_edit.py:1398 +#: dcim/choices.py:796 dcim/choices.py:1022 dcim/forms/bulk_edit.py:1398 #: dcim/forms/filtersets.py:1233 dcim/forms/model_forms.py:888 #: dcim/forms/model_forms.py:1197 netbox/navigation/menu.py:128 #: netbox/navigation/menu.py:132 templates/dcim/interface.html:217 msgid "Wireless" msgstr "Sans fil" -#: dcim/choices.py:947 +#: dcim/choices.py:950 msgid "Virtual interfaces" msgstr "Interfaces virtuelles" -#: dcim/choices.py:950 dcim/forms/bulk_edit.py:1295 +#: dcim/choices.py:953 dcim/forms/bulk_edit.py:1295 #: dcim/forms/bulk_import.py:785 dcim/forms/model_forms.py:876 -#: dcim/tables/devices.py:680 templates/dcim/interface.html:109 +#: dcim/tables/devices.py:684 templates/dcim/interface.html:109 #: templates/virtualization/vminterface.html:46 #: virtualization/forms/bulk_edit.py:211 #: virtualization/forms/bulk_import.py:158 -#: virtualization/tables/virtualmachines.py:146 +#: virtualization/tables/virtualmachines.py:159 msgid "Bridge" msgstr "Passerelle" -#: dcim/choices.py:951 +#: dcim/choices.py:954 msgid "Link Aggregation Group (LAG)" msgstr "Groupe d'agrégation de liens (LAG)" -#: dcim/choices.py:955 +#: dcim/choices.py:958 msgid "Ethernet (fixed)" msgstr "Ethernet (fixe)" -#: dcim/choices.py:969 +#: dcim/choices.py:972 msgid "Ethernet (modular)" msgstr "Ethernet (modulaire)" -#: dcim/choices.py:1005 +#: dcim/choices.py:1008 msgid "Ethernet (backplane)" msgstr "Ethernet (panneau arrière)" -#: dcim/choices.py:1033 +#: dcim/choices.py:1036 msgid "Cellular" msgstr "Cellulaire" -#: dcim/choices.py:1080 dcim/forms/filtersets.py:302 +#: dcim/choices.py:1086 dcim/forms/filtersets.py:302 #: dcim/forms/filtersets.py:736 dcim/forms/filtersets.py:876 #: dcim/forms/filtersets.py:1426 templates/dcim/inventoryitem.html:53 #: templates/dcim/virtualchassis_edit.html:55 msgid "Serial" msgstr "Série" -#: dcim/choices.py:1095 +#: dcim/choices.py:1101 msgid "Coaxial" msgstr "Coaxiale" -#: dcim/choices.py:1112 +#: dcim/choices.py:1118 msgid "Stacking" msgstr "Empilage" -#: dcim/choices.py:1162 +#: dcim/choices.py:1168 msgid "Half" msgstr "La moitié" -#: dcim/choices.py:1163 +#: dcim/choices.py:1169 msgid "Full" msgstr "Complet" -#: dcim/choices.py:1164 netbox/preferences.py:29 wireless/choices.py:480 +#: dcim/choices.py:1170 netbox/preferences.py:29 wireless/choices.py:480 msgid "Auto" msgstr "Automatique" -#: dcim/choices.py:1175 +#: dcim/choices.py:1181 msgid "Access" msgstr "Accès" -#: dcim/choices.py:1176 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 +#: dcim/choices.py:1182 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 #: templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "Tagué" -#: dcim/choices.py:1177 +#: dcim/choices.py:1183 msgid "Tagged (All)" msgstr "Tagué (Tous)" -#: dcim/choices.py:1206 +#: dcim/choices.py:1212 msgid "IEEE Standard" msgstr "Norme IEEE" -#: dcim/choices.py:1217 +#: dcim/choices.py:1223 msgid "Passive 24V (2-pair)" msgstr "24 V passif (2 paires)" -#: dcim/choices.py:1218 +#: dcim/choices.py:1224 msgid "Passive 24V (4-pair)" msgstr "24 V passif (4 paires)" -#: dcim/choices.py:1219 +#: dcim/choices.py:1225 msgid "Passive 48V (2-pair)" msgstr "48 V passif (2 paires)" -#: dcim/choices.py:1220 +#: dcim/choices.py:1226 msgid "Passive 48V (4-pair)" msgstr "48 V passif (4 paires)" -#: dcim/choices.py:1282 dcim/choices.py:1378 +#: dcim/choices.py:1288 dcim/choices.py:1384 msgid "Copper" msgstr "Cuivre" -#: dcim/choices.py:1305 +#: dcim/choices.py:1311 msgid "Fiber Optic" msgstr "fibre optique" -#: dcim/choices.py:1394 +#: dcim/choices.py:1400 msgid "Fiber" msgstr "Fibre" -#: dcim/choices.py:1418 dcim/forms/filtersets.py:1140 +#: dcim/choices.py:1424 dcim/forms/filtersets.py:1140 msgid "Connected" msgstr "Connecté" -#: dcim/choices.py:1437 +#: dcim/choices.py:1443 msgid "Kilometers" msgstr "Kilomètres" -#: dcim/choices.py:1438 templates/dcim/cable_trace.html:62 +#: dcim/choices.py:1444 templates/dcim/cable_trace.html:62 msgid "Meters" msgstr "Compteurs" -#: dcim/choices.py:1439 +#: dcim/choices.py:1445 msgid "Centimeters" msgstr "Centimètres" -#: dcim/choices.py:1440 +#: dcim/choices.py:1446 msgid "Miles" msgstr "Miles" -#: dcim/choices.py:1441 templates/dcim/cable_trace.html:63 +#: dcim/choices.py:1447 templates/dcim/cable_trace.html:63 msgid "Feet" msgstr "Pieds" -#: dcim/choices.py:1457 templates/dcim/device.html:332 +#: dcim/choices.py:1463 templates/dcim/device.html:332 #: templates/dcim/rack.html:157 msgid "Kilograms" msgstr "Kilogrammes" -#: dcim/choices.py:1458 +#: dcim/choices.py:1464 msgid "Grams" msgstr "Grammes" -#: dcim/choices.py:1459 templates/dcim/rack.html:158 +#: dcim/choices.py:1465 templates/dcim/rack.html:158 msgid "Pounds" msgstr "Livres" -#: dcim/choices.py:1460 +#: dcim/choices.py:1466 msgid "Ounces" msgstr "Onces" -#: dcim/choices.py:1506 tenancy/choices.py:17 +#: dcim/choices.py:1512 tenancy/choices.py:17 msgid "Primary" msgstr "Primaire" -#: dcim/choices.py:1507 +#: dcim/choices.py:1513 msgid "Redundant" msgstr "Redondant" -#: dcim/choices.py:1528 +#: dcim/choices.py:1534 msgid "Single phase" msgstr "Monophasé" -#: dcim/choices.py:1529 +#: dcim/choices.py:1535 msgid "Three-phase" msgstr "Triphasé" @@ -2347,7 +2343,7 @@ msgid "Virtual Chassis (ID)" msgstr "Châssis virtuel (ID)" #: dcim/filtersets.py:1303 dcim/forms/filtersets.py:106 -#: dcim/tables/devices.py:235 netbox/navigation/menu.py:67 +#: dcim/tables/devices.py:239 netbox/navigation/menu.py:67 #: templates/dcim/device.html:123 templates/dcim/device_edit.html:93 #: templates/dcim/virtualchassis.html:20 #: templates/dcim/virtualchassis_add.html:8 @@ -2371,7 +2367,7 @@ msgstr "VID attribué" #: dcim/filtersets.py:1448 dcim/forms/bulk_edit.py:1374 #: dcim/forms/bulk_import.py:836 dcim/forms/filtersets.py:1328 #: dcim/forms/model_forms.py:1182 dcim/models/device_components.py:712 -#: dcim/tables/devices.py:642 ipam/filtersets.py:282 ipam/filtersets.py:293 +#: dcim/tables/devices.py:646 ipam/filtersets.py:282 ipam/filtersets.py:293 #: ipam/filtersets.py:449 ipam/filtersets.py:550 ipam/filtersets.py:561 #: ipam/forms/bulk_edit.py:226 ipam/forms/bulk_edit.py:281 #: ipam/forms/bulk_edit.py:323 ipam/forms/bulk_import.py:156 @@ -2379,8 +2375,8 @@ msgstr "VID attribué" #: ipam/forms/filtersets.py:66 ipam/forms/filtersets.py:167 #: ipam/forms/filtersets.py:295 ipam/forms/model_forms.py:59 #: ipam/forms/model_forms.py:203 ipam/forms/model_forms.py:246 -#: ipam/forms/model_forms.py:290 ipam/forms/model_forms.py:412 -#: ipam/forms/model_forms.py:426 ipam/forms/model_forms.py:440 +#: ipam/forms/model_forms.py:290 ipam/forms/model_forms.py:398 +#: ipam/forms/model_forms.py:412 ipam/forms/model_forms.py:426 #: ipam/models/ip.py:232 ipam/models/ip.py:511 ipam/models/ip.py:719 #: ipam/models/vrfs.py:62 ipam/tables/ip.py:241 ipam/tables/ip.py:306 #: ipam/tables/ip.py:356 ipam/tables/ip.py:445 @@ -2393,7 +2389,7 @@ msgstr "VID attribué" #: virtualization/forms/filtersets.py:220 #: virtualization/forms/model_forms.py:347 #: virtualization/models/virtualmachines.py:348 -#: virtualization/tables/virtualmachines.py:123 +#: virtualization/tables/virtualmachines.py:136 msgid "VRF" msgstr "VRF" @@ -2407,7 +2403,7 @@ msgid "L2VPN (ID)" msgstr "L2VPN (IDENTIFIANT)" #: dcim/filtersets.py:1465 dcim/forms/filtersets.py:1333 -#: dcim/tables/devices.py:590 ipam/filtersets.py:973 +#: dcim/tables/devices.py:594 ipam/filtersets.py:973 #: ipam/forms/filtersets.py:499 ipam/tables/vlans.py:133 #: templates/dcim/interface.html:94 templates/ipam/vlan.html:69 #: templates/vpn/l2vpntermination.html:15 @@ -2478,7 +2474,7 @@ msgstr "Balises" #: dcim/forms/bulk_create.py:112 dcim/forms/filtersets.py:1390 #: dcim/forms/model_forms.py:426 dcim/forms/model_forms.py:475 #: dcim/forms/object_create.py:196 dcim/forms/object_create.py:352 -#: dcim/tables/devices.py:198 dcim/tables/devices.py:725 +#: dcim/tables/devices.py:198 dcim/tables/devices.py:729 #: dcim/tables/devicetypes.py:242 templates/dcim/device.html:45 #: templates/dcim/device.html:129 templates/dcim/modulebay.html:35 #: templates/dcim/virtualchassis.html:59 @@ -2497,7 +2493,7 @@ msgstr "" #: dcim/forms/bulk_edit.py:115 dcim/forms/bulk_import.py:99 #: dcim/forms/model_forms.py:120 dcim/tables/sites.py:89 #: ipam/filtersets.py:936 ipam/forms/bulk_edit.py:528 -#: ipam/forms/bulk_import.py:444 ipam/forms/model_forms.py:509 +#: ipam/forms/bulk_import.py:444 ipam/forms/model_forms.py:495 #: ipam/tables/fhrp.py:67 ipam/tables/vlans.py:118 ipam/tables/vlans.py:221 #: templates/dcim/interface.html:294 templates/dcim/site.html:37 #: templates/ipam/inc/panels/fhrp_groups.html:10 templates/ipam/vlan.html:30 @@ -2547,8 +2543,8 @@ msgstr "Fuseau horaire" #: dcim/forms/filtersets.py:704 dcim/forms/filtersets.py:1417 #: dcim/forms/model_forms.py:224 dcim/forms/model_forms.py:970 #: dcim/forms/model_forms.py:1311 dcim/forms/object_import.py:186 -#: dcim/tables/devices.py:202 dcim/tables/devices.py:833 -#: dcim/tables/devices.py:944 dcim/tables/devicetypes.py:300 +#: dcim/tables/devices.py:202 dcim/tables/devices.py:837 +#: dcim/tables/devices.py:948 dcim/tables/devicetypes.py:300 #: dcim/tables/racks.py:69 extras/filtersets.py:457 #: ipam/forms/bulk_edit.py:245 ipam/forms/bulk_edit.py:294 #: ipam/forms/bulk_edit.py:342 ipam/forms/bulk_edit.py:546 @@ -2557,7 +2553,7 @@ msgstr "Fuseau horaire" #: ipam/forms/filtersets.py:232 ipam/forms/filtersets.py:278 #: ipam/forms/filtersets.py:346 ipam/forms/filtersets.py:490 #: ipam/forms/model_forms.py:187 ipam/forms/model_forms.py:222 -#: ipam/forms/model_forms.py:249 ipam/forms/model_forms.py:647 +#: ipam/forms/model_forms.py:249 ipam/forms/model_forms.py:651 #: ipam/tables/ip.py:257 ipam/tables/ip.py:313 ipam/tables/ip.py:363 #: ipam/tables/vlans.py:126 ipam/tables/vlans.py:230 #: templates/dcim/device.html:187 @@ -2575,7 +2571,7 @@ msgstr "Fuseau horaire" #: virtualization/forms/bulk_import.py:106 #: virtualization/forms/filtersets.py:153 #: virtualization/forms/model_forms.py:198 -#: virtualization/tables/virtualmachines.py:65 vpn/forms/bulk_edit.py:86 +#: virtualization/tables/virtualmachines.py:74 vpn/forms/bulk_edit.py:86 #: vpn/forms/bulk_import.py:81 vpn/forms/filtersets.py:84 #: vpn/forms/model_forms.py:77 vpn/forms/model_forms.py:112 #: vpn/tables/tunnels.py:82 @@ -2669,7 +2665,7 @@ msgstr "Unité de poids" #: dcim/forms/model_forms.py:669 dcim/forms/object_create.py:399 #: dcim/tables/devices.py:194 dcim/tables/power.py:70 dcim/tables/racks.py:148 #: ipam/forms/bulk_edit.py:464 ipam/forms/filtersets.py:427 -#: ipam/forms/model_forms.py:571 templates/dcim/device.html:30 +#: ipam/forms/model_forms.py:575 templates/dcim/device.html:30 #: templates/dcim/inc/cable_termination.html:16 #: templates/dcim/powerfeed.html:31 templates/dcim/rack.html:14 #: templates/dcim/rack/base.html:4 templates/dcim/rack_edit.html:8 @@ -2702,7 +2698,7 @@ msgstr "Matériel" #: dcim/forms/model_forms.py:334 dcim/forms/model_forms.py:374 #: dcim/forms/model_forms.py:975 dcim/forms/model_forms.py:1316 #: dcim/forms/object_import.py:192 dcim/tables/devices.py:129 -#: dcim/tables/devices.py:205 dcim/tables/devices.py:947 +#: dcim/tables/devices.py:205 dcim/tables/devices.py:951 #: dcim/tables/devicetypes.py:81 dcim/tables/devicetypes.py:304 #: dcim/tables/modules.py:20 dcim/tables/modules.py:60 #: templates/dcim/devicetype.html:17 templates/dcim/inventoryitem.html:45 @@ -2749,7 +2745,7 @@ msgstr "Type d'appareil" msgid "Module Type" msgstr "Type de module" -#: dcim/forms/bulk_edit.py:506 dcim/models/devices.py:472 +#: dcim/forms/bulk_edit.py:506 dcim/models/devices.py:474 msgid "VM role" msgstr "rôle de machine virtuelle" @@ -2781,13 +2777,15 @@ msgstr "Rôle de l'appareil" #: dcim/forms/bulk_edit.py:588 dcim/forms/bulk_import.py:443 #: dcim/forms/filtersets.py:723 dcim/forms/model_forms.py:389 -#: dcim/forms/model_forms.py:448 extras/filtersets.py:468 -#: templates/dcim/device.html:191 templates/dcim/platform.html:27 +#: dcim/forms/model_forms.py:448 dcim/tables/devices.py:215 +#: extras/filtersets.py:468 templates/dcim/device.html:191 +#: templates/dcim/platform.html:27 #: templates/virtualization/virtualmachine.html:30 #: virtualization/forms/bulk_edit.py:159 #: virtualization/forms/bulk_import.py:122 #: virtualization/forms/filtersets.py:164 #: virtualization/forms/model_forms.py:206 +#: virtualization/tables/virtualmachines.py:78 msgid "Platform" msgstr "Plateforme" @@ -2811,16 +2809,16 @@ msgstr "Plateforme" #: dcim/forms/model_forms.py:760 dcim/forms/model_forms.py:1011 #: dcim/forms/model_forms.py:1460 dcim/forms/object_create.py:256 #: dcim/tables/connections.py:22 dcim/tables/connections.py:41 -#: dcim/tables/connections.py:60 dcim/tables/devices.py:314 -#: dcim/tables/devices.py:379 dcim/tables/devices.py:423 -#: dcim/tables/devices.py:468 dcim/tables/devices.py:522 -#: dcim/tables/devices.py:614 dcim/tables/devices.py:715 -#: dcim/tables/devices.py:775 dcim/tables/devices.py:825 -#: dcim/tables/devices.py:885 dcim/tables/devices.py:937 -#: dcim/tables/devices.py:1063 dcim/tables/modules.py:52 +#: dcim/tables/connections.py:60 dcim/tables/devices.py:318 +#: dcim/tables/devices.py:383 dcim/tables/devices.py:427 +#: dcim/tables/devices.py:472 dcim/tables/devices.py:526 +#: dcim/tables/devices.py:618 dcim/tables/devices.py:719 +#: dcim/tables/devices.py:779 dcim/tables/devices.py:829 +#: dcim/tables/devices.py:889 dcim/tables/devices.py:941 +#: dcim/tables/devices.py:1067 dcim/tables/modules.py:52 #: extras/forms/filtersets.py:329 ipam/forms/bulk_import.py:303 #: ipam/forms/bulk_import.py:489 ipam/forms/filtersets.py:532 -#: ipam/forms/model_forms.py:685 ipam/tables/vlans.py:176 +#: ipam/forms/model_forms.py:689 ipam/tables/vlans.py:176 #: templates/dcim/consoleport.html:23 templates/dcim/consoleserverport.html:23 #: templates/dcim/device.html:14 templates/dcim/device.html:128 #: templates/dcim/device_edit.html:10 templates/dcim/devicebay.html:23 @@ -2842,7 +2840,7 @@ msgstr "Plateforme" #: virtualization/forms/bulk_import.py:99 #: virtualization/forms/filtersets.py:124 #: virtualization/forms/model_forms.py:188 -#: virtualization/tables/virtualmachines.py:61 vpn/choices.py:44 +#: virtualization/tables/virtualmachines.py:70 vpn/choices.py:44 #: vpn/forms/bulk_import.py:86 vpn/forms/bulk_import.py:283 #: vpn/forms/filtersets.py:271 vpn/forms/model_forms.py:89 #: vpn/forms/model_forms.py:124 vpn/forms/model_forms.py:237 @@ -2982,7 +2980,7 @@ msgid "Wireless role" msgstr "Rôle sans fil" #: dcim/forms/bulk_edit.py:1178 dcim/forms/model_forms.py:595 -#: dcim/forms/model_forms.py:1026 dcim/tables/devices.py:337 +#: dcim/forms/model_forms.py:1026 dcim/tables/devices.py:341 #: templates/dcim/consoleport.html:27 templates/dcim/consoleserverport.html:27 #: templates/dcim/frontport.html:27 templates/dcim/interface.html:35 #: templates/dcim/module.html:51 templates/dcim/modulebay.html:57 @@ -2991,7 +2989,7 @@ msgstr "Rôle sans fil" msgid "Module" msgstr "Modules" -#: dcim/forms/bulk_edit.py:1305 dcim/tables/devices.py:685 +#: dcim/forms/bulk_edit.py:1305 dcim/tables/devices.py:689 #: templates/dcim/interface.html:113 msgid "LAG" msgstr "DÉCALAGE" @@ -3003,7 +3001,7 @@ msgstr "Contextes des appareils virtuels" #: dcim/forms/bulk_edit.py:1316 dcim/forms/bulk_import.py:659 #: dcim/forms/bulk_import.py:685 dcim/forms/filtersets.py:1163 #: dcim/forms/filtersets.py:1185 dcim/forms/filtersets.py:1258 -#: dcim/tables/devices.py:626 +#: dcim/tables/devices.py:630 #: templates/circuits/inc/circuit_termination.html:94 #: templates/dcim/consoleport.html:43 templates/dcim/consoleserverport.html:43 msgid "Speed" @@ -3028,13 +3026,13 @@ msgid "VLAN group" msgstr "groupe VLAN" #: dcim/forms/bulk_edit.py:1361 dcim/forms/model_forms.py:1164 -#: dcim/tables/devices.py:599 virtualization/forms/bulk_edit.py:247 +#: dcim/tables/devices.py:603 virtualization/forms/bulk_edit.py:247 #: virtualization/forms/model_forms.py:329 msgid "Untagged VLAN" msgstr "VLAN non balisé" #: dcim/forms/bulk_edit.py:1369 dcim/forms/model_forms.py:1173 -#: dcim/tables/devices.py:605 virtualization/forms/bulk_edit.py:255 +#: dcim/tables/devices.py:609 virtualization/forms/bulk_edit.py:255 #: virtualization/forms/model_forms.py:338 msgid "Tagged VLANs" msgstr "VLAN balisés" @@ -3044,7 +3042,7 @@ msgid "Wireless LAN group" msgstr "Groupe LAN sans fil" #: dcim/forms/bulk_edit.py:1384 dcim/forms/model_forms.py:1151 -#: dcim/tables/devices.py:635 netbox/navigation/menu.py:134 +#: dcim/tables/devices.py:639 netbox/navigation/menu.py:134 #: templates/dcim/interface.html:289 wireless/tables/wirelesslan.py:24 msgid "Wireless LANs" msgstr "Réseaux locaux sans fil" @@ -3216,9 +3214,9 @@ msgid "Virtual chassis" msgstr "Châssis virtuel" #: dcim/forms/bulk_import.py:462 dcim/forms/model_forms.py:457 -#: dcim/tables/devices.py:231 extras/filtersets.py:501 +#: dcim/tables/devices.py:235 extras/filtersets.py:501 #: extras/forms/filtersets.py:330 ipam/forms/bulk_edit.py:478 -#: ipam/forms/model_forms.py:588 templates/dcim/device.html:239 +#: ipam/forms/model_forms.py:592 templates/dcim/device.html:239 #: templates/virtualization/cluster.html:11 #: templates/virtualization/virtualmachine.html:92 #: templates/virtualization/virtualmachine.html:102 @@ -3230,7 +3228,7 @@ msgstr "Châssis virtuel" #: virtualization/forms/filtersets.py:196 #: virtualization/forms/model_forms.py:82 #: virtualization/forms/model_forms.py:179 -#: virtualization/tables/virtualmachines.py:57 +#: virtualization/tables/virtualmachines.py:66 msgid "Cluster" msgstr "Cluster" @@ -3412,7 +3410,7 @@ msgstr "Port arrière correspondant" msgid "Physical medium classification" msgstr "Classification des supports physiques" -#: dcim/forms/bulk_import.py:973 dcim/tables/devices.py:846 +#: dcim/forms/bulk_import.py:973 dcim/tables/devices.py:850 msgid "Installed device" msgstr "Appareil installé" @@ -3500,7 +3498,7 @@ msgid "{side_upper} side termination not found: {device} {name}" msgstr "{side_upper} terminaison latérale introuvable : {device} {name}" #: dcim/forms/bulk_import.py:1244 dcim/forms/model_forms.py:696 -#: dcim/tables/devices.py:1033 templates/dcim/device.html:130 +#: dcim/tables/devices.py:1037 templates/dcim/device.html:130 #: templates/dcim/virtualchassis.html:28 templates/dcim/virtualchassis.html:60 msgid "Master" msgstr "Maître" @@ -3627,7 +3625,7 @@ msgstr "Occupé" #: dcim/forms/filtersets.py:1155 dcim/forms/filtersets.py:1177 #: dcim/forms/filtersets.py:1199 dcim/forms/filtersets.py:1216 -#: dcim/forms/filtersets.py:1236 dcim/tables/devices.py:372 +#: dcim/forms/filtersets.py:1236 dcim/tables/devices.py:376 #: templates/dcim/consoleport.html:59 templates/dcim/consoleserverport.html:59 #: templates/dcim/frontport.html:74 templates/dcim/interface.html:146 #: templates/dcim/powerfeed.html:118 templates/dcim/poweroutlet.html:63 @@ -3641,7 +3639,7 @@ msgid "Virtual Device Context" msgstr "Contexte du périphérique virtuel" #: dcim/forms/filtersets.py:1248 extras/forms/bulk_edit.py:315 -#: extras/forms/bulk_import.py:239 extras/forms/filtersets.py:479 +#: extras/forms/bulk_import.py:245 extras/forms/filtersets.py:479 #: extras/forms/model_forms.py:557 extras/tables/tables.py:487 #: templates/extras/journalentry.html:33 msgid "Kind" @@ -3673,7 +3671,7 @@ msgid "Transmit power (dBm)" msgstr "Puissance de transmission (dBm)" #: dcim/forms/filtersets.py:1344 dcim/forms/filtersets.py:1366 -#: dcim/tables/devices.py:344 templates/dcim/cable.html:12 +#: dcim/tables/devices.py:348 templates/dcim/cable.html:12 #: templates/dcim/cable_edit.html:46 templates/dcim/cable_trace.html:43 #: templates/dcim/frontport.html:84 #: templates/dcim/inc/connection_endpoints.html:4 @@ -3681,7 +3679,7 @@ msgstr "Puissance de transmission (dBm)" msgid "Cable" msgstr "câble" -#: dcim/forms/filtersets.py:1434 dcim/tables/devices.py:956 +#: dcim/forms/filtersets.py:1434 dcim/tables/devices.py:960 msgid "Discovered" msgstr "Découvert" @@ -3728,7 +3726,7 @@ msgstr "Châssis" msgid "Device Role" msgstr "Rôle de l'appareil" -#: dcim/forms/model_forms.py:428 dcim/models/devices.py:632 +#: dcim/forms/model_forms.py:428 dcim/models/devices.py:634 msgid "The lowest-numbered unit occupied by the device" msgstr "L'unité la moins numérotée occupée par l'appareil" @@ -3780,9 +3778,7 @@ msgstr "Interface LAG" #: templates/wireless/wirelesslink.html:10 #: templates/wireless/wirelesslink.html:49 #: virtualization/forms/model_forms.py:351 vpn/forms/bulk_import.py:297 -#: vpn/forms/model_forms.py:94 vpn/forms/model_forms.py:129 -#: vpn/forms/model_forms.py:241 vpn/forms/model_forms.py:436 -#: vpn/forms/model_forms.py:445 vpn/tables/tunnels.py:91 +#: vpn/forms/model_forms.py:436 vpn/forms/model_forms.py:445 #: wireless/forms/model_forms.py:112 wireless/forms/model_forms.py:152 msgid "Interface" msgstr "Interface" @@ -3859,7 +3855,7 @@ msgstr "" "sont attendus." #: dcim/forms/object_create.py:109 dcim/forms/object_create.py:270 -#: dcim/tables/devices.py:281 +#: dcim/tables/devices.py:285 msgid "Rear ports" msgstr "Ports arrière" @@ -3897,7 +3893,7 @@ msgstr "" "Le nombre de ports frontaux à créer ({frontport_count}) doit correspondre au" " nombre sélectionné de positions des ports arrière ({rearport_count})." -#: dcim/forms/object_create.py:408 dcim/tables/devices.py:1039 +#: dcim/forms/object_create.py:408 dcim/tables/devices.py:1043 #: ipam/tables/fhrp.py:31 templates/dcim/virtualchassis.html:54 #: templates/dcim/virtualchassis_edit.html:48 templates/ipam/fhrpgroup.html:39 msgid "Members" @@ -4643,13 +4639,13 @@ msgstr "rôle des articles d'inventaire" msgid "inventory item roles" msgstr "rôles des articles d'inventaire" -#: dcim/models/device_components.py:1230 dcim/models/devices.py:595 -#: dcim/models/devices.py:1173 dcim/models/racks.py:113 +#: dcim/models/device_components.py:1230 dcim/models/devices.py:597 +#: dcim/models/devices.py:1178 dcim/models/racks.py:113 msgid "serial number" msgstr "numéro de série" -#: dcim/models/device_components.py:1238 dcim/models/devices.py:603 -#: dcim/models/devices.py:1180 dcim/models/racks.py:120 +#: dcim/models/device_components.py:1238 dcim/models/devices.py:605 +#: dcim/models/devices.py:1185 dcim/models/racks.py:120 msgid "asset tag" msgstr "étiquette d'actif" @@ -4699,7 +4695,7 @@ msgstr "fabricant" msgid "manufacturers" msgstr "fabricants" -#: dcim/models/devices.py:82 dcim/models/devices.py:381 +#: dcim/models/devices.py:82 dcim/models/devices.py:382 msgid "model" msgstr "modèle" @@ -4707,11 +4703,11 @@ msgstr "modèle" msgid "default platform" msgstr "plateforme par défaut" -#: dcim/models/devices.py:98 dcim/models/devices.py:385 +#: dcim/models/devices.py:98 dcim/models/devices.py:386 msgid "part number" msgstr "numéro de pièce" -#: dcim/models/devices.py:101 dcim/models/devices.py:388 +#: dcim/models/devices.py:101 dcim/models/devices.py:389 msgid "Discrete part number (optional)" msgstr "Numéro de pièce discret (facultatif)" @@ -4749,7 +4745,7 @@ msgstr "" "pour appareils. Laissez ce champ vide si ce type d'appareil n'est ni un " "parent ni un enfant." -#: dcim/models/devices.py:128 dcim/models/devices.py:647 +#: dcim/models/devices.py:128 dcim/models/devices.py:649 msgid "airflow" msgstr "débit d'air" @@ -4761,12 +4757,12 @@ msgstr "type d'appareil" msgid "device types" msgstr "types d'appareils" -#: dcim/models/devices.py:289 +#: dcim/models/devices.py:290 msgid "U height must be in increments of 0.5 rack units." msgstr "" "La hauteur en U doit être exprimée par incréments de 0,5 unité de rack." -#: dcim/models/devices.py:306 +#: dcim/models/devices.py:307 #, python-brace-format msgid "" "Device {device} in rack {rack} does not have sufficient space to accommodate" @@ -4775,7 +4771,7 @@ msgstr "" "Appareil {device} en rack {rack} ne dispose pas de suffisamment d'espace " "pour accueillir une hauteur de {height}U" -#: dcim/models/devices.py:321 +#: dcim/models/devices.py:322 #, python-brace-format msgid "" "Unable to set 0U height: Found {racked_instance_count} " @@ -4785,7 +4781,7 @@ msgstr "" "href=\"{url}\">{racked_instance_count} les instances déjà monté dans des" " racks." -#: dcim/models/devices.py:330 +#: dcim/models/devices.py:331 msgid "" "Must delete all device bay templates associated with this device before " "declassifying it as a parent device." @@ -4793,153 +4789,153 @@ msgstr "" "Vous devez supprimer tous les modèles de baies d'appareils associés à cet " "appareil avant de le déclassifier en tant qu'appareil parent." -#: dcim/models/devices.py:336 +#: dcim/models/devices.py:337 msgid "Child device types must be 0U." msgstr "Les types d'appareils pour enfants doivent être 0U." -#: dcim/models/devices.py:404 +#: dcim/models/devices.py:405 msgid "module type" msgstr "type de module" -#: dcim/models/devices.py:405 +#: dcim/models/devices.py:406 msgid "module types" msgstr "types de modules" -#: dcim/models/devices.py:473 +#: dcim/models/devices.py:475 msgid "Virtual machines may be assigned to this role" msgstr "Des machines virtuelles peuvent être affectées à ce rôle" -#: dcim/models/devices.py:485 +#: dcim/models/devices.py:487 msgid "device role" msgstr "rôle de l'appareil" -#: dcim/models/devices.py:486 +#: dcim/models/devices.py:488 msgid "device roles" msgstr "rôles des appareils" -#: dcim/models/devices.py:503 +#: dcim/models/devices.py:505 msgid "Optionally limit this platform to devices of a certain manufacturer" msgstr "" "Limitez éventuellement cette plate-forme aux appareils d'un certain " "fabricant" -#: dcim/models/devices.py:515 +#: dcim/models/devices.py:517 msgid "platform" msgstr "plateforme" -#: dcim/models/devices.py:516 +#: dcim/models/devices.py:518 msgid "platforms" msgstr "plateformes" -#: dcim/models/devices.py:564 +#: dcim/models/devices.py:566 msgid "The function this device serves" msgstr "La fonction de cet appareil" -#: dcim/models/devices.py:596 +#: dcim/models/devices.py:598 msgid "Chassis serial number, assigned by the manufacturer" msgstr "Numéro de série du châssis, attribué par le fabricant" -#: dcim/models/devices.py:604 dcim/models/devices.py:1181 +#: dcim/models/devices.py:606 dcim/models/devices.py:1186 msgid "A unique tag used to identify this device" msgstr "Un tag unique utilisé pour identifier cet appareil" -#: dcim/models/devices.py:631 +#: dcim/models/devices.py:633 msgid "position (U)" msgstr "position (U)" -#: dcim/models/devices.py:638 +#: dcim/models/devices.py:640 msgid "rack face" msgstr "face du rack" -#: dcim/models/devices.py:658 dcim/models/devices.py:1390 +#: dcim/models/devices.py:660 dcim/models/devices.py:1395 #: virtualization/models/virtualmachines.py:98 msgid "primary IPv4" msgstr "IPv4 principal" -#: dcim/models/devices.py:666 dcim/models/devices.py:1398 +#: dcim/models/devices.py:668 dcim/models/devices.py:1403 #: virtualization/models/virtualmachines.py:106 msgid "primary IPv6" msgstr "IPv6 principal" -#: dcim/models/devices.py:674 +#: dcim/models/devices.py:676 msgid "out-of-band IP" msgstr "IP hors bande" -#: dcim/models/devices.py:691 +#: dcim/models/devices.py:693 msgid "VC position" msgstr "Position en VC" -#: dcim/models/devices.py:695 +#: dcim/models/devices.py:697 msgid "Virtual chassis position" msgstr "Position virtuelle du châssis" -#: dcim/models/devices.py:698 +#: dcim/models/devices.py:700 msgid "VC priority" msgstr "Priorité VC" -#: dcim/models/devices.py:702 +#: dcim/models/devices.py:704 msgid "Virtual chassis master election priority" msgstr "Priorité d'élection principale du châssis virtuel" -#: dcim/models/devices.py:705 dcim/models/sites.py:207 +#: dcim/models/devices.py:707 dcim/models/sites.py:207 msgid "latitude" msgstr "latitude" -#: dcim/models/devices.py:710 dcim/models/devices.py:718 +#: dcim/models/devices.py:712 dcim/models/devices.py:720 #: dcim/models/sites.py:212 dcim/models/sites.py:220 msgid "GPS coordinate in decimal format (xx.yyyyyy)" msgstr "Coordonnées GPS au format décimal (xx.yyyyyy)" -#: dcim/models/devices.py:713 dcim/models/sites.py:215 +#: dcim/models/devices.py:715 dcim/models/sites.py:215 msgid "longitude" msgstr "longitude" -#: dcim/models/devices.py:786 +#: dcim/models/devices.py:788 msgid "Device name must be unique per site." msgstr "Le nom de l'appareil doit être unique par site." -#: dcim/models/devices.py:797 ipam/models/services.py:75 +#: dcim/models/devices.py:799 ipam/models/services.py:75 msgid "device" msgstr "appareil" -#: dcim/models/devices.py:798 +#: dcim/models/devices.py:800 msgid "devices" msgstr "appareils" -#: dcim/models/devices.py:838 +#: dcim/models/devices.py:840 #, python-brace-format msgid "Rack {rack} does not belong to site {site}." msgstr "Étagère {rack} n'appartient pas au site {site}." -#: dcim/models/devices.py:843 +#: dcim/models/devices.py:845 #, python-brace-format msgid "Location {location} does not belong to site {site}." msgstr "Emplacement {location} n'appartient pas au site {site}." -#: dcim/models/devices.py:849 +#: dcim/models/devices.py:851 #, python-brace-format msgid "Rack {rack} does not belong to location {location}." msgstr "Étagère {rack} n'appartient pas au lieu {location}." -#: dcim/models/devices.py:856 +#: dcim/models/devices.py:858 msgid "Cannot select a rack face without assigning a rack." msgstr "Impossible de sélectionner une face de rack sans attribuer un rack." -#: dcim/models/devices.py:860 +#: dcim/models/devices.py:862 msgid "Cannot select a rack position without assigning a rack." msgstr "" "Impossible de sélectionner une position de rack sans attribuer un rack." -#: dcim/models/devices.py:866 +#: dcim/models/devices.py:868 msgid "Position must be in increments of 0.5 rack units." msgstr "La position doit être exprimée par incréments de 0,5 unité de rack." -#: dcim/models/devices.py:870 +#: dcim/models/devices.py:872 msgid "Must specify rack face when defining rack position." msgstr "" "Doit spécifier la face du rack lors de la définition de la position du rack." -#: dcim/models/devices.py:878 +#: dcim/models/devices.py:880 #, python-brace-format msgid "" "A 0U device type ({device_type}) cannot be assigned to a rack position." @@ -4947,7 +4943,7 @@ msgstr "" "Un appareil de type 0U ({device_type}) ne peut pas être attribué à une " "position de rack." -#: dcim/models/devices.py:889 +#: dcim/models/devices.py:891 msgid "" "Child device types cannot be assigned to a rack face. This is an attribute " "of the parent device." @@ -4955,7 +4951,7 @@ msgstr "" "Les types d'appareils pour enfants ne peuvent pas être attribués à une face " "de rack. Il s'agit d'un attribut de l'appareil parent." -#: dcim/models/devices.py:896 +#: dcim/models/devices.py:898 msgid "" "Child device types cannot be assigned to a rack position. This is an " "attribute of the parent device." @@ -4963,7 +4959,7 @@ msgstr "" "Les types d'appareils pour enfants ne peuvent pas être affectés à une " "position en rack. Il s'agit d'un attribut de l'appareil parent." -#: dcim/models/devices.py:910 +#: dcim/models/devices.py:912 #, python-brace-format msgid "" "U{position} is already occupied or does not have sufficient space to " @@ -4972,22 +4968,22 @@ msgstr "" "U{position} est déjà occupé ou ne dispose pas de suffisamment d'espace pour " "accueillir ce type d'appareil : {device_type} ({u_height}U)" -#: dcim/models/devices.py:925 +#: dcim/models/devices.py:927 #, python-brace-format msgid "{ip} is not an IPv4 address." msgstr "{ip} n'est pas une adresse IPv4." -#: dcim/models/devices.py:934 dcim/models/devices.py:949 +#: dcim/models/devices.py:936 dcim/models/devices.py:951 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this device." msgstr "L'adresse IP spécifiée ({ip}) n'est pas attribué à cet appareil." -#: dcim/models/devices.py:940 +#: dcim/models/devices.py:942 #, python-brace-format msgid "{ip} is not an IPv6 address." msgstr "{ip} n'est pas une adresse IPv6." -#: dcim/models/devices.py:967 +#: dcim/models/devices.py:969 #, python-brace-format msgid "" "The assigned platform is limited to {platform_manufacturer} device types, " @@ -4997,25 +4993,25 @@ msgstr "" "d'appareils, mais le type de cet appareil appartient à " "{devicetype_manufacturer}." -#: dcim/models/devices.py:978 +#: dcim/models/devices.py:980 #, python-brace-format msgid "The assigned cluster belongs to a different site ({site})" msgstr "Le cluster attribué appartient à un autre site ({site})" -#: dcim/models/devices.py:986 +#: dcim/models/devices.py:988 msgid "A device assigned to a virtual chassis must have its position defined." msgstr "" "La position d'un appareil affecté à un châssis virtuel doit être définie." -#: dcim/models/devices.py:1188 +#: dcim/models/devices.py:1193 msgid "module" msgstr "module" -#: dcim/models/devices.py:1189 +#: dcim/models/devices.py:1194 msgid "modules" msgstr "modules" -#: dcim/models/devices.py:1205 +#: dcim/models/devices.py:1210 #, python-brace-format msgid "" "Module must be installed within a module bay belonging to the assigned " @@ -5024,22 +5020,22 @@ msgstr "" "Le module doit être installé dans une baie de modules appartenant au " "périphérique attribué ({device})." -#: dcim/models/devices.py:1309 +#: dcim/models/devices.py:1314 msgid "domain" msgstr "domaine" -#: dcim/models/devices.py:1322 dcim/models/devices.py:1323 +#: dcim/models/devices.py:1327 dcim/models/devices.py:1328 msgid "virtual chassis" msgstr "châssis virtuel" -#: dcim/models/devices.py:1338 +#: dcim/models/devices.py:1343 #, python-brace-format msgid "" "The selected master ({master}) is not assigned to this virtual chassis." msgstr "" "Le master sélectionné ({master}) n'est pas attribué à ce châssis virtuel." -#: dcim/models/devices.py:1354 +#: dcim/models/devices.py:1359 #, python-brace-format msgid "" "Unable to delete virtual chassis {self}. There are member interfaces which " @@ -5048,33 +5044,33 @@ msgstr "" "Impossible de supprimer le châssis virtuel {self}. Il existe des interfaces " "membres qui forment des interfaces LAG inter-châssis." -#: dcim/models/devices.py:1379 vpn/models/l2vpn.py:37 +#: dcim/models/devices.py:1384 vpn/models/l2vpn.py:37 msgid "identifier" msgstr "identificateur" -#: dcim/models/devices.py:1380 +#: dcim/models/devices.py:1385 msgid "Numeric identifier unique to the parent device" msgstr "Identifiant numérique propre à l'appareil parent" -#: dcim/models/devices.py:1408 extras/models/models.py:129 +#: dcim/models/devices.py:1413 extras/models/models.py:129 #: extras/models/models.py:724 netbox/models/__init__.py:114 msgid "comments" msgstr "commentaires" -#: dcim/models/devices.py:1424 +#: dcim/models/devices.py:1429 msgid "virtual device context" msgstr "contexte du périphérique virtuel" -#: dcim/models/devices.py:1425 +#: dcim/models/devices.py:1430 msgid "virtual device contexts" msgstr "contextes de périphériques virtuels" -#: dcim/models/devices.py:1457 +#: dcim/models/devices.py:1462 #, python-brace-format msgid "{ip} is not an IPv{family} address." msgstr "{ip} n'est pas un IPV{family} adresse." -#: dcim/models/devices.py:1463 +#: dcim/models/devices.py:1468 msgid "Primary IP address must belong to an interface on the assigned device." msgstr "" "L'adresse IP principale doit appartenir à une interface sur l'appareil " @@ -5465,7 +5461,7 @@ msgstr "Port de console" msgid "Reachable" msgstr "Joignable" -#: dcim/tables/connections.py:46 dcim/tables/devices.py:529 +#: dcim/tables/connections.py:46 dcim/tables/devices.py:533 #: templates/dcim/inventoryitem_edit.html:64 #: templates/dcim/poweroutlet.html:47 templates/dcim/powerport.html:18 msgid "Power Port" @@ -5484,7 +5480,7 @@ msgstr "Appareils" msgid "VMs" msgstr "machines virtuelles" -#: dcim/tables/devices.py:133 dcim/tables/devices.py:245 +#: dcim/tables/devices.py:133 dcim/tables/devices.py:249 #: extras/forms/model_forms.py:515 templates/dcim/device.html:114 #: templates/dcim/device/render_config.html:11 #: templates/dcim/device/render_config.html:15 @@ -5493,62 +5489,62 @@ msgstr "machines virtuelles" #: templates/virtualization/virtualmachine.html:47 #: templates/virtualization/virtualmachine/render_config.html:11 #: templates/virtualization/virtualmachine/render_config.html:15 -#: virtualization/tables/virtualmachines.py:93 +#: virtualization/tables/virtualmachines.py:106 msgid "Config Template" msgstr "Modèle de configuration" -#: dcim/tables/devices.py:216 dcim/tables/devices.py:1074 +#: dcim/tables/devices.py:220 dcim/tables/devices.py:1078 #: ipam/forms/bulk_import.py:511 ipam/forms/model_forms.py:296 #: 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:81 +#: virtualization/tables/virtualmachines.py:94 msgid "IP Address" msgstr "Adresse IP" -#: dcim/tables/devices.py:220 dcim/tables/devices.py:1078 -#: virtualization/tables/virtualmachines.py:72 +#: dcim/tables/devices.py:224 dcim/tables/devices.py:1082 +#: virtualization/tables/virtualmachines.py:85 msgid "IPv4 Address" msgstr "Adresse IPv4" -#: dcim/tables/devices.py:224 dcim/tables/devices.py:1082 -#: virtualization/tables/virtualmachines.py:76 +#: dcim/tables/devices.py:228 dcim/tables/devices.py:1086 +#: virtualization/tables/virtualmachines.py:89 msgid "IPv6 Address" msgstr "Adresse IPv6" -#: dcim/tables/devices.py:239 +#: dcim/tables/devices.py:243 msgid "VC Position" msgstr "Position en VC" -#: dcim/tables/devices.py:242 +#: dcim/tables/devices.py:246 msgid "VC Priority" msgstr "Priorité VC" -#: dcim/tables/devices.py:249 templates/dcim/device_edit.html:38 +#: dcim/tables/devices.py:253 templates/dcim/device_edit.html:38 #: templates/dcim/devicebay_populate.html:16 msgid "Parent Device" msgstr "Appareil parent" -#: dcim/tables/devices.py:254 +#: dcim/tables/devices.py:258 msgid "Position (Device Bay)" msgstr "Position (baie de l'appareil)" -#: dcim/tables/devices.py:263 +#: dcim/tables/devices.py:267 msgid "Console ports" msgstr "Ports de console" -#: dcim/tables/devices.py:266 +#: dcim/tables/devices.py:270 msgid "Console server ports" msgstr "Ports du serveur de consoles" -#: dcim/tables/devices.py:269 +#: dcim/tables/devices.py:273 msgid "Power ports" msgstr "Ports d'alimentation" -#: dcim/tables/devices.py:272 +#: dcim/tables/devices.py:276 msgid "Power outlets" msgstr "Prises de courant" -#: dcim/tables/devices.py:275 dcim/tables/devices.py:1087 +#: dcim/tables/devices.py:279 dcim/tables/devices.py:1091 #: dcim/tables/devicetypes.py:125 dcim/views.py:1005 dcim/views.py:1244 #: dcim/views.py:1930 netbox/navigation/menu.py:82 #: netbox/navigation/menu.py:238 templates/dcim/device/base.html:37 @@ -5558,53 +5554,53 @@ msgstr "Prises de courant" #: templates/dcim/virtualdevicecontext.html:85 #: templates/virtualization/virtualmachine/base.html:27 #: templates/virtualization/virtualmachine_list.html:14 -#: virtualization/tables/virtualmachines.py:87 virtualization/views.py:368 +#: virtualization/tables/virtualmachines.py:100 virtualization/views.py:368 #: wireless/tables/wirelesslan.py:55 msgid "Interfaces" msgstr "Interfaces" -#: dcim/tables/devices.py:278 +#: dcim/tables/devices.py:282 msgid "Front ports" msgstr "Ports avant" -#: dcim/tables/devices.py:284 +#: dcim/tables/devices.py:288 msgid "Device bays" msgstr "Baies pour appareils" -#: dcim/tables/devices.py:287 +#: dcim/tables/devices.py:291 msgid "Module bays" msgstr "Baies pour modules" -#: dcim/tables/devices.py:290 +#: dcim/tables/devices.py:294 msgid "Inventory items" msgstr "Articles d'inventaire" -#: dcim/tables/devices.py:329 dcim/tables/modules.py:56 +#: dcim/tables/devices.py:333 dcim/tables/modules.py:56 #: templates/dcim/modulebay.html:17 msgid "Module Bay" msgstr "Module Bay" -#: dcim/tables/devices.py:350 +#: dcim/tables/devices.py:354 msgid "Cable Color" msgstr "Couleur du câble" -#: dcim/tables/devices.py:356 +#: dcim/tables/devices.py:360 msgid "Link Peers" msgstr "Lier les pairs" -#: dcim/tables/devices.py:359 +#: dcim/tables/devices.py:363 msgid "Mark Connected" msgstr "Marquer comme connecté" -#: dcim/tables/devices.py:475 +#: dcim/tables/devices.py:479 msgid "Maximum draw (W)" msgstr "Tirage maximal (W)" -#: dcim/tables/devices.py:478 +#: dcim/tables/devices.py:482 msgid "Allocated draw (W)" msgstr "Tirage alloué (W)" -#: dcim/tables/devices.py:578 ipam/forms/model_forms.py:707 +#: dcim/tables/devices.py:582 ipam/forms/model_forms.py:711 #: ipam/tables/fhrp.py:28 ipam/views.py:597 ipam/views.py:691 #: netbox/navigation/menu.py:146 netbox/navigation/menu.py:148 #: templates/dcim/interface.html:351 templates/ipam/ipaddress_bulk_add.html:15 @@ -5613,12 +5609,12 @@ msgstr "Tirage alloué (W)" msgid "IP Addresses" msgstr "Adresses IP" -#: dcim/tables/devices.py:584 netbox/navigation/menu.py:190 +#: dcim/tables/devices.py:588 netbox/navigation/menu.py:190 #: templates/ipam/inc/panels/fhrp_groups.html:5 msgid "FHRP Groups" msgstr "Groupes FHRP" -#: dcim/tables/devices.py:596 templates/dcim/interface.html:90 +#: dcim/tables/devices.py:600 templates/dcim/interface.html:90 #: templates/virtualization/vminterface.html:70 templates/vpn/tunnel.html:18 #: templates/vpn/tunneltermination.html:14 vpn/forms/bulk_edit.py:75 #: vpn/forms/bulk_import.py:76 vpn/forms/filtersets.py:41 @@ -5627,20 +5623,20 @@ msgstr "Groupes FHRP" msgid "Tunnel" msgstr "Tunnel" -#: dcim/tables/devices.py:621 dcim/tables/devicetypes.py:224 +#: dcim/tables/devices.py:625 dcim/tables/devicetypes.py:224 #: templates/dcim/interface.html:66 msgid "Management Only" msgstr "Gestion uniquement" -#: dcim/tables/devices.py:629 +#: dcim/tables/devices.py:633 msgid "Wireless link" msgstr "Liaison sans fil" -#: dcim/tables/devices.py:639 +#: dcim/tables/devices.py:643 msgid "VDCs" msgstr "VDC" -#: dcim/tables/devices.py:647 dcim/tables/devicetypes.py:48 +#: dcim/tables/devices.py:651 dcim/tables/devicetypes.py:48 #: dcim/tables/devicetypes.py:140 dcim/views.py:1080 dcim/views.py:2023 #: netbox/navigation/menu.py:91 templates/dcim/device/base.html:52 #: templates/dcim/device_list.html:71 templates/dcim/devicetype/base.html:49 @@ -5649,7 +5645,7 @@ msgstr "VDC" msgid "Inventory Items" msgstr "Articles d'inventaire" -#: dcim/tables/devices.py:728 +#: dcim/tables/devices.py:732 #: 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 @@ -5658,28 +5654,28 @@ msgstr "Articles d'inventaire" msgid "Rear Port" msgstr "Port arrière" -#: dcim/tables/devices.py:893 templates/dcim/modulebay.html:51 +#: dcim/tables/devices.py:897 templates/dcim/modulebay.html:51 msgid "Installed Module" msgstr "Module installé" -#: dcim/tables/devices.py:896 +#: dcim/tables/devices.py:900 msgid "Module Serial" msgstr "Série du module" -#: dcim/tables/devices.py:900 +#: dcim/tables/devices.py:904 msgid "Module Asset Tag" msgstr "Étiquette d'actif du module" -#: dcim/tables/devices.py:909 +#: dcim/tables/devices.py:913 msgid "Module Status" msgstr "État du module" -#: dcim/tables/devices.py:951 dcim/tables/devicetypes.py:308 +#: dcim/tables/devices.py:955 dcim/tables/devicetypes.py:308 #: templates/dcim/inventoryitem.html:41 msgid "Component" msgstr "Composant" -#: dcim/tables/devices.py:1006 +#: dcim/tables/devices.py:1010 msgid "Items" msgstr "Objets" @@ -6249,7 +6245,7 @@ msgid "Cluster type (slug)" msgstr "Type de cluster (slug)" #: extras/filtersets.py:490 ipam/forms/bulk_edit.py:475 -#: ipam/forms/model_forms.py:585 virtualization/forms/filtersets.py:108 +#: ipam/forms/model_forms.py:589 virtualization/forms/filtersets.py:108 msgid "Cluster group" msgstr "Groupe de clusters" @@ -6380,8 +6376,8 @@ msgid "Is active" msgstr "Est actif" #: extras/forms/bulk_import.py:34 extras/forms/bulk_import.py:115 -#: extras/forms/bulk_import.py:130 extras/forms/bulk_import.py:153 -#: extras/forms/bulk_import.py:177 extras/forms/filtersets.py:114 +#: extras/forms/bulk_import.py:136 extras/forms/bulk_import.py:159 +#: extras/forms/bulk_import.py:183 extras/forms/filtersets.py:114 #: extras/forms/filtersets.py:160 extras/forms/filtersets.py:201 #: extras/forms/model_forms.py:43 extras/forms/model_forms.py:127 #: extras/forms/model_forms.py:156 extras/forms/model_forms.py:197 @@ -6390,8 +6386,8 @@ msgid "Content types" msgstr "Types de contenu" #: extras/forms/bulk_import.py:36 extras/forms/bulk_import.py:117 -#: extras/forms/bulk_import.py:132 extras/forms/bulk_import.py:155 -#: extras/forms/bulk_import.py:179 tenancy/forms/bulk_import.py:96 +#: extras/forms/bulk_import.py:138 extras/forms/bulk_import.py:161 +#: extras/forms/bulk_import.py:185 tenancy/forms/bulk_import.py:96 msgid "One or more assigned object types" msgstr "Un ou plusieurs types d'objets attribués" @@ -6438,29 +6434,39 @@ msgstr "" "virgules avec des libellés facultatifs séparés par deux points : " "« Choice1:First Choice, Choice2:Second Choice »" -#: extras/forms/bulk_import.py:182 +#: extras/forms/bulk_import.py:120 extras/models/models.py:353 +msgid "button class" +msgstr "classe de boutons" + +#: extras/forms/bulk_import.py:123 extras/models/models.py:357 +msgid "" +"The class of the first link in a group will be used for the dropdown button" +msgstr "" +"La classe du premier lien d'un groupe sera utilisée pour le bouton déroulant" + +#: extras/forms/bulk_import.py:188 msgid "Action object" msgstr "Objet d'action" -#: extras/forms/bulk_import.py:184 +#: extras/forms/bulk_import.py:190 msgid "Webhook name or script as dotted path module.Class" msgstr "Nom du webhook ou script sous forme de chemin pointillé module.Class" -#: extras/forms/bulk_import.py:205 +#: extras/forms/bulk_import.py:211 #, python-brace-format msgid "Webhook {name} not found" msgstr "Webhook {name} introuvable" -#: extras/forms/bulk_import.py:214 +#: extras/forms/bulk_import.py:220 #, python-brace-format msgid "Script {name} not found" msgstr "Scénario {name} introuvable" -#: extras/forms/bulk_import.py:236 +#: extras/forms/bulk_import.py:242 msgid "Assigned object type" msgstr "Type d'objet attribué" -#: extras/forms/bulk_import.py:241 +#: extras/forms/bulk_import.py:247 msgid "The classification of entry" msgstr "La classification de l'entrée" @@ -7432,16 +7438,6 @@ msgstr "Code modèle Jinja2 pour l'URL du lien" msgid "Links with the same group will appear as a dropdown menu" msgstr "Les liens avec le même groupe apparaîtront dans un menu déroulant" -#: extras/models/models.py:353 -msgid "button class" -msgstr "classe de boutons" - -#: extras/models/models.py:357 -msgid "" -"The class of the first link in a group will be used for the dropdown button" -msgstr "" -"La classe du premier lien d'un groupe sera utilisée pour le bouton déroulant" - #: extras/models/models.py:360 msgid "new window" msgstr "nouvelle fenêtre" @@ -7634,7 +7630,7 @@ msgid "staged changes" msgstr "modifications échelonnées" #: extras/models/tags.py:40 -msgid "The object type(s) to which this this tag can be applied." +msgid "The object type(s) to which this tag can be applied." msgstr "Le ou les types d'objets auxquels cette balise peut être appliquée." #: extras/models/tags.py:49 @@ -7935,7 +7931,7 @@ msgid "VLAN number (1-4094)" msgstr "Numéro de VLAN (1-4094)" #: ipam/filtersets.py:437 ipam/filtersets.py:441 ipam/filtersets.py:533 -#: ipam/forms/model_forms.py:444 templates/tenancy/contact.html:54 +#: ipam/forms/model_forms.py:430 templates/tenancy/contact.html:54 #: tenancy/forms/bulk_edit.py:112 msgid "Address" msgstr "Adresse" @@ -8104,7 +8100,7 @@ msgid "Authentication key" msgstr "Clé d'authentification" #: ipam/forms/bulk_edit.py:404 ipam/forms/filtersets.py:369 -#: ipam/forms/model_forms.py:455 netbox/navigation/menu.py:376 +#: ipam/forms/model_forms.py:441 netbox/navigation/menu.py:376 #: templates/ipam/fhrpgroup.html:51 #: templates/wireless/inc/authentication_attrs.html:5 #: wireless/forms/bulk_edit.py:90 wireless/forms/bulk_edit.py:137 @@ -8121,11 +8117,11 @@ msgstr "VID VLAN minimum pour enfants" msgid "Maximum child VLAN VID" msgstr "VID VLAN maximum pour enfants" -#: ipam/forms/bulk_edit.py:428 ipam/forms/model_forms.py:527 +#: ipam/forms/bulk_edit.py:428 ipam/forms/model_forms.py:531 msgid "Scope type" msgstr "Type de portée" -#: ipam/forms/bulk_edit.py:489 ipam/forms/model_forms.py:600 +#: ipam/forms/bulk_edit.py:489 ipam/forms/model_forms.py:604 #: ipam/tables/vlans.py:71 templates/ipam/vlangroup.html:39 msgid "Scope" msgstr "Champ" @@ -8134,8 +8130,8 @@ msgstr "Champ" msgid "Site & Group" msgstr "Site et groupe" -#: ipam/forms/bulk_edit.py:574 ipam/forms/model_forms.py:663 -#: ipam/forms/model_forms.py:697 ipam/tables/services.py:19 +#: ipam/forms/bulk_edit.py:574 ipam/forms/model_forms.py:667 +#: ipam/forms/model_forms.py:701 ipam/tables/services.py:19 #: ipam/tables/services.py:49 templates/ipam/service.html:39 #: templates/ipam/servicetemplate.html:24 msgid "Ports" @@ -8175,7 +8171,7 @@ msgid "Parent device of assigned interface (if any)" msgstr "Appareil parent auquel est attribuée l'interface (le cas échéant)" #: ipam/forms/bulk_import.py:310 ipam/forms/bulk_import.py:496 -#: ipam/forms/model_forms.py:691 virtualization/filtersets.py:284 +#: ipam/forms/model_forms.py:695 virtualization/filtersets.py:284 #: virtualization/filtersets.py:323 virtualization/forms/bulk_edit.py:199 #: virtualization/forms/bulk_edit.py:325 #: virtualization/forms/bulk_import.py:146 @@ -8354,8 +8350,8 @@ msgstr "Port" #: virtualization/forms/filtersets.py:189 #: virtualization/forms/filtersets.py:234 #: virtualization/forms/model_forms.py:223 -#: virtualization/tables/virtualmachines.py:115 -#: virtualization/tables/virtualmachines.py:168 vpn/choices.py:45 +#: virtualization/tables/virtualmachines.py:128 +#: virtualization/tables/virtualmachines.py:181 vpn/choices.py:45 #: vpn/forms/filtersets.py:289 vpn/forms/model_forms.py:161 #: vpn/forms/model_forms.py:172 vpn/forms/model_forms.py:274 msgid "Virtual Machine" @@ -8378,7 +8374,7 @@ msgstr "Affectation de site/VLAN" msgid "IP Range" msgstr "Plage IP" -#: ipam/forms/model_forms.py:285 ipam/forms/model_forms.py:454 +#: ipam/forms/model_forms.py:285 ipam/forms/model_forms.py:440 #: templates/ipam/fhrpgroup.html:19 templates/ipam/ipaddress_edit.html:52 msgid "FHRP Group" msgstr "Groupe FHRP" @@ -8392,7 +8388,7 @@ msgstr "" msgid "An IP address can only be assigned to a single object." msgstr "Une adresse IP ne peut être attribuée qu'à un seul objet." -#: ipam/forms/model_forms.py:357 ipam/models/ip.py:877 +#: ipam/forms/model_forms.py:357 ipam/models/ip.py:896 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" @@ -8407,36 +8403,25 @@ msgstr "" "Seules les adresses IP attribuées à une interface peuvent être désignées " "comme adresses IP principales." -#: ipam/forms/model_forms.py:373 -#, python-brace-format -msgid "{ip} is a network ID, which may not be assigned to an interface." -msgstr "" -"{ip} est un identifiant réseau, qui ne peut pas être attribué à une " -"interface." - -#: ipam/forms/model_forms.py:379 -#, python-brace-format -msgid "" -"{ip} is a broadcast address, which may not be assigned to an interface." -msgstr "" -"{ip} est une adresse de diffusion, qui ne peut pas être attribuée à une " -"interface." - -#: ipam/forms/model_forms.py:456 +#: ipam/forms/model_forms.py:442 msgid "Virtual IP Address" msgstr "Adresse IP virtuelle" -#: ipam/forms/model_forms.py:598 ipam/forms/model_forms.py:637 +#: ipam/forms/model_forms.py:523 +msgid "Assignment already exists" +msgstr "L'affectation existe déjà" + +#: ipam/forms/model_forms.py:602 ipam/forms/model_forms.py:641 #: ipam/tables/ip.py:250 templates/ipam/vlan_edit.html:37 #: templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "Groupe VLAN" -#: ipam/forms/model_forms.py:599 +#: ipam/forms/model_forms.py:603 msgid "Child VLANs" msgstr "VLAN pour enfants" -#: ipam/forms/model_forms.py:668 ipam/forms/model_forms.py:702 +#: ipam/forms/model_forms.py:672 ipam/forms/model_forms.py:706 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." @@ -8444,15 +8429,15 @@ msgstr "" "Liste séparée par des virgules d'un ou de plusieurs numéros de port. Une " "plage peut être spécifiée à l'aide d'un trait d'union." -#: ipam/forms/model_forms.py:673 templates/ipam/servicetemplate.html:12 +#: ipam/forms/model_forms.py:677 templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "Modèle de service" -#: ipam/forms/model_forms.py:724 +#: ipam/forms/model_forms.py:728 msgid "Service template" msgstr "Modèle de service" -#: ipam/forms/model_forms.py:754 +#: ipam/forms/model_forms.py:758 msgid "" "Must specify name, protocol, and port(s) if not using a service template." msgstr "" @@ -8621,12 +8606,12 @@ msgstr "préfixes" msgid "Cannot create prefix with /0 mask." msgstr "Impossible de créer un préfixe avec le masque /0." -#: ipam/models/ip.py:323 ipam/models/ip.py:854 +#: ipam/models/ip.py:323 ipam/models/ip.py:873 #, python-brace-format msgid "VRF {vrf}" msgstr "VRF {vrf}" -#: ipam/models/ip.py:323 ipam/models/ip.py:854 +#: ipam/models/ip.py:323 ipam/models/ip.py:873 msgid "global table" msgstr "tableau global" @@ -8725,12 +8710,27 @@ msgstr "Adresses IP" msgid "Cannot create IP address with /0 mask." msgstr "Impossible de créer une adresse IP avec le masque /0." -#: ipam/models/ip.py:856 +#: ipam/models/ip.py:850 +#, python-brace-format +msgid "{ip} is a network ID, which may not be assigned to an interface." +msgstr "" +"{ip} est un identifiant réseau, qui ne peut pas être attribué à une " +"interface." + +#: ipam/models/ip.py:861 +#, python-brace-format +msgid "" +"{ip} is a broadcast address, which may not be assigned to an interface." +msgstr "" +"{ip} est une adresse de diffusion, qui ne peut pas être attribuée à une " +"interface." + +#: ipam/models/ip.py:875 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "Adresse IP dupliquée trouvée dans {table}: {ipaddress}" -#: ipam/models/ip.py:883 +#: ipam/models/ip.py:902 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "Seules les adresses IPv6 peuvent se voir attribuer le statut SLAAC" @@ -9522,7 +9522,7 @@ msgstr "Machines virtuelles" #: templates/virtualization/virtualmachine.html:177 #: templates/virtualization/virtualmachine/base.html:32 #: templates/virtualization/virtualmachine_list.html:21 -#: virtualization/tables/virtualmachines.py:90 virtualization/views.py:389 +#: virtualization/tables/virtualmachines.py:103 virtualization/views.py:389 msgid "Virtual Disks" msgstr "Disques virtuels" @@ -10451,8 +10451,8 @@ msgstr "Planification" #: templates/core/job.html:66 #, python-format -msgid "every %(interval)s seconds" -msgstr "chaque %(interval)s secondes" +msgid "every %(interval)s minutes" +msgstr "chaque %(interval)s minutes" #: templates/dcim/bulk_disconnect.html:9 #, python-format @@ -13014,70 +13014,70 @@ msgstr "Les contraintes ne sont pas prises en charge pour ce type d'objet." msgid "Invalid filter for {model}: {error}" msgstr "Filtre non valide pour {model}: {error}" -#: users/models.py:54 +#: users/models.py:55 msgid "user" msgstr "utilisateur" -#: users/models.py:55 +#: users/models.py:56 msgid "users" msgstr "utilisateurs" -#: users/models.py:66 +#: users/models.py:67 msgid "A user with this username already exists." msgstr "Un utilisateur avec ce nom d'utilisateur existe déjà." -#: users/models.py:78 vpn/models/crypto.py:42 +#: users/models.py:79 vpn/models/crypto.py:42 msgid "group" msgstr "groupe" -#: users/models.py:79 +#: users/models.py:80 msgid "groups" msgstr "groupes" -#: users/models.py:106 users/models.py:107 +#: users/models.py:107 users/models.py:108 msgid "user preferences" msgstr "préférences de l'utilisateur" -#: users/models.py:174 +#: users/models.py:175 #, python-brace-format msgid "Key '{path}' is a leaf node; cannot assign new keys" msgstr "" "Clé '{path}'est un nœud feuille ; impossible d'attribuer de nouvelles clés" -#: users/models.py:186 +#: users/models.py:187 #, python-brace-format msgid "Key '{path}' is a dictionary; cannot assign a non-dictionary value" msgstr "" "Clé '{path}'est un dictionnaire ; impossible d'attribuer une valeur autre " "que celle du dictionnaire" -#: users/models.py:252 +#: users/models.py:253 msgid "expires" msgstr "expire" -#: users/models.py:257 +#: users/models.py:258 msgid "last used" msgstr "utilisé pour la dernière fois" -#: users/models.py:262 +#: users/models.py:263 msgid "key" msgstr "clé" -#: users/models.py:268 +#: users/models.py:269 msgid "write enabled" msgstr "écriture activée" -#: users/models.py:270 +#: users/models.py:271 msgid "Permit create/update/delete operations using this key" msgstr "" "Autoriser les opérations de création/mise à jour/suppression à l'aide de " "cette clé" -#: users/models.py:281 +#: users/models.py:282 msgid "allowed IPs" msgstr "adresses IP autorisées" -#: users/models.py:283 +#: users/models.py:284 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\"" @@ -13086,34 +13086,34 @@ msgstr "" "Laissez ce champ vide pour éviter toute restriction. Par exemple : " "« 10.1.1.0/24, 192.168.10.16/32, 2001 : DB 8:1 : /64 »" -#: users/models.py:291 +#: users/models.py:296 msgid "token" msgstr "jeton" -#: users/models.py:292 +#: users/models.py:297 msgid "tokens" msgstr "jetons" -#: users/models.py:373 +#: users/models.py:378 msgid "The list of actions granted by this permission" msgstr "La liste des actions accordées par cette autorisation" -#: users/models.py:378 +#: users/models.py:383 msgid "constraints" msgstr "entraves" -#: users/models.py:379 +#: users/models.py:384 msgid "" "Queryset filter matching the applicable objects of the selected type(s)" msgstr "" "Filtre Queryset correspondant aux objets applicables du ou des types " "sélectionnés" -#: users/models.py:386 +#: users/models.py:391 msgid "permission" msgstr "autorisation" -#: users/models.py:387 +#: users/models.py:392 msgid "permissions" msgstr "autorisations" @@ -13392,47 +13392,56 @@ msgstr "" "Cet objet a été modifié depuis le rendu du formulaire. Consultez le journal " "des modifications de l'objet pour plus de détails." -#: utilities/forms/utils.py:42 utilities/forms/utils.py:65 -#: utilities/forms/utils.py:77 utilities/forms/utils.py:80 +#: utilities/forms/utils.py:42 utilities/forms/utils.py:68 +#: utilities/forms/utils.py:85 utilities/forms/utils.py:87 #, python-brace-format msgid "Range \"{value}\" is invalid." msgstr "Gamme »{value}« n'est pas valide." -#: utilities/forms/utils.py:225 +#: utilities/forms/utils.py:74 +#, python-brace-format +msgid "" +"Invalid range: Ending value ({end}) must be greater than beginning value " +"({begin})." +msgstr "" +"Plage non valide : valeur de fin ({end}) doit être supérieur à la valeur de " +"départ ({begin})." + +#: utilities/forms/utils.py:232 #, python-brace-format msgid "Duplicate or conflicting column header for \"{field}\"" msgstr "En-tête de colonne dupliqué ou en conflit pour »{field}«" -#: utilities/forms/utils.py:231 +#: utilities/forms/utils.py:238 #, python-brace-format msgid "Duplicate or conflicting column header for \"{header}\"" msgstr "En-tête de colonne dupliqué ou en conflit pour »{header}«" -#: utilities/forms/utils.py:240 +#: utilities/forms/utils.py:247 #, python-brace-format msgid "Row {row}: Expected {count_expected} columns but found {count_found}" msgstr "" "Rangée {row}: Prévu {count_expected} colonnes mais trouvées {count_found}" -#: utilities/forms/utils.py:263 +#: utilities/forms/utils.py:270 #, python-brace-format msgid "Unexpected column header \"{field}\" found." msgstr "En-tête de colonne inattendu »{field}« trouvé." -#: utilities/forms/utils.py:265 +#: utilities/forms/utils.py:272 #, python-brace-format msgid "Column \"{field}\" is not a related object; cannot use dots" msgstr "" "Colonne »{field}« n'est pas un objet apparenté ; ne peut pas utiliser de " "points" -#: utilities/forms/utils.py:269 +#: utilities/forms/utils.py:276 #, python-brace-format msgid "Invalid related object attribute for column \"{field}\": {to_field}" msgstr "" "Attribut d'objet associé non valide pour la colonne »{field}« : {to_field}" -#: utilities/forms/utils.py:277 +#: utilities/forms/utils.py:284 #, python-brace-format msgid "Required column header \"{header}\" not found." msgstr "En-tête de colonne obligatoire »{header}« introuvable." @@ -14073,6 +14082,11 @@ msgstr "Proposition" msgid "Assigned Object Type" msgstr "Type d'objet attribué" +#: vpn/forms/model_forms.py:94 vpn/forms/model_forms.py:129 +#: vpn/forms/model_forms.py:241 vpn/tables/tunnels.py:91 +msgid "Tunnel interface" +msgstr "Interface de tunnel" + #: vpn/forms/model_forms.py:147 msgid "First Termination" msgstr "Première résiliation" diff --git a/netbox/translations/ja/LC_MESSAGES/django.mo b/netbox/translations/ja/LC_MESSAGES/django.mo index c190f234c9e29fce5fe4612e92ab9ca67ebe8213..2962616319d987b8cfaa1e2dd83024464a28c60c 100644 GIT binary patch delta 63825 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 delta 64316 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 JxP4EO{{i~-WKjSB diff --git a/netbox/translations/ja/LC_MESSAGES/django.po b/netbox/translations/ja/LC_MESSAGES/django.po index 14ecb3cb8..5b79cf0dd 100644 --- a/netbox/translations/ja/LC_MESSAGES/django.po +++ b/netbox/translations/ja/LC_MESSAGES/django.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-21 19:48+0000\n" +"POT-Creation-Date: 2024-04-04 19:11+0000\n" "PO-Revision-Date: 2023-10-30 17:48+0000\n" "Last-Translator: Jeremy Stretch, 2024\n" "Language-Team: Japanese (https://app.transifex.com/netbox-community/teams/178115/ja/)\n" @@ -65,8 +65,8 @@ msgid "Your preferences have been updated." msgstr "設定が更新されました。" #: circuits/choices.py:21 dcim/choices.py:20 dcim/choices.py:102 -#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1419 -#: dcim/choices.py:1495 dcim/choices.py:1545 virtualization/choices.py:20 +#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1425 +#: dcim/choices.py:1501 dcim/choices.py:1551 virtualization/choices.py:20 #: virtualization/choices.py:45 vpn/choices.py:18 msgid "Planned" msgstr "計画中" @@ -76,8 +76,8 @@ msgid "Provisioning" msgstr "開通" #: circuits/choices.py:23 dcim/choices.py:22 dcim/choices.py:103 -#: dcim/choices.py:173 dcim/choices.py:219 dcim/choices.py:1494 -#: dcim/choices.py:1544 extras/tables/tables.py:380 ipam/choices.py:31 +#: dcim/choices.py:173 dcim/choices.py:219 dcim/choices.py:1500 +#: dcim/choices.py:1550 extras/tables/tables.py:380 ipam/choices.py:31 #: ipam/choices.py:49 ipam/choices.py:69 ipam/choices.py:154 #: templates/extras/configcontext.html:26 templates/users/user.html:38 #: users/forms/bulk_edit.py:36 virtualization/choices.py:22 @@ -86,7 +86,7 @@ msgid "Active" msgstr "アクティブ" #: circuits/choices.py:24 dcim/choices.py:172 dcim/choices.py:218 -#: dcim/choices.py:1493 dcim/choices.py:1546 virtualization/choices.py:24 +#: dcim/choices.py:1499 dcim/choices.py:1552 virtualization/choices.py:24 #: virtualization/choices.py:43 msgid "Offline" msgstr "オフライン" @@ -99,7 +99,7 @@ msgstr "解約" msgid "Decommissioned" msgstr "廃止" -#: circuits/filtersets.py:29 circuits/filtersets.py:184 dcim/filtersets.py:124 +#: circuits/filtersets.py:29 circuits/filtersets.py:190 dcim/filtersets.py:124 #: dcim/filtersets.py:185 dcim/filtersets.py:260 dcim/filtersets.py:369 #: dcim/filtersets.py:903 dcim/filtersets.py:1207 dcim/filtersets.py:1702 #: dcim/filtersets.py:1945 dcim/filtersets.py:2003 ipam/filtersets.py:305 @@ -108,7 +108,7 @@ msgstr "廃止" msgid "Region (ID)" msgstr "リージョン (ID)" -#: circuits/filtersets.py:36 circuits/filtersets.py:191 dcim/filtersets.py:130 +#: circuits/filtersets.py:36 circuits/filtersets.py:197 dcim/filtersets.py:130 #: dcim/filtersets.py:192 dcim/filtersets.py:267 dcim/filtersets.py:376 #: dcim/filtersets.py:910 dcim/filtersets.py:1214 dcim/filtersets.py:1709 #: dcim/filtersets.py:1952 dcim/filtersets.py:2010 extras/filtersets.py:414 @@ -118,7 +118,7 @@ msgstr "リージョン (ID)" msgid "Region (slug)" msgstr "リージョン (slug)" -#: circuits/filtersets.py:42 circuits/filtersets.py:197 dcim/filtersets.py:198 +#: circuits/filtersets.py:42 circuits/filtersets.py:203 dcim/filtersets.py:198 #: dcim/filtersets.py:273 dcim/filtersets.py:382 dcim/filtersets.py:916 #: dcim/filtersets.py:1220 dcim/filtersets.py:1715 dcim/filtersets.py:1958 #: dcim/filtersets.py:2016 ipam/filtersets.py:318 ipam/filtersets.py:909 @@ -126,7 +126,7 @@ msgstr "リージョン (slug)" msgid "Site group (ID)" msgstr "サイトグループ (ID)" -#: circuits/filtersets.py:49 circuits/filtersets.py:204 dcim/filtersets.py:205 +#: circuits/filtersets.py:49 circuits/filtersets.py:210 dcim/filtersets.py:205 #: dcim/filtersets.py:280 dcim/filtersets.py:389 dcim/filtersets.py:923 #: dcim/filtersets.py:1227 dcim/filtersets.py:1722 dcim/filtersets.py:1965 #: dcim/filtersets.py:2023 extras/filtersets.py:420 ipam/filtersets.py:325 @@ -136,7 +136,7 @@ msgid "Site group (slug)" msgstr "サイトグループ (slug)" #: circuits/filtersets.py:54 circuits/forms/bulk_import.py:117 -#: circuits/forms/filtersets.py:47 circuits/forms/filtersets.py:171 +#: circuits/forms/filtersets.py:47 circuits/forms/filtersets.py:167 #: circuits/forms/model_forms.py:137 dcim/forms/bulk_edit.py:166 #: dcim/forms/bulk_edit.py:238 dcim/forms/bulk_edit.py:570 #: dcim/forms/bulk_edit.py:763 dcim/forms/bulk_import.py:130 @@ -159,8 +159,8 @@ msgstr "サイトグループ (slug)" #: ipam/forms/bulk_import.py:170 ipam/forms/bulk_import.py:437 #: ipam/forms/filtersets.py:152 ipam/forms/filtersets.py:226 #: ipam/forms/filtersets.py:417 ipam/forms/filtersets.py:470 -#: ipam/forms/model_forms.py:206 ipam/forms/model_forms.py:548 -#: ipam/forms/model_forms.py:640 ipam/tables/ip.py:244 +#: ipam/forms/model_forms.py:206 ipam/forms/model_forms.py:552 +#: ipam/forms/model_forms.py:644 ipam/tables/ip.py:244 #: ipam/tables/vlans.py:114 ipam/tables/vlans.py:216 #: templates/circuits/circuittermination_edit.html:20 #: templates/circuits/inc/circuit_termination.html:33 @@ -182,13 +182,13 @@ msgstr "サイトグループ (slug)" #: virtualization/forms/model_forms.py:107 #: virtualization/forms/model_forms.py:174 #: virtualization/tables/clusters.py:77 -#: virtualization/tables/virtualmachines.py:53 vpn/forms/filtersets.py:262 +#: virtualization/tables/virtualmachines.py:62 vpn/forms/filtersets.py:262 #: wireless/forms/model_forms.py:77 wireless/forms/model_forms.py:117 msgid "Site" msgstr "サイト" -#: circuits/filtersets.py:60 circuits/filtersets.py:215 -#: circuits/filtersets.py:252 dcim/filtersets.py:215 dcim/filtersets.py:290 +#: circuits/filtersets.py:60 circuits/filtersets.py:221 +#: circuits/filtersets.py:258 dcim/filtersets.py:215 dcim/filtersets.py:290 #: dcim/filtersets.py:363 extras/filtersets.py:436 ipam/filtersets.py:215 #: ipam/filtersets.py:335 ipam/filtersets.py:926 #: virtualization/filtersets.py:75 virtualization/filtersets.py:203 @@ -200,33 +200,39 @@ msgstr "サイト (slug)" msgid "ASN (ID)" msgstr "ASN (ID)" -#: circuits/filtersets.py:87 circuits/filtersets.py:114 -#: circuits/filtersets.py:148 -msgid "Provider (ID)" -msgstr "プロバイダ (ID)" +#: circuits/filtersets.py:71 circuits/forms/filtersets.py:27 +#: ipam/forms/model_forms.py:158 ipam/models/asns.py:108 +#: ipam/models/asns.py:125 ipam/tables/asn.py:41 templates/ipam/asn.html:20 +msgid "ASN" +msgstr "ASN" #: circuits/filtersets.py:93 circuits/filtersets.py:120 #: circuits/filtersets.py:154 +msgid "Provider (ID)" +msgstr "プロバイダ (ID)" + +#: circuits/filtersets.py:99 circuits/filtersets.py:126 +#: circuits/filtersets.py:160 msgid "Provider (slug)" msgstr "プロバイダ (slug)" -#: circuits/filtersets.py:159 +#: circuits/filtersets.py:165 msgid "Provider account (ID)" msgstr "プロバイダアカウント (ID)" -#: circuits/filtersets.py:164 +#: circuits/filtersets.py:170 msgid "Provider network (ID)" msgstr "プロバイダネットワーク (ID)" -#: circuits/filtersets.py:168 +#: circuits/filtersets.py:174 msgid "Circuit type (ID)" msgstr "回線タイプ (ID)" -#: circuits/filtersets.py:174 +#: circuits/filtersets.py:180 msgid "Circuit type (slug)" msgstr "回線タイプ (slug)" -#: circuits/filtersets.py:209 circuits/filtersets.py:246 +#: circuits/filtersets.py:215 circuits/filtersets.py:252 #: dcim/filtersets.py:209 dcim/filtersets.py:284 dcim/filtersets.py:357 #: dcim/filtersets.py:927 dcim/filtersets.py:1232 dcim/filtersets.py:1727 #: dcim/filtersets.py:1969 dcim/filtersets.py:2028 ipam/filtersets.py:209 @@ -236,13 +242,13 @@ msgstr "回線タイプ (slug)" msgid "Site (ID)" msgstr "サイト (ID)" -#: circuits/filtersets.py:238 core/filtersets.py:73 core/filtersets.py:132 +#: circuits/filtersets.py:244 core/filtersets.py:73 core/filtersets.py:132 #: dcim/filtersets.py:640 dcim/filtersets.py:1201 dcim/filtersets.py:2076 #: extras/filtersets.py:40 extras/filtersets.py:69 extras/filtersets.py:101 #: extras/filtersets.py:140 extras/filtersets.py:168 extras/filtersets.py:195 #: extras/filtersets.py:226 extras/filtersets.py:295 extras/filtersets.py:343 #: extras/filtersets.py:403 extras/filtersets.py:562 extras/filtersets.py:604 -#: extras/filtersets.py:645 ipam/forms/model_forms.py:430 +#: extras/filtersets.py:645 ipam/forms/model_forms.py:416 #: netbox/filtersets.py:275 netbox/forms/__init__.py:23 #: netbox/forms/base.py:163 templates/htmx/object_selector.html:28 #: templates/inc/filter_list.html:53 templates/ipam/ipaddress_assign.html:32 @@ -252,7 +258,7 @@ msgstr "サイト (ID)" msgid "Search" msgstr "検索" -#: circuits/filtersets.py:242 circuits/forms/bulk_edit.py:167 +#: circuits/filtersets.py:248 circuits/forms/bulk_edit.py:167 #: circuits/forms/model_forms.py:110 circuits/forms/model_forms.py:132 #: dcim/forms/connections.py:66 templates/circuits/circuit.html:15 #: templates/dcim/inc/cable_termination.html:55 @@ -260,11 +266,11 @@ msgstr "検索" msgid "Circuit" msgstr "回線" -#: circuits/filtersets.py:256 +#: circuits/filtersets.py:262 msgid "ProviderNetwork (ID)" msgstr "プロバイダネットワーク (ID)" -#: circuits/forms/bulk_edit.py:25 circuits/forms/filtersets.py:56 +#: circuits/forms/bulk_edit.py:25 circuits/forms/filtersets.py:52 #: circuits/forms/model_forms.py:26 circuits/tables/providers.py:33 #: dcim/forms/bulk_edit.py:126 dcim/forms/filtersets.py:187 #: dcim/forms/model_forms.py:126 dcim/tables/sites.py:94 @@ -375,8 +381,8 @@ msgstr "説明" #: circuits/forms/bulk_edit.py:46 circuits/forms/bulk_edit.py:68 #: circuits/forms/bulk_edit.py:118 circuits/forms/bulk_import.py:35 #: circuits/forms/bulk_import.py:50 circuits/forms/bulk_import.py:76 -#: circuits/forms/filtersets.py:70 circuits/forms/filtersets.py:88 -#: circuits/forms/filtersets.py:116 circuits/forms/filtersets.py:131 +#: circuits/forms/filtersets.py:66 circuits/forms/filtersets.py:84 +#: circuits/forms/filtersets.py:112 circuits/forms/filtersets.py:127 #: circuits/forms/model_forms.py:32 circuits/forms/model_forms.py:44 #: circuits/forms/model_forms.py:58 circuits/forms/model_forms.py:92 #: circuits/tables/circuits.py:55 circuits/tables/providers.py:72 @@ -388,18 +394,18 @@ msgstr "説明" msgid "Provider" msgstr "プロバイダ" -#: circuits/forms/bulk_edit.py:75 circuits/forms/filtersets.py:91 +#: circuits/forms/bulk_edit.py:75 circuits/forms/filtersets.py:87 #: templates/circuits/providernetwork.html:31 msgid "Service ID" msgstr "サービス ID" -#: circuits/forms/bulk_edit.py:95 circuits/forms/filtersets.py:107 +#: circuits/forms/bulk_edit.py:95 circuits/forms/filtersets.py:103 #: dcim/forms/bulk_edit.py:204 dcim/forms/bulk_edit.py:500 #: dcim/forms/bulk_edit.py:694 dcim/forms/bulk_edit.py:1063 #: dcim/forms/bulk_edit.py:1090 dcim/forms/bulk_edit.py:1562 #: dcim/forms/filtersets.py:977 dcim/forms/filtersets.py:1353 -#: dcim/forms/filtersets.py:1374 dcim/tables/devices.py:722 -#: dcim/tables/devices.py:782 dcim/tables/devices.py:1009 +#: dcim/forms/filtersets.py:1374 dcim/tables/devices.py:726 +#: dcim/tables/devices.py:786 dcim/tables/devices.py:1013 #: dcim/tables/devicetypes.py:245 dcim/tables/devicetypes.py:260 #: dcim/tables/racks.py:32 extras/forms/bulk_edit.py:259 #: extras/tables/tables.py:328 templates/circuits/circuittype.html:33 @@ -411,7 +417,7 @@ msgid "Color" msgstr "色" #: circuits/forms/bulk_edit.py:113 circuits/forms/bulk_import.py:89 -#: circuits/forms/filtersets.py:126 core/forms/bulk_edit.py:17 +#: circuits/forms/filtersets.py:122 core/forms/bulk_edit.py:17 #: core/forms/filtersets.py:29 core/tables/data.py:20 core/tables/jobs.py:18 #: dcim/forms/bulk_edit.py:281 dcim/forms/bulk_edit.py:672 #: dcim/forms/bulk_edit.py:811 dcim/forms/bulk_edit.py:879 @@ -430,7 +436,7 @@ msgstr "色" #: dcim/forms/filtersets.py:1253 dcim/forms/filtersets.py:1348 #: dcim/forms/filtersets.py:1369 dcim/forms/object_import.py:89 #: dcim/forms/object_import.py:118 dcim/forms/object_import.py:150 -#: dcim/tables/devices.py:211 dcim/tables/devices.py:838 +#: dcim/tables/devices.py:211 dcim/tables/devices.py:842 #: dcim/tables/power.py:77 extras/forms/bulk_import.py:39 #: extras/tables/tables.py:278 extras/tables/tables.py:350 #: extras/tables/tables.py:448 netbox/tables/tables.py:234 @@ -455,12 +461,12 @@ msgid "Type" msgstr "タイプ" #: circuits/forms/bulk_edit.py:123 circuits/forms/bulk_import.py:82 -#: circuits/forms/filtersets.py:139 circuits/forms/model_forms.py:97 +#: circuits/forms/filtersets.py:135 circuits/forms/model_forms.py:97 msgid "Provider account" msgstr "プロバイダアカウント" #: circuits/forms/bulk_edit.py:131 circuits/forms/bulk_import.py:95 -#: circuits/forms/filtersets.py:150 core/forms/filtersets.py:34 +#: circuits/forms/filtersets.py:146 core/forms/filtersets.py:34 #: core/forms/filtersets.py:75 core/tables/data.py:23 core/tables/jobs.py:26 #: dcim/forms/bulk_edit.py:104 dcim/forms/bulk_edit.py:179 #: dcim/forms/bulk_edit.py:260 dcim/forms/bulk_edit.py:593 @@ -474,8 +480,8 @@ msgstr "プロバイダアカウント" #: dcim/forms/filtersets.py:281 dcim/forms/filtersets.py:726 #: dcim/forms/filtersets.py:835 dcim/forms/filtersets.py:871 #: dcim/forms/filtersets.py:972 dcim/forms/filtersets.py:1083 -#: dcim/tables/devices.py:173 dcim/tables/devices.py:841 -#: dcim/tables/devices.py:1069 dcim/tables/modules.py:69 +#: dcim/tables/devices.py:173 dcim/tables/devices.py:845 +#: dcim/tables/devices.py:1073 dcim/tables/modules.py:69 #: dcim/tables/power.py:74 dcim/tables/racks.py:66 dcim/tables/sites.py:82 #: dcim/tables/sites.py:133 ipam/forms/bulk_edit.py:240 #: ipam/forms/bulk_edit.py:289 ipam/forms/bulk_edit.py:337 @@ -483,7 +489,7 @@ msgstr "プロバイダアカウント" #: ipam/forms/bulk_import.py:256 ipam/forms/bulk_import.py:292 #: ipam/forms/bulk_import.py:458 ipam/forms/filtersets.py:205 #: ipam/forms/filtersets.py:270 ipam/forms/filtersets.py:341 -#: ipam/forms/filtersets.py:482 ipam/forms/model_forms.py:449 +#: ipam/forms/filtersets.py:482 ipam/forms/model_forms.py:435 #: ipam/tables/ip.py:236 ipam/tables/ip.py:309 ipam/tables/ip.py:359 #: ipam/tables/ip.py:421 ipam/tables/ip.py:448 ipam/tables/vlans.py:122 #: ipam/tables/vlans.py:227 templates/circuits/circuit.html:35 @@ -504,7 +510,7 @@ msgstr "プロバイダアカウント" #: virtualization/forms/bulk_import.py:80 #: virtualization/forms/filtersets.py:61 #: virtualization/forms/filtersets.py:156 virtualization/tables/clusters.py:74 -#: virtualization/tables/virtualmachines.py:50 vpn/forms/bulk_edit.py:38 +#: virtualization/tables/virtualmachines.py:59 vpn/forms/bulk_edit.py:38 #: vpn/forms/bulk_import.py:37 vpn/forms/filtersets.py:46 #: vpn/tables/tunnels.py:48 wireless/forms/bulk_edit.py:42 #: wireless/forms/bulk_edit.py:104 wireless/forms/bulk_import.py:43 @@ -515,7 +521,7 @@ msgid "Status" msgstr "ステータス" #: circuits/forms/bulk_edit.py:137 circuits/forms/bulk_import.py:100 -#: circuits/forms/filtersets.py:119 dcim/forms/bulk_edit.py:120 +#: circuits/forms/filtersets.py:115 dcim/forms/bulk_edit.py:120 #: dcim/forms/bulk_edit.py:185 dcim/forms/bulk_edit.py:255 #: dcim/forms/bulk_edit.py:366 dcim/forms/bulk_edit.py:583 #: dcim/forms/bulk_edit.py:684 dcim/forms/bulk_edit.py:1590 @@ -573,15 +579,15 @@ msgstr "ステータス" msgid "Tenant" msgstr "テナント" -#: circuits/forms/bulk_edit.py:142 circuits/forms/filtersets.py:174 +#: circuits/forms/bulk_edit.py:142 circuits/forms/filtersets.py:170 msgid "Install date" msgstr "開通日" -#: circuits/forms/bulk_edit.py:147 circuits/forms/filtersets.py:179 +#: circuits/forms/bulk_edit.py:147 circuits/forms/filtersets.py:175 msgid "Termination date" msgstr "終了日" -#: circuits/forms/bulk_edit.py:153 circuits/forms/filtersets.py:186 +#: circuits/forms/bulk_edit.py:153 circuits/forms/filtersets.py:182 msgid "Commit rate (Kbps)" msgstr "保証帯域 (Kbps)" @@ -614,7 +620,7 @@ msgstr "割当プロバイダ" #: circuits/forms/bulk_import.py:70 dcim/forms/bulk_import.py:178 #: dcim/forms/bulk_import.py:388 dcim/forms/bulk_import.py:1108 -#: dcim/forms/bulk_import.py:1187 extras/forms/bulk_import.py:229 +#: dcim/forms/bulk_import.py:1187 extras/forms/bulk_import.py:235 msgid "RGB color in hexadecimal. Example:" msgstr "16 進数の RGB カラーコード。例:" @@ -650,12 +656,12 @@ msgstr "運用状況" msgid "Assigned tenant" msgstr "割当テナント" -#: circuits/forms/bulk_import.py:123 circuits/forms/filtersets.py:147 +#: circuits/forms/bulk_import.py:123 circuits/forms/filtersets.py:143 #: circuits/forms/model_forms.py:143 msgid "Provider network" msgstr "プロバイダネットワーク" -#: circuits/forms/filtersets.py:26 circuits/forms/filtersets.py:118 +#: circuits/forms/filtersets.py:26 circuits/forms/filtersets.py:114 #: dcim/forms/bulk_edit.py:247 dcim/forms/bulk_edit.py:345 #: dcim/forms/bulk_edit.py:575 dcim/forms/bulk_edit.py:622 #: dcim/forms/bulk_edit.py:772 dcim/forms/bulk_import.py:189 @@ -679,7 +685,7 @@ msgstr "プロバイダネットワーク" #: extras/filtersets.py:441 extras/forms/filtersets.py:328 #: ipam/forms/bulk_edit.py:456 ipam/forms/filtersets.py:168 #: ipam/forms/filtersets.py:400 ipam/forms/filtersets.py:422 -#: ipam/forms/filtersets.py:448 ipam/forms/model_forms.py:560 +#: ipam/forms/filtersets.py:448 ipam/forms/model_forms.py:564 #: templates/dcim/device.html:26 templates/dcim/device_edit.html:30 #: templates/dcim/inc/cable_termination.html:12 #: templates/dcim/location.html:27 templates/dcim/powerpanel.html:27 @@ -689,13 +695,7 @@ msgstr "プロバイダネットワーク" msgid "Location" msgstr "ロケーション" -#: circuits/forms/filtersets.py:27 ipam/forms/model_forms.py:158 -#: ipam/models/asns.py:108 ipam/models/asns.py:125 ipam/tables/asn.py:41 -#: templates/ipam/asn.html:20 -msgid "ASN" -msgstr "ASN" - -#: circuits/forms/filtersets.py:28 circuits/forms/filtersets.py:120 +#: circuits/forms/filtersets.py:28 circuits/forms/filtersets.py:116 #: dcim/forms/filtersets.py:136 dcim/forms/filtersets.py:150 #: dcim/forms/filtersets.py:166 dcim/forms/filtersets.py:198 #: dcim/forms/filtersets.py:249 dcim/forms/filtersets.py:334 @@ -708,7 +708,7 @@ msgstr "ASN" msgid "Contacts" msgstr "連絡先" -#: circuits/forms/filtersets.py:33 circuits/forms/filtersets.py:157 +#: circuits/forms/filtersets.py:33 circuits/forms/filtersets.py:153 #: dcim/forms/bulk_edit.py:110 dcim/forms/bulk_edit.py:222 #: dcim/forms/bulk_edit.py:747 dcim/forms/bulk_import.py:92 #: dcim/forms/filtersets.py:70 dcim/forms/filtersets.py:177 @@ -723,7 +723,7 @@ msgstr "連絡先" #: ipam/forms/bulk_edit.py:205 ipam/forms/bulk_edit.py:437 #: ipam/forms/bulk_edit.py:509 ipam/forms/filtersets.py:212 #: ipam/forms/filtersets.py:407 ipam/forms/filtersets.py:456 -#: ipam/forms/model_forms.py:532 templates/dcim/device.html:18 +#: ipam/forms/model_forms.py:536 templates/dcim/device.html:18 #: templates/dcim/rack.html:19 templates/dcim/rackreservation.html:25 #: templates/dcim/region.html:26 templates/dcim/site.html:31 #: templates/ipam/prefix.html:50 templates/ipam/vlan.html:19 @@ -733,7 +733,7 @@ msgstr "連絡先" msgid "Region" msgstr "リージョン" -#: circuits/forms/filtersets.py:38 circuits/forms/filtersets.py:162 +#: circuits/forms/filtersets.py:38 circuits/forms/filtersets.py:158 #: dcim/forms/bulk_edit.py:230 dcim/forms/bulk_edit.py:755 #: dcim/forms/filtersets.py:75 dcim/forms/filtersets.py:182 #: dcim/forms/filtersets.py:208 dcim/forms/filtersets.py:269 @@ -743,19 +743,15 @@ msgstr "リージョン" #: extras/filtersets.py:425 ipam/forms/bulk_edit.py:210 #: ipam/forms/bulk_edit.py:444 ipam/forms/bulk_edit.py:514 #: ipam/forms/filtersets.py:217 ipam/forms/filtersets.py:412 -#: ipam/forms/filtersets.py:461 ipam/forms/model_forms.py:545 +#: ipam/forms/filtersets.py:461 ipam/forms/model_forms.py:549 #: virtualization/forms/bulk_edit.py:85 virtualization/forms/filtersets.py:68 #: virtualization/forms/filtersets.py:134 #: virtualization/forms/model_forms.py:101 msgid "Site group" msgstr "サイトグループ" -#: circuits/forms/filtersets.py:51 -msgid "ASN (legacy)" -msgstr "ASN (レガシー)" - -#: circuits/forms/filtersets.py:65 circuits/forms/filtersets.py:83 -#: circuits/forms/filtersets.py:102 circuits/forms/filtersets.py:117 +#: circuits/forms/filtersets.py:61 circuits/forms/filtersets.py:79 +#: circuits/forms/filtersets.py:98 circuits/forms/filtersets.py:113 #: core/forms/filtersets.py:63 dcim/forms/bulk_edit.py:718 #: dcim/forms/filtersets.py:164 dcim/forms/filtersets.py:196 #: dcim/forms/filtersets.py:825 dcim/forms/filtersets.py:920 @@ -781,7 +777,7 @@ msgstr "ASN (レガシー)" msgid "Attributes" msgstr "属性" -#: circuits/forms/filtersets.py:73 circuits/tables/circuits.py:60 +#: circuits/forms/filtersets.py:69 circuits/tables/circuits.py:60 #: circuits/tables/providers.py:66 templates/circuits/circuit.html:23 #: templates/circuits/provideraccount.html:25 msgid "Account" @@ -802,7 +798,7 @@ msgstr "回線タイプ" #: dcim/models/device_component_templates.py:491 #: dcim/models/device_component_templates.py:591 #: dcim/models/device_components.py:976 dcim/models/device_components.py:1050 -#: dcim/models/device_components.py:1166 dcim/models/devices.py:467 +#: dcim/models/device_components.py:1166 dcim/models/devices.py:469 #: dcim/models/racks.py:43 extras/models/tags.py:28 msgid "color" msgstr "色" @@ -824,8 +820,8 @@ msgid "Unique circuit ID" msgstr "一意な回線 ID" #: circuits/models/circuits.py:67 core/models/data.py:55 -#: core/models/jobs.py:85 dcim/models/cables.py:49 dcim/models/devices.py:641 -#: dcim/models/devices.py:1165 dcim/models/devices.py:1374 +#: core/models/jobs.py:85 dcim/models/cables.py:49 dcim/models/devices.py:643 +#: dcim/models/devices.py:1170 dcim/models/devices.py:1379 #: dcim/models/power.py:95 dcim/models/racks.py:97 dcim/models/sites.py:154 #: dcim/models/sites.py:266 ipam/models/ip.py:252 ipam/models/ip.py:521 #: ipam/models/ip.py:729 ipam/models/vlans.py:175 @@ -904,7 +900,7 @@ msgstr "パッチパネル ID とポート番号" #: extras/models/models.py:541 extras/models/staging.py:31 #: extras/models/tags.py:32 netbox/models/__init__.py:109 #: netbox/models/__init__.py:144 netbox/models/__init__.py:190 -#: users/models.py:273 users/models.py:348 +#: users/models.py:274 users/models.py:353 #: virtualization/models/virtualmachines.py:282 msgid "description" msgstr "説明" @@ -930,8 +926,8 @@ msgstr "回線終端をサイトとプロバイダーネットワークの両方 #: circuits/models/providers.py:22 circuits/models/providers.py:66 #: circuits/models/providers.py:104 core/models/data.py:42 #: core/models/jobs.py:46 dcim/models/device_component_templates.py:43 -#: dcim/models/device_components.py:54 dcim/models/devices.py:581 -#: dcim/models/devices.py:1305 dcim/models/devices.py:1370 +#: dcim/models/device_components.py:54 dcim/models/devices.py:583 +#: dcim/models/devices.py:1310 dcim/models/devices.py:1375 #: dcim/models/power.py:39 dcim/models/power.py:91 dcim/models/racks.py:62 #: dcim/models/sites.py:138 extras/models/configs.py:36 #: extras/models/configs.py:215 extras/models/customfields.py:89 @@ -944,7 +940,7 @@ msgstr "回線終端をサイトとプロバイダーネットワークの両方 #: ipam/models/vrfs.py:79 netbox/models/__init__.py:136 #: netbox/models/__init__.py:180 tenancy/models/contacts.py:64 #: tenancy/models/tenants.py:20 tenancy/models/tenants.py:45 -#: users/models.py:344 virtualization/models/clusters.py:57 +#: users/models.py:349 virtualization/models/clusters.py:57 #: virtualization/models/virtualmachines.py:70 #: virtualization/models/virtualmachines.py:272 vpn/models/crypto.py:24 #: vpn/models/crypto.py:71 vpn/models/crypto.py:131 vpn/models/crypto.py:183 @@ -1002,13 +998,13 @@ msgstr "プロバイダネットワーク" #: core/tables/data.py:16 core/tables/jobs.py:14 dcim/forms/filtersets.py:60 #: dcim/forms/object_create.py:42 dcim/tables/devices.py:88 #: dcim/tables/devices.py:125 dcim/tables/devices.py:167 -#: dcim/tables/devices.py:318 dcim/tables/devices.py:400 -#: dcim/tables/devices.py:444 dcim/tables/devices.py:496 -#: dcim/tables/devices.py:548 dcim/tables/devices.py:668 -#: dcim/tables/devices.py:749 dcim/tables/devices.py:799 -#: dcim/tables/devices.py:865 dcim/tables/devices.py:980 -#: dcim/tables/devices.py:1000 dcim/tables/devices.py:1029 -#: dcim/tables/devices.py:1059 dcim/tables/devicetypes.py:32 +#: dcim/tables/devices.py:322 dcim/tables/devices.py:404 +#: dcim/tables/devices.py:448 dcim/tables/devices.py:500 +#: dcim/tables/devices.py:552 dcim/tables/devices.py:672 +#: dcim/tables/devices.py:753 dcim/tables/devices.py:803 +#: dcim/tables/devices.py:869 dcim/tables/devices.py:984 +#: dcim/tables/devices.py:1004 dcim/tables/devices.py:1033 +#: dcim/tables/devices.py:1063 dcim/tables/devicetypes.py:32 #: dcim/tables/power.py:22 dcim/tables/power.py:62 dcim/tables/racks.py:23 #: dcim/tables/racks.py:53 dcim/tables/sites.py:24 dcim/tables/sites.py:51 #: dcim/tables/sites.py:78 dcim/tables/sites.py:125 @@ -1074,9 +1070,9 @@ msgstr "プロバイダネットワーク" #: virtualization/forms/object_create.py:23 #: virtualization/tables/clusters.py:17 virtualization/tables/clusters.py:39 #: virtualization/tables/clusters.py:62 -#: virtualization/tables/virtualmachines.py:45 -#: virtualization/tables/virtualmachines.py:119 -#: virtualization/tables/virtualmachines.py:172 vpn/tables/crypto.py:18 +#: virtualization/tables/virtualmachines.py:54 +#: virtualization/tables/virtualmachines.py:132 +#: virtualization/tables/virtualmachines.py:185 vpn/tables/crypto.py:18 #: vpn/tables/crypto.py:57 vpn/tables/crypto.py:93 vpn/tables/crypto.py:129 #: vpn/tables/crypto.py:158 vpn/tables/l2vpn.py:23 vpn/tables/tunnels.py:18 #: vpn/tables/tunnels.py:40 wireless/tables/wirelesslan.py:18 @@ -1111,7 +1107,7 @@ msgstr "保証帯域" #: circuits/tables/circuits.py:75 circuits/tables/providers.py:48 #: circuits/tables/providers.py:82 circuits/tables/providers.py:107 -#: dcim/tables/devices.py:1042 dcim/tables/devicetypes.py:92 +#: dcim/tables/devices.py:1046 dcim/tables/devicetypes.py:92 #: dcim/tables/modules.py:29 dcim/tables/modules.py:72 dcim/tables/power.py:39 #: dcim/tables/power.py:96 dcim/tables/racks.py:76 dcim/tables/racks.py:156 #: dcim/tables/sites.py:103 extras/forms/bulk_edit.py:320 @@ -1123,7 +1119,7 @@ msgstr "保証帯域" #: templates/inc/panels/comments.html:6 tenancy/tables/contacts.py:68 #: tenancy/tables/tenants.py:46 utilities/forms/fields/fields.py:29 #: virtualization/tables/clusters.py:91 -#: virtualization/tables/virtualmachines.py:68 vpn/tables/crypto.py:37 +#: virtualization/tables/virtualmachines.py:81 vpn/tables/crypto.py:37 #: vpn/tables/crypto.py:74 vpn/tables/crypto.py:109 vpn/tables/crypto.py:140 #: vpn/tables/crypto.py:173 vpn/tables/l2vpn.py:37 vpn/tables/tunnels.py:61 #: wireless/tables/wirelesslan.py:27 wireless/tables/wirelesslan.py:58 @@ -1160,7 +1156,7 @@ msgid "Completed" msgstr "完了" #: core/choices.py:22 core/choices.py:59 dcim/choices.py:176 -#: dcim/choices.py:222 dcim/choices.py:1496 extras/choices.py:212 +#: dcim/choices.py:222 dcim/choices.py:1502 extras/choices.py:212 #: virtualization/choices.py:47 msgid "Failed" msgstr "失敗" @@ -1242,7 +1238,7 @@ msgstr "データソース (名前)" #: core/forms/bulk_edit.py:24 core/forms/filtersets.py:39 #: core/tables/data.py:26 dcim/forms/bulk_edit.py:1012 #: dcim/forms/bulk_edit.py:1285 dcim/forms/filtersets.py:1270 -#: dcim/tables/devices.py:573 dcim/tables/devicetypes.py:221 +#: dcim/tables/devices.py:577 dcim/tables/devicetypes.py:221 #: extras/forms/bulk_edit.py:97 extras/forms/bulk_edit.py:161 #: extras/forms/bulk_edit.py:220 extras/forms/filtersets.py:119 #: extras/forms/filtersets.py:206 extras/forms/filtersets.py:267 @@ -1377,7 +1373,7 @@ msgstr "同期するファイルをアップロードするか、データファ msgid "Rack Elevations" msgstr "ラック図" -#: core/forms/model_forms.py:148 dcim/choices.py:1407 +#: core/forms/model_forms.py:148 dcim/choices.py:1413 #: dcim/forms/bulk_edit.py:859 dcim/forms/bulk_edit.py:1242 #: dcim/forms/bulk_edit.py:1260 dcim/tables/racks.py:89 #: netbox/navigation/menu.py:276 netbox/navigation/menu.py:280 @@ -1438,7 +1434,7 @@ msgstr " (デフォルト)" #: core/models/config.py:18 core/models/data.py:282 core/models/files.py:27 #: core/models/jobs.py:50 extras/models/models.py:760 -#: netbox/models/features.py:52 users/models.py:248 +#: netbox/models/features.py:52 users/models.py:249 msgid "created" msgstr "作成日時" @@ -1496,7 +1492,7 @@ msgstr "URL" #: core/models/data.py:62 dcim/models/device_component_templates.py:392 #: dcim/models/device_components.py:513 extras/models/models.py:88 -#: extras/models/models.py:331 extras/models/models.py:556 users/models.py:353 +#: extras/models/models.py:331 extras/models/models.py:556 users/models.py:358 msgid "enabled" msgstr "有効" @@ -1707,7 +1703,7 @@ msgid "Staging" msgstr "ステージング" #: dcim/choices.py:23 dcim/choices.py:178 dcim/choices.py:223 -#: dcim/choices.py:1420 virtualization/choices.py:23 +#: dcim/choices.py:1426 virtualization/choices.py:23 #: virtualization/choices.py:48 msgid "Decommissioning" msgstr "廃止" @@ -1767,7 +1763,7 @@ msgstr "廃止済" msgid "Millimeters" msgstr "ミリメートル" -#: dcim/choices.py:115 dcim/choices.py:1442 +#: dcim/choices.py:115 dcim/choices.py:1448 msgid "Inches" msgstr "インチ" @@ -1779,8 +1775,8 @@ msgstr "インチ" #: dcim/forms/filtersets.py:226 dcim/forms/model_forms.py:73 #: dcim/forms/model_forms.py:94 dcim/forms/model_forms.py:172 #: dcim/forms/model_forms.py:962 dcim/forms/model_forms.py:1303 -#: dcim/forms/object_import.py:181 dcim/tables/devices.py:676 -#: dcim/tables/devices.py:960 extras/tables/tables.py:181 +#: dcim/forms/object_import.py:181 dcim/tables/devices.py:680 +#: dcim/tables/devices.py:964 extras/tables/tables.py:181 #: ipam/tables/fhrp.py:59 ipam/tables/ip.py:374 ipam/tables/services.py:44 #: templates/dcim/interface.html:105 templates/dcim/interface.html:321 #: templates/dcim/location.html:44 templates/dcim/region.html:38 @@ -1793,7 +1789,7 @@ msgstr "インチ" #: tenancy/forms/bulk_import.py:58 tenancy/forms/model_forms.py:24 #: tenancy/forms/model_forms.py:69 virtualization/forms/bulk_edit.py:206 #: virtualization/forms/bulk_import.py:151 -#: virtualization/tables/virtualmachines.py:142 wireless/forms/bulk_edit.py:23 +#: virtualization/tables/virtualmachines.py:155 wireless/forms/bulk_edit.py:23 #: wireless/forms/bulk_import.py:21 wireless/forms/model_forms.py:20 msgid "Parent" msgstr "親" @@ -1842,7 +1838,7 @@ msgstr "右から左" msgid "Side to rear" msgstr "側面から背面" -#: dcim/choices.py:198 dcim/choices.py:1215 +#: dcim/choices.py:198 dcim/choices.py:1221 msgid "Passive" msgstr "パッシブ" @@ -1870,8 +1866,8 @@ msgstr "International/ITA" msgid "Proprietary" msgstr "独自規格" -#: dcim/choices.py:534 dcim/choices.py:764 dcim/choices.py:1131 -#: dcim/choices.py:1133 dcim/choices.py:1338 dcim/choices.py:1340 +#: dcim/choices.py:534 dcim/choices.py:764 dcim/choices.py:1137 +#: dcim/choices.py:1139 dcim/choices.py:1344 dcim/choices.py:1346 #: netbox/navigation/menu.py:188 msgid "Other" msgstr "その他" @@ -1884,177 +1880,177 @@ msgstr "ITA/International" msgid "Physical" msgstr "物理" -#: dcim/choices.py:795 dcim/choices.py:949 +#: dcim/choices.py:795 dcim/choices.py:952 msgid "Virtual" msgstr "仮想" -#: dcim/choices.py:796 dcim/choices.py:1019 dcim/forms/bulk_edit.py:1398 +#: dcim/choices.py:796 dcim/choices.py:1022 dcim/forms/bulk_edit.py:1398 #: dcim/forms/filtersets.py:1233 dcim/forms/model_forms.py:888 #: dcim/forms/model_forms.py:1197 netbox/navigation/menu.py:128 #: netbox/navigation/menu.py:132 templates/dcim/interface.html:217 msgid "Wireless" msgstr "無線" -#: dcim/choices.py:947 +#: dcim/choices.py:950 msgid "Virtual interfaces" msgstr "仮想インタフェース" -#: dcim/choices.py:950 dcim/forms/bulk_edit.py:1295 +#: dcim/choices.py:953 dcim/forms/bulk_edit.py:1295 #: dcim/forms/bulk_import.py:785 dcim/forms/model_forms.py:876 -#: dcim/tables/devices.py:680 templates/dcim/interface.html:109 +#: dcim/tables/devices.py:684 templates/dcim/interface.html:109 #: templates/virtualization/vminterface.html:46 #: virtualization/forms/bulk_edit.py:211 #: virtualization/forms/bulk_import.py:158 -#: virtualization/tables/virtualmachines.py:146 +#: virtualization/tables/virtualmachines.py:159 msgid "Bridge" msgstr "ブリッジ" -#: dcim/choices.py:951 +#: dcim/choices.py:954 msgid "Link Aggregation Group (LAG)" msgstr "リンクアグリゲーション (LAG)" -#: dcim/choices.py:955 +#: dcim/choices.py:958 msgid "Ethernet (fixed)" msgstr "イーサネット (固定)" -#: dcim/choices.py:969 +#: dcim/choices.py:972 msgid "Ethernet (modular)" msgstr "イーサネット (モジュール)" -#: dcim/choices.py:1005 +#: dcim/choices.py:1008 msgid "Ethernet (backplane)" msgstr "イーサネット (バックプレーン)" -#: dcim/choices.py:1033 +#: dcim/choices.py:1036 msgid "Cellular" msgstr "セルラー" -#: dcim/choices.py:1080 dcim/forms/filtersets.py:302 +#: dcim/choices.py:1086 dcim/forms/filtersets.py:302 #: dcim/forms/filtersets.py:736 dcim/forms/filtersets.py:876 #: dcim/forms/filtersets.py:1426 templates/dcim/inventoryitem.html:53 #: templates/dcim/virtualchassis_edit.html:55 msgid "Serial" msgstr "シリアル" -#: dcim/choices.py:1095 +#: dcim/choices.py:1101 msgid "Coaxial" msgstr "同軸" -#: dcim/choices.py:1112 +#: dcim/choices.py:1118 msgid "Stacking" msgstr "スタック" -#: dcim/choices.py:1162 +#: dcim/choices.py:1168 msgid "Half" msgstr "半二重" -#: dcim/choices.py:1163 +#: dcim/choices.py:1169 msgid "Full" msgstr "全二重" -#: dcim/choices.py:1164 netbox/preferences.py:29 wireless/choices.py:480 +#: dcim/choices.py:1170 netbox/preferences.py:29 wireless/choices.py:480 msgid "Auto" msgstr "自動" -#: dcim/choices.py:1175 +#: dcim/choices.py:1181 msgid "Access" msgstr "アクセス" -#: dcim/choices.py:1176 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 +#: dcim/choices.py:1182 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 #: templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "タグ付き" -#: dcim/choices.py:1177 +#: dcim/choices.py:1183 msgid "Tagged (All)" msgstr "タグ付き (全て)" -#: dcim/choices.py:1206 +#: dcim/choices.py:1212 msgid "IEEE Standard" msgstr "IEEE スタンダード" -#: dcim/choices.py:1217 +#: dcim/choices.py:1223 msgid "Passive 24V (2-pair)" msgstr "パッシブ 24V (2 ペア)" -#: dcim/choices.py:1218 +#: dcim/choices.py:1224 msgid "Passive 24V (4-pair)" msgstr "パッシブ 24V (4ペア)" -#: dcim/choices.py:1219 +#: dcim/choices.py:1225 msgid "Passive 48V (2-pair)" msgstr "パッシブ 48V (2 ペア)" -#: dcim/choices.py:1220 +#: dcim/choices.py:1226 msgid "Passive 48V (4-pair)" msgstr "パッシブ 48V (4ペア)" -#: dcim/choices.py:1282 dcim/choices.py:1378 +#: dcim/choices.py:1288 dcim/choices.py:1384 msgid "Copper" msgstr "カッパー" -#: dcim/choices.py:1305 +#: dcim/choices.py:1311 msgid "Fiber Optic" msgstr "光ファイバー" -#: dcim/choices.py:1394 +#: dcim/choices.py:1400 msgid "Fiber" msgstr "ファイバー" -#: dcim/choices.py:1418 dcim/forms/filtersets.py:1140 +#: dcim/choices.py:1424 dcim/forms/filtersets.py:1140 msgid "Connected" msgstr "接続済" -#: dcim/choices.py:1437 +#: dcim/choices.py:1443 msgid "Kilometers" msgstr "キロメートル" -#: dcim/choices.py:1438 templates/dcim/cable_trace.html:62 +#: dcim/choices.py:1444 templates/dcim/cable_trace.html:62 msgid "Meters" msgstr "メートル" -#: dcim/choices.py:1439 +#: dcim/choices.py:1445 msgid "Centimeters" msgstr "センチメートル" -#: dcim/choices.py:1440 +#: dcim/choices.py:1446 msgid "Miles" msgstr "マイル" -#: dcim/choices.py:1441 templates/dcim/cable_trace.html:63 +#: dcim/choices.py:1447 templates/dcim/cable_trace.html:63 msgid "Feet" msgstr "フィート" -#: dcim/choices.py:1457 templates/dcim/device.html:332 +#: dcim/choices.py:1463 templates/dcim/device.html:332 #: templates/dcim/rack.html:157 msgid "Kilograms" msgstr "キログラム" -#: dcim/choices.py:1458 +#: dcim/choices.py:1464 msgid "Grams" msgstr "グラム" -#: dcim/choices.py:1459 templates/dcim/rack.html:158 +#: dcim/choices.py:1465 templates/dcim/rack.html:158 msgid "Pounds" msgstr "ポンド" -#: dcim/choices.py:1460 +#: dcim/choices.py:1466 msgid "Ounces" msgstr "オンス" -#: dcim/choices.py:1506 tenancy/choices.py:17 +#: dcim/choices.py:1512 tenancy/choices.py:17 msgid "Primary" msgstr "プライマリ" -#: dcim/choices.py:1507 +#: dcim/choices.py:1513 msgid "Redundant" msgstr "冗長" -#: dcim/choices.py:1528 +#: dcim/choices.py:1534 msgid "Single phase" msgstr "単相" -#: dcim/choices.py:1529 +#: dcim/choices.py:1535 msgid "Three-phase" msgstr "三相" @@ -2331,7 +2327,7 @@ msgid "Virtual Chassis (ID)" msgstr "バーチャルシャーシ (ID)" #: dcim/filtersets.py:1303 dcim/forms/filtersets.py:106 -#: dcim/tables/devices.py:235 netbox/navigation/menu.py:67 +#: dcim/tables/devices.py:239 netbox/navigation/menu.py:67 #: templates/dcim/device.html:123 templates/dcim/device_edit.html:93 #: templates/dcim/virtualchassis.html:20 #: templates/dcim/virtualchassis_add.html:8 @@ -2355,7 +2351,7 @@ msgstr "割当 VID" #: dcim/filtersets.py:1448 dcim/forms/bulk_edit.py:1374 #: dcim/forms/bulk_import.py:836 dcim/forms/filtersets.py:1328 #: dcim/forms/model_forms.py:1182 dcim/models/device_components.py:712 -#: dcim/tables/devices.py:642 ipam/filtersets.py:282 ipam/filtersets.py:293 +#: dcim/tables/devices.py:646 ipam/filtersets.py:282 ipam/filtersets.py:293 #: ipam/filtersets.py:449 ipam/filtersets.py:550 ipam/filtersets.py:561 #: ipam/forms/bulk_edit.py:226 ipam/forms/bulk_edit.py:281 #: ipam/forms/bulk_edit.py:323 ipam/forms/bulk_import.py:156 @@ -2363,8 +2359,8 @@ msgstr "割当 VID" #: ipam/forms/filtersets.py:66 ipam/forms/filtersets.py:167 #: ipam/forms/filtersets.py:295 ipam/forms/model_forms.py:59 #: ipam/forms/model_forms.py:203 ipam/forms/model_forms.py:246 -#: ipam/forms/model_forms.py:290 ipam/forms/model_forms.py:412 -#: ipam/forms/model_forms.py:426 ipam/forms/model_forms.py:440 +#: ipam/forms/model_forms.py:290 ipam/forms/model_forms.py:398 +#: ipam/forms/model_forms.py:412 ipam/forms/model_forms.py:426 #: ipam/models/ip.py:232 ipam/models/ip.py:511 ipam/models/ip.py:719 #: ipam/models/vrfs.py:62 ipam/tables/ip.py:241 ipam/tables/ip.py:306 #: ipam/tables/ip.py:356 ipam/tables/ip.py:445 @@ -2377,7 +2373,7 @@ msgstr "割当 VID" #: virtualization/forms/filtersets.py:220 #: virtualization/forms/model_forms.py:347 #: virtualization/models/virtualmachines.py:348 -#: virtualization/tables/virtualmachines.py:123 +#: virtualization/tables/virtualmachines.py:136 msgid "VRF" msgstr "VRF" @@ -2391,7 +2387,7 @@ msgid "L2VPN (ID)" msgstr "L2VPN (ID)" #: dcim/filtersets.py:1465 dcim/forms/filtersets.py:1333 -#: dcim/tables/devices.py:590 ipam/filtersets.py:973 +#: dcim/tables/devices.py:594 ipam/filtersets.py:973 #: ipam/forms/filtersets.py:499 ipam/tables/vlans.py:133 #: templates/dcim/interface.html:94 templates/ipam/vlan.html:69 #: templates/vpn/l2vpntermination.html:15 @@ -2462,7 +2458,7 @@ msgstr "タグ" #: dcim/forms/bulk_create.py:112 dcim/forms/filtersets.py:1390 #: dcim/forms/model_forms.py:426 dcim/forms/model_forms.py:475 #: dcim/forms/object_create.py:196 dcim/forms/object_create.py:352 -#: dcim/tables/devices.py:198 dcim/tables/devices.py:725 +#: dcim/tables/devices.py:198 dcim/tables/devices.py:729 #: dcim/tables/devicetypes.py:242 templates/dcim/device.html:45 #: templates/dcim/device.html:129 templates/dcim/modulebay.html:35 #: templates/dcim/virtualchassis.html:59 @@ -2479,7 +2475,7 @@ msgstr "英数字の範囲が使用できます。(作成する名前の数と #: dcim/forms/bulk_edit.py:115 dcim/forms/bulk_import.py:99 #: dcim/forms/model_forms.py:120 dcim/tables/sites.py:89 #: ipam/filtersets.py:936 ipam/forms/bulk_edit.py:528 -#: ipam/forms/bulk_import.py:444 ipam/forms/model_forms.py:509 +#: ipam/forms/bulk_import.py:444 ipam/forms/model_forms.py:495 #: ipam/tables/fhrp.py:67 ipam/tables/vlans.py:118 ipam/tables/vlans.py:221 #: templates/dcim/interface.html:294 templates/dcim/site.html:37 #: templates/ipam/inc/panels/fhrp_groups.html:10 templates/ipam/vlan.html:30 @@ -2529,8 +2525,8 @@ msgstr "タイムゾーン" #: dcim/forms/filtersets.py:704 dcim/forms/filtersets.py:1417 #: dcim/forms/model_forms.py:224 dcim/forms/model_forms.py:970 #: dcim/forms/model_forms.py:1311 dcim/forms/object_import.py:186 -#: dcim/tables/devices.py:202 dcim/tables/devices.py:833 -#: dcim/tables/devices.py:944 dcim/tables/devicetypes.py:300 +#: dcim/tables/devices.py:202 dcim/tables/devices.py:837 +#: dcim/tables/devices.py:948 dcim/tables/devicetypes.py:300 #: dcim/tables/racks.py:69 extras/filtersets.py:457 #: ipam/forms/bulk_edit.py:245 ipam/forms/bulk_edit.py:294 #: ipam/forms/bulk_edit.py:342 ipam/forms/bulk_edit.py:546 @@ -2539,7 +2535,7 @@ msgstr "タイムゾーン" #: ipam/forms/filtersets.py:232 ipam/forms/filtersets.py:278 #: ipam/forms/filtersets.py:346 ipam/forms/filtersets.py:490 #: ipam/forms/model_forms.py:187 ipam/forms/model_forms.py:222 -#: ipam/forms/model_forms.py:249 ipam/forms/model_forms.py:647 +#: ipam/forms/model_forms.py:249 ipam/forms/model_forms.py:651 #: ipam/tables/ip.py:257 ipam/tables/ip.py:313 ipam/tables/ip.py:363 #: ipam/tables/vlans.py:126 ipam/tables/vlans.py:230 #: templates/dcim/device.html:187 @@ -2557,7 +2553,7 @@ msgstr "タイムゾーン" #: virtualization/forms/bulk_import.py:106 #: virtualization/forms/filtersets.py:153 #: virtualization/forms/model_forms.py:198 -#: virtualization/tables/virtualmachines.py:65 vpn/forms/bulk_edit.py:86 +#: virtualization/tables/virtualmachines.py:74 vpn/forms/bulk_edit.py:86 #: vpn/forms/bulk_import.py:81 vpn/forms/filtersets.py:84 #: vpn/forms/model_forms.py:77 vpn/forms/model_forms.py:112 #: vpn/tables/tunnels.py:82 @@ -2651,7 +2647,7 @@ msgstr "重量単位" #: dcim/forms/model_forms.py:669 dcim/forms/object_create.py:399 #: dcim/tables/devices.py:194 dcim/tables/power.py:70 dcim/tables/racks.py:148 #: ipam/forms/bulk_edit.py:464 ipam/forms/filtersets.py:427 -#: ipam/forms/model_forms.py:571 templates/dcim/device.html:30 +#: ipam/forms/model_forms.py:575 templates/dcim/device.html:30 #: templates/dcim/inc/cable_termination.html:16 #: templates/dcim/powerfeed.html:31 templates/dcim/rack.html:14 #: templates/dcim/rack/base.html:4 templates/dcim/rack_edit.html:8 @@ -2684,7 +2680,7 @@ msgstr "ハードウェア" #: dcim/forms/model_forms.py:334 dcim/forms/model_forms.py:374 #: dcim/forms/model_forms.py:975 dcim/forms/model_forms.py:1316 #: dcim/forms/object_import.py:192 dcim/tables/devices.py:129 -#: dcim/tables/devices.py:205 dcim/tables/devices.py:947 +#: dcim/tables/devices.py:205 dcim/tables/devices.py:951 #: dcim/tables/devicetypes.py:81 dcim/tables/devicetypes.py:304 #: dcim/tables/modules.py:20 dcim/tables/modules.py:60 #: templates/dcim/devicetype.html:17 templates/dcim/inventoryitem.html:45 @@ -2731,7 +2727,7 @@ msgstr "デバイスタイプ" msgid "Module Type" msgstr "モジュールタイプ" -#: dcim/forms/bulk_edit.py:506 dcim/models/devices.py:472 +#: dcim/forms/bulk_edit.py:506 dcim/models/devices.py:474 msgid "VM role" msgstr "仮想マシンのロール" @@ -2763,13 +2759,15 @@ msgstr "デバイスロール" #: dcim/forms/bulk_edit.py:588 dcim/forms/bulk_import.py:443 #: dcim/forms/filtersets.py:723 dcim/forms/model_forms.py:389 -#: dcim/forms/model_forms.py:448 extras/filtersets.py:468 -#: templates/dcim/device.html:191 templates/dcim/platform.html:27 +#: dcim/forms/model_forms.py:448 dcim/tables/devices.py:215 +#: extras/filtersets.py:468 templates/dcim/device.html:191 +#: templates/dcim/platform.html:27 #: templates/virtualization/virtualmachine.html:30 #: virtualization/forms/bulk_edit.py:159 #: virtualization/forms/bulk_import.py:122 #: virtualization/forms/filtersets.py:164 #: virtualization/forms/model_forms.py:206 +#: virtualization/tables/virtualmachines.py:78 msgid "Platform" msgstr "プラットフォーム" @@ -2793,16 +2791,16 @@ msgstr "プラットフォーム" #: dcim/forms/model_forms.py:760 dcim/forms/model_forms.py:1011 #: dcim/forms/model_forms.py:1460 dcim/forms/object_create.py:256 #: dcim/tables/connections.py:22 dcim/tables/connections.py:41 -#: dcim/tables/connections.py:60 dcim/tables/devices.py:314 -#: dcim/tables/devices.py:379 dcim/tables/devices.py:423 -#: dcim/tables/devices.py:468 dcim/tables/devices.py:522 -#: dcim/tables/devices.py:614 dcim/tables/devices.py:715 -#: dcim/tables/devices.py:775 dcim/tables/devices.py:825 -#: dcim/tables/devices.py:885 dcim/tables/devices.py:937 -#: dcim/tables/devices.py:1063 dcim/tables/modules.py:52 +#: dcim/tables/connections.py:60 dcim/tables/devices.py:318 +#: dcim/tables/devices.py:383 dcim/tables/devices.py:427 +#: dcim/tables/devices.py:472 dcim/tables/devices.py:526 +#: dcim/tables/devices.py:618 dcim/tables/devices.py:719 +#: dcim/tables/devices.py:779 dcim/tables/devices.py:829 +#: dcim/tables/devices.py:889 dcim/tables/devices.py:941 +#: dcim/tables/devices.py:1067 dcim/tables/modules.py:52 #: extras/forms/filtersets.py:329 ipam/forms/bulk_import.py:303 #: ipam/forms/bulk_import.py:489 ipam/forms/filtersets.py:532 -#: ipam/forms/model_forms.py:685 ipam/tables/vlans.py:176 +#: ipam/forms/model_forms.py:689 ipam/tables/vlans.py:176 #: templates/dcim/consoleport.html:23 templates/dcim/consoleserverport.html:23 #: templates/dcim/device.html:14 templates/dcim/device.html:128 #: templates/dcim/device_edit.html:10 templates/dcim/devicebay.html:23 @@ -2824,7 +2822,7 @@ msgstr "プラットフォーム" #: virtualization/forms/bulk_import.py:99 #: virtualization/forms/filtersets.py:124 #: virtualization/forms/model_forms.py:188 -#: virtualization/tables/virtualmachines.py:61 vpn/choices.py:44 +#: virtualization/tables/virtualmachines.py:70 vpn/choices.py:44 #: vpn/forms/bulk_import.py:86 vpn/forms/bulk_import.py:283 #: vpn/forms/filtersets.py:271 vpn/forms/model_forms.py:89 #: vpn/forms/model_forms.py:124 vpn/forms/model_forms.py:237 @@ -2964,7 +2962,7 @@ msgid "Wireless role" msgstr "無線ロール" #: dcim/forms/bulk_edit.py:1178 dcim/forms/model_forms.py:595 -#: dcim/forms/model_forms.py:1026 dcim/tables/devices.py:337 +#: dcim/forms/model_forms.py:1026 dcim/tables/devices.py:341 #: templates/dcim/consoleport.html:27 templates/dcim/consoleserverport.html:27 #: templates/dcim/frontport.html:27 templates/dcim/interface.html:35 #: templates/dcim/module.html:51 templates/dcim/modulebay.html:57 @@ -2973,7 +2971,7 @@ msgstr "無線ロール" msgid "Module" msgstr "モジュール" -#: dcim/forms/bulk_edit.py:1305 dcim/tables/devices.py:685 +#: dcim/forms/bulk_edit.py:1305 dcim/tables/devices.py:689 #: templates/dcim/interface.html:113 msgid "LAG" msgstr "LAG" @@ -2985,7 +2983,7 @@ msgstr "仮想デバイスコンテキスト" #: dcim/forms/bulk_edit.py:1316 dcim/forms/bulk_import.py:659 #: dcim/forms/bulk_import.py:685 dcim/forms/filtersets.py:1163 #: dcim/forms/filtersets.py:1185 dcim/forms/filtersets.py:1258 -#: dcim/tables/devices.py:626 +#: dcim/tables/devices.py:630 #: templates/circuits/inc/circuit_termination.html:94 #: templates/dcim/consoleport.html:43 templates/dcim/consoleserverport.html:43 msgid "Speed" @@ -3010,13 +3008,13 @@ msgid "VLAN group" msgstr "VLAN グループ" #: dcim/forms/bulk_edit.py:1361 dcim/forms/model_forms.py:1164 -#: dcim/tables/devices.py:599 virtualization/forms/bulk_edit.py:247 +#: dcim/tables/devices.py:603 virtualization/forms/bulk_edit.py:247 #: virtualization/forms/model_forms.py:329 msgid "Untagged VLAN" msgstr "タグなし VLAN" #: dcim/forms/bulk_edit.py:1369 dcim/forms/model_forms.py:1173 -#: dcim/tables/devices.py:605 virtualization/forms/bulk_edit.py:255 +#: dcim/tables/devices.py:609 virtualization/forms/bulk_edit.py:255 #: virtualization/forms/model_forms.py:338 msgid "Tagged VLANs" msgstr "タグ付き VLAN" @@ -3026,7 +3024,7 @@ msgid "Wireless LAN group" msgstr "無線 LAN グループ" #: dcim/forms/bulk_edit.py:1384 dcim/forms/model_forms.py:1151 -#: dcim/tables/devices.py:635 netbox/navigation/menu.py:134 +#: dcim/tables/devices.py:639 netbox/navigation/menu.py:134 #: templates/dcim/interface.html:289 wireless/tables/wirelesslan.py:24 msgid "Wireless LANs" msgstr "無線 LAN" @@ -3197,9 +3195,9 @@ msgid "Virtual chassis" msgstr "バーチャルシャーシ" #: dcim/forms/bulk_import.py:462 dcim/forms/model_forms.py:457 -#: dcim/tables/devices.py:231 extras/filtersets.py:501 +#: dcim/tables/devices.py:235 extras/filtersets.py:501 #: extras/forms/filtersets.py:330 ipam/forms/bulk_edit.py:478 -#: ipam/forms/model_forms.py:588 templates/dcim/device.html:239 +#: ipam/forms/model_forms.py:592 templates/dcim/device.html:239 #: templates/virtualization/cluster.html:11 #: templates/virtualization/virtualmachine.html:92 #: templates/virtualization/virtualmachine.html:102 @@ -3211,7 +3209,7 @@ msgstr "バーチャルシャーシ" #: virtualization/forms/filtersets.py:196 #: virtualization/forms/model_forms.py:82 #: virtualization/forms/model_forms.py:179 -#: virtualization/tables/virtualmachines.py:57 +#: virtualization/tables/virtualmachines.py:66 msgid "Cluster" msgstr "クラスタ" @@ -3388,7 +3386,7 @@ msgstr "対応する背面ポート" msgid "Physical medium classification" msgstr "物理媒体の分類" -#: dcim/forms/bulk_import.py:973 dcim/tables/devices.py:846 +#: dcim/forms/bulk_import.py:973 dcim/tables/devices.py:850 msgid "Installed device" msgstr "取付済みデバイス" @@ -3476,7 +3474,7 @@ msgid "{side_upper} side termination not found: {device} {name}" msgstr "{side_upper} サイドターミネーションが見つかりません: {device} {name}" #: dcim/forms/bulk_import.py:1244 dcim/forms/model_forms.py:696 -#: dcim/tables/devices.py:1033 templates/dcim/device.html:130 +#: dcim/tables/devices.py:1037 templates/dcim/device.html:130 #: templates/dcim/virtualchassis.html:28 templates/dcim/virtualchassis.html:60 msgid "Master" msgstr "マスター" @@ -3598,7 +3596,7 @@ msgstr "専有済" #: dcim/forms/filtersets.py:1155 dcim/forms/filtersets.py:1177 #: dcim/forms/filtersets.py:1199 dcim/forms/filtersets.py:1216 -#: dcim/forms/filtersets.py:1236 dcim/tables/devices.py:372 +#: dcim/forms/filtersets.py:1236 dcim/tables/devices.py:376 #: templates/dcim/consoleport.html:59 templates/dcim/consoleserverport.html:59 #: templates/dcim/frontport.html:74 templates/dcim/interface.html:146 #: templates/dcim/powerfeed.html:118 templates/dcim/poweroutlet.html:63 @@ -3612,7 +3610,7 @@ msgid "Virtual Device Context" msgstr "仮想デバイスコンテキスト" #: dcim/forms/filtersets.py:1248 extras/forms/bulk_edit.py:315 -#: extras/forms/bulk_import.py:239 extras/forms/filtersets.py:479 +#: extras/forms/bulk_import.py:245 extras/forms/filtersets.py:479 #: extras/forms/model_forms.py:557 extras/tables/tables.py:487 #: templates/extras/journalentry.html:33 msgid "Kind" @@ -3644,7 +3642,7 @@ msgid "Transmit power (dBm)" msgstr "送信出力 (dBm)" #: dcim/forms/filtersets.py:1344 dcim/forms/filtersets.py:1366 -#: dcim/tables/devices.py:344 templates/dcim/cable.html:12 +#: dcim/tables/devices.py:348 templates/dcim/cable.html:12 #: templates/dcim/cable_edit.html:46 templates/dcim/cable_trace.html:43 #: templates/dcim/frontport.html:84 #: templates/dcim/inc/connection_endpoints.html:4 @@ -3652,7 +3650,7 @@ msgstr "送信出力 (dBm)" msgid "Cable" msgstr "ケーブル" -#: dcim/forms/filtersets.py:1434 dcim/tables/devices.py:956 +#: dcim/forms/filtersets.py:1434 dcim/tables/devices.py:960 msgid "Discovered" msgstr "自動検出" @@ -3697,7 +3695,7 @@ msgstr "シャーシ" msgid "Device Role" msgstr "デバイスロール" -#: dcim/forms/model_forms.py:428 dcim/models/devices.py:632 +#: dcim/forms/model_forms.py:428 dcim/models/devices.py:634 msgid "The lowest-numbered unit occupied by the device" msgstr "デバイスが使用している最も小さいユニット番号" @@ -3748,9 +3746,7 @@ msgstr "LAG インタフェース" #: templates/wireless/wirelesslink.html:10 #: templates/wireless/wirelesslink.html:49 #: virtualization/forms/model_forms.py:351 vpn/forms/bulk_import.py:297 -#: vpn/forms/model_forms.py:94 vpn/forms/model_forms.py:129 -#: vpn/forms/model_forms.py:241 vpn/forms/model_forms.py:436 -#: vpn/forms/model_forms.py:445 vpn/tables/tunnels.py:91 +#: vpn/forms/model_forms.py:436 vpn/forms/model_forms.py:445 #: wireless/forms/model_forms.py:112 wireless/forms/model_forms.py:152 msgid "Interface" msgstr "インタフェース" @@ -3821,7 +3817,7 @@ msgid "" msgstr "パターンは {value_count} 個の値を示す範囲を指定しますが、 {pattern_count} 個の値が必要です。" #: dcim/forms/object_create.py:109 dcim/forms/object_create.py:270 -#: dcim/tables/devices.py:281 +#: dcim/tables/devices.py:285 msgid "Rear ports" msgstr "背面ポート" @@ -3853,7 +3849,7 @@ msgid "" msgstr "" "前面ポートの数 ({frontport_count}) は選択した背面ポートの数 ({rearport_count}) と一致する必要があります。" -#: dcim/forms/object_create.py:408 dcim/tables/devices.py:1039 +#: dcim/forms/object_create.py:408 dcim/tables/devices.py:1043 #: ipam/tables/fhrp.py:31 templates/dcim/virtualchassis.html:54 #: templates/dcim/virtualchassis_edit.html:48 templates/ipam/fhrpgroup.html:39 msgid "Members" @@ -4545,13 +4541,13 @@ msgstr "在庫品目ロール" msgid "inventory item roles" msgstr "在庫品目ロール" -#: dcim/models/device_components.py:1230 dcim/models/devices.py:595 -#: dcim/models/devices.py:1173 dcim/models/racks.py:113 +#: dcim/models/device_components.py:1230 dcim/models/devices.py:597 +#: dcim/models/devices.py:1178 dcim/models/racks.py:113 msgid "serial number" msgstr "シリアル番号" -#: dcim/models/device_components.py:1238 dcim/models/devices.py:603 -#: dcim/models/devices.py:1180 dcim/models/racks.py:120 +#: dcim/models/device_components.py:1238 dcim/models/devices.py:605 +#: dcim/models/devices.py:1185 dcim/models/racks.py:120 msgid "asset tag" msgstr "アセットタグ" @@ -4599,7 +4595,7 @@ msgstr "メーカ" msgid "manufacturers" msgstr "メーカ" -#: dcim/models/devices.py:82 dcim/models/devices.py:381 +#: dcim/models/devices.py:82 dcim/models/devices.py:382 msgid "model" msgstr "型" @@ -4607,11 +4603,11 @@ msgstr "型" msgid "default platform" msgstr "デフォルトプラットフォーム" -#: dcim/models/devices.py:98 dcim/models/devices.py:385 +#: dcim/models/devices.py:98 dcim/models/devices.py:386 msgid "part number" msgstr "パーツ番号" -#: dcim/models/devices.py:101 dcim/models/devices.py:388 +#: dcim/models/devices.py:101 dcim/models/devices.py:389 msgid "Discrete part number (optional)" msgstr "個別の部品番号 (オプション)" @@ -4645,7 +4641,7 @@ msgid "" "device type is neither a parent nor a child." msgstr "親デバイスはデバイスベイに子デバイスを収納します。このデバイスタイプが親でも子供でもない場合は、空白のままにしてください。" -#: dcim/models/devices.py:128 dcim/models/devices.py:647 +#: dcim/models/devices.py:128 dcim/models/devices.py:649 msgid "airflow" msgstr "エアフロー" @@ -4657,18 +4653,18 @@ msgstr "デバイスタイプ" msgid "device types" msgstr "デバイスタイプ" -#: dcim/models/devices.py:289 +#: dcim/models/devices.py:290 msgid "U height must be in increments of 0.5 rack units." msgstr "U の高さは 0.5 ラック単位でなければなりません。" -#: dcim/models/devices.py:306 +#: dcim/models/devices.py:307 #, python-brace-format msgid "" "Device {device} in rack {rack} does not have sufficient space to accommodate" " a height of {height}U" msgstr "ラック内 {rack} のデバイス {device} は高さ{height}Uに対応する十分なスペースが有りません " -#: dcim/models/devices.py:321 +#: dcim/models/devices.py:322 #, python-brace-format msgid "" "Unable to set 0U height: Found {racked_instance_count} " @@ -4677,173 +4673,173 @@ msgstr "" "高さは 0U にできません: {racked_instance_count} インスタンス " "がラックに取り付け済みです。" -#: dcim/models/devices.py:330 +#: dcim/models/devices.py:331 msgid "" "Must delete all device bay templates associated with this device before " "declassifying it as a parent device." msgstr "このデバイスを親デバイスとして分類解除する前に、このデバイスに関連付けられているすべてのデバイスベイテンプレートを削除する必要があります。" -#: dcim/models/devices.py:336 +#: dcim/models/devices.py:337 msgid "Child device types must be 0U." msgstr "子デバイスタイプは 0U でなければなりません。" -#: dcim/models/devices.py:404 +#: dcim/models/devices.py:405 msgid "module type" msgstr "モジュールタイプ" -#: dcim/models/devices.py:405 +#: dcim/models/devices.py:406 msgid "module types" msgstr "モジュールタイプ" -#: dcim/models/devices.py:473 +#: dcim/models/devices.py:475 msgid "Virtual machines may be assigned to this role" msgstr "仮想マシンをこのロールに割り当てることができます" -#: dcim/models/devices.py:485 +#: dcim/models/devices.py:487 msgid "device role" msgstr "デバイスロール" -#: dcim/models/devices.py:486 +#: dcim/models/devices.py:488 msgid "device roles" msgstr "デバイスロール" -#: dcim/models/devices.py:503 +#: dcim/models/devices.py:505 msgid "Optionally limit this platform to devices of a certain manufacturer" msgstr "オプションで、このプラットフォームを特定のメーカのデバイスに限定できます" -#: dcim/models/devices.py:515 +#: dcim/models/devices.py:517 msgid "platform" msgstr "プラットフォーム" -#: dcim/models/devices.py:516 +#: dcim/models/devices.py:518 msgid "platforms" msgstr "プラットフォーム" -#: dcim/models/devices.py:564 +#: dcim/models/devices.py:566 msgid "The function this device serves" msgstr "このデバイスが果たす機能" -#: dcim/models/devices.py:596 +#: dcim/models/devices.py:598 msgid "Chassis serial number, assigned by the manufacturer" msgstr "製造元によって割当られた、シャーシのシリアル番号" -#: dcim/models/devices.py:604 dcim/models/devices.py:1181 +#: dcim/models/devices.py:606 dcim/models/devices.py:1186 msgid "A unique tag used to identify this device" msgstr "このデバイスを識別するために使用される一意のタグ" -#: dcim/models/devices.py:631 +#: dcim/models/devices.py:633 msgid "position (U)" msgstr "ポジション (U)" -#: dcim/models/devices.py:638 +#: dcim/models/devices.py:640 msgid "rack face" msgstr "ラックフェイス" -#: dcim/models/devices.py:658 dcim/models/devices.py:1390 +#: dcim/models/devices.py:660 dcim/models/devices.py:1395 #: virtualization/models/virtualmachines.py:98 msgid "primary IPv4" msgstr "プライマリ IPv4" -#: dcim/models/devices.py:666 dcim/models/devices.py:1398 +#: dcim/models/devices.py:668 dcim/models/devices.py:1403 #: virtualization/models/virtualmachines.py:106 msgid "primary IPv6" msgstr "プライマリ IPv6" -#: dcim/models/devices.py:674 +#: dcim/models/devices.py:676 msgid "out-of-band IP" msgstr "out-of-band IP" -#: dcim/models/devices.py:691 +#: dcim/models/devices.py:693 msgid "VC position" msgstr "VCポジション" -#: dcim/models/devices.py:695 +#: dcim/models/devices.py:697 msgid "Virtual chassis position" msgstr "バーチャルシャーシポジション" -#: dcim/models/devices.py:698 +#: dcim/models/devices.py:700 msgid "VC priority" msgstr "VC プライオリティ" -#: dcim/models/devices.py:702 +#: dcim/models/devices.py:704 msgid "Virtual chassis master election priority" msgstr "バーチャルシャーシのマスター選択優先順位" -#: dcim/models/devices.py:705 dcim/models/sites.py:207 +#: dcim/models/devices.py:707 dcim/models/sites.py:207 msgid "latitude" msgstr "緯度" -#: dcim/models/devices.py:710 dcim/models/devices.py:718 +#: dcim/models/devices.py:712 dcim/models/devices.py:720 #: dcim/models/sites.py:212 dcim/models/sites.py:220 msgid "GPS coordinate in decimal format (xx.yyyyyy)" msgstr "10 進数形式の GPS 座標 (xx.yyyyyy)" -#: dcim/models/devices.py:713 dcim/models/sites.py:215 +#: dcim/models/devices.py:715 dcim/models/sites.py:215 msgid "longitude" msgstr "経度" -#: dcim/models/devices.py:786 +#: dcim/models/devices.py:788 msgid "Device name must be unique per site." msgstr "デバイス名はサイトごとに一意である必要があります。" -#: dcim/models/devices.py:797 ipam/models/services.py:75 +#: dcim/models/devices.py:799 ipam/models/services.py:75 msgid "device" msgstr "デバイス" -#: dcim/models/devices.py:798 +#: dcim/models/devices.py:800 msgid "devices" msgstr "デバイス" -#: dcim/models/devices.py:838 +#: dcim/models/devices.py:840 #, python-brace-format msgid "Rack {rack} does not belong to site {site}." msgstr "ラック {rack} はサイト{site}に属していません 。" -#: dcim/models/devices.py:843 +#: dcim/models/devices.py:845 #, python-brace-format msgid "Location {location} does not belong to site {site}." msgstr "ロケーション {location} はサイト{site}に属していません 。" -#: dcim/models/devices.py:849 +#: dcim/models/devices.py:851 #, python-brace-format msgid "Rack {rack} does not belong to location {location}." msgstr "ラック {rack} はロケーション{location}に属していません 。" -#: dcim/models/devices.py:856 +#: dcim/models/devices.py:858 msgid "Cannot select a rack face without assigning a rack." msgstr "ラックを割り当てないとラックフェースは選択できません。" -#: dcim/models/devices.py:860 +#: dcim/models/devices.py:862 msgid "Cannot select a rack position without assigning a rack." msgstr "ラックを割り当てないとラックポジションを選択できません。" -#: dcim/models/devices.py:866 +#: dcim/models/devices.py:868 msgid "Position must be in increments of 0.5 rack units." msgstr "ポジションは 0.5 ラックユニット単位で入力する必要があります。" -#: dcim/models/devices.py:870 +#: dcim/models/devices.py:872 msgid "Must specify rack face when defining rack position." msgstr "ラックの位置を定義するときは、ラックの面を指定する必要があります。" -#: dcim/models/devices.py:878 +#: dcim/models/devices.py:880 #, python-brace-format msgid "" "A 0U device type ({device_type}) cannot be assigned to a rack position." msgstr "0U デバイスタイプ ({device_type}) をラックポジションに割り当てることはできません。" -#: dcim/models/devices.py:889 +#: dcim/models/devices.py:891 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 +#: dcim/models/devices.py:898 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 +#: dcim/models/devices.py:912 #, python-brace-format msgid "" "U{position} is already occupied or does not have sufficient space to " @@ -4852,22 +4848,22 @@ msgstr "" "U{position} が既に占有されているか、このデバイスタイプを収容するのに十分なスペースがありません: {device_type} " "({u_height}U)" -#: dcim/models/devices.py:925 +#: dcim/models/devices.py:927 #, python-brace-format msgid "{ip} is not an IPv4 address." msgstr "{ip} は IPv4 アドレスではありません。" -#: dcim/models/devices.py:934 dcim/models/devices.py:949 +#: dcim/models/devices.py:936 dcim/models/devices.py:951 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this device." msgstr "指定された IP アドレス ({ip}) はこのデバイスに割り当てられていません。" -#: dcim/models/devices.py:940 +#: dcim/models/devices.py:942 #, python-brace-format msgid "{ip} is not an IPv6 address." msgstr "{ip} IPv6 アドレスではありません。" -#: dcim/models/devices.py:967 +#: dcim/models/devices.py:969 #, python-brace-format msgid "" "The assigned platform is limited to {platform_manufacturer} device types, " @@ -4876,78 +4872,78 @@ msgstr "" "割当られたプラットフォームは{platform_manufacturer} のデバイスタイプに限定されます 。しかし、このデバイスのタイプは " "{devicetype_manufacturer}に属します。" -#: dcim/models/devices.py:978 +#: dcim/models/devices.py:980 #, python-brace-format msgid "The assigned cluster belongs to a different site ({site})" msgstr "割当クラスタは別のサイトに属しています ({site})" -#: dcim/models/devices.py:986 +#: dcim/models/devices.py:988 msgid "A device assigned to a virtual chassis must have its position defined." msgstr "仮想シャーシに割当られたデバイスには、その位置が定義されている必要があります。" -#: dcim/models/devices.py:1188 +#: dcim/models/devices.py:1193 msgid "module" msgstr "モジュール" -#: dcim/models/devices.py:1189 +#: dcim/models/devices.py:1194 msgid "modules" msgstr "モジュール" -#: dcim/models/devices.py:1205 +#: dcim/models/devices.py:1210 #, python-brace-format msgid "" "Module must be installed within a module bay belonging to the assigned " "device ({device})." msgstr "モジュールは、割当デバイスに属するモジュールベイ内に取り付ける必要があります ({device})。" -#: dcim/models/devices.py:1309 +#: dcim/models/devices.py:1314 msgid "domain" msgstr "ドメイン" -#: dcim/models/devices.py:1322 dcim/models/devices.py:1323 +#: dcim/models/devices.py:1327 dcim/models/devices.py:1328 msgid "virtual chassis" msgstr "バーチャルシャーシ" -#: dcim/models/devices.py:1338 +#: dcim/models/devices.py:1343 #, python-brace-format msgid "" "The selected master ({master}) is not assigned to this virtual chassis." msgstr "選択したマスター ({master}) はこの仮想シャーシに割り当てられていません。" -#: dcim/models/devices.py:1354 +#: dcim/models/devices.py:1359 #, python-brace-format msgid "" "Unable to delete virtual chassis {self}. There are member interfaces which " "form a cross-chassis LAG interfaces." msgstr "バーチャルシャーシ{self}を削除できません 。クロスシャーシ LAG インタフェースを形成するメンバーインタフェースがあります。" -#: dcim/models/devices.py:1379 vpn/models/l2vpn.py:37 +#: dcim/models/devices.py:1384 vpn/models/l2vpn.py:37 msgid "identifier" msgstr "識別子" -#: dcim/models/devices.py:1380 +#: dcim/models/devices.py:1385 msgid "Numeric identifier unique to the parent device" msgstr "親デバイスに固有の数値識別子" -#: dcim/models/devices.py:1408 extras/models/models.py:129 +#: dcim/models/devices.py:1413 extras/models/models.py:129 #: extras/models/models.py:724 netbox/models/__init__.py:114 msgid "comments" msgstr "コメント" -#: dcim/models/devices.py:1424 +#: dcim/models/devices.py:1429 msgid "virtual device context" msgstr "仮想デバイスコンテキスト" -#: dcim/models/devices.py:1425 +#: dcim/models/devices.py:1430 msgid "virtual device contexts" msgstr "仮想デバイスコンテキスト" -#: dcim/models/devices.py:1457 +#: dcim/models/devices.py:1462 #, python-brace-format msgid "{ip} is not an IPv{family} address." msgstr "{ip}は IPv{family}アドレスではありません。" -#: dcim/models/devices.py:1463 +#: dcim/models/devices.py:1468 msgid "Primary IP address must belong to an interface on the assigned device." msgstr "プライマリ IP アドレスは、割当デバイスのインタフェースに属している必要があります。" @@ -5322,7 +5318,7 @@ msgstr "コンソールポート" msgid "Reachable" msgstr "到達可能" -#: dcim/tables/connections.py:46 dcim/tables/devices.py:529 +#: dcim/tables/connections.py:46 dcim/tables/devices.py:533 #: templates/dcim/inventoryitem_edit.html:64 #: templates/dcim/poweroutlet.html:47 templates/dcim/powerport.html:18 msgid "Power Port" @@ -5341,7 +5337,7 @@ msgstr "デバイス" msgid "VMs" msgstr "仮想マシン" -#: dcim/tables/devices.py:133 dcim/tables/devices.py:245 +#: dcim/tables/devices.py:133 dcim/tables/devices.py:249 #: extras/forms/model_forms.py:515 templates/dcim/device.html:114 #: templates/dcim/device/render_config.html:11 #: templates/dcim/device/render_config.html:15 @@ -5350,62 +5346,62 @@ msgstr "仮想マシン" #: templates/virtualization/virtualmachine.html:47 #: templates/virtualization/virtualmachine/render_config.html:11 #: templates/virtualization/virtualmachine/render_config.html:15 -#: virtualization/tables/virtualmachines.py:93 +#: virtualization/tables/virtualmachines.py:106 msgid "Config Template" msgstr "設定テンプレート" -#: dcim/tables/devices.py:216 dcim/tables/devices.py:1074 +#: dcim/tables/devices.py:220 dcim/tables/devices.py:1078 #: ipam/forms/bulk_import.py:511 ipam/forms/model_forms.py:296 #: 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:81 +#: virtualization/tables/virtualmachines.py:94 msgid "IP Address" msgstr "IP アドレス" -#: dcim/tables/devices.py:220 dcim/tables/devices.py:1078 -#: virtualization/tables/virtualmachines.py:72 +#: dcim/tables/devices.py:224 dcim/tables/devices.py:1082 +#: virtualization/tables/virtualmachines.py:85 msgid "IPv4 Address" msgstr "IPv4 アドレス" -#: dcim/tables/devices.py:224 dcim/tables/devices.py:1082 -#: virtualization/tables/virtualmachines.py:76 +#: dcim/tables/devices.py:228 dcim/tables/devices.py:1086 +#: virtualization/tables/virtualmachines.py:89 msgid "IPv6 Address" msgstr "IPv6 アドレス" -#: dcim/tables/devices.py:239 +#: dcim/tables/devices.py:243 msgid "VC Position" msgstr "VC ポジション" -#: dcim/tables/devices.py:242 +#: dcim/tables/devices.py:246 msgid "VC Priority" msgstr "VC プライオリティ" -#: dcim/tables/devices.py:249 templates/dcim/device_edit.html:38 +#: dcim/tables/devices.py:253 templates/dcim/device_edit.html:38 #: templates/dcim/devicebay_populate.html:16 msgid "Parent Device" msgstr "親デバイス" -#: dcim/tables/devices.py:254 +#: dcim/tables/devices.py:258 msgid "Position (Device Bay)" msgstr "位置 (デバイスベイ)" -#: dcim/tables/devices.py:263 +#: dcim/tables/devices.py:267 msgid "Console ports" msgstr "コンソールポート" -#: dcim/tables/devices.py:266 +#: dcim/tables/devices.py:270 msgid "Console server ports" msgstr "コンソールサーバポート" -#: dcim/tables/devices.py:269 +#: dcim/tables/devices.py:273 msgid "Power ports" msgstr "電源ポート" -#: dcim/tables/devices.py:272 +#: dcim/tables/devices.py:276 msgid "Power outlets" msgstr "電源コンセント" -#: dcim/tables/devices.py:275 dcim/tables/devices.py:1087 +#: dcim/tables/devices.py:279 dcim/tables/devices.py:1091 #: dcim/tables/devicetypes.py:125 dcim/views.py:1005 dcim/views.py:1244 #: dcim/views.py:1930 netbox/navigation/menu.py:82 #: netbox/navigation/menu.py:238 templates/dcim/device/base.html:37 @@ -5415,53 +5411,53 @@ msgstr "電源コンセント" #: templates/dcim/virtualdevicecontext.html:85 #: templates/virtualization/virtualmachine/base.html:27 #: templates/virtualization/virtualmachine_list.html:14 -#: virtualization/tables/virtualmachines.py:87 virtualization/views.py:368 +#: virtualization/tables/virtualmachines.py:100 virtualization/views.py:368 #: wireless/tables/wirelesslan.py:55 msgid "Interfaces" msgstr "インタフェース" -#: dcim/tables/devices.py:278 +#: dcim/tables/devices.py:282 msgid "Front ports" msgstr "前面ポート" -#: dcim/tables/devices.py:284 +#: dcim/tables/devices.py:288 msgid "Device bays" msgstr "デバイスベイ" -#: dcim/tables/devices.py:287 +#: dcim/tables/devices.py:291 msgid "Module bays" msgstr "モジュールベイ" -#: dcim/tables/devices.py:290 +#: dcim/tables/devices.py:294 msgid "Inventory items" msgstr "在庫品目" -#: dcim/tables/devices.py:329 dcim/tables/modules.py:56 +#: dcim/tables/devices.py:333 dcim/tables/modules.py:56 #: templates/dcim/modulebay.html:17 msgid "Module Bay" msgstr "モジュールベイ" -#: dcim/tables/devices.py:350 +#: dcim/tables/devices.py:354 msgid "Cable Color" msgstr "ケーブル色" -#: dcim/tables/devices.py:356 +#: dcim/tables/devices.py:360 msgid "Link Peers" msgstr "対向" -#: dcim/tables/devices.py:359 +#: dcim/tables/devices.py:363 msgid "Mark Connected" msgstr "接続済みとしてマークする" -#: dcim/tables/devices.py:475 +#: dcim/tables/devices.py:479 msgid "Maximum draw (W)" msgstr "最大電力 (W)" -#: dcim/tables/devices.py:478 +#: dcim/tables/devices.py:482 msgid "Allocated draw (W)" msgstr "割当電力 (W)" -#: dcim/tables/devices.py:578 ipam/forms/model_forms.py:707 +#: dcim/tables/devices.py:582 ipam/forms/model_forms.py:711 #: ipam/tables/fhrp.py:28 ipam/views.py:597 ipam/views.py:691 #: netbox/navigation/menu.py:146 netbox/navigation/menu.py:148 #: templates/dcim/interface.html:351 templates/ipam/ipaddress_bulk_add.html:15 @@ -5470,12 +5466,12 @@ msgstr "割当電力 (W)" msgid "IP Addresses" msgstr "IP アドレス" -#: dcim/tables/devices.py:584 netbox/navigation/menu.py:190 +#: dcim/tables/devices.py:588 netbox/navigation/menu.py:190 #: templates/ipam/inc/panels/fhrp_groups.html:5 msgid "FHRP Groups" msgstr "FHRP グループ" -#: dcim/tables/devices.py:596 templates/dcim/interface.html:90 +#: dcim/tables/devices.py:600 templates/dcim/interface.html:90 #: templates/virtualization/vminterface.html:70 templates/vpn/tunnel.html:18 #: templates/vpn/tunneltermination.html:14 vpn/forms/bulk_edit.py:75 #: vpn/forms/bulk_import.py:76 vpn/forms/filtersets.py:41 @@ -5484,20 +5480,20 @@ msgstr "FHRP グループ" msgid "Tunnel" msgstr "トンネル" -#: dcim/tables/devices.py:621 dcim/tables/devicetypes.py:224 +#: dcim/tables/devices.py:625 dcim/tables/devicetypes.py:224 #: templates/dcim/interface.html:66 msgid "Management Only" msgstr "管理のみ" -#: dcim/tables/devices.py:629 +#: dcim/tables/devices.py:633 msgid "Wireless link" msgstr "無線リンク" -#: dcim/tables/devices.py:639 +#: dcim/tables/devices.py:643 msgid "VDCs" msgstr "VDC" -#: dcim/tables/devices.py:647 dcim/tables/devicetypes.py:48 +#: dcim/tables/devices.py:651 dcim/tables/devicetypes.py:48 #: dcim/tables/devicetypes.py:140 dcim/views.py:1080 dcim/views.py:2023 #: netbox/navigation/menu.py:91 templates/dcim/device/base.html:52 #: templates/dcim/device_list.html:71 templates/dcim/devicetype/base.html:49 @@ -5506,7 +5502,7 @@ msgstr "VDC" msgid "Inventory Items" msgstr "在庫品目" -#: dcim/tables/devices.py:728 +#: dcim/tables/devices.py:732 #: 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 @@ -5515,28 +5511,28 @@ msgstr "在庫品目" msgid "Rear Port" msgstr "背面ポート" -#: dcim/tables/devices.py:893 templates/dcim/modulebay.html:51 +#: dcim/tables/devices.py:897 templates/dcim/modulebay.html:51 msgid "Installed Module" msgstr "取付済みモジュール" -#: dcim/tables/devices.py:896 +#: dcim/tables/devices.py:900 msgid "Module Serial" msgstr "モジュールシリアル番号" -#: dcim/tables/devices.py:900 +#: dcim/tables/devices.py:904 msgid "Module Asset Tag" msgstr "モジュール資産タグ" -#: dcim/tables/devices.py:909 +#: dcim/tables/devices.py:913 msgid "Module Status" msgstr "モジュールステータス" -#: dcim/tables/devices.py:951 dcim/tables/devicetypes.py:308 +#: dcim/tables/devices.py:955 dcim/tables/devicetypes.py:308 #: templates/dcim/inventoryitem.html:41 msgid "Component" msgstr "構成要素" -#: dcim/tables/devices.py:1006 +#: dcim/tables/devices.py:1010 msgid "Items" msgstr "アイテム" @@ -6094,7 +6090,7 @@ msgid "Cluster type (slug)" msgstr "クラスタタイプ (slug)" #: extras/filtersets.py:490 ipam/forms/bulk_edit.py:475 -#: ipam/forms/model_forms.py:585 virtualization/forms/filtersets.py:108 +#: ipam/forms/model_forms.py:589 virtualization/forms/filtersets.py:108 msgid "Cluster group" msgstr "クラスタグループ" @@ -6225,8 +6221,8 @@ msgid "Is active" msgstr "有効" #: extras/forms/bulk_import.py:34 extras/forms/bulk_import.py:115 -#: extras/forms/bulk_import.py:130 extras/forms/bulk_import.py:153 -#: extras/forms/bulk_import.py:177 extras/forms/filtersets.py:114 +#: extras/forms/bulk_import.py:136 extras/forms/bulk_import.py:159 +#: extras/forms/bulk_import.py:183 extras/forms/filtersets.py:114 #: extras/forms/filtersets.py:160 extras/forms/filtersets.py:201 #: extras/forms/model_forms.py:43 extras/forms/model_forms.py:127 #: extras/forms/model_forms.py:156 extras/forms/model_forms.py:197 @@ -6235,8 +6231,8 @@ msgid "Content types" msgstr "コンテンツタイプ" #: extras/forms/bulk_import.py:36 extras/forms/bulk_import.py:117 -#: extras/forms/bulk_import.py:132 extras/forms/bulk_import.py:155 -#: extras/forms/bulk_import.py:179 tenancy/forms/bulk_import.py:96 +#: extras/forms/bulk_import.py:138 extras/forms/bulk_import.py:161 +#: extras/forms/bulk_import.py:185 tenancy/forms/bulk_import.py:96 msgid "One or more assigned object types" msgstr "1 つ以上の割当オブジェクトタイプ" @@ -6278,33 +6274,44 @@ msgstr "定義済みの選択肢の基本セット (存在する場合)" msgid "" "Quoted string of comma-separated field choices with optional labels " "separated by colon: \"choice1:First Choice,choice2:Second Choice\"" -msgstr "カンマで区切られたフィールド選択肢とコロンで区切られたオプションのラベルを引用符で囲んだ文字列:「選択肢1:第一選択、選択肢2:第二選択」" +msgstr "" +"引用符で囲んだ、カンマ区切りの選択肢。コロン区切りでラベル設定可能: \"choice1:First Choice,choice2:Second " +"Choice\"" -#: extras/forms/bulk_import.py:182 +#: extras/forms/bulk_import.py:120 extras/models/models.py:353 +msgid "button class" +msgstr "ボタンクラス" + +#: extras/forms/bulk_import.py:123 extras/models/models.py:357 +msgid "" +"The class of the first link in a group will be used for the dropdown button" +msgstr "グループ内の最初のリンクのクラスがドロップダウンボタンに使用されます" + +#: extras/forms/bulk_import.py:188 msgid "Action object" msgstr "アクションオブジェクト" -#: extras/forms/bulk_import.py:184 +#: extras/forms/bulk_import.py:190 msgid "Webhook name or script as dotted path module.Class" -msgstr "ドットパス形式のウェブフック名またはスクリプト module.Class" +msgstr "ドットパス形式 (module.Class) のウェブフック名またはスクリプト" -#: extras/forms/bulk_import.py:205 +#: extras/forms/bulk_import.py:211 #, python-brace-format msgid "Webhook {name} not found" msgstr "ウェブフック {name} 見つかりません" -#: extras/forms/bulk_import.py:214 +#: extras/forms/bulk_import.py:220 #, python-brace-format msgid "Script {name} not found" msgstr "スクリプト {name} 見つかりません" -#: extras/forms/bulk_import.py:236 +#: extras/forms/bulk_import.py:242 msgid "Assigned object type" msgstr "割当オブジェクトタイプ" -#: extras/forms/bulk_import.py:241 +#: extras/forms/bulk_import.py:247 msgid "The classification of entry" -msgstr "エントリーの分類" +msgstr "エントリの分類" #: extras/forms/filtersets.py:53 msgid "Field type" @@ -6320,7 +6327,7 @@ msgstr "選択肢" #: templates/core/job.html:86 templates/extras/configcontext.html:86 #: templates/extras/eventrule.html:111 msgid "Data" -msgstr "[データ]" +msgstr "データ" #: extras/forms/filtersets.py:152 extras/forms/filtersets.py:341 #: extras/forms/filtersets.py:427 utilities/choices.py:219 @@ -6330,11 +6337,11 @@ msgstr "データファイル" #: extras/forms/filtersets.py:185 msgid "Content type" -msgstr "コンテンツタイプ" +msgstr "Content type" #: extras/forms/filtersets.py:232 extras/models/models.py:209 msgid "HTTP content type" -msgstr "HTTP コンテンツタイプ" +msgstr "HTTP content type" #: extras/forms/filtersets.py:254 extras/forms/model_forms.py:271 #: templates/extras/eventrule.html:46 @@ -6359,7 +6366,7 @@ msgstr "オブジェクト削除" #: extras/forms/filtersets.py:299 msgid "Job starts" -msgstr "ジョブ開始" +msgstr "ジョブの開始" #: extras/forms/filtersets.py:306 extras/forms/model_forms.py:290 msgid "Job terminations" @@ -6416,11 +6423,11 @@ msgstr "テナントグループ" #: extras/forms/filtersets.py:454 extras/forms/filtersets.py:495 msgid "After" -msgstr "後" +msgstr "以降" #: extras/forms/filtersets.py:459 extras/forms/filtersets.py:500 msgid "Before" -msgstr "変更前" +msgstr "以前" #: extras/forms/filtersets.py:490 extras/tables/tables.py:431 #: templates/extras/htmx/report_result.html:43 @@ -6448,26 +6455,25 @@ msgstr "動作" #: extras/forms/model_forms.py:62 msgid "Values" -msgstr "価値" +msgstr "値" #: extras/forms/model_forms.py:71 msgid "" "The type of data stored in this field. For object/multi-object fields, " "select the related object type below." -msgstr "" -"このフィールドに保存されているデータのタイプ。オブジェクト/マルチオブジェクトフィールドの場合は、関連するオブジェクトタイプを以下から選択してください。" +msgstr "このフィールドのタイプ。オブジェクト/マルチオブジェクトフィールドの場合は、関連するオブジェクトタイプを以下から選択してください。" #: extras/forms/model_forms.py:74 msgid "" "This will be displayed as help text for the form field. Markdown is " "supported." -msgstr "これはフォームフィールドのヘルプテキストとして表示されます。Markdown はサポートされています。" +msgstr "これはフォームフィールドのヘルプテキストとして表示されます。Markdown がサポートされています。" #: extras/forms/model_forms.py:91 msgid "" "Enter one choice per line. An optional label may be specified for each " "choice by appending it with a colon. Example:" -msgstr "1 行に 1 つの選択肢を入力します。各選択肢にコロンを付けることでオプションのラベルを指定できます。例:" +msgstr "1 行に 1 つの選択肢を入力します。必要に応じて、各選択肢にコロンを付けることで、ラベルを指定できます。例:" #: extras/forms/model_forms.py:132 templates/extras/customlink.html:10 msgid "Custom Link" @@ -6506,7 +6512,7 @@ msgstr "レンダリング" #: extras/forms/model_forms.py:182 extras/forms/model_forms.py:534 msgid "Template content is populated from the remote source selected below." -msgstr "テンプレートコンテンツは、以下で選択したリモートソースから入力されます。" +msgstr "選択したリモートソースから、テンプレートコンテンツが入力されます。" #: extras/forms/model_forms.py:189 extras/forms/model_forms.py:541 msgid "Must specify either local content or a data file" @@ -6527,17 +6533,17 @@ msgstr "SSL" #: extras/forms/model_forms.py:257 msgid "Action choice" -msgstr "アクション選択" +msgstr "スクリプト" #: extras/forms/model_forms.py:262 msgid "Enter conditions in JSON format." -msgstr "に条件を入力 JSON フォーマット。" +msgstr "JSON フォーマットで条件を入力。" #: extras/forms/model_forms.py:266 msgid "" "Enter parameters to pass to the action in JSON format." -msgstr "アクションに渡すパラメータを入力してください JSON フォーマット。" +msgstr "JSON フォーマットでアクションに渡すパラメータを入力してください。" #: extras/forms/model_forms.py:270 templates/extras/eventrule.html:11 msgid "Event Rule" @@ -6549,11 +6555,11 @@ msgstr "条件" #: extras/forms/model_forms.py:286 msgid "Creations" -msgstr "クリエーション" +msgstr "作成" #: extras/forms/model_forms.py:287 msgid "Updates" -msgstr "アップデート" +msgstr "更新" #: extras/forms/model_forms.py:288 msgid "Deletions" @@ -6577,7 +6583,7 @@ msgstr "テナント" #: templates/ipam/ipaddress.html:62 templates/ipam/vlan_edit.html:30 #: tenancy/forms/filtersets.py:86 users/forms/model_forms.py:324 msgid "Assignment" -msgstr "アサイメント" +msgstr "割当" #: extras/forms/model_forms.py:491 msgid "Data is populated from the remote source selected below." @@ -6589,28 +6595,28 @@ msgstr "ローカルデータまたはデータファイルのいずれかを指 #: extras/forms/model_forms.py:516 templates/core/datafile.html:65 msgid "Content" -msgstr "[コンテンツ]" +msgstr "コンテンツ" #: extras/forms/reports.py:18 extras/forms/scripts.py:24 msgid "Schedule at" -msgstr "のスケジュール" +msgstr "スケジュール" #: extras/forms/reports.py:19 msgid "Schedule execution of report to a set time" -msgstr "レポートの実行を設定された時間にスケジュールする" +msgstr "レポートの実行をスケジュールする" #: extras/forms/reports.py:24 extras/forms/scripts.py:30 msgid "Recurs every" -msgstr "毎回繰り返す" +msgstr "繰り返す" #: extras/forms/reports.py:28 msgid "Interval at which this report is re-run (in minutes)" -msgstr "このレポートが再実行される間隔 (分単位)" +msgstr "実行される間隔 (分)" #: extras/forms/reports.py:36 extras/forms/scripts.py:42 #, python-brace-format msgid " (current time: {now})" -msgstr " (現在の時刻: {now})" +msgstr " (現在時刻: {now})" #: extras/forms/reports.py:46 extras/forms/scripts.py:52 msgid "Scheduled time must be in the future." @@ -6622,23 +6628,23 @@ msgstr "変更をコミット" #: extras/forms/scripts.py:19 msgid "Commit changes to the database (uncheck for a dry-run)" -msgstr "変更をデータベースにコミットする (ドライランの場合はチェックを外す)" +msgstr "変更をDBにコミットする (dry runの場合はチェックを外す)" #: extras/forms/scripts.py:25 msgid "Schedule execution of script to a set time" -msgstr "設定した時間にスクリプトの実行をスケジュールする" +msgstr "スクリプトの実行をスケジュールする" #: extras/forms/scripts.py:34 msgid "Interval at which this script is re-run (in minutes)" -msgstr "このスクリプトが再実行される間隔 (分単位)" +msgstr "実行される間隔 (分単位)" #: extras/management/commands/reindex.py:66 msgid "No indexers found!" -msgstr "インデクサーが見つかりません!" +msgstr "indexerが見つかりません" #: extras/models/change_logging.py:24 msgid "time" -msgstr "時間" +msgstr "時刻" #: extras/models/change_logging.py:37 msgid "user name" @@ -6658,7 +6664,7 @@ msgstr "変更前データ" #: extras/models/change_logging.py:87 msgid "post-change data" -msgstr "変更後のデータ" +msgstr "変更後データ" #: extras/models/change_logging.py:101 msgid "object change" @@ -6666,12 +6672,12 @@ msgstr "オブジェクト変更" #: extras/models/change_logging.py:102 msgid "object changes" -msgstr "オブジェクトの変更" +msgstr "オブジェクト変更" #: extras/models/change_logging.py:118 #, python-brace-format msgid "Change logging is not supported for this object type ({type})." -msgstr "このオブジェクトタイプでは変更ログはサポートされていません ({type})。" +msgstr "このオブジェクトタイプ ({type}) では変更ログはサポートされていません。" #: extras/models/configs.py:130 msgid "config context" @@ -6679,7 +6685,7 @@ msgstr "コンフィグコンテキスト" #: extras/models/configs.py:131 msgid "config contexts" -msgstr "設定コンテキスト" +msgstr "コンフィグコンテキスト" #: extras/models/configs.py:149 extras/models/configs.py:205 msgid "JSON data must be in object form. Example:" @@ -6689,7 +6695,7 @@ msgstr "JSON データはオブジェクト形式である必要があります msgid "" "Local config context data takes precedence over source contexts in the final" " rendered config context" -msgstr "ローカル構成コンテキストデータは、最終的にレンダリングされた構成コンテキストのソースコンテキストよりも優先されます" +msgstr "最終的なコンフィグコンテキストでは、ローカルコンフィグコンテキストが優先されます。" #: extras/models/configs.py:224 msgid "template code" @@ -6709,9 +6715,9 @@ msgid "" "href=\"https://jinja.palletsprojects.com/en/3.1.x/api/#jinja2.Environment\">additional" " parameters to pass when constructing the Jinja2 environment." msgstr "" -"任意 追加パラメータ" -" Jinja2 環境を構築するときに渡されます。" +" はJinja2 環境を構築するときに渡されます。" #: extras/models/configs.py:240 msgid "config template" @@ -6739,7 +6745,7 @@ msgstr "内部フィールド名" #: extras/models/customfields.py:96 msgid "Only alphanumeric characters and underscores are allowed." -msgstr "英数字とアンダースコアのみを使用できます。" +msgstr "英数字とアンダースコアのみ使用できます。" #: extras/models/customfields.py:101 msgid "Double underscores are not permitted in custom field names." @@ -6749,7 +6755,7 @@ msgstr "カスタムフィールド名には二重アンダースコアを使用 msgid "" "Name of the field as displayed to users (if not provided, 'the field's name " "will be used)" -msgstr "ユーザに表示されるフィールドの名前 (指定しない場合は、「フィールドの名前が使用されます)」" +msgstr "表示されるフィールド名 (指定しない場合は、フィールド名が使用されます)" #: extras/models/customfields.py:116 extras/models/models.py:347 msgid "group name" @@ -6767,17 +6773,17 @@ msgstr "必須" msgid "" "If true, this field is required when creating new objects or editing an " "existing object." -msgstr "true の場合、新しいオブジェクトを作成したり、既存のオブジェクトを編集したりするときに、このフィールドは必須です。" +msgstr "true の場合、オブジェクトを作成・編集する際に、このフィールドは必須です。" #: extras/models/customfields.py:132 msgid "search weight" -msgstr "検索ウェイト" +msgstr "検索優先度" #: extras/models/customfields.py:135 msgid "" "Weighting for search. Lower values are considered more important. Fields " "with a search weight of zero will be ignored." -msgstr "検索用の重み付け。値が小さいほど重要であると見なされます。検索ウェイトが 0 のフィールドは無視されます。" +msgstr "検索用の重み付け。値が小さいほど優先されます。検索優先度が 0 のフィールドは無視されます。" #: extras/models/customfields.py:140 msgid "filter logic" @@ -6787,7 +6793,7 @@ msgstr "フィルターロジック" msgid "" "Loose matches any instance of a given string; exact matches the entire " "field." -msgstr "Loose は指定した文字列の任意のインスタンスと一致し、exact はフィールド全体と一致します。" +msgstr "Loose は指定した文字列が含まれる場合に一致し、exact はフィールド全体と一致します。" #: extras/models/customfields.py:147 msgid "default" @@ -6801,11 +6807,11 @@ msgstr "フィールドのデフォルト値 (JSON 値である必要があり #: extras/models/customfields.py:156 msgid "display weight" -msgstr "ディスプレイ重量" +msgstr "表示優先度" #: extras/models/customfields.py:157 msgid "Fields with higher weights appear lower in a form." -msgstr "重みが大きいフィールドは、フォームの下位に表示されます。" +msgstr "値が大きいフィールドは、フォームの下に表示されます。" #: extras/models/customfields.py:162 msgid "minimum value" @@ -6825,7 +6831,7 @@ msgstr "最大許容値 (数値フィールド用)" #: extras/models/customfields.py:175 msgid "validation regex" -msgstr "検証正規表現" +msgstr "バリデーション正規表現" #: extras/models/customfields.py:177 #, python-brace-format @@ -6835,11 +6841,11 @@ msgid "" "values to exactly three uppercase letters." msgstr "" "テキストフィールド値に適用する正規表現。^ と $ を使用して文字列全体を強制的に一致させます。例えば、 ^ " -"[アルファベット順]{3}$ 値をちょうど 3 文字の大文字に制限します。" +"[A-Z]{3}$ は値を3 字の大文字に制限します。" #: extras/models/customfields.py:185 msgid "choice set" -msgstr "チョイスセット" +msgstr "選択肢" #: extras/models/customfields.py:194 msgid "Specifies whether the custom field is displayed in the UI" @@ -6851,11 +6857,11 @@ msgstr "カスタムフィールド値を UI で編集できるかどうかを #: extras/models/customfields.py:205 msgid "is cloneable" -msgstr "クローン可能" +msgstr "複製可能" #: extras/models/customfields.py:206 msgid "Replicate this value when cloning objects" -msgstr "オブジェクトのクローニング時にこの値を複製する" +msgstr "オブジェクトの複製時にこの値を複製する" #: extras/models/customfields.py:219 msgid "custom field" @@ -6868,7 +6874,7 @@ msgstr "カスタムフィールド" #: extras/models/customfields.py:309 #, python-brace-format msgid "Invalid default value \"{value}\": {error}" -msgstr "デフォルト値が無効です」{value}「: {error}" +msgstr "デフォルト値が無効です \"{value}\": {error}" #: extras/models/customfields.py:316 msgid "A minimum value may be set only for numeric fields" @@ -6902,7 +6908,7 @@ msgstr "{type} フィールドはオブジェクトタイプを定義できま #: extras/models/customfields.py:434 msgid "True" -msgstr "本当" +msgstr "真" #: extras/models/customfields.py:435 msgid "False" @@ -6911,7 +6917,7 @@ msgstr "偽" #: extras/models/customfields.py:517 #, python-brace-format msgid "Values must match this regex: {regex}" -msgstr "値は次の正規表現と一致する必要があります。 {regex}" +msgstr "値は次の正規表現とマッチする必要があります。 {regex}" #: extras/models/customfields.py:611 msgid "Value must be a string." @@ -6920,7 +6926,7 @@ msgstr "値は文字列でなければなりません。" #: extras/models/customfields.py:613 #, python-brace-format msgid "Value must match regex '{regex}'" -msgstr "値は正規表現 'と一致する必要があります{regex}'" +msgstr "値は正規表現 '{regex}'と一致する必要があります" #: extras/models/customfields.py:618 msgid "Value must be an integer." @@ -6929,16 +6935,16 @@ msgstr "値は整数でなければなりません。" #: extras/models/customfields.py:621 extras/models/customfields.py:636 #, python-brace-format msgid "Value must be at least {minimum}" -msgstr "値は少なくとも次の値でなければなりません {minimum}" +msgstr "値は {minimum} 以上でなければなりません" #: extras/models/customfields.py:625 extras/models/customfields.py:640 #, python-brace-format msgid "Value must not exceed {maximum}" -msgstr "値を超えてはいけません {maximum}" +msgstr "値は {maximum} を超えてはいけません" #: extras/models/customfields.py:633 msgid "Value must be a decimal." -msgstr "値は10進数でなければなりません。" +msgstr "値は実数でなければなりません。" #: extras/models/customfields.py:645 msgid "Value must be true or false." @@ -6950,27 +6956,27 @@ msgstr "日付値は ISO 8601 フォーマット (YYYY-MM-DD) である必要が #: extras/models/customfields.py:662 msgid "Date and time values must be in ISO 8601 format (YYYY-MM-DD HH:MM:SS)." -msgstr "日付と時刻の値は ISO 8601 フォーマット (YYYY-MM-DD HH: MM: SS) である必要があります。" +msgstr "日付と時刻の値は ISO 8601 フォーマット (YYYY-MM-DD HH:MM:SS) である必要があります。" #: extras/models/customfields.py:669 #, python-brace-format msgid "Invalid choice ({value}) for choice set {choiceset}." -msgstr "選択が無効です ({value}) チョイスセット用 {choiceset}。" +msgstr "{value}は選択肢 {choiceset} に含まれていません。" #: extras/models/customfields.py:679 #, python-brace-format msgid "Invalid choice(s) ({value}) for choice set {choiceset}." -msgstr "選択が無効です ({value}) チョイスセット用 {choiceset}。" +msgstr "{value}は選択肢 {choiceset} に含まれていません。" #: extras/models/customfields.py:688 #, python-brace-format msgid "Value must be an object ID, not {type}" -msgstr "値はオブジェクトIDでなければならず、そうではありません {type}" +msgstr "{type}ではなく、オブジェクトIDを指定してください" #: extras/models/customfields.py:694 #, python-brace-format msgid "Value must be a list of object IDs, not {type}" -msgstr "値はオブジェクト ID のリストでなければならず、そうではありません {type}" +msgstr "{type} ではなくオブジェクト ID のリストを入力してください" #: extras/models/customfields.py:698 #, python-brace-format @@ -6991,11 +6997,11 @@ msgstr "選択肢は自動的にアルファベット順に並べられます" #: extras/models/customfields.py:739 msgid "custom field choice set" -msgstr "カスタムフィールド選択セット" +msgstr "カスタムフィールド選択肢" #: extras/models/customfields.py:740 msgid "custom field choice sets" -msgstr "カスタムフィールド選択セット" +msgstr "カスタムフィールド選択肢" #: extras/models/customfields.py:776 msgid "Must define base or extra choices." @@ -7007,7 +7013,7 @@ msgstr "レイアウト" #: extras/models/dashboard.py:23 msgid "config" -msgstr "設定する" +msgstr "設定" #: extras/models/dashboard.py:28 msgid "dashboard" @@ -7094,7 +7100,7 @@ msgstr "イベントルール" msgid "" "At least one event type must be selected: create, update, delete, job start," " and/or job end." -msgstr "少なくとも 1 つのイベントタイプ (作成、更新、削除、ジョブの開始、ジョブの終了) を選択する必要があります。" +msgstr "少なくとも 1 つのイベントタイプを選択する必要があります。 : 作成、更新、削除、ジョブの開始、ジョブの終了" #: extras/models/models.py:196 msgid "" @@ -7140,13 +7146,13 @@ msgid "" "username, request_id, and data." msgstr "" "カスタムリクエストボディ用の Jinja2 テンプレート。空欄の場合は、変更を表す JSON " -"オブジェクトが含まれます。利用可能なコンテキストデータには以下が含まれます。 出来事、 " -"タイムスタンプユーザ名リクエスト ID、および " -"データ。" +"オブジェクトが含まれます。利用可能なコンテキストデータには以下が含まれます。 event, " +"model, timestamp, username, " +"request_id, and data." #: extras/models/models.py:234 msgid "secret" -msgstr "秘密" +msgstr "シークレット" #: extras/models/models.py:238 msgid "" @@ -7154,8 +7160,8 @@ msgid "" "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 "" -"提供された場合、リクエストには以下が含まれます X フック-シグネチャー シークレットをキーとして使用したペイロード本体の " -"HMAC 16 進ダイジェストを含むヘッダー。シークレットはリクエストでは送信されません。" +"提供された場合、リクエストにはシークレットをキーとして使用したペイロード本体のHMAC 16 進ダイジェストを含むX-Hook-" +"Signature ヘッダー が含まれます 。シークレットはリクエストでは送信されません。" #: extras/models/models.py:245 msgid "Enable SSL certificate verification. Disable with caution!" @@ -7207,15 +7213,6 @@ msgstr "リンク URL の Jinja2 テンプレートコード" msgid "Links with the same group will appear as a dropdown menu" msgstr "同じグループのリンクはドロップダウンメニューとして表示されます" -#: extras/models/models.py:353 -msgid "button class" -msgstr "ボタンクラス" - -#: extras/models/models.py:357 -msgid "" -"The class of the first link in a group will be used for the dropdown button" -msgstr "グループ内の最初のリンクのクラスがドロップダウンボタンに使用されます" - #: extras/models/models.py:360 msgid "new window" msgstr "新しいウィンドウ" @@ -7241,12 +7238,12 @@ msgid "" "Jinja2 template code. The list of objects being exported is passed as a " "context variable named queryset." msgstr "" -"Jinja2 テンプレートコード。エクスポートされるオブジェクトのリストは、という名前のコンテキスト変数として渡されます。 " -"クエリーセット。" +"Jinja2 テンプレートコード。エクスポートされるオブジェクトのリストは、 " +"クエリーセットという名前のコンテキスト変数として渡されます。" #: extras/models/models.py:440 msgid "Defaults to text/plain; charset=utf-8" -msgstr "デフォルトは テキスト/プレーン; 文字セット=utf-8" +msgstr "デフォルトは text/plain; charset=utf-8" #: extras/models/models.py:443 msgid "file extension" @@ -7262,20 +7259,20 @@ msgstr "添付ファイルとして" #: extras/models/models.py:451 msgid "Download file as attachment" -msgstr "ファイルを添付ファイルとしてダウンロード" +msgstr "ファイルを直接ダウンロードする" #: extras/models/models.py:460 msgid "export template" -msgstr "テンプレートをエクスポート" +msgstr "エクスポートテンプレート" #: extras/models/models.py:461 msgid "export templates" -msgstr "テンプレートをエクスポートする" +msgstr "エクスポートテンプレート" #: extras/models/models.py:478 #, python-brace-format msgid "\"{name}\" is a reserved name. Please choose a different name." -msgstr "「{name}「は予約名です。別の名前を選択してください。" +msgstr "\"{name}\"は予約されています。別の名前を選択してください。" #: extras/models/models.py:528 msgid "The object type(s) to which this filter applies." @@ -7287,19 +7284,19 @@ msgstr "共有した" #: extras/models/models.py:573 msgid "saved filter" -msgstr "保存済みフィルター" +msgstr "保存済みフィルタ" #: extras/models/models.py:574 msgid "saved filters" -msgstr "保存済みフィルター" +msgstr "保存済みフィルタ" #: extras/models/models.py:592 msgid "Filter parameters must be stored as a dictionary of keyword arguments." -msgstr "フィルターパラメータは、キーワード引数の辞書として保存する必要があります。" +msgstr "フィルタパラメータは、キーワード引数の辞書として保存する必要があります。" #: extras/models/models.py:620 msgid "image height" -msgstr "画像の高さ" +msgstr "画像高さ" #: extras/models/models.py:623 msgid "image width" @@ -7307,16 +7304,16 @@ msgstr "画像幅" #: extras/models/models.py:640 msgid "image attachment" -msgstr "画像添付" +msgstr "添付画像" #: extras/models/models.py:641 msgid "image attachments" -msgstr "画像添付ファイル" +msgstr "添付画像" #: extras/models/models.py:655 #, python-brace-format msgid "Image attachments cannot be assigned to this object type ({type})." -msgstr "このオブジェクトタイプにはイメージ添付ファイルを割り当てることができません ({type})。" +msgstr "このオブジェクトタイプ ({type})には添付画像を割り当てることができません。" #: extras/models/models.py:718 msgid "kind" @@ -7333,7 +7330,7 @@ msgstr "ジャーナルエントリ" #: extras/models/models.py:748 #, python-brace-format msgid "Journaling is not supported for this object type ({type})." -msgstr "このオブジェクトタイプではジャーナリングはサポートされていません ({type})。" +msgstr "このオブジェクトタイプ({type})ではジャーナリングはサポートされていません 。" #: extras/models/models.py:790 msgid "bookmark" @@ -7346,7 +7343,7 @@ msgstr "ブックマーク" #: extras/models/models.py:804 #, python-brace-format msgid "Bookmarks cannot be assigned to this object type ({type})." -msgstr "このオブジェクトタイプにはブックマークを割り当てられません ({type})。" +msgstr "このオブジェクトタイプ ({type})にはブックマークを割り当てられません。" #: extras/models/reports.py:46 msgid "report module" @@ -7382,7 +7379,7 @@ msgstr "キャッシュ値" #: extras/models/search.py:59 msgid "cached values" -msgstr "キャッシュされた値" +msgstr "キャッシュ値" #: extras/models/staging.py:44 msgid "branch" @@ -7390,7 +7387,7 @@ msgstr "ブランチ" #: extras/models/staging.py:45 msgid "branches" -msgstr "枝" +msgstr "ブランチ" #: extras/models/staging.py:97 msgid "staged change" @@ -7398,15 +7395,15 @@ msgstr "段階的変更" #: extras/models/staging.py:98 msgid "staged changes" -msgstr "段階的な変更" +msgstr "段階的変更" #: extras/models/tags.py:40 -msgid "The object type(s) to which this this tag can be applied." +msgid "The object type(s) to which this tag can be applied." msgstr "このタグを適用できるオブジェクトタイプ。" #: extras/models/tags.py:49 msgid "tag" -msgstr "鬼ごっこ" +msgstr "タグ" #: extras/models/tags.py:50 msgid "tags" @@ -7430,7 +7427,7 @@ msgstr "スクリプトデータ" #: extras/scripts.py:375 msgid "Script Execution Parameters" -msgstr "スクリプト実行パラメーター" +msgstr "スクリプト実行パラメータ" #: extras/signals.py:121 #, python-brace-format @@ -7441,7 +7438,7 @@ msgstr "削除は保護ルールによって禁止されています。 {message #: extras/tables/tables.py:143 extras/tables/tables.py:208 #: extras/tables/tables.py:285 msgid "Content Types" -msgstr "コンテンツタイプ" +msgstr "コンテントタイプ" #: extras/tables/tables.py:50 msgid "Visible" @@ -7457,7 +7454,7 @@ msgstr "チョイスセット" #: extras/tables/tables.py:68 msgid "Is Cloneable" -msgstr "クローニング可能" +msgstr "複製可能" #: extras/tables/tables.py:98 msgid "Count" @@ -7469,7 +7466,7 @@ msgstr "アルファベット順に並べる" #: extras/tables/tables.py:125 templates/extras/customlink.html:34 msgid "New Window" -msgstr "[新規ウィンドウ]" +msgstr "新規ウィンドウ" #: extras/tables/tables.py:146 msgid "As Attachment" @@ -7493,11 +7490,11 @@ msgstr "同期済み" #: extras/tables/tables.py:178 msgid "Content Type" -msgstr "コンテンツタイプ" +msgstr "コンテントタイプ" #: extras/tables/tables.py:185 msgid "Image" -msgstr "[イメージ]" +msgstr "画像" #: extras/tables/tables.py:190 msgid "Size (Bytes)" @@ -7537,12 +7534,12 @@ msgstr "コメント (ショート)" #: extras/validators.py:15 #, python-format msgid "Ensure this value is equal to %(limit_value)s." -msgstr "この値が次の値と等しいことを確認してください %(limit_value)s。" +msgstr "%(limit_value)sと等しいことを確認する 。" #: extras/validators.py:26 #, python-format msgid "Ensure this value does not equal %(limit_value)s." -msgstr "この値が等しくないことを確認してください %(limit_value)s。" +msgstr "%(limit_value)sと等しくないことを確認する。" #: extras/validators.py:37 msgid "This field must be empty." @@ -7555,7 +7552,7 @@ msgstr "このフィールドは空であってはなりません。" #: extras/validators.py:121 #, python-brace-format msgid "Invalid attribute \"{name}\" for {model}" -msgstr "属性が無効です」{name}「用 {model}" +msgstr "{model}において{name}属性は無効です" #: extras/views.py:880 msgid "Your dashboard has been reset." @@ -7563,7 +7560,7 @@ msgstr "ダッシュボードがリセットされました。" #: ipam/api/field_serializers.py:17 msgid "Enter a valid IPv4 or IPv6 address with optional mask." -msgstr "オプションのマスクを使用して有効な IPv4 または IPv6 アドレスを入力します。" +msgstr "有効な IPv4 または IPv6 アドレスを入力してください。(サブネットマスクが使用可能)" #: ipam/api/field_serializers.py:24 #, python-brace-format @@ -7594,7 +7591,7 @@ msgstr "DHCP" #: ipam/choices.py:73 msgid "SLAAC" -msgstr "スラーク" +msgstr "SLAAC" #: ipam/choices.py:89 msgid "Loopback" @@ -7668,7 +7665,7 @@ msgstr "プレフィックス" #: ipam/filtersets.py:136 ipam/filtersets.py:175 ipam/filtersets.py:198 msgid "RIR (ID)" -msgstr "リル (アイディー)" +msgstr "RIR (ID)" #: ipam/filtersets.py:142 ipam/filtersets.py:181 ipam/filtersets.py:204 msgid "RIR (slug)" @@ -7700,7 +7697,7 @@ msgid "VLAN number (1-4094)" msgstr "VLAN 番号 (1-4094)" #: ipam/filtersets.py:437 ipam/filtersets.py:441 ipam/filtersets.py:533 -#: ipam/forms/model_forms.py:444 templates/tenancy/contact.html:54 +#: ipam/forms/model_forms.py:430 templates/tenancy/contact.html:54 #: tenancy/forms/bulk_edit.py:112 msgid "Address" msgstr "住所" @@ -7817,7 +7814,7 @@ msgstr "非公開です" #: templates/ipam/aggregate.html:19 templates/ipam/asn.html:28 #: templates/ipam/asnrange.html:20 templates/ipam/rir.html:20 msgid "RIR" -msgstr "リル" +msgstr "RIR" #: ipam/forms/bulk_edit.py:168 msgid "Date added" @@ -7869,7 +7866,7 @@ msgid "Authentication key" msgstr "認証キー" #: ipam/forms/bulk_edit.py:404 ipam/forms/filtersets.py:369 -#: ipam/forms/model_forms.py:455 netbox/navigation/menu.py:376 +#: ipam/forms/model_forms.py:441 netbox/navigation/menu.py:376 #: templates/ipam/fhrpgroup.html:51 #: templates/wireless/inc/authentication_attrs.html:5 #: wireless/forms/bulk_edit.py:90 wireless/forms/bulk_edit.py:137 @@ -7886,11 +7883,11 @@ msgstr "子 VLAN VID の最小値" msgid "Maximum child VLAN VID" msgstr "子 VLAN VID の最大数" -#: ipam/forms/bulk_edit.py:428 ipam/forms/model_forms.py:527 +#: ipam/forms/bulk_edit.py:428 ipam/forms/model_forms.py:531 msgid "Scope type" msgstr "スコープタイプ" -#: ipam/forms/bulk_edit.py:489 ipam/forms/model_forms.py:600 +#: ipam/forms/bulk_edit.py:489 ipam/forms/model_forms.py:604 #: ipam/tables/vlans.py:71 templates/ipam/vlangroup.html:39 msgid "Scope" msgstr "スコープ" @@ -7899,8 +7896,8 @@ msgstr "スコープ" msgid "Site & Group" msgstr "サイトとグループ" -#: ipam/forms/bulk_edit.py:574 ipam/forms/model_forms.py:663 -#: ipam/forms/model_forms.py:697 ipam/tables/services.py:19 +#: ipam/forms/bulk_edit.py:574 ipam/forms/model_forms.py:667 +#: ipam/forms/model_forms.py:701 ipam/tables/services.py:19 #: ipam/tables/services.py:49 templates/ipam/service.html:39 #: templates/ipam/servicetemplate.html:24 msgid "Ports" @@ -7940,7 +7937,7 @@ msgid "Parent device of assigned interface (if any)" msgstr "割当インタフェースの親デバイス (存在する場合)" #: ipam/forms/bulk_import.py:310 ipam/forms/bulk_import.py:496 -#: ipam/forms/model_forms.py:691 virtualization/filtersets.py:284 +#: ipam/forms/model_forms.py:695 virtualization/filtersets.py:284 #: virtualization/filtersets.py:323 virtualization/forms/bulk_edit.py:199 #: virtualization/forms/bulk_edit.py:325 #: virtualization/forms/bulk_import.py:146 @@ -8115,8 +8112,8 @@ msgstr "ポート" #: virtualization/forms/filtersets.py:189 #: virtualization/forms/filtersets.py:234 #: virtualization/forms/model_forms.py:223 -#: virtualization/tables/virtualmachines.py:115 -#: virtualization/tables/virtualmachines.py:168 vpn/choices.py:45 +#: virtualization/tables/virtualmachines.py:128 +#: virtualization/tables/virtualmachines.py:181 vpn/choices.py:45 #: vpn/forms/filtersets.py:289 vpn/forms/model_forms.py:161 #: vpn/forms/model_forms.py:172 vpn/forms/model_forms.py:274 msgid "Virtual Machine" @@ -8139,7 +8136,7 @@ msgstr "サイト/VLAN 割り当て" msgid "IP Range" msgstr "IP アドレス範囲" -#: ipam/forms/model_forms.py:285 ipam/forms/model_forms.py:454 +#: ipam/forms/model_forms.py:285 ipam/forms/model_forms.py:440 #: templates/ipam/fhrpgroup.html:19 templates/ipam/ipaddress_edit.html:52 msgid "FHRP Group" msgstr "FHRP グループ" @@ -8152,7 +8149,7 @@ msgstr "これをデバイス/仮想マシンのプライマリIPにする" msgid "An IP address can only be assigned to a single object." msgstr "IP アドレスは 1 つのオブジェクトにのみ割り当てることができます。" -#: ipam/forms/model_forms.py:357 ipam/models/ip.py:877 +#: ipam/forms/model_forms.py:357 ipam/models/ip.py:896 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" @@ -8163,46 +8160,39 @@ msgid "" "Only IP addresses assigned to an interface can be designated as primary IPs." msgstr "プライマリ IP として指定できるのは、インタフェースに割当 IP アドレスのみです。" -#: ipam/forms/model_forms.py:373 -#, python-brace-format -msgid "{ip} is a network ID, which may not be assigned to an interface." -msgstr "{ip} はネットワーク ID で、インタフェースに割り当てることはできません。" - -#: ipam/forms/model_forms.py:379 -#, python-brace-format -msgid "" -"{ip} is a broadcast address, which may not be assigned to an interface." -msgstr "{ip} はブロードキャストアドレスで、インタフェースに割り当てることはできません。" - -#: ipam/forms/model_forms.py:456 +#: ipam/forms/model_forms.py:442 msgid "Virtual IP Address" msgstr "仮想 IP アドレス" -#: ipam/forms/model_forms.py:598 ipam/forms/model_forms.py:637 +#: ipam/forms/model_forms.py:523 +msgid "Assignment already exists" +msgstr "アサインメントは既に存在します" + +#: ipam/forms/model_forms.py:602 ipam/forms/model_forms.py:641 #: ipam/tables/ip.py:250 templates/ipam/vlan_edit.html:37 #: templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "VLAN グループ" -#: ipam/forms/model_forms.py:599 +#: ipam/forms/model_forms.py:603 msgid "Child VLANs" msgstr "子 VLAN" -#: ipam/forms/model_forms.py:668 ipam/forms/model_forms.py:702 +#: ipam/forms/model_forms.py:672 ipam/forms/model_forms.py:706 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." msgstr "1 つ以上のポート番号をカンマで区切ったリスト。範囲はハイフンを使用して指定できます。" -#: ipam/forms/model_forms.py:673 templates/ipam/servicetemplate.html:12 +#: ipam/forms/model_forms.py:677 templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "サービステンプレート" -#: ipam/forms/model_forms.py:724 +#: ipam/forms/model_forms.py:728 msgid "Service template" msgstr "サービステンプレート" -#: ipam/forms/model_forms.py:754 +#: ipam/forms/model_forms.py:758 msgid "" "Must specify name, protocol, and port(s) if not using a service template." msgstr "サービステンプレートを使用しない場合は、名前、プロトコル、およびポートを指定する必要があります。" @@ -8362,12 +8352,12 @@ msgstr "プレフィックス" msgid "Cannot create prefix with /0 mask." msgstr "/0 マスクではプレフィックスを作成できません。" -#: ipam/models/ip.py:323 ipam/models/ip.py:854 +#: ipam/models/ip.py:323 ipam/models/ip.py:873 #, python-brace-format msgid "VRF {vrf}" msgstr "VRF {vrf}" -#: ipam/models/ip.py:323 ipam/models/ip.py:854 +#: ipam/models/ip.py:323 ipam/models/ip.py:873 msgid "global table" msgstr "グローバルテーブル" @@ -8460,12 +8450,23 @@ msgstr "IP アドレス" msgid "Cannot create IP address with /0 mask." msgstr "/0 マスクで IP アドレスを作成することはできません。" -#: ipam/models/ip.py:856 +#: ipam/models/ip.py:850 +#, python-brace-format +msgid "{ip} is a network ID, which may not be assigned to an interface." +msgstr "{ip} はネットワーク ID で、インタフェースに割り当てることはできません。" + +#: ipam/models/ip.py:861 +#, python-brace-format +msgid "" +"{ip} is a broadcast address, which may not be assigned to an interface." +msgstr "{ip} はブロードキャストアドレスで、インタフェースに割り当てることはできません。" + +#: ipam/models/ip.py:875 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "重複した IP アドレスが見つかりました {table}: {ipaddress}" -#: ipam/models/ip.py:883 +#: ipam/models/ip.py:902 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "SLAAC ステータスを割り当てることができるのは IPv6 アドレスのみです" @@ -9224,7 +9225,7 @@ msgstr "[仮想マシン]" #: templates/virtualization/virtualmachine.html:177 #: templates/virtualization/virtualmachine/base.html:32 #: templates/virtualization/virtualmachine_list.html:21 -#: virtualization/tables/virtualmachines.py:90 virtualization/views.py:389 +#: virtualization/tables/virtualmachines.py:103 virtualization/views.py:389 msgid "Virtual Disks" msgstr "仮想ディスク" @@ -10140,8 +10141,8 @@ msgstr "スケジューリング" #: templates/core/job.html:66 #, python-format -msgid "every %(interval)s seconds" -msgstr "ごと %(interval)s 秒" +msgid "every %(interval)s minutes" +msgstr "ごと %(interval)s 分" #: templates/dcim/bulk_disconnect.html:9 #, python-format @@ -12651,65 +12652,65 @@ msgstr "このオブジェクトタイプでは制約はサポートされてい msgid "Invalid filter for {model}: {error}" msgstr "のフィルタが無効です {model}: {error}" -#: users/models.py:54 +#: users/models.py:55 msgid "user" msgstr "ユーザ" -#: users/models.py:55 +#: users/models.py:56 msgid "users" msgstr "ユーザ" -#: users/models.py:66 +#: users/models.py:67 msgid "A user with this username already exists." msgstr "このユーザ名のユーザはすでに存在します。" -#: users/models.py:78 vpn/models/crypto.py:42 +#: users/models.py:79 vpn/models/crypto.py:42 msgid "group" msgstr "グループ" -#: users/models.py:79 +#: users/models.py:80 msgid "groups" msgstr "グループ" -#: users/models.py:106 users/models.py:107 +#: users/models.py:107 users/models.py:108 msgid "user preferences" msgstr "ユーザプリファレンス" -#: users/models.py:174 +#: users/models.py:175 #, python-brace-format msgid "Key '{path}' is a leaf node; cannot assign new keys" msgstr "キー '{path}'はリーフノードです。新しいキーを割り当てることはできません" -#: users/models.py:186 +#: users/models.py:187 #, python-brace-format msgid "Key '{path}' is a dictionary; cannot assign a non-dictionary value" msgstr "キー '{path}'はディクショナリです。ディクショナリ以外の値は割り当てられません" -#: users/models.py:252 +#: users/models.py:253 msgid "expires" msgstr "期限切れ" -#: users/models.py:257 +#: users/models.py:258 msgid "last used" msgstr "最終使用日" -#: users/models.py:262 +#: users/models.py:263 msgid "key" msgstr "キー" -#: users/models.py:268 +#: users/models.py:269 msgid "write enabled" msgstr "書き込み有効" -#: users/models.py:270 +#: users/models.py:271 msgid "Permit create/update/delete operations using this key" msgstr "このキーを使用して作成/更新/削除操作を許可する" -#: users/models.py:281 +#: users/models.py:282 msgid "allowed IPs" msgstr "許可された IP" -#: users/models.py:283 +#: users/models.py:284 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\"" @@ -12718,32 +12719,32 @@ msgstr "" "ネットワーク。制限がない場合は空白のままにしてください。例:10.1.1.0/24、192.168.10.16/32、2001: DB 8:1:: " "/64\"" -#: users/models.py:291 +#: users/models.py:296 msgid "token" msgstr "トークン" -#: users/models.py:292 +#: users/models.py:297 msgid "tokens" msgstr "トークン" -#: users/models.py:373 +#: users/models.py:378 msgid "The list of actions granted by this permission" msgstr "この権限によって付与されたアクションのリスト" -#: users/models.py:378 +#: users/models.py:383 msgid "constraints" msgstr "制約" -#: users/models.py:379 +#: users/models.py:384 msgid "" "Queryset filter matching the applicable objects of the selected type(s)" msgstr "選択したタイプの該当するオブジェクトに一致するクエリーセットフィルタ" -#: users/models.py:386 +#: users/models.py:391 msgid "permission" msgstr "許可" -#: users/models.py:387 +#: users/models.py:392 msgid "permissions" msgstr "許可" @@ -13000,43 +13001,50 @@ msgid "" "the object's change log for details." msgstr "このオブジェクトは、フォームがレンダリングされてから変更されました。詳細については、オブジェクトの変更ログを参照してください。" -#: utilities/forms/utils.py:42 utilities/forms/utils.py:65 -#: utilities/forms/utils.py:77 utilities/forms/utils.py:80 +#: utilities/forms/utils.py:42 utilities/forms/utils.py:68 +#: utilities/forms/utils.py:85 utilities/forms/utils.py:87 #, python-brace-format msgid "Range \"{value}\" is invalid." msgstr "レンジ」{value}「は無効です。" -#: utilities/forms/utils.py:225 +#: utilities/forms/utils.py:74 +#, python-brace-format +msgid "" +"Invalid range: Ending value ({end}) must be greater than beginning value " +"({begin})." +msgstr "範囲が無効です:終了値 ({end}) は開始値 () より大きくなければなりません{begin})。" + +#: utilities/forms/utils.py:232 #, python-brace-format msgid "Duplicate or conflicting column header for \"{field}\"" msgstr "「」の列ヘッダーが重複しているか、重複しています{field}」" -#: utilities/forms/utils.py:231 +#: utilities/forms/utils.py:238 #, python-brace-format msgid "Duplicate or conflicting column header for \"{header}\"" msgstr "「」の列ヘッダーが重複しているか、重複しています{header}」" -#: utilities/forms/utils.py:240 +#: utilities/forms/utils.py:247 #, python-brace-format msgid "Row {row}: Expected {count_expected} columns but found {count_found}" msgstr "行 {row}: 期待 {count_expected} 列が見つかりましたが {count_found}" -#: utilities/forms/utils.py:263 +#: utilities/forms/utils.py:270 #, python-brace-format msgid "Unexpected column header \"{field}\" found." msgstr "予期しない列ヘッダー」{field}「が見つかりました。" -#: utilities/forms/utils.py:265 +#: utilities/forms/utils.py:272 #, python-brace-format msgid "Column \"{field}\" is not a related object; cannot use dots" msgstr "コラム」{field}\"は関連オブジェクトではありません。ドットは使用できません" -#: utilities/forms/utils.py:269 +#: utilities/forms/utils.py:276 #, python-brace-format msgid "Invalid related object attribute for column \"{field}\": {to_field}" msgstr "列 \"の関連オブジェクト属性が無効です{field}「: {to_field}" -#: utilities/forms/utils.py:277 +#: utilities/forms/utils.py:284 #, python-brace-format msgid "Required column header \"{header}\" not found." msgstr "必須の列ヘッダー」{header}「が見つかりません。" @@ -13648,6 +13656,11 @@ msgstr "提案" msgid "Assigned Object Type" msgstr "割当オブジェクトタイプ" +#: vpn/forms/model_forms.py:94 vpn/forms/model_forms.py:129 +#: vpn/forms/model_forms.py:241 vpn/tables/tunnels.py:91 +msgid "Tunnel interface" +msgstr "トンネルインターフェイス" + #: vpn/forms/model_forms.py:147 msgid "First Termination" msgstr "1 回目の解約" diff --git a/netbox/translations/pt/LC_MESSAGES/django.mo b/netbox/translations/pt/LC_MESSAGES/django.mo index 04bb568977f28a30425777b14a7f8ccb5b9fc289..ad8ae9463a7dbf74f9069e239f70816f0d2865f7 100644 GIT binary patch delta 61632 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

    yTv&!G+*gTmPWoSj4M?+3@{Ad^`LyR`3CH*;N`X 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 delta 61363 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 " @@ -4771,7 +4767,7 @@ msgstr "" "href=\"{url}\">{racked_instance_count} instâncias já montado dentro de " "racks." -#: dcim/models/devices.py:330 +#: dcim/models/devices.py:331 msgid "" "Must delete all device bay templates associated with this device before " "declassifying it as a parent device." @@ -4780,151 +4776,151 @@ msgstr "" "associados a esse dispositivo antes de desclassificá-lo como dispositivo " "principal." -#: dcim/models/devices.py:336 +#: dcim/models/devices.py:337 msgid "Child device types must be 0U." msgstr "Os tipos de dispositivos infantis devem ser 0U." -#: dcim/models/devices.py:404 +#: dcim/models/devices.py:405 msgid "module type" msgstr "tipo de módulo" -#: dcim/models/devices.py:405 +#: dcim/models/devices.py:406 msgid "module types" msgstr "tipos de módulo" -#: dcim/models/devices.py:473 +#: dcim/models/devices.py:475 msgid "Virtual machines may be assigned to this role" msgstr "Máquinas virtuais podem ser atribuídas a essa função" -#: dcim/models/devices.py:485 +#: dcim/models/devices.py:487 msgid "device role" msgstr "função do dispositivo" -#: dcim/models/devices.py:486 +#: dcim/models/devices.py:488 msgid "device roles" msgstr "funções do dispositivo" -#: dcim/models/devices.py:503 +#: dcim/models/devices.py:505 msgid "Optionally limit this platform to devices of a certain manufacturer" msgstr "" "Opcionalmente, limite essa plataforma a dispositivos de um determinado " "fabricante" -#: dcim/models/devices.py:515 +#: dcim/models/devices.py:517 msgid "platform" msgstr "plataforma" -#: dcim/models/devices.py:516 +#: dcim/models/devices.py:518 msgid "platforms" msgstr "plataformas" -#: dcim/models/devices.py:564 +#: dcim/models/devices.py:566 msgid "The function this device serves" msgstr "A função que este dispositivo serve" -#: dcim/models/devices.py:596 +#: dcim/models/devices.py:598 msgid "Chassis serial number, assigned by the manufacturer" msgstr "Número de série do chassi, atribuído pelo fabricante" -#: dcim/models/devices.py:604 dcim/models/devices.py:1181 +#: dcim/models/devices.py:606 dcim/models/devices.py:1186 msgid "A unique tag used to identify this device" msgstr "Uma tag exclusiva usada para identificar esse dispositivo" -#: dcim/models/devices.py:631 +#: dcim/models/devices.py:633 msgid "position (U)" msgstr "posição (U)" -#: dcim/models/devices.py:638 +#: dcim/models/devices.py:640 msgid "rack face" msgstr "face de cremalheira" -#: dcim/models/devices.py:658 dcim/models/devices.py:1390 +#: dcim/models/devices.py:660 dcim/models/devices.py:1395 #: virtualization/models/virtualmachines.py:98 msgid "primary IPv4" msgstr "IPv4 primário" -#: dcim/models/devices.py:666 dcim/models/devices.py:1398 +#: dcim/models/devices.py:668 dcim/models/devices.py:1403 #: virtualization/models/virtualmachines.py:106 msgid "primary IPv6" msgstr "IPv6 primário" -#: dcim/models/devices.py:674 +#: dcim/models/devices.py:676 msgid "out-of-band IP" msgstr "IP fora de banda" -#: dcim/models/devices.py:691 +#: dcim/models/devices.py:693 msgid "VC position" msgstr "Posição VC" -#: dcim/models/devices.py:695 +#: dcim/models/devices.py:697 msgid "Virtual chassis position" msgstr "Posição do chassi virtual" -#: dcim/models/devices.py:698 +#: dcim/models/devices.py:700 msgid "VC priority" msgstr "Prioridade VC" -#: dcim/models/devices.py:702 +#: dcim/models/devices.py:704 msgid "Virtual chassis master election priority" msgstr "Prioridade de eleição do mestre do chassi virtual" -#: dcim/models/devices.py:705 dcim/models/sites.py:207 +#: dcim/models/devices.py:707 dcim/models/sites.py:207 msgid "latitude" msgstr "latitude" -#: dcim/models/devices.py:710 dcim/models/devices.py:718 +#: dcim/models/devices.py:712 dcim/models/devices.py:720 #: dcim/models/sites.py:212 dcim/models/sites.py:220 msgid "GPS coordinate in decimal format (xx.yyyyyy)" msgstr "Coordenada GPS em formato decimal (xx.yyyyyy)" -#: dcim/models/devices.py:713 dcim/models/sites.py:215 +#: dcim/models/devices.py:715 dcim/models/sites.py:215 msgid "longitude" msgstr "longitude" -#: dcim/models/devices.py:786 +#: dcim/models/devices.py:788 msgid "Device name must be unique per site." msgstr "O nome do dispositivo deve ser exclusivo por site." -#: dcim/models/devices.py:797 ipam/models/services.py:75 +#: dcim/models/devices.py:799 ipam/models/services.py:75 msgid "device" msgstr "dispositivo" -#: dcim/models/devices.py:798 +#: dcim/models/devices.py:800 msgid "devices" msgstr "dispositivos" -#: dcim/models/devices.py:838 +#: dcim/models/devices.py:840 #, python-brace-format msgid "Rack {rack} does not belong to site {site}." msgstr "Rack {rack} não pertence ao site {site}." -#: dcim/models/devices.py:843 +#: dcim/models/devices.py:845 #, python-brace-format msgid "Location {location} does not belong to site {site}." msgstr "Localização {location} não pertence ao site {site}." -#: dcim/models/devices.py:849 +#: dcim/models/devices.py:851 #, python-brace-format msgid "Rack {rack} does not belong to location {location}." msgstr "Rack {rack} não pertence à localização {location}." -#: dcim/models/devices.py:856 +#: dcim/models/devices.py:858 msgid "Cannot select a rack face without assigning a rack." msgstr "Não é possível selecionar uma face de rack sem atribuir um rack." -#: dcim/models/devices.py:860 +#: dcim/models/devices.py:862 msgid "Cannot select a rack position without assigning a rack." msgstr "Não é possível selecionar uma posição de rack sem atribuir um rack." -#: dcim/models/devices.py:866 +#: dcim/models/devices.py:868 msgid "Position must be in increments of 0.5 rack units." msgstr "A posição deve estar em incrementos de 0,5 unidades de rack." -#: dcim/models/devices.py:870 +#: dcim/models/devices.py:872 msgid "Must specify rack face when defining rack position." msgstr "Deve especificar a face do rack ao definir a posição do rack." -#: dcim/models/devices.py:878 +#: dcim/models/devices.py:880 #, python-brace-format msgid "" "A 0U device type ({device_type}) cannot be assigned to a rack position." @@ -4932,7 +4928,7 @@ msgstr "" "Um tipo de dispositivo 0U ({device_type}) não pode ser atribuído a uma " "posição de rack." -#: dcim/models/devices.py:889 +#: dcim/models/devices.py:891 msgid "" "Child device types cannot be assigned to a rack face. This is an attribute " "of the parent device." @@ -4940,7 +4936,7 @@ msgstr "" "Os tipos de dispositivos secundários não podem ser atribuídos a uma face de " "rack. Esse é um atributo do dispositivo principal." -#: dcim/models/devices.py:896 +#: dcim/models/devices.py:898 msgid "" "Child device types cannot be assigned to a rack position. This is an " "attribute of the parent device." @@ -4948,7 +4944,7 @@ msgstr "" "Os tipos de dispositivos infantis não podem ser atribuídos a uma posição de " "rack. Esse é um atributo do dispositivo principal." -#: dcim/models/devices.py:910 +#: dcim/models/devices.py:912 #, python-brace-format msgid "" "U{position} is already occupied or does not have sufficient space to " @@ -4957,23 +4953,23 @@ msgstr "" "U{position} já está ocupado ou não tem espaço suficiente para acomodar este " "tipo de dispositivo: {device_type} ({u_height}U)" -#: dcim/models/devices.py:925 +#: dcim/models/devices.py:927 #, python-brace-format msgid "{ip} is not an IPv4 address." msgstr "{ip} não é um endereço IPv4." -#: dcim/models/devices.py:934 dcim/models/devices.py:949 +#: dcim/models/devices.py:936 dcim/models/devices.py:951 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this device." msgstr "" "O endereço IP especificado ({ip}) não está atribuído a este dispositivo." -#: dcim/models/devices.py:940 +#: dcim/models/devices.py:942 #, python-brace-format msgid "{ip} is not an IPv6 address." msgstr "{ip} não é um endereço IPv6." -#: dcim/models/devices.py:967 +#: dcim/models/devices.py:969 #, python-brace-format msgid "" "The assigned platform is limited to {platform_manufacturer} device types, " @@ -4983,25 +4979,25 @@ msgstr "" "dispositivo, mas o tipo desse dispositivo pertence a " "{devicetype_manufacturer}." -#: dcim/models/devices.py:978 +#: dcim/models/devices.py:980 #, python-brace-format msgid "The assigned cluster belongs to a different site ({site})" msgstr "O cluster atribuído pertence a um site diferente ({site})" -#: dcim/models/devices.py:986 +#: dcim/models/devices.py:988 msgid "A device assigned to a virtual chassis must have its position defined." msgstr "" "Um dispositivo atribuído a um chassi virtual deve ter sua posição definida." -#: dcim/models/devices.py:1188 +#: dcim/models/devices.py:1193 msgid "module" msgstr "módulo" -#: dcim/models/devices.py:1189 +#: dcim/models/devices.py:1194 msgid "modules" msgstr "módulos" -#: dcim/models/devices.py:1205 +#: dcim/models/devices.py:1210 #, python-brace-format msgid "" "Module must be installed within a module bay belonging to the assigned " @@ -5010,22 +5006,22 @@ msgstr "" "O módulo deve ser instalado dentro de um compartimento de módulo pertencente" " ao dispositivo atribuído ({device})." -#: dcim/models/devices.py:1309 +#: dcim/models/devices.py:1314 msgid "domain" msgstr "dominar" -#: dcim/models/devices.py:1322 dcim/models/devices.py:1323 +#: dcim/models/devices.py:1327 dcim/models/devices.py:1328 msgid "virtual chassis" msgstr "chassi virtual" -#: dcim/models/devices.py:1338 +#: dcim/models/devices.py:1343 #, python-brace-format msgid "" "The selected master ({master}) is not assigned to this virtual chassis." msgstr "" "O mestre selecionado ({master}) não está atribuído a esse chassi virtual." -#: dcim/models/devices.py:1354 +#: dcim/models/devices.py:1359 #, python-brace-format msgid "" "Unable to delete virtual chassis {self}. There are member interfaces which " @@ -5034,33 +5030,33 @@ msgstr "" "Não é possível excluir o chassi virtual {self}. Existem interfaces de " "membros que formam interfaces LAG entre chassis." -#: dcim/models/devices.py:1379 vpn/models/l2vpn.py:37 +#: dcim/models/devices.py:1384 vpn/models/l2vpn.py:37 msgid "identifier" msgstr "identificador" -#: dcim/models/devices.py:1380 +#: dcim/models/devices.py:1385 msgid "Numeric identifier unique to the parent device" msgstr "Identificador numérico exclusivo para o dispositivo principal" -#: dcim/models/devices.py:1408 extras/models/models.py:129 +#: dcim/models/devices.py:1413 extras/models/models.py:129 #: extras/models/models.py:724 netbox/models/__init__.py:114 msgid "comments" msgstr "comentários" -#: dcim/models/devices.py:1424 +#: dcim/models/devices.py:1429 msgid "virtual device context" msgstr "contexto de dispositivo virtual" -#: dcim/models/devices.py:1425 +#: dcim/models/devices.py:1430 msgid "virtual device contexts" msgstr "contextos de dispositivos virtuais" -#: dcim/models/devices.py:1457 +#: dcim/models/devices.py:1462 #, python-brace-format msgid "{ip} is not an IPv{family} address." msgstr "{ip} não é um IPv{family} endereço." -#: dcim/models/devices.py:1463 +#: dcim/models/devices.py:1468 msgid "Primary IP address must belong to an interface on the assigned device." msgstr "" "O endereço IP principal deve pertencer a uma interface no dispositivo " @@ -5447,7 +5443,7 @@ msgstr "Porta de console" msgid "Reachable" msgstr "Acessível" -#: dcim/tables/connections.py:46 dcim/tables/devices.py:529 +#: dcim/tables/connections.py:46 dcim/tables/devices.py:533 #: templates/dcim/inventoryitem_edit.html:64 #: templates/dcim/poweroutlet.html:47 templates/dcim/powerport.html:18 msgid "Power Port" @@ -5466,7 +5462,7 @@ msgstr "Dispositivos" msgid "VMs" msgstr "VMs" -#: dcim/tables/devices.py:133 dcim/tables/devices.py:245 +#: dcim/tables/devices.py:133 dcim/tables/devices.py:249 #: extras/forms/model_forms.py:515 templates/dcim/device.html:114 #: templates/dcim/device/render_config.html:11 #: templates/dcim/device/render_config.html:15 @@ -5475,62 +5471,62 @@ msgstr "VMs" #: templates/virtualization/virtualmachine.html:47 #: templates/virtualization/virtualmachine/render_config.html:11 #: templates/virtualization/virtualmachine/render_config.html:15 -#: virtualization/tables/virtualmachines.py:93 +#: virtualization/tables/virtualmachines.py:106 msgid "Config Template" msgstr "Modelo de configuração" -#: dcim/tables/devices.py:216 dcim/tables/devices.py:1074 +#: dcim/tables/devices.py:220 dcim/tables/devices.py:1078 #: ipam/forms/bulk_import.py:511 ipam/forms/model_forms.py:296 #: 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:81 +#: virtualization/tables/virtualmachines.py:94 msgid "IP Address" msgstr "Endereço IP" -#: dcim/tables/devices.py:220 dcim/tables/devices.py:1078 -#: virtualization/tables/virtualmachines.py:72 +#: dcim/tables/devices.py:224 dcim/tables/devices.py:1082 +#: virtualization/tables/virtualmachines.py:85 msgid "IPv4 Address" msgstr "Endereço IPv4" -#: dcim/tables/devices.py:224 dcim/tables/devices.py:1082 -#: virtualization/tables/virtualmachines.py:76 +#: dcim/tables/devices.py:228 dcim/tables/devices.py:1086 +#: virtualization/tables/virtualmachines.py:89 msgid "IPv6 Address" msgstr "Endereço IPv6" -#: dcim/tables/devices.py:239 +#: dcim/tables/devices.py:243 msgid "VC Position" msgstr "Posição VC" -#: dcim/tables/devices.py:242 +#: dcim/tables/devices.py:246 msgid "VC Priority" msgstr "Prioridade VC" -#: dcim/tables/devices.py:249 templates/dcim/device_edit.html:38 +#: dcim/tables/devices.py:253 templates/dcim/device_edit.html:38 #: templates/dcim/devicebay_populate.html:16 msgid "Parent Device" msgstr "Dispositivo principal" -#: dcim/tables/devices.py:254 +#: dcim/tables/devices.py:258 msgid "Position (Device Bay)" msgstr "Posição (compartimento do dispositivo)" -#: dcim/tables/devices.py:263 +#: dcim/tables/devices.py:267 msgid "Console ports" msgstr "Portas de console" -#: dcim/tables/devices.py:266 +#: dcim/tables/devices.py:270 msgid "Console server ports" msgstr "Portas do servidor de console" -#: dcim/tables/devices.py:269 +#: dcim/tables/devices.py:273 msgid "Power ports" msgstr "Portas de alimentação" -#: dcim/tables/devices.py:272 +#: dcim/tables/devices.py:276 msgid "Power outlets" msgstr "Tomadas elétricas" -#: dcim/tables/devices.py:275 dcim/tables/devices.py:1087 +#: dcim/tables/devices.py:279 dcim/tables/devices.py:1091 #: dcim/tables/devicetypes.py:125 dcim/views.py:1005 dcim/views.py:1244 #: dcim/views.py:1930 netbox/navigation/menu.py:82 #: netbox/navigation/menu.py:238 templates/dcim/device/base.html:37 @@ -5540,53 +5536,53 @@ msgstr "Tomadas elétricas" #: templates/dcim/virtualdevicecontext.html:85 #: templates/virtualization/virtualmachine/base.html:27 #: templates/virtualization/virtualmachine_list.html:14 -#: virtualization/tables/virtualmachines.py:87 virtualization/views.py:368 +#: virtualization/tables/virtualmachines.py:100 virtualization/views.py:368 #: wireless/tables/wirelesslan.py:55 msgid "Interfaces" msgstr "Interfaces" -#: dcim/tables/devices.py:278 +#: dcim/tables/devices.py:282 msgid "Front ports" msgstr "Portas frontais" -#: dcim/tables/devices.py:284 +#: dcim/tables/devices.py:288 msgid "Device bays" msgstr "Compartimentos para dispositivos" -#: dcim/tables/devices.py:287 +#: dcim/tables/devices.py:291 msgid "Module bays" msgstr "Compartimentos de módulos" -#: dcim/tables/devices.py:290 +#: dcim/tables/devices.py:294 msgid "Inventory items" msgstr "Itens de inventário" -#: dcim/tables/devices.py:329 dcim/tables/modules.py:56 +#: dcim/tables/devices.py:333 dcim/tables/modules.py:56 #: templates/dcim/modulebay.html:17 msgid "Module Bay" msgstr "Compartimento do módulo" -#: dcim/tables/devices.py:350 +#: dcim/tables/devices.py:354 msgid "Cable Color" msgstr "Cor do cabo" -#: dcim/tables/devices.py:356 +#: dcim/tables/devices.py:360 msgid "Link Peers" msgstr "Vincular pares" -#: dcim/tables/devices.py:359 +#: dcim/tables/devices.py:363 msgid "Mark Connected" msgstr "Marcar Conectado" -#: dcim/tables/devices.py:475 +#: dcim/tables/devices.py:479 msgid "Maximum draw (W)" msgstr "Consumo máximo (W)" -#: dcim/tables/devices.py:478 +#: dcim/tables/devices.py:482 msgid "Allocated draw (W)" msgstr "Sorteio alocado (W)" -#: dcim/tables/devices.py:578 ipam/forms/model_forms.py:707 +#: dcim/tables/devices.py:582 ipam/forms/model_forms.py:711 #: ipam/tables/fhrp.py:28 ipam/views.py:597 ipam/views.py:691 #: netbox/navigation/menu.py:146 netbox/navigation/menu.py:148 #: templates/dcim/interface.html:351 templates/ipam/ipaddress_bulk_add.html:15 @@ -5595,12 +5591,12 @@ msgstr "Sorteio alocado (W)" msgid "IP Addresses" msgstr "Endereços IP" -#: dcim/tables/devices.py:584 netbox/navigation/menu.py:190 +#: dcim/tables/devices.py:588 netbox/navigation/menu.py:190 #: templates/ipam/inc/panels/fhrp_groups.html:5 msgid "FHRP Groups" msgstr "Grupos FHRP" -#: dcim/tables/devices.py:596 templates/dcim/interface.html:90 +#: dcim/tables/devices.py:600 templates/dcim/interface.html:90 #: templates/virtualization/vminterface.html:70 templates/vpn/tunnel.html:18 #: templates/vpn/tunneltermination.html:14 vpn/forms/bulk_edit.py:75 #: vpn/forms/bulk_import.py:76 vpn/forms/filtersets.py:41 @@ -5609,20 +5605,20 @@ msgstr "Grupos FHRP" msgid "Tunnel" msgstr "Túnel" -#: dcim/tables/devices.py:621 dcim/tables/devicetypes.py:224 +#: dcim/tables/devices.py:625 dcim/tables/devicetypes.py:224 #: templates/dcim/interface.html:66 msgid "Management Only" msgstr "Somente gerenciamento" -#: dcim/tables/devices.py:629 +#: dcim/tables/devices.py:633 msgid "Wireless link" msgstr "Link sem fio" -#: dcim/tables/devices.py:639 +#: dcim/tables/devices.py:643 msgid "VDCs" msgstr "VDCs" -#: dcim/tables/devices.py:647 dcim/tables/devicetypes.py:48 +#: dcim/tables/devices.py:651 dcim/tables/devicetypes.py:48 #: dcim/tables/devicetypes.py:140 dcim/views.py:1080 dcim/views.py:2023 #: netbox/navigation/menu.py:91 templates/dcim/device/base.html:52 #: templates/dcim/device_list.html:71 templates/dcim/devicetype/base.html:49 @@ -5631,7 +5627,7 @@ msgstr "VDCs" msgid "Inventory Items" msgstr "Itens de inventário" -#: dcim/tables/devices.py:728 +#: dcim/tables/devices.py:732 #: 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 @@ -5640,28 +5636,28 @@ msgstr "Itens de inventário" msgid "Rear Port" msgstr "Porta traseira" -#: dcim/tables/devices.py:893 templates/dcim/modulebay.html:51 +#: dcim/tables/devices.py:897 templates/dcim/modulebay.html:51 msgid "Installed Module" msgstr "Módulo instalado" -#: dcim/tables/devices.py:896 +#: dcim/tables/devices.py:900 msgid "Module Serial" msgstr "Módulo serial" -#: dcim/tables/devices.py:900 +#: dcim/tables/devices.py:904 msgid "Module Asset Tag" msgstr "Etiqueta de ativo do módulo" -#: dcim/tables/devices.py:909 +#: dcim/tables/devices.py:913 msgid "Module Status" msgstr "Status do módulo" -#: dcim/tables/devices.py:951 dcim/tables/devicetypes.py:308 +#: dcim/tables/devices.py:955 dcim/tables/devicetypes.py:308 #: templates/dcim/inventoryitem.html:41 msgid "Component" msgstr "Parte" -#: dcim/tables/devices.py:1006 +#: dcim/tables/devices.py:1010 msgid "Items" msgstr "Itens" @@ -6229,7 +6225,7 @@ msgid "Cluster type (slug)" msgstr "Tipo de cluster (slug)" #: extras/filtersets.py:490 ipam/forms/bulk_edit.py:475 -#: ipam/forms/model_forms.py:585 virtualization/forms/filtersets.py:108 +#: ipam/forms/model_forms.py:589 virtualization/forms/filtersets.py:108 msgid "Cluster group" msgstr "Grupo de clusters" @@ -6360,8 +6356,8 @@ msgid "Is active" msgstr "Está ativo" #: extras/forms/bulk_import.py:34 extras/forms/bulk_import.py:115 -#: extras/forms/bulk_import.py:130 extras/forms/bulk_import.py:153 -#: extras/forms/bulk_import.py:177 extras/forms/filtersets.py:114 +#: extras/forms/bulk_import.py:136 extras/forms/bulk_import.py:159 +#: extras/forms/bulk_import.py:183 extras/forms/filtersets.py:114 #: extras/forms/filtersets.py:160 extras/forms/filtersets.py:201 #: extras/forms/model_forms.py:43 extras/forms/model_forms.py:127 #: extras/forms/model_forms.py:156 extras/forms/model_forms.py:197 @@ -6370,8 +6366,8 @@ msgid "Content types" msgstr "Tipos de conteúdo" #: extras/forms/bulk_import.py:36 extras/forms/bulk_import.py:117 -#: extras/forms/bulk_import.py:132 extras/forms/bulk_import.py:155 -#: extras/forms/bulk_import.py:179 tenancy/forms/bulk_import.py:96 +#: extras/forms/bulk_import.py:138 extras/forms/bulk_import.py:161 +#: extras/forms/bulk_import.py:185 tenancy/forms/bulk_import.py:96 msgid "One or more assigned object types" msgstr "Um ou mais tipos de objetos atribuídos" @@ -6418,29 +6414,39 @@ msgstr "" "opcionais separados por dois pontos: “Choice1:First Choice, Choice2:Second " "Choice”" -#: extras/forms/bulk_import.py:182 +#: extras/forms/bulk_import.py:120 extras/models/models.py:353 +msgid "button class" +msgstr "classe de botão" + +#: extras/forms/bulk_import.py:123 extras/models/models.py:357 +msgid "" +"The class of the first link in a group will be used for the dropdown button" +msgstr "" +"A classe do primeiro link em um grupo será usada para o botão suspenso" + +#: extras/forms/bulk_import.py:188 msgid "Action object" msgstr "Objeto de ação" -#: extras/forms/bulk_import.py:184 +#: extras/forms/bulk_import.py:190 msgid "Webhook name or script as dotted path module.Class" msgstr "Nome do webhook ou script como caminho pontilhado module.Class" -#: extras/forms/bulk_import.py:205 +#: extras/forms/bulk_import.py:211 #, python-brace-format msgid "Webhook {name} not found" msgstr "Webhook {name} não encontrado" -#: extras/forms/bulk_import.py:214 +#: extras/forms/bulk_import.py:220 #, python-brace-format msgid "Script {name} not found" msgstr "Roteiro {name} não encontrado" -#: extras/forms/bulk_import.py:236 +#: extras/forms/bulk_import.py:242 msgid "Assigned object type" msgstr "Tipo de objeto atribuído" -#: extras/forms/bulk_import.py:241 +#: extras/forms/bulk_import.py:247 msgid "The classification of entry" msgstr "A classificação da entrada" @@ -7397,16 +7403,6 @@ msgstr "Código de modelo Jinja2 para URL do link" msgid "Links with the same group will appear as a dropdown menu" msgstr "Links com o mesmo grupo aparecerão como um menu suspenso" -#: extras/models/models.py:353 -msgid "button class" -msgstr "classe de botão" - -#: extras/models/models.py:357 -msgid "" -"The class of the first link in a group will be used for the dropdown button" -msgstr "" -"A classe do primeiro link em um grupo será usada para o botão suspenso" - #: extras/models/models.py:360 msgid "new window" msgstr "nova janela" @@ -7598,7 +7594,7 @@ msgid "staged changes" msgstr "mudanças encenadas" #: extras/models/tags.py:40 -msgid "The object type(s) to which this this tag can be applied." +msgid "The object type(s) to which this tag can be applied." msgstr "O (s) tipo (s) de objeto aos quais essa tag pode ser aplicada." #: extras/models/tags.py:49 @@ -7899,7 +7895,7 @@ msgid "VLAN number (1-4094)" msgstr "Número da VLAN (1-4094)" #: ipam/filtersets.py:437 ipam/filtersets.py:441 ipam/filtersets.py:533 -#: ipam/forms/model_forms.py:444 templates/tenancy/contact.html:54 +#: ipam/forms/model_forms.py:430 templates/tenancy/contact.html:54 #: tenancy/forms/bulk_edit.py:112 msgid "Address" msgstr "Endereço" @@ -8068,7 +8064,7 @@ msgid "Authentication key" msgstr "Chave de autenticação" #: ipam/forms/bulk_edit.py:404 ipam/forms/filtersets.py:369 -#: ipam/forms/model_forms.py:455 netbox/navigation/menu.py:376 +#: ipam/forms/model_forms.py:441 netbox/navigation/menu.py:376 #: templates/ipam/fhrpgroup.html:51 #: templates/wireless/inc/authentication_attrs.html:5 #: wireless/forms/bulk_edit.py:90 wireless/forms/bulk_edit.py:137 @@ -8085,11 +8081,11 @@ msgstr "VLAN infantil mínima VID" msgid "Maximum child VLAN VID" msgstr "VLAN infantil máximo VID" -#: ipam/forms/bulk_edit.py:428 ipam/forms/model_forms.py:527 +#: ipam/forms/bulk_edit.py:428 ipam/forms/model_forms.py:531 msgid "Scope type" msgstr "Tipo de escopo" -#: ipam/forms/bulk_edit.py:489 ipam/forms/model_forms.py:600 +#: ipam/forms/bulk_edit.py:489 ipam/forms/model_forms.py:604 #: ipam/tables/vlans.py:71 templates/ipam/vlangroup.html:39 msgid "Scope" msgstr "Escopo" @@ -8098,8 +8094,8 @@ msgstr "Escopo" msgid "Site & Group" msgstr "Site e grupo" -#: ipam/forms/bulk_edit.py:574 ipam/forms/model_forms.py:663 -#: ipam/forms/model_forms.py:697 ipam/tables/services.py:19 +#: ipam/forms/bulk_edit.py:574 ipam/forms/model_forms.py:667 +#: ipam/forms/model_forms.py:701 ipam/tables/services.py:19 #: ipam/tables/services.py:49 templates/ipam/service.html:39 #: templates/ipam/servicetemplate.html:24 msgid "Ports" @@ -8139,7 +8135,7 @@ msgid "Parent device of assigned interface (if any)" msgstr "Dispositivo principal da interface atribuída (se houver)" #: ipam/forms/bulk_import.py:310 ipam/forms/bulk_import.py:496 -#: ipam/forms/model_forms.py:691 virtualization/filtersets.py:284 +#: ipam/forms/model_forms.py:695 virtualization/filtersets.py:284 #: virtualization/filtersets.py:323 virtualization/forms/bulk_edit.py:199 #: virtualization/forms/bulk_edit.py:325 #: virtualization/forms/bulk_import.py:146 @@ -8317,8 +8313,8 @@ msgstr "Porto" #: virtualization/forms/filtersets.py:189 #: virtualization/forms/filtersets.py:234 #: virtualization/forms/model_forms.py:223 -#: virtualization/tables/virtualmachines.py:115 -#: virtualization/tables/virtualmachines.py:168 vpn/choices.py:45 +#: virtualization/tables/virtualmachines.py:128 +#: virtualization/tables/virtualmachines.py:181 vpn/choices.py:45 #: vpn/forms/filtersets.py:289 vpn/forms/model_forms.py:161 #: vpn/forms/model_forms.py:172 vpn/forms/model_forms.py:274 msgid "Virtual Machine" @@ -8341,7 +8337,7 @@ msgstr "Atribuição de site/VLAN" msgid "IP Range" msgstr "Intervalo de IP" -#: ipam/forms/model_forms.py:285 ipam/forms/model_forms.py:454 +#: ipam/forms/model_forms.py:285 ipam/forms/model_forms.py:440 #: templates/ipam/fhrpgroup.html:19 templates/ipam/ipaddress_edit.html:52 msgid "FHRP Group" msgstr "Grupo FHRP" @@ -8354,7 +8350,7 @@ msgstr "Torne esse o IP primário do dispositivo/VM" msgid "An IP address can only be assigned to a single object." msgstr "Um endereço IP só pode ser atribuído a um único objeto." -#: ipam/forms/model_forms.py:357 ipam/models/ip.py:877 +#: ipam/forms/model_forms.py:357 ipam/models/ip.py:896 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" @@ -8369,34 +8365,25 @@ msgstr "" "Somente endereços IP atribuídos a uma interface podem ser designados como " "IPs primários." -#: ipam/forms/model_forms.py:373 -#, python-brace-format -msgid "{ip} is a network ID, which may not be assigned to an interface." -msgstr "{ip} é uma ID de rede, que não pode ser atribuída a uma interface." - -#: ipam/forms/model_forms.py:379 -#, python-brace-format -msgid "" -"{ip} is a broadcast address, which may not be assigned to an interface." -msgstr "" -"{ip} é um endereço de transmissão, que não pode ser atribuído a uma " -"interface." - -#: ipam/forms/model_forms.py:456 +#: ipam/forms/model_forms.py:442 msgid "Virtual IP Address" msgstr "Endereço IP virtual" -#: ipam/forms/model_forms.py:598 ipam/forms/model_forms.py:637 +#: ipam/forms/model_forms.py:523 +msgid "Assignment already exists" +msgstr "A atribuição já existe" + +#: ipam/forms/model_forms.py:602 ipam/forms/model_forms.py:641 #: ipam/tables/ip.py:250 templates/ipam/vlan_edit.html:37 #: templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "Grupo VLAN" -#: ipam/forms/model_forms.py:599 +#: ipam/forms/model_forms.py:603 msgid "Child VLANs" msgstr "VLANs secundários" -#: ipam/forms/model_forms.py:668 ipam/forms/model_forms.py:702 +#: ipam/forms/model_forms.py:672 ipam/forms/model_forms.py:706 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." @@ -8404,15 +8391,15 @@ msgstr "" "Lista separada por vírgula de um ou mais números de porta. Um intervalo pode" " ser especificado usando um hífen." -#: ipam/forms/model_forms.py:673 templates/ipam/servicetemplate.html:12 +#: ipam/forms/model_forms.py:677 templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "Modelo de serviço" -#: ipam/forms/model_forms.py:724 +#: ipam/forms/model_forms.py:728 msgid "Service template" msgstr "Modelo de serviço" -#: ipam/forms/model_forms.py:754 +#: ipam/forms/model_forms.py:758 msgid "" "Must specify name, protocol, and port(s) if not using a service template." msgstr "" @@ -8579,12 +8566,12 @@ msgstr "prefixos" msgid "Cannot create prefix with /0 mask." msgstr "Não é possível criar prefixo com a máscara /0." -#: ipam/models/ip.py:323 ipam/models/ip.py:854 +#: ipam/models/ip.py:323 ipam/models/ip.py:873 #, python-brace-format msgid "VRF {vrf}" msgstr "VRF {vrf}" -#: ipam/models/ip.py:323 ipam/models/ip.py:854 +#: ipam/models/ip.py:323 ipam/models/ip.py:873 msgid "global table" msgstr "tabela global" @@ -8680,12 +8667,25 @@ msgstr "Endereços IP" msgid "Cannot create IP address with /0 mask." msgstr "Não é possível criar endereço IP com máscara /0." -#: ipam/models/ip.py:856 +#: ipam/models/ip.py:850 +#, python-brace-format +msgid "{ip} is a network ID, which may not be assigned to an interface." +msgstr "{ip} é uma ID de rede, que não pode ser atribuída a uma interface." + +#: ipam/models/ip.py:861 +#, python-brace-format +msgid "" +"{ip} is a broadcast address, which may not be assigned to an interface." +msgstr "" +"{ip} é um endereço de transmissão, que não pode ser atribuído a uma " +"interface." + +#: ipam/models/ip.py:875 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "Endereço IP duplicado encontrado em {table}: {ipaddress}" -#: ipam/models/ip.py:883 +#: ipam/models/ip.py:902 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "Somente endereços IPv6 podem receber o status SLAAC" @@ -9468,7 +9468,7 @@ msgstr "Máquinas virtuais" #: templates/virtualization/virtualmachine.html:177 #: templates/virtualization/virtualmachine/base.html:32 #: templates/virtualization/virtualmachine_list.html:21 -#: virtualization/tables/virtualmachines.py:90 virtualization/views.py:389 +#: virtualization/tables/virtualmachines.py:103 virtualization/views.py:389 msgid "Virtual Disks" msgstr "Discos virtuais" @@ -10393,8 +10393,8 @@ msgstr "Agendamento" #: templates/core/job.html:66 #, python-format -msgid "every %(interval)s seconds" -msgstr "cada %(interval)s segundos" +msgid "every %(interval)s minutes" +msgstr "cada %(interval)s ata" #: templates/dcim/bulk_disconnect.html:9 #, python-format @@ -12948,67 +12948,67 @@ msgstr "As restrições não são suportadas para esse tipo de objeto." msgid "Invalid filter for {model}: {error}" msgstr "Filtro inválido para {model}: {error}" -#: users/models.py:54 +#: users/models.py:55 msgid "user" msgstr "usuária" -#: users/models.py:55 +#: users/models.py:56 msgid "users" msgstr "usuários" -#: users/models.py:66 +#: users/models.py:67 msgid "A user with this username already exists." msgstr "Já existe um usuário com esse nome de usuário." -#: users/models.py:78 vpn/models/crypto.py:42 +#: users/models.py:79 vpn/models/crypto.py:42 msgid "group" msgstr "grupo" -#: users/models.py:79 +#: users/models.py:80 msgid "groups" msgstr "grupos" -#: users/models.py:106 users/models.py:107 +#: users/models.py:107 users/models.py:108 msgid "user preferences" msgstr "preferências do usuário" -#: users/models.py:174 +#: users/models.py:175 #, python-brace-format msgid "Key '{path}' is a leaf node; cannot assign new keys" msgstr "Chave '{path}'é um nó de folha; não é possível atribuir novas chaves" -#: users/models.py:186 +#: users/models.py:187 #, python-brace-format msgid "Key '{path}' is a dictionary; cannot assign a non-dictionary value" msgstr "" "Chave '{path}'é um dicionário; não pode atribuir um valor que não seja do " "dicionário" -#: users/models.py:252 +#: users/models.py:253 msgid "expires" msgstr "expira" -#: users/models.py:257 +#: users/models.py:258 msgid "last used" msgstr "usado pela última vez" -#: users/models.py:262 +#: users/models.py:263 msgid "key" msgstr "chave" -#: users/models.py:268 +#: users/models.py:269 msgid "write enabled" msgstr "gravação habilitada" -#: users/models.py:270 +#: users/models.py:271 msgid "Permit create/update/delete operations using this key" msgstr "Permitir operações de criação/atualização/exclusão usando essa chave" -#: users/models.py:281 +#: users/models.py:282 msgid "allowed IPs" msgstr "IPs permitidos" -#: users/models.py:283 +#: users/models.py:284 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\"" @@ -13016,34 +13016,34 @@ msgstr "" "Redes IPv4/IPv6 permitidas de onde o token pode ser usado. Deixe em branco " "sem restrições. Ex: “10.1.1.0/24, 192.168.10.16/32, 2001:DB 8:1: :/64\"" -#: users/models.py:291 +#: users/models.py:296 msgid "token" msgstr "ficha" -#: users/models.py:292 +#: users/models.py:297 msgid "tokens" msgstr "tokens" -#: users/models.py:373 +#: users/models.py:378 msgid "The list of actions granted by this permission" msgstr "A lista de ações concedidas por essa permissão" -#: users/models.py:378 +#: users/models.py:383 msgid "constraints" msgstr "restrições" -#: users/models.py:379 +#: users/models.py:384 msgid "" "Queryset filter matching the applicable objects of the selected type(s)" msgstr "" "Filtro do conjunto de consultas que corresponde aos objetos aplicáveis do " "(s) tipo (s) selecionado (s)" -#: users/models.py:386 +#: users/models.py:391 msgid "permission" msgstr "permissão" -#: users/models.py:387 +#: users/models.py:392 msgid "permissions" msgstr "permissões" @@ -13317,46 +13317,55 @@ msgstr "" "Esse objeto foi modificado desde que o formulário foi renderizado. Consulte " "o registro de alterações do objeto para obter detalhes." -#: utilities/forms/utils.py:42 utilities/forms/utils.py:65 -#: utilities/forms/utils.py:77 utilities/forms/utils.py:80 +#: utilities/forms/utils.py:42 utilities/forms/utils.py:68 +#: utilities/forms/utils.py:85 utilities/forms/utils.py:87 #, python-brace-format msgid "Range \"{value}\" is invalid." msgstr "Alcance”{value}“é inválido." -#: utilities/forms/utils.py:225 +#: utilities/forms/utils.py:74 +#, python-brace-format +msgid "" +"Invalid range: Ending value ({end}) must be greater than beginning value " +"({begin})." +msgstr "" +"Intervalo inválido: valor final ({end}) deve ser maior que o valor inicial " +"({begin})." + +#: utilities/forms/utils.py:232 #, python-brace-format msgid "Duplicate or conflicting column header for \"{field}\"" msgstr "Cabeçalho de coluna duplicado ou conflitante para”{field}“" -#: utilities/forms/utils.py:231 +#: utilities/forms/utils.py:238 #, python-brace-format msgid "Duplicate or conflicting column header for \"{header}\"" msgstr "Cabeçalho de coluna duplicado ou conflitante para”{header}“" -#: utilities/forms/utils.py:240 +#: utilities/forms/utils.py:247 #, python-brace-format msgid "Row {row}: Expected {count_expected} columns but found {count_found}" msgstr "" "Linha {row}: Esperado {count_expected} colunas, mas encontradas " "{count_found}" -#: utilities/forms/utils.py:263 +#: utilities/forms/utils.py:270 #, python-brace-format msgid "Unexpected column header \"{field}\" found." msgstr "Cabeçalho de coluna inesperado”{field}“encontrado." -#: utilities/forms/utils.py:265 +#: utilities/forms/utils.py:272 #, python-brace-format msgid "Column \"{field}\" is not a related object; cannot use dots" msgstr "Coluna”{field}“não é um objeto relacionado; não pode usar pontos" -#: utilities/forms/utils.py:269 +#: utilities/forms/utils.py:276 #, python-brace-format msgid "Invalid related object attribute for column \"{field}\": {to_field}" msgstr "" "Atributo de objeto relacionado inválido para a coluna”{field}“: {to_field}" -#: utilities/forms/utils.py:277 +#: utilities/forms/utils.py:284 #, python-brace-format msgid "Required column header \"{header}\" not found." msgstr "Cabeçalho de coluna obrigatório”{header}“não encontrado." @@ -13994,6 +14003,11 @@ msgstr "Proposta" msgid "Assigned Object Type" msgstr "Tipo de objeto atribuído" +#: vpn/forms/model_forms.py:94 vpn/forms/model_forms.py:129 +#: vpn/forms/model_forms.py:241 vpn/tables/tunnels.py:91 +msgid "Tunnel interface" +msgstr "Interface de túnel" + #: vpn/forms/model_forms.py:147 msgid "First Termination" msgstr "Primeira rescisão" diff --git a/netbox/translations/ru/LC_MESSAGES/django.mo b/netbox/translations/ru/LC_MESSAGES/django.mo index fd43bbda3ac817d41d29724a95600790682997d6..cf0d2757ca9e057297c5128be7e88d39a01c3af7 100644 GIT binary patch delta 65942 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 VYf+GyHCTx3Tajl^ao5Yh{|6T)0=WPH delta 66777 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 ztoM7Ym2dN$bUo6S5RzPC{racked_instance_count} " @@ -4771,7 +4769,7 @@ msgstr "" "href=\"{url}\">{racked_instance_count} экземпляр(ов) уже смонтированых в" " стойках." -#: dcim/models/devices.py:330 +#: dcim/models/devices.py:331 msgid "" "Must delete all device bay templates associated with this device before " "declassifying it as a parent device." @@ -4779,157 +4777,157 @@ msgstr "" "Необходимо удалить все шаблоны отсеков устройств, связанные с этим " "устройством, прежде чем рассекретить его как родительское устройство." -#: dcim/models/devices.py:336 +#: dcim/models/devices.py:337 msgid "Child device types must be 0U." msgstr "Типы дочерних устройств должны быть 0U." -#: dcim/models/devices.py:404 +#: dcim/models/devices.py:405 msgid "module type" msgstr "тип модуля" -#: dcim/models/devices.py:405 +#: dcim/models/devices.py:406 msgid "module types" msgstr "типы модулей" -#: dcim/models/devices.py:473 +#: dcim/models/devices.py:475 msgid "Virtual machines may be assigned to this role" msgstr "Эта роль может быть назначена виртуальным машинам." -#: dcim/models/devices.py:485 +#: dcim/models/devices.py:487 msgid "device role" msgstr "роль устройства" -#: dcim/models/devices.py:486 +#: dcim/models/devices.py:488 msgid "device roles" msgstr "роли устройств" -#: dcim/models/devices.py:503 +#: dcim/models/devices.py:505 msgid "Optionally limit this platform to devices of a certain manufacturer" msgstr "" "Опционально ограничьте эту платформу устройствами определенного " "производителя" -#: dcim/models/devices.py:515 +#: dcim/models/devices.py:517 msgid "platform" -msgstr "платформы" - -#: dcim/models/devices.py:516 -msgid "platforms" msgstr "платформ" -#: dcim/models/devices.py:564 +#: dcim/models/devices.py:518 +msgid "platforms" +msgstr "платформы" + +#: dcim/models/devices.py:566 msgid "The function this device serves" msgstr "Функция, которую выполняет это устройство" -#: dcim/models/devices.py:596 +#: dcim/models/devices.py:598 msgid "Chassis serial number, assigned by the manufacturer" msgstr "Серийный номер корпуса, присвоенный производителем" -#: dcim/models/devices.py:604 dcim/models/devices.py:1181 +#: dcim/models/devices.py:606 dcim/models/devices.py:1186 msgid "A unique tag used to identify this device" msgstr "Уникальный тег, используемый для идентификации этого устройства" -#: dcim/models/devices.py:631 +#: dcim/models/devices.py:633 msgid "position (U)" msgstr "положение (U)" -#: dcim/models/devices.py:638 +#: dcim/models/devices.py:640 msgid "rack face" msgstr "лицевая сторона стойки" -#: dcim/models/devices.py:658 dcim/models/devices.py:1390 +#: dcim/models/devices.py:660 dcim/models/devices.py:1395 #: virtualization/models/virtualmachines.py:98 msgid "primary IPv4" msgstr "основной IPv4" -#: dcim/models/devices.py:666 dcim/models/devices.py:1398 +#: dcim/models/devices.py:668 dcim/models/devices.py:1403 #: virtualization/models/virtualmachines.py:106 msgid "primary IPv6" msgstr "основной IPv6" -#: dcim/models/devices.py:674 +#: dcim/models/devices.py:676 msgid "out-of-band IP" msgstr "внеполосный IP-адрес" -#: dcim/models/devices.py:691 +#: dcim/models/devices.py:693 msgid "VC position" msgstr "Позиция VC" -#: dcim/models/devices.py:695 +#: dcim/models/devices.py:697 msgid "Virtual chassis position" msgstr "Положение виртуального шасси" -#: dcim/models/devices.py:698 +#: dcim/models/devices.py:700 msgid "VC priority" msgstr "Приоритет VC" -#: dcim/models/devices.py:702 +#: dcim/models/devices.py:704 msgid "Virtual chassis master election priority" msgstr "Приоритет выбора основного виртуального шасси" -#: dcim/models/devices.py:705 dcim/models/sites.py:207 +#: dcim/models/devices.py:707 dcim/models/sites.py:207 msgid "latitude" msgstr "широта" -#: dcim/models/devices.py:710 dcim/models/devices.py:718 +#: dcim/models/devices.py:712 dcim/models/devices.py:720 #: dcim/models/sites.py:212 dcim/models/sites.py:220 msgid "GPS coordinate in decimal format (xx.yyyyyy)" msgstr "Координата GPS в десятичном формате (xx.yyyyyy)" -#: dcim/models/devices.py:713 dcim/models/sites.py:215 +#: dcim/models/devices.py:715 dcim/models/sites.py:215 msgid "longitude" msgstr "долгота" -#: dcim/models/devices.py:786 +#: dcim/models/devices.py:788 msgid "Device name must be unique per site." msgstr "Имя устройства должно быть уникальным для каждого сайта." -#: dcim/models/devices.py:797 ipam/models/services.py:75 +#: dcim/models/devices.py:799 ipam/models/services.py:75 msgid "device" msgstr "устройство" -#: dcim/models/devices.py:798 +#: dcim/models/devices.py:800 msgid "devices" -msgstr "приборы" +msgstr "устройства" -#: dcim/models/devices.py:838 +#: dcim/models/devices.py:840 #, python-brace-format msgid "Rack {rack} does not belong to site {site}." msgstr "Стойка {rack} не принадлежит сайту {site}." -#: dcim/models/devices.py:843 +#: dcim/models/devices.py:845 #, python-brace-format msgid "Location {location} does not belong to site {site}." -msgstr "Местоположение {location} не принадлежит сайту {site}." +msgstr "Локация {location} не принадлежит сайту {site}." -#: dcim/models/devices.py:849 +#: dcim/models/devices.py:851 #, python-brace-format msgid "Rack {rack} does not belong to location {location}." -msgstr "Стойка {rack} не принадлежит расположению {location}." +msgstr "Стойка {rack} не принадлежит локации {location}." -#: dcim/models/devices.py:856 +#: dcim/models/devices.py:858 msgid "Cannot select a rack face without assigning a rack." msgstr "Невозможно выбрать лицевую сторону стойки, не выбрав саму стойку." -#: dcim/models/devices.py:860 +#: dcim/models/devices.py:862 msgid "Cannot select a rack position without assigning a rack." msgstr "Невозможно выбрать позицию в стойке, не выбрав саму стойку." -#: dcim/models/devices.py:866 +#: dcim/models/devices.py:868 msgid "Position must be in increments of 0.5 rack units." msgstr "Позиция должна быть указана с шагом 0,5 единицы стойки." -#: dcim/models/devices.py:870 +#: dcim/models/devices.py:872 msgid "Must specify rack face when defining rack position." msgstr "При определении лицевой стороны необходимо указать позицию в стойке." -#: dcim/models/devices.py:878 +#: dcim/models/devices.py:880 #, python-brace-format msgid "" "A 0U device type ({device_type}) cannot be assigned to a rack position." msgstr "Тип устройства 0U ({device_type}) не может быть отнесено к стойке." -#: dcim/models/devices.py:889 +#: dcim/models/devices.py:891 msgid "" "Child device types cannot be assigned to a rack face. This is an attribute " "of the parent device." @@ -4937,15 +4935,15 @@ msgstr "" "Устройствам с указанным в типе свойством \"дочернее\" нельзя выбрать лицевую" " сторону стойки. Этот атрибут указывается для \"родительского\" устройства." -#: dcim/models/devices.py:896 +#: dcim/models/devices.py:898 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 +#: dcim/models/devices.py:912 #, python-brace-format msgid "" "U{position} is already occupied or does not have sufficient space to " @@ -4954,22 +4952,22 @@ msgstr "" "U{position} уже занят или в нем недостаточно места для размещения этого типа" " устройств: {device_type} ({u_height}U)" -#: dcim/models/devices.py:925 +#: dcim/models/devices.py:927 #, python-brace-format msgid "{ip} is not an IPv4 address." msgstr "{ip} не является адресом IPv4." -#: dcim/models/devices.py:934 dcim/models/devices.py:949 +#: dcim/models/devices.py:936 dcim/models/devices.py:951 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this device." msgstr "Указанный IP-адрес ({ip}) не назначено этому устройству." -#: dcim/models/devices.py:940 +#: dcim/models/devices.py:942 #, python-brace-format msgid "{ip} is not an IPv6 address." msgstr "{ip} не является адресом IPv6." -#: dcim/models/devices.py:967 +#: dcim/models/devices.py:969 #, python-brace-format msgid "" "The assigned platform is limited to {platform_manufacturer} device types, " @@ -4978,26 +4976,26 @@ msgstr "" "Назначенная платформа ограничена {platform_manufacturer} типы устройств, но " "данный тип устройства относится к {devicetype_manufacturer}." -#: dcim/models/devices.py:978 +#: dcim/models/devices.py:980 #, python-brace-format msgid "The assigned cluster belongs to a different site ({site})" msgstr "Назначенный кластер принадлежит другому сайту ({site})" -#: dcim/models/devices.py:986 +#: dcim/models/devices.py:988 msgid "A device assigned to a virtual chassis must have its position defined." msgstr "" "Положение устройства, назначенного виртуальному шасси, должно быть " "определено." -#: dcim/models/devices.py:1188 +#: dcim/models/devices.py:1193 msgid "module" msgstr "модуль" -#: dcim/models/devices.py:1189 +#: dcim/models/devices.py:1194 msgid "modules" msgstr "модули" -#: dcim/models/devices.py:1205 +#: dcim/models/devices.py:1210 #, python-brace-format msgid "" "Module must be installed within a module bay belonging to the assigned " @@ -5006,21 +5004,21 @@ msgstr "" "Модуль должен быть установлен в модульном отсеке, принадлежащем назначенному" " устройству ({device})." -#: dcim/models/devices.py:1309 +#: dcim/models/devices.py:1314 msgid "domain" msgstr "Домен" -#: dcim/models/devices.py:1322 dcim/models/devices.py:1323 +#: dcim/models/devices.py:1327 dcim/models/devices.py:1328 msgid "virtual chassis" msgstr "виртуальное шасси" -#: dcim/models/devices.py:1338 +#: dcim/models/devices.py:1343 #, python-brace-format msgid "" "The selected master ({master}) is not assigned to this virtual chassis." msgstr "Выбранный мастер ({master}) не назначено этому виртуальному шасси." -#: dcim/models/devices.py:1354 +#: dcim/models/devices.py:1359 #, python-brace-format msgid "" "Unable to delete virtual chassis {self}. There are member interfaces which " @@ -5029,33 +5027,33 @@ msgstr "" "Невозможно удалить виртуальное шасси {self}. Существуют интерфейсы-члены, " "которые образуют межкорпусные интерфейсы LAG." -#: dcim/models/devices.py:1379 vpn/models/l2vpn.py:37 +#: dcim/models/devices.py:1384 vpn/models/l2vpn.py:37 msgid "identifier" msgstr "идентификатор" -#: dcim/models/devices.py:1380 +#: dcim/models/devices.py:1385 msgid "Numeric identifier unique to the parent device" msgstr "Цифровой идентификатор, уникальный для родительского устройства" -#: dcim/models/devices.py:1408 extras/models/models.py:129 +#: dcim/models/devices.py:1413 extras/models/models.py:129 #: extras/models/models.py:724 netbox/models/__init__.py:114 msgid "comments" msgstr "комментарии" -#: dcim/models/devices.py:1424 +#: dcim/models/devices.py:1429 msgid "virtual device context" msgstr "виртуальный контекст" -#: dcim/models/devices.py:1425 +#: dcim/models/devices.py:1430 msgid "virtual device contexts" msgstr "виртуальные контексты" -#: dcim/models/devices.py:1457 +#: dcim/models/devices.py:1462 #, python-brace-format msgid "{ip} is not an IPv{family} address." msgstr "{ip} не является IPV{family} адрес." -#: dcim/models/devices.py:1463 +#: dcim/models/devices.py:1468 msgid "Primary IP address must belong to an interface on the assigned device." msgstr "" "Основной IP-адрес должен принадлежать интерфейсу на назначенном устройстве." @@ -5087,8 +5085,7 @@ msgstr "панели питания" msgid "" "Location {location} ({location_site}) is in a different site than {site}" msgstr "" -"Местоположение {location} ({location_site}) находится на другом сайте, чем " -"{site}" +"Локация{location} ({location_site}) находится на другом сайте, чем {site}" #: dcim/models/power.py:107 msgid "supply" @@ -5271,8 +5268,8 @@ msgid "" "Rack unit numbering must begin at {position} or less to house currently " "installed devices." msgstr "" -"Нумерация стеллажей должна начинаться с {position} или меньше для размещения" -" установленных в настоящее время устройств." +"Нумерация стоек должна начинаться с {position} или меньше для размещения " +"установленных в настоящее время устройств." #: dcim/models/racks.py:269 #, python-brace-format @@ -5281,7 +5278,7 @@ msgstr "Локация должна быть с того же места, {site} #: dcim/models/racks.py:522 msgid "units" -msgstr "единиц" +msgstr "юниты" #: dcim/models/racks.py:548 msgid "rack reservation" @@ -5300,7 +5297,7 @@ msgstr "" #: dcim/models/racks.py:579 #, python-brace-format msgid "The following units have already been reserved: {unit_list}" -msgstr "Следующие номера уже зарезервированы: {unit_list}" +msgstr "Следующие юниты уже зарезервированы: {unit_list}" #: dcim/models/sites.py:49 msgid "A top-level region with this name already exists." @@ -5368,7 +5365,7 @@ msgstr "место" #: dcim/models/sites.py:239 msgid "sites" -msgstr "места" +msgstr "Сайты" #: dcim/models/sites.py:303 msgid "A location with this name already exists within the specified site." @@ -5390,16 +5387,15 @@ msgstr "локации" #, python-brace-format msgid "Parent location ({parent}) must belong to the same site ({site})." msgstr "" -"Местонахождение родителя ({parent}) должен принадлежать тому же сайту " -"({site})." +"Локация родителя ({parent}) должен принадлежать тому же сайту ({site})." #: dcim/tables/cables.py:54 msgid "Termination A" -msgstr "Прекращение A" +msgstr "Окончание A" #: dcim/tables/cables.py:59 msgid "Termination B" -msgstr "Прекращение В" +msgstr "Окончание В" #: dcim/tables/cables.py:65 wireless/tables/wirelesslink.py:22 msgid "Device A" @@ -5411,19 +5407,19 @@ msgstr "Устройство B" #: dcim/tables/cables.py:77 msgid "Location A" -msgstr "Местоположение A" +msgstr "Локация A" #: dcim/tables/cables.py:83 msgid "Location B" -msgstr "Местоположение B" +msgstr "Локация B" #: dcim/tables/cables.py:89 msgid "Rack A" -msgstr "Стеллаж A" +msgstr "Стойка A" #: dcim/tables/cables.py:95 msgid "Rack B" -msgstr "Стеллаж B" +msgstr "Стойка B" #: dcim/tables/cables.py:101 msgid "Site A" @@ -5445,7 +5441,7 @@ msgstr "Консольный порт" msgid "Reachable" msgstr "Доступен" -#: dcim/tables/connections.py:46 dcim/tables/devices.py:529 +#: dcim/tables/connections.py:46 dcim/tables/devices.py:533 #: templates/dcim/inventoryitem_edit.html:64 #: templates/dcim/poweroutlet.html:47 templates/dcim/powerport.html:18 msgid "Power Port" @@ -5464,7 +5460,7 @@ msgstr "Устройства" msgid "VMs" msgstr "Виртуальные машины" -#: dcim/tables/devices.py:133 dcim/tables/devices.py:245 +#: dcim/tables/devices.py:133 dcim/tables/devices.py:249 #: extras/forms/model_forms.py:515 templates/dcim/device.html:114 #: templates/dcim/device/render_config.html:11 #: templates/dcim/device/render_config.html:15 @@ -5473,62 +5469,62 @@ msgstr "Виртуальные машины" #: templates/virtualization/virtualmachine.html:47 #: templates/virtualization/virtualmachine/render_config.html:11 #: templates/virtualization/virtualmachine/render_config.html:15 -#: virtualization/tables/virtualmachines.py:93 +#: virtualization/tables/virtualmachines.py:106 msgid "Config Template" msgstr "Шаблон конфигурации" -#: dcim/tables/devices.py:216 dcim/tables/devices.py:1074 +#: dcim/tables/devices.py:220 dcim/tables/devices.py:1078 #: ipam/forms/bulk_import.py:511 ipam/forms/model_forms.py:296 #: 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:81 +#: virtualization/tables/virtualmachines.py:94 msgid "IP Address" msgstr "IP-адрес" -#: dcim/tables/devices.py:220 dcim/tables/devices.py:1078 -#: virtualization/tables/virtualmachines.py:72 +#: dcim/tables/devices.py:224 dcim/tables/devices.py:1082 +#: virtualization/tables/virtualmachines.py:85 msgid "IPv4 Address" msgstr "Адрес IPv4" -#: dcim/tables/devices.py:224 dcim/tables/devices.py:1082 -#: virtualization/tables/virtualmachines.py:76 +#: dcim/tables/devices.py:228 dcim/tables/devices.py:1086 +#: virtualization/tables/virtualmachines.py:89 msgid "IPv6 Address" msgstr "Адрес IPv6" -#: dcim/tables/devices.py:239 +#: dcim/tables/devices.py:243 msgid "VC Position" msgstr "Позиция VC" -#: dcim/tables/devices.py:242 +#: dcim/tables/devices.py:246 msgid "VC Priority" msgstr "Приоритет VC" -#: dcim/tables/devices.py:249 templates/dcim/device_edit.html:38 +#: dcim/tables/devices.py:253 templates/dcim/device_edit.html:38 #: templates/dcim/devicebay_populate.html:16 msgid "Parent Device" msgstr "Родительское устройство" -#: dcim/tables/devices.py:254 +#: dcim/tables/devices.py:258 msgid "Position (Device Bay)" msgstr "Положение (отсек для устройств)" -#: dcim/tables/devices.py:263 +#: dcim/tables/devices.py:267 msgid "Console ports" msgstr "Консольные порты" -#: dcim/tables/devices.py:266 +#: dcim/tables/devices.py:270 msgid "Console server ports" msgstr "Порты консольного сервера" -#: dcim/tables/devices.py:269 +#: dcim/tables/devices.py:273 msgid "Power ports" msgstr "Порты питания" -#: dcim/tables/devices.py:272 +#: dcim/tables/devices.py:276 msgid "Power outlets" msgstr "Розетки питания" -#: dcim/tables/devices.py:275 dcim/tables/devices.py:1087 +#: dcim/tables/devices.py:279 dcim/tables/devices.py:1091 #: dcim/tables/devicetypes.py:125 dcim/views.py:1005 dcim/views.py:1244 #: dcim/views.py:1930 netbox/navigation/menu.py:82 #: netbox/navigation/menu.py:238 templates/dcim/device/base.html:37 @@ -5538,53 +5534,53 @@ msgstr "Розетки питания" #: templates/dcim/virtualdevicecontext.html:85 #: templates/virtualization/virtualmachine/base.html:27 #: templates/virtualization/virtualmachine_list.html:14 -#: virtualization/tables/virtualmachines.py:87 virtualization/views.py:368 +#: virtualization/tables/virtualmachines.py:100 virtualization/views.py:368 #: wireless/tables/wirelesslan.py:55 msgid "Interfaces" msgstr "Интерфейсы" -#: dcim/tables/devices.py:278 +#: dcim/tables/devices.py:282 msgid "Front ports" msgstr "Передние порты" -#: dcim/tables/devices.py:284 +#: dcim/tables/devices.py:288 msgid "Device bays" msgstr "Отсеки для устройств" -#: dcim/tables/devices.py:287 +#: dcim/tables/devices.py:291 msgid "Module bays" msgstr "Отсеки для модулей" -#: dcim/tables/devices.py:290 +#: dcim/tables/devices.py:294 msgid "Inventory items" msgstr "Комплектующие" -#: dcim/tables/devices.py:329 dcim/tables/modules.py:56 +#: dcim/tables/devices.py:333 dcim/tables/modules.py:56 #: templates/dcim/modulebay.html:17 msgid "Module Bay" msgstr "Модульный отсек" -#: dcim/tables/devices.py:350 +#: dcim/tables/devices.py:354 msgid "Cable Color" msgstr "Цвет кабеля" -#: dcim/tables/devices.py:356 +#: dcim/tables/devices.py:360 msgid "Link Peers" msgstr "Связать узлы" -#: dcim/tables/devices.py:359 +#: dcim/tables/devices.py:363 msgid "Mark Connected" msgstr "Отметить подключение" -#: dcim/tables/devices.py:475 +#: dcim/tables/devices.py:479 msgid "Maximum draw (W)" msgstr "Максимальная потребляемая мощность (Вт)" -#: dcim/tables/devices.py:478 +#: dcim/tables/devices.py:482 msgid "Allocated draw (W)" msgstr "Выделенная мощность (Вт)" -#: dcim/tables/devices.py:578 ipam/forms/model_forms.py:707 +#: dcim/tables/devices.py:582 ipam/forms/model_forms.py:711 #: ipam/tables/fhrp.py:28 ipam/views.py:597 ipam/views.py:691 #: netbox/navigation/menu.py:146 netbox/navigation/menu.py:148 #: templates/dcim/interface.html:351 templates/ipam/ipaddress_bulk_add.html:15 @@ -5593,12 +5589,12 @@ msgstr "Выделенная мощность (Вт)" msgid "IP Addresses" msgstr "IP-адреса" -#: dcim/tables/devices.py:584 netbox/navigation/menu.py:190 +#: dcim/tables/devices.py:588 netbox/navigation/menu.py:190 #: templates/ipam/inc/panels/fhrp_groups.html:5 msgid "FHRP Groups" msgstr "Группы FHRP" -#: dcim/tables/devices.py:596 templates/dcim/interface.html:90 +#: dcim/tables/devices.py:600 templates/dcim/interface.html:90 #: templates/virtualization/vminterface.html:70 templates/vpn/tunnel.html:18 #: templates/vpn/tunneltermination.html:14 vpn/forms/bulk_edit.py:75 #: vpn/forms/bulk_import.py:76 vpn/forms/filtersets.py:41 @@ -5607,20 +5603,20 @@ msgstr "Группы FHRP" msgid "Tunnel" msgstr "Туннель" -#: dcim/tables/devices.py:621 dcim/tables/devicetypes.py:224 +#: dcim/tables/devices.py:625 dcim/tables/devicetypes.py:224 #: templates/dcim/interface.html:66 msgid "Management Only" msgstr "Только управление" -#: dcim/tables/devices.py:629 +#: dcim/tables/devices.py:633 msgid "Wireless link" msgstr "Беспроводная связь" -#: dcim/tables/devices.py:639 +#: dcim/tables/devices.py:643 msgid "VDCs" msgstr "Виртуальные контексты устройств(VDCs)" -#: dcim/tables/devices.py:647 dcim/tables/devicetypes.py:48 +#: dcim/tables/devices.py:651 dcim/tables/devicetypes.py:48 #: dcim/tables/devicetypes.py:140 dcim/views.py:1080 dcim/views.py:2023 #: netbox/navigation/menu.py:91 templates/dcim/device/base.html:52 #: templates/dcim/device_list.html:71 templates/dcim/devicetype/base.html:49 @@ -5629,7 +5625,7 @@ msgstr "Виртуальные контексты устройств(VDCs)" msgid "Inventory Items" msgstr "Предметы инвентаря" -#: dcim/tables/devices.py:728 +#: dcim/tables/devices.py:732 #: 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 @@ -5638,28 +5634,28 @@ msgstr "Предметы инвентаря" msgid "Rear Port" msgstr "Задний порт" -#: dcim/tables/devices.py:893 templates/dcim/modulebay.html:51 +#: dcim/tables/devices.py:897 templates/dcim/modulebay.html:51 msgid "Installed Module" msgstr "Установленный модуль" -#: dcim/tables/devices.py:896 +#: dcim/tables/devices.py:900 msgid "Module Serial" msgstr "Серийный номер модуля" -#: dcim/tables/devices.py:900 +#: dcim/tables/devices.py:904 msgid "Module Asset Tag" msgstr "Тег активов модуля" -#: dcim/tables/devices.py:909 +#: dcim/tables/devices.py:913 msgid "Module Status" msgstr "Состояние модуля" -#: dcim/tables/devices.py:951 dcim/tables/devicetypes.py:308 +#: dcim/tables/devices.py:955 dcim/tables/devicetypes.py:308 #: templates/dcim/inventoryitem.html:41 msgid "Component" msgstr "Компонент" -#: dcim/tables/devices.py:1006 +#: dcim/tables/devices.py:1010 msgid "Items" msgstr "Предметы" @@ -5777,7 +5773,7 @@ msgstr "Высота" #: dcim/tables/racks.py:85 msgid "Space" -msgstr "Космос" +msgstr "Пространство" #: dcim/tables/racks.py:96 templates/dcim/rack.html:105 msgid "Outer Width" @@ -5797,7 +5793,7 @@ msgstr "Максимальный вес" #: ipam/tables/asn.py:66 netbox/navigation/menu.py:16 #: netbox/navigation/menu.py:18 msgid "Sites" -msgstr "ЦОД" +msgstr "Сайты" #: dcim/tests/test_api.py:49 msgid "Test case must set peer_termination_type" @@ -5882,7 +5878,7 @@ msgstr "JSON" #: extras/choices.py:36 msgid "Selection" -msgstr "Отбор" +msgstr "Выбор" #: extras/choices.py:37 msgid "Multiple selection" @@ -6226,7 +6222,7 @@ msgid "Cluster type (slug)" msgstr "Тип кластера (подстрока)" #: extras/filtersets.py:490 ipam/forms/bulk_edit.py:475 -#: ipam/forms/model_forms.py:585 virtualization/forms/filtersets.py:108 +#: ipam/forms/model_forms.py:589 virtualization/forms/filtersets.py:108 msgid "Cluster group" msgstr "Кластерная группа" @@ -6278,7 +6274,7 @@ msgstr "Видимый пользовательский интерфейс" #: extras/forms/bulk_edit.py:58 extras/forms/bulk_import.py:63 #: extras/forms/filtersets.py:83 extras/models/customfields.py:200 msgid "UI editable" -msgstr "Редактируемый пользовательский интерфейс" +msgstr "Редактируемый UI" #: extras/forms/bulk_edit.py:63 extras/forms/filtersets.py:86 msgid "Is cloneable" @@ -6357,8 +6353,8 @@ msgid "Is active" msgstr "Активен" #: extras/forms/bulk_import.py:34 extras/forms/bulk_import.py:115 -#: extras/forms/bulk_import.py:130 extras/forms/bulk_import.py:153 -#: extras/forms/bulk_import.py:177 extras/forms/filtersets.py:114 +#: extras/forms/bulk_import.py:136 extras/forms/bulk_import.py:159 +#: extras/forms/bulk_import.py:183 extras/forms/filtersets.py:114 #: extras/forms/filtersets.py:160 extras/forms/filtersets.py:201 #: extras/forms/model_forms.py:43 extras/forms/model_forms.py:127 #: extras/forms/model_forms.py:156 extras/forms/model_forms.py:197 @@ -6367,8 +6363,8 @@ msgid "Content types" msgstr "Типы контента" #: extras/forms/bulk_import.py:36 extras/forms/bulk_import.py:117 -#: extras/forms/bulk_import.py:132 extras/forms/bulk_import.py:155 -#: extras/forms/bulk_import.py:179 tenancy/forms/bulk_import.py:96 +#: extras/forms/bulk_import.py:138 extras/forms/bulk_import.py:161 +#: extras/forms/bulk_import.py:185 tenancy/forms/bulk_import.py:96 msgid "One or more assigned object types" msgstr "Один или несколько назначенных типов объектов" @@ -6417,29 +6413,40 @@ msgstr "" "дополнительными метками, разделенными двоеточием: «Choice1:First Choice, " "Choice2:Second Choice»" -#: extras/forms/bulk_import.py:182 +#: extras/forms/bulk_import.py:120 extras/models/models.py:353 +msgid "button class" +msgstr "класс кнопок" + +#: extras/forms/bulk_import.py:123 extras/models/models.py:357 +msgid "" +"The class of the first link in a group will be used for the dropdown button" +msgstr "" +"Класс первой ссылки в группе будет использоваться для кнопки раскрывающегося" +" списка" + +#: extras/forms/bulk_import.py:188 msgid "Action object" msgstr "Объект действия" -#: extras/forms/bulk_import.py:184 +#: extras/forms/bulk_import.py:190 msgid "Webhook name or script as dotted path module.Class" msgstr "Имя веб-хука или скрипт в виде пунктирного пути module.Class" -#: extras/forms/bulk_import.py:205 +#: extras/forms/bulk_import.py:211 #, python-brace-format msgid "Webhook {name} not found" msgstr "Вебхук {name} не найден" -#: extras/forms/bulk_import.py:214 +#: extras/forms/bulk_import.py:220 #, python-brace-format msgid "Script {name} not found" msgstr "Сценарий {name} не найден" -#: extras/forms/bulk_import.py:236 +#: extras/forms/bulk_import.py:242 msgid "Assigned object type" msgstr "Назначенный тип объекта" -#: extras/forms/bulk_import.py:241 +#: extras/forms/bulk_import.py:247 msgid "The classification of entry" msgstr "Классификация записей" @@ -6522,7 +6529,7 @@ msgstr "Группы сайтов" #: extras/forms/filtersets.py:364 extras/forms/model_forms.py:408 #: netbox/navigation/menu.py:21 msgid "Locations" -msgstr "Местоположения" +msgstr "Локации" #: extras/forms/filtersets.py:369 extras/forms/model_forms.py:413 msgid "Device types" @@ -6897,7 +6904,8 @@ msgstr "Допустимы только буквенно-цифровые сим #: extras/models/customfields.py:101 msgid "Double underscores are not permitted in custom field names." msgstr "" -"В именах настраиваемых полей недопустимо использовать двойное подчеркивание." +"В именах настраиваемых полей недопустимо использовать два подчеркивания " +"подряд (зарезервировано)." #: extras/models/customfields.py:112 msgid "" @@ -7321,10 +7329,9 @@ msgid "" "username, request_id, and data." msgstr "" "Шаблон Jinja2 для настраиваемого тела запроса. Если поле пусто, будет " -"добавлен объект JSON, представляющий изменение. Доступные контекстные данные" -" включают: событие, модель, отметка " -"времени, имя пользователя, идентификатор " -"запроса, и данные." +"добавлен объект JSON с изменениями. Доступные контекстные данные включают: " +"event, model, timestamp, " +"username, request_id, и data." #: extras/models/models.py:234 msgid "secret" @@ -7393,17 +7400,6 @@ msgstr "Код Jinja2 шаблона для URL-адреса" msgid "Links with the same group will appear as a dropdown menu" msgstr "Ссылки с той же группой появятся в выпадающем меню" -#: extras/models/models.py:353 -msgid "button class" -msgstr "класс кнопок" - -#: extras/models/models.py:357 -msgid "" -"The class of the first link in a group will be used for the dropdown button" -msgstr "" -"Класс первой ссылки в группе будет использоваться для кнопки раскрывающегося" -" списка" - #: extras/models/models.py:360 msgid "new window" msgstr "новое окно" @@ -7496,11 +7492,11 @@ msgstr "ширина изображения" #: extras/models/models.py:640 msgid "image attachment" -msgstr "вложение изображения" +msgstr "прикрепить изображение" #: extras/models/models.py:641 msgid "image attachments" -msgstr "вложения изображений" +msgstr "прикрепленные изображения" #: extras/models/models.py:655 #, python-brace-format @@ -7590,7 +7586,7 @@ msgid "staged changes" msgstr "поэтапные изменения" #: extras/models/tags.py:40 -msgid "The object type(s) to which this this tag can be applied." +msgid "The object type(s) to which this tag can be applied." msgstr "Тип (ы) объекта, к которому можно применить этот тег." #: extras/models/tags.py:49 @@ -7889,7 +7885,7 @@ msgid "VLAN number (1-4094)" msgstr "Номер VLAN (1-4094)" #: ipam/filtersets.py:437 ipam/filtersets.py:441 ipam/filtersets.py:533 -#: ipam/forms/model_forms.py:444 templates/tenancy/contact.html:54 +#: ipam/forms/model_forms.py:430 templates/tenancy/contact.html:54 #: tenancy/forms/bulk_edit.py:112 msgid "Address" msgstr "Адрес" @@ -7931,7 +7927,7 @@ msgstr "Интерфейс виртуальной машины (ID)" #: ipam/filtersets.py:614 msgid "FHRP group (ID)" -msgstr "Группа FHRP (идентификатор)" +msgstr "FHRP группа (ID)" #: ipam/filtersets.py:618 msgid "Is assigned to an interface" @@ -8006,7 +8002,7 @@ msgstr "Является частным" #: templates/ipam/aggregate.html:19 templates/ipam/asn.html:28 #: templates/ipam/asnrange.html:20 templates/ipam/rir.html:20 msgid "RIR" -msgstr "ВСАДНИКИ" +msgstr "RIR" #: ipam/forms/bulk_edit.py:168 msgid "Date added" @@ -8019,7 +8015,7 @@ msgstr "Длина префикса" #: ipam/forms/bulk_edit.py:252 ipam/forms/filtersets.py:236 #: templates/ipam/prefix.html:86 msgid "Is a pool" -msgstr "Это бассейн" +msgstr "Это пул" #: ipam/forms/bulk_edit.py:257 ipam/forms/bulk_edit.py:301 #: ipam/forms/filtersets.py:243 ipam/forms/filtersets.py:282 @@ -8058,7 +8054,7 @@ msgid "Authentication key" msgstr "Ключ аутентификации" #: ipam/forms/bulk_edit.py:404 ipam/forms/filtersets.py:369 -#: ipam/forms/model_forms.py:455 netbox/navigation/menu.py:376 +#: ipam/forms/model_forms.py:441 netbox/navigation/menu.py:376 #: templates/ipam/fhrpgroup.html:51 #: templates/wireless/inc/authentication_attrs.html:5 #: wireless/forms/bulk_edit.py:90 wireless/forms/bulk_edit.py:137 @@ -8073,13 +8069,13 @@ msgstr "Минимальное количество VLAN VID для детей" #: ipam/forms/bulk_edit.py:420 msgid "Maximum child VLAN VID" -msgstr "Максимальное количество идентификаторов VLAN для детей" +msgstr "Максимальный ID дочерней VLAN" -#: ipam/forms/bulk_edit.py:428 ipam/forms/model_forms.py:527 +#: ipam/forms/bulk_edit.py:428 ipam/forms/model_forms.py:531 msgid "Scope type" msgstr "Тип прицела" -#: ipam/forms/bulk_edit.py:489 ipam/forms/model_forms.py:600 +#: ipam/forms/bulk_edit.py:489 ipam/forms/model_forms.py:604 #: ipam/tables/vlans.py:71 templates/ipam/vlangroup.html:39 msgid "Scope" msgstr "Область применения" @@ -8088,8 +8084,8 @@ msgstr "Область применения" msgid "Site & Group" msgstr "Сайт и группа" -#: ipam/forms/bulk_edit.py:574 ipam/forms/model_forms.py:663 -#: ipam/forms/model_forms.py:697 ipam/tables/services.py:19 +#: ipam/forms/bulk_edit.py:574 ipam/forms/model_forms.py:667 +#: ipam/forms/model_forms.py:701 ipam/tables/services.py:19 #: ipam/tables/services.py:49 templates/ipam/service.html:39 #: templates/ipam/servicetemplate.html:24 msgid "Ports" @@ -8129,7 +8125,7 @@ msgid "Parent device of assigned interface (if any)" msgstr "Родительское устройство назначенного интерфейса (если есть)" #: ipam/forms/bulk_import.py:310 ipam/forms/bulk_import.py:496 -#: ipam/forms/model_forms.py:691 virtualization/filtersets.py:284 +#: ipam/forms/model_forms.py:695 virtualization/filtersets.py:284 #: virtualization/filtersets.py:323 virtualization/forms/bulk_edit.py:199 #: virtualization/forms/bulk_edit.py:325 #: virtualization/forms/bulk_import.py:146 @@ -8179,16 +8175,12 @@ msgstr "Тип прицела (приложение и модель)" #: ipam/forms/bulk_import.py:418 #, python-brace-format msgid "Minimum child VLAN VID (default: {minimum})" -msgstr "" -"Минимальное количество идентификаторов VLAN для детей (по умолчанию): " -"{minimum})" +msgstr "Минимальный ID дочерней VLAN (по умолчанию: {minimum})" #: ipam/forms/bulk_import.py:424 #, python-brace-format msgid "Maximum child VLAN VID (default: {maximum})" -msgstr "" -"Максимальное количество идентификаторов VLAN для детей (по умолчанию): " -"{maximum})" +msgstr "Максимальный ID дочерней VLAN (по умолчанию: {maximum})" #: ipam/forms/bulk_import.py:448 msgid "Assigned VLAN group" @@ -8249,7 +8241,7 @@ msgstr "Ассортимент" #: ipam/forms/filtersets.py:127 msgid "Start" -msgstr "Начните" +msgstr "Начало" #: ipam/forms/filtersets.py:131 msgid "End" @@ -8286,7 +8278,7 @@ msgstr "DNS-имя" #: ipam/forms/filtersets.py:401 ipam/forms/filtersets.py:494 #: ipam/models/vlans.py:156 templates/ipam/vlan.html:34 msgid "VLAN ID" -msgstr "ИДЕНТИФИКАТОР КЛАНА" +msgstr "VLAN ID" #: ipam/forms/filtersets.py:433 msgid "Minimum VID" @@ -8311,8 +8303,8 @@ msgstr "Порт" #: virtualization/forms/filtersets.py:189 #: virtualization/forms/filtersets.py:234 #: virtualization/forms/model_forms.py:223 -#: virtualization/tables/virtualmachines.py:115 -#: virtualization/tables/virtualmachines.py:168 vpn/choices.py:45 +#: virtualization/tables/virtualmachines.py:128 +#: virtualization/tables/virtualmachines.py:181 vpn/choices.py:45 #: vpn/forms/filtersets.py:289 vpn/forms/model_forms.py:161 #: vpn/forms/model_forms.py:172 vpn/forms/model_forms.py:274 msgid "Virtual Machine" @@ -8335,7 +8327,7 @@ msgstr "Назначение сайта/VLAN" msgid "IP Range" msgstr "Диапазон IP-адресов" -#: ipam/forms/model_forms.py:285 ipam/forms/model_forms.py:454 +#: ipam/forms/model_forms.py:285 ipam/forms/model_forms.py:440 #: templates/ipam/fhrpgroup.html:19 templates/ipam/ipaddress_edit.html:52 msgid "FHRP Group" msgstr "Группа компаний FHRP" @@ -8348,7 +8340,7 @@ msgstr "Сделайте этот IP-адрес основным для устр msgid "An IP address can only be assigned to a single object." msgstr "IP-адрес можно присвоить только одному объекту." -#: ipam/forms/model_forms.py:357 ipam/models/ip.py:877 +#: ipam/forms/model_forms.py:357 ipam/models/ip.py:896 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" @@ -8363,34 +8355,25 @@ msgstr "" "В качестве основных IP-адресов можно назначить только IP-адреса, назначенные" " интерфейсу." -#: ipam/forms/model_forms.py:373 -#, python-brace-format -msgid "{ip} is a network ID, which may not be assigned to an interface." -msgstr "" -"{ip} это сетевой идентификатор, который не может быть присвоен интерфейсу." - -#: ipam/forms/model_forms.py:379 -#, python-brace-format -msgid "" -"{ip} is a broadcast address, which may not be assigned to an interface." -msgstr "" -"{ip} это широковещательный адрес, который может не быть присвоен интерфейсу." - -#: ipam/forms/model_forms.py:456 +#: ipam/forms/model_forms.py:442 msgid "Virtual IP Address" msgstr "Виртуальный IP-адрес" -#: ipam/forms/model_forms.py:598 ipam/forms/model_forms.py:637 +#: ipam/forms/model_forms.py:523 +msgid "Assignment already exists" +msgstr "Задание уже существует" + +#: ipam/forms/model_forms.py:602 ipam/forms/model_forms.py:641 #: ipam/tables/ip.py:250 templates/ipam/vlan_edit.html:37 #: templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "Группа VLAN" -#: ipam/forms/model_forms.py:599 +#: ipam/forms/model_forms.py:603 msgid "Child VLANs" msgstr "Детские сети VLAN" -#: ipam/forms/model_forms.py:668 ipam/forms/model_forms.py:702 +#: ipam/forms/model_forms.py:672 ipam/forms/model_forms.py:706 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." @@ -8398,15 +8381,15 @@ msgstr "" "Список одного или нескольких номеров портов, разделенных запятыми. Диапазон " "можно указать с помощью дефиса." -#: ipam/forms/model_forms.py:673 templates/ipam/servicetemplate.html:12 +#: ipam/forms/model_forms.py:677 templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "Шаблон Службы" -#: ipam/forms/model_forms.py:724 +#: ipam/forms/model_forms.py:728 msgid "Service template" msgstr "Шаблон службы" -#: ipam/forms/model_forms.py:754 +#: ipam/forms/model_forms.py:758 msgid "" "Must specify name, protocol, and port(s) if not using a service template." msgstr "" @@ -8415,7 +8398,7 @@ msgstr "" #: ipam/models/asns.py:34 msgid "start" -msgstr "начните" +msgstr "Начало" #: ipam/models/asns.py:51 msgid "ASN range" @@ -8485,7 +8468,7 @@ msgstr "IP-пространство, управляемое этим RIR, счи #: ipam/models/ip.py:71 netbox/navigation/menu.py:170 msgid "RIRs" -msgstr "РИР" +msgstr "RIR's" #: ipam/models/ip.py:83 msgid "IPv4 or IPv6 network" @@ -8555,7 +8538,7 @@ msgstr "Основная функция этого префикса" #: ipam/models/ip.py:264 msgid "is a pool" -msgstr "это бассейн" +msgstr "это пул" #: ipam/models/ip.py:266 msgid "All IP addresses within this prefix are considered usable" @@ -8573,12 +8556,12 @@ msgstr "префиксы" msgid "Cannot create prefix with /0 mask." msgstr "Невозможно создать префикс с маской /0." -#: ipam/models/ip.py:323 ipam/models/ip.py:854 +#: ipam/models/ip.py:323 ipam/models/ip.py:873 #, python-brace-format msgid "VRF {vrf}" msgstr "VRF {vrf}" -#: ipam/models/ip.py:323 ipam/models/ip.py:854 +#: ipam/models/ip.py:323 ipam/models/ip.py:873 msgid "global table" msgstr "глобальная таблица" @@ -8674,12 +8657,25 @@ msgstr "IP-адреса" msgid "Cannot create IP address with /0 mask." msgstr "Невозможно создать IP-адрес с маской /0." -#: ipam/models/ip.py:856 +#: ipam/models/ip.py:850 +#, python-brace-format +msgid "{ip} is a network ID, which may not be assigned to an interface." +msgstr "" +"{ip} это идентификатор сети, который не может быть присвоен интерфейсу." + +#: ipam/models/ip.py:861 +#, python-brace-format +msgid "" +"{ip} is a broadcast address, which may not be assigned to an interface." +msgstr "" +"{ip} это широковещательный адрес, который может не быть присвоен интерфейсу." + +#: ipam/models/ip.py:875 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "Дубликат IP-адреса обнаружен в {table}: {ipaddress}" -#: ipam/models/ip.py:883 +#: ipam/models/ip.py:902 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "Только адресам IPv6 можно присвоить статус SLAAC" @@ -8719,19 +8715,19 @@ msgstr "Служба должна быть связана с устройств #: ipam/models/vlans.py:49 msgid "minimum VLAN ID" -msgstr "минимальный идентификатор VLAN" +msgstr "минимальный VLAN ID" #: ipam/models/vlans.py:55 msgid "Lowest permissible ID of a child VLAN" -msgstr "Наименьший допустимый идентификатор дочерней VLAN" +msgstr "Наименьший допустимый ID дочерней VLAN" #: ipam/models/vlans.py:58 msgid "maximum VLAN ID" -msgstr "максимальный идентификатор VLAN" +msgstr "максимальный VLAN ID" #: ipam/models/vlans.py:64 msgid "Highest permissible ID of a child VLAN" -msgstr "Максимально допустимый идентификатор детской VLAN" +msgstr "Максимально допустимый ID дочерней VLAN" #: ipam/models/vlans.py:85 msgid "VLAN groups" @@ -8761,7 +8757,7 @@ msgstr "Группа VLAN (опционально)" #: ipam/models/vlans.py:161 msgid "Numeric VLAN ID (1-4094)" -msgstr "Цифровой идентификатор VLAN (1-4094)" +msgstr "Цифровой VLAN ID (1-4094)" #: ipam/models/vlans.py:179 msgid "Operational status of this VLAN" @@ -8874,7 +8870,7 @@ msgstr "Глубина" #: ipam/tables/ip.py:261 msgid "Pool" -msgstr "Бассейн" +msgstr "Пул" #: ipam/tables/ip.py:264 ipam/tables/ip.py:317 msgid "Marked Utilized" @@ -8908,7 +8904,7 @@ msgstr "Тип прицела" #: ipam/tables/vlans.py:107 ipam/tables/vlans.py:210 #: templates/dcim/inc/interface_vlans_table.html:4 msgid "VID" -msgstr "ВИДЕО" +msgstr "VID" #: ipam/tables/vrfs.py:30 msgid "RD" @@ -9086,21 +9082,20 @@ msgstr "Предпочитайте адреса IPv4, а не IPv6" #: netbox/config/parameters.py:84 msgid "Rack unit height" -msgstr "Высота стеллажа" +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 "Ширина стеллажа" +msgstr "Ширина стойки" #: netbox/config/parameters.py:93 msgid "Default unit width for rendered rack elevations" -msgstr "" -"Ширина единиц измерения по умолчанию для визуализированных высот стеллажей" +msgstr "Ширина юнита по умолчанию для визуализированных высот стоек" #: netbox/config/parameters.py:100 msgid "Powerfeed voltage" @@ -9254,7 +9249,7 @@ msgstr "{class_name} необходимо указать класс модели #: netbox/models/features.py:278 #, python-brace-format msgid "Unknown field name '{name}' in custom field data." -msgstr "Неизвестное имя поля '{name}'в данных произвольных полей." +msgstr "Неизвестное имя поля '{name}' в данных для настраиваемых полей." #: netbox/models/features.py:284 #, python-brace-format @@ -9339,7 +9334,7 @@ msgstr "Роли устройств" #: netbox/navigation/menu.py:68 templates/dcim/device.html:162 #: templates/dcim/virtualdevicecontext.html:8 msgid "Virtual Device Contexts" -msgstr "Контексты виртуальных устройств" +msgstr "Виртуальные контексты" #: netbox/navigation/menu.py:76 msgid "Manufacturers" @@ -9351,7 +9346,7 @@ msgstr "Компоненты устройства" #: netbox/navigation/menu.py:92 templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" -msgstr "Роли предметов инвентаря" +msgstr "Роли предметов" #: netbox/navigation/menu.py:99 netbox/navigation/menu.py:103 msgid "Connections" @@ -9371,15 +9366,15 @@ msgstr "Интерфейсные подключения" #: netbox/navigation/menu.py:114 msgid "Console Connections" -msgstr "Подключения к консоли" +msgstr "Консольные подключения" #: netbox/navigation/menu.py:119 msgid "Power Connections" -msgstr "Подключения питания" +msgstr "Подключения кабелей питания" #: netbox/navigation/menu.py:135 msgid "Wireless LAN Groups" -msgstr "Группы беспроводных локальных сетей" +msgstr "Группы WLAN" #: netbox/navigation/menu.py:156 msgid "Prefix & VLAN Roles" @@ -9410,7 +9405,7 @@ msgstr "VPN" #: netbox/navigation/menu.py:203 netbox/navigation/menu.py:205 #: vpn/tables/tunnels.py:24 msgid "Tunnels" -msgstr "Тоннели" +msgstr "Туннели" #: netbox/navigation/menu.py:206 templates/vpn/tunnelgroup.html:8 msgid "Tunnel Groups" @@ -9423,12 +9418,12 @@ msgstr "Окончание туннелей" #: netbox/navigation/menu.py:211 netbox/navigation/menu.py:213 #: vpn/models/l2vpn.py:64 msgid "L2VPNs" -msgstr "VPN-сервисы L2P" +msgstr "L2VPN" #: netbox/navigation/menu.py:214 templates/vpn/l2vpn.html:57 #: templates/vpn/tunnel.html:73 vpn/tables/tunnels.py:58 msgid "Terminations" -msgstr "Прекращения" +msgstr "Соединения" #: netbox/navigation/menu.py:220 msgid "IKE Proposals" @@ -9464,7 +9459,7 @@ msgstr "Виртуальные машины" #: templates/virtualization/virtualmachine.html:177 #: templates/virtualization/virtualmachine/base.html:32 #: templates/virtualization/virtualmachine_list.html:21 -#: virtualization/tables/virtualmachines.py:90 virtualization/views.py:389 +#: virtualization/tables/virtualmachines.py:103 virtualization/views.py:389 msgid "Virtual Disks" msgstr "Виртуальные диски" @@ -9474,19 +9469,19 @@ msgstr "Типы кластеров" #: netbox/navigation/menu.py:247 msgid "Cluster Groups" -msgstr "Кластерные группы" +msgstr "Группы кластеров" #: netbox/navigation/menu.py:261 msgid "Circuit Types" -msgstr "Типы цепей" +msgstr "Типы каналов связи" #: netbox/navigation/menu.py:265 netbox/navigation/menu.py:267 msgid "Providers" -msgstr "Поставщики" +msgstr "Провайдеры" #: netbox/navigation/menu.py:268 templates/circuits/provider.html:53 msgid "Provider Accounts" -msgstr "Учетные записи поставщиков" +msgstr "Аккаунты провайдеров" #: netbox/navigation/menu.py:269 msgid "Provider Networks" @@ -9546,7 +9541,7 @@ msgstr "Сохраненные фильтры" #: netbox/navigation/menu.py:316 msgid "Image Attachments" -msgstr "Вложения изображений" +msgstr "Прикрепленные Изображения" #: netbox/navigation/menu.py:320 msgid "Reports & Scripts" @@ -9576,7 +9571,7 @@ msgstr "Вебхуки" #: netbox/views/generic/feature_views.py:151 #: templates/extras/report/base.html:37 templates/extras/script/base.html:36 msgid "Jobs" -msgstr "Вакансии" +msgstr "Задачи" #: netbox/navigation/menu.py:362 msgid "Logging" @@ -9819,7 +9814,7 @@ msgstr "Журнал изменений" #: netbox/views/generic/feature_views.py:91 msgid "Journal" -msgstr "журнал" +msgstr "Журнал" #: netbox/views/generic/object_views.py:105 #, python-brace-format @@ -10090,7 +10085,7 @@ msgstr "Документы" #: templates/base/layout.html:139 templates/rest_framework/api.html:10 msgid "REST API" -msgstr "ОСТАЛЬНОЕ API" +msgstr "REST API" #: templates/base/layout.html:144 msgid "REST API documentation" @@ -10150,7 +10145,7 @@ msgstr "Сведения об увольнении" #: templates/circuits/circuittype.html:10 msgid "Add Circuit" -msgstr "Добавить цепь" +msgstr "Добавить канал связи" #: templates/circuits/inc/circuit_termination.html:9 #: templates/dcim/devicetype/component_templates.html:33 @@ -10181,7 +10176,7 @@ msgstr "Обмен" #: templates/circuits/inc/circuit_termination.html:26 #, python-format msgid "Termination %(side)s" -msgstr "Прекращение %(side)s" +msgstr "Окончания %(side)s" #: templates/circuits/inc/circuit_termination.html:42 #: templates/dcim/cable.html:70 templates/dcim/cable.html:76 @@ -10262,7 +10257,7 @@ msgstr "Патч-панель/порт" #: templates/circuits/provider.html:11 msgid "Add circuit" -msgstr "Добавить цепь" +msgstr "Добавить канал связи" #: templates/circuits/provideraccount.html:17 msgid "Provider Account" @@ -10270,11 +10265,11 @@ msgstr "Учетная запись поставщика" #: templates/core/configrevision.html:47 msgid "Default unit height" -msgstr "Высота единицы измерения по умолчанию" +msgstr "Высота юнита по умолчанию" #: templates/core/configrevision.html:51 msgid "Default unit width" -msgstr "Ширина блока по умолчанию" +msgstr "Ширина юнита по умолчанию" #: templates/core/configrevision.html:63 msgid "Default voltage" @@ -10390,8 +10385,8 @@ msgstr "Планирование" #: templates/core/job.html:66 #, python-format -msgid "every %(interval)s seconds" -msgstr "каждый %(interval)s секунды" +msgid "every %(interval)s minutes" +msgstr "каждый %(interval)s протокол" #: templates/dcim/bulk_disconnect.html:9 #, python-format @@ -10645,7 +10640,7 @@ msgstr "Контекстные данные" #: templates/dcim/device/render_config.html:57 #: templates/virtualization/virtualmachine/render_config.html:57 msgid "Download" -msgstr "Загрузить" +msgstr "Скачать" #: templates/dcim/device/render_config.html:60 #: templates/virtualization/virtualmachine/render_config.html:60 @@ -10689,7 +10684,7 @@ msgstr "Отсек для устройств" #: templates/dcim/devicebay.html:48 msgid "Installed Device" -msgstr "Установленное устройство" +msgstr "Вставленное устройство" #: templates/dcim/devicebay_delete.html:6 #, python-format @@ -10745,7 +10740,7 @@ msgstr "Номер детали" #: templates/dcim/devicetype.html:40 msgid "Height (U" -msgstr "Высота (U)" +msgstr "Высота (U" #: templates/dcim/devicetype.html:44 msgid "Exclude From Utilization" @@ -10757,7 +10752,7 @@ msgstr "Родитель/ребенок" #: templates/dcim/devicetype.html:74 msgid "Front Image" -msgstr "Изображение на передней панели" +msgstr "Изображение спереди" #: templates/dcim/devicetype.html:86 msgid "Rear Image" @@ -10779,7 +10774,7 @@ msgstr "Состояние подключения" #: templates/dcim/inc/cable_termination.html:65 msgid "No termination" -msgstr "Без увольнения" +msgstr "Без окончания" #: templates/dcim/inc/cable_toggle_buttons.html:4 msgid "Mark Planned" @@ -10804,7 +10799,7 @@ msgstr "Конечные точки пути" #: templates/dcim/inc/endpoint_connection.html:8 #: templates/dcim/powerfeed.html:128 templates/dcim/rearport.html:101 msgid "Not connected" -msgstr "Не подключен" +msgstr "Не подключено" #: templates/dcim/inc/interface_vlans_table.html:6 msgid "Untagged" @@ -10855,7 +10850,7 @@ msgstr "Беспроводная связь" #: templates/dcim/interface.html:226 vpn/choices.py:55 msgid "Peer" -msgstr "сверстник" +msgstr "Peer" #: templates/dcim/interface.html:238 #: templates/wireless/inc/wirelesslink_interface.html:26 @@ -10883,7 +10878,7 @@ msgstr "Ширина канала" #: wireless/forms/filtersets.py:79 wireless/models.py:81 #: wireless/models.py:155 wireless/tables/wirelesslan.py:44 msgid "SSID" -msgstr "СКАЗАЛ" +msgstr "SSID" #: templates/dcim/interface.html:316 msgid "LAG Members" @@ -10906,7 +10901,7 @@ msgstr "Родительский товар" #: templates/dcim/inventoryitem.html:49 msgid "Part ID" -msgstr "Идентификатор детали" +msgstr "Номер модели" #: templates/dcim/inventoryitem_bulk_delete.html:5 msgid "This will also delete all child inventory items of those listed" @@ -10924,15 +10919,15 @@ msgstr "Розетка питания" #: templates/dcim/location.html:17 msgid "Add Child Location" -msgstr "Добавить местоположение ребенка" +msgstr "Добавить дочернюю локацию" #: templates/dcim/location.html:76 msgid "Child Locations" -msgstr "Местонахождение детей" +msgstr "Дочерние локации" #: templates/dcim/location.html:84 templates/dcim/site.html:137 msgid "Add a Location" -msgstr "Добавить местоположение" +msgstr "Добавить локацию" #: templates/dcim/location.html:98 templates/dcim/site.html:151 msgid "Add a Device" @@ -10970,7 +10965,7 @@ msgstr "A" #: templates/dcim/poweroutlet.html:51 msgid "Feed Leg" -msgstr "Кормовая ножка" +msgstr "Фаза электропитания" #: templates/dcim/powerpanel.html:77 msgid "Add Power Feeds" @@ -10978,11 +10973,11 @@ msgstr "Добавить каналы питания" #: templates/dcim/powerport.html:47 msgid "Maximum Draw" -msgstr "Максимальная ничья" +msgstr "Максимальное потребление" #: templates/dcim/powerport.html:51 msgid "Allocated Draw" -msgstr "Распределенная ничья" +msgstr "Выделенная мощность" #: templates/dcim/rack.html:66 msgid "Space Utilization" @@ -10990,7 +10985,7 @@ msgstr "Использование пространства" #: templates/dcim/rack.html:96 msgid "descending" -msgstr "спускаясь" +msgstr "по убыванию" #: templates/dcim/rack.html:96 msgid "ascending" @@ -10998,7 +10993,7 @@ msgstr "по возрастанию" #: templates/dcim/rack.html:99 msgid "Starting Unit" -msgstr "Пусковой блок" +msgstr "Начальный юнит" #: templates/dcim/rack.html:125 msgid "Mounting Depth" @@ -11018,7 +11013,7 @@ msgstr "Общий вес" #: templates/dcim/rack.html:173 templates/dcim/rack_elevation_list.html:16 msgid "Images and Labels" -msgstr "Изображения и этикетки" +msgstr "Изображения и лейблы" #: templates/dcim/rack.html:174 templates/dcim/rack_elevation_list.html:17 msgid "Images only" @@ -11026,7 +11021,7 @@ msgstr "Только изображения" #: templates/dcim/rack.html:175 templates/dcim/rack_elevation_list.html:18 msgid "Labels only" -msgstr "Только этикетки" +msgstr "Только лейблы" #: templates/dcim/rack/reservations.html:9 msgid "Add reservation" @@ -11042,7 +11037,7 @@ msgstr "Внешние размеры" #: templates/dcim/rack_edit.html:56 templates/dcim/rack_edit.html:71 msgid "Unit" -msgstr "Единица" +msgstr "Юнит" #: templates/dcim/rack_elevation_list.html:12 msgid "View List" @@ -11078,7 +11073,7 @@ msgstr "Добавить сайт" #: templates/dcim/region.html:56 msgid "Child Regions" -msgstr "Детские регионы" +msgstr "Дочерние регионы" #: templates/dcim/region.html:64 msgid "Add Region" @@ -11106,7 +11101,7 @@ msgstr "Физический адрес" #: templates/dcim/site.html:81 msgid "Map" -msgstr "карта" +msgstr "Карта" #: templates/dcim/site.html:92 msgid "Shipping Address" @@ -11116,7 +11111,7 @@ msgstr "Адрес доставки" #: templates/tenancy/tenantgroup.html:58 #: templates/wireless/wirelesslangroup.html:56 msgid "Child Groups" -msgstr "Детские группы" +msgstr "Дочерние группы" #: templates/dcim/sitegroup.html:64 msgid "Add Site Group" @@ -11155,7 +11150,7 @@ msgstr "Редактирование виртуального корпуса %(n #: templates/dcim/virtualchassis_edit.html:54 msgid "Rack/Unit" -msgstr "Стойка/блок" +msgstr "Стойка/Юнит" #: templates/dcim/virtualchassis_remove_member.html:5 msgid "Remove Virtual Chassis Member" @@ -11292,7 +11287,7 @@ msgstr "Автор" #: templates/extras/admin/plugins_list.html:25 msgid "Author Email" -msgstr "Электронная почта автора" +msgstr "Почта" #: templates/extras/admin/plugins_list.html:27 #: templates/vpn/ipsecprofile.html:47 vpn/forms/bulk_edit.py:140 @@ -11357,7 +11352,7 @@ msgstr "Видимый пользовательский интерфейс" #: templates/extras/customfield.html:86 msgid "UI Editable" -msgstr "Редактируемый пользовательский интерфейс" +msgstr "Редактируемый UI" #: templates/extras/customfield.html:108 msgid "Validation Rules" @@ -11422,15 +11417,15 @@ msgstr "Пока не добавлено ни одной закладки." #: templates/extras/dashboard/widgets/objectcounts.html:15 msgid "No permission" -msgstr "Нет разрешения" +msgstr "Нет прав" #: templates/extras/dashboard/widgets/objectlist.html:6 msgid "No permission to view this content" -msgstr "Нет разрешения на просмотр этого контента" +msgstr "Нет прав на просмотр этого контента" #: templates/extras/dashboard/widgets/objectlist.html:10 msgid "Unable to load content. Invalid view name" -msgstr "Невозможно загрузить содержимое. Неверное имя представления" +msgstr "Невозможно загрузить содержимое. Неверное имя" #: templates/extras/dashboard/widgets/rssfeed.html:12 msgid "No content found" @@ -11486,7 +11481,7 @@ msgstr "Уровень" #: templates/extras/htmx/report_result.html:46 #: templates/extras/htmx/script_result.html:27 msgid "Message" -msgstr "Послание" +msgstr "Сообщение" #: templates/extras/htmx/script_result.html:21 msgid "Script Log" @@ -11571,7 +11566,7 @@ msgstr "Разница" #: templates/extras/objectchange.html:87 msgid "Previous" -msgstr "Предыдущее" +msgstr "Предыдущий" #: templates/extras/objectchange.html:90 msgid "Next" @@ -11614,7 +11609,7 @@ msgstr "Этот отчет недействителен и не может бы #: templates/extras/report.html:23 templates/extras/report_list.html:88 msgid "Run Again" -msgstr "Беги снова" +msgstr "Повторить" #: templates/extras/report.html:25 templates/extras/report_list.html:90 msgid "Run Report" @@ -11622,7 +11617,7 @@ msgstr "Запустить отчет" #: templates/extras/report.html:36 msgid "Last run" -msgstr "Последний забег" +msgstr "Последний запуск" #: templates/extras/report/base.html:30 msgid "Report" @@ -11630,7 +11625,7 @@ msgstr "Отчет" #: templates/extras/report_list.html:48 templates/extras/script_list.html:54 msgid "Last Run" -msgstr "Последний забег" +msgstr "Последний запуск" #: templates/extras/report_list.html:70 templates/extras/script_list.html:77 msgid "Never" @@ -11659,7 +11654,7 @@ msgstr "" #: templates/extras/script.html:13 msgid "You do not have permission to run scripts" -msgstr "У вас нет разрешения на запуск сценариев" +msgstr "У вас нет разрешения на запуск скриптов" #: templates/extras/script.html:37 msgid "Run Script" @@ -11676,7 +11671,7 @@ msgstr "" #: templates/extras/script_list.html:91 msgid "No Scripts Found" -msgstr "Сценарии не найдены" +msgstr "Скрипты не найдены" #: templates/extras/script_list.html:94 #, python-format @@ -11689,11 +11684,11 @@ msgstr "" #: templates/extras/script_result.html:42 msgid "Log" -msgstr "журнал" +msgstr "Журнал" #: templates/extras/tag.html:35 msgid "Tagged Items" -msgstr "Помеченные товары" +msgstr "Элементы с тэгом" #: templates/extras/tag.html:47 msgid "Allowed Object Types" @@ -11729,7 +11724,7 @@ msgstr "Дополнительные заголовки" #: templates/extras/webhook.html:85 msgid "Body Template" -msgstr "Шаблон тела" +msgstr "Шаблон тела запроса" #: templates/generic/bulk_add_component.html:15 msgid "Bulk Creation" @@ -11826,8 +11821,8 @@ msgid "" "%(example)s would identify a VRF by its route distinguisher." msgstr "" "На связанные объекты можно ссылаться с помощью любого уникального атрибута. " -"Например, %(example)s будет идентифицировать VRF по " -"идентификатору маршрута." +"Например, %(example)s будет идентифицировать VRF по индикатору " +"маршрута." #: templates/generic/bulk_remove.html:13 msgid "Confirm Bulk Removal" @@ -12015,11 +12010,11 @@ msgstr "Теги не назначены" #: templates/inc/profile_button.html:12 templates/inc/profile_button.html:62 msgid "Dark Mode" -msgstr "Темный режим" +msgstr "Темная тема" #: templates/inc/profile_button.html:45 msgid "Log Out" -msgstr "Выйти из системы" +msgstr "Выйти" #: templates/inc/profile_button.html:53 msgid "Log In" @@ -12131,7 +12126,7 @@ msgstr "Назначение интерфейса" #: templates/ipam/ipaddress_edit.html:74 msgid "NAT IP (Inside" -msgstr "NAT IP (внутренний)" +msgstr "NAT IP (внутренний" #: templates/ipam/iprange.html:20 msgid "Starting Address" @@ -12175,7 +12170,7 @@ msgstr "Сетевая маска" #: templates/ipam/prefix.html:195 msgid "Wildcard Mask" -msgstr "Маска подстановочных знаков" +msgstr "Обратная маска" #: templates/ipam/prefix.html:199 msgid "Broadcast Address" @@ -12211,7 +12206,7 @@ msgstr "Импорт VRF" #: templates/ipam/routetarget.html:49 msgid "Exporting VRFs" -msgstr "Экспорт файлов VRF" +msgstr "Экспорт VRF" #: templates/ipam/routetarget.html:60 msgid "Importing L2VPNs" @@ -12248,11 +12243,11 @@ msgstr "Добавить VLAN" #: templates/ipam/vlangroup.html:43 msgid "Permitted VIDs" -msgstr "Разрешенные видео" +msgstr "Разрешенные VID" #: templates/ipam/vrf.html:19 msgid "Route Distinguisher" -msgstr "Дифференцировщик маршрута" +msgstr "RD" #: templates/ipam/vrf.html:32 msgid "Unique IP Space" @@ -12277,11 +12272,11 @@ msgstr "Переключить цветовой режим" #: templates/media_failure.html:7 msgid "Static Media Failure - NetBox" -msgstr "Сбой статического носителя - NetBox" +msgstr "Ошибка статичных медиа - NetBox" #: templates/media_failure.html:21 msgid "Static Media Failure" -msgstr "Сбой статического носителя" +msgstr "Ошибка статичных медиа" #: templates/media_failure.html:23 msgid "The following static media file failed to load" @@ -12297,9 +12292,9 @@ msgid "" " This installs the most recent iteration of each static file into the static" " root path." msgstr "" -"manage.py собирает статические данные был запущен во время " -"последнего обновления. При этом последняя итерация каждого статического " -"файла устанавливается в статический корневой путь." +"manage.py collectstatic была запущен во время последнего " +"обновления. При этом последняя итерация каждого статического файла " +"устанавливается в статический корневой путь." #: templates/media_failure.html:35 #, python-format @@ -12308,10 +12303,8 @@ msgid "" "the STATIC_ROOT path. Refer to the " "installation documentation for further guidance." msgstr "" -"Служба HTTP (например, nginx или Apache) настроена на обслуживание файлов из" -" СТАТИЧЕСКИЙ КОРЕНЬ путь. Обратитесь к документация по установке для получения " -"дополнительных рекомендаций." +"Служба HTTP (например, nginx или Apache) настроена на обслуживание файлов из STATIC_ROOT\n" +" путь. Обратитесь к документация по установке для получения дополнительных рекомендаций." #: templates/media_failure.html:47 #, python-format @@ -12438,7 +12431,7 @@ msgstr "Дисковое пространство" #: templates/virtualization/virtualmachine.html:147 msgctxt "Abbreviation for gigabyte" msgid "GB" -msgstr "ГИГАБАЙТ" +msgstr "ГБ" #: templates/virtualization/cluster/base.html:18 msgid "Add Virtual Machine" @@ -12506,7 +12499,7 @@ msgstr "Версия IKE" #: templates/vpn/ikepolicy.html:30 msgid "Pre-Shared Key" -msgstr "Предварительный общий ключ" +msgstr "Pre-Shared ключ" #: templates/vpn/ikepolicy.html:34 #: templates/wireless/inc/authentication_attrs.html:21 @@ -12585,15 +12578,15 @@ msgstr "Атрибуты L2VPN" #: templates/vpn/l2vpn.html:65 templates/vpn/tunnel.html:81 msgid "Add a Termination" -msgstr "Добавить увольнение" +msgstr "Добавить окончание" #: templates/vpn/l2vpntermination_edit.html:9 msgid "L2VPN Termination" -msgstr "Прекращение действия L2VPN" +msgstr "L2VPN окончания" #: templates/vpn/tunnel.html:9 msgid "Add Termination" -msgstr "Добавить прекращение" +msgstr "Добавить окончание" #: templates/vpn/tunnel.html:38 vpn/forms/bulk_edit.py:48 #: vpn/forms/bulk_import.py:48 vpn/forms/filtersets.py:56 @@ -12622,7 +12615,7 @@ msgstr "Туннельная группа" #: templates/vpn/tunneltermination.html:10 msgid "Tunnel Termination" -msgstr "Прекращение туннеля" +msgstr "Окончание Туннеля" #: templates/vpn/tunneltermination.html:36 vpn/forms/bulk_import.py:107 #: vpn/forms/model_forms.py:101 vpn/forms/model_forms.py:137 @@ -12632,7 +12625,7 @@ msgstr "Внешний IP-адрес" #: templates/vpn/tunneltermination.html:53 msgid "Peer Terminations" -msgstr "Прекращение контрактов со стороны коллег" +msgstr "Конечные Точки" #: templates/wireless/inc/authentication_attrs.html:13 msgid "Cipher" @@ -12640,7 +12633,7 @@ msgstr "Шифр" #: templates/wireless/inc/authentication_attrs.html:17 msgid "PSK" -msgstr "ПСК" +msgstr "PSK" #: templates/wireless/inc/wirelesslink_interface.html:35 #: templates/wireless/inc/wirelesslink_interface.html:45 @@ -12675,7 +12668,7 @@ msgstr "Свойства ссылки" #: tenancy/choices.py:19 msgid "Tertiary" -msgstr "Высшее образование" +msgstr "Третичный" #: tenancy/choices.py:20 msgid "Inactive" @@ -12743,7 +12736,7 @@ msgstr "контактные роли" #: tenancy/models/contacts.py:68 msgid "title" -msgstr "титул" +msgstr "название" #: tenancy/models/contacts.py:73 msgid "phone" @@ -12751,7 +12744,7 @@ msgstr "телефон" #: tenancy/models/contacts.py:78 msgid "email" -msgstr "письмо" +msgstr "email" #: tenancy/models/contacts.py:87 msgid "link" @@ -12896,7 +12889,7 @@ msgid "" msgstr "" "Разрешенные сети IPv4/IPv6, из которых можно использовать токен. Оставьте " "поле пустым, чтобы не было ограничений. Пример: 10.1.1.0/24, " -"192.168.10.16/32, 2001 год: дБ 8:1:/64" +"192.168.10.16/32, 2001:DB8:1::/64" #: users/forms/model_forms.py:177 msgid "Confirm password" @@ -12947,102 +12940,102 @@ msgstr "Ограничения для этого типа объектов не msgid "Invalid filter for {model}: {error}" msgstr "Неверный фильтр для {model}: {error}" -#: users/models.py:54 +#: users/models.py:55 msgid "user" msgstr "пользователя" -#: users/models.py:55 +#: users/models.py:56 msgid "users" msgstr "пользователей" -#: users/models.py:66 +#: users/models.py:67 msgid "A user with this username already exists." msgstr "Пользователь с таким именем уже существует." -#: users/models.py:78 vpn/models/crypto.py:42 +#: users/models.py:79 vpn/models/crypto.py:42 msgid "group" msgstr "группа" -#: users/models.py:79 +#: users/models.py:80 msgid "groups" msgstr "групп" -#: users/models.py:106 users/models.py:107 +#: users/models.py:107 users/models.py:108 msgid "user preferences" msgstr "пользовательские настройки" -#: users/models.py:174 +#: users/models.py:175 #, python-brace-format msgid "Key '{path}' is a leaf node; cannot assign new keys" msgstr "Ключ '{path}'является листовым узлом; не может назначать новые ключи" -#: users/models.py:186 +#: users/models.py:187 #, python-brace-format msgid "Key '{path}' is a dictionary; cannot assign a non-dictionary value" msgstr "" "Ключ '{path}'— словарь; не может присвоить значение, отличное от словаря" -#: users/models.py:252 +#: users/models.py:253 msgid "expires" msgstr "истекает" -#: users/models.py:257 +#: users/models.py:258 msgid "last used" msgstr "последний раз использованный" -#: users/models.py:262 +#: users/models.py:263 msgid "key" msgstr "ключ" -#: users/models.py:268 +#: users/models.py:269 msgid "write enabled" msgstr "запись включена" -#: users/models.py:270 +#: users/models.py:271 msgid "Permit create/update/delete operations using this key" msgstr "" "Разрешить операции создания/обновления/удаления с использованием этого ключа" -#: users/models.py:281 +#: users/models.py:282 msgid "allowed IPs" msgstr "разрешенные IP-адреса" -#: users/models.py:283 +#: users/models.py:284 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 "" "Разрешенные сети IPv4/IPv6, из которых можно использовать токен. Оставьте " "поле пустым, чтобы не было ограничений. Пример: «10.1.1.0/24, " -"192.168.10.16/32, 2001: БД 8:1: /64»" +"192.168.10.16/32, 2001:DB8:1::/64»" -#: users/models.py:291 +#: users/models.py:296 msgid "token" msgstr "токен" -#: users/models.py:292 +#: users/models.py:297 msgid "tokens" msgstr "токены" -#: users/models.py:373 +#: users/models.py:378 msgid "The list of actions granted by this permission" msgstr "Список действий, предусмотренных этим разрешением" -#: users/models.py:378 +#: users/models.py:383 msgid "constraints" msgstr "ограничения" -#: users/models.py:379 +#: users/models.py:384 msgid "" "Queryset filter matching the applicable objects of the selected type(s)" msgstr "" "Фильтр Queryset, соответствующий применимым объектам выбранного типа (типов)" -#: users/models.py:386 +#: users/models.py:391 msgid "permission" msgstr "разрешение" -#: users/models.py:387 +#: users/models.py:392 msgid "permissions" msgstr "разрешения" @@ -13065,7 +13058,7 @@ msgstr "Роза" #: utilities/choices.py:139 msgid "Fuchsia" -msgstr "фуксия" +msgstr "Фуксия" #: utilities/choices.py:141 msgid "Dark Purple" @@ -13077,7 +13070,7 @@ msgstr "Светло-синий" #: utilities/choices.py:147 msgid "Aqua" -msgstr "вода" +msgstr "Бирюзовый" #: utilities/choices.py:148 msgid "Dark Green" @@ -13093,7 +13086,7 @@ msgstr "Лайм" #: utilities/choices.py:153 msgid "Amber" -msgstr "янтарь" +msgstr "Янтарь" #: utilities/choices.py:155 msgid "Dark Orange" @@ -13101,7 +13094,7 @@ msgstr "Темно-оранжевый" #: utilities/choices.py:156 msgid "Brown" -msgstr "коричневый" +msgstr "Коричневый" #: utilities/choices.py:157 msgid "Light Grey" @@ -13312,45 +13305,54 @@ msgstr "" "Этот объект был изменен с момента визуализации формы. Подробности см. в " "журнале изменений объекта." -#: utilities/forms/utils.py:42 utilities/forms/utils.py:65 -#: utilities/forms/utils.py:77 utilities/forms/utils.py:80 +#: utilities/forms/utils.py:42 utilities/forms/utils.py:68 +#: utilities/forms/utils.py:85 utilities/forms/utils.py:87 #, python-brace-format msgid "Range \"{value}\" is invalid." msgstr "Ассортимент»{value}\"недействительно." -#: utilities/forms/utils.py:225 +#: utilities/forms/utils.py:74 +#, python-brace-format +msgid "" +"Invalid range: Ending value ({end}) must be greater than beginning value " +"({begin})." +msgstr "" +"Неверный диапазон: конечное значение ({end}) должно быть больше начального " +"значения ({begin})." + +#: utilities/forms/utils.py:232 #, python-brace-format msgid "Duplicate or conflicting column header for \"{field}\"" msgstr "Повторяющийся или конфликтующий заголовок столбца для»{field}»" -#: utilities/forms/utils.py:231 +#: utilities/forms/utils.py:238 #, python-brace-format msgid "Duplicate or conflicting column header for \"{header}\"" msgstr "Повторяющийся или конфликтующий заголовок столбца для»{header}»" -#: utilities/forms/utils.py:240 +#: utilities/forms/utils.py:247 #, python-brace-format msgid "Row {row}: Expected {count_expected} columns but found {count_found}" msgstr "" "Ряд {row}: Ожидается {count_expected} столбцы, но найдены {count_found}" -#: utilities/forms/utils.py:263 +#: utilities/forms/utils.py:270 #, python-brace-format msgid "Unexpected column header \"{field}\" found." msgstr "Неожиданный заголовок столбца»{field}«найдено." -#: utilities/forms/utils.py:265 +#: utilities/forms/utils.py:272 #, python-brace-format msgid "Column \"{field}\" is not a related object; cannot use dots" msgstr "" "Столбец»{field}\"не является родственным объектом; нельзя использовать точки" -#: utilities/forms/utils.py:269 +#: utilities/forms/utils.py:276 #, python-brace-format msgid "Invalid related object attribute for column \"{field}\": {to_field}" msgstr "Неверный атрибут связанного объекта для столбца»{field}«: {to_field}" -#: utilities/forms/utils.py:277 +#: utilities/forms/utils.py:284 #, python-brace-format msgid "Required column header \"{header}\" not found." msgstr "Обязательный заголовок столбца»{header}\"не найден." @@ -13407,7 +13409,7 @@ msgstr "Закладка" #: utilities/templates/buttons/clone.html:4 msgid "Clone" -msgstr "Клон" +msgstr "Клонировать" #: utilities/templates/buttons/export.html:4 msgid "Export" @@ -13467,7 +13469,7 @@ msgstr "Ничего не назначено" #: utilities/templates/widgets/markdown_input.html:6 msgid "Write" -msgstr "Напишите" +msgstr "Текст" #: utilities/templates/widgets/markdown_input.html:20 msgid "Testing" @@ -13768,19 +13770,19 @@ msgstr "IP-адрес в IP-адресе" #: vpn/choices.py:34 msgid "GRE" -msgstr "СЕРЫЙ" +msgstr "GRE" #: vpn/choices.py:56 msgid "Hub" -msgstr "хаб" +msgstr "Hub" #: vpn/choices.py:57 msgid "Spoke" -msgstr "Говорил" +msgstr "Spoke" #: vpn/choices.py:80 msgid "Aggressive" -msgstr "агрессивный" +msgstr "Агрессивный" #: vpn/choices.py:81 msgid "Main" @@ -13788,7 +13790,7 @@ msgstr "Главная" #: vpn/choices.py:92 msgid "Pre-shared keys" -msgstr "Предварительно общие ключи" +msgstr "PSK" #: vpn/choices.py:93 msgid "Certificates" @@ -13891,7 +13893,7 @@ msgstr "Группа туннелей" #: vpn/forms/bulk_edit.py:116 vpn/models/crypto.py:47 msgid "SA lifetime" -msgstr "На всю жизнь" +msgstr "Время жизни SA" #: vpn/forms/bulk_edit.py:150 wireless/forms/bulk_edit.py:78 #: wireless/forms/bulk_edit.py:125 wireless/forms/filtersets.py:63 @@ -13966,7 +13968,7 @@ msgstr "Назначенный интерфейс (устройство или #: vpn/forms/bulk_import.py:334 msgid "Cannot import device and VM interface terminations simultaneously." msgstr "" -"Невозможно одновременно импортировать терминалы интерфейса устройства и " +"Невозможно одновременно сетевые окончания интерфейса устройства и " "виртуальной машины." #: vpn/forms/bulk_import.py:336 @@ -13990,17 +13992,22 @@ msgstr "Предложение" msgid "Assigned Object Type" msgstr "Назначенный тип объекта" +#: vpn/forms/model_forms.py:94 vpn/forms/model_forms.py:129 +#: vpn/forms/model_forms.py:241 vpn/tables/tunnels.py:91 +msgid "Tunnel interface" +msgstr "Туннельный интерфейс" + #: vpn/forms/model_forms.py:147 msgid "First Termination" -msgstr "Первое увольнение" +msgstr "Первая точка" #: vpn/forms/model_forms.py:151 msgid "Second Termination" -msgstr "Второе расторжение" +msgstr "Вторая точка" #: vpn/forms/model_forms.py:198 msgid "This parameter is required when defining a termination." -msgstr "Этот параметр необходим при определении прекращения." +msgstr "Этот параметр необходим при определении точки." #: vpn/forms/model_forms.py:320 vpn/forms/model_forms.py:355 msgid "Policy" @@ -14102,11 +14109,11 @@ msgstr "Профили IPsec" #: vpn/models/l2vpn.py:116 msgid "L2VPN termination" -msgstr "Завершение работы L2VPN" +msgstr "L2VPN соединение" #: vpn/models/l2vpn.py:117 msgid "L2VPN terminations" -msgstr "Прекращения работы L2VPN" +msgstr "L2VPN соединения" #: vpn/models/l2vpn.py:135 #, python-brace-format @@ -14140,7 +14147,7 @@ msgstr "идентификатор туннеля" #: vpn/models/tunnels.py:94 msgid "tunnel" -msgstr "тоннель" +msgstr "туннель" #: vpn/models/tunnels.py:95 msgid "tunnels" @@ -14156,7 +14163,7 @@ msgstr "завершение туннеля" #: vpn/models/tunnels.py:157 msgid "tunnel terminations" -msgstr "терминалы туннелей" +msgstr "точки подключения туннеля" #: vpn/models/tunnels.py:174 #, python-brace-format @@ -14197,11 +14204,11 @@ msgstr "Родитель объекта" #: vpn/tables/l2vpn.py:74 msgid "Object Site" -msgstr "Объектный сайт" +msgstr "Сайт объекта" #: vpn/tables/tunnels.py:88 msgid "Host" -msgstr "Хозяин" +msgstr "Хост" #: wireless/choices.py:11 msgid "Access point" @@ -14209,7 +14216,7 @@ msgstr "Точка доступа" #: wireless/choices.py:12 msgid "Station" -msgstr "станция" +msgstr "Станция" #: wireless/choices.py:467 msgid "Open" @@ -14264,19 +14271,19 @@ msgstr "беспроводная локальная сеть" #: wireless/models.py:143 msgid "interface A" -msgstr "интерфейс A" +msgstr "Интерфейс A" #: wireless/models.py:150 msgid "interface B" -msgstr "интерфейс B" +msgstr "Интерфейс B" #: wireless/models.py:198 msgid "wireless link" -msgstr "беспроводная связь" +msgstr "беспроводное соединение" #: wireless/models.py:199 msgid "wireless links" -msgstr "беспроводные ссылки" +msgstr "беспроводные соединения" #: wireless/models.py:216 wireless/models.py:222 #, python-brace-format diff --git a/netbox/translations/tr/LC_MESSAGES/django.mo b/netbox/translations/tr/LC_MESSAGES/django.mo index f6d54ea9ab2403a1bc54939c0505908f1d5666ac..7e2a0e4b93733e55824f421bcea428dd12904e6f 100644 GIT binary patch delta 61603 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

  • W7F5v-m0$-q~;MZ8s{8chMQ24801vEAF z&|Tglws(u(hW<8e1o|mC9sRPpEnYu?2KG~|{~EoFX5fmGA;bC6i4;y!s7#>^`f44C zWpOt8z^U+kUMqfZ%(Tp98^{=BB(9@9h>o86sbl~#Hc>MPt6r5?p zc%doUQCoEFZbnl&IC?i4=qPli51})fj0W-)8sIXt-?z|ywxARJ7(L!cG4=WX8wFGN zZ>oXc2YeG|mIplr<!&TKzAv!mz?zC}AegQoIQH0QS=Q&*$y)nffRw7*VhApOy$8-~6&9ziFv0F$oa zN(z2qcn3Y-N6?x7iKaH!=@4;YwBu6fb9K><+Moe;M+Y1f+ecz*lc6)7f-dcB^uEQX zIsdN38XDYW+tCicLs!CXQ2Z2ItTYGyfQF%!_td0v)g%`e1c5Lk-b2Y#Q5JMmwVe^+p4~1AQ-yjqTIW zah}1{fB&~6Rp3`G@xq(Y_tD+H4_)h1XaIkp0cH3p%rpmjy$Cvy>gc9!j%Ktsn#s{< zMjnaI#9W^LXDr}SG_u#wHQtO4v>RR9Ptlowj?Vl`wBv8k`_H5IrJV`av!EHwiT0Zp z9j7=NNEJ-|{oi^N?D+aDH&-X812V|{FNB09hfG@$utfGcAAo3Z@^ zbdMZ7!}<5dlkvu1&=g;e^&DqIhegr*Dx!haM>}p7+q+PiWI7jSb|tz-WzicOqHEm}O<6Z|Z3m)(4@CzY9ep^q&qOmc7Y+Ei*uFCQ z8s_o)|0W8~ba$$O2xI+c^uffhA*DIc`jzO+i=fX{iS5^+6KRcZ!Y;ABC;A>45FLXq z;bctx_rD7%IHTog#IK;K+JMgZeYE3)=!{RGYkV3V=qI$pU(rlt{w+M853QGq_3G#Z z8pnDoO#S`euCd`ZG>{Roem@$}Bs74T=*;J#Ghc-U^fvn32l4uDG{EENb0^WIJc9;& zF<$@gH_pEiW&Axna0PlpJ~Z;eXeP>|nW!7DH;?UY(ExkI`mJancSlE~Z^Q@D{>Gz$ zOpo( zh~EEoH2Fik@Jnn+TnGbXL62Q-^!%1UKh^4^0d_(M?2X38sOCE6X+h9k7nXU zG;^zvK$3|K6zuSAbf!DenI1z2_yz6w-&oK6N7xI+(CbyBjj$>8HuxY;Mt=#N_GkFT z<#kw_`Vg#w3$VWD|3eCuXt;!3u-wJ)E0_DQA@x0Y4QBZ({1&_krc-|m{norA`VE$) zp5gECYq;|0Z@)X?9XJ)!@mIVJ>s*Sz|DR)lhMnl*H0~(^5aTw?p^DShS;8(Y5{> z9jIiE;4NtTLTrGC(WT6tGcEOpSZ$INT(gPjEAhJ&cp{WDz z`_TKoKnMO64J5;rVXqWI>!s2Au0fw`kG1e-^i4V~x)@9F{z<$=!5JJzGjR$H)J zoO$8^=)k4XjMPR4YJx6d7xeyt=;j@c-v2(kK9I2Y~jxxAczBYuSj*M1{ji)XPW zR>~Lbh2^PFLHEWQGz06S+t3;BMStY_Jl20jGjs`E%G_6_r9Q-}qy4nHiu3QMQU@CB z;3gc3ebGpFpu2V-x~os11OJB2@G_d>X8A+MU7~kJC!oh|KKf$Yfc_Ny587YJWP$Li ztcNRU_!LduxPrk2=#S@bqSp^%H~e3r@Fv`k241yr*gN&nnKeN(*b@CL8H2vS)?gL< z1`Q;6Ws$Vh$7UULW}|Sf7tjn8EE+OY0@J9MN7ud*-iLM3fL=o1l$X&A-g0$X>faCE zi3V7{Sgj%tbfP(s=!K^!fME53BvL{TuZD z^XRcmD<0~F(dR2*>hJ&5r(g%|;|)F02yaIpyfKW z?>mMDdLBLhf1{r*IZKD*cqO)=UZynXe*lHSGSd;odY=uvuoA?MC&`Iox-=UdqS~eLjv@aVzY;HtT)g9dvx1%!{g?9W1 z8sO{brrd+h>~O3fLkId69r!2oJ@Gp>$NJ?$|6|b?)089yzg90q_rU9DWZTezK1KsL z9sM(!t$bM9BIwdpie8K9)H|Z*eJ0xP`_Thfj{2AAX-Q_P5F##&Zn_d!1FK+FycwOz zBsBFi(T?Y$Gx!*N?n`u_pU}+wg-#@6#jv!wu_^Te=-PM3@_zo$r_h*&Em#&Wp*NPS z6awgnm8nn1int-xPhdOhSu2OHT3yhuaI>%ieu{nZ654;SD&Z^G)97c+ZtU#$|14EQ z$33Fs(U~ug9z@svKdg;4s)aS}kIwW(bf&A(J@aO4{{Ve|>_t=k4LZS#=;ka|o#z=p zaT^7X&E4qnnuHB-DY}`Cp_}p~y4Js<9cQc&zTFl<1M7wErD>RsFQVuFYqX!=uohm# z;#j#R=iklMhJweh7y3XywEdn~Pogt>Jhm@HXS5n!^Q~xLd(jzwg}xUu)e2wZOJP^) zqmeaF?7&`lwif5#6t=D%HqnjIzUW#HiS^mokouzNAvECJb;8UFpquk*bW@f?m*g6B zLd~%Qc0n`wESkYr>Tv#j@O>Ig(Z|t)=!`x`ANUb{5&ez6Knm0i?~7q*21cRJKa39i z7dpyH=K$$T#ofZjY7xu(7n(C{jlkd zZoZ+hJ`#OZKZY*N3+P1FqAA}J-4UDk(t)3%;CWt#ZnBMND)*ts>HFv< zbWh~IE@Yx4dc7Wce;c%){^)&U;`K@B9+(%~*P`QWy^izmT74E9enUIRc75oe7<#=r z8hJacj@{6;pNMX{8R(4Wpc7ga>u<*T4m6-6=+ga&F4eEsbN)+FNHhr-N~0ZCLN`lo zbV=Hwo3Ced5IWN?g@Ly=Z*^*7ej0>V2R6*Z-&C%mH z6n$U>ngQ?kzG-L&FQPMh70ui>^waGS*2X;P;d_2_^ts#7{>Gv2i{uOn&iIMgupri- zkFG=qdM(zspu2h}+QEKwribG7lj!|Fq8Ymw+cP%{OOzXZz65e#GEsqo5!FLy(gHnB z-NFrtd(ad=gmyR!>)|47fCtd$vo#MHD1>gVs_3U&Gjz@Sp@9vKj!DV+n@FKE7iOa` zoUd>omTZxh=#GzIIXr@9>OXW-W^EY;EQ@B~8ub0p0u8tqx*6}n$~X=^&MVN5`S-Aa z=l>)HH&fwOp@Z6J23liD?2pdqVXTRB(GIp_OZ*m{X_eODt5sVpLwyF?|5`Mlnr*_* ze$CP6hGEi~ucOck)7pk_vu)8Cbwp?03#;Hb^w_OLzs;^g1G#{1*8J_l42z+`a|dpe?a%hKj?kg z+XoAy{Z&K*sUO>0wNIv{zAAO2!4BtOU0jYX$x$?*-?0{6MpIj>Ll~$ly2ky{8IMBm zpN94~7Y%R)`UZSEdJt0qCn*@wKj`Mk)iEvg7llissh%F4gKo~}(M)}TekOd2bug_{ zNNs)expZ`Z_ULiD1r79ebV=_=15GZX;O<=Kqs&}v?mh>DY(0jqnY>(U8}SkL*#j|A@#y&2VKxN z+;sE}w;esE7ty_RLzi&98@hL9p-V9@x(Xd<6Q=(D&n^mnvpIxD{3lk$D{l&G+!#$^ zTQn0lVpp7mH{lWVTvzKFj%ynJ){8nKW&*#q+obd(hf*HGofxDwi za~nGI8R&~=J9>;x;W<2uey97Qd&tz)Jwm-3rc#a$xEotxo}OVZ^}y7B|38OO0ZB@*uhiA4hlpV)RtKg>K#hH*@}d z;Aa|q;4<3rRlP$BuSPRd8jD~}G?nepH5`CGHxgazNthZC4QMg?+?(hU9YEixXX5o- zeK`L{Ql?LMuqpZ~y$OAA1lrLwbl?}zz3~>h1mByl8;M(CgLEK%1iX zbwy9xZAl8L%@QvRL*HNzp_!SA&TIktz!J3Mm1t((Lhsv-X6`T=;FoB>Id2J@FfUp! zj=l%VVl_489o2~DHz!x8}Kf)fisKPQebI#CEtCec&g&4zt}A zewES+y>Ak(#i#LhY)Q|NR=;rHz9kD<9?fDh-6zw0*`M0AZ zGoqkwEbVSgIpuxrb6o#(HYl9zml~>Q$HSkZYsJ2^U!`@!j`xWJL8{dKW#>G z{!MY0k>SH;IQk-*i`8)x8u9m74RekP=e{BO;<*(c#Bo>~FQRY6Dx<@5ov{)1QP>n$ zqy3!0N?0U0CcHqJqc4zq(c||FHpe5_4U63yezqHlF3kq)gdbx~EP7vB>Q7SI<9*au z<76y*f7sM7V^``I&{uG~v0=i=+bEdAshE!MVhg;C^|8eRVbeT-rtTGV?fymAJj;V& zX^NnMRY3=6hFpS6boPh3$TOab95}&_=DO921N$iiCaWR${7Y5vlrt%P` zXW&Pv@uB1A;%CPabf&Mw`qo(Ag-+xIx;g)h?P(8(zzbkOKmW^9a5r9uZjRRI%txa$ zeE`kCG)%{N=nRgaA66%$l_sPmKA}Dw%|wfdq2G>ZCVHT!qYv8uP)vRPkD!ox;h-s= zgU;wBY=E0%{XBZ?vOW@yX-PEjYM4rWY;TGN+!0fI0DX@P!>e!%I)N#VaQ-t=m`#Hz zdK&HUdGv*|3hihk`oNBOeINRUJA&T#ORQf;-ya1Y4Kpl*K356NY%MI0x1gDLmOnr>L17Y<#;{Ir0_n-i*DvxXr|hrneB(ZkVarDoQRII zGfBa<_!N!oC^~TBv9!cPkQ*!Fbo9maI(pw>^tpf005eVw1La0%Trye_eIeCEm!ccC z!aJ}QCSRf8+I@kZ+wag06H|gY(SQn~YgZ2Ks3Dr_4(NcrZ~*p4--Pd>{hW_p#>&)l zObuUh>tX8rHw=YD%Xs0&Xt&tj3k_gUtdGJf)W>55T!l_xKN{GP=$Y7l8GSz6v@n5! z=nJn3rvCnKKMJn>2y{mG#~U6^-N5EUJKhzqpFmH^k7&j&qibDwdie5LE7}p=bVJZh zItM+5%h0ud39s<{zd^xW{{gy5_M)5SD|Fyr(bQ*}5q5oHw7mw}-YnL;qZ1f{4tQ_8 zJ_$X>^YI4Uj|N_HCg;Bfg@zPn;vHzm7toHgJsv(>ilLu^9noVq99_#v=%?pebih66 zUO0hf^jmbMXVA@h5uNCNu|3eRx3Kt5a50pXAXASg2=z288qtRVE9qs5HG_dXH zvHJnrVq$i9GqyuF;cPVZ3(*O`fK_qd?0Eh!#T(O}2$5fb29h7`xD*=DHE3p9qf6Br zz3*;xlZ}l&hGz0<^tl!2{cm7<+=)JSRr1NO)+N!7YoVK~B|5{K(KQ{2ewd6vJDL_< zgg&+>H)0;oe@_a|Xb8HtW6|&V z)4Tzfp=q4~I+(!+@31 z7eh<*hFj2q?m$1LAByb{$M$JxhMq@v`OD}4n__(zI)Ni-%6~-rxrk=qpM{)%H%Z1t z;TH;xusZddu>ej+*Z5hqqb2B!)}tNnh#o=%_!>?9Z_&%KJ=e40`K!@@t6^Pi_$=q& zpY`sh!3U?JyLvAAv)>+cz#Pwo0g9u6RYN~?nxix6fX@6TbggfT^`U5B4`Ql+bRu)n z39Lv`s6t@_cEYc)4%T=+d<`FfW2i4f+l#&se!JZX9e4`b(JXYyo<##$f$pU@(H~Sk zLSNP2V=2tCI0TfeNTC-E^{_9_M3>}8bcUr~3>m77)?1@9>5R^_FB-@obZzfKXFMF8 z>3B4tS+V_jG@vzD((nI!DA?gy^v1u@4st9BsV{;KTrFB3opBR%#vP+Q&;a_Q$8r#w zf#GPs6VUg=6KMadF!lHU-lAYfd(c1*qci&koxz#tzi3CfmxlXGpnIVbx`&#er>PH? z#)r{k`yx8ycd$Gj!-p`#GA82rA8!F?pvP|k8u{z!htG%T3+8ydehzC=&%Qha(g=Me zx4?Fo#4h*|-h@}L2s6G1&CED-B2zHw4CYZV#cR-k-b5qcjivBgG-X*}q4mVM9w`=OEFi$?x1dVXi) zZTJCtt}DJ20;r3wbt80XyPy;3gWf+B4Rp^-oPTHj2@Q6596Ms3mqY4rK~p&f4QM<1 zg<}`GN6wBWQos)`Y;XLHlbQZ5d5=iiIB0e$gRlU?ZdVqk)aX z+BiA3Z$xLb1uNkxbjCT?hCs`q1J^v}Y>o!l0X@fEqP@_8`l0vTiDq_GtUroQWM*t%u%7epIbBVIGy4FoA3+|dJ&!RI`sH%LSJ0(Vq4s|f%9*Kh2Ka^ti~#s zhKJD`kD>$ogcb2WbmkS_jK>Q-*Vmu}wMH{}L$ohC@K7`(_n@cXezc#7$yk_z4)i#h z!o}$Be;Ez%P4v8fgmzT!t&oB0IEi{2^w{mees~&dVe5@yPu!1YbP?MBI&|rh?@;i? z@;_J-F%$MgQ`{FF_-^zSJ_$Xp%VPUhY)$jNp!FLfDV{< zYj|IjM*F`$dLyRJ|3C`P>|S&!W}zuug1%_pMKf{~&B!lk%Kyfyc-6MBnVO;*Xcg^= z_IoF~XC6VnsLVhETZKs@-blfeZ9^aU1D$D}_rj-CPxKxC0GjGW==)%0tZzXxwi`|L zadZNwV?D$B;Z)>AuNOflTK0X;ziW974Mx}meL=KAk4?AO-V5D)1JL_Npquc1bjA;% zfjy4iw*VXBDy)O2(C--qJ_z-J*o*qy50c@*UuZC*OX$1&$`3vy|EKL9lxTf{s(Wu%)7!;^}<@z??QjjS%i80{QrxB5$4<-W?l?y zQ!k6QcSkqdV05YOiav;DYAPDwY;*z((6wKSrhH4Re}V@1HQLY5nELlW{4qN;H7gXlma;pWBJ{dpKVICSLzJUQg`d{CmTd6zrfF zy5<$|daQ>=JPMuJxLAJ@&B(Lp^Dm;$uSEmhh-T)a=zg@{!)Slsq5+=U!}+)2G7UbM zV{h24MbR5-p#wKX2kM62KL9;`ccYsziSCuj=zTNM`xZo(p_zFV4eUMieeuy=&cCTX zM1wQ>0bTQ-;|-V57e&r}X{rC;uR%D5`n%|-W8MAXxi09yJKpu(pC(w`Q zrD&j=$lqu`xetelB)bGT%@MrXuz2aDS!+vs%^Y3oWd_25xnxSvFBo4yG=sQ2l ziL}(e-P{CgQvU?6!;D{q`_s`qavRpbhp-L4jCJsLEQJ-m3~$ahScUq?FFF6+DJ-Jl zS^N#3#MxhkKg}w8GAzv`yq5Nj=!ehw*k0vS_%ohcu{!P3(XUt=(Lg@K_L%wW@N4%Q z(d&!QuXY=g6inG6^eff{?1F{A2{#T!2b_#8aWme5Y2StphhksqZ{SG0>U8*9bd%7` zet_<&#CKuIuEk+gA4Okm$=@ir2|IirzB28`YSc6R5K>(m{em$7@5Fg%fN4LbrT!m{ zyJ1D@yU>*Xh7NG;PvN&+E78-j7f0c7d;mM2NsW_Cd_=*`^au9D^t0g~iaSsQto54{W9p+RxOOjL zGyEJoVbR~ikJUqPD)lYsd!XIiIA$^>XNWu7(bfj_#T6SOLePGkYGL`6+bwm--`2uq#@h zfWArBW75Lg6r9O>m|80|pyTLg!Vl<&(BEhPIsOc9xDx1+T!Y@<9-Tl>^i_N(`uqgU zj!&W)T7;Q!*`M+A|0NpiU<0r2soK14IH4;$j=NeZr2-haXxc1G9qJ}iy%u^zsS>39yyW9@&#`R|DX zsV|B3tp9}xbVWDaUFfNpf@Se_^!dYRK*@h8nCh&T!=@^T?uDx8l3ascZ;3|UHMaMS z?RTQbZ!DUTr_oQpPtktPqI=*kG;=vvAWubcd=?#G6;8zW&^2$BmN6A@J9HEGi1k6SJ`z)JJTw!ZV^+`qKNLI#nKEWf{q8p> zx;uNJ5#NFiJOXpzLuf`OqXEy2?JLlfuZ!3BVL$3$pr@fprqEvxG?RB?>hpgT1v`8+ zUU&*UZi~DDSEHNn-FW?AynYOw`A^Yb;`QIrwfzTuZ)C|F0?&=6z6d(unwT`=1{9iO zSF}DCOX2J2=KB=gl-aX{6jsAZ)F)wOT!S9B&(VSZ#AcWwYsh2^bjEGb40b{HOy8^- z`S;%`jHSWjG85hPE74cvE_5yTqf77wnwcN59R7_4P%>L;GbP%g-vj!i13id7KM8&A zDRfDfpqu-RY{^h~Ki;q(9q6lAKZ6GJ4;pBR?4g6Y=q7B9?ty;jF&hzGh&8BhM+drq zE@fJdu$1}HFE*8u6ijV@G{Q&F&GHmFgO|}Yd;?ASyJ&~sp))y;4KZuZuou$N_LgWy zd!pZtN1;nJ6ZbH}i2$sTZ`NFQQj83Q(8c1h!32#LwG&r`8#?=4+=R^w5cnTW86JEf1=mXE8 zd*Wqurtin=htYvfM88A#(64BJ8LkR}=0NvCW%Ss!L^p4LOctl`00n3C4Ekz(15No+ zG=Q^c$A6BBr)EXV93wmFFG@v^RaQ^LRI1SG5 zf9Q;-qYunOBVK{dYniQgr6;pi6QXE8->e!Lo%ydpcI5J_u{!6IdSKLr=%|=uH1YGjkbzk>x8KCY-ED z!A*5dZ0LZlVIOqn!_bV}k8Ykv(UiV`zG`2N?H{72=p;JuFKEAsBB7oi9k@K2$!n4O zlZpSgbq>&Ra8DcGB(-g%wr$%s(l%{Vq&Bv;mD;vb+qSK@Hs9*|J-f5-+4Dc&oOAQs znR(`!xp#NtHpSTJ>Z^ci*aXzowE-p66O`~sP&YLl)RS->s4L$FO86kCC*d_vdUrt$ z`Ucbud9rC6R8J*MBNDDkus{uqr5GLr?;3K@HRm)MGvb6mKl3fkQx@bP=cl zwt*UOkKqwe1DpX>cL|j4J<#?4|G!|PkK;ax-HpS7{`j#$oh&z~E2{wNp{NR~VIxp4 z+fJZvW&)@|mz%#0)I)X_ObfmMHDHV+ZeD!Q_5XjQWupo6fx7Y{peC#es$m0A&xzKc z8ubSK!AW3ha1*HK!ZlC>yazS#Ur;w0CaL?TVu8AuB%t!CliKS)0|7P659;+@3Y1U- zP>tJyYTOspV>boV)vp32xW)Y4hDSji7K%H4~0QHb{0dPDx6y21IN>NkR_I|%9^ z&f{$Kq_|*&>!6-o&p|c%1xhfAzk8s>px%R}1H~&2>V|5Y-v-n})X(BmKGgk@jUJOrpswhSE5SPsPz`>8dWa&VbYnbF4O4>}FgK_Mr7T|E z{N|wQJAxXx52%xm1y#QYbp8I{CN^mZ90GL{&p|z=uR%SgA1waE{NJD&hfU>v4C8=m zloZqfGJq+-f|hR#YQR8Hysn@=whRQFnq(FmO}Gk_@NQ7AhEt$k1&=KM2b55Z)b0}` z1@&sl0_v04a$s7p9jLm=pgvfw1NGti6sU*zIj9?do0`|ZuJ$_tVYoDQB2dJnpopm~ zo(0qZc|kpvr9cf@AJmhuGpH*b3c3yk>PAd86=)S#0=-QXNhb*s(a4QhZ>pa!}M>Y=^qWTUHp z2x@>&palMcdU-`l=YF=P1aRoFp8{&IMWAkCrQr@x{1c!C zcHUtl;b%tp1gg+4y?f$FpakQBnm9G6Mwu<26V#0r0aaHP)Iq9%YSaMKpdCT=8ENrp zAOkoZE7|BV+YCzhggfCl2TJe;s2jQuYLE}+J2JRW5DS!W5>NwX0QFqT0jjPTsH?AG z@y4L|?ZB{l{r6%c;Q^pdG7ePZ>7az>f*NeK)-zsXQKfsfO@&q2X%!#KnV>7T_5$#Uj=H=UFIJKC3wZ+w?Uow z38{p+OJ2muqpmSFh5v4o1g33czwX!`0LDn1nM1DyzIRGwJDI@{i#%A zFb#e`umHFS>;~Qji-Og1__=-!X98Fr{{@&C%$d{ukTe5J;I{>9gR8-U;9syYSTL9S zYsL^TE&eg5ZQg(qij&*V;R7z`ejDlOY!;c|Ok$DsIAGJs@lDeIY=fSm*uQRYWYGr@ zY#{G#LaE`)2A2h+!#BVkOYnEXamKJFV<9Er!EZ~GFsunY!~A({wpo*DU~LMff{nqd zvL!5N@`f7_fu8U%`15kFsW@WV~V zI2!0#dV^txvw~RbD3ldqf6(}Rdf@0yy}1tlW{smR`If9g#9xpY&%q+0`4i25iF<4w z|Np#W9f4X*xCFvE_EFiF<`mCp#y2rswgDkoVPa2hh-HX%Bi5ek>I4j5tVHBdTtoaQD23qk{<6I}U-}VdGds{t=*QLHK zgUCkHLzcsa*ZvnhocSP)BiIb=NI+JAqMnF`HNP;!m2szBZ)+g-mHbL-(lTry4XdEx zgrA&!s5R@({$Jwz@b{vTf|`PGlAxcI_#oH&UnC2Yhy^JZL0J?EtFdotr%q0jB;*IP znjusW{&j@jz-vv;2kv85H3kZzz7ILsMf{31J3`GdVl~0r#3!M9lfA$G|HZKg#IwdK zT1pcaQh0{kLUI|{d(4;OEpSq@sA0W8(RF13?Tc#!1-9RsKlyxIC}ic zaf&!J>1adnhj3ixYnTb);#P3ZL`0a$i7GKb2)Vk{cEvwq8exrh5`Q_IOlS?DPc;1V zU=;kx#GOT$JcnIZh&8<8nT{qQQyFPGMp%ASBfX2TbqN&m%O7+(@|IwhO`J)D>jSq2>sU zPBGj%{Katf$%m{x@kr>kH+{vP>+uhuaaBYjQQRBSI2v^T6R=jWvQRKlZ0v+r@mF`q zk&0MFPMaL@A!uEqCNaxn|X#6OW=!CI!s6n)p`t~W)Hbe zZhbxfISD5o3?VDz0VI|YI|(sAg0ca2BmCVEM{66T7WuCDLv4sj#2>I4!LMx1RNKUE zafsnWnwK_>wR->GODt@e1yfU8710+A@`Qoz(|F)b0~F4v=eMx8_#j znGLrXP8FIivRoDX9d@7<#NtzT%6)#GJeH8aaQ5#RCI%vR?R4!RmtpeF#0%N!BH|Z9 z=m7qBc(LHTrGC5R`B9Z)3=0^3w{jzCae;6#jhFQDz%lsyX3tsDZEm~yQkNGB?3KRT%%wCqH{of zCUlwNKs$*9^4N6;5qrbhjBphOYDWDX_T|AgaC%$AI6PE*so*GJLl>gydpI6zPmc5R z7z2$sNg|3HgZ;Rg8=wz`^}$XQ4YtC;t|GU@31WHhtK(jz>2~~C_*bcsy+KE|k(;Z` zI!?Sjy!q(Xv?0~s5p1V?&AyB^;PXnC^`cOAoPx-~N3^+Gr$tEF*+A;)yI{hrrXSP1sN^IZ~ZuO zino{nu0xhB02hE?&Hq8eF^E?Mvk?1(_%`^Ztlue$_JHAz(zGu7 z)9@~_R*Q_igtL-00gZ+9*~jYcPB|*TJI~jjj+hW+xk$?HBUX+^?K$yVuKED0E4h+1 z3PVia$vW&}@;(D@D{;_h49YfWNVt64&}C(aufadW&@%p}t>eDsGU-$15v+7fa{w`4 za0R5>HjD}uQe54{<;(uXpJ%b%CiaNMU z(>FST>F-F#bu~gL7DW|k-qadM;3VRiiOH&(=ncz9<7C;1y(S-ucs{TT!etmNCh;Gv z0P1&;OG|DjePU8ugSFF!QGdr#l9OnV9Wr00yM7idxW`^H;34AI(aBAJ*YE9llKl|fYST?;h%ppiVNGBK zP;it}>}BnzfbU5-dcbMRO+-d8D*0B3U$Od3@P66=(yxrh404^}zhU2yL7k_K&w8OS(Vb7P_O9V||JXn`IF`{cI{ShoUsJHj;_HduMNoE-+ zb>1}WK(kZqpRjt6j{^TXw{#!_9Rzi8Cf}i^McyZNc80rUQ-s zFwAoVQiJ7*rzhSOp#*mQscCYayle^iaWu$herNVusOt_^AXkGWJHR@r&;K^a!$J|; z!77P3zenu)FPIc(HkZ9bV74{1kmEZ|F0hW1%LS(85FvJRO&Bn)Jsjfirtv)L7bDmM zUI+4lemtXcnA$&J3L3|^2^IbaVOc~99#bG23a1CS8Sx3MrZj#IZiEv^d?yVWdTFSp zIYY&o>hmzR>-kmSgU(6KUxObV{yUbwt+~(QQeI8%2qx&m zejWQ`OmTqxJL>z2fK8`97yd_mzpWL7xD*^@^(UBzqEJT8!%+X&Wp{)VgfFWPFRtyI z!wqD=iz|@jrM@7|TEgGL8bbaO@j>J(;P(S>5*x_?>0H|OdK>C0=c5O~i6oC8(wj!N zAV=VoDJ*}9J%7Q}Wxh7tI|dkuxX13`$EL0!fk$8#u(jm}kQ*Q(+U?ly(C1sV5M2WC zw4FkE*)Y~UNV2J34a!nnniYou(va)IehO;{r=J5>LN5S4kG&u+Tgss(nx6d6EIU6> zMVya{dRZ96a(gx2k3Wf~QxHr}yftFO;U{H(9dX$?L+!_~Z%$5!)VI^m!#_hTG6zkB zRsns!wUNXToazV{=W3TTc^+cl@%7F7H8hJ0%G$&8*fsJG?V(7CU>Qy=J4S=Y!TRYqqhHBIohGDrs24E?>+E^LakijpYmb#0Fj-(Xj_hQ`IbnoE!$Ot~xy&3D3$ zPwf(Ph7i9Bma>O49(8+R)~5M+8@M=rCj6&P-pF<_eJqNWfd3-YnPH+J6w5^J**5)ds6VT~8b6y87p% z@dyZ=5Lyg++h&|b2t6j=$OiPzuOgn15B_h!JTzVk7UAZq+ED!1#&L?+GL|eq%|}`D zZroN@e&5>>7jhhkooRF&j6)&}v6t*+KUw^HFh>Mp&B#rqQ6^%K8E7~DYHKF$d;Ezs zDQyjBvk%LF$>8#%o&W4FLpIbPp4Z<(M7t4afItEh90=(fYZtK?8qjW_B;4B!s~_O- zw?JK15zY{r#V6hjoe8Wy__7G_3sGMb`~a^Bu@@~F z@Uhn^>mek2MZ7j~Uz*82(EJ4Zk?aSewVD-R++XPLAby8+l6ZP}N%Zly0h{_vS0Cak z#BQ+@8cgqFjRt!L2pU<3vkPAoh7SBU3!UoK1 z^()EcBr}o58`&qPZZNrbP8@H`NrUIavLN_~eF*4nDQ)sWV$CI& zpBuPKp74Kmm3URWYv34*I%k+*cpIb}6>%Y4MrbU}OCr?EhA2o(_MLoERzqs1fhqsz z5ZAedq1>v+MxgnF6(5~&)^8LyG)n*9eNsdRlk`|o3Rfbq4$%x2&%nMOu@(qSVm+t0 zvJJC~!ku>QzSM5EtM}n$H;iUaOrtr2W~XKV^@-u#;b3p|`d>mY79!6eCx$e{#57Ph z$g(UJD-WkG`zF?W415Q%*EDU1U|z6>)l4AOomdvQMZ9k40t3~@U&jzn_4+Rb;WWYQ z2p6T`C9w~P)Ie+s>jC~>Yj_dPZ}#ui82bfgV1PGn*RdN>kDaxqm*LEXlZv|d=sjiK zgm)BlHlcBQk}<%tRvE`m5X3M?h;=6?+XEhly943Oh}I#mpZxo!csim&2?;nG|R4Ap~Dc9@L0;qG4*9|68!hn`O|zF zL*z%a7!3|mE2~9)Py8?Nylp#GLK-c@I zO>i69@S$*@yL&htTS&-8Lw?7q$i(-F9kC&D)BG7?ZCPVYpe2Hb;cgPg>IdUTXMc?~ zNjd78vg)xPX`FCqKePQzN{{RFzijGm_L&Af5gkX7EP*}oGTGx>f+4ce+}rjOYel22 z)YL}27u-q^9??uzj(8gzybjut@Q0$&0$zB1QqY+t>qw#|IGw`i>}B;4KTAFrv7bDt z=7N!Js0#S9*><8iaKn@P2&X@}N;C;;oY>@Ip&5sDharku+v$F`ueaBdcl$(0&2A zGWfsQe*_1ilge(OFtPFso`Sl&@Q&$aRF#RhLE6lIE&GS;qf*!vViyXt5|^c8zlvNM zin}sYMfMNa7qb(Fz{wA%J~{RKM6LuH@oiXX3^VRmV%^bo?uB^_;(V5@ixHC9iSl}i z5vpdfLvUWG1GdeE3nG8l@~7BGWr*BxVt}_elt0|X)IKvh&&ZPk~OOXXN~2C(_j<)*Ot4alPq&&k+h4_|rLuzKb;9X?6hhQ>tXAq7+1CIsT)i2}JN7<*bgQS7i0{w#!8-dyB zk(hydP&*QxsbL<*a1J22)`qA}Fg*ls>p(0Kr}$3%3EbW!qtWOLYbnR zD{vKqyoWc`Zmt2`(Zq5yWPUga_0PTgv-wJ(2GhzW)6ipi>?C_YCsVJ7Gs?sYQ}V(T6zoH=sWn;-Pd3ien3_Bs zAU~&GU=K?@J3tDCDMGFXT5Zrt>n?SqA?8#s`nxO~fvwg&7m=?fP#wW(^>cr|dS(rk zmhHEbt>cuL;Z4PlN~5pv0*u>*+*xYl;%6dXjUf{d%S6LBc3WkrNkx1DejOjqABlpr z6zH>ISsnb@BrnrMwjBZ4D0|%AfuXE^aLN%s5C0e|DgIGv>XBPQLyzUf|3*Hlo?K>$ z=y#Y{U)TS6KrkkSzX{0RfHRm-HjjNo#QK6$@C#df4Z~isCVLpLEb)xy&*tQR873Ny zqZ0c_t|hUEXtc5Vari0l!#E**h3v7|Y=%>G(TE9|G`=Tk7=`9hs4EC2L8Jkz3H&SQ zEVo@U$XtefwC{wMbCz`g{8Ul6V_NL>mFS-u7X z?X!U*Bj&NfT<1X=%KXW%gx7(69)`Sb@#bhAM{BYTvxE3OeGMR+O|TUNUz(OfYz&3< zh}T3cA8Qe@9uy>F{~0Vo^BC}D7vPp)1(6#9RnBB3bZ)W_kSzpWK{m*1tPE7AWTjFyBUQEs zCz~B3*xDtxnnXG~b{Kwo%k83Gc7q@^EvEl1j-t{P@#HmTcqY%?DVI7Lj zfHxpNA~zm?uv?FthKrCaBKz7VSlLdthIl%3!kS+RPCuIa*}$jC|FPT?v`2Y9N<5%w zm62A1myM)G(`m93Ov))s!7IT28=^j}FE&hg;+YvVzxh+h#f2Y%_l=9FA4+Zt4Xdz< z!#Rdu36873KZJfHdeZna>l*JHbveij!3F;v{B2 zliY6xe9ry=`2m)HM8mB3F*#TwV(D0S;3npwNNK}JyfB>PP9~nt+RM}#t(m8PaS9s~ zFUjQV;M}F)H?hq48S!sIyo2B-ZfH5!0d8Rinhf59+Z)b)(`-$w83UyOXHdTwoebn% zkN;nalHv42Fcd-!n_wdai^*L>q=X5L0`I}e0H*~xj~yT;n@3Fp8YD1ZvGm6K!cbEf zv=#%)Ug#%WEG(Hr027Q1_V|Zxi~jb1phY$?-4Iyg{=|KgYY6^V>!VnnAS*Fz zDY*@3B(f_$Xc&#A$EeQ>=OQZ&1IS#D|4IUtEil;~cU)t-Zp7Bp+|NV`!pn;v-%dNs z2J2<{wB%z@KZ|A_D+?zf2P@COX{f7UeRgv&%<0HtA{!tKBGQILNmeO}h9W5I3g;QV zzcot1b4Iq4*l}Vx;B{mLv0q5635{a2e+Q=swTszLA^z2R>B|v6R&D*HD3zT?f}L6I zAj@V_AiK%L$q?^mkLzuVk6~axRuH0#IB{S0*;tG5E8uSc6I;V*UOg7UX~6nIpR4*# z(M=p#8_>_h-_r1-`-&VJ*!!{a!#xKcg?j_xQus6QlTp`;As;YcS8D!2V8(PqA5p=tdF?C>o9bn}NzwoE|KXLOND0I5pusp>Z7IQ{i5L zD~n4!mJOB~@wK*hXZgh6n)@^G1GszeQ=oA||1zT!g8OjxfFUIQg&@n0_z;8^68Bg> z1R}xtLad8DY@ZplDf@ZkWOK-sfwK+Gl4$KC*O*~rvM<1X0P*Vh$uxkzRNO&fFe0C6 zHV%R6CbS zOe%{FRz&<1lMQ5mz4(n-aoAs?Ndj^S5S@en9kEI5`@l_y$OO}n&NlW%!B*f3a_#Ie zXYe!8c)ksEm)gDh{O>i1L==oBP=jQD{J!j;&`@@PW}yhJ(haa~vCrsEIU=wRW{_44 zxRSM*wc1X48=Z^f{~=Zj-ICNKLw7Cvr^e~)`peiPZbOu%wWg1mdOpI@xyrXj-j9En zeK&@vhG-?0tRSM^_6&bByyD~=Gekm`xBXTR`Xyq0*8BhQ2*zNlrPfH~v-k%PiphQ& zjk6%~h{6sO4X`1_OJ>i5U&M}(i^t&kh}T9lEH!Pxtt^=z_zBGf?3dZluJ`{+&ea<) zo58+5L(HM*GNRkT9Sm}sCa>|2l9Rn*-vF^;tP>1TheK3`w;z8w>lK_X__EekqkUVr zWA#6y%}4MFla>T!AHZ8Q8_vz_WuL>Vs5C++X(;tS!wW! z_%^VstAZyv++cbYBOZoY*T=sj6h5U$7KZDr$J8F%>e+bV3HI$M{)tE-1mAPw>Fi}c z@#nIC%^(AnNBa(X(cnKKHk&@HiH$b?^c*;g33jH?W%vaUtbo&l{ajBRKb-5a-qQ3< ziYQyg{YVijx_>~2u7Lrq`uGR-4(isuTj=7*J`*Zc3+ato(7z33-2=P&cW)aIjNc|GIM|!)iVVn*HKboXpJbt>>-o%Y z5|U_}PtuUzTYVCQJlg7$I5gijpEYqJ`3D6f(>kDKVCe0WK9iD#>lhT=qkCXzm*+mW zQij%z>>D7 zzd2h399__Xa~#=pc!eh!+zNpfhxhb3yr;c?rw$#Z(CWyht`vFZ4PDT~w{rWC)15L*KM}yTh9sq7v?(b`(hzCTLQx_k zX()=~_kQ1V`sa1d`F_9We9q^b^S$?Z$hPCTp8hFU@?ieV4<`7pM9xH_7+x_Tk@zxC zB9Uvot%=02UlNJ(I2?1}-Pi<|VrTpuhhy>6iNq*OVm3UAW8BF|4JnKQ*VoP@p0^cU!Z{% zKO5?!(7;|q19}Z>VB%aNQ4?w^<0r18U`G!|ccC*&`#Yq*aNadhGQ`k-heLA6im7{vnhDvUD5l|wSFwtSI7D*n3?vs@N(RS1#vGH z#S`cr%6y*X!jgC;wm>s60CVFoble-xlYb+bO@k57k2fsBywo3!u0!v86YXd_+R@JF zH|XB^3GL?(G{xu9`>R|CGp~(4S0BB=b6Apk)_=o5718T;(f-<^8R(OY4a3m@CZiqBLmyZieH?x8MRc!hiS1|5 zz%u<8t`|g~FN0>RdTehH+uO(XUa>tnC|($c`FLPDI`AE_{UNlYC*$>XXvQ|j>z~H< z{aA?hpV676Ukm}|MeA3ifmTLS-!!x*6CEkICf8sQ92x6#(Hj?`13rQV_B#-P~K{J&vJuPuR7Q-j-CA4PD{NS=c31DFFND> zXsW+QQ+EQJV8&&kJ_IXLUy9}MZFC|>(HBjLENRR>ktmJM{2jF49q4=HlPqb;R7&^K za3c-hV^8drH7)f@eH#66`2`1J_iSmYy|OO43C-9C(a&Q0esrmh$M(O_Ok6@IbVc^G z)KVAEo(zSmv7u?SEBe5Y=oGZWJJF?C8tYG?oA+gOsoqAHVo$t&5Zxm`qo?EFSTB$x zE%k;hlcZpWtJ4Q@;ugXdilvPDc|t(^97RWLz9*ym-a)lZ8LLVF*y%Al4Ip{?0KnHjbozRQuXT&x% zLtn@1KZo{YB6IF=V^Q?Rs_2ca(aqQoP5n@G(~L(0o{WA9&cS}T6%C|to{*uEXa;Jd znQMvmcMZB3hhTos|0oKs(TsTEZgf}Q7u}5R=A&o_C-7SQ4c$yV@`hbK01fb3bl{Qb z^(kmzv#}8_Km&RQGkgBOq+rMU(FcEs^!HpZt8MZq$NsWm*}J`IR9><`)R0+U!ntKFPN4ngH6!QH5@zP8|a5g=0a(y zkKsBvfciM}`S-9s{*C3aM&V$8^cdfY_WwG1|H&i;XL$9MA$8@^-Ci4=aSJpf?a_1H z3*9^;uo>QrW^N<8rf;LCX9w27Z{zjLi-f&W1YNSqSQwKHDfrIriOy^x+QDY@i^iwu zz?T&b0~JIgFOJ^V6Af?_x(6ns6Syfl4-ISy+RvltdtzO2%v>yFa2OiM_0ehQCQYIldJ=2kTC9TmF^lIvYw>VH9<+l( z=*&u@GpUOP*b3WW5A@hQjNZ2vUBWGB20n;>jLv*d^jma7KcW3x#LGPYZLbbDc19!Z ziw-;l9e5m?vKg`c&e*;*x(a>OzKrgT?dbjAp#2;}1O5{YI7^ApZ&6Gdc?Aj%Toau^ zLo^f3(Y?_rUY{SYFGBaq{n!iNML(VkW`uqwqy5f6kN0ip(%z2-_BeVPUdZ758~KrV z;T)Q>EG2{a&`nbm?Whu(k;d_QM|8%$(T>MPZ${Vp4)o3WdTc+3PAp5QwA9ZBmzPS0 zhSoHA+`6G1^+g9B8J&g(FhABGjP+;GSM0`E|2SU%4h`%VG~o2oq2GLHza`L&S5H!~ zgZk(LUD1I?M5m%R&POw|D7HU@&SW*Zw(Fzsp{f1~UF*Z>9yp5zlBrB+zZ@MeS(bt~ zG(vA^A8+UzZ@3=qa4y!yd(eR1MxXltozY%&DSt!{}k+~ ze{@v5VM?su8teB)mq*v41HO*VWGC9sp?Liinwj%xK)K3=O__mi>WY}%^M4%$XEYJ* zU^*Jp*(bLd{#gbuJ3J=dS3r{_ex{wo^TS+w7r<-?L)iH=v=y63+#1qZB$ zZoW3?@#&4O`QUhcbi6(d?QmXfUlQw&qkHK&ERWmJKu@6k{)Rqx2@Nb)1-Vt?~Lj=mZ{$^{3+Xm(T#-i0wPD9Q7|Ma{m1$ zav@%*Qz;z37U<^ciC5uBbiiBDfEJ(u-xqxh+fiSQb?`L$lTzu*;fu;JbZH((*Zx&B zptq6~JU+YPg#+mM{}D~`pRt}^B`r~cdI7Yf+UTb1h|Xj z&`-r*Vm+C+YIs$aMrYgytK%5-d;G&V7GFjKEmAG)g^E~6%{ z(-Ik&A1h&PGy_AiF7Kbj=y=0p=vr<;Q~M#BqCM!Q`2n5Tv3UJ&bSW~`29}*H`9aYz^h{WhS4$I%)pn?AKO1i`#pu;e`SNPiA$sH715ss`z9&0qp$>Bim%b1<$gsw z&eAXpoCkep7mL+6CAFm!fO`9r_+PhR*yyw4YjyLjTG36gJV&9cyB? z#^Igc2z}uC=;P>jw!P?^Ek~2E>)WG0LEVMba2HO)^JqpVH4XiIfKKcJdYtn&O9hZj zTuH&T%|Ih7kDi7m=xOL0+lQeunU2M9A^Nl48Z^Zppr__@w7>7rfsVxXljx~A8_nC? z3~~M{P%zcC&<7i#sceb9!Fr$p4U6>~(LirQ_ryc7{xtgB8|ZU8(C5BE?>iB%pTjED zv$P;^&wp(S&a4?agFarsVQ5F=$LRA1 zV*MDJfwL_+|8APnt-?UP(DU3M+uLj!yT?Qjd4>fQ1Bo>>1T z*1tmo{1MIU>F5PCuw=G&;fBkj#n73QM^jc49iRc4`le_A-O&yQ#rCnWeHMEE9q0fH zjTl#Fb)muw%Gmv8u(M_ zMAo4hcojXiThRc&z|_zG`zW|p-=k}M7VR)|hcLrJ(b8Cs_8RC+`k@_-MF*M~>o;Rr z>T}RQR-vb2ExOd-Vmf}0#XbK&QmBDx9mAWg78*!*G{r;E8H|hd>GAsQ=u#|+?T?}N ztwl5RDmsz(;`Og$`;Tb^B(EBH# z_fJP>oQ&=3(M)Yd-v{rY&wtv9^KT^I#tSE-|DXe9>l_}q5`CaNI-@%1o@j?YKM+0d zW6?F9jSjRVx)OcvMYP{{V*6*EIsaZb6dQg=2TF8FOMRZ_MmwyA{shz-y*>hcZW6kd zx1p(@kA5uw58W#}u`d3OesL+^HSCG&@M-Gfk`($=$lEP+JQh9Y)6oHDqaUyLqMPZn z*#0$|`V+DJFLcKLqBG3dJ@j`KI)MskrkcijXY~H$FbX~}3EkC6^u{IehR4yheE|(% zBRZok=#0-qFUITHdxW*lhxS(xolrS6b5)`Z!}VmMT__~_p)(#E>$75gA-btnU}s#7 z)$t7aDlXkKbX*y|uK_xjyNTzt9Y1 z?G-+R@*Wgv2|5+4f;X~-Axx7#4 zpaEu3ABc5uHrB_Nu{<6}2h7(ujX$L17nNwoL(w1KZ;x)nZqyUkgm2m1(Fxv*$=(#6 zq)-$8!ai8OUs~cioP#a#dvsTq>K{@#1RZb+x)jT?9`1^!4+!VKA)46<*alaiOLQ2` z?5P2qf7j|F4MvoEU>Kkzx+&{L+o2C$gKnZ>=#or~^_$}LdFamp_s05KbnQ39_O0mi z2hdG^d?4rFH9t#(rVR?aH5X>4o*ye=VcdeP(18(u?SQxvmX?7D9J-Ni@(}=&`Ji zZpw*h2B)LXFF=>@0W^S5(DzDm4~5zk3Jyz4yoDXnfwBw_1LZ>pxC&jf4D>wLiq{*U zDQ%4g)C0Y5IJzgM#`-$+75x^P=}(dONiwmYf)V|IuGLXA;@{B+E};YF9}%u!iQZoZ zU5W~5hc#op2^vsabRxZ?gX8tl=s1%wm*;o$bbd2?x>iM5b!Jla6p&dMduHAF!3^t=PeINaH`w6c0ZX6(RF5{oD%9Je$8!pH zz&p@A^C=o&rqN;3=0=yM7@D~ZG|=+V>gdwcM+0axn)C14cBP>!_QtaKB$~nxqkFLo z^+V_Yna6~Ivqke`YG5?g8R%v#i|(O%vEC7VAq~VzxNuA|%y=UWW?)!r{DszsZiOVJ5k!aiuf*T(uJ^!{0~{jS)ae1w7#J%x7sGJ4}%XyiN58STS1 zn0Z|I+T9T=Qy+$NaS_^2&ha7jSE6smiqS4;CMTgwd>a<^{I90qK<}cP<#RNZ`_O>C zkL{;o`=97cFQ9wpvI*h7oYBJQ1WKcU*F=9#7>ouyHC|td^X@N5}RXaRBvOV*P7$fFIGl^C#L*wn-tAh0uPkMpIuI&2-af7fhPUK@?2=D73?g z=!<49dVF3-GqV%@7Mpu=Slf;`f%*ijh5OJiD!Fb9Z@QLPllqNl#-2hyq;{iUWHL?R z{Cgf7PYJ(pn1CIrKZ?F!j-c1CoEm1<5j}4G(3uU2?PFv8rdXec&h$QXVo${S8caqOr;uqU^Uv&dNj4KqnqkI^!Em*u^MKb5uU4uX08>c z21Wzx7afhM-~UgKH{6zL;OBwpa&(~8=nP+tzK;(475Z_Sm>C8vhSjN7Kr`7N9q?|n zpGRW-8FW*=imAW<_f~9pAB}i7x);8P9z-*69PQ{#Y){MzYnubR&|U={cqTT)b$A^f zL6@q-?C^8Jcr=siF!lNW5(Nj`g3k0qbnU)DH_gxJCdxS{e4(g{2Gk8(mg$ZfGC_V|{$|W;CFA(WlTrw#VzAME9d9 z{s|rEGK)v zLIdi9W^OEcY-dLQhkV>7ox{yo8D;vfYFI2mvF8|^qTFIX^IDcT&}OnuOw za)+QZehkgr3+V3t6kWnE&;fr$m+n`rh3B!UpZ`_oha1MD58jNvI_IDfFGdG^2>akl zw4*=KjxS*~%()x}!^Q0~+vc=q9`a4R{F}@FQqupG2R33B7MC_P~!Y>82`rXZUNk?XfHMWoSpo z&{Od%+Toe#ztPL?3hjBKg`*khDX54BSR=OAMfXIr*gonm&c7)cM}sN93yttmG=Qhk z)IE=;d_5Y-7Ib%ifNrjDu_m6to_N*Wp`VFpW^YCVx(n^^f9QA*-pw(xo*`dkIHzj|l@t>Dw4;a7 zwOWhrfj6Q%qF=}BKcNGhMc*Ik3q!pWI@4hf8*GE5oyP>D)#&~@?rvChI zE(MRt-RJ;|;|(if`?F|fo7>)p|e4Z!3; z3gal)!TUG@zeL|$4ekp+GEG3=>5rfTyn-I1&FC)PhQ64-i0x<4Z$|%MIV^a8c&-UL z(ROHno$u%T+u=1d*wL_fVJg}_7wh3&(XH|NS#%GiJrDxViy72Qpi9;QO?6kapPuLh z2cdzFM>BZi1DtOxx(AM;&sTjgTyKaD)CKKt zFt)&P=%1QDhxg%eoPo2F4}}NMpb=$xIHW8$+EE?!4cP{r*$8yNN$CBv(fe*kPtpD8 zz{_L%T6C@7Kr^uu-Q-_jMNFQcU`GWW37fBIv?BV2p#hqK-stffgs$C0bif%{1#d%N zL@#1%`~)*F|FZC_o7!mL{m~cGNMu6E#0&~{v;bY3#psNdq7grh2Jm8ZW4!)$tbY>y z3Z3~ubd#MzpZ^^l_yXF0)L@a*V3G=PQZQap^lfY#W~_=&gUg`M%j0WZ-0JNkRU|Io;bJ{BU+KzDap z^nFng?YKd-BbtGMXg}AY6C96Da7Jvu1Cy0#xSxVLt+` zw@07r6}<%wbWObeV)PC4{qY{U*SE)CMlT8@6Z_>M^kzX8q29!&lH|Kk*l?6eJd0bT2~ zXF@#(dOaT+Kyh?{GU$C((C6x+OV~JG?-=Vn(Y zTNBnU51Q%>bVgNUy$O0eJEDOOjt)ncU^JTgN!SK&K?8ml4fJDlz%S6fa{#^nSdxMR z{)KLy^tB=KE6^J%px5i6*IUQyedG1(u`KO3M^~T&Zbt{&g=XMuw7*l)^XO6}v#kpQ z7C{@TMw>;uqX7&74&g6#Vu&4!z-S^e3N9=&AS(-HaLQV_;}~7B<7@a50|51vqm< zT4ESpLhl>)YUuYqbms41>b-!K{QR%_TKF#3AN>u+?brgJM!!lOjrEEf!}W1kn)XFl z3SUMuu@|qw%U%!n4aRcR=VBLp1}EVk*b7H&;{1=K@EQfbjTU_)e5-u`U6KQ_UjEJS zn~zE8eea>qHQk(+`Zpg|VJg*cg_(6iQ#>D=<2yJO6I;R?@Oqp|b@vv|zq_~P+hN9I za02x;=o%N?8jf8vbl{$N8}7u4*yWw@L+DM|llm4k19`WFzg{yMdr;5$Zg`;$Mn46o zqVJg{?8hW8`sQ!34UWb0jOpomg(EFC4Z@hcK24txro$?ws$ zonh}>j@fAM6&-{w=}0udhtSNfiuD&#bRyUw) zI1e-MZmfgrusj|@cXifJ!UW2oGjD|sI1NkUnpoe7ZsLoWY(b&rr{UdyJNgQK0Da&k z^v(D=mcZZ86zBUataTA|>B^%su7fUF<7n&H-WgqjUg+~f(TR=ujPqZG!WM+2?9Hv~8W-7{mb9gdIf>(PK-$5g-QrrRCs-=G;f65CHDDY(|> z;tjdK2yd_=Xo@DI*B79BU^%*(oF$m4bSoFRbSQhWa zO1J?F`T2j4f;0FFeK7YoA+<%(H&z9-gU0BZ_CPxxjAmv+tlxs(cQ01JRp_SMg$8&S z9p?htZ-IUB^S_)08hWB1I&;tgHlQ7DM?3lkYv8X~6*KmSQ_&5*J_OCcwCEf(kooB8 zc>x{xt=Rr4CfyW&Q*fYv(Q|(JfpB9@^o`gC?RW(Gjb~h}uSJ*a6?BG2(7p5@x};gY z4d%uS>Q|r{tcy2c%WpaVJ1K0U;cJ}tU3fDMIvBosJ&ta&PteWxAKF2tL!q7*Jp~2P zflH%HSOuMFL-Z7MiS=RV{Zpg29ZH7O{Er6L^6_}#rRWy)w_v-lF8+kRA&Y$j0j5;~EoSP@sDZ`O~K6iQS08GRt{58>DqLhB{b8CO7OR0my(_UI|- zjvmti=s+Xm^|9!hPez|lq8VC}PvqZ4}|v?mjfQm~_^(6xINP3gAihvnD{YtTmbE-C>lU{^w`x!pYMuhuz#w~`5#8XnT33~r`vHc`^|KI3D(vF1ZvZC#I(SWbS?2MnNOu@+NqN!rQ3nN7Y?Em`3s$Brla9iTo{v{?>ZEmc`r1zW6+sSMLV92KDZd| zXcZdZ%jkexWBbSG4ELkY|A+?sGkV{@=u%|=DeSS5KXLx;un`Ro+yT9@54z^V(aelT zKND_>?XzS1f>>XIKL05C{Il`;hS>f#`ut8buusvzzWym01~?uY&Y&G-J{FcD9~wYm zGy|p3Ow~j0>m2Qe4t!m#Pmc9D=zw>l{oIF6>@hTh&n79j=C4KHLO0EJ^udqN41JDv za0m_HBzoR2p@C#N9@_JwYhDKJr!o3mOZ2`j=nJhsdd!nkDLBv~bh9l*Q}Z6{eP~X!x~?S4pa_Z+v@1d zYojx7gm&B<-4or>`-a5p!_f?mMrS+$9dHI3$O5$g|DpXpf=LT2Dfqy%=s@ey8(&8s zd?(g-#`@mqcjy4e(189#157^^+Vi9BCD6=OjrAtzeVtBm{!Q_~*f0w1aC*G)b~Lah z@%m%2{dqLdH_;hyMJMt;+TX|M5`K*?(a&fK8YTP?Z?rj{2dMWpV*%1xA0spbOHs@iIz*%IsXk}Lr3(%L1;=x#rin( z!D;A&3u61j=uDnOQ~i8wUyr^=-im&TF4bZ5{|GQ$t9yEpDqX8U8XMP5q zdFDStK!wm5lt8bSLj$ajKGy_Y%Jyi$z2o%(Xh1__ee55ce{YybgEN_m&g51!(#7cY z6|wy(G{9G4{S7pb52K%;Z^SRr{`R4P{1oedpn+aO$H{z#^KS?F&x8kxpcl%a1J%LQ zj4(ALw1eL0O!}h%jzE8*Fc$4^d~BZ*>od?zo{aUS=<~~MFw$qxf!Cv(=N)v7_o9Iu zLkIp99q>=|{`2Uu%l2ouel^;0X>@6-qW3q8wu$YXVm&#Cf&&akkKOg?7l@hYr`i%U zz%}TAuc7yCM+ex8K7S;73f;7SqM7&)&0OZcLLm9j{t6)zO(sfHaHjRp0Xm@__mB1K z(Yte>a@Kf>|TeS2A z_Lk@W8VW`}99!XXG?0VX6AS+ve))7gI^aX-507u6Guwxg(n#@tVP?}VhK#Miwp@Q6 zd*L5A8rxn9e?sy+CSAM2?A>x$0$qxBX!}5Ptw+T6DQE`nK-cssbhEyMEAd^t1xKW% zr+!=hJvO1muwx{SuDC4wr?FUPLo^82trBu`KDSKj|EVW2rAgQ=gtSJz<9HVjG;1H5oeGLW7ZI z$(EiNg89(RasyVwr?EcnMLWuwJw3J7&9Eu;S>WcJ4DI9_Jw*Y-(KANPkhC-u)A$31S6NS=KKc^Q*uQx#7 zh(Dlj#CnB8;P;_>XE{2vr_l_qL*Iz|(HGejSBBHj2@PaAHpk>66r9;N_z)gNGccz} zNYQ*ur@j!~Ba87ST!sdeuV{EA;@f(Bj@{m`lx+dHB64@8gY*jS&7KEDWEg5{X{|9@YOH*7&8 z+=V`PAaw&TAapG+qNku}@o+lIp)Z;SXomx_7EVF~T7~wvG1fmo``M57e-=~!|6i`F zLk5bX1C&K0t%-Kr0$tm_=vog#XE+kw-BZvHt^3gDenkhqh~A&4L})LJo|1Ct@otVu zJLpNl$R=Y^T!h}Z8omBbY(IqFcRtn&WrX``q5*b7&wUT{Gi5k>3`b#WoPopfE%f+Z zU6S+fi==GH@QQ4X25=3!_BWz4m>sXr$JE-z_Ls3b*WbXlcmmzL)k}qd>SI6ZP0>B} zU~GQ^{fv3GR5GOMIU3wdo6#BUKs(-t2AI8c2&gnVv#POP6P<=-N&~*KTff3AUiV3O(mPq8%408!V4y zsMkd|O$oJOG4^^TBKj5VB>LG>vQm2LADtVF_WOLwB!4A>f&>2>tx!3veIKkz`+RgwH=;BB z8=Yx-m9S@WqwPh}b6o~abt7bkiEilToPyrB2|Zo!;?<0wI6%Qj&!cNovufBh_0hF% zk9Ir&o8crhuouzI^gXt~ztKI?uv+M+1J4(10eOpKf!oKR%8|d@f$kQ!hMsH9E8M=w_^q-q#t;)Ce^2$>_vp z#`cBCILX8^3N^W~7Tw(k;tfUXhm2If%Cy%-XFeRw$awS^%|bWd1F`-R`XzJ+8qm>r z{Xg`>tVn}!y#W?x{6yc_FcIze9yHQr=!ea7=y7=`);~mF)!(A`pG7lvS;LU>g3;pW z^|I(5se|_0JlYdepa0iUFl9HQo9-@j22Y{K>m4kMN8m8bK{_S8W4R$ak-Y^f1d?i-Jb?DlEgKnn7=!||wXLKRfb2kn3 z;%I->(WPsFW~M!6;5D)R=BAu~JDf{{o8?Y)*RDj5;|tL@(HVb;X6SqL{xk7<&Sv2h zT!~&UgI=$X4%{8>cPKjH3Gw=^NeaIC9zoCJJLm%+pc(iQ?dW^7gTK+4WoaHdDvW-* zRmPe)8cX3L=yRLV{`R8pi^J%IkHvcOx7hGk^ddS?))wK$f|!;1)o2Ih(DPn7Uaybd z-vZ58x7a=iU80fb^V87#=AZ%HgG_|;Pr>7~F5d7Sn!-J3hexpv{(<$de9O?mP&Abj z(M^0C`YHD?y5_H;1HKjA8T|&k)BY1S^ZeIqm7e_tu@z?P5CZ9pZq{+=3@4+TZ6Uh3oZV$Rd-*kwd|A%OB zt$s#3_$Qj)F|2h?bk`R}m!LA5^5*Cs>4k2pYoj-y{oR5FvM{zU#}?Grq5b{bF&TdO z^e+vrNsUe+6CJSz^}c9o??4Ayi>~oTbjCZ-%zck`cnS^hKlBZFdFNmSOa+Vv)C=7^ zBa#%Zr*Jcx>K~#%qo0ObWjz&p+0)tTB9?Wf&Fn2*2bgQ9*cAf-;9Q%&%J?WUpao<^^)L-)>6bSX|p zFQF;V*E3`+1N~xC8B?GCT`5$iVHCQ?_o0D2j%MOn?2QMo7gp~TcKz+>ab1B1vIWh= zb~F>8MvtM#?-H7cHoe1yJ7Z7J>i`N4{2aPAo6wmbMqfO|`h>_E;BVAhqu=T3^bMK1 z5v{MoRLao-OI{Ps`Dk=6J&!%`XY@_lq#x)14hmB#IJ5I;io5m?yEBPylBH-ymPMaL z*KjSG>aFNr`3&8JN6_7W4n0+Q287L99=*Q}dVk*moPRsMo(5BRBf1xE#v-@?P31~- z4PQqe{19F11DF~R4d@*DT<(EkiOQo()C#>m0{vz+1AXqnft-I|rE6&L!4Kk%-=hPc zMfXOYL176Rp%1o2UpW0^`xrF9De?O4XrK?G_pL=Uxd~HyCAM!*QgH3}ps6{8&g?hz zfq&4BFQS>rGdSE=49#3sG{CxO$HUQ0I40JoqVIv3SOpiN$8!^Q!Q{IXd@%2j&~ZUD z;&QQG7k#iDmdB}RfXmU2pT=u&BieE9q2bM07=1x?Kr`7Jy*?hR;dEqE^8f!(Fr`0Y zIXsI#Sp3>x10SQTrb9Sy@7I0_fwLA1k>!^79{iRjYYhX%Y14QLHIk&S3zZ(8^K zZ=+zx@1p_iMAz^ObnU-KJNPYLzZlInA`F}#9q=l&pVH`uO9k|~rs&K&qnomSY@dLs zKmVUa!5Q2ZFWiHs_!0CRzl_c?p#dC5?<+7W zWVU>?COS^zQOWT8`A#&X)(pFGVHvtc$I;CEiq7C~tc6#P4j&>t(IuLSo`!j7AP+{L zLZ{NjN}>=l~_L9@a)@ zIu70KGte0?M)%T_v3(sD@%+C-!3^w2Ka74xcWw5G;Zv+QdaN3t9d<{L=P2~PTVnft z=)kMd)AAbD#?9zb{)z^03B51d4V-^(EJVQpilHg0jXuyQ+6m3X!07epjAo!6EsXVL z=;nMLyWmFj+jFK#Vc>FTKh@FG)@%~z-_6o4Ug(W>FapiUgjl}?o$;OMSF)Ap@%aMn z@DRELr_qiRlfyTlY}lP@SG3<1Xogo~IedRI=ifKcDH^I`z8gct&9Dmf;pn+vjJ|kY z#aXx)Yht%4;f;7JI@4#cA?`r;Q2Nx+Pb;iIeG>Zqcm&v|aPyN$OrLa2n$#@e!fp=ozo5F9$S7LAKC(y56O>Yh}y#~$PE!YCrqx~n( zP^e3x{*16$CZZ{O65TAnqicO0U6R~0LqJ!f1Jp&YcZ&{3pPPo>e+zm{7o!t-G+uuN z`S?yI-lX6r`~uxf`_XfJ9PQvgbTj6e6*{^a9iURQHu|a81l{c|@mrjZ?uA~n!#AXX zSc&=_I1FFGCq4i9=Y#=YMN|0^wn*bo#cl~5-#<5Oo`=zyJ{jw;#`@dn7m?4=P5EJPDC>>7hB*WbOyVz9ex=tc58ZKFZJutOw_+E zbld{XL?`rAbVoBg6bs-;betJzhVRCtGkTmtJ$wbNA4iYd1@w3pxIGMzfvMD^?X}T> zTVQGrpzn|2=zwF<3CzJvI3LZ>U1%mAxSjKFidN8IM=zicY>qcva-KQ(ukVxC?#o zcQn9r=s@Xrgc%ozUWI-&D~&Ei2W*Rjum(PfF5MpV*d9RpOa2)Pm(YlE+!@yHO0=UY zXsVl|Dei*9u@CwN+=zB`JbDHzQoo37*53Au)tc=^yKz~Iy z>)BXOTf+G_l59&t$5)^MRYo(@2wkgg=zYV`wVV*0g{JZ@^tt8e{p+w3zJ)%Q^}etP z3!wd$LHAaJBn4;K698#PWz^wl zeHj|)`dEJ-9q1sM>eJ|F!{6wy>x(}co@;=qfB(BD1qT|0p3}+bgVSRBTy(|{pu2n} zI>3vu{x&+p-RLGfi1u>|&A@Ny9yy04udDqGw`z;<502UNqngtc_LBAMu8v&)tG<>U$pJ{5PSnjRpt2hz@Z1itq-^ zKtFWqp)+ZY&b%GE*4M=PQ1rPQFf{-=k$cbyEXPW?7Q5mXSPM%f9}nNd`{FbjmZ2B& ztPH=^Zix;&2kmGcx-|Epfhh?X~EPuR~`#1r2CkY<~a^XcfBV+tB`gK<_(^JfBQl zq+sfEuL=WaL@S~*u7%FHMYIzdKp*s2_D3^t9oq49^!=~^4R8gzxt~Y-*@gzP3$uFu zzoFm^zK{Nnc9i~9cpyKzNsFPIs1|yhx?@S4h9298&>6psW${y-gMXnDneue-R`l2| z#>+kbt10-Y_6GWb`7GXW1glg34~@L)GvSq7A3IW?ial`)_QJf+h8d4QGjk(4kvZrD z7NJYK3LWP;Od9!C3K_T$P1$+$!R)I;W{N~BMH{2XwF}x&ujuILtmtBN s{aSP{ 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 diff --git a/netbox/translations/tr/LC_MESSAGES/django.po b/netbox/translations/tr/LC_MESSAGES/django.po index ce0eeec33..f5dcbcac7 100644 --- a/netbox/translations/tr/LC_MESSAGES/django.po +++ b/netbox/translations/tr/LC_MESSAGES/django.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-21 19:48+0000\n" +"POT-Creation-Date: 2024-04-04 19:11+0000\n" "PO-Revision-Date: 2023-10-30 17:48+0000\n" "Last-Translator: Jeremy Stretch, 2024\n" "Language-Team: Turkish (https://app.transifex.com/netbox-community/teams/178115/tr/)\n" @@ -64,8 +64,8 @@ msgid "Your preferences have been updated." msgstr "Tercihleriniz güncellendi." #: circuits/choices.py:21 dcim/choices.py:20 dcim/choices.py:102 -#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1419 -#: dcim/choices.py:1495 dcim/choices.py:1545 virtualization/choices.py:20 +#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1425 +#: dcim/choices.py:1501 dcim/choices.py:1551 virtualization/choices.py:20 #: virtualization/choices.py:45 vpn/choices.py:18 msgid "Planned" msgstr "Planlanan" @@ -75,8 +75,8 @@ msgid "Provisioning" msgstr "Tedarik" #: circuits/choices.py:23 dcim/choices.py:22 dcim/choices.py:103 -#: dcim/choices.py:173 dcim/choices.py:219 dcim/choices.py:1494 -#: dcim/choices.py:1544 extras/tables/tables.py:380 ipam/choices.py:31 +#: dcim/choices.py:173 dcim/choices.py:219 dcim/choices.py:1500 +#: dcim/choices.py:1550 extras/tables/tables.py:380 ipam/choices.py:31 #: ipam/choices.py:49 ipam/choices.py:69 ipam/choices.py:154 #: templates/extras/configcontext.html:26 templates/users/user.html:38 #: users/forms/bulk_edit.py:36 virtualization/choices.py:22 @@ -85,7 +85,7 @@ msgid "Active" msgstr "Aktif" #: circuits/choices.py:24 dcim/choices.py:172 dcim/choices.py:218 -#: dcim/choices.py:1493 dcim/choices.py:1546 virtualization/choices.py:24 +#: dcim/choices.py:1499 dcim/choices.py:1552 virtualization/choices.py:24 #: virtualization/choices.py:43 msgid "Offline" msgstr "Çevrim dışı" @@ -98,7 +98,7 @@ msgstr "Hazırlıktan Kaldırma" msgid "Decommissioned" msgstr "Hizmet dışı bırakıldı" -#: circuits/filtersets.py:29 circuits/filtersets.py:184 dcim/filtersets.py:124 +#: circuits/filtersets.py:29 circuits/filtersets.py:190 dcim/filtersets.py:124 #: dcim/filtersets.py:185 dcim/filtersets.py:260 dcim/filtersets.py:369 #: dcim/filtersets.py:903 dcim/filtersets.py:1207 dcim/filtersets.py:1702 #: dcim/filtersets.py:1945 dcim/filtersets.py:2003 ipam/filtersets.py:305 @@ -107,7 +107,7 @@ msgstr "Hizmet dışı bırakıldı" msgid "Region (ID)" msgstr "Bölge (ID)" -#: circuits/filtersets.py:36 circuits/filtersets.py:191 dcim/filtersets.py:130 +#: circuits/filtersets.py:36 circuits/filtersets.py:197 dcim/filtersets.py:130 #: dcim/filtersets.py:192 dcim/filtersets.py:267 dcim/filtersets.py:376 #: dcim/filtersets.py:910 dcim/filtersets.py:1214 dcim/filtersets.py:1709 #: dcim/filtersets.py:1952 dcim/filtersets.py:2010 extras/filtersets.py:414 @@ -117,7 +117,7 @@ msgstr "Bölge (ID)" msgid "Region (slug)" msgstr "Bölge (kısa ad)" -#: circuits/filtersets.py:42 circuits/filtersets.py:197 dcim/filtersets.py:198 +#: circuits/filtersets.py:42 circuits/filtersets.py:203 dcim/filtersets.py:198 #: dcim/filtersets.py:273 dcim/filtersets.py:382 dcim/filtersets.py:916 #: dcim/filtersets.py:1220 dcim/filtersets.py:1715 dcim/filtersets.py:1958 #: dcim/filtersets.py:2016 ipam/filtersets.py:318 ipam/filtersets.py:909 @@ -125,7 +125,7 @@ msgstr "Bölge (kısa ad)" msgid "Site group (ID)" msgstr "Site grubu (ID)" -#: circuits/filtersets.py:49 circuits/filtersets.py:204 dcim/filtersets.py:205 +#: circuits/filtersets.py:49 circuits/filtersets.py:210 dcim/filtersets.py:205 #: dcim/filtersets.py:280 dcim/filtersets.py:389 dcim/filtersets.py:923 #: dcim/filtersets.py:1227 dcim/filtersets.py:1722 dcim/filtersets.py:1965 #: dcim/filtersets.py:2023 extras/filtersets.py:420 ipam/filtersets.py:325 @@ -135,7 +135,7 @@ msgid "Site group (slug)" msgstr "Site grubu (kısa ad)" #: circuits/filtersets.py:54 circuits/forms/bulk_import.py:117 -#: circuits/forms/filtersets.py:47 circuits/forms/filtersets.py:171 +#: circuits/forms/filtersets.py:47 circuits/forms/filtersets.py:167 #: circuits/forms/model_forms.py:137 dcim/forms/bulk_edit.py:166 #: dcim/forms/bulk_edit.py:238 dcim/forms/bulk_edit.py:570 #: dcim/forms/bulk_edit.py:763 dcim/forms/bulk_import.py:130 @@ -158,8 +158,8 @@ msgstr "Site grubu (kısa ad)" #: ipam/forms/bulk_import.py:170 ipam/forms/bulk_import.py:437 #: ipam/forms/filtersets.py:152 ipam/forms/filtersets.py:226 #: ipam/forms/filtersets.py:417 ipam/forms/filtersets.py:470 -#: ipam/forms/model_forms.py:206 ipam/forms/model_forms.py:548 -#: ipam/forms/model_forms.py:640 ipam/tables/ip.py:244 +#: ipam/forms/model_forms.py:206 ipam/forms/model_forms.py:552 +#: ipam/forms/model_forms.py:644 ipam/tables/ip.py:244 #: ipam/tables/vlans.py:114 ipam/tables/vlans.py:216 #: templates/circuits/circuittermination_edit.html:20 #: templates/circuits/inc/circuit_termination.html:33 @@ -181,13 +181,13 @@ msgstr "Site grubu (kısa ad)" #: virtualization/forms/model_forms.py:107 #: virtualization/forms/model_forms.py:174 #: virtualization/tables/clusters.py:77 -#: virtualization/tables/virtualmachines.py:53 vpn/forms/filtersets.py:262 +#: virtualization/tables/virtualmachines.py:62 vpn/forms/filtersets.py:262 #: wireless/forms/model_forms.py:77 wireless/forms/model_forms.py:117 msgid "Site" msgstr "Site" -#: circuits/filtersets.py:60 circuits/filtersets.py:215 -#: circuits/filtersets.py:252 dcim/filtersets.py:215 dcim/filtersets.py:290 +#: circuits/filtersets.py:60 circuits/filtersets.py:221 +#: circuits/filtersets.py:258 dcim/filtersets.py:215 dcim/filtersets.py:290 #: dcim/filtersets.py:363 extras/filtersets.py:436 ipam/filtersets.py:215 #: ipam/filtersets.py:335 ipam/filtersets.py:926 #: virtualization/filtersets.py:75 virtualization/filtersets.py:203 @@ -199,33 +199,39 @@ msgstr "Site (kısa ad)" msgid "ASN (ID)" msgstr "ASN (ID)" -#: circuits/filtersets.py:87 circuits/filtersets.py:114 -#: circuits/filtersets.py:148 -msgid "Provider (ID)" -msgstr "Sağlayıcı (ID)" +#: circuits/filtersets.py:71 circuits/forms/filtersets.py:27 +#: ipam/forms/model_forms.py:158 ipam/models/asns.py:108 +#: ipam/models/asns.py:125 ipam/tables/asn.py:41 templates/ipam/asn.html:20 +msgid "ASN" +msgstr "ASN" #: circuits/filtersets.py:93 circuits/filtersets.py:120 #: circuits/filtersets.py:154 +msgid "Provider (ID)" +msgstr "Sağlayıcı (ID)" + +#: circuits/filtersets.py:99 circuits/filtersets.py:126 +#: circuits/filtersets.py:160 msgid "Provider (slug)" msgstr "Sağlayıcı (kısa ad)" -#: circuits/filtersets.py:159 +#: circuits/filtersets.py:165 msgid "Provider account (ID)" msgstr "Sağlayıcı hesabı (ID)" -#: circuits/filtersets.py:164 +#: circuits/filtersets.py:170 msgid "Provider network (ID)" msgstr "Sağlayıcı ağı (ID)" -#: circuits/filtersets.py:168 +#: circuits/filtersets.py:174 msgid "Circuit type (ID)" msgstr "Devre tipi (ID)" -#: circuits/filtersets.py:174 +#: circuits/filtersets.py:180 msgid "Circuit type (slug)" msgstr "Devre tipi (kısa ad)" -#: circuits/filtersets.py:209 circuits/filtersets.py:246 +#: circuits/filtersets.py:215 circuits/filtersets.py:252 #: dcim/filtersets.py:209 dcim/filtersets.py:284 dcim/filtersets.py:357 #: dcim/filtersets.py:927 dcim/filtersets.py:1232 dcim/filtersets.py:1727 #: dcim/filtersets.py:1969 dcim/filtersets.py:2028 ipam/filtersets.py:209 @@ -235,13 +241,13 @@ msgstr "Devre tipi (kısa ad)" msgid "Site (ID)" msgstr "Site (ID)" -#: circuits/filtersets.py:238 core/filtersets.py:73 core/filtersets.py:132 +#: circuits/filtersets.py:244 core/filtersets.py:73 core/filtersets.py:132 #: dcim/filtersets.py:640 dcim/filtersets.py:1201 dcim/filtersets.py:2076 #: extras/filtersets.py:40 extras/filtersets.py:69 extras/filtersets.py:101 #: extras/filtersets.py:140 extras/filtersets.py:168 extras/filtersets.py:195 #: extras/filtersets.py:226 extras/filtersets.py:295 extras/filtersets.py:343 #: extras/filtersets.py:403 extras/filtersets.py:562 extras/filtersets.py:604 -#: extras/filtersets.py:645 ipam/forms/model_forms.py:430 +#: extras/filtersets.py:645 ipam/forms/model_forms.py:416 #: netbox/filtersets.py:275 netbox/forms/__init__.py:23 #: netbox/forms/base.py:163 templates/htmx/object_selector.html:28 #: templates/inc/filter_list.html:53 templates/ipam/ipaddress_assign.html:32 @@ -251,7 +257,7 @@ msgstr "Site (ID)" msgid "Search" msgstr "Arama" -#: circuits/filtersets.py:242 circuits/forms/bulk_edit.py:167 +#: circuits/filtersets.py:248 circuits/forms/bulk_edit.py:167 #: circuits/forms/model_forms.py:110 circuits/forms/model_forms.py:132 #: dcim/forms/connections.py:66 templates/circuits/circuit.html:15 #: templates/dcim/inc/cable_termination.html:55 @@ -259,11 +265,11 @@ msgstr "Arama" msgid "Circuit" msgstr "Devre" -#: circuits/filtersets.py:256 +#: circuits/filtersets.py:262 msgid "ProviderNetwork (ID)" msgstr "Sağlayıcı Ağı (ID)" -#: circuits/forms/bulk_edit.py:25 circuits/forms/filtersets.py:56 +#: circuits/forms/bulk_edit.py:25 circuits/forms/filtersets.py:52 #: circuits/forms/model_forms.py:26 circuits/tables/providers.py:33 #: dcim/forms/bulk_edit.py:126 dcim/forms/filtersets.py:187 #: dcim/forms/model_forms.py:126 dcim/tables/sites.py:94 @@ -374,8 +380,8 @@ msgstr "Açıklama" #: circuits/forms/bulk_edit.py:46 circuits/forms/bulk_edit.py:68 #: circuits/forms/bulk_edit.py:118 circuits/forms/bulk_import.py:35 #: circuits/forms/bulk_import.py:50 circuits/forms/bulk_import.py:76 -#: circuits/forms/filtersets.py:70 circuits/forms/filtersets.py:88 -#: circuits/forms/filtersets.py:116 circuits/forms/filtersets.py:131 +#: circuits/forms/filtersets.py:66 circuits/forms/filtersets.py:84 +#: circuits/forms/filtersets.py:112 circuits/forms/filtersets.py:127 #: circuits/forms/model_forms.py:32 circuits/forms/model_forms.py:44 #: circuits/forms/model_forms.py:58 circuits/forms/model_forms.py:92 #: circuits/tables/circuits.py:55 circuits/tables/providers.py:72 @@ -387,18 +393,18 @@ msgstr "Açıklama" msgid "Provider" msgstr "Sağlayıcı" -#: circuits/forms/bulk_edit.py:75 circuits/forms/filtersets.py:91 +#: circuits/forms/bulk_edit.py:75 circuits/forms/filtersets.py:87 #: templates/circuits/providernetwork.html:31 msgid "Service ID" msgstr "Servis ID" -#: circuits/forms/bulk_edit.py:95 circuits/forms/filtersets.py:107 +#: circuits/forms/bulk_edit.py:95 circuits/forms/filtersets.py:103 #: dcim/forms/bulk_edit.py:204 dcim/forms/bulk_edit.py:500 #: dcim/forms/bulk_edit.py:694 dcim/forms/bulk_edit.py:1063 #: dcim/forms/bulk_edit.py:1090 dcim/forms/bulk_edit.py:1562 #: dcim/forms/filtersets.py:977 dcim/forms/filtersets.py:1353 -#: dcim/forms/filtersets.py:1374 dcim/tables/devices.py:722 -#: dcim/tables/devices.py:782 dcim/tables/devices.py:1009 +#: dcim/forms/filtersets.py:1374 dcim/tables/devices.py:726 +#: dcim/tables/devices.py:786 dcim/tables/devices.py:1013 #: dcim/tables/devicetypes.py:245 dcim/tables/devicetypes.py:260 #: dcim/tables/racks.py:32 extras/forms/bulk_edit.py:259 #: extras/tables/tables.py:328 templates/circuits/circuittype.html:33 @@ -410,7 +416,7 @@ msgid "Color" msgstr "Renk" #: circuits/forms/bulk_edit.py:113 circuits/forms/bulk_import.py:89 -#: circuits/forms/filtersets.py:126 core/forms/bulk_edit.py:17 +#: circuits/forms/filtersets.py:122 core/forms/bulk_edit.py:17 #: core/forms/filtersets.py:29 core/tables/data.py:20 core/tables/jobs.py:18 #: dcim/forms/bulk_edit.py:281 dcim/forms/bulk_edit.py:672 #: dcim/forms/bulk_edit.py:811 dcim/forms/bulk_edit.py:879 @@ -429,7 +435,7 @@ msgstr "Renk" #: dcim/forms/filtersets.py:1253 dcim/forms/filtersets.py:1348 #: dcim/forms/filtersets.py:1369 dcim/forms/object_import.py:89 #: dcim/forms/object_import.py:118 dcim/forms/object_import.py:150 -#: dcim/tables/devices.py:211 dcim/tables/devices.py:838 +#: dcim/tables/devices.py:211 dcim/tables/devices.py:842 #: dcim/tables/power.py:77 extras/forms/bulk_import.py:39 #: extras/tables/tables.py:278 extras/tables/tables.py:350 #: extras/tables/tables.py:448 netbox/tables/tables.py:234 @@ -454,12 +460,12 @@ msgid "Type" msgstr "Tür" #: circuits/forms/bulk_edit.py:123 circuits/forms/bulk_import.py:82 -#: circuits/forms/filtersets.py:139 circuits/forms/model_forms.py:97 +#: circuits/forms/filtersets.py:135 circuits/forms/model_forms.py:97 msgid "Provider account" msgstr "Sağlayıcı hesabı" #: circuits/forms/bulk_edit.py:131 circuits/forms/bulk_import.py:95 -#: circuits/forms/filtersets.py:150 core/forms/filtersets.py:34 +#: circuits/forms/filtersets.py:146 core/forms/filtersets.py:34 #: core/forms/filtersets.py:75 core/tables/data.py:23 core/tables/jobs.py:26 #: dcim/forms/bulk_edit.py:104 dcim/forms/bulk_edit.py:179 #: dcim/forms/bulk_edit.py:260 dcim/forms/bulk_edit.py:593 @@ -473,8 +479,8 @@ msgstr "Sağlayıcı hesabı" #: dcim/forms/filtersets.py:281 dcim/forms/filtersets.py:726 #: dcim/forms/filtersets.py:835 dcim/forms/filtersets.py:871 #: dcim/forms/filtersets.py:972 dcim/forms/filtersets.py:1083 -#: dcim/tables/devices.py:173 dcim/tables/devices.py:841 -#: dcim/tables/devices.py:1069 dcim/tables/modules.py:69 +#: dcim/tables/devices.py:173 dcim/tables/devices.py:845 +#: dcim/tables/devices.py:1073 dcim/tables/modules.py:69 #: dcim/tables/power.py:74 dcim/tables/racks.py:66 dcim/tables/sites.py:82 #: dcim/tables/sites.py:133 ipam/forms/bulk_edit.py:240 #: ipam/forms/bulk_edit.py:289 ipam/forms/bulk_edit.py:337 @@ -482,7 +488,7 @@ msgstr "Sağlayıcı hesabı" #: ipam/forms/bulk_import.py:256 ipam/forms/bulk_import.py:292 #: ipam/forms/bulk_import.py:458 ipam/forms/filtersets.py:205 #: ipam/forms/filtersets.py:270 ipam/forms/filtersets.py:341 -#: ipam/forms/filtersets.py:482 ipam/forms/model_forms.py:449 +#: ipam/forms/filtersets.py:482 ipam/forms/model_forms.py:435 #: ipam/tables/ip.py:236 ipam/tables/ip.py:309 ipam/tables/ip.py:359 #: ipam/tables/ip.py:421 ipam/tables/ip.py:448 ipam/tables/vlans.py:122 #: ipam/tables/vlans.py:227 templates/circuits/circuit.html:35 @@ -503,7 +509,7 @@ msgstr "Sağlayıcı hesabı" #: virtualization/forms/bulk_import.py:80 #: virtualization/forms/filtersets.py:61 #: virtualization/forms/filtersets.py:156 virtualization/tables/clusters.py:74 -#: virtualization/tables/virtualmachines.py:50 vpn/forms/bulk_edit.py:38 +#: virtualization/tables/virtualmachines.py:59 vpn/forms/bulk_edit.py:38 #: vpn/forms/bulk_import.py:37 vpn/forms/filtersets.py:46 #: vpn/tables/tunnels.py:48 wireless/forms/bulk_edit.py:42 #: wireless/forms/bulk_edit.py:104 wireless/forms/bulk_import.py:43 @@ -514,7 +520,7 @@ msgid "Status" msgstr "Durum" #: circuits/forms/bulk_edit.py:137 circuits/forms/bulk_import.py:100 -#: circuits/forms/filtersets.py:119 dcim/forms/bulk_edit.py:120 +#: circuits/forms/filtersets.py:115 dcim/forms/bulk_edit.py:120 #: dcim/forms/bulk_edit.py:185 dcim/forms/bulk_edit.py:255 #: dcim/forms/bulk_edit.py:366 dcim/forms/bulk_edit.py:583 #: dcim/forms/bulk_edit.py:684 dcim/forms/bulk_edit.py:1590 @@ -572,15 +578,15 @@ msgstr "Durum" msgid "Tenant" msgstr "Kiracı" -#: circuits/forms/bulk_edit.py:142 circuits/forms/filtersets.py:174 +#: circuits/forms/bulk_edit.py:142 circuits/forms/filtersets.py:170 msgid "Install date" msgstr "Yükleme tarihi" -#: circuits/forms/bulk_edit.py:147 circuits/forms/filtersets.py:179 +#: circuits/forms/bulk_edit.py:147 circuits/forms/filtersets.py:175 msgid "Termination date" msgstr "Fesih tarihi" -#: circuits/forms/bulk_edit.py:153 circuits/forms/filtersets.py:186 +#: circuits/forms/bulk_edit.py:153 circuits/forms/filtersets.py:182 msgid "Commit rate (Kbps)" msgstr "Taahhüt oranı (Kbps)" @@ -613,7 +619,7 @@ msgstr "Atanan sağlayıcı" #: circuits/forms/bulk_import.py:70 dcim/forms/bulk_import.py:178 #: dcim/forms/bulk_import.py:388 dcim/forms/bulk_import.py:1108 -#: dcim/forms/bulk_import.py:1187 extras/forms/bulk_import.py:229 +#: dcim/forms/bulk_import.py:1187 extras/forms/bulk_import.py:235 msgid "RGB color in hexadecimal. Example:" msgstr "Onaltılık değerde RGB rengi. Örnek:" @@ -649,12 +655,12 @@ msgstr "Operasyonel durum" msgid "Assigned tenant" msgstr "Atanan kiracı" -#: circuits/forms/bulk_import.py:123 circuits/forms/filtersets.py:147 +#: circuits/forms/bulk_import.py:123 circuits/forms/filtersets.py:143 #: circuits/forms/model_forms.py:143 msgid "Provider network" msgstr "Sağlayıcı ağı" -#: circuits/forms/filtersets.py:26 circuits/forms/filtersets.py:118 +#: circuits/forms/filtersets.py:26 circuits/forms/filtersets.py:114 #: dcim/forms/bulk_edit.py:247 dcim/forms/bulk_edit.py:345 #: dcim/forms/bulk_edit.py:575 dcim/forms/bulk_edit.py:622 #: dcim/forms/bulk_edit.py:772 dcim/forms/bulk_import.py:189 @@ -678,7 +684,7 @@ msgstr "Sağlayıcı ağı" #: extras/filtersets.py:441 extras/forms/filtersets.py:328 #: ipam/forms/bulk_edit.py:456 ipam/forms/filtersets.py:168 #: ipam/forms/filtersets.py:400 ipam/forms/filtersets.py:422 -#: ipam/forms/filtersets.py:448 ipam/forms/model_forms.py:560 +#: ipam/forms/filtersets.py:448 ipam/forms/model_forms.py:564 #: templates/dcim/device.html:26 templates/dcim/device_edit.html:30 #: templates/dcim/inc/cable_termination.html:12 #: templates/dcim/location.html:27 templates/dcim/powerpanel.html:27 @@ -688,13 +694,7 @@ msgstr "Sağlayıcı ağı" msgid "Location" msgstr "Konum" -#: circuits/forms/filtersets.py:27 ipam/forms/model_forms.py:158 -#: ipam/models/asns.py:108 ipam/models/asns.py:125 ipam/tables/asn.py:41 -#: templates/ipam/asn.html:20 -msgid "ASN" -msgstr "ASN" - -#: circuits/forms/filtersets.py:28 circuits/forms/filtersets.py:120 +#: circuits/forms/filtersets.py:28 circuits/forms/filtersets.py:116 #: dcim/forms/filtersets.py:136 dcim/forms/filtersets.py:150 #: dcim/forms/filtersets.py:166 dcim/forms/filtersets.py:198 #: dcim/forms/filtersets.py:249 dcim/forms/filtersets.py:334 @@ -707,7 +707,7 @@ msgstr "ASN" msgid "Contacts" msgstr "İletişim" -#: circuits/forms/filtersets.py:33 circuits/forms/filtersets.py:157 +#: circuits/forms/filtersets.py:33 circuits/forms/filtersets.py:153 #: dcim/forms/bulk_edit.py:110 dcim/forms/bulk_edit.py:222 #: dcim/forms/bulk_edit.py:747 dcim/forms/bulk_import.py:92 #: dcim/forms/filtersets.py:70 dcim/forms/filtersets.py:177 @@ -722,7 +722,7 @@ msgstr "İletişim" #: ipam/forms/bulk_edit.py:205 ipam/forms/bulk_edit.py:437 #: ipam/forms/bulk_edit.py:509 ipam/forms/filtersets.py:212 #: ipam/forms/filtersets.py:407 ipam/forms/filtersets.py:456 -#: ipam/forms/model_forms.py:532 templates/dcim/device.html:18 +#: ipam/forms/model_forms.py:536 templates/dcim/device.html:18 #: templates/dcim/rack.html:19 templates/dcim/rackreservation.html:25 #: templates/dcim/region.html:26 templates/dcim/site.html:31 #: templates/ipam/prefix.html:50 templates/ipam/vlan.html:19 @@ -732,7 +732,7 @@ msgstr "İletişim" msgid "Region" msgstr "Bölge" -#: circuits/forms/filtersets.py:38 circuits/forms/filtersets.py:162 +#: circuits/forms/filtersets.py:38 circuits/forms/filtersets.py:158 #: dcim/forms/bulk_edit.py:230 dcim/forms/bulk_edit.py:755 #: dcim/forms/filtersets.py:75 dcim/forms/filtersets.py:182 #: dcim/forms/filtersets.py:208 dcim/forms/filtersets.py:269 @@ -742,19 +742,15 @@ msgstr "Bölge" #: extras/filtersets.py:425 ipam/forms/bulk_edit.py:210 #: ipam/forms/bulk_edit.py:444 ipam/forms/bulk_edit.py:514 #: ipam/forms/filtersets.py:217 ipam/forms/filtersets.py:412 -#: ipam/forms/filtersets.py:461 ipam/forms/model_forms.py:545 +#: ipam/forms/filtersets.py:461 ipam/forms/model_forms.py:549 #: virtualization/forms/bulk_edit.py:85 virtualization/forms/filtersets.py:68 #: virtualization/forms/filtersets.py:134 #: virtualization/forms/model_forms.py:101 msgid "Site group" msgstr "Site grubu" -#: circuits/forms/filtersets.py:51 -msgid "ASN (legacy)" -msgstr "ASN (eski)" - -#: circuits/forms/filtersets.py:65 circuits/forms/filtersets.py:83 -#: circuits/forms/filtersets.py:102 circuits/forms/filtersets.py:117 +#: circuits/forms/filtersets.py:61 circuits/forms/filtersets.py:79 +#: circuits/forms/filtersets.py:98 circuits/forms/filtersets.py:113 #: core/forms/filtersets.py:63 dcim/forms/bulk_edit.py:718 #: dcim/forms/filtersets.py:164 dcim/forms/filtersets.py:196 #: dcim/forms/filtersets.py:825 dcim/forms/filtersets.py:920 @@ -780,7 +776,7 @@ msgstr "ASN (eski)" msgid "Attributes" msgstr "Öznitellikler" -#: circuits/forms/filtersets.py:73 circuits/tables/circuits.py:60 +#: circuits/forms/filtersets.py:69 circuits/tables/circuits.py:60 #: circuits/tables/providers.py:66 templates/circuits/circuit.html:23 #: templates/circuits/provideraccount.html:25 msgid "Account" @@ -801,7 +797,7 @@ msgstr "Devre Tipi" #: dcim/models/device_component_templates.py:491 #: dcim/models/device_component_templates.py:591 #: dcim/models/device_components.py:976 dcim/models/device_components.py:1050 -#: dcim/models/device_components.py:1166 dcim/models/devices.py:467 +#: dcim/models/device_components.py:1166 dcim/models/devices.py:469 #: dcim/models/racks.py:43 extras/models/tags.py:28 msgid "color" msgstr "renk" @@ -823,8 +819,8 @@ msgid "Unique circuit ID" msgstr "Benzersiz devre ID" #: circuits/models/circuits.py:67 core/models/data.py:55 -#: core/models/jobs.py:85 dcim/models/cables.py:49 dcim/models/devices.py:641 -#: dcim/models/devices.py:1165 dcim/models/devices.py:1374 +#: core/models/jobs.py:85 dcim/models/cables.py:49 dcim/models/devices.py:643 +#: dcim/models/devices.py:1170 dcim/models/devices.py:1379 #: dcim/models/power.py:95 dcim/models/racks.py:97 dcim/models/sites.py:154 #: dcim/models/sites.py:266 ipam/models/ip.py:252 ipam/models/ip.py:521 #: ipam/models/ip.py:729 ipam/models/vlans.py:175 @@ -903,7 +899,7 @@ msgstr "Yama paneli kimliği ve bağlantı noktası numaraları" #: extras/models/models.py:541 extras/models/staging.py:31 #: extras/models/tags.py:32 netbox/models/__init__.py:109 #: netbox/models/__init__.py:144 netbox/models/__init__.py:190 -#: users/models.py:273 users/models.py:348 +#: users/models.py:274 users/models.py:353 #: virtualization/models/virtualmachines.py:282 msgid "description" msgstr "açıklama" @@ -930,8 +926,8 @@ msgstr "Devre sonlandırma hem siteye hem de sağlayıcı ağına bağlanamaz." #: circuits/models/providers.py:22 circuits/models/providers.py:66 #: circuits/models/providers.py:104 core/models/data.py:42 #: core/models/jobs.py:46 dcim/models/device_component_templates.py:43 -#: dcim/models/device_components.py:54 dcim/models/devices.py:581 -#: dcim/models/devices.py:1305 dcim/models/devices.py:1370 +#: dcim/models/device_components.py:54 dcim/models/devices.py:583 +#: dcim/models/devices.py:1310 dcim/models/devices.py:1375 #: dcim/models/power.py:39 dcim/models/power.py:91 dcim/models/racks.py:62 #: dcim/models/sites.py:138 extras/models/configs.py:36 #: extras/models/configs.py:215 extras/models/customfields.py:89 @@ -944,7 +940,7 @@ msgstr "Devre sonlandırma hem siteye hem de sağlayıcı ağına bağlanamaz." #: ipam/models/vrfs.py:79 netbox/models/__init__.py:136 #: netbox/models/__init__.py:180 tenancy/models/contacts.py:64 #: tenancy/models/tenants.py:20 tenancy/models/tenants.py:45 -#: users/models.py:344 virtualization/models/clusters.py:57 +#: users/models.py:349 virtualization/models/clusters.py:57 #: virtualization/models/virtualmachines.py:70 #: virtualization/models/virtualmachines.py:272 vpn/models/crypto.py:24 #: vpn/models/crypto.py:71 vpn/models/crypto.py:131 vpn/models/crypto.py:183 @@ -1002,13 +998,13 @@ msgstr "sağlayıcı ağları" #: core/tables/data.py:16 core/tables/jobs.py:14 dcim/forms/filtersets.py:60 #: dcim/forms/object_create.py:42 dcim/tables/devices.py:88 #: dcim/tables/devices.py:125 dcim/tables/devices.py:167 -#: dcim/tables/devices.py:318 dcim/tables/devices.py:400 -#: dcim/tables/devices.py:444 dcim/tables/devices.py:496 -#: dcim/tables/devices.py:548 dcim/tables/devices.py:668 -#: dcim/tables/devices.py:749 dcim/tables/devices.py:799 -#: dcim/tables/devices.py:865 dcim/tables/devices.py:980 -#: dcim/tables/devices.py:1000 dcim/tables/devices.py:1029 -#: dcim/tables/devices.py:1059 dcim/tables/devicetypes.py:32 +#: dcim/tables/devices.py:322 dcim/tables/devices.py:404 +#: dcim/tables/devices.py:448 dcim/tables/devices.py:500 +#: dcim/tables/devices.py:552 dcim/tables/devices.py:672 +#: dcim/tables/devices.py:753 dcim/tables/devices.py:803 +#: dcim/tables/devices.py:869 dcim/tables/devices.py:984 +#: dcim/tables/devices.py:1004 dcim/tables/devices.py:1033 +#: dcim/tables/devices.py:1063 dcim/tables/devicetypes.py:32 #: dcim/tables/power.py:22 dcim/tables/power.py:62 dcim/tables/racks.py:23 #: dcim/tables/racks.py:53 dcim/tables/sites.py:24 dcim/tables/sites.py:51 #: dcim/tables/sites.py:78 dcim/tables/sites.py:125 @@ -1074,9 +1070,9 @@ msgstr "sağlayıcı ağları" #: virtualization/forms/object_create.py:23 #: virtualization/tables/clusters.py:17 virtualization/tables/clusters.py:39 #: virtualization/tables/clusters.py:62 -#: virtualization/tables/virtualmachines.py:45 -#: virtualization/tables/virtualmachines.py:119 -#: virtualization/tables/virtualmachines.py:172 vpn/tables/crypto.py:18 +#: virtualization/tables/virtualmachines.py:54 +#: virtualization/tables/virtualmachines.py:132 +#: virtualization/tables/virtualmachines.py:185 vpn/tables/crypto.py:18 #: vpn/tables/crypto.py:57 vpn/tables/crypto.py:93 vpn/tables/crypto.py:129 #: vpn/tables/crypto.py:158 vpn/tables/l2vpn.py:23 vpn/tables/tunnels.py:18 #: vpn/tables/tunnels.py:40 wireless/tables/wirelesslan.py:18 @@ -1111,7 +1107,7 @@ msgstr "Taahhüt Oranı" #: circuits/tables/circuits.py:75 circuits/tables/providers.py:48 #: circuits/tables/providers.py:82 circuits/tables/providers.py:107 -#: dcim/tables/devices.py:1042 dcim/tables/devicetypes.py:92 +#: dcim/tables/devices.py:1046 dcim/tables/devicetypes.py:92 #: dcim/tables/modules.py:29 dcim/tables/modules.py:72 dcim/tables/power.py:39 #: dcim/tables/power.py:96 dcim/tables/racks.py:76 dcim/tables/racks.py:156 #: dcim/tables/sites.py:103 extras/forms/bulk_edit.py:320 @@ -1123,7 +1119,7 @@ msgstr "Taahhüt Oranı" #: templates/inc/panels/comments.html:6 tenancy/tables/contacts.py:68 #: tenancy/tables/tenants.py:46 utilities/forms/fields/fields.py:29 #: virtualization/tables/clusters.py:91 -#: virtualization/tables/virtualmachines.py:68 vpn/tables/crypto.py:37 +#: virtualization/tables/virtualmachines.py:81 vpn/tables/crypto.py:37 #: vpn/tables/crypto.py:74 vpn/tables/crypto.py:109 vpn/tables/crypto.py:140 #: vpn/tables/crypto.py:173 vpn/tables/l2vpn.py:37 vpn/tables/tunnels.py:61 #: wireless/tables/wirelesslan.py:27 wireless/tables/wirelesslan.py:58 @@ -1160,7 +1156,7 @@ msgid "Completed" msgstr "Tamamlandı" #: core/choices.py:22 core/choices.py:59 dcim/choices.py:176 -#: dcim/choices.py:222 dcim/choices.py:1496 extras/choices.py:212 +#: dcim/choices.py:222 dcim/choices.py:1502 extras/choices.py:212 #: virtualization/choices.py:47 msgid "Failed" msgstr "Başarısız" @@ -1242,7 +1238,7 @@ msgstr "Veri kaynağı (isim)" #: core/forms/bulk_edit.py:24 core/forms/filtersets.py:39 #: core/tables/data.py:26 dcim/forms/bulk_edit.py:1012 #: dcim/forms/bulk_edit.py:1285 dcim/forms/filtersets.py:1270 -#: dcim/tables/devices.py:573 dcim/tables/devicetypes.py:221 +#: dcim/tables/devices.py:577 dcim/tables/devicetypes.py:221 #: extras/forms/bulk_edit.py:97 extras/forms/bulk_edit.py:161 #: extras/forms/bulk_edit.py:220 extras/forms/filtersets.py:119 #: extras/forms/filtersets.py:206 extras/forms/filtersets.py:267 @@ -1379,7 +1375,7 @@ msgstr "" msgid "Rack Elevations" msgstr "Raf Yükseltmeleri" -#: core/forms/model_forms.py:148 dcim/choices.py:1407 +#: core/forms/model_forms.py:148 dcim/choices.py:1413 #: dcim/forms/bulk_edit.py:859 dcim/forms/bulk_edit.py:1242 #: dcim/forms/bulk_edit.py:1260 dcim/tables/racks.py:89 #: netbox/navigation/menu.py:276 netbox/navigation/menu.py:280 @@ -1440,7 +1436,7 @@ msgstr " (varsayılan)" #: core/models/config.py:18 core/models/data.py:282 core/models/files.py:27 #: core/models/jobs.py:50 extras/models/models.py:760 -#: netbox/models/features.py:52 users/models.py:248 +#: netbox/models/features.py:52 users/models.py:249 msgid "created" msgstr "oluşturulan" @@ -1498,7 +1494,7 @@ msgstr "URL" #: core/models/data.py:62 dcim/models/device_component_templates.py:392 #: dcim/models/device_components.py:513 extras/models/models.py:88 -#: extras/models/models.py:331 extras/models/models.py:556 users/models.py:353 +#: extras/models/models.py:331 extras/models/models.py:556 users/models.py:358 msgid "enabled" msgstr "etkin" @@ -1714,7 +1710,7 @@ msgid "Staging" msgstr "Sahneleme" #: dcim/choices.py:23 dcim/choices.py:178 dcim/choices.py:223 -#: dcim/choices.py:1420 virtualization/choices.py:23 +#: dcim/choices.py:1426 virtualization/choices.py:23 #: virtualization/choices.py:48 msgid "Decommissioning" msgstr "Hizmetten çıkarma" @@ -1774,7 +1770,7 @@ msgstr "Kullanımdan kaldırıldı" msgid "Millimeters" msgstr "Milimetre" -#: dcim/choices.py:115 dcim/choices.py:1442 +#: dcim/choices.py:115 dcim/choices.py:1448 msgid "Inches" msgstr "İnç" @@ -1786,8 +1782,8 @@ msgstr "İnç" #: dcim/forms/filtersets.py:226 dcim/forms/model_forms.py:73 #: dcim/forms/model_forms.py:94 dcim/forms/model_forms.py:172 #: dcim/forms/model_forms.py:962 dcim/forms/model_forms.py:1303 -#: dcim/forms/object_import.py:181 dcim/tables/devices.py:676 -#: dcim/tables/devices.py:960 extras/tables/tables.py:181 +#: dcim/forms/object_import.py:181 dcim/tables/devices.py:680 +#: dcim/tables/devices.py:964 extras/tables/tables.py:181 #: ipam/tables/fhrp.py:59 ipam/tables/ip.py:374 ipam/tables/services.py:44 #: templates/dcim/interface.html:105 templates/dcim/interface.html:321 #: templates/dcim/location.html:44 templates/dcim/region.html:38 @@ -1800,7 +1796,7 @@ msgstr "İnç" #: tenancy/forms/bulk_import.py:58 tenancy/forms/model_forms.py:24 #: tenancy/forms/model_forms.py:69 virtualization/forms/bulk_edit.py:206 #: virtualization/forms/bulk_import.py:151 -#: virtualization/tables/virtualmachines.py:142 wireless/forms/bulk_edit.py:23 +#: virtualization/tables/virtualmachines.py:155 wireless/forms/bulk_edit.py:23 #: wireless/forms/bulk_import.py:21 wireless/forms/model_forms.py:20 msgid "Parent" msgstr "Ebeveyn" @@ -1849,7 +1845,7 @@ msgstr "Sağdan sola" msgid "Side to rear" msgstr "Yandan arkaya" -#: dcim/choices.py:198 dcim/choices.py:1215 +#: dcim/choices.py:198 dcim/choices.py:1221 msgid "Passive" msgstr "Pasif" @@ -1877,8 +1873,8 @@ msgstr "Uluslararası/ITA" msgid "Proprietary" msgstr "Tescilli" -#: dcim/choices.py:534 dcim/choices.py:764 dcim/choices.py:1131 -#: dcim/choices.py:1133 dcim/choices.py:1338 dcim/choices.py:1340 +#: dcim/choices.py:534 dcim/choices.py:764 dcim/choices.py:1137 +#: dcim/choices.py:1139 dcim/choices.py:1344 dcim/choices.py:1346 #: netbox/navigation/menu.py:188 msgid "Other" msgstr "Diğer" @@ -1891,177 +1887,177 @@ msgstr "ITA/Uluslararası" msgid "Physical" msgstr "Fiziksel" -#: dcim/choices.py:795 dcim/choices.py:949 +#: dcim/choices.py:795 dcim/choices.py:952 msgid "Virtual" msgstr "Sanal" -#: dcim/choices.py:796 dcim/choices.py:1019 dcim/forms/bulk_edit.py:1398 +#: dcim/choices.py:796 dcim/choices.py:1022 dcim/forms/bulk_edit.py:1398 #: dcim/forms/filtersets.py:1233 dcim/forms/model_forms.py:888 #: dcim/forms/model_forms.py:1197 netbox/navigation/menu.py:128 #: netbox/navigation/menu.py:132 templates/dcim/interface.html:217 msgid "Wireless" msgstr "Kablosuz" -#: dcim/choices.py:947 +#: dcim/choices.py:950 msgid "Virtual interfaces" msgstr "Sanal arayüzler" -#: dcim/choices.py:950 dcim/forms/bulk_edit.py:1295 +#: dcim/choices.py:953 dcim/forms/bulk_edit.py:1295 #: dcim/forms/bulk_import.py:785 dcim/forms/model_forms.py:876 -#: dcim/tables/devices.py:680 templates/dcim/interface.html:109 +#: dcim/tables/devices.py:684 templates/dcim/interface.html:109 #: templates/virtualization/vminterface.html:46 #: virtualization/forms/bulk_edit.py:211 #: virtualization/forms/bulk_import.py:158 -#: virtualization/tables/virtualmachines.py:146 +#: virtualization/tables/virtualmachines.py:159 msgid "Bridge" msgstr "Köprü" -#: dcim/choices.py:951 +#: dcim/choices.py:954 msgid "Link Aggregation Group (LAG)" msgstr "Bağlantı Toplama Grubu (LAG)" -#: dcim/choices.py:955 +#: dcim/choices.py:958 msgid "Ethernet (fixed)" msgstr "Ethernet (sabit)" -#: dcim/choices.py:969 +#: dcim/choices.py:972 msgid "Ethernet (modular)" msgstr "Ethernet (modüler)" -#: dcim/choices.py:1005 +#: dcim/choices.py:1008 msgid "Ethernet (backplane)" msgstr "Ethernet (arka panel)" -#: dcim/choices.py:1033 +#: dcim/choices.py:1036 msgid "Cellular" msgstr "Hücresel" -#: dcim/choices.py:1080 dcim/forms/filtersets.py:302 +#: dcim/choices.py:1086 dcim/forms/filtersets.py:302 #: dcim/forms/filtersets.py:736 dcim/forms/filtersets.py:876 #: dcim/forms/filtersets.py:1426 templates/dcim/inventoryitem.html:53 #: templates/dcim/virtualchassis_edit.html:55 msgid "Serial" msgstr "Seri" -#: dcim/choices.py:1095 +#: dcim/choices.py:1101 msgid "Coaxial" msgstr "Koaksiyel" -#: dcim/choices.py:1112 +#: dcim/choices.py:1118 msgid "Stacking" msgstr "İstifleme" -#: dcim/choices.py:1162 +#: dcim/choices.py:1168 msgid "Half" msgstr "Yarım" -#: dcim/choices.py:1163 +#: dcim/choices.py:1169 msgid "Full" msgstr "Dolu" -#: dcim/choices.py:1164 netbox/preferences.py:29 wireless/choices.py:480 +#: dcim/choices.py:1170 netbox/preferences.py:29 wireless/choices.py:480 msgid "Auto" msgstr "Oto" -#: dcim/choices.py:1175 +#: dcim/choices.py:1181 msgid "Access" msgstr "Erişim" -#: dcim/choices.py:1176 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 +#: dcim/choices.py:1182 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 #: templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "Etiketlenmiş" -#: dcim/choices.py:1177 +#: dcim/choices.py:1183 msgid "Tagged (All)" msgstr "Etiketlenmiş (Tümü)" -#: dcim/choices.py:1206 +#: dcim/choices.py:1212 msgid "IEEE Standard" msgstr "IEEE Standardı" -#: dcim/choices.py:1217 +#: dcim/choices.py:1223 msgid "Passive 24V (2-pair)" msgstr "Pasif 24V (2 çift)" -#: dcim/choices.py:1218 +#: dcim/choices.py:1224 msgid "Passive 24V (4-pair)" msgstr "Pasif 24V (4 çift)" -#: dcim/choices.py:1219 +#: dcim/choices.py:1225 msgid "Passive 48V (2-pair)" msgstr "Pasif 48V (2 çift)" -#: dcim/choices.py:1220 +#: dcim/choices.py:1226 msgid "Passive 48V (4-pair)" msgstr "Pasif 48V (4 çift)" -#: dcim/choices.py:1282 dcim/choices.py:1378 +#: dcim/choices.py:1288 dcim/choices.py:1384 msgid "Copper" msgstr "Bakır" -#: dcim/choices.py:1305 +#: dcim/choices.py:1311 msgid "Fiber Optic" msgstr "Fiber Optik" -#: dcim/choices.py:1394 +#: dcim/choices.py:1400 msgid "Fiber" msgstr "Elyaf" -#: dcim/choices.py:1418 dcim/forms/filtersets.py:1140 +#: dcim/choices.py:1424 dcim/forms/filtersets.py:1140 msgid "Connected" msgstr "Bağlı" -#: dcim/choices.py:1437 +#: dcim/choices.py:1443 msgid "Kilometers" msgstr "Kilometre" -#: dcim/choices.py:1438 templates/dcim/cable_trace.html:62 +#: dcim/choices.py:1444 templates/dcim/cable_trace.html:62 msgid "Meters" msgstr "Sayaçlar" -#: dcim/choices.py:1439 +#: dcim/choices.py:1445 msgid "Centimeters" msgstr "Santimetre" -#: dcim/choices.py:1440 +#: dcim/choices.py:1446 msgid "Miles" msgstr "Mil" -#: dcim/choices.py:1441 templates/dcim/cable_trace.html:63 +#: dcim/choices.py:1447 templates/dcim/cable_trace.html:63 msgid "Feet" msgstr "Ayaklar" -#: dcim/choices.py:1457 templates/dcim/device.html:332 +#: dcim/choices.py:1463 templates/dcim/device.html:332 #: templates/dcim/rack.html:157 msgid "Kilograms" msgstr "Kilogram" -#: dcim/choices.py:1458 +#: dcim/choices.py:1464 msgid "Grams" msgstr "Gramlar" -#: dcim/choices.py:1459 templates/dcim/rack.html:158 +#: dcim/choices.py:1465 templates/dcim/rack.html:158 msgid "Pounds" msgstr "Pound'lar" -#: dcim/choices.py:1460 +#: dcim/choices.py:1466 msgid "Ounces" msgstr "ons" -#: dcim/choices.py:1506 tenancy/choices.py:17 +#: dcim/choices.py:1512 tenancy/choices.py:17 msgid "Primary" msgstr "Birincil" -#: dcim/choices.py:1507 +#: dcim/choices.py:1513 msgid "Redundant" msgstr "Yedekli" -#: dcim/choices.py:1528 +#: dcim/choices.py:1534 msgid "Single phase" msgstr "Tek fazlı" -#: dcim/choices.py:1529 +#: dcim/choices.py:1535 msgid "Three-phase" msgstr "Üç fazlı" @@ -2338,7 +2334,7 @@ msgid "Virtual Chassis (ID)" msgstr "Sanal Kasa (ID)" #: dcim/filtersets.py:1303 dcim/forms/filtersets.py:106 -#: dcim/tables/devices.py:235 netbox/navigation/menu.py:67 +#: dcim/tables/devices.py:239 netbox/navigation/menu.py:67 #: templates/dcim/device.html:123 templates/dcim/device_edit.html:93 #: templates/dcim/virtualchassis.html:20 #: templates/dcim/virtualchassis_add.html:8 @@ -2362,7 +2358,7 @@ msgstr "Atanmış VID" #: dcim/filtersets.py:1448 dcim/forms/bulk_edit.py:1374 #: dcim/forms/bulk_import.py:836 dcim/forms/filtersets.py:1328 #: dcim/forms/model_forms.py:1182 dcim/models/device_components.py:712 -#: dcim/tables/devices.py:642 ipam/filtersets.py:282 ipam/filtersets.py:293 +#: dcim/tables/devices.py:646 ipam/filtersets.py:282 ipam/filtersets.py:293 #: ipam/filtersets.py:449 ipam/filtersets.py:550 ipam/filtersets.py:561 #: ipam/forms/bulk_edit.py:226 ipam/forms/bulk_edit.py:281 #: ipam/forms/bulk_edit.py:323 ipam/forms/bulk_import.py:156 @@ -2370,8 +2366,8 @@ msgstr "Atanmış VID" #: ipam/forms/filtersets.py:66 ipam/forms/filtersets.py:167 #: ipam/forms/filtersets.py:295 ipam/forms/model_forms.py:59 #: ipam/forms/model_forms.py:203 ipam/forms/model_forms.py:246 -#: ipam/forms/model_forms.py:290 ipam/forms/model_forms.py:412 -#: ipam/forms/model_forms.py:426 ipam/forms/model_forms.py:440 +#: ipam/forms/model_forms.py:290 ipam/forms/model_forms.py:398 +#: ipam/forms/model_forms.py:412 ipam/forms/model_forms.py:426 #: ipam/models/ip.py:232 ipam/models/ip.py:511 ipam/models/ip.py:719 #: ipam/models/vrfs.py:62 ipam/tables/ip.py:241 ipam/tables/ip.py:306 #: ipam/tables/ip.py:356 ipam/tables/ip.py:445 @@ -2384,7 +2380,7 @@ msgstr "Atanmış VID" #: virtualization/forms/filtersets.py:220 #: virtualization/forms/model_forms.py:347 #: virtualization/models/virtualmachines.py:348 -#: virtualization/tables/virtualmachines.py:123 +#: virtualization/tables/virtualmachines.py:136 msgid "VRF" msgstr "VRF" @@ -2398,7 +2394,7 @@ msgid "L2VPN (ID)" msgstr "L2VPN (KİMLİĞİ)" #: dcim/filtersets.py:1465 dcim/forms/filtersets.py:1333 -#: dcim/tables/devices.py:590 ipam/filtersets.py:973 +#: dcim/tables/devices.py:594 ipam/filtersets.py:973 #: ipam/forms/filtersets.py:499 ipam/tables/vlans.py:133 #: templates/dcim/interface.html:94 templates/ipam/vlan.html:69 #: templates/vpn/l2vpntermination.html:15 @@ -2469,7 +2465,7 @@ msgstr "Etiketler" #: dcim/forms/bulk_create.py:112 dcim/forms/filtersets.py:1390 #: dcim/forms/model_forms.py:426 dcim/forms/model_forms.py:475 #: dcim/forms/object_create.py:196 dcim/forms/object_create.py:352 -#: dcim/tables/devices.py:198 dcim/tables/devices.py:725 +#: dcim/tables/devices.py:198 dcim/tables/devices.py:729 #: dcim/tables/devicetypes.py:242 templates/dcim/device.html:45 #: templates/dcim/device.html:129 templates/dcim/modulebay.html:35 #: templates/dcim/virtualchassis.html:59 @@ -2488,7 +2484,7 @@ msgstr "" #: dcim/forms/bulk_edit.py:115 dcim/forms/bulk_import.py:99 #: dcim/forms/model_forms.py:120 dcim/tables/sites.py:89 #: ipam/filtersets.py:936 ipam/forms/bulk_edit.py:528 -#: ipam/forms/bulk_import.py:444 ipam/forms/model_forms.py:509 +#: ipam/forms/bulk_import.py:444 ipam/forms/model_forms.py:495 #: ipam/tables/fhrp.py:67 ipam/tables/vlans.py:118 ipam/tables/vlans.py:221 #: templates/dcim/interface.html:294 templates/dcim/site.html:37 #: templates/ipam/inc/panels/fhrp_groups.html:10 templates/ipam/vlan.html:30 @@ -2538,8 +2534,8 @@ msgstr "Saat dilimi" #: dcim/forms/filtersets.py:704 dcim/forms/filtersets.py:1417 #: dcim/forms/model_forms.py:224 dcim/forms/model_forms.py:970 #: dcim/forms/model_forms.py:1311 dcim/forms/object_import.py:186 -#: dcim/tables/devices.py:202 dcim/tables/devices.py:833 -#: dcim/tables/devices.py:944 dcim/tables/devicetypes.py:300 +#: dcim/tables/devices.py:202 dcim/tables/devices.py:837 +#: dcim/tables/devices.py:948 dcim/tables/devicetypes.py:300 #: dcim/tables/racks.py:69 extras/filtersets.py:457 #: ipam/forms/bulk_edit.py:245 ipam/forms/bulk_edit.py:294 #: ipam/forms/bulk_edit.py:342 ipam/forms/bulk_edit.py:546 @@ -2548,7 +2544,7 @@ msgstr "Saat dilimi" #: ipam/forms/filtersets.py:232 ipam/forms/filtersets.py:278 #: ipam/forms/filtersets.py:346 ipam/forms/filtersets.py:490 #: ipam/forms/model_forms.py:187 ipam/forms/model_forms.py:222 -#: ipam/forms/model_forms.py:249 ipam/forms/model_forms.py:647 +#: ipam/forms/model_forms.py:249 ipam/forms/model_forms.py:651 #: ipam/tables/ip.py:257 ipam/tables/ip.py:313 ipam/tables/ip.py:363 #: ipam/tables/vlans.py:126 ipam/tables/vlans.py:230 #: templates/dcim/device.html:187 @@ -2566,7 +2562,7 @@ msgstr "Saat dilimi" #: virtualization/forms/bulk_import.py:106 #: virtualization/forms/filtersets.py:153 #: virtualization/forms/model_forms.py:198 -#: virtualization/tables/virtualmachines.py:65 vpn/forms/bulk_edit.py:86 +#: virtualization/tables/virtualmachines.py:74 vpn/forms/bulk_edit.py:86 #: vpn/forms/bulk_import.py:81 vpn/forms/filtersets.py:84 #: vpn/forms/model_forms.py:77 vpn/forms/model_forms.py:112 #: vpn/tables/tunnels.py:82 @@ -2660,7 +2656,7 @@ msgstr "Ağırlık birimi" #: dcim/forms/model_forms.py:669 dcim/forms/object_create.py:399 #: dcim/tables/devices.py:194 dcim/tables/power.py:70 dcim/tables/racks.py:148 #: ipam/forms/bulk_edit.py:464 ipam/forms/filtersets.py:427 -#: ipam/forms/model_forms.py:571 templates/dcim/device.html:30 +#: ipam/forms/model_forms.py:575 templates/dcim/device.html:30 #: templates/dcim/inc/cable_termination.html:16 #: templates/dcim/powerfeed.html:31 templates/dcim/rack.html:14 #: templates/dcim/rack/base.html:4 templates/dcim/rack_edit.html:8 @@ -2693,7 +2689,7 @@ msgstr "Donanım" #: dcim/forms/model_forms.py:334 dcim/forms/model_forms.py:374 #: dcim/forms/model_forms.py:975 dcim/forms/model_forms.py:1316 #: dcim/forms/object_import.py:192 dcim/tables/devices.py:129 -#: dcim/tables/devices.py:205 dcim/tables/devices.py:947 +#: dcim/tables/devices.py:205 dcim/tables/devices.py:951 #: dcim/tables/devicetypes.py:81 dcim/tables/devicetypes.py:304 #: dcim/tables/modules.py:20 dcim/tables/modules.py:60 #: templates/dcim/devicetype.html:17 templates/dcim/inventoryitem.html:45 @@ -2740,7 +2736,7 @@ msgstr "Aygıt Türü" msgid "Module Type" msgstr "Modül Türü" -#: dcim/forms/bulk_edit.py:506 dcim/models/devices.py:472 +#: dcim/forms/bulk_edit.py:506 dcim/models/devices.py:474 msgid "VM role" msgstr "VM rolü" @@ -2772,13 +2768,15 @@ msgstr "Aygıt rolü" #: dcim/forms/bulk_edit.py:588 dcim/forms/bulk_import.py:443 #: dcim/forms/filtersets.py:723 dcim/forms/model_forms.py:389 -#: dcim/forms/model_forms.py:448 extras/filtersets.py:468 -#: templates/dcim/device.html:191 templates/dcim/platform.html:27 +#: dcim/forms/model_forms.py:448 dcim/tables/devices.py:215 +#: extras/filtersets.py:468 templates/dcim/device.html:191 +#: templates/dcim/platform.html:27 #: templates/virtualization/virtualmachine.html:30 #: virtualization/forms/bulk_edit.py:159 #: virtualization/forms/bulk_import.py:122 #: virtualization/forms/filtersets.py:164 #: virtualization/forms/model_forms.py:206 +#: virtualization/tables/virtualmachines.py:78 msgid "Platform" msgstr "Platform" @@ -2802,16 +2800,16 @@ msgstr "Platform" #: dcim/forms/model_forms.py:760 dcim/forms/model_forms.py:1011 #: dcim/forms/model_forms.py:1460 dcim/forms/object_create.py:256 #: dcim/tables/connections.py:22 dcim/tables/connections.py:41 -#: dcim/tables/connections.py:60 dcim/tables/devices.py:314 -#: dcim/tables/devices.py:379 dcim/tables/devices.py:423 -#: dcim/tables/devices.py:468 dcim/tables/devices.py:522 -#: dcim/tables/devices.py:614 dcim/tables/devices.py:715 -#: dcim/tables/devices.py:775 dcim/tables/devices.py:825 -#: dcim/tables/devices.py:885 dcim/tables/devices.py:937 -#: dcim/tables/devices.py:1063 dcim/tables/modules.py:52 +#: dcim/tables/connections.py:60 dcim/tables/devices.py:318 +#: dcim/tables/devices.py:383 dcim/tables/devices.py:427 +#: dcim/tables/devices.py:472 dcim/tables/devices.py:526 +#: dcim/tables/devices.py:618 dcim/tables/devices.py:719 +#: dcim/tables/devices.py:779 dcim/tables/devices.py:829 +#: dcim/tables/devices.py:889 dcim/tables/devices.py:941 +#: dcim/tables/devices.py:1067 dcim/tables/modules.py:52 #: extras/forms/filtersets.py:329 ipam/forms/bulk_import.py:303 #: ipam/forms/bulk_import.py:489 ipam/forms/filtersets.py:532 -#: ipam/forms/model_forms.py:685 ipam/tables/vlans.py:176 +#: ipam/forms/model_forms.py:689 ipam/tables/vlans.py:176 #: templates/dcim/consoleport.html:23 templates/dcim/consoleserverport.html:23 #: templates/dcim/device.html:14 templates/dcim/device.html:128 #: templates/dcim/device_edit.html:10 templates/dcim/devicebay.html:23 @@ -2833,7 +2831,7 @@ msgstr "Platform" #: virtualization/forms/bulk_import.py:99 #: virtualization/forms/filtersets.py:124 #: virtualization/forms/model_forms.py:188 -#: virtualization/tables/virtualmachines.py:61 vpn/choices.py:44 +#: virtualization/tables/virtualmachines.py:70 vpn/choices.py:44 #: vpn/forms/bulk_import.py:86 vpn/forms/bulk_import.py:283 #: vpn/forms/filtersets.py:271 vpn/forms/model_forms.py:89 #: vpn/forms/model_forms.py:124 vpn/forms/model_forms.py:237 @@ -2973,7 +2971,7 @@ msgid "Wireless role" msgstr "Kablosuz rolü" #: dcim/forms/bulk_edit.py:1178 dcim/forms/model_forms.py:595 -#: dcim/forms/model_forms.py:1026 dcim/tables/devices.py:337 +#: dcim/forms/model_forms.py:1026 dcim/tables/devices.py:341 #: templates/dcim/consoleport.html:27 templates/dcim/consoleserverport.html:27 #: templates/dcim/frontport.html:27 templates/dcim/interface.html:35 #: templates/dcim/module.html:51 templates/dcim/modulebay.html:57 @@ -2982,7 +2980,7 @@ msgstr "Kablosuz rolü" msgid "Module" msgstr "Modül" -#: dcim/forms/bulk_edit.py:1305 dcim/tables/devices.py:685 +#: dcim/forms/bulk_edit.py:1305 dcim/tables/devices.py:689 #: templates/dcim/interface.html:113 msgid "LAG" msgstr "GECİKME" @@ -2994,7 +2992,7 @@ msgstr "Sanal cihaz bağlamları" #: dcim/forms/bulk_edit.py:1316 dcim/forms/bulk_import.py:659 #: dcim/forms/bulk_import.py:685 dcim/forms/filtersets.py:1163 #: dcim/forms/filtersets.py:1185 dcim/forms/filtersets.py:1258 -#: dcim/tables/devices.py:626 +#: dcim/tables/devices.py:630 #: templates/circuits/inc/circuit_termination.html:94 #: templates/dcim/consoleport.html:43 templates/dcim/consoleserverport.html:43 msgid "Speed" @@ -3019,13 +3017,13 @@ msgid "VLAN group" msgstr "VLAN grubu" #: dcim/forms/bulk_edit.py:1361 dcim/forms/model_forms.py:1164 -#: dcim/tables/devices.py:599 virtualization/forms/bulk_edit.py:247 +#: dcim/tables/devices.py:603 virtualization/forms/bulk_edit.py:247 #: virtualization/forms/model_forms.py:329 msgid "Untagged VLAN" msgstr "Etiketsiz VLAN" #: dcim/forms/bulk_edit.py:1369 dcim/forms/model_forms.py:1173 -#: dcim/tables/devices.py:605 virtualization/forms/bulk_edit.py:255 +#: dcim/tables/devices.py:609 virtualization/forms/bulk_edit.py:255 #: virtualization/forms/model_forms.py:338 msgid "Tagged VLANs" msgstr "Etiketli VLAN'lar" @@ -3035,7 +3033,7 @@ msgid "Wireless LAN group" msgstr "Kablosuz LAN grubu" #: dcim/forms/bulk_edit.py:1384 dcim/forms/model_forms.py:1151 -#: dcim/tables/devices.py:635 netbox/navigation/menu.py:134 +#: dcim/tables/devices.py:639 netbox/navigation/menu.py:134 #: templates/dcim/interface.html:289 wireless/tables/wirelesslan.py:24 msgid "Wireless LANs" msgstr "Kablosuz LAN'lar" @@ -3206,9 +3204,9 @@ msgid "Virtual chassis" msgstr "Sanal şasi" #: dcim/forms/bulk_import.py:462 dcim/forms/model_forms.py:457 -#: dcim/tables/devices.py:231 extras/filtersets.py:501 +#: dcim/tables/devices.py:235 extras/filtersets.py:501 #: extras/forms/filtersets.py:330 ipam/forms/bulk_edit.py:478 -#: ipam/forms/model_forms.py:588 templates/dcim/device.html:239 +#: ipam/forms/model_forms.py:592 templates/dcim/device.html:239 #: templates/virtualization/cluster.html:11 #: templates/virtualization/virtualmachine.html:92 #: templates/virtualization/virtualmachine.html:102 @@ -3220,7 +3218,7 @@ msgstr "Sanal şasi" #: virtualization/forms/filtersets.py:196 #: virtualization/forms/model_forms.py:82 #: virtualization/forms/model_forms.py:179 -#: virtualization/tables/virtualmachines.py:57 +#: virtualization/tables/virtualmachines.py:66 msgid "Cluster" msgstr "Küme" @@ -3401,7 +3399,7 @@ msgstr "İlgili arka bağlantı noktası" msgid "Physical medium classification" msgstr "Fiziksel ortam sınıflandırması" -#: dcim/forms/bulk_import.py:973 dcim/tables/devices.py:846 +#: dcim/forms/bulk_import.py:973 dcim/tables/devices.py:850 msgid "Installed device" msgstr "Yüklü cihaz" @@ -3489,7 +3487,7 @@ msgid "{side_upper} side termination not found: {device} {name}" msgstr "{side_upper} yan sonlandırma bulunamadı: {device} {name}" #: dcim/forms/bulk_import.py:1244 dcim/forms/model_forms.py:696 -#: dcim/tables/devices.py:1033 templates/dcim/device.html:130 +#: dcim/tables/devices.py:1037 templates/dcim/device.html:130 #: templates/dcim/virtualchassis.html:28 templates/dcim/virtualchassis.html:60 msgid "Master" msgstr "Usta" @@ -3615,7 +3613,7 @@ msgstr "işgal" #: dcim/forms/filtersets.py:1155 dcim/forms/filtersets.py:1177 #: dcim/forms/filtersets.py:1199 dcim/forms/filtersets.py:1216 -#: dcim/forms/filtersets.py:1236 dcim/tables/devices.py:372 +#: dcim/forms/filtersets.py:1236 dcim/tables/devices.py:376 #: templates/dcim/consoleport.html:59 templates/dcim/consoleserverport.html:59 #: templates/dcim/frontport.html:74 templates/dcim/interface.html:146 #: templates/dcim/powerfeed.html:118 templates/dcim/poweroutlet.html:63 @@ -3629,7 +3627,7 @@ msgid "Virtual Device Context" msgstr "Sanal Aygıt Bağlamı" #: dcim/forms/filtersets.py:1248 extras/forms/bulk_edit.py:315 -#: extras/forms/bulk_import.py:239 extras/forms/filtersets.py:479 +#: extras/forms/bulk_import.py:245 extras/forms/filtersets.py:479 #: extras/forms/model_forms.py:557 extras/tables/tables.py:487 #: templates/extras/journalentry.html:33 msgid "Kind" @@ -3661,7 +3659,7 @@ msgid "Transmit power (dBm)" msgstr "İletim gücü (dBm)" #: dcim/forms/filtersets.py:1344 dcim/forms/filtersets.py:1366 -#: dcim/tables/devices.py:344 templates/dcim/cable.html:12 +#: dcim/tables/devices.py:348 templates/dcim/cable.html:12 #: templates/dcim/cable_edit.html:46 templates/dcim/cable_trace.html:43 #: templates/dcim/frontport.html:84 #: templates/dcim/inc/connection_endpoints.html:4 @@ -3669,7 +3667,7 @@ msgstr "İletim gücü (dBm)" msgid "Cable" msgstr "Kablo" -#: dcim/forms/filtersets.py:1434 dcim/tables/devices.py:956 +#: dcim/forms/filtersets.py:1434 dcim/tables/devices.py:960 msgid "Discovered" msgstr "Keşfedildi" @@ -3716,7 +3714,7 @@ msgstr "Şasi" msgid "Device Role" msgstr "Aygıt Rolü" -#: dcim/forms/model_forms.py:428 dcim/models/devices.py:632 +#: dcim/forms/model_forms.py:428 dcim/models/devices.py:634 msgid "The lowest-numbered unit occupied by the device" msgstr "Cihazın kullandığı en düşük numaralı birim" @@ -3767,9 +3765,7 @@ msgstr "LAG arayüzü" #: templates/wireless/wirelesslink.html:10 #: templates/wireless/wirelesslink.html:49 #: virtualization/forms/model_forms.py:351 vpn/forms/bulk_import.py:297 -#: vpn/forms/model_forms.py:94 vpn/forms/model_forms.py:129 -#: vpn/forms/model_forms.py:241 vpn/forms/model_forms.py:436 -#: vpn/forms/model_forms.py:445 vpn/tables/tunnels.py:91 +#: vpn/forms/model_forms.py:436 vpn/forms/model_forms.py:445 #: wireless/forms/model_forms.py:112 wireless/forms/model_forms.py:152 msgid "Interface" msgstr "Arayüz" @@ -3846,7 +3842,7 @@ msgstr "" "bekleniyor." #: dcim/forms/object_create.py:109 dcim/forms/object_create.py:270 -#: dcim/tables/devices.py:281 +#: dcim/tables/devices.py:285 msgid "Rear ports" msgstr "Arka bağlantı noktaları" @@ -3883,7 +3879,7 @@ msgstr "" "Oluşturulacak ön bağlantı noktalarının sayısı ({frontport_count}) seçilen " "arka port konumu sayısıyla eşleşmelidir ({rearport_count})." -#: dcim/forms/object_create.py:408 dcim/tables/devices.py:1039 +#: dcim/forms/object_create.py:408 dcim/tables/devices.py:1043 #: ipam/tables/fhrp.py:31 templates/dcim/virtualchassis.html:54 #: templates/dcim/virtualchassis_edit.html:48 templates/ipam/fhrpgroup.html:39 msgid "Members" @@ -4592,13 +4588,13 @@ msgstr "envanter kalemi rolü" msgid "inventory item roles" msgstr "envanter kalemi rolleri" -#: dcim/models/device_components.py:1230 dcim/models/devices.py:595 -#: dcim/models/devices.py:1173 dcim/models/racks.py:113 +#: dcim/models/device_components.py:1230 dcim/models/devices.py:597 +#: dcim/models/devices.py:1178 dcim/models/racks.py:113 msgid "serial number" msgstr "seri numarası" -#: dcim/models/device_components.py:1238 dcim/models/devices.py:603 -#: dcim/models/devices.py:1180 dcim/models/racks.py:120 +#: dcim/models/device_components.py:1238 dcim/models/devices.py:605 +#: dcim/models/devices.py:1185 dcim/models/racks.py:120 msgid "asset tag" msgstr "varlık etiketi" @@ -4646,7 +4642,7 @@ msgstr "üretici firma" msgid "manufacturers" msgstr "üreticiler" -#: dcim/models/devices.py:82 dcim/models/devices.py:381 +#: dcim/models/devices.py:82 dcim/models/devices.py:382 msgid "model" msgstr "model" @@ -4654,11 +4650,11 @@ msgstr "model" msgid "default platform" msgstr "varsayılan platform" -#: dcim/models/devices.py:98 dcim/models/devices.py:385 +#: dcim/models/devices.py:98 dcim/models/devices.py:386 msgid "part number" msgstr "parça numarası" -#: dcim/models/devices.py:101 dcim/models/devices.py:388 +#: dcim/models/devices.py:101 dcim/models/devices.py:389 msgid "Discrete part number (optional)" msgstr "Ayrık parça numarası (isteğe bağlı)" @@ -4694,7 +4690,7 @@ msgstr "" "Ana cihazlar, alt aygıtları cihaz yuvalarında barındırır. Bu cihaz türü " "ebeveyn veya çocuk değilse boş bırakın." -#: dcim/models/devices.py:128 dcim/models/devices.py:647 +#: dcim/models/devices.py:128 dcim/models/devices.py:649 msgid "airflow" msgstr "hava akımı" @@ -4706,11 +4702,11 @@ msgstr "cihaz tipi" msgid "device types" msgstr "cihaz türleri" -#: dcim/models/devices.py:289 +#: dcim/models/devices.py:290 msgid "U height must be in increments of 0.5 rack units." msgstr "U yüksekliği 0,5 raf ünitesi artışlarla olmalıdır." -#: dcim/models/devices.py:306 +#: dcim/models/devices.py:307 #, python-brace-format msgid "" "Device {device} in rack {rack} does not have sufficient space to accommodate" @@ -4719,7 +4715,7 @@ msgstr "" "Aygıt {device} rafta {rack} bir yüksekliği barındırmak için yeterli alana " "sahip değildir {height}U" -#: dcim/models/devices.py:321 +#: dcim/models/devices.py:322 #, python-brace-format msgid "" "Unable to set 0U height: Found {racked_instance_count} " @@ -4729,7 +4725,7 @@ msgstr "" "href=\"{url}\">{racked_instance_count} örnekler zaten raflara monte " "edilmiştir." -#: dcim/models/devices.py:330 +#: dcim/models/devices.py:331 msgid "" "Must delete all device bay templates associated with this device before " "declassifying it as a parent device." @@ -4737,164 +4733,164 @@ msgstr "" "Ana aygıt olarak sınıflandırmadan önce bu aygıtla ilişkili tüm aygıt yuvası " "şablonlarını silmeniz gerekir." -#: dcim/models/devices.py:336 +#: dcim/models/devices.py:337 msgid "Child device types must be 0U." msgstr "Çocuk cihaz türleri 0U olmalıdır." -#: dcim/models/devices.py:404 +#: dcim/models/devices.py:405 msgid "module type" msgstr "modül tipi" -#: dcim/models/devices.py:405 +#: dcim/models/devices.py:406 msgid "module types" msgstr "modül türleri" -#: dcim/models/devices.py:473 +#: dcim/models/devices.py:475 msgid "Virtual machines may be assigned to this role" msgstr "Sanal makineler bu role atanabilir" -#: dcim/models/devices.py:485 +#: dcim/models/devices.py:487 msgid "device role" msgstr "cihaz rolü" -#: dcim/models/devices.py:486 +#: dcim/models/devices.py:488 msgid "device roles" msgstr "cihaz rolleri" -#: dcim/models/devices.py:503 +#: dcim/models/devices.py:505 msgid "Optionally limit this platform to devices of a certain manufacturer" msgstr "" "İsteğe bağlı olarak bu platformu belirli bir üreticinin cihazlarıyla " "sınırlayın" -#: dcim/models/devices.py:515 +#: dcim/models/devices.py:517 msgid "platform" msgstr "platform" -#: dcim/models/devices.py:516 +#: dcim/models/devices.py:518 msgid "platforms" msgstr "platformlar" -#: dcim/models/devices.py:564 +#: dcim/models/devices.py:566 msgid "The function this device serves" msgstr "Bu cihazın hizmet ettiği işlev" -#: dcim/models/devices.py:596 +#: dcim/models/devices.py:598 msgid "Chassis serial number, assigned by the manufacturer" msgstr "Üretici tarafından atanan şasi seri numarası" -#: dcim/models/devices.py:604 dcim/models/devices.py:1181 +#: dcim/models/devices.py:606 dcim/models/devices.py:1186 msgid "A unique tag used to identify this device" msgstr "Bu cihazı tanımlamak için kullanılan benzersiz bir etiket" -#: dcim/models/devices.py:631 +#: dcim/models/devices.py:633 msgid "position (U)" msgstr "pozisyon (U)" -#: dcim/models/devices.py:638 +#: dcim/models/devices.py:640 msgid "rack face" msgstr "raf yüzü" -#: dcim/models/devices.py:658 dcim/models/devices.py:1390 +#: dcim/models/devices.py:660 dcim/models/devices.py:1395 #: virtualization/models/virtualmachines.py:98 msgid "primary IPv4" msgstr "birincil IPv4" -#: dcim/models/devices.py:666 dcim/models/devices.py:1398 +#: dcim/models/devices.py:668 dcim/models/devices.py:1403 #: virtualization/models/virtualmachines.py:106 msgid "primary IPv6" msgstr "birincil IPv6" -#: dcim/models/devices.py:674 +#: dcim/models/devices.py:676 msgid "out-of-band IP" msgstr "bant dışı IP" -#: dcim/models/devices.py:691 +#: dcim/models/devices.py:693 msgid "VC position" msgstr "VC pozisyonu" -#: dcim/models/devices.py:695 +#: dcim/models/devices.py:697 msgid "Virtual chassis position" msgstr "Sanal şasi konumu" -#: dcim/models/devices.py:698 +#: dcim/models/devices.py:700 msgid "VC priority" msgstr "VC önceliği" -#: dcim/models/devices.py:702 +#: dcim/models/devices.py:704 msgid "Virtual chassis master election priority" msgstr "Sanal şasi ana seçim önceliği" -#: dcim/models/devices.py:705 dcim/models/sites.py:207 +#: dcim/models/devices.py:707 dcim/models/sites.py:207 msgid "latitude" msgstr "enlem" -#: dcim/models/devices.py:710 dcim/models/devices.py:718 +#: dcim/models/devices.py:712 dcim/models/devices.py:720 #: dcim/models/sites.py:212 dcim/models/sites.py:220 msgid "GPS coordinate in decimal format (xx.yyyyyy)" msgstr "Ondalık formatta GPS koordinatı (xx.yyyyyy)" -#: dcim/models/devices.py:713 dcim/models/sites.py:215 +#: dcim/models/devices.py:715 dcim/models/sites.py:215 msgid "longitude" msgstr "boylam" -#: dcim/models/devices.py:786 +#: dcim/models/devices.py:788 msgid "Device name must be unique per site." msgstr "Aygıt adı site başına benzersiz olmalıdır." -#: dcim/models/devices.py:797 ipam/models/services.py:75 +#: dcim/models/devices.py:799 ipam/models/services.py:75 msgid "device" msgstr "cihaz" -#: dcim/models/devices.py:798 +#: dcim/models/devices.py:800 msgid "devices" msgstr "cihazlar" -#: dcim/models/devices.py:838 +#: dcim/models/devices.py:840 #, python-brace-format msgid "Rack {rack} does not belong to site {site}." msgstr "Raf {rack} siteye ait değil {site}." -#: dcim/models/devices.py:843 +#: dcim/models/devices.py:845 #, python-brace-format msgid "Location {location} does not belong to site {site}." msgstr "{location} Konum {site} adlı siteye ait değil." -#: dcim/models/devices.py:849 +#: dcim/models/devices.py:851 #, python-brace-format msgid "Rack {rack} does not belong to location {location}." msgstr "{rack} rafı {location} adlı konuma ait değil." -#: dcim/models/devices.py:856 +#: dcim/models/devices.py:858 msgid "Cannot select a rack face without assigning a rack." msgstr "Bir raf atamadan raf yüzü seçilemez." -#: dcim/models/devices.py:860 +#: dcim/models/devices.py:862 msgid "Cannot select a rack position without assigning a rack." msgstr "Bir raf atamadan raf konumu seçilemez." -#: dcim/models/devices.py:866 +#: dcim/models/devices.py:868 msgid "Position must be in increments of 0.5 rack units." msgstr "Konum 0,5 raf ünitesinin artışlarında olmalıdır." -#: dcim/models/devices.py:870 +#: dcim/models/devices.py:872 msgid "Must specify rack face when defining rack position." msgstr "Raf konumunu tanımlarken raf yüzü belirtilmelidir." -#: dcim/models/devices.py:878 +#: dcim/models/devices.py:880 #, python-brace-format msgid "" "A 0U device type ({device_type}) cannot be assigned to a rack position." msgstr "Bir 0U cihaz tipi ({device_type}) bir raf konumuna atanamaz." -#: dcim/models/devices.py:889 +#: dcim/models/devices.py:891 msgid "" "Child device types cannot be assigned to a rack face. This is an attribute " "of the parent device." msgstr "" "Alt aygıt türleri bir raf yüzüne atanamaz. Bu, ana cihazın bir özelliğidir." -#: dcim/models/devices.py:896 +#: dcim/models/devices.py:898 msgid "" "Child device types cannot be assigned to a rack position. This is an " "attribute of the parent device." @@ -4902,7 +4898,7 @@ msgstr "" "Alt aygıt türleri bir raf konumuna atanamaz. Bu, ana aygıtın bir " "özelliğidir." -#: dcim/models/devices.py:910 +#: dcim/models/devices.py:912 #, python-brace-format msgid "" "U{position} is already occupied or does not have sufficient space to " @@ -4911,22 +4907,22 @@ msgstr "" "U{position} zaten işgal edilmiş veya bu cihaz tipini barındırmak için " "yeterli alana sahip değil: {device_type} ({u_height}U)" -#: dcim/models/devices.py:925 +#: dcim/models/devices.py:927 #, python-brace-format msgid "{ip} is not an IPv4 address." msgstr "{ip} Bu bir IPv4 adresi değildir." -#: dcim/models/devices.py:934 dcim/models/devices.py:949 +#: dcim/models/devices.py:936 dcim/models/devices.py:951 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this device." msgstr "Belirtilen IP adresi ({ip}) bu cihaza atanmamıştır." -#: dcim/models/devices.py:940 +#: dcim/models/devices.py:942 #, python-brace-format msgid "{ip} is not an IPv6 address." msgstr "{ip} Bu bir IPv6 adresi değildir." -#: dcim/models/devices.py:967 +#: dcim/models/devices.py:969 #, python-brace-format msgid "" "The assigned platform is limited to {platform_manufacturer} device types, " @@ -4935,45 +4931,45 @@ msgstr "" "Atanan platform aşağıdakilerle sınırlıdır {platform_manufacturer} cihaz " "türleri, ancak bu cihazın türü şunlara aittir {devicetype_manufacturer}." -#: dcim/models/devices.py:978 +#: dcim/models/devices.py:980 #, python-brace-format msgid "The assigned cluster belongs to a different site ({site})" msgstr "Atanan küme farklı bir siteye aittir ({site})" -#: dcim/models/devices.py:986 +#: dcim/models/devices.py:988 msgid "A device assigned to a virtual chassis must have its position defined." msgstr "Sanal bir kasaya atanan bir aygıtın konumu tanımlanmış olmalıdır." -#: dcim/models/devices.py:1188 +#: dcim/models/devices.py:1193 msgid "module" msgstr "modül" -#: dcim/models/devices.py:1189 +#: dcim/models/devices.py:1194 msgid "modules" msgstr "modülleri" -#: dcim/models/devices.py:1205 +#: dcim/models/devices.py:1210 #, python-brace-format msgid "" "Module must be installed within a module bay belonging to the assigned " "device ({device})." msgstr "Modül, atanan cihaza ait bir modül bölmesine kurulmalıdır ({device})." -#: dcim/models/devices.py:1309 +#: dcim/models/devices.py:1314 msgid "domain" msgstr "domain" -#: dcim/models/devices.py:1322 dcim/models/devices.py:1323 +#: dcim/models/devices.py:1327 dcim/models/devices.py:1328 msgid "virtual chassis" msgstr "sanal kasa" -#: dcim/models/devices.py:1338 +#: dcim/models/devices.py:1343 #, python-brace-format msgid "" "The selected master ({master}) is not assigned to this virtual chassis." msgstr "Seçilen usta ({master}) bu sanal kasaya atanmamıştır." -#: dcim/models/devices.py:1354 +#: dcim/models/devices.py:1359 #, python-brace-format msgid "" "Unable to delete virtual chassis {self}. There are member interfaces which " @@ -4982,33 +4978,33 @@ msgstr "" "Sanal kasa silinemiyor {self}. Çapraz şasi LAG arabirimleri oluşturan üye " "arayüzleri vardır." -#: dcim/models/devices.py:1379 vpn/models/l2vpn.py:37 +#: dcim/models/devices.py:1384 vpn/models/l2vpn.py:37 msgid "identifier" msgstr "belirlemek" -#: dcim/models/devices.py:1380 +#: dcim/models/devices.py:1385 msgid "Numeric identifier unique to the parent device" msgstr "Ana aygıta benzersiz sayısal tanımlayıcı" -#: dcim/models/devices.py:1408 extras/models/models.py:129 +#: dcim/models/devices.py:1413 extras/models/models.py:129 #: extras/models/models.py:724 netbox/models/__init__.py:114 msgid "comments" msgstr "yorumlar" -#: dcim/models/devices.py:1424 +#: dcim/models/devices.py:1429 msgid "virtual device context" msgstr "sanal cihaz bağlamı" -#: dcim/models/devices.py:1425 +#: dcim/models/devices.py:1430 msgid "virtual device contexts" msgstr "sanal cihaz bağlamları" -#: dcim/models/devices.py:1457 +#: dcim/models/devices.py:1462 #, python-brace-format msgid "{ip} is not an IPv{family} address." msgstr "{ip} IPV değil{family} adres." -#: dcim/models/devices.py:1463 +#: dcim/models/devices.py:1468 msgid "Primary IP address must belong to an interface on the assigned device." msgstr "Birincil IP adresi, atanan cihazdaki bir arayüze ait olmalıdır." @@ -5390,7 +5386,7 @@ msgstr "Konsol Bağlantı Noktası" msgid "Reachable" msgstr "Ulaşılabilir" -#: dcim/tables/connections.py:46 dcim/tables/devices.py:529 +#: dcim/tables/connections.py:46 dcim/tables/devices.py:533 #: templates/dcim/inventoryitem_edit.html:64 #: templates/dcim/poweroutlet.html:47 templates/dcim/powerport.html:18 msgid "Power Port" @@ -5409,7 +5405,7 @@ msgstr "Aygıtlar" msgid "VMs" msgstr "Sanal Makineler" -#: dcim/tables/devices.py:133 dcim/tables/devices.py:245 +#: dcim/tables/devices.py:133 dcim/tables/devices.py:249 #: extras/forms/model_forms.py:515 templates/dcim/device.html:114 #: templates/dcim/device/render_config.html:11 #: templates/dcim/device/render_config.html:15 @@ -5418,62 +5414,62 @@ msgstr "Sanal Makineler" #: templates/virtualization/virtualmachine.html:47 #: templates/virtualization/virtualmachine/render_config.html:11 #: templates/virtualization/virtualmachine/render_config.html:15 -#: virtualization/tables/virtualmachines.py:93 +#: virtualization/tables/virtualmachines.py:106 msgid "Config Template" msgstr "Yapılandırma Şablonu" -#: dcim/tables/devices.py:216 dcim/tables/devices.py:1074 +#: dcim/tables/devices.py:220 dcim/tables/devices.py:1078 #: ipam/forms/bulk_import.py:511 ipam/forms/model_forms.py:296 #: 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:81 +#: virtualization/tables/virtualmachines.py:94 msgid "IP Address" msgstr "IP Adresi" -#: dcim/tables/devices.py:220 dcim/tables/devices.py:1078 -#: virtualization/tables/virtualmachines.py:72 +#: dcim/tables/devices.py:224 dcim/tables/devices.py:1082 +#: virtualization/tables/virtualmachines.py:85 msgid "IPv4 Address" msgstr "IPv4 Adresi" -#: dcim/tables/devices.py:224 dcim/tables/devices.py:1082 -#: virtualization/tables/virtualmachines.py:76 +#: dcim/tables/devices.py:228 dcim/tables/devices.py:1086 +#: virtualization/tables/virtualmachines.py:89 msgid "IPv6 Address" msgstr "IPv6 Adresi" -#: dcim/tables/devices.py:239 +#: dcim/tables/devices.py:243 msgid "VC Position" msgstr "VC Pozisyonu" -#: dcim/tables/devices.py:242 +#: dcim/tables/devices.py:246 msgid "VC Priority" msgstr "VC Önceliği" -#: dcim/tables/devices.py:249 templates/dcim/device_edit.html:38 +#: dcim/tables/devices.py:253 templates/dcim/device_edit.html:38 #: templates/dcim/devicebay_populate.html:16 msgid "Parent Device" msgstr "Ebeveyn Aygıtı" -#: dcim/tables/devices.py:254 +#: dcim/tables/devices.py:258 msgid "Position (Device Bay)" msgstr "Konum (Aygıt Yuvası)" -#: dcim/tables/devices.py:263 +#: dcim/tables/devices.py:267 msgid "Console ports" msgstr "Konsol bağlantı noktaları" -#: dcim/tables/devices.py:266 +#: dcim/tables/devices.py:270 msgid "Console server ports" msgstr "Konsol sunucusu bağlantı noktaları" -#: dcim/tables/devices.py:269 +#: dcim/tables/devices.py:273 msgid "Power ports" msgstr "Güç bağlantı noktaları" -#: dcim/tables/devices.py:272 +#: dcim/tables/devices.py:276 msgid "Power outlets" msgstr "Elektrik prizleri" -#: dcim/tables/devices.py:275 dcim/tables/devices.py:1087 +#: dcim/tables/devices.py:279 dcim/tables/devices.py:1091 #: dcim/tables/devicetypes.py:125 dcim/views.py:1005 dcim/views.py:1244 #: dcim/views.py:1930 netbox/navigation/menu.py:82 #: netbox/navigation/menu.py:238 templates/dcim/device/base.html:37 @@ -5483,53 +5479,53 @@ msgstr "Elektrik prizleri" #: templates/dcim/virtualdevicecontext.html:85 #: templates/virtualization/virtualmachine/base.html:27 #: templates/virtualization/virtualmachine_list.html:14 -#: virtualization/tables/virtualmachines.py:87 virtualization/views.py:368 +#: virtualization/tables/virtualmachines.py:100 virtualization/views.py:368 #: wireless/tables/wirelesslan.py:55 msgid "Interfaces" msgstr "Arayüzler" -#: dcim/tables/devices.py:278 +#: dcim/tables/devices.py:282 msgid "Front ports" msgstr "Ön bağlantı noktaları" -#: dcim/tables/devices.py:284 +#: dcim/tables/devices.py:288 msgid "Device bays" msgstr "Aygıt yuvaları" -#: dcim/tables/devices.py:287 +#: dcim/tables/devices.py:291 msgid "Module bays" msgstr "Modül bölmeleri" -#: dcim/tables/devices.py:290 +#: dcim/tables/devices.py:294 msgid "Inventory items" msgstr "Envanter kalemleri" -#: dcim/tables/devices.py:329 dcim/tables/modules.py:56 +#: dcim/tables/devices.py:333 dcim/tables/modules.py:56 #: templates/dcim/modulebay.html:17 msgid "Module Bay" msgstr "Modül Yuvası" -#: dcim/tables/devices.py:350 +#: dcim/tables/devices.py:354 msgid "Cable Color" msgstr "Kablo Rengi" -#: dcim/tables/devices.py:356 +#: dcim/tables/devices.py:360 msgid "Link Peers" msgstr "Meslektaşları Bağla" -#: dcim/tables/devices.py:359 +#: dcim/tables/devices.py:363 msgid "Mark Connected" msgstr "Bağlı İşaretle" -#: dcim/tables/devices.py:475 +#: dcim/tables/devices.py:479 msgid "Maximum draw (W)" msgstr "Maksimum çekim (W)" -#: dcim/tables/devices.py:478 +#: dcim/tables/devices.py:482 msgid "Allocated draw (W)" msgstr "Tahsis edilen çekiliş (W)" -#: dcim/tables/devices.py:578 ipam/forms/model_forms.py:707 +#: dcim/tables/devices.py:582 ipam/forms/model_forms.py:711 #: ipam/tables/fhrp.py:28 ipam/views.py:597 ipam/views.py:691 #: netbox/navigation/menu.py:146 netbox/navigation/menu.py:148 #: templates/dcim/interface.html:351 templates/ipam/ipaddress_bulk_add.html:15 @@ -5538,12 +5534,12 @@ msgstr "Tahsis edilen çekiliş (W)" msgid "IP Addresses" msgstr "IP Adresleri" -#: dcim/tables/devices.py:584 netbox/navigation/menu.py:190 +#: dcim/tables/devices.py:588 netbox/navigation/menu.py:190 #: templates/ipam/inc/panels/fhrp_groups.html:5 msgid "FHRP Groups" msgstr "FHRP Grupları" -#: dcim/tables/devices.py:596 templates/dcim/interface.html:90 +#: dcim/tables/devices.py:600 templates/dcim/interface.html:90 #: templates/virtualization/vminterface.html:70 templates/vpn/tunnel.html:18 #: templates/vpn/tunneltermination.html:14 vpn/forms/bulk_edit.py:75 #: vpn/forms/bulk_import.py:76 vpn/forms/filtersets.py:41 @@ -5552,20 +5548,20 @@ msgstr "FHRP Grupları" msgid "Tunnel" msgstr "Tünel" -#: dcim/tables/devices.py:621 dcim/tables/devicetypes.py:224 +#: dcim/tables/devices.py:625 dcim/tables/devicetypes.py:224 #: templates/dcim/interface.html:66 msgid "Management Only" msgstr "Yalnızca Yönetim" -#: dcim/tables/devices.py:629 +#: dcim/tables/devices.py:633 msgid "Wireless link" msgstr "Kablosuz bağlantı" -#: dcim/tables/devices.py:639 +#: dcim/tables/devices.py:643 msgid "VDCs" msgstr "VDC'ler" -#: dcim/tables/devices.py:647 dcim/tables/devicetypes.py:48 +#: dcim/tables/devices.py:651 dcim/tables/devicetypes.py:48 #: dcim/tables/devicetypes.py:140 dcim/views.py:1080 dcim/views.py:2023 #: netbox/navigation/menu.py:91 templates/dcim/device/base.html:52 #: templates/dcim/device_list.html:71 templates/dcim/devicetype/base.html:49 @@ -5574,7 +5570,7 @@ msgstr "VDC'ler" msgid "Inventory Items" msgstr "Envanter Öğeleri" -#: dcim/tables/devices.py:728 +#: dcim/tables/devices.py:732 #: 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 @@ -5583,28 +5579,28 @@ msgstr "Envanter Öğeleri" msgid "Rear Port" msgstr "Arka Bağlantı Noktası" -#: dcim/tables/devices.py:893 templates/dcim/modulebay.html:51 +#: dcim/tables/devices.py:897 templates/dcim/modulebay.html:51 msgid "Installed Module" msgstr "Yüklü Modül" -#: dcim/tables/devices.py:896 +#: dcim/tables/devices.py:900 msgid "Module Serial" msgstr "Modül Seri" -#: dcim/tables/devices.py:900 +#: dcim/tables/devices.py:904 msgid "Module Asset Tag" msgstr "Modül Varlık Etiketi" -#: dcim/tables/devices.py:909 +#: dcim/tables/devices.py:913 msgid "Module Status" msgstr "Modül Durumu" -#: dcim/tables/devices.py:951 dcim/tables/devicetypes.py:308 +#: dcim/tables/devices.py:955 dcim/tables/devicetypes.py:308 #: templates/dcim/inventoryitem.html:41 msgid "Component" msgstr "Bileşen" -#: dcim/tables/devices.py:1006 +#: dcim/tables/devices.py:1010 msgid "Items" msgstr "Öğeler" @@ -6167,7 +6163,7 @@ msgid "Cluster type (slug)" msgstr "Küme tipi (kısa ad)" #: extras/filtersets.py:490 ipam/forms/bulk_edit.py:475 -#: ipam/forms/model_forms.py:585 virtualization/forms/filtersets.py:108 +#: ipam/forms/model_forms.py:589 virtualization/forms/filtersets.py:108 msgid "Cluster group" msgstr "Küme grubu" @@ -6298,8 +6294,8 @@ msgid "Is active" msgstr "Aktif" #: extras/forms/bulk_import.py:34 extras/forms/bulk_import.py:115 -#: extras/forms/bulk_import.py:130 extras/forms/bulk_import.py:153 -#: extras/forms/bulk_import.py:177 extras/forms/filtersets.py:114 +#: extras/forms/bulk_import.py:136 extras/forms/bulk_import.py:159 +#: extras/forms/bulk_import.py:183 extras/forms/filtersets.py:114 #: extras/forms/filtersets.py:160 extras/forms/filtersets.py:201 #: extras/forms/model_forms.py:43 extras/forms/model_forms.py:127 #: extras/forms/model_forms.py:156 extras/forms/model_forms.py:197 @@ -6308,8 +6304,8 @@ msgid "Content types" msgstr "İçerik türleri" #: extras/forms/bulk_import.py:36 extras/forms/bulk_import.py:117 -#: extras/forms/bulk_import.py:132 extras/forms/bulk_import.py:155 -#: extras/forms/bulk_import.py:179 tenancy/forms/bulk_import.py:96 +#: extras/forms/bulk_import.py:138 extras/forms/bulk_import.py:161 +#: extras/forms/bulk_import.py:185 tenancy/forms/bulk_import.py:96 msgid "One or more assigned object types" msgstr "Bir veya daha fazla atanmış nesne türü" @@ -6356,29 +6352,39 @@ msgstr "" "seçeneklerinin alıntılanmış dizesi: “Seçim1:First Choice, Choice2:Second " "Choice”" -#: extras/forms/bulk_import.py:182 +#: extras/forms/bulk_import.py:120 extras/models/models.py:353 +msgid "button class" +msgstr "düğme sınıfı" + +#: extras/forms/bulk_import.py:123 extras/models/models.py:357 +msgid "" +"The class of the first link in a group will be used for the dropdown button" +msgstr "" +"Bir gruptaki ilk bağlantının sınıfı açılır düğme için kullanılacaktır." + +#: extras/forms/bulk_import.py:188 msgid "Action object" msgstr "Eylem nesnesi" -#: extras/forms/bulk_import.py:184 +#: extras/forms/bulk_import.py:190 msgid "Webhook name or script as dotted path module.Class" msgstr "Noktalı yol olarak Webhook adı veya komut dosyası module.Class" -#: extras/forms/bulk_import.py:205 +#: extras/forms/bulk_import.py:211 #, python-brace-format msgid "Webhook {name} not found" msgstr "Web kancası {name} bulunamadı" -#: extras/forms/bulk_import.py:214 +#: extras/forms/bulk_import.py:220 #, python-brace-format msgid "Script {name} not found" msgstr "Senaryo {name} bulunamadı" -#: extras/forms/bulk_import.py:236 +#: extras/forms/bulk_import.py:242 msgid "Assigned object type" msgstr "Atanan nesne türü" -#: extras/forms/bulk_import.py:241 +#: extras/forms/bulk_import.py:247 msgid "The classification of entry" msgstr "Girişin sınıflandırılması" @@ -7325,16 +7331,6 @@ msgstr "Bağlantı URL'si için Jinja2 şablon kodu" msgid "Links with the same group will appear as a dropdown menu" msgstr "Aynı gruba sahip bağlantılar açılır menü olarak görünecektir" -#: extras/models/models.py:353 -msgid "button class" -msgstr "düğme sınıfı" - -#: extras/models/models.py:357 -msgid "" -"The class of the first link in a group will be used for the dropdown button" -msgstr "" -"Bir gruptaki ilk bağlantının sınıfı açılır düğme için kullanılacaktır." - #: extras/models/models.py:360 msgid "new window" msgstr "yeni pencere" @@ -7522,7 +7518,7 @@ msgid "staged changes" msgstr "aşamalı değişiklikler" #: extras/models/tags.py:40 -msgid "The object type(s) to which this this tag can be applied." +msgid "The object type(s) to which this tag can be applied." msgstr "Bu etiketin uygulanabileceği nesne türü (ler) dir." #: extras/models/tags.py:49 @@ -7821,7 +7817,7 @@ msgid "VLAN number (1-4094)" msgstr "VLAN numarası (1-4094)" #: ipam/filtersets.py:437 ipam/filtersets.py:441 ipam/filtersets.py:533 -#: ipam/forms/model_forms.py:444 templates/tenancy/contact.html:54 +#: ipam/forms/model_forms.py:430 templates/tenancy/contact.html:54 #: tenancy/forms/bulk_edit.py:112 msgid "Address" msgstr "Adres" @@ -7990,7 +7986,7 @@ msgid "Authentication key" msgstr "Kimlik doğrulama anahtarı" #: ipam/forms/bulk_edit.py:404 ipam/forms/filtersets.py:369 -#: ipam/forms/model_forms.py:455 netbox/navigation/menu.py:376 +#: ipam/forms/model_forms.py:441 netbox/navigation/menu.py:376 #: templates/ipam/fhrpgroup.html:51 #: templates/wireless/inc/authentication_attrs.html:5 #: wireless/forms/bulk_edit.py:90 wireless/forms/bulk_edit.py:137 @@ -8007,11 +8003,11 @@ msgstr "Minimum çocuk VLAN VID" msgid "Maximum child VLAN VID" msgstr "Maksimum çocuk VLAN VID" -#: ipam/forms/bulk_edit.py:428 ipam/forms/model_forms.py:527 +#: ipam/forms/bulk_edit.py:428 ipam/forms/model_forms.py:531 msgid "Scope type" msgstr "Kapsam türü" -#: ipam/forms/bulk_edit.py:489 ipam/forms/model_forms.py:600 +#: ipam/forms/bulk_edit.py:489 ipam/forms/model_forms.py:604 #: ipam/tables/vlans.py:71 templates/ipam/vlangroup.html:39 msgid "Scope" msgstr "Kapsam" @@ -8020,8 +8016,8 @@ msgstr "Kapsam" msgid "Site & Group" msgstr "Site ve Grup" -#: ipam/forms/bulk_edit.py:574 ipam/forms/model_forms.py:663 -#: ipam/forms/model_forms.py:697 ipam/tables/services.py:19 +#: ipam/forms/bulk_edit.py:574 ipam/forms/model_forms.py:667 +#: ipam/forms/model_forms.py:701 ipam/tables/services.py:19 #: ipam/tables/services.py:49 templates/ipam/service.html:39 #: templates/ipam/servicetemplate.html:24 msgid "Ports" @@ -8061,7 +8057,7 @@ msgid "Parent device of assigned interface (if any)" msgstr "Atanan arayüzün ana cihazı (varsa)" #: ipam/forms/bulk_import.py:310 ipam/forms/bulk_import.py:496 -#: ipam/forms/model_forms.py:691 virtualization/filtersets.py:284 +#: ipam/forms/model_forms.py:695 virtualization/filtersets.py:284 #: virtualization/filtersets.py:323 virtualization/forms/bulk_edit.py:199 #: virtualization/forms/bulk_edit.py:325 #: virtualization/forms/bulk_import.py:146 @@ -8237,8 +8233,8 @@ msgstr "Liman" #: virtualization/forms/filtersets.py:189 #: virtualization/forms/filtersets.py:234 #: virtualization/forms/model_forms.py:223 -#: virtualization/tables/virtualmachines.py:115 -#: virtualization/tables/virtualmachines.py:168 vpn/choices.py:45 +#: virtualization/tables/virtualmachines.py:128 +#: virtualization/tables/virtualmachines.py:181 vpn/choices.py:45 #: vpn/forms/filtersets.py:289 vpn/forms/model_forms.py:161 #: vpn/forms/model_forms.py:172 vpn/forms/model_forms.py:274 msgid "Virtual Machine" @@ -8261,7 +8257,7 @@ msgstr "Site/VLAN Ataması" msgid "IP Range" msgstr "IP Aralığı" -#: ipam/forms/model_forms.py:285 ipam/forms/model_forms.py:454 +#: ipam/forms/model_forms.py:285 ipam/forms/model_forms.py:440 #: templates/ipam/fhrpgroup.html:19 templates/ipam/ipaddress_edit.html:52 msgid "FHRP Group" msgstr "FHRP Grubu" @@ -8274,7 +8270,7 @@ msgstr "Bunu cihaz/VM için birincil IP yapın" msgid "An IP address can only be assigned to a single object." msgstr "IP adresi yalnızca tek bir nesneye atanabilir." -#: ipam/forms/model_forms.py:357 ipam/models/ip.py:877 +#: ipam/forms/model_forms.py:357 ipam/models/ip.py:896 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" @@ -8287,32 +8283,25 @@ msgid "" msgstr "" "Yalnızca bir arayüze atanan IP adresleri birincil IP olarak belirlenebilir." -#: ipam/forms/model_forms.py:373 -#, python-brace-format -msgid "{ip} is a network ID, which may not be assigned to an interface." -msgstr "{ip} bir arayüze atanamayacak bir ağ kimliğidir." - -#: ipam/forms/model_forms.py:379 -#, python-brace-format -msgid "" -"{ip} is a broadcast address, which may not be assigned to an interface." -msgstr "{ip} bir arayüze atanamayacak bir yayın adresidir." - -#: ipam/forms/model_forms.py:456 +#: ipam/forms/model_forms.py:442 msgid "Virtual IP Address" msgstr "Sanal IP Adresi" -#: ipam/forms/model_forms.py:598 ipam/forms/model_forms.py:637 +#: ipam/forms/model_forms.py:523 +msgid "Assignment already exists" +msgstr "Atama zaten var" + +#: ipam/forms/model_forms.py:602 ipam/forms/model_forms.py:641 #: ipam/tables/ip.py:250 templates/ipam/vlan_edit.html:37 #: templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "VLAN Grubu" -#: ipam/forms/model_forms.py:599 +#: ipam/forms/model_forms.py:603 msgid "Child VLANs" msgstr "Çocuk VLAN'ları" -#: ipam/forms/model_forms.py:668 ipam/forms/model_forms.py:702 +#: ipam/forms/model_forms.py:672 ipam/forms/model_forms.py:706 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." @@ -8320,15 +8309,15 @@ msgstr "" "Bir veya daha fazla bağlantı noktası numarasının virgülle ayrılmış listesi. " "Bir aralık bir tire kullanılarak belirtilebilir." -#: ipam/forms/model_forms.py:673 templates/ipam/servicetemplate.html:12 +#: ipam/forms/model_forms.py:677 templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "Hizmet Şablonu" -#: ipam/forms/model_forms.py:724 +#: ipam/forms/model_forms.py:728 msgid "Service template" msgstr "Hizmet şablonu" -#: ipam/forms/model_forms.py:754 +#: ipam/forms/model_forms.py:758 msgid "" "Must specify name, protocol, and port(s) if not using a service template." msgstr "" @@ -8494,12 +8483,12 @@ msgstr "önekleri" msgid "Cannot create prefix with /0 mask." msgstr "/0 maskesi ile önek oluşturulamıyor." -#: ipam/models/ip.py:323 ipam/models/ip.py:854 +#: ipam/models/ip.py:323 ipam/models/ip.py:873 #, python-brace-format msgid "VRF {vrf}" msgstr "VRF {vrf}" -#: ipam/models/ip.py:323 ipam/models/ip.py:854 +#: ipam/models/ip.py:323 ipam/models/ip.py:873 msgid "global table" msgstr "küresel tablo" @@ -8594,12 +8583,23 @@ msgstr "IP adresleri" msgid "Cannot create IP address with /0 mask." msgstr "/0 maskesi ile IP adresi oluşturulamıyor." -#: ipam/models/ip.py:856 +#: ipam/models/ip.py:850 +#, python-brace-format +msgid "{ip} is a network ID, which may not be assigned to an interface." +msgstr "{ip} bir arayüze atanamayacak bir ağ kimliğidir." + +#: ipam/models/ip.py:861 +#, python-brace-format +msgid "" +"{ip} is a broadcast address, which may not be assigned to an interface." +msgstr "{ip} bir arayüze atanamayacak bir yayın adresidir." + +#: ipam/models/ip.py:875 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "Yinelenen IP adresi şurada bulundu {table}: {ipaddress}" -#: ipam/models/ip.py:883 +#: ipam/models/ip.py:902 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "Yalnızca IPv6 adreslerine SLAAC durumu atanabilir" @@ -9375,7 +9375,7 @@ msgstr "Sanal Makineler" #: templates/virtualization/virtualmachine.html:177 #: templates/virtualization/virtualmachine/base.html:32 #: templates/virtualization/virtualmachine_list.html:21 -#: virtualization/tables/virtualmachines.py:90 virtualization/views.py:389 +#: virtualization/tables/virtualmachines.py:103 virtualization/views.py:389 msgid "Virtual Disks" msgstr "Sanal Diskler" @@ -10299,8 +10299,8 @@ msgstr "Çizelgeleme" #: templates/core/job.html:66 #, python-format -msgid "every %(interval)s seconds" -msgstr "her bir %(interval)s saniyeler" +msgid "every %(interval)s minutes" +msgstr "her bir %(interval)s dakikalar" #: templates/dcim/bulk_disconnect.html:9 #, python-format @@ -12852,66 +12852,66 @@ msgstr "Bu nesne türü için kısıtlamalar desteklenmez." msgid "Invalid filter for {model}: {error}" msgstr "Geçersiz filtre {model}: {error}" -#: users/models.py:54 +#: users/models.py:55 msgid "user" msgstr "kullanıcı" -#: users/models.py:55 +#: users/models.py:56 msgid "users" msgstr "kullanıcıları" -#: users/models.py:66 +#: users/models.py:67 msgid "A user with this username already exists." msgstr "Bu kullanıcı adına sahip bir kullanıcı zaten var." -#: users/models.py:78 vpn/models/crypto.py:42 +#: users/models.py:79 vpn/models/crypto.py:42 msgid "group" msgstr "grup" -#: users/models.py:79 +#: users/models.py:80 msgid "groups" msgstr "gruplar" -#: users/models.py:106 users/models.py:107 +#: users/models.py:107 users/models.py:108 msgid "user preferences" msgstr "kullanıcı tercihleri" -#: users/models.py:174 +#: users/models.py:175 #, python-brace-format msgid "Key '{path}' is a leaf node; cannot assign new keys" msgstr "Anahtar '{path}'bir yaprak düğümüdür; yeni anahtarlar atanamıyor" -#: users/models.py:186 +#: users/models.py:187 #, python-brace-format msgid "Key '{path}' is a dictionary; cannot assign a non-dictionary value" msgstr "Anahtar '{path}'bir sözlüktür; sözlük dışı bir değer atayamaz" -#: users/models.py:252 +#: users/models.py:253 msgid "expires" msgstr "süresi dolmak" -#: users/models.py:257 +#: users/models.py:258 msgid "last used" msgstr "son kullanılan" -#: users/models.py:262 +#: users/models.py:263 msgid "key" msgstr "anahtar" -#: users/models.py:268 +#: users/models.py:269 msgid "write enabled" msgstr "yazma etkin" -#: users/models.py:270 +#: users/models.py:271 msgid "Permit create/update/delete operations using this key" msgstr "" "Bu anahtarı kullanarak oluşturma/güncelleme/silme işlemlerine izin verin" -#: users/models.py:281 +#: users/models.py:282 msgid "allowed IPs" msgstr "izin verilen IP'ler" -#: users/models.py:283 +#: users/models.py:284 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\"" @@ -12920,32 +12920,32 @@ msgstr "" "olmadan boş bırakın. Örn: “10.1.1.0/24, 192.168.10.16/32, 2001: DB 8:1: " ":/64\"" -#: users/models.py:291 +#: users/models.py:296 msgid "token" msgstr "jeton" -#: users/models.py:292 +#: users/models.py:297 msgid "tokens" msgstr "jetonlar" -#: users/models.py:373 +#: users/models.py:378 msgid "The list of actions granted by this permission" msgstr "Bu izin tarafından verilen eylemlerin listesi" -#: users/models.py:378 +#: users/models.py:383 msgid "constraints" msgstr "kısıtlamaları" -#: users/models.py:379 +#: users/models.py:384 msgid "" "Queryset filter matching the applicable objects of the selected type(s)" msgstr "Seçili türlerin uygulanabilir nesneleriyle eşleşen Queryset filtresi" -#: users/models.py:386 +#: users/models.py:391 msgid "permission" msgstr "izin" -#: users/models.py:387 +#: users/models.py:392 msgid "permissions" msgstr "izinler" @@ -13215,44 +13215,53 @@ msgstr "" "Bu nesne, form oluşturulduğundan beri değiştirildi. Ayrıntılar için lütfen " "nesnenin değişiklik günlüğüne bakın." -#: utilities/forms/utils.py:42 utilities/forms/utils.py:65 -#: utilities/forms/utils.py:77 utilities/forms/utils.py:80 +#: utilities/forms/utils.py:42 utilities/forms/utils.py:68 +#: utilities/forms/utils.py:85 utilities/forms/utils.py:87 #, python-brace-format msgid "Range \"{value}\" is invalid." msgstr "Menzil”{value}“geçersiz." -#: utilities/forms/utils.py:225 +#: utilities/forms/utils.py:74 +#, python-brace-format +msgid "" +"Invalid range: Ending value ({end}) must be greater than beginning value " +"({begin})." +msgstr "" +"Geçersiz aralık: Bitiş değeri ({end}) başlangıç değerinden büyük olmalıdır " +"({begin})." + +#: utilities/forms/utils.py:232 #, python-brace-format msgid "Duplicate or conflicting column header for \"{field}\"" msgstr "Yinelenen veya çakışan sütun başlığı”{field}“" -#: utilities/forms/utils.py:231 +#: utilities/forms/utils.py:238 #, python-brace-format msgid "Duplicate or conflicting column header for \"{header}\"" msgstr "Yinelenen veya çakışan sütun başlığı”{header}“" -#: utilities/forms/utils.py:240 +#: utilities/forms/utils.py:247 #, python-brace-format msgid "Row {row}: Expected {count_expected} columns but found {count_found}" msgstr "" "Satır {row}: Bekleniyor {count_expected} sütunlar ama bulundu {count_found}" -#: utilities/forms/utils.py:263 +#: utilities/forms/utils.py:270 #, python-brace-format msgid "Unexpected column header \"{field}\" found." msgstr "Beklenmeyen sütun başlığı”{field}“bulundu." -#: utilities/forms/utils.py:265 +#: utilities/forms/utils.py:272 #, python-brace-format msgid "Column \"{field}\" is not a related object; cannot use dots" msgstr "Sütun”{field}“ilgili bir nesne değildir; nokta kullanamaz" -#: utilities/forms/utils.py:269 +#: utilities/forms/utils.py:276 #, python-brace-format msgid "Invalid related object attribute for column \"{field}\": {to_field}" msgstr "Sütun için geçersiz ilgili nesne özniteliği”{field}“: {to_field}" -#: utilities/forms/utils.py:277 +#: utilities/forms/utils.py:284 #, python-brace-format msgid "Required column header \"{header}\" not found." msgstr "Gerekli sütun başlığı”{header}“Bulunamadı." @@ -13882,6 +13891,11 @@ msgstr "Teklif" msgid "Assigned Object Type" msgstr "Atanan Nesne Türü" +#: vpn/forms/model_forms.py:94 vpn/forms/model_forms.py:129 +#: vpn/forms/model_forms.py:241 vpn/tables/tunnels.py:91 +msgid "Tunnel interface" +msgstr "Tünel arayüzü" + #: vpn/forms/model_forms.py:147 msgid "First Termination" msgstr "İlk Fesih" diff --git a/requirements.txt b/requirements.txt index 39922c9b5..2fbc25b21 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,34 +2,34 @@ bleach==6.1.0 Django==4.2.11 django-cors-headers==4.3.1 django-debug-toolbar==4.3.0 -django-filter==24.1 +django-filter==24.2 django-graphiql-debug-toolbar==0.2.0 django-mptt==0.14.0 django-pglocks==1.0.4 django-prometheus==2.3.1 django-redis==5.4.0 django-rich==1.8.0 -django-rq==2.10.1 +django-rq==2.10.2 django-taggit==5.0.1 django-tables2==2.7.0 django-timezone-field==6.1.0 djangorestframework==3.14.0 -drf-spectacular==0.27.1 -drf-spectacular-sidecar==2024.3.4 +drf-spectacular==0.27.2 +drf-spectacular-sidecar==2024.4.1 feedparser==6.0.11 graphene-django==3.0.0 gunicorn==21.2.0 Jinja2==3.1.3 -Markdown==3.5.2 -mkdocs-material==9.5.13 -mkdocstrings[python-legacy]==0.24.1 +Markdown==3.6 +mkdocs-material==9.5.17 +mkdocstrings[python-legacy]==0.24.2 netaddr==1.2.1 -Pillow==10.2.0 +Pillow==10.3.0 psycopg[binary,pool]==3.1.18 PyYAML==6.0.1 requests==2.31.0 social-auth-app-django==5.4.0 social-auth-core[openidconnect]==4.5.3 svgwrite==1.4.3 -tablib==3.5.0 +tablib==3.6.1 tzdata==2024.1