diff options
Diffstat (limited to 'modules')
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, |