summaryrefslogtreecommitdiffhomepage
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/form.js15
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/ui.js89
-rw-r--r--modules/luci-base/po/da/base.po24
-rw-r--r--modules/luci-base/po/de/base.po192
-rw-r--r--modules/luci-base/po/es/base.po24
-rw-r--r--modules/luci-base/po/it/base.po6
-rw-r--r--modules/luci-base/po/pl/base.po36
-rw-r--r--modules/luci-base/po/pt/base.po24
-rw-r--r--modules/luci-base/po/pt_BR/base.po24
-rw-r--r--modules/luci-base/po/ru/base.po28
-rw-r--r--modules/luci-base/po/zh_Hans/base.po26
-rw-r--r--modules/luci-mod-dashboard/po/ru/dashboard.po12
-rw-r--r--modules/luci-mod-dsl/htdocs/luci-static/resources/view/status/dsl/graph.js82
-rw-r--r--modules/luci-mod-dsl/po/ru/dsl.po32
-rw-r--r--modules/luci-mod-network/htdocs/luci-static/resources/tools/network.js142
-rw-r--r--modules/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js2
-rw-r--r--modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js3
-rw-r--r--modules/luci-mod-network/root/usr/share/rpcd/acl.d/luci-mod-network.json4
-rw-r--r--modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js86
-rw-r--r--modules/luci-mod-status/htdocs/luci-static/resources/view/status/nftables.js1
-rw-r--r--modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js4
21 files changed, 544 insertions, 312 deletions
diff --git a/modules/luci-base/htdocs/luci-static/resources/form.js b/modules/luci-base/htdocs/luci-static/resources/form.js
index 3c538b88ca..317b49fdfe 100644
--- a/modules/luci-base/htdocs/luci-static/resources/form.js
+++ b/modules/luci-base/htdocs/luci-static/resources/form.js
@@ -281,7 +281,7 @@ var CBIAbstractElement = baseclass.extend(/** @lends LuCI.form.AbstractElement.p
* The input string to clean.
*
* @returns {string}
- * The cleaned input string with HTML removes removed.
+ * The cleaned input string with HTML tags removed.
*/
stripTags: function(s) {
if (typeof(s) == 'string' && !s.match(/[<>]/))
@@ -3211,8 +3211,17 @@ var CBITableSection = CBITypedSection.extend(/** @lends LuCI.form.TableSection.p
return (stackedMap ? activeMap.save(null, true) : Promise.resolve()).then(L.bind(function() {
section_id = sref['.name'];
- var m = new CBIMap(parent.config, null, null),
- s = m.section(CBINamedSection, section_id, this.sectiontype);
+ var m;
+
+ if (parent instanceof CBIJSONMap) {
+ m = new CBIJSONMap(null, null, null);
+ m.data = parent.data;
+ }
+ else {
+ m = new CBIMap(parent.config, null, null);
+ }
+
+ var s = m.section(CBINamedSection, section_id, this.sectiontype);
m.parent = parent;
m.section = section_id;
diff --git a/modules/luci-base/htdocs/luci-static/resources/ui.js b/modules/luci-base/htdocs/luci-static/resources/ui.js
index c7b7ccd773..9433659f7d 100644
--- a/modules/luci-base/htdocs/luci-static/resources/ui.js
+++ b/modules/luci-base/htdocs/luci-static/resources/ui.js
@@ -820,7 +820,7 @@ var UISelect = UIElement.extend(/** @lends LuCI.ui.Select.prototype */ {
'type': this.options.multiple ? 'checkbox' : 'radio',
'class': this.options.multiple ? 'cbi-input-checkbox' : 'cbi-input-radio',
'value': keys[i],
- 'checked': (this.values.indexOf(keys[i]) > -1) ? '' : null,
+ 'checked': ((!i && !this.values.length) || this.values.indexOf(keys[i]) > -1) ? '' : null,
'disabled': this.options.disabled ? '' : null
}),
E('label', { 'for': this.options.id ? 'widget.%s.%d'.format(this.options.id, i) : null }),
@@ -832,6 +832,9 @@ var UISelect = UIElement.extend(/** @lends LuCI.ui.Select.prototype */ {
]));
frameEl.appendChild(brEl.cloneNode());
+
+ if (!frameEl.querySelector('> span > input[checked]')
+ frameEl.querySelector('> span > input').checked = true;
}
}
@@ -1050,7 +1053,8 @@ var UIDropdown = UIElement.extend(/** @lends LuCI.ui.Dropdown.prototype */ {
'class': 'cbi-dropdown',
'multiple': this.options.multiple ? '' : null,
'optional': this.options.optional ? '' : null,
- 'disabled': this.options.disabled ? '' : null
+ 'disabled': this.options.disabled ? '' : null,
+ 'tabindex': -1
}, E('ul'));
var keys = Object.keys(this.choices);
@@ -1186,11 +1190,11 @@ var UIDropdown = UIElement.extend(/** @lends LuCI.ui.Dropdown.prototype */ {
}
else {
sb.addEventListener('mouseover', this.handleMouseover.bind(this));
+ sb.addEventListener('mouseout', this.handleMouseout.bind(this));
sb.addEventListener('focus', this.handleFocus.bind(this));
canary.addEventListener('focus', this.handleCanaryFocus.bind(this));
- window.addEventListener('mouseover', this.setFocus);
window.addEventListener('click', this.closeAllDropdowns);
}
@@ -1343,7 +1347,12 @@ var UIDropdown = UIElement.extend(/** @lends LuCI.ui.Dropdown.prototype */ {
sb.lastElementChild.setAttribute('tabindex', 0);
- this.setFocus(sb, sel || li[0], true);
+ var focusFn = L.bind(function(el) {
+ this.setFocus(sb, el, true);
+ ul.removeEventListener('transitionend', focusFn);
+ }, this, sel || li[0]);
+
+ ul.addEventListener('transitionend', focusFn);
},
/** @private */
@@ -1559,26 +1568,33 @@ var UIDropdown = UIElement.extend(/** @lends LuCI.ui.Dropdown.prototype */ {
/** @private */
setFocus: function(sb, elem, scroll) {
- if (sb && sb.hasAttribute && sb.hasAttribute('locked-in'))
+ if (sb.hasAttribute('locked-in'))
return;
- if (sb.target && findParent(sb.target, 'ul.dropdown'))
+ sb.querySelectorAll('.focus').forEach(function(e) {
+ e.classList.remove('focus');
+ });
+
+ elem.classList.add('focus');
+
+ if (scroll)
+ elem.parentNode.scrollTop = elem.offsetTop - elem.parentNode.offsetTop;
+
+ elem.focus();
+ },
+
+ /** @private */
+ handleMouseout: function(ev) {
+ var sb = ev.currentTarget;
+
+ if (!sb.hasAttribute('open'))
return;
- document.querySelectorAll('.focus').forEach(function(e) {
- if (!matchesElem(e, 'input')) {
- e.classList.remove('focus');
- e.blur();
- }
+ sb.querySelectorAll('.focus').forEach(function(e) {
+ e.classList.remove('focus');
});
- if (elem) {
- elem.focus();
- elem.classList.add('focus');
-
- if (scroll)
- elem.parentNode.scrollTop = elem.offsetTop - elem.parentNode.offsetTop;
- }
+ sb.querySelector('ul.dropdown').focus();
},
/** @private */
@@ -1758,7 +1774,8 @@ var UIDropdown = UIElement.extend(/** @lends LuCI.ui.Dropdown.prototype */ {
/** @private */
handleKeydown: function(ev) {
- var sb = ev.currentTarget;
+ var sb = ev.currentTarget,
+ ul = sb.querySelector('ul.dropdown');
if (matchesElem(ev.target, 'input'))
return;
@@ -1779,6 +1796,7 @@ var UIDropdown = UIElement.extend(/** @lends LuCI.ui.Dropdown.prototype */ {
switch (ev.keyCode) {
case 27:
this.closeDropdown(sb);
+ ev.stopPropagation();
break;
case 13:
@@ -1802,6 +1820,10 @@ var UIDropdown = UIElement.extend(/** @lends LuCI.ui.Dropdown.prototype */ {
this.setFocus(sb, active.previousElementSibling);
ev.preventDefault();
}
+ else if (document.activeElement === ul) {
+ this.setFocus(sb, ul.lastElementChild);
+ ev.preventDefault();
+ }
break;
case 40:
@@ -1809,6 +1831,10 @@ var UIDropdown = UIElement.extend(/** @lends LuCI.ui.Dropdown.prototype */ {
this.setFocus(sb, active.nextElementSibling);
ev.preventDefault();
}
+ else if (document.activeElement === ul) {
+ this.setFocus(sb, ul.firstElementChild);
+ ev.preventDefault();
+ }
break;
}
}
@@ -3463,8 +3489,17 @@ var UITable = baseclass.extend(/** @lends LuCI.ui.table.prototype */ {
var UI = baseclass.extend(/** @lends LuCI.ui.prototype */ {
__init__: function() {
modalDiv = document.body.appendChild(
- dom.create('div', { id: 'modal_overlay' },
- dom.create('div', { class: 'modal', role: 'dialog', 'aria-modal': true })));
+ dom.create('div', {
+ id: 'modal_overlay',
+ tabindex: -1,
+ keydown: this.cancelModal
+ }, [
+ dom.create('div', {
+ class: 'modal',
+ role: 'dialog',
+ 'aria-modal': true
+ })
+ ]));
tooltipDiv = document.body.appendChild(
dom.create('div', { class: 'cbi-tooltip' }));
@@ -3528,6 +3563,7 @@ var UI = baseclass.extend(/** @lends LuCI.ui.prototype */ {
document.body.classList.add('modal-overlay-active');
modalDiv.scrollTop = 0;
+ modalDiv.focus();
return dlg;
},
@@ -3544,6 +3580,17 @@ var UI = baseclass.extend(/** @lends LuCI.ui.prototype */ {
*/
hideModal: function() {
document.body.classList.remove('modal-overlay-active');
+ modalDiv.blur();
+ },
+
+ /** @private */
+ cancelModal: function(ev) {
+ if (ev.key == 'Escape') {
+ var btn = modalDiv.querySelector('.right > button, .right > .btn');
+
+ if (btn)
+ btn.click();
+ }
},
/** @private */
diff --git a/modules/luci-base/po/da/base.po b/modules/luci-base/po/da/base.po
index 94baf3fa3c..665ffd4cff 100644
--- a/modules/luci-base/po/da/base.po
+++ b/modules/luci-base/po/da/base.po
@@ -1,6 +1,6 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2022-12-29 23:53+0000\n"
+"PO-Revision-Date: 2023-02-04 07:14+0000\n"
"Last-Translator: drax red <drax@outlook.dk>\n"
"Language-Team: Danish <https://hosted.weblate.org/projects/openwrt/luci/da/>"
"\n"
@@ -8,7 +8,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.15.1-dev\n"
+"X-Generator: Weblate 4.16-dev\n"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/nftables.js:650
msgctxt "Yet unknown nftables table family (\"family\" table \"name\")"
@@ -2623,11 +2623,11 @@ msgstr ""
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1469
msgid "E.g. <code>br-vlan</code> or <code>brvlan</code>."
-msgstr ""
+msgstr "F.eks. <code>br-vlan</code> eller <code>brvlan</code>."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1459
msgid "E.g. eth0, eth1"
-msgstr ""
+msgstr "F.eks. eth0, eth1"
#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:67
msgid "EA-bits length"
@@ -2639,7 +2639,7 @@ msgstr "EAP-metode"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1452
msgid "Each STA is assigned its own AP_VLAN interface."
-msgstr ""
+msgstr "Hver STA er tildelt sit eget AP_VLAN interface."
#: modules/luci-base/htdocs/luci-static/resources/form.js:2718
#: modules/luci-base/htdocs/luci-static/resources/form.js:2721
@@ -6050,6 +6050,8 @@ msgid ""
"Off: <code>vlanXXX</code>, e.g., <code>vlan1</code>. On: "
"<code>vlan_tagged_interface.XXX</code>, e.g. <code>eth0.1</code>."
msgstr ""
+"Off: <code>vlanXXX</code>, f.eks., <code>vlan1</code>. On: "
+"<code>vlan_tagged_interface.XXX</code>, f.eks. <code>eth0.1</code>."
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/none.js:19
msgid "On"
@@ -7066,23 +7068,23 @@ msgstr "Radius-godkendelse-server"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1443
msgid "RADIUS Dynamic VLAN Assignment"
-msgstr ""
+msgstr "RADIUS dynamisk VLAN tildeling"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1452
msgid "RADIUS Per STA VLAN"
-msgstr ""
+msgstr "RADIUS pr. STA VLAN"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1469
msgid "RADIUS VLAN Bridge Naming Scheme"
-msgstr ""
+msgstr "Navneordning for RADIUS VLAN broen"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1456
msgid "RADIUS VLAN Naming"
-msgstr ""
+msgstr "RADIUS VLAN navngivning"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1459
msgid "RADIUS VLAN Tagged Interface"
-msgstr ""
+msgstr "RADIUS VLAN Tagged Interface"
#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:88
msgid "RFC3947 NAT-T mode"
@@ -7374,6 +7376,8 @@ msgid ""
"Required: Rejects auth if RADIUS server does not provide appropriate VLAN "
"attributes."
msgstr ""
+"Påkrævet: Afviser godkendelse, hvis RADIUS-serveren ikke leverer passende "
+"VLAN attributter."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1326
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1327
diff --git a/modules/luci-base/po/de/base.po b/modules/luci-base/po/de/base.po
index 79c5a403ed..0eb3ce4d19 100644
--- a/modules/luci-base/po/de/base.po
+++ b/modules/luci-base/po/de/base.po
@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-05-26 17:57+0200\n"
-"PO-Revision-Date: 2023-01-01 13:21+0000\n"
+"PO-Revision-Date: 2023-02-04 20:08+0000\n"
"Last-Translator: ssantos <ssantos@web.de>\n"
"Language-Team: German <https://hosted.weblate.org/projects/openwrt/luci/de/>"
"\n"
@@ -12,7 +12,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.15.1-dev\n"
+"X-Generator: Weblate 4.16-dev\n"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/nftables.js:650
msgctxt "Yet unknown nftables table family (\"family\" table \"name\")"
@@ -295,7 +295,6 @@ msgid "<abbr title=\"Router Advertisement\">RA</abbr>-Service"
msgstr "<abbr title=\"Router Advertisement\">RA</abbr>-Service"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:299
-#, fuzzy
msgid ""
"<code>/#/</code> matches any domain. <code>/example.com/</code> returns "
"NXDOMAIN."
@@ -304,7 +303,6 @@ msgstr ""
"code> liefert NXDOMAIN."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:300
-#, fuzzy
msgid ""
"<code>/example.com/#</code> returns NULL addresses (<code>0.0.0.0</code> and "
"<code>::</code>) for example.com and its subdomains."
@@ -1041,7 +1039,7 @@ msgstr "Architektur"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js:152
msgid "Arp-scan"
-msgstr "Arp-scan"
+msgstr "ARP-Scan"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:996
msgid ""
@@ -1357,7 +1355,6 @@ msgid "Bonding Policy"
msgstr "Bonding-Methode"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:404
-#, fuzzy
msgid "Both Listen addr and Relay To must be specified."
msgstr "Sowohl Listen addr als auch Relay To müssen angegeben werden."
@@ -1586,7 +1583,7 @@ msgstr "Kette"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/nftables.js:581
msgctxt "Yet unknown nftables chain hook"
msgid "Chain hook \"%h\""
-msgstr "Chain-Hook \"%h\""
+msgstr "Hook \"%h\" der Kette"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:4384
msgid "Changes"
@@ -1919,7 +1916,7 @@ msgstr "Fortfahren in <strong><a href=\"#%q.%q\">%h</a></strong>"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/nftables.js:130
msgid "Continue in calling chain"
-msgstr "In aufrufender Chain fortfahren"
+msgstr "In aufrufender Kette fortfahren"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/nftables.js:551
msgctxt "Chain policy: accept"
@@ -2548,7 +2545,7 @@ msgstr "Soll das derzeitige Schlüsselpaar ersetzt werden?"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:682
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:740
msgid "Domain"
-msgstr "Domain"
+msgstr "Domäne"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:268
msgid "Domain required"
@@ -2659,11 +2656,11 @@ msgstr ""
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1469
msgid "E.g. <code>br-vlan</code> or <code>brvlan</code>."
-msgstr ""
+msgstr "Z.B. <code>br-vlan</code> oder <code>brvlan</code>."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1459
msgid "E.g. eth0, eth1"
-msgstr ""
+msgstr "Z.B. eth0, eth1"
#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:67
msgid "EA-bits length"
@@ -2675,7 +2672,7 @@ msgstr "EAP-Methode"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1452
msgid "Each STA is assigned its own AP_VLAN interface."
-msgstr ""
+msgstr "Jedem STA wird eine eigene AP_VLAN-Schnittstelle zugewiesen."
#: modules/luci-base/htdocs/luci-static/resources/form.js:2718
#: modules/luci-base/htdocs/luci-static/resources/form.js:2721
@@ -3233,13 +3230,11 @@ msgstr "Datei nicht verfügbar"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:419
msgid "File to store DHCP lease information."
-msgstr ""
-"Speicherort für vergebene <abbr title=\"Dynamic Host Configuration "
-"Protocol\">DHCP</abbr>-Adressen"
+msgstr "Datei zum Speichern von DHCP-Lease-Informationen."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:427
msgid "File with upstream resolvers."
-msgstr "Lokale <abbr title=\"Domain Name System\">DNS</abbr>-Datei"
+msgstr "Datei mit Upstream-Resolvern."
#: modules/luci-base/htdocs/luci-static/resources/ui.js:2846
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:588
@@ -3248,7 +3243,7 @@ msgstr "Dateiname"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:574
msgid "Filename of the boot image advertised to clients."
-msgstr "Dateiname des Boot-Images welches den Clients mitgeteilt wird"
+msgstr "Dateiname des Boot-Images, das Clients angekündigt wird."
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:191
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:315
@@ -3343,7 +3338,7 @@ msgstr "Firmware-Version"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:527
msgid "Fixed source port for outbound DNS queries."
-msgstr "Fester Port für ausgehende DNS-Anfragen"
+msgstr "Fester Quellport für ausgehende DNS-Abfragen."
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:312
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:449
@@ -3793,7 +3788,7 @@ msgstr ""
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:293
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:332
msgid "Hide empty chains"
-msgstr "Leere Chains ausblenden"
+msgstr "Leere Ketten ausblenden"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:957
msgid "High"
@@ -4239,7 +4234,8 @@ msgstr ""
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:196
msgid "If set, the meaning of the match options is inverted"
-msgstr "Invertiert die Bedeutung der Match-Optionen."
+msgstr ""
+"Wenn eingestellt, wird die Bedeutung der Übereinstimmungsoptionen invertiert"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:255
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:361
@@ -4474,15 +4470,13 @@ msgid "Instance"
msgstr "Instanz"
#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/view/wireguard/status.js:125
-#, fuzzy
msgctxt "WireGuard instance heading"
msgid "Instance \"%h\""
-msgstr "Instanz"
+msgstr "Instanz \"%h\""
#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/view/wireguard/status.js:34
-#, fuzzy
msgid "Instance Details"
-msgstr "Instanz"
+msgstr "Instanzdetails"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2132
msgid ""
@@ -4584,9 +4578,9 @@ msgid ""
"larger values cause IGMP Queries to be sent less often"
msgstr ""
"Hundertstelsekunden-Intervall zwischen allgemeinen Multicast-Anfragen. Durch "
-"die Variation dieses Parameters kann die Gesamtanzahl der IGMP-Nachrichten "
-"in einem Subnetz beeinflusst werden. Größere Werte führen zu selteneren IGMP-"
-"Query-Nachrichten."
+"die Variation dieses Parameters kann die Anzahl der IGMP-Nachrichten in "
+"einem Subnetz beeinflusst werden; größere Werte führen zu seltener "
+"gesendeten IGMP-Queries"
#: modules/luci-mod-network/htdocs/luci-static/resources/tools/network.js:522
msgid "Interval in seconds for STP hello packets"
@@ -4613,14 +4607,14 @@ msgstr "Ungültige Base64-Zeichenkette"
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:83
msgid "Invalid TOS value, expected 00..FF or inherit"
msgstr ""
-"Ungültiger TOS-Wert, erwarte einen Wert zwischen 00 und FF oder \"inherit\"."
+"Ungültiger TOS-Wert, erwartet wird ein Wert zwischen 00 und FF oder inherit"
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:83
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:88
msgid "Invalid Traffic Class value, expected 00..FF or inherit"
msgstr ""
-"Ungültiger Traffic-Klassen-Wert, erwarte einen Wert zwischen 00 und FF oder "
-"\"inherit\"."
+"Ungültiger Traffic-Klassen-Wert, erwartet wird ein Wert zwischen 00 und FF "
+"oder inherit"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:285
msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
@@ -4933,7 +4927,8 @@ msgstr "Link-Layer-Bits %d-%d"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:514
msgid "List of IP addresses to convert into NXDOMAIN responses."
-msgstr "Liste von Servern die falsche \"NX Domain\" Antworten liefern"
+msgstr ""
+"Liste der IP-Adressen, die in NXDOMAIN-Antworten umgewandelt werden sollen."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:306
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:728
@@ -4980,13 +4975,12 @@ msgstr "Liste der SSH Schlüssel zur Authentifikation"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:322
msgid "List of domains to allow RFC1918 responses for."
-msgstr "Liste von Domains für welche RFC1918-Antworten erlaubt sind"
+msgstr "Liste der Domänen, für die RFC1918-Antworten zugelassen werden sollen."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:290
msgid "List of upstream resolvers to forward queries to."
msgstr ""
-"Liste von <abbr title=\"Domain Name System\">DNS</abbr>-Servern an welche "
-"Requests weitergeleitet werden"
+"Liste der Upstream-Resolver, an die Abfragen weitergeleitet werden sollen."
#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:176
#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/view/wireguard/status.js:38
@@ -4998,9 +4992,8 @@ msgid "Listen address"
msgstr "Listen-Adresse"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:410
-#, fuzzy
msgid "Listen and Relay To IP family must be homogeneous."
-msgstr "Listen und Relay To IP Familie müssen homogen sein."
+msgstr "Listen- und Relay To-IP-Familie müssen homogen sein."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:342
msgid "Listen interfaces"
@@ -5025,7 +5018,7 @@ msgstr "ListenPort-Parameter ist ungültig"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:520
msgid "Listening port for inbound DNS queries."
-msgstr "Serverport für eingehende DNS Abfragen"
+msgstr "Hörender Port für eingehende DNS-Abfragen."
#: modules/luci-mod-status/root/usr/share/luci/menu.d/luci-mod-status.json:130
#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:54
@@ -5118,8 +5111,8 @@ msgstr "Lokale Domain"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:281
msgid "Local domain suffix appended to DHCP names and hosts file entries."
msgstr ""
-"Lokaler Domain-Suffix welcher an DHCP Namen und Host-Datei Einträge "
-"angehangen wird"
+"Lokales Domänensuffix, das an DHCP-Namen und Hosts-Datei-Einträge angehängt "
+"wird."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:276
msgid "Local server"
@@ -5344,15 +5337,15 @@ msgstr "Maximal erlaubter Inaktivitätszeitraum"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:534
msgid "Maximum allowed number of active DHCP leases."
-msgstr "Maximal zulässige Anzahl von aktiven DHCP-Leases"
+msgstr "Maximal zulässige Anzahl von aktiven DHCP-Leases."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:548
msgid "Maximum allowed number of concurrent DNS queries."
-msgstr "Maximal zulässige Anzahl an gleichzeitigen DNS-Anfragen"
+msgstr "Maximal zulässige Anzahl an gleichzeitigen DNS-Abfragen."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:541
msgid "Maximum allowed size of EDNS0 UDP packets."
-msgstr "Maximal zulässige Größe von EDNS.0 UDP Paketen"
+msgstr "Maximal zulässige Größe von EDNS0 UDP Paketen."
#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:126
#: protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js:106
@@ -5660,7 +5653,7 @@ msgstr "NAS ID"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/nftables.js:537
msgid "NAT action chain \"%h\""
-msgstr "NAT-Aktions-Chain \"%h\""
+msgstr "NAT-Aktions-Kette \"%h\""
#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:87
msgid "NAT-T Mode"
@@ -5797,7 +5790,6 @@ msgid "Never"
msgstr "Niemals"
#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/view/wireguard/status.js:16
-#, fuzzy
msgctxt "No WireGuard peer handshake yet"
msgid "Never"
msgstr "Niemals"
@@ -5807,9 +5799,8 @@ msgid ""
"Never forward matching domains and subdomains, resolve from DHCP or hosts "
"files only."
msgstr ""
-"Spezifiziert den lokalen Domainnamen. Anfragen für Hostnamen welche auf "
-"diese Domain zutreffen werden nie weitergeleitet und ausschließlich aus DHCP-"
-"Namen oder Hosts-Dateien aufgelöst"
+"Übereinstimmende Domains und Subdomains niemals weiterleiten, nur aus DHCP- "
+"oder Host-Dateien auflösen."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:1172
msgid "New interface for \"%s\" can not be created: %s"
@@ -5865,9 +5856,9 @@ msgid ""
"No changes to settings will be stored and are lost after rebooting. This "
"mode should only be used to install a firmware upgrade"
msgstr ""
-"Einstellungsänderungen werden nicht gespeichert und verschwinden mit einem "
-"Reboot. Dieser Modus sollte nur zum Installieren eines neuen Firmware-Images "
-"genutzt werden."
+"Änderungen an den Einstellungen werden nicht gespeichert und sind nach einem "
+"Neustart verloren. Dieser Modus sollte nur verwendet werden, um ein Firmware-"
+"Upgrade zu installieren"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
msgid "No client associated"
@@ -5959,9 +5950,8 @@ msgid "No password set!"
msgstr "Kein Passwort gesetzt!"
#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/view/wireguard/status.js:84
-#, fuzzy
msgid "No peers connected"
-msgstr "Nicht verbunden"
+msgstr "Keine Peers verbunden"
#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:510
msgid "No peers defined yet."
@@ -5975,7 +5965,7 @@ msgstr "Bisher keine SSH-Schlüssel hinterlegt."
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/nftables.js:614
msgctxt "nft chain is empty"
msgid "No rules in this chain"
-msgstr "Keine Regeln in dieser Chain."
+msgstr "Keine Regeln in dieser Kette"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:91
msgid "No rules in this chain."
@@ -6059,7 +6049,7 @@ msgid ""
"have problems"
msgstr ""
"Hinweis: Einige WLAN-Treiber unterstützen 802.11w nicht vollständig, z.B. "
-"hat der \"mwlwifi\" Treiber bekannte Probleme."
+"hat der \"mwlwifi\" Treiber bekannte Probleme"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:355
msgid ""
@@ -6090,7 +6080,7 @@ msgstr "Anzahl der IGMP-Mitgliedschaftsberichte"
msgid "Number of cached DNS entries, 10000 is maximum, 0 is no caching."
msgstr ""
"Anzahl der zwischengespeicherten DNS-Einträge. Maximum sind 10000 Einträge, "
-"\"0\" deaktiviert die Zwischenspeicherung"
+"\"0\" deaktiviert die Zwischenspeicherung."
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:311
msgid "Number of peer notifications after failover event"
@@ -6130,6 +6120,8 @@ msgid ""
"Off: <code>vlanXXX</code>, e.g., <code>vlan1</code>. On: "
"<code>vlan_tagged_interface.XXX</code>, e.g. <code>eth0.1</code>."
msgstr ""
+"Aus: <code>vlanXXX</code>, z. B. <code>vlan1</code>. Ein: "
+"<code>vlan_tagged_interface.XXX</code>, z.B. <code>eth0.1</code>."
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/none.js:19
msgid "On"
@@ -6375,13 +6367,12 @@ msgstr "Optionen:"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:660
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:692
-#, fuzzy
msgid "Ordinal: lower comes first."
msgstr "Ordinal: der niedrigere Wert kommt zuerst."
#: protocols/luci-proto-batman-adv/htdocs/luci-static/resources/protocol/batadv.js:55
msgid "Originator Interval"
-msgstr "Originator-Intervall."
+msgstr "Originator-Intervall"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:348
msgid "Other:"
@@ -6700,11 +6691,8 @@ msgid "Paste or drag SSH key file…"
msgstr "Schlüssel einfügen oder Schlüsseldatei hereinziehen…"
#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:444
-#, fuzzy
msgid "Paste or drag WireGuard peer configuration (wg0.conf) file…"
-msgstr ""
-"Fügen Sie die WireGuard-Peerkonfigurationsdatei (wg0.conf) ein oder ziehen "
-"Sie sie…"
+msgstr "WireGuard-Peerkonfigurationsdatei (wg0.conf) einfügen oder ziehen…"
#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:437
msgid ""
@@ -6879,10 +6867,9 @@ msgid "Port"
msgstr "Port"
#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/view/wireguard/status.js:137
-#, fuzzy
msgctxt "WireGuard listen port"
msgid "Port %d"
-msgstr "Port %s"
+msgstr "Port %d"
#: modules/luci-mod-network/htdocs/luci-static/resources/tools/network.js:702
msgid "Port isolation"
@@ -7120,9 +7107,7 @@ msgstr "Qualität"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:509
msgid "Query all available upstream resolvers."
-msgstr ""
-"Alle verfügbaren übergeordneten <abbr title=\"Domain Name System\">DNS</"
-"abbr>-Server abfragen"
+msgstr "Abfragen aller verfügbaren Upstream-Resolver."
#: modules/luci-mod-network/htdocs/luci-static/resources/tools/network.js:556
msgid "Query interval"
@@ -7166,23 +7151,23 @@ msgstr "RADIUS Authentication Server"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1443
msgid "RADIUS Dynamic VLAN Assignment"
-msgstr ""
+msgstr "Dynamische RADIUS-VLAN-Zuweisung"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1452
msgid "RADIUS Per STA VLAN"
-msgstr ""
+msgstr "RADIUS pro STA-VLAN"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1469
msgid "RADIUS VLAN Bridge Naming Scheme"
-msgstr ""
+msgstr "RADIUS-VLAN-Bridge-Namensschema"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1456
msgid "RADIUS VLAN Naming"
-msgstr ""
+msgstr "RADIUS-VLAN-Benennung"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1459
msgid "RADIUS VLAN Tagged Interface"
-msgstr ""
+msgstr "RADIUS-VLAN-getaggte Schnittstelle"
#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:88
msgid "RFC3947 NAT-T mode"
@@ -7275,9 +7260,8 @@ msgid "Receive"
msgstr "Empfangen"
#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/view/wireguard/status.js:57
-#, fuzzy
msgid "Received Data"
-msgstr "Empfangen"
+msgstr "Empfangene Daten"
#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:181
msgid "Recommended. IP addresses of the WireGuard interface."
@@ -7350,7 +7334,7 @@ msgstr ""
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:687
#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:39
msgid "Relay"
-msgstr "Relay"
+msgstr "Relais"
#: modules/luci-compat/luasrc/model/network/proto_relay.lua:157
#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:36
@@ -7484,6 +7468,8 @@ msgid ""
"Required: Rejects auth if RADIUS server does not provide appropriate VLAN "
"attributes."
msgstr ""
+"Erforderlich: Lehnt die Authentifizierung ab, wenn der RADIUS-Server keine "
+"geeigneten VLAN-Attribute bereitstellt."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1326
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1327
@@ -7612,8 +7598,8 @@ msgid ""
"Return answers to DNS queries matching the subnet from which the query was "
"received if multiple IPs are available."
msgstr ""
-"Hostnamen je nach anfragendem Subnetz auflösen wenn mehrere IPs verfügbar "
-"sind"
+"Gibt Antworten auf DNS-Anfragen zurück, die mit dem Subnetz übereinstimmen, "
+"von dem die Anfrage empfangen wurde, wenn mehrere IPs verfügbar sind."
#: modules/luci-base/htdocs/luci-static/resources/ui.js:385
#: modules/luci-base/htdocs/luci-static/resources/ui.js:386
@@ -7725,7 +7711,7 @@ msgstr "Erlaubte IP-Adressen routen"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/nftables.js:533
msgid "Route action chain \"%h\""
-msgstr "Routing-Chain \"%h\""
+msgstr "Routing-Kette \"%h\""
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:45
msgid "Route type"
@@ -7780,7 +7766,7 @@ msgstr "Kommentar: %s"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/nftables.js:541
msgid "Rule container chain \"%h\""
-msgstr "Regel-Chain \"%h\""
+msgstr "Regel-Kette \"%h\""
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/nftables.js:602
msgid "Rule matches"
@@ -8093,7 +8079,7 @@ msgstr "Zeige aktuelle Liste der gesicherten Dateien"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:293
msgid "Show empty chains"
-msgstr "Leere Chains anzeigen"
+msgstr "Leere Ketten anzeigen"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:276
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:338
@@ -8736,7 +8722,7 @@ msgstr "Logeinträge unterdrücken"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:443
msgid "Suppress logging of the routine operation for the DHCP protocol."
msgstr ""
-"Logeinträge für erfolgreiche Operationen dieser Protokolle unterdrücken"
+"Unterdrücken der Protokollierung des Routinebetriebs für das DHCP-Protokoll."
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/20_memory.js:46
msgid "Swap free"
@@ -8955,8 +8941,8 @@ msgid ""
"The DNS server entries in the local resolv.conf are primarily sorted by the "
"weight specified here"
msgstr ""
-"Die DNS-Server-Einträge in der lokalen resolv.conf Datei werden primär nach "
-"der hier angegebenen Gewichtung sortiert."
+"Die DNS-Server-Einträge in der lokalen resolv.conf werden vorrangig nach der "
+"hier angegebenen Gewichtung sortiert"
#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:77
msgid ""
@@ -9018,7 +9004,7 @@ msgstr ""
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/timer.js:7
msgid "The LED blinks with the configured on/off frequency"
-msgstr "Die LED blinkt mit der konfigurierten an/aus Frequenz."
+msgstr "Die LED blinkt mit der konfigurierten an/aus Frequenz"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/heartbeat.js:7
msgid "The LED flashes to simulate actual heart beat."
@@ -9248,12 +9234,12 @@ msgid ""
"\"leave latency\" of the network. A reduced value results in reduced time to "
"detect the loss of the last member of a group"
msgstr ""
-"Die maximale Antwortzeit in Hundertstelsekunden welche in gruppenspezifische "
-"Antworten zu Leave-Group-Nachrichten eingefügt wird. Dies ist also der "
-"Zeitabstand zwischen gruppenspezifischen Anfrage-Nachrichten. Der Wert kann "
-"verändert werden um die \"Verlassen-Latenz\" des Netzwerkes zu beeinflussen. "
-"Ein reduzierter Wert resultiert in einer schnelleren Erkennung des Verlustes "
-"des letzten Mitglieds einer Gruppe."
+"Die maximale Antwortzeit in Hundertstelsekunden, welche in "
+"gruppenspezifische Antworten zu Leave-Group-Nachrichten eingefügt wird. Dies "
+"ist also der Zeitabstand zwischen gruppenspezifischen Anfrage-Nachrichten. "
+"Der Wert kann verändert werden, um die \"leave-Latenz\" des Netzwerkes zu "
+"beeinflussen. Ein reduzierter Wert resultiert in einer schnelleren Erkennung "
+"des Verlustes des letzten Mitglieds einer Gruppe"
#: modules/luci-mod-network/htdocs/luci-static/resources/tools/network.js:561
msgid ""
@@ -9266,7 +9252,7 @@ msgstr ""
"periodische Abfragen eingefügt wird. Durch Variation dieses Wertes können "
"die Lastspitzen von IGMP Nachrichten im Subnetz beeinflusst werden - größere "
"Werte sorgen für kleinere Lastspitzen, da Host-Antworten über einen größeren "
-"Zeitinterval verteilt gesendet werden."
+"Zeitinterval verteilt gesendet werden"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:874
msgid ""
@@ -9339,14 +9325,14 @@ msgstr ""
"Der Robustheitswert erlaubt die Anpassung an im Netzwerk zu erwartenden "
"Paketverlust. Wenn ein Netzwerk sehr verlustbehaftet ist, kann der "
"Robustheitswert erhöht werden. IGMP ist bis zu <em>Robustheitswert - 1</em> "
-"Paketverlusten stabil."
+"Paketverlusten stabil"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:171
msgid ""
"The rule target is a jump to another rule specified by its priority value"
msgstr ""
"Das Regelziel ist ein Sprung zu einer anderen durch den Prioritätswert "
-"spezifizierten Regel."
+"spezifizierten Regel"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:91
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:166
@@ -9551,9 +9537,7 @@ msgstr ""
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:273
msgid "This is the only DHCP server in the local network."
-msgstr ""
-"Dies ist der einzige <abbr title=\"Dynamic Host Configuration "
-"Protocol\">DHCP</abbr>-Server im lokalen Netzwerk"
+msgstr "Dies ist der einzige DHCP-Server im lokalen Netz."
#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:73
msgid "This is the plain username for logging into the account"
@@ -9704,7 +9688,7 @@ msgstr "Traffic-Klasse"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/nftables.js:529
msgid "Traffic filter chain \"%h\""
-msgstr "Filter-Chain \"%h\""
+msgstr "Filter-Kette \"%h\""
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/nftables.js:467
msgctxt "nft counter"
@@ -9724,9 +9708,8 @@ msgid "Transmit Hash Policy"
msgstr "Hash-Richtlinie übertragen"
#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/view/wireguard/status.js:58
-#, fuzzy
msgid "Transmitted Data"
-msgstr "Sendeantenne"
+msgstr "Übertragene Daten"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/nftables.js:80
msgctxt "nft @th,off,len"
@@ -10046,8 +10029,7 @@ msgstr ""
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:504
msgid "Upstream resolvers will be queried in the order of the resolv file."
msgstr ""
-"<abbr title=\"Domain Name System\">DNS</abbr>-Server in der Reihenfolge der "
-"Resolv-Datei abfragen"
+"Upstream-Resolver werden in der Reihenfolge der Auflösungsdatei abgefragt."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:82
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/10_system.js:62
@@ -10338,8 +10320,8 @@ msgid ""
"Validate DNS replies and cache DNSSEC data, requires upstream to support "
"DNSSEC."
msgstr ""
-"Setzt DNSSEC-Unterstützung im DNS-Zielserver vorraus; überprüft ob "
-"unsignierte Antworten wirklich von unsignierten Domains kommen"
+"DNS-Antworten validieren und DNSSEC-Daten zwischenspeichern; erfordert "
+"Upstream, um DNSSEC zu unterstützen."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1675
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1733
@@ -10543,7 +10525,7 @@ msgid ""
"may be significantly reduced."
msgstr ""
"Wenn die ESSID versteckt ist, kann Client-Roaming behindert werden und sich "
-"die Effizienz der Übertragungen im Funkspektrum signifikant reduzieren"
+"die Effizienz der Übertragungen im Funkspektrum signifikant reduzieren."
#: modules/luci-compat/luasrc/view/cbi/wireless_modefreq.htm:166
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:520
@@ -10562,7 +10544,7 @@ msgstr "WireGuard-Status"
#: modules/luci-compat/luasrc/model/network/proto_wireguard.lua:9
#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:119
msgid "WireGuard VPN"
-msgstr "WireGuard VPN"
+msgstr "WireGuard-VPN"
#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:539
msgid "WireGuard peer is disabled"
@@ -10620,7 +10602,7 @@ msgstr "Das WLAN-Netzwerk ist aktiviert"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:285
msgid "Write received DNS queries to syslog."
-msgstr "Empfangene DNS-Anfragen in das Systemprotokoll schreiben"
+msgstr "Empfangene DNS-Abfragen in das Systemprotokoll schreiben."
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:181
msgid "Write system log to file"
diff --git a/modules/luci-base/po/es/base.po b/modules/luci-base/po/es/base.po
index 3be844e682..278157ba99 100644
--- a/modules/luci-base/po/es/base.po
+++ b/modules/luci-base/po/es/base.po
@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-06-10 03:41+0200\n"
-"PO-Revision-Date: 2022-12-28 19:33+0000\n"
+"PO-Revision-Date: 2023-02-05 16:57+0000\n"
"Last-Translator: Franco Castillo <castillofrancodamian@gmail.com>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/openwrt/luci/es/>"
"\n"
@@ -12,7 +12,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.15.1-dev\n"
+"X-Generator: Weblate 4.16-dev\n"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/nftables.js:650
msgctxt "Yet unknown nftables table family (\"family\" table \"name\")"
@@ -269,7 +269,7 @@ msgstr "Máscara de red <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:58
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
-msgstr "Configuración de <abbr title=\"Light Emitting Diode\">LED</abbr>"
+msgstr "Configuración de <abbr title=\"Light Emitting Diode\">LEDs</abbr>"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:70
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
@@ -2676,12 +2676,13 @@ msgstr ""
"se dará a clientes con asignaciones estáticas."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1469
+#, fuzzy
msgid "E.g. <code>br-vlan</code> or <code>brvlan</code>."
-msgstr ""
+msgstr "P. e. <code>br-vlan</code> o <code>brvlan</code>."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1459
msgid "E.g. eth0, eth1"
-msgstr ""
+msgstr "P. e. eth0, eth1"
#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:67
msgid "EA-bits length"
@@ -2693,7 +2694,7 @@ msgstr "Método EAP"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1452
msgid "Each STA is assigned its own AP_VLAN interface."
-msgstr ""
+msgstr "A cada STA se le asigna su propia interfaz AP_VLAN."
#: modules/luci-base/htdocs/luci-static/resources/form.js:2718
#: modules/luci-base/htdocs/luci-static/resources/form.js:2721
@@ -4965,7 +4966,8 @@ msgid ""
"List of IP sets to populate with the IPs of DNS lookup results of the FQDNs "
"also specified here."
msgstr ""
-"Lista de conjuntos de IP para completar con las IP de dominio especificadas."
+"Lista de conjuntos de IP para completar con las IP de los resultados de "
+"búsqueda de DNS de los FQDN también especificados aquí."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1608
msgid ""
@@ -6145,10 +6147,13 @@ msgid "Off-State Delay"
msgstr "Retraso de desconexión"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1456
+#, fuzzy
msgid ""
"Off: <code>vlanXXX</code>, e.g., <code>vlan1</code>. On: "
"<code>vlan_tagged_interface.XXX</code>, e.g. <code>eth0.1</code>."
msgstr ""
+"Apagado: <code>vlanXXX</code>, p. e. <code>vlan1</code>. Encendido: "
+"<code>vlan_tagged_interface.XXX</code>, p .e. <code>eth0.1</code>."
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/none.js:19
msgid "On"
@@ -7178,15 +7183,16 @@ msgstr "Servidor de autentificación Radius"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1443
msgid "RADIUS Dynamic VLAN Assignment"
-msgstr ""
+msgstr "Asignación de VLAN dinámica de RADIUS"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1452
msgid "RADIUS Per STA VLAN"
msgstr ""
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1469
+#, fuzzy
msgid "RADIUS VLAN Bridge Naming Scheme"
-msgstr ""
+msgstr "Esquema de nomenclatura del puente RADIUS VLAN"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1456
msgid "RADIUS VLAN Naming"
diff --git a/modules/luci-base/po/it/base.po b/modules/luci-base/po/it/base.po
index e6e0e25b98..f64d929782 100644
--- a/modules/luci-base/po/it/base.po
+++ b/modules/luci-base/po/it/base.po
@@ -3,8 +3,8 @@ msgstr ""
"Project-Id-Version: LuCI\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-06-10 03:40+0200\n"
-"PO-Revision-Date: 2022-12-26 08:48+0000\n"
-"Last-Translator: Daniele Luisetto <daniele.luisetto1@gmail.com>\n"
+"PO-Revision-Date: 2023-01-29 11:24+0000\n"
+"Last-Translator: Dex94 <Dasvaresu@dr.com>\n"
"Language-Team: Italian <https://hosted.weblate.org/projects/openwrt/luci/it/>"
"\n"
"Language: it\n"
@@ -12,7 +12,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.15.1-dev\n"
+"X-Generator: Weblate 4.16-dev\n"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/nftables.js:650
msgctxt "Yet unknown nftables table family (\"family\" table \"name\")"
diff --git a/modules/luci-base/po/pl/base.po b/modules/luci-base/po/pl/base.po
index b6aa472ede..26864f25c7 100644
--- a/modules/luci-base/po/pl/base.po
+++ b/modules/luci-base/po/pl/base.po
@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: LuCI\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-04-20 09:40+0200\n"
-"PO-Revision-Date: 2023-01-13 15:13+0000\n"
+"PO-Revision-Date: 2023-01-22 01:08+0000\n"
"Last-Translator: Matthaiks <kitynska@gmail.com>\n"
"Language-Team: Polish <https://hosted.weblate.org/projects/openwrt/luci/pl/>"
"\n"
@@ -13,7 +13,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 4.15.1-dev\n"
+"X-Generator: Weblate 4.15.1\n"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/nftables.js:650
msgctxt "Yet unknown nftables table family (\"family\" table \"name\")"
@@ -2635,11 +2635,11 @@ msgstr ""
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1469
msgid "E.g. <code>br-vlan</code> or <code>brvlan</code>."
-msgstr ""
+msgstr "Np. <code>br-vlan</code> lub <code>brvlan</code>."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1459
msgid "E.g. eth0, eth1"
-msgstr ""
+msgstr "Np. eth0, eth1"
#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:67
msgid "EA-bits length"
@@ -2651,7 +2651,7 @@ msgstr "Metoda protokołu rozszerzonego uwierzytelniania (EAP)"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1452
msgid "Each STA is assigned its own AP_VLAN interface."
-msgstr ""
+msgstr "Każda STA ma przypisany własny interfejs AP_VLAN."
#: modules/luci-base/htdocs/luci-static/resources/form.js:2718
#: modules/luci-base/htdocs/luci-static/resources/form.js:2721
@@ -6079,6 +6079,8 @@ msgid ""
"Off: <code>vlanXXX</code>, e.g., <code>vlan1</code>. On: "
"<code>vlan_tagged_interface.XXX</code>, e.g. <code>eth0.1</code>."
msgstr ""
+"Wyłączone: <code>vlanXXX</code>, np. <code>vlan1</code>. Włączone: "
+"<code>vlan_tagged_interface.XXX</code>, np. <code>eth0.1</code>."
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/none.js:19
msgid "On"
@@ -7078,47 +7080,47 @@ msgstr "Uchwyt klucza R1"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1431
msgid "RADIUS Accounting Port"
-msgstr "Port Radius-Accounting"
+msgstr "Port rozliczeniowy RADIUS"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1437
msgid "RADIUS Accounting Secret"
-msgstr "Sekret Radius-Accounting"
+msgstr "Sekret rozliczeniowy RADIUS"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1426
msgid "RADIUS Accounting Server"
-msgstr "Serwer Radius-Accounting"
+msgstr "Serwer rozliczeniowy RADIUS"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1415
msgid "RADIUS Authentication Port"
-msgstr "Port Radius-Authentication"
+msgstr "Port uwierzytelniania RADIUS"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1421
msgid "RADIUS Authentication Secret"
-msgstr "Sekret Radius-Authentication"
+msgstr "Sekret uwierzytelniania RADIUS"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1410
msgid "RADIUS Authentication Server"
-msgstr "Serwer Radius-Authentication"
+msgstr "Serwer uwierzytelniania RADIUS"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1443
msgid "RADIUS Dynamic VLAN Assignment"
-msgstr ""
+msgstr "Dynamiczne przypisywanie VLAN RADIUS"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1452
msgid "RADIUS Per STA VLAN"
-msgstr ""
+msgstr "Na STA VLAN RADIUS"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1469
msgid "RADIUS VLAN Bridge Naming Scheme"
-msgstr ""
+msgstr "Schemat nazewnictwa mostów VLAN RADIUS"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1456
msgid "RADIUS VLAN Naming"
-msgstr ""
+msgstr "Nazewnictwo VLAN RADIUS"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1459
msgid "RADIUS VLAN Tagged Interface"
-msgstr ""
+msgstr "Interfejs tagowany VLAN RADIUS"
#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:88
msgid "RFC3947 NAT-T mode"
@@ -7412,6 +7414,8 @@ msgid ""
"Required: Rejects auth if RADIUS server does not provide appropriate VLAN "
"attributes."
msgstr ""
+"Wymagane: odrzuca uwierzytelnianie, jeśli serwer RADIUS nie zapewnia "
+"odpowiednich atrybutów sieci VLAN."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1326
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1327
diff --git a/modules/luci-base/po/pt/base.po b/modules/luci-base/po/pt/base.po
index e1f769533b..46d8e338cd 100644
--- a/modules/luci-base/po/pt/base.po
+++ b/modules/luci-base/po/pt/base.po
@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-05-26 19:03+0200\n"
-"PO-Revision-Date: 2022-12-29 23:53+0000\n"
+"PO-Revision-Date: 2023-01-22 17:57+0000\n"
"Last-Translator: ssantos <ssantos@web.de>\n"
"Language-Team: Portuguese <https://hosted.weblate.org/projects/openwrt/luci/"
"pt/>\n"
@@ -12,7 +12,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.15.1-dev\n"
+"X-Generator: Weblate 4.15.1\n"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/nftables.js:650
msgctxt "Yet unknown nftables table family (\"family\" table \"name\")"
@@ -2652,11 +2652,11 @@ msgstr ""
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1469
msgid "E.g. <code>br-vlan</code> or <code>brvlan</code>."
-msgstr ""
+msgstr "Por exemplo, <code>br-vlan</code> ou <code>brvlan</code>."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1459
msgid "E.g. eth0, eth1"
-msgstr ""
+msgstr "Por exemplo, eth0, eth1"
#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:67
msgid "EA-bits length"
@@ -2668,7 +2668,7 @@ msgstr "Método EAP"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1452
msgid "Each STA is assigned its own AP_VLAN interface."
-msgstr ""
+msgstr "Cada STA recebe a própria interface de AP_VLAN."
#: modules/luci-base/htdocs/luci-static/resources/form.js:2718
#: modules/luci-base/htdocs/luci-static/resources/form.js:2721
@@ -6104,6 +6104,8 @@ msgid ""
"Off: <code>vlanXXX</code>, e.g., <code>vlan1</code>. On: "
"<code>vlan_tagged_interface.XXX</code>, e.g. <code>eth0.1</code>."
msgstr ""
+"Desativado: <code>vlanXXX</code>, por exemplo, <code>vlan1</code>. Ativado: "
+"<code>vlan_tagged_interface.XXX</code>, por exemplo, <code>eth0.1</code>."
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/none.js:19
msgid "On"
@@ -7126,23 +7128,23 @@ msgstr "Servidor-Autenticação-Radius"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1443
msgid "RADIUS Dynamic VLAN Assignment"
-msgstr ""
+msgstr "Atribuição dinâmica de VLAN RADIUS"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1452
msgid "RADIUS Per STA VLAN"
-msgstr ""
+msgstr "RADIUS por STA VLAN"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1469
msgid "RADIUS VLAN Bridge Naming Scheme"
-msgstr ""
+msgstr "Esquema de nomenclatura de pontes VLAN RADIUS"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1456
msgid "RADIUS VLAN Naming"
-msgstr ""
+msgstr "Nomenclatura de VLAN RADIUS"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1459
msgid "RADIUS VLAN Tagged Interface"
-msgstr ""
+msgstr "Interface com marcações de RADIUS VLAN"
#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:88
msgid "RFC3947 NAT-T mode"
@@ -7438,6 +7440,8 @@ msgid ""
"Required: Rejects auth if RADIUS server does not provide appropriate VLAN "
"attributes."
msgstr ""
+"Necessário: Rejeita a autenticação se o servidor RADIUS não fornecer os "
+"atributos de VLAN apropriados."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1326
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1327
diff --git a/modules/luci-base/po/pt_BR/base.po b/modules/luci-base/po/pt_BR/base.po
index 1cddc0759d..09d3e8b867 100644
--- a/modules/luci-base/po/pt_BR/base.po
+++ b/modules/luci-base/po/pt_BR/base.po
@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-06-10 03:41+0200\n"
-"PO-Revision-Date: 2023-01-16 20:09+0000\n"
+"PO-Revision-Date: 2023-01-22 17:57+0000\n"
"Last-Translator: Wellington Terumi Uemura <wellingtonuemura@gmail.com>\n"
"Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/"
"openwrt/luci/pt_BR/>\n"
@@ -12,7 +12,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 4.15.1-dev\n"
+"X-Generator: Weblate 4.15.1\n"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/nftables.js:650
msgctxt "Yet unknown nftables table family (\"family\" table \"name\")"
@@ -2683,11 +2683,11 @@ msgstr ""
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1469
msgid "E.g. <code>br-vlan</code> or <code>brvlan</code>."
-msgstr ""
+msgstr "Por exemplo, <code>br-vlan</code> ou <code>brvlan</code>."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1459
msgid "E.g. eth0, eth1"
-msgstr ""
+msgstr "Por exemplo, eth0, eth1"
#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:67
msgid "EA-bits length"
@@ -2699,7 +2699,7 @@ msgstr "Método EAP"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1452
msgid "Each STA is assigned its own AP_VLAN interface."
-msgstr ""
+msgstr "Cada STA recebe a sua própria interface AP_VLAN."
#: modules/luci-base/htdocs/luci-static/resources/form.js:2718
#: modules/luci-base/htdocs/luci-static/resources/form.js:2721
@@ -6147,6 +6147,8 @@ msgid ""
"Off: <code>vlanXXX</code>, e.g., <code>vlan1</code>. On: "
"<code>vlan_tagged_interface.XXX</code>, e.g. <code>eth0.1</code>."
msgstr ""
+"Desligado: <code>vlanXXX</code>, por ex. <code>vlan1</code>. Em: "
+"<code>vlan_tagged_interface.XXX</code>, por ex. <code>eth0.1</code>."
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/none.js:19
msgid "On"
@@ -7173,23 +7175,23 @@ msgstr "Servidor da autenticação do RADIUS"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1443
msgid "RADIUS Dynamic VLAN Assignment"
-msgstr ""
+msgstr "Atribuição dinâmica da VLAN RADIUS"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1452
msgid "RADIUS Per STA VLAN"
-msgstr ""
+msgstr "RADIUS via VLAN STA"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1469
msgid "RADIUS VLAN Bridge Naming Scheme"
-msgstr ""
+msgstr "Esquema de nomenclatura da ponte VLAN RADIUS"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1456
msgid "RADIUS VLAN Naming"
-msgstr ""
+msgstr "Nomeação da VLAN RADIUS"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1459
msgid "RADIUS VLAN Tagged Interface"
-msgstr ""
+msgstr "Interface com tags VLAN RADIUS"
#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:88
msgid "RFC3947 NAT-T mode"
@@ -7486,6 +7488,8 @@ msgid ""
"Required: Rejects auth if RADIUS server does not provide appropriate VLAN "
"attributes."
msgstr ""
+"Obrigatório: Rejeita a autenticação caso o servidor RADIUS não forneça os "
+"atributos apropriados da VLAN."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1326
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1327
diff --git a/modules/luci-base/po/ru/base.po b/modules/luci-base/po/ru/base.po
index a3151d7b50..117eb60df4 100644
--- a/modules/luci-base/po/ru/base.po
+++ b/modules/luci-base/po/ru/base.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: LuCI: base\n"
"POT-Creation-Date: 2010-05-09 01:01+0300\n"
-"PO-Revision-Date: 2023-01-07 02:47+0000\n"
-"Last-Translator: Anton Kikin <a.a.kikin@gmail.com>\n"
+"PO-Revision-Date: 2023-01-28 16:35+0000\n"
+"Last-Translator: st7105 <st7105@gmail.com>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/openwrt/luci/ru/>"
"\n"
"Language: ru\n"
@@ -12,7 +12,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 4.15.1-dev\n"
+"X-Generator: Weblate 4.16-dev\n"
"Project-Info: Это технический перевод, не дословный. Главное-удобный русский "
"интерфейс, все проверялось в графическом режиме, совместим с другими apps\n"
@@ -532,7 +532,7 @@ msgstr "Действия"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:14
msgid "Active"
-msgstr "Активный"
+msgstr "Активно"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:81
msgid "Active Connections"
@@ -2653,11 +2653,11 @@ msgstr ""
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1469
msgid "E.g. <code>br-vlan</code> or <code>brvlan</code>."
-msgstr ""
+msgstr "Например, <code>br-vlan</code> или <code>brvlan</code>."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1459
msgid "E.g. eth0, eth1"
-msgstr ""
+msgstr "Например, eth0, eth1"
#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:67
msgid "EA-bits length"
@@ -2669,7 +2669,7 @@ msgstr "Метод EAP"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1452
msgid "Each STA is assigned its own AP_VLAN interface."
-msgstr ""
+msgstr "Каждому STA назначается собственный интерфейс AP_VLAN."
#: modules/luci-base/htdocs/luci-static/resources/form.js:2718
#: modules/luci-base/htdocs/luci-static/resources/form.js:2721
@@ -6101,6 +6101,8 @@ msgid ""
"Off: <code>vlanXXX</code>, e.g., <code>vlan1</code>. On: "
"<code>vlan_tagged_interface.XXX</code>, e.g. <code>eth0.1</code>."
msgstr ""
+"Выключено: <code>vlanXXX</code>, например, <code>vlan1</code>. Включено: "
+"<code>vlan_tagged_interface.XXX</code>, например, <code>eth0.1</code>."
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/none.js:19
msgid "On"
@@ -7122,23 +7124,23 @@ msgstr "Сервер Radius-Authentication"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1443
msgid "RADIUS Dynamic VLAN Assignment"
-msgstr ""
+msgstr "RADIUS Динамическое VLAN назначение"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1452
msgid "RADIUS Per STA VLAN"
-msgstr ""
+msgstr "RADIUS на STA VLAN"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1469
msgid "RADIUS VLAN Bridge Naming Scheme"
-msgstr ""
+msgstr "RADIUS VLAN схема именования мостов"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1456
msgid "RADIUS VLAN Naming"
-msgstr ""
+msgstr "Именование RADIUS VLAN"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1459
msgid "RADIUS VLAN Tagged Interface"
-msgstr ""
+msgstr "Тегированный интерфейс RADIUS VLAN"
#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:88
msgid "RFC3947 NAT-T mode"
@@ -7434,6 +7436,8 @@ msgid ""
"Required: Rejects auth if RADIUS server does not provide appropriate VLAN "
"attributes."
msgstr ""
+"Обязательно: отклоняет аутентификацию, если сервер RADIUS не предоставляет "
+"соответствующие атрибуты VLAN."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1326
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1327
diff --git a/modules/luci-base/po/zh_Hans/base.po b/modules/luci-base/po/zh_Hans/base.po
index 12858bd2df..dbb68fbbd5 100644
--- a/modules/luci-base/po/zh_Hans/base.po
+++ b/modules/luci-base/po/zh_Hans/base.po
@@ -4,15 +4,15 @@
#
msgid ""
msgstr ""
-"PO-Revision-Date: 2023-01-08 05:48+0000\n"
-"Last-Translator: Tianling Shen <i@cnsztl.eu.org>\n"
+"PO-Revision-Date: 2023-01-22 17:57+0000\n"
+"Last-Translator: Eric <hamburger2048@users.noreply.hosted.weblate.org>\n"
"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
"openwrt/luci/zh_Hans/>\n"
"Language: zh_Hans\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 4.15.1-dev\n"
+"X-Generator: Weblate 4.15.1\n"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/nftables.js:650
msgctxt "Yet unknown nftables table family (\"family\" table \"name\")"
@@ -2540,11 +2540,11 @@ msgstr ""
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1469
msgid "E.g. <code>br-vlan</code> or <code>brvlan</code>."
-msgstr ""
+msgstr "如 <code>br-vlan</code> 或 <code>brvlan</code>。"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1459
msgid "E.g. eth0, eth1"
-msgstr ""
+msgstr "如,eth0, eth1"
#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:67
msgid "EA-bits length"
@@ -2556,7 +2556,7 @@ msgstr "EAP 类型"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1452
msgid "Each STA is assigned its own AP_VLAN interface."
-msgstr ""
+msgstr "每个 STA 被分配了自己的 AP_VLAN 接口。"
#: modules/luci-base/htdocs/luci-static/resources/form.js:2718
#: modules/luci-base/htdocs/luci-static/resources/form.js:2721
@@ -5890,6 +5890,8 @@ msgid ""
"Off: <code>vlanXXX</code>, e.g., <code>vlan1</code>. On: "
"<code>vlan_tagged_interface.XXX</code>, e.g. <code>eth0.1</code>."
msgstr ""
+"关: <code>vlanXXX</code>, 如 <code>vlan1</code>。开: "
+"<code>vlan_tagged_interface.XXX</code>, 如 <code>eth0.1</code>."
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/none.js:19
msgid "On"
@@ -6875,23 +6877,23 @@ msgstr "Radius 认证服务器"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1443
msgid "RADIUS Dynamic VLAN Assignment"
-msgstr ""
+msgstr "RADIUS 动态 VLAN 分配"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1452
msgid "RADIUS Per STA VLAN"
-msgstr ""
+msgstr "RADIUS Per STA VLAN"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1469
msgid "RADIUS VLAN Bridge Naming Scheme"
-msgstr ""
+msgstr "RADIUS VLAN 网桥命名方案"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1456
msgid "RADIUS VLAN Naming"
-msgstr ""
+msgstr "RADIUS VLAN 命名"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1459
msgid "RADIUS VLAN Tagged Interface"
-msgstr ""
+msgstr "RADIUS VLAN 有标签的接口"
#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:88
msgid "RFC3947 NAT-T mode"
@@ -7175,7 +7177,7 @@ msgstr "必需。用于 SA 的 XFRM 接口 ID。"
msgid ""
"Required: Rejects auth if RADIUS server does not provide appropriate VLAN "
"attributes."
-msgstr ""
+msgstr "必需:拒绝验证,如果 RADIUS 服务器不提供正确的 VLAN 属性。"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1326
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1327
diff --git a/modules/luci-mod-dashboard/po/ru/dashboard.po b/modules/luci-mod-dashboard/po/ru/dashboard.po
index 5bac2ea1c5..48a821d013 100644
--- a/modules/luci-mod-dashboard/po/ru/dashboard.po
+++ b/modules/luci-mod-dashboard/po/ru/dashboard.po
@@ -1,21 +1,21 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"PO-Revision-Date: 2021-10-26 14:59+0000\n"
-"Last-Translator: Darin Avdeyeva <yulyablack@inbox.lv>\n"
+"PO-Revision-Date: 2023-01-28 16:35+0000\n"
+"Last-Translator: st7105 <st7105@gmail.com>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/openwrt/"
"lucimodulesluci-mod-dashboard/ru/>\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 4.9-dev\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Generator: Weblate 4.16-dev\n"
#: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:163
msgid "Active"
-msgstr "Активный"
+msgstr "Активно"
#: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:308
msgid "Architecture"
diff --git a/modules/luci-mod-dsl/htdocs/luci-static/resources/view/status/dsl/graph.js b/modules/luci-mod-dsl/htdocs/luci-static/resources/view/status/dsl/graph.js
index ba0d590c18..218b67938a 100644
--- a/modules/luci-mod-dsl/htdocs/luci-static/resources/view/status/dsl/graph.js
+++ b/modules/luci-mod-dsl/htdocs/luci-static/resources/view/status/dsl/graph.js
@@ -89,6 +89,7 @@ const usQLNData = new DataSet(window.json['qln']['upstream'], myQLNFunction);
const dsQLNData = new DataSet(window.json['qln']['downstream'], myQLNFunction);
const usHLOGData = new DataSet(window.json['hlog']['upstream'], myHLOGFunction);
const dsHLOGData = new DataSet(window.json['hlog']['downstream'], myHLOGFunction);
+const pilotTonesData = window.json['pilot_tones'] || [];
const marginX = 50;
const marginY = 80;
@@ -120,6 +121,12 @@ let bitsChart = {
"data" : dsBitsData.data,
"color": "navy",
"title": _("Downstream bits allocation")
+ },
+ {
+ "lines": true,
+ "data": pilotTonesData,
+ "color": "red",
+ "title": _("Pilot tones")
}
]
};
@@ -220,14 +227,39 @@ function drawChart (info) {
drawLegend(info.config, info.dataSet);
- drawData(info.config, info.dataSet[0].data, info.dataSet[0].color);
- drawData(info.config, info.dataSet[1].data, info.dataSet[1].color);
+ for (let item of info.dataSet) {
+ if (item.lines === true) {
+ drawLines(info.config, item.data, item.color);
+ } else {
+ drawData(info.config, item.data, item.color);
+ }
+ }
}
function drawBlocks(config, dataPoints, color, borders) {
borders.map(drawBlock, {config, dataPoints, color, borders});
}
+function drawLines(config, dataPoints, color) {
+ let ctx = config.ctx;
+ let len = dataPoints.length;
+ let minX = config.minX;
+ let maxX = config.maxX;
+ let minY = config.minY;
+ let maxY = config.maxY;
+
+ ctx.strokeStyle = color;
+ ctx.beginPath();
+
+ for (let item of dataPoints) {
+ let relX = (item - minX) / (maxX - minX);
+ ctx.moveTo(relX * config.graphWidth + marginX, marginY);
+ ctx.lineTo(relX * config.graphWidth + marginX, marginY + config.graphHeight);
+ }
+
+ ctx.stroke();
+}
+
function drawData(config, dataPoints, color) {
let ctx = config.ctx;
let len = dataPoints.length;
@@ -263,35 +295,35 @@ function drawLegend(config, dataSet){
let graphHeight = config.graphHeight;
ctx.font = "12px Arial";
- ctx.fillStyle = dataSet[0].color;
- ctx.fillRect(0.5 * graphWidth + marginX - ctx.measureText(dataSet[0].title).width - 50, config.canvas.height - marginY*1/4 - 8, 30, 10);
- ctx.strokeStyle = "#C0C0C0";
- ctx.strokeRect(0.5 * graphWidth + marginX - ctx.measureText(dataSet[0].title).width - 50, config.canvas.height - marginY*1/4 - 8, 30, 10);
- if (darkMode == "true") {
- ctx.strokeStyle = "#505050";
- ctx.fillStyle = "#A0A0A0";
- } else {
- ctx.strokeStyle = "#303030";
- ctx.fillStyle = "#303030";
+ let legendWidth = -10;
+ for (let item of dataSet) {
+ legendWidth += 50 + ctx.measureText(item.title).width;
}
- ctx.textAlign = "right"
- ctx.fillText(dataSet[0].title, 0.5 * graphWidth + marginX - 10, config.canvas.height - marginY*1/4);
+ var x = 0.5 * (graphWidth - legendWidth) + marginX;
+ var y = config.canvas.height - marginY*1/4;
- ctx.fillStyle = dataSet[1].color;
- ctx.fillRect(0.5 * graphWidth + marginX, config.canvas.height - marginY*1/4 - 8, 30, 10);
- ctx.strokeStyle = "#C0C0C0";
- ctx.strokeRect(0.5 * graphWidth + marginX, config.canvas.height - marginY*1/4 - 8, 30, 10);
+ for (let item of dataSet) {
+ ctx.fillStyle = item.color;
+ ctx.fillRect(x, y - 8, 30, 10);
+ ctx.strokeStyle = "#C0C0C0";
+ ctx.strokeRect(x, y - 8, 30, 10);
- if (darkMode == "true") {
- ctx.fillStyle = "#A0A0A0";
- } else {
- ctx.fillStyle = "#303030";
- }
+ if (darkMode == "true") {
+ ctx.fillStyle = "#A0A0A0";
+ } else {
+ ctx.fillStyle = "#303030";
+ }
- ctx.textAlign = "left"
- ctx.fillText(dataSet[1].title, 0.5 * graphWidth + marginX + 40, config.canvas.height - marginY*1/4);
+ x += 40;
+
+ ctx.textAlign = "left"
+ ctx.fillText(item.title, x, y);
+
+ x += ctx.measureText(item.title).width;
+ x += 10;
+ }
}
function drawAxisX(config, minValue, maxValue, step, title) {
diff --git a/modules/luci-mod-dsl/po/ru/dsl.po b/modules/luci-mod-dsl/po/ru/dsl.po
index 253cb4700c..cfa7ab7757 100644
--- a/modules/luci-mod-dsl/po/ru/dsl.po
+++ b/modules/luci-mod-dsl/po/ru/dsl.po
@@ -1,53 +1,55 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2022-12-06 01:48+0000\n"
+"PO-Revision-Date: 2023-01-28 16:35+0000\n"
"Last-Translator: Wolterhon <hotmottot.1@gmail.com>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/openwrt/"
"luci_modules_luci-mod-dsl/ru/>\n"
"Language: ru\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 4.15-dev\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Generator: Weblate 4.16-dev\n"
#: modules/luci-mod-dsl/htdocs/luci-static/resources/view/status/dsl/spectrum.js:24
#: modules/luci-mod-dsl/root/usr/share/luci/menu.d/luci-mod-dsl.json:3
msgid "DSL line spectrum"
-msgstr ""
+msgstr "Спектр линии DSL"
#: modules/luci-mod-dsl/htdocs/luci-static/resources/view/status/dsl/graph.js:212
msgid "Downstream HLOG"
-msgstr ""
+msgstr "Нисходящий HLOG"
#: modules/luci-mod-dsl/htdocs/luci-static/resources/view/status/dsl/graph.js:182
msgid "Downstream QLN"
-msgstr ""
+msgstr "Нисходящий QLN"
#: modules/luci-mod-dsl/htdocs/luci-static/resources/view/status/dsl/graph.js:152
msgid "Downstream SNR"
-msgstr ""
+msgstr "Нисходящий SNR"
#: modules/luci-mod-dsl/htdocs/luci-static/resources/view/status/dsl/graph.js:122
msgid "Downstream bits allocation"
-msgstr ""
+msgstr "Распределение битов в нисходящем направлении"
#: modules/luci-mod-dsl/root/usr/share/rpcd/acl.d/luci-mod-dsl.json:3
msgid "Grant access to luci-mod-dsl spectrum"
-msgstr ""
+msgstr "Предоставить доступ к спектру luci-mod-dsl"
#: modules/luci-mod-dsl/htdocs/luci-static/resources/view/status/dsl/spectrum.js:25
msgid ""
"Graphs below show Signal-to-noise ratio, Bit allocation, Quiet line noise "
"and Channel characteristics function (HLOG) per sub-carrier."
msgstr ""
+"Графики ниже показывают соотношение сигнал/шум, распределение битов, шум "
+"тихой линии и функцию характеристик канала (HLOG) для каждой поднесущей."
#: modules/luci-mod-dsl/htdocs/luci-static/resources/view/status/dsl/graph.js:106
#: modules/luci-mod-dsl/htdocs/luci-static/resources/view/status/dsl/graph.js:136
#: modules/luci-mod-dsl/htdocs/luci-static/resources/view/status/dsl/graph.js:166
#: modules/luci-mod-dsl/htdocs/luci-static/resources/view/status/dsl/graph.js:196
msgid "Sub-carrier"
-msgstr ""
+msgstr "Поднесущая"
#: modules/luci-mod-dsl/htdocs/luci-static/resources/view/status/dsl/graph.js:207
msgid "Upstream HLOG"
@@ -55,15 +57,15 @@ msgstr "Входящий поток HLOG"
#: modules/luci-mod-dsl/htdocs/luci-static/resources/view/status/dsl/graph.js:177
msgid "Upstream QLN"
-msgstr ""
+msgstr "Восходящий QLN"
#: modules/luci-mod-dsl/htdocs/luci-static/resources/view/status/dsl/graph.js:147
msgid "Upstream SNR"
-msgstr ""
+msgstr "Восходящий SNR"
#: modules/luci-mod-dsl/htdocs/luci-static/resources/view/status/dsl/graph.js:111
msgid "bits"
-msgstr ""
+msgstr "бит"
#: modules/luci-mod-dsl/htdocs/luci-static/resources/view/status/dsl/graph.js:141
#: modules/luci-mod-dsl/htdocs/luci-static/resources/view/status/dsl/graph.js:201
@@ -72,4 +74,4 @@ msgstr "дБ"
#: modules/luci-mod-dsl/htdocs/luci-static/resources/view/status/dsl/graph.js:171
msgid "dBm/Hz"
-msgstr ""
+msgstr "дБм/Гц"
diff --git a/modules/luci-mod-network/htdocs/luci-static/resources/tools/network.js b/modules/luci-mod-network/htdocs/luci-static/resources/tools/network.js
index c31015a564..97bbf0ab5d 100644
--- a/modules/luci-mod-network/htdocs/luci-static/resources/tools/network.js
+++ b/modules/luci-mod-network/htdocs/luci-static/resources/tools/network.js
@@ -1,4 +1,5 @@
'use strict';
+'require fs';
'require ui';
'require dom';
'require uci';
@@ -149,25 +150,77 @@ function updatePlaceholders(opt, section_id) {
}
}
+var cbiFlagTristate = form.ListValue.extend({
+ __init__: function(/* ... */) {
+ this.super('__init__', arguments);
+ this.keylist = [ '', '0!', '1!' ];
+ this.vallist = [ _('automatic'), _('disabled'), _('enabled') ];
+ },
+
+ load: function(section_id) {
+ var invert = false, sysfs = this.sysfs;
+
+ if (sysfs) {
+ if (sysfs.charAt(0) == '!') {
+ invert = true;
+ sysfs = sysfs.substring(1);
+ }
+
+ return L.resolveDefault(fs.read(sysfs), '').then(L.bind(function(res) {
+ res = (res || '').trim();
+
+ if (res == '0')
+ this.sysfs_default = invert;
+ else if (res == '1')
+ this.sysfs_default = !invert;
+
+ return this.super('load', [section_id]);
+ }, this));
+ }
+
+ return this.super('load', [section_id]);
+ },
+
+ write: function(section_id, formvalue) {
+ if (formvalue == '1!')
+ return this.super('write', [section_id, '1']);
+ else if (formvalue == '0!')
+ return this.super('write', [section_id, '0']);
+ else
+ return this.super('remove', [section_id]);
+ },
+
+ renderWidget: function(section_id, option_index, cfgvalue) {
+ var sysdef = this.sysfs_default;
+
+ if (this.sysfs_default !== null) {
+ this.keylist[0] = sysdef ? '1' : '0';
+ this.vallist[0] = sysdef ? _('automatic (enabled)') : _('automatic (disabled)');
+ }
+
+ return this.super('renderWidget', [section_id, option_index, cfgvalue]);
+ }
+});
+
var cbiTagValue = form.Value.extend({
renderWidget: function(section_id, option_index, cfgvalue) {
var widget = new ui.Dropdown(cfgvalue || ['-'], {
'-': E([], [
E('span', { 'class': 'hide-open', 'style': 'font-family:monospace' }, [ '—' ]),
- E('span', { 'class': 'hide-close' }, [ _('Do not participate', 'VLAN port state') ])
+ E('span', { 'class': 'hide-close' }, [ _('Not Member', 'VLAN port state') ])
]),
'u': E([], [
- E('span', { 'class': 'hide-open', 'style': 'font-family:monospace' }, [ 'u' ]),
- E('span', { 'class': 'hide-close' }, [ _('Egress untagged', 'VLAN port state') ])
+ E('span', { 'class': 'hide-open', 'style': 'font-family:monospace' }, [ 'U' ]),
+ E('span', { 'class': 'hide-close' }, [ _('Untagged', 'VLAN port state') ])
]),
't': E([], [
- E('span', { 'class': 'hide-open', 'style': 'font-family:monospace' }, [ 't' ]),
- E('span', { 'class': 'hide-close' }, [ _('Egress tagged', 'VLAN port state') ])
+ E('span', { 'class': 'hide-open', 'style': 'font-family:monospace' }, [ 'T' ]),
+ E('span', { 'class': 'hide-close' }, [ _('Tagged', 'VLAN port state') ])
]),
'*': E([], [
E('span', { 'class': 'hide-open', 'style': 'font-family:monospace' }, [ '*' ]),
- E('span', { 'class': 'hide-close' }, [ _('Primary VLAN ID', 'VLAN port state') ])
+ E('span', { 'class': 'hide-close' }, [ _('Is Primary VLAN', 'VLAN port state') ])
])
}, {
id: this.cbid(section_id),
@@ -331,6 +384,7 @@ return baseclass.extend({
addDeviceOptions: function(s, dev, isNew) {
var parent_dev = dev ? dev.getParent() : null,
+ devname = dev ? dev.getName() : null,
o, ss;
s.tab('devgeneral', _('General device options'));
@@ -619,8 +673,8 @@ return baseclass.extend({
o.placeholder = dev ? dev._devstate('qlen') : '';
o.datatype = 'uinteger';
- o = this.replaceOption(s, 'devadvanced', form.Flag, 'promisc', _('Enable promiscuous mode'));
- o.default = o.disabled;
+ o = this.replaceOption(s, 'devadvanced', cbiFlagTristate, 'promisc', _('Enable promiscuous mode'));
+ o.sysfs_default = (dev && dev.dev && dev.dev.flags) ? dev.dev.flags.promisc : null;
o = this.replaceOption(s, 'devadvanced', form.ListValue, 'rpfilter', _('Reverse path filter'));
o.default = '';
@@ -644,11 +698,17 @@ return baseclass.extend({
}
};
- o = this.replaceOption(s, 'devadvanced', form.Flag, 'acceptlocal', _('Accept local'), _('Accept packets with local source addresses'));
- o.default = o.disabled;
+ o = this.replaceOption(s, 'devadvanced', cbiFlagTristate, 'acceptlocal', _('Accept local'), _('Accept packets with local source addresses'));
+ o.sysfs = '/proc/sys/net/ipv4/conf/%s/accept_local'.format(devname || 'default');
- o = this.replaceOption(s, 'devadvanced', form.Flag, 'sendredirects', _('Send ICMP redirects'));
- o.default = o.enabled;
+ o = this.replaceOption(s, 'devadvanced', cbiFlagTristate, 'sendredirects', _('Send ICMP redirects'));
+ o.sysfs = '/proc/sys/net/ipv4/conf/%s/send_redirects'.format(devname || 'default');
+
+ o = this.replaceOption(s, 'devadvanced', cbiFlagTristate, 'arp_accept ', _('Honor gratuitous ARP'), _('When enabled, new ARP table entries are added from received gratuitous APR requests or replies, otherwise only preexisting table entries are updated, but no new hosts are learned.'));
+ o.sysfs = '/proc/sys/net/ipv4/conf/%s/arp_accept'.format(devname || 'default');
+
+ o = this.replaceOption(s, 'devadvanced', cbiFlagTristate, 'drop_gratuitous_arp', _('Drop gratuitous ARP'), _('Drop all gratuitous ARP frames, for example if there’s a known good ARP proxy on the network and such frames need not be used or in the case of 802.11, must not be used to prevent attacks.'));
+ o.sysfs = '/proc/sys/net/ipv4/conf/%s/drop_gratuitous_arp'.format(devname || 'default');
o = this.replaceOption(s, 'devadvanced', form.Value, 'neighreachabletime', _('Neighbour cache validity'), _('Time in milliseconds'));
o.placeholder = '30000';
@@ -662,59 +722,75 @@ return baseclass.extend({
o.placeholder = '0';
o.datatype = 'uinteger';
- o = this.replaceOption(s, 'devgeneral', form.Flag, 'ipv6', _('Enable IPv6'));
+ o = this.replaceOption(s, 'devgeneral', cbiFlagTristate, 'ipv6', _('Enable IPv6'));
+ o.sysfs = '!/proc/sys/net/ipv6/conf/%s/disable_ipv6'.format(devname || 'default');
o.migrate = false;
- o.default = o.enabled;
+
+ o = this.replaceOption(s, 'devadvanced', cbiFlagTristate, 'ip6segmentrouting', _('Enable IPv6 segment routing'));
+ o.sysfs = '/proc/sys/net/ipv6/conf/%s/seg6_enabled'.format(devname || 'default');
+ o.depends('ipv6', /1/);
+
+ o = this.replaceOption(s, 'devadvanced', cbiFlagTristate, 'drop_unsolicited_na', _('Drop unsolicited NA'), _('Drop all unsolicited neighbor advertisements, for example if there’s a known good NA proxy on the network and such frames need not be used or in the case of 802.11, must not be used to prevent attacks.'));
+ o.sysfs = '/proc/sys/net/ipv6/conf/%s/drop_unsolicited_na'.format(devname || 'default');
+ o.depends('ipv6', /1/);
o = this.replaceOption(s, 'devgeneral', form.Value, 'mtu6', _('IPv6 MTU'));
o.datatype = 'max(9200)';
- o.depends('ipv6', '1');
+ o.depends('ipv6', /1/);
o = this.replaceOption(s, 'devgeneral', form.Value, 'dadtransmits', _('DAD transmits'), _('Amount of Duplicate Address Detection probes to send'));
o.placeholder = '1';
o.datatype = 'uinteger';
- o.depends('ipv6', '1');
+ o.depends('ipv6', /1/);
- o = this.replaceOption(s, 'devadvanced', form.Flag, 'multicast', _('Enable multicast support'));
- o.default = o.enabled;
+ o = this.replaceOption(s, 'devadvanced', cbiFlagTristate, 'multicast', _('Enable multicast support'));
+ o.sysfs_default = (dev && dev.dev && dev.dev.flags) ? dev.dev.flags.multicast : null;
o = this.replaceOption(s, 'devadvanced', form.ListValue, 'igmpversion', _('Force IGMP version'));
o.value('', _('No enforcement'));
o.value('1', _('Enforce IGMPv1'));
o.value('2', _('Enforce IGMPv2'));
o.value('3', _('Enforce IGMPv3'));
- o.depends('multicast', '1');
+ o.depends('multicast', /1/);
o = this.replaceOption(s, 'devadvanced', form.ListValue, 'mldversion', _('Force MLD version'));
o.value('', _('No enforcement'));
o.value('1', _('Enforce MLD version 1'));
o.value('2', _('Enforce MLD version 2'));
- o.depends('multicast', '1');
+ o.depends('multicast', /1/);
if (isBridgePort(dev)) {
- o = this.replaceOption(s, 'brport', form.Flag, 'learning', _('Enable MAC address learning'));
- o.default = o.enabled;
+ o = this.replaceOption(s, 'brport', cbiFlagTristate, 'learning', _('Enable MAC address learning'));
+ o.sysfs = '/sys/class/net/%s/brport/learning'.format(devname || 'default');
- o = this.replaceOption(s, 'brport', form.Flag, 'unicast_flood', _('Enable unicast flooding'));
- o.default = o.enabled;
+ o = this.replaceOption(s, 'brport', cbiFlagTristate, 'unicast_flood', _('Enable unicast flooding'));
+ o.sysfs = '/sys/class/net/%s/brport/unicast_flood'.format(devname || 'default');
- o = this.replaceOption(s, 'brport', form.Flag, 'isolate', _('Port isolation'), _('Only allow communication with non-isolated bridge ports when enabled'));
- o.default = o.disabled;
+ o = this.replaceOption(s, 'brport', cbiFlagTristate, 'isolate', _('Port isolation'), _('Only allow communication with non-isolated bridge ports when enabled'));
+ o.sysfs = '/sys/class/net/%s/brport/isolated'.format(devname || 'default');
o = this.replaceOption(s, 'brport', form.ListValue, 'multicast_router', _('Multicast routing'));
o.value('', _('Never'));
o.value('1', _('Learn'));
o.value('2', _('Always'));
- o.depends('multicast', '1');
+ o.depends('multicast', /1/);
+
+ o = this.replaceOption(s, 'brport', cbiFlagTristate, 'multicast_to_unicast', _('Multicast to unicast'), _('Forward multicast packets as unicast packets on this device.'));
+ o.sysfs = '/sys/class/net/%s/brport/multicast_to_unicast'.format(devname || 'default');
+ o.depends('multicast', /1/);
+
+ o = this.replaceOption(s, 'brport', cbiFlagTristate, 'multicast_fast_leave', _('Enable multicast fast leave'));
+ o.sysfs = '/sys/class/net/%s/brport/multicast_fast_leave'.format(devname || 'default');
+ o.depends('multicast', /1/);
- o = this.replaceOption(s, 'brport', form.Flag, 'multicast_to_unicast', _('Multicast to unicast'), _('Forward multicast packets as unicast packets on this device.'));
- o.default = o.disabled;
- o.depends('multicast', '1');
+ o = this.replaceOption(s, 'brport', cbiFlagTristate, 'drop_v4_unicast_in_l2_multicast', _('Drop nested IPv4 unicast'), _('Drop layer 2 multicast frames containing IPv4 unicast packets.'));
+ o.sysfs = '/proc/sys/net/ipv4/conf/%s/drop_unicast_in_l2_multicast'.format(devname || 'default');
+ o.depends('multicast', /1/);
- o = this.replaceOption(s, 'brport', form.Flag, 'multicast_fast_leave', _('Enable multicast fast leave'));
- o.default = o.disabled;
- o.depends('multicast', '1');
+ o = this.replaceOption(s, 'brport', cbiFlagTristate, 'drop_v6_unicast_in_l2_multicast', _('Drop nested IPv6 unicast'), _('Drop layer 2 multicast frames containing IPv6 unicast packets.'));
+ o.sysfs = '/proc/sys/net/ipv6/conf/%s/drop_unicast_in_l2_multicast'.format(devname || 'default');
+ o.depends('multicast', /1/);
}
o = this.replaceOption(s, 'bridgevlan', form.Flag, 'vlan_filtering', _('Enable VLAN filtering'));
diff --git a/modules/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js b/modules/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js
index 90ad67aeaf..8e400fb46b 100644
--- a/modules/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js
+++ b/modules/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js
@@ -163,7 +163,7 @@ return view.extend({
E('div', { 'id' : 'command-output'},
E('textarea', {
'id': 'widget.command-output',
- 'style': 'width: 100%',
+ 'style': 'width: 100%; font-family:monospace; white-space:pre',
'readonly': true,
'wrap': 'off',
'rows': '20'
diff --git a/modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js b/modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js
index d44b0cf6d0..d0ffe02ee9 100644
--- a/modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js
+++ b/modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js
@@ -1347,6 +1347,9 @@ return view.extend({
for (var i = 0; i < map.addedVLANs.length; i++)
uci.remove('network', map.addedVLANs[i]);
+ if (this.addedSection)
+ uci.remove('network', this.addedSection);
+
return form.GridSection.prototype.handleModalCancel.apply(this, arguments);
};
diff --git a/modules/luci-mod-network/root/usr/share/rpcd/acl.d/luci-mod-network.json b/modules/luci-mod-network/root/usr/share/rpcd/acl.d/luci-mod-network.json
index 1c553f3992..b377f395f0 100644
--- a/modules/luci-mod-network/root/usr/share/rpcd/acl.d/luci-mod-network.json
+++ b/modules/luci-mod-network/root/usr/share/rpcd/acl.d/luci-mod-network.json
@@ -8,7 +8,9 @@
"/proc/sys/net/ipv6/conf/*/mtu": [ "read" ],
"/proc/sys/net/ipv6/conf/*/hop_limit": [ "read" ],
"/usr/libexec/luci-peeraddr": [ "exec" ],
- "/usr/lib/opkg/info/netifd.control": [ "read" ]
+ "/usr/lib/opkg/info/netifd.control": [ "read" ],
+ "/proc/sys/net/ipv[46]/conf/*": [ "read" ],
+ "/sys/class/net/*/brport/*": [ "read" ]
},
"ubus": {
"file": [ "exec" ],
diff --git a/modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js b/modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js
index 0ee0b9033a..785fb773ec 100644
--- a/modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js
+++ b/modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js
@@ -9,6 +9,25 @@ var callDSLMetrics = rpc.declare({
expect: { '': {} }
});
+function format_on_off(val) {
+ return val ? _('on') : _('off');
+}
+
+function format_latency(val) {
+ return '%.2f ms'.format(val / 1000);
+}
+
+function format_values(format, val1, val2) {
+ var val1Str = (val1 != null) ? format.format(val1) : '-';
+ var val2Str = (val2 != null) ? format.format(val2) : '-';
+ return val1Str + ' / ' + val2Str;
+}
+function format_values_func(func, val1, val2) {
+ var val1Str = (val1 != null) ? func(val1) : '-';
+ var val2Str = (val2 != null) ? func(val2) : '-';
+ return val1Str + ' / ' + val2Str;
+}
+
function renderbox(dsl) {
return E('div', { class: 'ifacebox' }, [
E('div', { class: 'ifacebox-head center ' + (dsl.up ? 'active' : '') },
@@ -18,23 +37,56 @@ function renderbox(dsl) {
_('Line State'), dsl.state || '-',
_('Line Mode'), dsl.mode || '-',
_('Line Uptime'), '%t'.format(dsl.uptime),
- _('Annex'), dsl.annex || '-',
- _('Data Rate'), '%1000.3mb/s / %1000.3mb/s'.format(dsl.downstream.data_rate, dsl.upstream.data_rate),
- _('Max. Attainable Data Rate (ATTNDR)'), '%1000.3mb/s / %1000.3mb/s'.format(dsl.downstream.attndr, dsl.upstream.attndr),
- _('Latency'), '%.2f ms / %.2f ms'.format(dsl.downstream.interleave_delay / 1000, dsl.upstream.interleave_delay / 1000),
- _('Line Attenuation (LATN)'), '%.1f dB / %.1f dB'.format(dsl.downstream.latn, dsl.upstream.latn),
- _('Signal Attenuation (SATN)'), '%.1f dB / %.1f dB'.format(dsl.downstream.satn, dsl.upstream.satn),
- _('Noise Margin (SNR)'), '%.1f dB / %.1f dB'.format(dsl.downstream.snr, dsl.upstream.snr),
- _('Aggregate Transmit Power (ACTATP)'), '%.1f dB / %.1f dB'.format(dsl.downstream.actatp, dsl.upstream.actatp),
- _('Forward Error Correction Seconds (FECS)'), '%d / %d'.format(dsl.errors.near.fecs, dsl.errors.far.fecs),
- _('Errored seconds (ES)'), '%d / %d'.format(dsl.errors.near.es, dsl.errors.far.es),
- _('Severely Errored Seconds (SES)'), '%d / %d'.format(dsl.errors.near.ses, dsl.errors.far.ses),
- _('Loss of Signal Seconds (LOSS)'), '%d / %d'.format(dsl.errors.near.loss, dsl.errors.far.loss),
- _('Unavailable Seconds (UAS)'), '%d / %d'.format(dsl.errors.near.uas, dsl.errors.far.uas),
- _('Header Error Code Errors (HEC)'), '%d / %d'.format(dsl.errors.near.hec, dsl.errors.far.hec),
- _('Non Pre-emptive CRC errors (CRC_P)'), '%d / %d'.format(dsl.errors.near.crc_p, dsl.errors.far.crc_p),
- _('Pre-emptive CRC errors (CRCP_P)'), '%d / %d'.format(dsl.errors.near.crcp_p, dsl.errors.far.crcp_p),
- _('ATU-C System Vendor ID'), dsl.atu_c.vendor || dsl.atu_c.vendor_id,
+ _('Annex'), dsl.annex || '-'
+ ]),
+ L.itemlist(E('span'), [
+ _('Data Rate'), format_values('%1000.3mb/s', dsl.downstream.data_rate, dsl.upstream.data_rate),
+ _('Max. Attainable Data Rate (ATTNDR)'), format_values('%1000.3mb/s', dsl.downstream.attndr, dsl.upstream.attndr),
+ _('Min. Error-Free Throughput (MINEFTR)'), format_values('%1000.3mb/s', dsl.downstream.mineftr, dsl.upstream.mineftr)
+ ]),
+ L.itemlist(E('span'), [
+ _('Bitswap'), format_values_func(format_on_off, dsl.downstream.bitswap, dsl.upstream.bitswap),
+ _('Rate Adaptation Mode'), format_values('%s', dsl.downstream.ra_mode, dsl.upstream.ra_mode)
+ ]),
+ L.itemlist(E('span'), [
+ _('Latency'), format_values_func(format_latency, dsl.downstream.interleave_delay, dsl.upstream.interleave_delay),
+ _('Impulse Noise Protection (INP)'), format_values('%.1f symbols', dsl.downstream.inp, dsl.upstream.inp),
+ _('Retransmission (G.INP)'), format_values_func(format_on_off, dsl.downstream.retx, dsl.upstream.retx)
+ ]),
+ L.itemlist(E('span'), [
+ _('Line Attenuation (LATN)'), format_values('%.1f dB', dsl.downstream.latn, dsl.upstream.latn),
+ _('Signal Attenuation (SATN)'), format_values('%.1f dB', dsl.downstream.satn, dsl.upstream.satn),
+ _('Noise Margin (SNRM)'), format_values('%.1f dB', dsl.downstream.snr, dsl.upstream.snr),
+ _('Aggregate Transmit Power (ACTATP)'), format_values('%.1f dB', dsl.downstream.actatp, dsl.upstream.actatp)
+ ]),
+ L.itemlist(E('span'), [
+ _('Forward Error Correction Seconds (FECS)'), format_values('%d', dsl.errors.near.fecs, dsl.errors.far.fecs),
+ _('Errored Seconds (ES)'), format_values('%d', dsl.errors.near.es, dsl.errors.far.es),
+ _('Severely Errored Seconds (SES)'), format_values('%d', dsl.errors.near.ses, dsl.errors.far.ses),
+ _('Loss of Signal Seconds (LOSS)'), format_values('%d', dsl.errors.near.loss, dsl.errors.far.loss),
+ _('Unavailable Seconds (UAS)'), format_values('%d', dsl.errors.near.uas, dsl.errors.far.uas),
+ _('Seconds with Low Error-Free Throughput (LEFTRS)'), format_values('%d', dsl.errors.near.leftrs, dsl.errors.far.leftrs)
+ ]),
+ L.itemlist(E('span'), [
+ _('Channel CRC Errors (CV-C)'), format_values('%d', dsl.errors.near.cv_c, dsl.errors.far.cv_c),
+ _('Channel Errors Corrected by FEC (FEC-C)'), format_values('%d', dsl.errors.near.fec_c, dsl.errors.far.fec_c)
+ ]),
+ L.itemlist(E('span'), [
+ _('ATM Header Error Code Errors (HEC)'), format_values('%d', dsl.errors.near.hec, dsl.errors.far.hec),
+ _('PTM Non Pre-emptive CRC Errors (CRC-P)'), format_values('%d', dsl.errors.near.crc_p, dsl.errors.far.crc_p),
+ _('PTM Pre-emptive CRC Errors (CRCP-P)'), format_values('%d', dsl.errors.near.crcp_p, dsl.errors.far.crcp_p)
+ ]),
+ L.itemlist(E('span'), [
+ _('Retransmitted DTUs (rtx-tx)'), format_values('%d', dsl.errors.far.tx_retransmitted, dsl.errors.near.tx_retransmitted),
+ _('Corrected DTUs (rtx-c)'), format_values('%d', dsl.errors.near.rx_corrected, dsl.errors.far.rx_corrected),
+ _('Uncorrected DTUs (rtx-uc)'), format_values('%d', dsl.errors.near.rx_uncorrected_protected, dsl.errors.far.rx_uncorrected_protected)
+ ]),
+ L.itemlist(E('span'), [
+ _('Modem Chipset'), dsl.chipset || '-',
+ _('Modem Firmware'), dsl.firmware_version || '-',
+ _('xTU-C Vendor ID'), dsl.atu_c.vendor || dsl.atu_c.vendor_id
+ ]),
+ L.itemlist(E('span'), [
_('Power Management Mode'), dsl.power_state
])
])
diff --git a/modules/luci-mod-status/htdocs/luci-static/resources/view/status/nftables.js b/modules/luci-mod-status/htdocs/luci-static/resources/view/status/nftables.js
index de2f3d4daa..d5faedc4dc 100644
--- a/modules/luci-mod-status/htdocs/luci-static/resources/view/status/nftables.js
+++ b/modules/luci-mod-status/htdocs/luci-static/resources/view/status/nftables.js
@@ -4,7 +4,6 @@
'require fs';
'require ui';
'require dom';
-'require tools.firewall as fwtool';
var expr_translations = {
'meta.iifname': _('Ingress device name', 'nft meta iifname'),
diff --git a/modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js b/modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js
index 3bcddf6aa7..5e8bb52566 100644
--- a/modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js
+++ b/modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js
@@ -248,7 +248,7 @@ return view.extend({
E('h2', {}, [ _('Routing') ]),
E('p', {}, [ _('The following rules are currently active on this system.') ]),
E('div', {}, [
- E('div', { 'data-tab': 'ipv4routing', 'data-tab-title': _('IPv4 Routing') }, [
+ E('div', { 'class': 'cbi-section', 'data-tab': 'ipv4routing', 'data-tab-title': _('IPv4 Routing') }, [
E('h3', {}, [ _('IPv4 Neighbours') ]),
neigh4tbl,
@@ -258,7 +258,7 @@ return view.extend({
E('h3', {}, [ _('Active IPv4 Rules') ]),
rule4tbl
]),
- E('div', { 'data-tab': 'ipv6routing', 'data-tab-title': _('IPv6 Routing') }, [
+ E('div', { 'class': 'cbi-section', 'data-tab': 'ipv6routing', 'data-tab-title': _('IPv6 Routing') }, [
E('h3', {}, [ _('IPv6 Neighbours') ]),
neigh6tbl,