diff --git a/grpcurl/Makefile b/grpcurl/Makefile index 5debe9151..659716716 100644 --- a/grpcurl/Makefile +++ b/grpcurl/Makefile @@ -8,8 +8,8 @@ include $(TOPDIR)/rules.mk PKG_NAME:=grpcurl -PKG_VERSION:=1.9.3 -PKG_RELEASE:=6 +PKG_VERSION:=1.9.4 +PKG_RELEASE:=7 PKG_SOURCE:=v$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://github.com/fullstorydev/grpcurl/archive/refs/tags/ diff --git a/luci-app-fwlive/Makefile b/luci-app-fwlive/Makefile index fffe22098..8017f3485 100644 --- a/luci-app-fwlive/Makefile +++ b/luci-app-fwlive/Makefile @@ -12,7 +12,7 @@ LUCI_DEPENDS:=+luci-base +logd +jsonfilter LUCI_PKGARCH:=all PKG_VERSION:=0.1.37 -PKG_RELEASE:=1 +PKG_RELEASE:=2 # Reproducible build: honor SOURCE_DATE_EPOCH from the build environment (set by docker-sdk.sh / CI). ifdef SOURCE_DATE_EPOCH diff --git a/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js b/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js index 0286f4d3a..d47f7560c 100644 --- a/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js +++ b/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js @@ -21,8 +21,8 @@ const callFwlivePoll = rpc.declare({ object: 'fwlive', method: 'poll', - params: [ 'addresses' ], - expect: { log: [] } + params: [ 'addresses' ] + /* Full reply object kept so reply.error reaches fetchEntries (#233). */ }); const callFwliveRules = rpc.declare({ @@ -113,6 +113,7 @@ return view.extend({ resolveInFlight: false, resolveGeneration: 0, lastPollError: false, + lastRulesError: null, lastRenderedRowCount: 0, lastRenderedHeadId: '', followLive: true, @@ -492,11 +493,17 @@ return view.extend({ const res = await callFwliveRules(); this.rulesMap = (res && res.rules) || {}; this.firewallBackend = (res && res.backend) || 'nft'; + /* Bounds / mktemp failures are reply.error — same idea as poll (#245). */ + this.lastRulesError = (res && res.error) || null; + if (this.lastRulesError) + console.warn('fwlive rules map error:', this.lastRulesError); } catch (e) { this.rulesMap = {}; this.firewallBackend = 'nft'; + this.lastRulesError = 'rules_unavailable'; } this.updateBackendUi(); + this.updateStatus(); }, backendDisplayLabel() { @@ -729,7 +736,7 @@ return view.extend({ if (!this.sessionSeen) this.sessionSeen = new Set(); - let raw; + let reply; try { /* Raw logd lines, not post-filter rows. Fetch a multiple of the * display limit so mixed syslog still fills the table; pause @@ -737,13 +744,23 @@ return view.extend({ const fetchLines = this.paused ? constants.FETCH_LINES_MAX : Math.min(Math.max(this.rowLimit * 4, 100), constants.FETCH_LINES_MAX); - raw = await callFwlivePoll({ + reply = await callFwlivePoll({ addresses: [ String(fetchLines) ] }); } catch (e) { this.lastPollError = true; return; } + /* Full poll object (no rpc expect strip). error → banner; log → rows. */ + if (!reply || typeof reply !== 'object' || Array.isArray(reply)) { + this.lastPollError = true; + return; + } + if (reply.error) { + this.lastPollError = true; + return; + } + const raw = reply.log; if (!Array.isArray(raw)) { this.lastPollError = true; return; @@ -911,6 +928,17 @@ return view.extend({ return; } + if (this.lastRulesError) { + status.className = 'fwlive-status fwlive-status-error'; + if (this.lastRulesError === 'rules_truncated') + status.textContent = _('Rule labels incomplete — map truncated') + suffix; + else if (this.lastRulesError === 'mktemp_failed') + status.textContent = _('Rule labels unavailable — temp file failed') + suffix; + else + status.textContent = _('Rule labels unavailable') + suffix; + return; + } + status.className = this.paused ? 'fwlive-status fwlive-status-paused' : 'fwlive-status'; @@ -1135,7 +1163,8 @@ return view.extend({ if (gen !== this.resolveGeneration) return; - const names = (res && res.names) || {}; + /* rpc.declare expect: { names: {} } already unwraps — res IS the map (#243). */ + const names = res || {}; let updated = false; for (let i = 0; i < need.length; i++) { diff --git a/luci-app-fwlive/po/de/luci-app-fwlive.po b/luci-app-fwlive/po/de/luci-app-fwlive.po index 9ee5c07ca..b2aca2083 100644 --- a/luci-app-fwlive/po/de/luci-app-fwlive.po +++ b/luci-app-fwlive/po/de/luci-app-fwlive.po @@ -12,598 +12,701 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:884 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:909 msgid "%d matching · %d/%d stored" msgstr "%d matching · %d/%d stored" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:887 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:912 msgid "0 matching · %d/%d stored" msgstr "0 matching · %d/%d stored" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:250 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:251 msgid "Accessible (teal/orange)" msgstr "Barrierefrei (teal/orange)" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:32 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:32 msgid "Action" msgstr "Aktion" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:594 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:601 msgid "Administrator access is required to disable logging." -msgstr "Zum Deaktivieren der Protokollierung sind Administratorrechte erforderlich." +msgstr "" +"Zum Deaktivieren der Protokollierung sind Administratorrechte erforderlich." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:562 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:569 msgid "Administrator access is required to enable logging." -msgstr "Zum Aktivieren der Protokollierung sind Administratorrechte erforderlich." +msgstr "" +"Zum Aktivieren der Protokollierung sind Administratorrechte erforderlich." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1050 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1086 msgid "Also seen" msgstr "Weitere" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:547 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:583 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:554 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:590 msgid "Another change is staged for the firewall; apply or revert it first." -msgstr "Eine andere Änderung an der Firewall ist vorgemerkt; zuerst anwenden oder verwerfen." +msgstr "" +"Eine andere Änderung an der Firewall ist vorgemerkt; zuerst anwenden oder " +"verwerfen." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1615 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1652 msgid "Any action" msgstr "Beliebige Aktion" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1043 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1079 msgid "Any protocol" msgstr "Beliebiges Protokoll" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:113 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:113 msgid "Before you enable logging" msgstr "Before you enable logging" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:545 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:552 msgid "Cannot enable logging until kernel log modules are installed." -msgstr "Protokollierung kann erst aktiviert werden, wenn die Kernel-Log-Module installiert sind." +msgstr "" +"Protokollierung kann erst aktiviert werden, wenn die Kernel-Log-Module " +"installiert sind." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:116 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:116 msgid "Changes:" msgstr "Changes:" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:249 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:250 msgid "Classic (green/red)" msgstr "Klassisch (grün/rot)" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1599 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1636 msgid "Classic uses green/red; Accessible uses teal/orange" msgstr "Klassisch verwendet grün/rot; Barrierefrei verwendet teal/orange" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:116 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:116 msgid "Clear all" msgstr "Alle löschen" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1655 -msgid "Click a cell to filter · ≠ on a chip to exclude · Ctrl+click a rule for firewall settings · in Simple view, click a row for the full message" -msgstr "Zelle anklicken zum Filtern · ≠ auf einem Chip zum Ausschließen · Strg+Klick auf eine Regel für Firewall-Einstellungen · in der Einfachen Ansicht Zeile anklicken für die vollständige Meldung" +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1692 +msgid "" +"Click a cell to filter · ≠ on a chip to exclude · Ctrl+click a rule for " +"firewall settings · in Simple view, click a row for the full message" +msgstr "" +"Zelle anklicken zum Filtern · ≠ auf einem Chip zum Ausschließen · Strg+Klick " +"auf eine Regel für Firewall-Einstellungen · in der Einfachen Ansicht Zeile " +"anklicken für die vollständige Meldung" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1676 -msgid "Click a row (Time or other non-link cells) to see the full log line (Simple view)." -msgstr "Klicken Sie auf eine Zeile (Zeit oder andere Nicht-Link-Zellen), um die vollständige Log-Zeile zu sehen (Einfache Ansicht)." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1713 +msgid "" +"Click a row (Time or other non-link cells) to see the full log line (Simple " +"view)." +msgstr "" +"Klicken Sie auf eine Zeile (Zeit oder andere Nicht-Link-Zellen), um die " +"vollständige Log-Zeile zu sehen (Einfache Ansicht)." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:113 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:113 msgid "Click a row for the full message" msgstr "Zeile anklicken für die vollständige Meldung" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1677 -msgid "Click an IP, action, or protocol to filter; use the Protocol menu (or ≠ on a chip) to exclude." -msgstr "Click an IP, action, or protocol to filter; use the Protocol menu (or ≠ on a chip) to exclude." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1714 +msgid "" +"Click an IP, action, or protocol to filter; use the Protocol menu (or ≠ on a " +"chip) to exclude." +msgstr "" +"Click an IP, action, or protocol to filter; use the Protocol menu (or ≠ on a " +"chip) to exclude." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1044 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1080 msgid "Common" msgstr "Häufig" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:902 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:927 msgid "Connection lost — retrying…" msgstr "Connection lost — retrying…" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:585 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:592 msgid "Could not disable logging." msgstr "Protokollierung konnte nicht deaktiviert werden." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:549 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:556 msgid "Could not enable logging." msgstr "Protokollierung konnte nicht aktiviert werden." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1637 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1674 msgid "Custom protocol (prefix ! to exclude). Overrides the menu when set." -msgstr "Eigenes Protokoll (! zum Ausschließen). Überschreibt das Menü, wenn gesetzt." +msgstr "" +"Eigenes Protokoll (! zum Ausschließen). Überschreibt das Menü, wenn gesetzt." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:42 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:42 msgid "DPort" msgstr "Ziel-Port" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:40 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:40 msgid "Destination" msgstr "Ziel" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1648 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1685 msgid "Destination IP contains (! to exclude)" msgstr "Ziel-IP enthält (! zum Ausschließen)" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1649 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1686 msgid "Destination port (! to exclude)" msgstr "Ziel-Port (! zum Ausschließen)" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1540 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1577 msgid "Detail" msgstr "Detail" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:37 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:37 msgid "Dir" msgstr "Richtung" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:85 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:85 msgid "Disabling…" msgstr "Disabling…" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1573 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1610 msgid "Display options" msgstr "Anzeigeoptionen" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1673 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1710 msgid "Display options on the bar set Limit, row tint, palette, and hostnames." -msgstr "Anzeigeoptionen in der Leiste setzen Limit, Zeilenfärbung, Palette und Hostnamen." +msgstr "" +"Anzeigeoptionen in der Leiste setzen Limit, Zeilenfärbung, Palette und " +"Hostnamen." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:121 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:121 msgid "Does not change:" msgstr "Does not change:" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:138 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:138 msgid "Don’t show this again" msgstr "Don’t show this again" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:150 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:230 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:150 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:230 msgid "Enable WAN drop/reject logging" msgstr "Enable WAN drop/reject logging" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:104 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:104 msgid "Enable WAN zone drop/reject logging (same as Network → Firewall)." msgstr "Enable WAN zone drop/reject logging (same as Network → Firewall)." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:107 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:107 msgid "Enable logging" msgstr "Protokollierung aktivieren" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1672 -msgid "Enable logging turns on WAN zone drop/reject logging only (same as Network → Firewall). It does not add rules or log normal LAN browsing." -msgstr "Enable logging turns on WAN zone drop/reject logging only (same as Network → Firewall). It does not add rules or log normal LAN browsing." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1709 +msgid "" +"Enable logging turns on WAN zone drop/reject logging only (same as Network → " +"Firewall). It does not add rules or log normal LAN browsing." +msgstr "" +"Enable logging turns on WAN zone drop/reject logging only (same as Network → " +"Firewall). It does not add rules or log normal LAN browsing." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:107 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:150 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:230 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:107 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:150 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:230 msgid "Enabling…" msgstr "Enabling…" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1057 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1093 msgid "Exclude" msgstr "Ausschließen" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:80 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:80 msgid "Exclude instead" msgstr "Stattdessen ausschließen" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:53 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:71 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:53 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:71 msgid "Filter by %s" msgstr "Filtern nach %s" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:136 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:136 msgid "Filter by interface" msgstr "Nach Schnittstelle filtern" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:112 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:112 msgid "Filter logs by rule (hint: %s). Ctrl+click to open firewall settings." -msgstr "Logs nach Regel filtern (Hinweis: %s). Strg+Klick öffnet die Firewall-Einstellungen." +msgstr "" +"Logs nach Regel filtern (Hinweis: %s). Strg+Klick öffnet die Firewall-" +"Einstellungen." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1497 -#: applications/luci-app-fwlive/root/usr/share/luci/menu.d/luci-app-fwlive.json:3 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1534 +#: openwrt-feed/luci-app-fwlive/root/usr/share/luci/menu.d/luci-app-fwlive.json:3 msgid "Firewall Live View" msgstr "Firewall-Live-Ansicht" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:43 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:43 msgid "Flags" msgstr "Flags" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:45 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:45 msgid "Flow" msgstr "Fluss" -#: applications/luci-app-fwlive/root/usr/share/rpcd/acl.d/luci-app-fwlive.json:3 +#: openwrt-feed/luci-app-fwlive/root/usr/share/rpcd/acl.d/luci-app-fwlive.json:3 msgid "Grant access to firewall live log view" msgstr "Zugriff auf die Live-Ansicht der Firewall-Protokolle gewähren" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1669 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1706 msgid "Help" msgstr "Hilfe" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:853 -msgid "High event rate — table refresh is throttled to protect the browser. The buffer still updates; refresh will resume automatically." -msgstr "High event rate — table refresh is throttled to protect the browser. The buffer still updates; refresh will resume automatically." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:878 +msgid "" +"High event rate — table refresh is throttled to protect the browser. The " +"buffer still updates; refresh will resume automatically." +msgstr "" +"High event rate — table refresh is throttled to protect the browser. The " +"buffer still updates; refresh will resume automatically." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1048 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1084 msgid "ICMPv6" msgstr "ICMPv6" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:35 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:35 msgid "IN" msgstr "EINGANG" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1680 -msgid "If Row tint looks missing, the active LuCI theme may omit success/error or info/warn CSS variables; fwlive falls back to local colors (air-gapped, no data leaves the device)." -msgstr "Wenn die Zeileneinfärbung fehlt, verwendet das aktive LuCI-Theme möglicherweise keine Erfolgs/Fehler-CSS-Variablen; fwlive fällt auf lokale Farben zurück (air-gapped, keine Daten verlassen das Gerät)." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1717 +msgid "" +"If Row tint looks missing, the active LuCI theme may omit success/error or " +"info/warn CSS variables; fwlive falls back to local colors (air-gapped, no " +"data leaves the device)." +msgstr "" +"Wenn die Zeileneinfärbung fehlt, verwendet das aktive LuCI-Theme " +"möglicherweise keine Erfolgs/Fehler-CSS-Variablen; fwlive fällt auf lokale " +"Farben zurück (air-gapped, keine Daten verlassen das Gerät)." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:205 -msgid "If the WAN is quiet, wait for probes or use the optional ping check in Help / the enabling-logs guide." -msgstr "If the WAN is quiet, wait for probes or use the optional ping check in Help / the enabling-logs guide." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:205 +msgid "" +"If the WAN is quiet, wait for probes or use the optional ping check in " +"Help / the enabling-logs guide." +msgstr "" +"If the WAN is quiet, wait for probes or use the optional ping check in " +"Help / the enabling-logs guide." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:80 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:80 msgid "Include instead" msgstr "Stattdessen einschließen" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:34 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:34 msgid "Interface" msgstr "Schnittstelle" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1645 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1682 msgid "Interface (prefix ! to exclude)" msgstr "Schnittstelle (! voranstellen zum Ausschließen)" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:165 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:232 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:165 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:232 msgid "I’ll configure this under Network → Firewall" msgstr "I’ll configure this under Network → Firewall" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:194 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:194 msgid "Kernel log modules missing" msgstr "Kernel log modules missing" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:195 -msgid "Kernel netfilter log modules are missing. Install kmod-nf-log-ipv4 and kmod-nf-log-ipv6 (or kmod-nf-log / kmod-nf-log6), then reload the firewall." -msgstr "Kernel-Netfilter-Log-Module fehlen. Installieren Sie kmod-nf-log-ipv4 und kmod-nf-log-ipv6 (oder kmod-nf-log / kmod-nf-log6) und laden Sie dann die Firewall neu." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:195 +msgid "" +"Kernel netfilter log modules are missing. Install kmod-nf-log-ipv4 and kmod-" +"nf-log-ipv6 (or kmod-nf-log / kmod-nf-log6), then reload the firewall." +msgstr "" +"Kernel-Netfilter-Log-Module fehlen. Installieren Sie kmod-nf-log-ipv4 und " +"kmod-nf-log-ipv6 (oder kmod-nf-log / kmod-nf-log6) und laden Sie dann die " +"Firewall neu." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:44 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:44 msgid "Len" msgstr "Länge" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1576 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1613 msgid "Limit" msgstr "Limit" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:210 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:210 msgid "Logging is off on this router" msgstr "Logging is off on this router" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:252 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:256 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:252 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:256 msgid "Manual test (System → Terminal):" msgstr "Manueller Test (System → Terminal):" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:46 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:221 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1547 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1552 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:46 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:221 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1584 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1589 msgid "Message" msgstr "Nachricht" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1643 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1680 msgid "More filters" msgstr "Weitere Filter" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:37 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:37 msgid "Network → Firewall" msgstr "Network → Firewall" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:187 -msgid "No WAN firewall zone found in /etc/config/firewall. Configure zones under" -msgstr "Keine WAN-Firewall-Zone in /etc/config/firewall gefunden. Konfigurieren Sie Zonen unter" +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:187 +msgid "" +"No WAN firewall zone found in /etc/config/firewall. Configure zones under" +msgstr "" +"Keine WAN-Firewall-Zone in /etc/config/firewall gefunden. Konfigurieren Sie " +"Zonen unter" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:185 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:185 msgid "No WAN zone found" msgstr "No WAN zone found" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:163 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:163 msgid "Not now" msgstr "Not now" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:220 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:220 msgid "Nothing changes until you click Enable." msgstr "Nothing changes until you click Enable." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:36 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:36 msgid "OUT" msgstr "AUSGANG" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1567 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1604 msgid "One line" msgstr "Einzeilig" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:206 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:206 msgid "Open firewall zone settings" msgstr "Firewall-Zonen-Einstellungen öffnen" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:211 -msgid "OpenWrt does not write firewall events to the log until you turn logging on. Live View only shows what the firewall already logs — it does not add allow/deny rules." -msgstr "OpenWrt does not write firewall events to the log until you turn logging on. Live View only shows what the firewall already logs — it does not add allow/deny rules." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:211 +msgid "" +"OpenWrt does not write firewall events to the log until you turn logging on. " +"Live View only shows what the firewall already logs — it does not add allow/" +"deny rules." +msgstr "" +"OpenWrt does not write firewall events to the log until you turn logging on. " +"Live View only shows what the firewall already logs — it does not add allow/" +"deny rules." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1595 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1632 msgid "Palette" msgstr "Palette" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:953 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1517 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:989 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1554 msgid "Pause" msgstr "Pause" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:951 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:987 msgid "Paused" msgstr "Pausiert" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:38 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:38 msgid "Proto" msgstr "Protokoll" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1631 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1668 msgid "Protocol — common values" msgstr "Protokoll — häufige Werte" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1613 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1650 msgid "Quick search" msgstr "Schnellsuche" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:91 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:91 msgid "Remove filter" msgstr "Filter entfernen" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:953 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:989 msgid "Resume" msgstr "Fortsetzen" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1588 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1625 msgid "Row tint" msgstr "Zeileneinfärbung" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1678 -msgid "Row tint shows pass/deny row backgrounds when checked. Choose Classic (green/red, default) or Accessible (teal/orange). Action text stays colored either way." -msgstr "Zeilenfärbung zeigt Pass/Deny-Hintergrundfarben, wenn aktiviert. Wählen Sie Klassisch (grün/rot, Standard) oder Barrierefrei (teal/orange). Aktionstext bleibt in beiden Fällen farbig." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1715 +msgid "" +"Row tint shows pass/deny row backgrounds when checked. Choose Classic (green/" +"red, default) or Accessible (teal/orange). Action text stays colored either " +"way." +msgstr "" +"Zeilenfärbung zeigt Pass/Deny-Hintergrundfarben, wenn aktiviert. Wählen Sie " +"Klassisch (grün/rot, Standard) oder Barrierefrei (teal/orange). Aktionstext " +"bleibt in beiden Fällen farbig." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1507 -msgid "Row tint used a local color fallback because the active LuCI theme did not apply pass/deny backgrounds." -msgstr "Die Zeileneinfärbung verwendete einen lokalen Farbfallback, da das aktive LuCI-Theme keine Erlauben/Verweigern-Hintergründe anwendet." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1544 +msgid "" +"Row tint used a local color fallback because the active LuCI theme did not " +"apply pass/deny backgrounds." +msgstr "" +"Die Zeileneinfärbung verwendete einen lokalen Farbfallback, da das aktive " +"LuCI-Theme keine Erlauben/Verweigern-Hintergründe anwendet." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:33 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:33 msgid "Rule" msgstr "Regel" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:41 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:934 +msgid "Rule labels incomplete — map truncated" +msgstr "Rule labels incomplete — map truncated" + +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:938 +msgid "Rule labels unavailable" +msgstr "Rule labels unavailable" + +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:936 +msgid "Rule labels unavailable — temp file failed" +msgstr "Rule labels unavailable — temp file failed" + +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:41 msgid "SPort" msgstr "Quell-Port" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1607 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1644 msgid "Show hostnames" msgstr "Hostnamen anzeigen" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1586 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1623 msgid "Show pass/deny row background colors" msgstr "Pass/Deny-Zeilenhintergrundfarben anzeigen" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1533 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1570 msgid "Simple" msgstr "Einfach" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:39 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:39 msgid "Source" msgstr "Quelle" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1646 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1683 msgid "Source IP contains (! to exclude)" msgstr "Quell-IP enthält (! zum Ausschließen)" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1647 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1684 msgid "Source port (! to exclude)" msgstr "Quell-Port (! zum Ausschließen)" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1674 -msgid "The rate shown for WAN logging is the firewall zone log_limit. OpenWrt defaults to 10/minute when no explicit limit is configured; fwlive does not impose this cap." -msgstr "Die angezeigte Rate für WAN-Protokollierung ist das Zonen-log_limit. OpenWrt-Standard ist 10/Minute ohne explizites Limit; fwlive setzt diese Grenze nicht." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1711 +msgid "" +"The rate shown for WAN logging is the firewall zone log_limit. OpenWrt " +"defaults to 10/minute when no explicit limit is configured; fwlive does not " +"impose this cap." +msgstr "" +"Die angezeigte Rate für WAN-Protokollierung ist das Zonen-log_limit. " +"OpenWrt-Standard ist 10/Minute ohne explizites Limit; fwlive setzt diese " +"Grenze nicht." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1671 -msgid "The table updates automatically when your firewall logs traffic. Use Pause if it moves too fast." -msgstr "Die Tabelle aktualisiert sich automatisch, wenn Ihre Firewall Verkehr protokolliert. Pause nutzen, wenn es zu schnell wird." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1708 +msgid "" +"The table updates automatically when your firewall logs traffic. Use Pause " +"if it moves too fast." +msgstr "" +"Die Tabelle aktualisiert sich automatisch, wenn Ihre Firewall Verkehr " +"protokolliert. Pause nutzen, wenn es zu schnell wird." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1508 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1545 msgid "Theme tint fallback" msgstr "Theme-Farb-Fallback" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:31 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:31 msgid "Time" msgstr "Zeit" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:219 -msgid "Turns on WAN zone drop/reject logging (same as Network → Firewall → wan → Log). Rate-limited by the zone log_limit (OpenWrt default 10/minute). Normal LAN browsing is not logged." -msgstr "Turns on WAN zone drop/reject logging (same as Network → Firewall → wan → Log). Rate-limited by the zone log_limit (OpenWrt default 10/minute). Normal LAN browsing is not logged." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:219 +msgid "" +"Turns on WAN zone drop/reject logging (same as Network → Firewall → wan → " +"Log). Rate-limited by the zone log_limit (OpenWrt default 10/minute). Normal " +"LAN browsing is not logged." +msgstr "" +"Turns on WAN zone drop/reject logging (same as Network → Firewall → wan → " +"Log). Rate-limited by the zone log_limit (OpenWrt default 10/minute). Normal " +"LAN browsing is not logged." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:126 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:126 msgid "Undo:" msgstr "Undo:" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1679 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1716 msgid "Use Detail for all columns (flags, length, raw message)." -msgstr "Verwenden Sie „Detail“ für alle Spalten (Flags, Länge, rohe Nachricht)." +msgstr "" +"Verwenden Sie „Detail“ für alle Spalten (Flags, Länge, rohe Nachricht)." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1521 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1525 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1558 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1562 msgid "View" msgstr "Ansicht" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:591 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:598 msgid "WAN drop/reject logging is off." msgstr "WAN drop/reject logging is off." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:204 -msgid "WAN drop/reject logging is on. Blocked inbound WAN traffic will show up here. Normal LAN browsing will not." -msgstr "WAN drop/reject logging is on. Blocked inbound WAN traffic will show up here. Normal LAN browsing will not." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:204 +msgid "" +"WAN drop/reject logging is on. Blocked inbound WAN traffic will show up " +"here. Normal LAN browsing will not." +msgstr "" +"WAN drop/reject logging is on. Blocked inbound WAN traffic will show up " +"here. Normal LAN browsing will not." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:555 -msgid "WAN drop/reject logging is on. Blocked inbound traffic should appear here as it happens — not normal LAN browsing." -msgstr "WAN drop/reject logging is on. Blocked inbound traffic should appear here as it happens — not normal LAN browsing." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:562 +msgid "" +"WAN drop/reject logging is on. Blocked inbound traffic should appear here as " +"it happens — not normal LAN browsing." +msgstr "" +"WAN drop/reject logging is on. Blocked inbound traffic should appear here as " +"it happens — not normal LAN browsing." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:557 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:564 msgid "WAN logging is already enabled." msgstr "WAN-Protokollierung ist bereits aktiviert." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:88 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:88 msgid "WAN logging on" msgstr "WAN-Protokollierung: EIN" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:94 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:94 msgid "WAN logging on (%s). Click to disable." msgstr "WAN-Protokollierung: EIN (%s). Klicken zum Deaktivieren." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:77 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:77 msgid "WAN logging unavailable: missing kernel log modules" msgstr "WAN-Protokollierung nicht verfügbar: fehlende Kernel-Log-Module" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:70 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:70 msgid "WAN logging unavailable: no WAN zone" msgstr "WAN-Protokollierung nicht verfügbar: keine WAN-Zone" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:203 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:203 msgid "Waiting for firewall events" msgstr "Waiting for firewall events" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:951 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1502 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:987 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1539 msgid "Watching" msgstr "Beobachtet" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1560 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1597 msgid "Wrap" msgstr "Umbrechen" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:123 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:123 msgid "allow/deny rules, LAN logging, or anything else." msgstr "allow/deny rules, LAN logging, or anything else." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:786 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:811 msgid "buffer full" msgstr "Puffer voll" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:81 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:81 msgid "default 10/minute" msgstr "Standard 10/Minute" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:28 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:28 msgid "is" msgstr "ist" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:781 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:806 msgid "loading buffer" msgstr "Lade Puffer" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:881 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:906 msgid "loading…" msgstr "loading…" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:37 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:44 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:37 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:44 msgid "not" msgstr "nicht" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1065 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1101 msgid "not AH" msgstr "nicht AH" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1064 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1100 msgid "not ESP" msgstr "nicht ESP" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1063 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1099 msgid "not GRE" msgstr "nicht GRE" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1060 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1096 msgid "not ICMP" msgstr "nicht ICMP" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1061 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1097 msgid "not ICMPv6" msgstr "nicht ICMPv6" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1062 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1098 msgid "not IGMP" msgstr "nicht IGMP" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1066 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1102 msgid "not SCTP" msgstr "nicht SCTP" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1058 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1094 msgid "not TCP" msgstr "nicht TCP" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1059 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1095 msgid "not UDP" msgstr "nicht UDP" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1623 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1660 msgid "not block" msgstr "nicht blockieren" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1622 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1659 msgid "not drop" msgstr "nicht verwerfen" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1621 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1658 msgid "not pass" msgstr "nicht erlauben" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1624 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1661 msgid "not reject" msgstr "nicht zurückweisen" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1625 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1662 msgid "not unknown" msgstr "nicht unbekannt" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1636 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1673 msgid "or type…" msgstr "oder tippen…" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:788 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:813 msgid "render paused (high rate)" msgstr "Rendering pausiert (hohe Rate)" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:790 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:815 msgid "scroll frozen — scroll to top to follow live" msgstr "scroll frozen — scroll to top to follow live" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:118 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:118 msgid "sets log on the WAN firewall zone and reloads the firewall." msgstr "sets log on the WAN firewall zone and reloads the firewall." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:254 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:258 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:254 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:258 msgid "then ping the router." msgstr "dann den Router anpingen." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:128 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:128 msgid "turn it back off with the WAN logging on control on the watch strip." msgstr "turn it back off with the WAN logging on control on the watch strip." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:506 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:513 msgid "using fw4" msgstr "mit fw4" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:504 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:511 msgid "using iptables" msgstr "mit iptables" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:89 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:89 msgid "· %s" msgstr "· %s" diff --git a/luci-app-fwlive/po/ru/luci-app-fwlive.po b/luci-app-fwlive/po/ru/luci-app-fwlive.po index 1ed67ce2c..a4ccd793e 100644 --- a/luci-app-fwlive/po/ru/luci-app-fwlive.po +++ b/luci-app-fwlive/po/ru/luci-app-fwlive.po @@ -10,600 +10,710 @@ msgstr "" "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" +"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" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:884 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:909 msgid "%d matching · %d/%d stored" msgstr "%d matching · %d/%d stored" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:887 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:912 msgid "0 matching · %d/%d stored" msgstr "0 matching · %d/%d stored" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:250 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:251 msgid "Accessible (teal/orange)" msgstr "Доступный (бирюзовый/оранжевый)" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:32 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:32 msgid "Action" msgstr "Действие" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:594 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:601 msgid "Administrator access is required to disable logging." -msgstr "Для отключения журналирования требуются права администратора." +msgstr "" +"Для отключения журналирования требуются права аÐ" +"´Ð¼Ð¸Ð½Ð¸ÑÑ‚ратора." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:562 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:569 msgid "Administrator access is required to enable logging." -msgstr "Для включения журналирования требуются права администратора." +msgstr "" +"Для включения журналирования требуются права аÐ" +"´Ð¼Ð¸Ð½Ð¸ÑÑ‚ратора." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1050 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1086 msgid "Also seen" msgstr "Также встречаются" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:547 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:583 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:554 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:590 msgid "Another change is staged for the firewall; apply or revert it first." -msgstr "В брандмауэре уже есть другое незафиксированное изменение; сначала примените или отмените его." +msgstr "" +"В брандмауэре уже есть другое незафиксированное изменение; сначала примените " +"или отмените его." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1615 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1652 msgid "Any action" msgstr "Любое действие" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1043 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1079 msgid "Any protocol" msgstr "Любой протокол" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:113 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:113 msgid "Before you enable logging" msgstr "Before you enable logging" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:545 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:552 msgid "Cannot enable logging until kernel log modules are installed." -msgstr "Невозможно включить журналирование, пока не установлены модули журнала ядра." +msgstr "" +"Невозможно включить журналирование, пока не " +"установлены модули журнала ядра." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:116 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:116 msgid "Changes:" msgstr "Changes:" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:249 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:250 msgid "Classic (green/red)" msgstr "Классический (зелёный/красный)" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1599 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1636 msgid "Classic uses green/red; Accessible uses teal/orange" -msgstr "Классический — зелёный/красный; доступный — бирюзовый/оранжевый" +msgstr "" +"Классический — зелёный/красный; доступный — " +"бирюзовый/оранжевый" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:116 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:116 msgid "Clear all" msgstr "Очистить всё" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1655 -msgid "Click a cell to filter · ≠ on a chip to exclude · Ctrl+click a rule for firewall settings · in Simple view, click a row for the full message" -msgstr "Щёлкните ячейку для фильтра · ≠ на чипе для исключения · Ctrl+щелчок по правилу для настроек МЭ · в Простом виде щёлкните строку для полного сообщения" +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1692 +msgid "" +"Click a cell to filter · ≠ on a chip to exclude · Ctrl+click a rule for " +"firewall settings · in Simple view, click a row for the full message" +msgstr "" +"Щёлкните ячейку для фильтра · ≠ на чипе для исключения · Ctrl+щелчок по " +"правилу для настроек МЭ · в Простом виде щёлкните строку для полного " +"сообщения" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1676 -msgid "Click a row (Time or other non-link cells) to see the full log line (Simple view)." -msgstr "Щёлкните строку (Время или другие ячейки без ссылки), чтобы увидеть полную строку журнала (Простой вид)." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1713 +msgid "" +"Click a row (Time or other non-link cells) to see the full log line (Simple " +"view)." +msgstr "" +"Щёлкните строку (Время или другие ячейки без ссылки), чтобы увидеть полную " +"строку журнала (Простой вид)." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:113 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:113 msgid "Click a row for the full message" msgstr "Щёлкните строку для полного сообщения" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1677 -msgid "Click an IP, action, or protocol to filter; use the Protocol menu (or ≠ on a chip) to exclude." -msgstr "Click an IP, action, or protocol to filter; use the Protocol menu (or ≠ on a chip) to exclude." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1714 +msgid "" +"Click an IP, action, or protocol to filter; use the Protocol menu (or ≠ on a " +"chip) to exclude." +msgstr "" +"Click an IP, action, or protocol to filter; use the Protocol menu (or ≠ on a " +"chip) to exclude." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1044 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1080 msgid "Common" msgstr "Частые" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:902 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:927 msgid "Connection lost — retrying…" msgstr "Connection lost — retrying…" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:585 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:592 msgid "Could not disable logging." msgstr "Не удалось отключить журналирование." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:549 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:556 msgid "Could not enable logging." msgstr "Не удалось включить журналирование." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1637 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1674 msgid "Custom protocol (prefix ! to exclude). Overrides the menu when set." msgstr "Свой протокол (! для исключения). Переопределяет меню, если задан." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:42 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:42 msgid "DPort" msgstr "Порт назн." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:40 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:40 msgid "Destination" msgstr "Назначение" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1648 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1685 msgid "Destination IP contains (! to exclude)" msgstr "IP назначения содержит (! для исключения)" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1649 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1686 msgid "Destination port (! to exclude)" msgstr "Порт назначения (! для исключения)" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1540 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1577 msgid "Detail" msgstr "Подробно" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:37 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:37 msgid "Dir" msgstr "Напр." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:85 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:85 msgid "Disabling…" msgstr "Disabling…" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1573 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1610 msgid "Display options" msgstr "Параметры отображения" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1673 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1710 msgid "Display options on the bar set Limit, row tint, palette, and hostnames." -msgstr "Параметры отображения на панели задают лимит, окраску строк, палитру и имена узлов." +msgstr "" +"Параметры отображения на панели задают лимит, окраску строк, палитру и имена " +"узлов." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:121 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:121 msgid "Does not change:" msgstr "Does not change:" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:138 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:138 msgid "Don’t show this again" msgstr "Don’t show this again" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:150 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:230 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:150 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:230 msgid "Enable WAN drop/reject logging" msgstr "Enable WAN drop/reject logging" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:104 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:104 msgid "Enable WAN zone drop/reject logging (same as Network → Firewall)." msgstr "Enable WAN zone drop/reject logging (same as Network → Firewall)." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:107 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:107 msgid "Enable logging" msgstr "Включить журнал" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1672 -msgid "Enable logging turns on WAN zone drop/reject logging only (same as Network → Firewall). It does not add rules or log normal LAN browsing." -msgstr "Enable logging turns on WAN zone drop/reject logging only (same as Network → Firewall). It does not add rules or log normal LAN browsing." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1709 +msgid "" +"Enable logging turns on WAN zone drop/reject logging only (same as Network → " +"Firewall). It does not add rules or log normal LAN browsing." +msgstr "" +"Enable logging turns on WAN zone drop/reject logging only (same as Network → " +"Firewall). It does not add rules or log normal LAN browsing." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:107 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:150 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:230 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:107 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:150 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:230 msgid "Enabling…" msgstr "Enabling…" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1057 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1093 msgid "Exclude" msgstr "Исключить" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:80 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:80 msgid "Exclude instead" msgstr "Исключить вместо этого" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:53 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:71 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:53 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:71 msgid "Filter by %s" msgstr "Фильтр по %s" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:136 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:136 msgid "Filter by interface" msgstr "Фильтр по интерфейсу" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:112 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:112 msgid "Filter logs by rule (hint: %s). Ctrl+click to open firewall settings." -msgstr "Фильтр журналов по правилу (подсказка: %s). Ctrl+клик открывает настройки файрвола." +msgstr "" +"Фильтр журналов по правилу (подсказка: %s). " +"Ctrl+клик открывает настройки файрвола." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1497 -#: applications/luci-app-fwlive/root/usr/share/luci/menu.d/luci-app-fwlive.json:3 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1534 +#: openwrt-feed/luci-app-fwlive/root/usr/share/luci/menu.d/luci-app-fwlive.json:3 msgid "Firewall Live View" msgstr "Просмотр файрвола в реальном времени" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:43 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:43 msgid "Flags" msgstr "Флаги" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:45 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:45 msgid "Flow" msgstr "Поток" -#: applications/luci-app-fwlive/root/usr/share/rpcd/acl.d/luci-app-fwlive.json:3 +#: openwrt-feed/luci-app-fwlive/root/usr/share/rpcd/acl.d/luci-app-fwlive.json:3 msgid "Grant access to firewall live log view" msgstr "Предоставить доступ к живому просмотру журнала межсетевого экрана" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1669 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1706 msgid "Help" msgstr "Справка" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:853 -msgid "High event rate — table refresh is throttled to protect the browser. The buffer still updates; refresh will resume automatically." -msgstr "High event rate — table refresh is throttled to protect the browser. The buffer still updates; refresh will resume automatically." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:878 +msgid "" +"High event rate — table refresh is throttled to protect the browser. The " +"buffer still updates; refresh will resume automatically." +msgstr "" +"High event rate — table refresh is throttled to protect the browser. The " +"buffer still updates; refresh will resume automatically." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1048 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1084 msgid "ICMPv6" msgstr "ICMPv6" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:35 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:35 msgid "IN" msgstr "ВХОД" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1680 -msgid "If Row tint looks missing, the active LuCI theme may omit success/error or info/warn CSS variables; fwlive falls back to local colors (air-gapped, no data leaves the device)." -msgstr "Если цветовая маркировка строк отсутствует, активная тема LuCI может не содержать CSS-переменные успе" +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1717 +msgid "" +"If Row tint looks missing, the active LuCI theme may omit success/error or " +"info/warn CSS variables; fwlive falls back to local colors (air-gapped, no " +"data leaves the device)." +msgstr "" +"Если цветовая маркировка строк отсутствует, " +"активная тема LuCI может не содержать CSS-" +"переменные успе" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:205 -msgid "If the WAN is quiet, wait for probes or use the optional ping check in Help / the enabling-logs guide." -msgstr "If the WAN is quiet, wait for probes or use the optional ping check in Help / the enabling-logs guide." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:205 +msgid "" +"If the WAN is quiet, wait for probes or use the optional ping check in " +"Help / the enabling-logs guide." +msgstr "" +"If the WAN is quiet, wait for probes or use the optional ping check in " +"Help / the enabling-logs guide." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:80 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:80 msgid "Include instead" msgstr "Включить вместо этого" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:34 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:34 msgid "Interface" msgstr "Интерфейс" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1645 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1682 msgid "Interface (prefix ! to exclude)" msgstr "Интерфейс (! в начале для исключения)" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:165 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:232 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:165 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:232 msgid "I’ll configure this under Network → Firewall" msgstr "I’ll configure this under Network → Firewall" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:194 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:194 msgid "Kernel log modules missing" msgstr "Kernel log modules missing" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:195 -msgid "Kernel netfilter log modules are missing. Install kmod-nf-log-ipv4 and kmod-nf-log-ipv6 (or kmod-nf-log / kmod-nf-log6), then reload the firewall." -msgstr "Отсутствуют модули журнала netfilter ядра. Установите kmod-nf-log-ipv4 и kmod-nf-log-ipv6 (или kmod-nf-log / kmod-nf-log6), затем перезагрузите файрвол." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:195 +msgid "" +"Kernel netfilter log modules are missing. Install kmod-nf-log-ipv4 and kmod-" +"nf-log-ipv6 (or kmod-nf-log / kmod-nf-log6), then reload the firewall." +msgstr "" +"Отсутствуют модули журнала netfilter ядра. Установите " +"kmod-nf-log-ipv4 и kmod-nf-log-ipv6 (или kmod-nf-log / kmod-nf-log6), " +"затем перезагрузите файрвол." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:44 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:44 msgid "Len" msgstr "Длина" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1576 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1613 msgid "Limit" msgstr "Лимит" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:210 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:210 msgid "Logging is off on this router" msgstr "Logging is off on this router" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:252 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:256 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:252 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:256 msgid "Manual test (System → Terminal):" msgstr "Ручной тест (Система → Терминал):" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:46 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:221 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1547 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1552 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:46 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:221 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1584 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1589 msgid "Message" msgstr "Сообщение" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1643 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1680 msgid "More filters" msgstr "Больше фильтров" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:37 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:37 msgid "Network → Firewall" msgstr "Network → Firewall" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:187 -msgid "No WAN firewall zone found in /etc/config/firewall. Configure zones under" -msgstr "Зона WAN брандмауэра не найдена в /etc/config/firewall. Настройте зоны в" +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:187 +msgid "" +"No WAN firewall zone found in /etc/config/firewall. Configure zones under" +msgstr "" +"Зона WAN брандмауэра не найдена в /etc/config/firewall. Настройте зоны в" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:185 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:185 msgid "No WAN zone found" msgstr "No WAN zone found" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:163 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:163 msgid "Not now" msgstr "Not now" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:220 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:220 msgid "Nothing changes until you click Enable." msgstr "Nothing changes until you click Enable." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:36 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:36 msgid "OUT" msgstr "ВЫХОД" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1567 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1604 msgid "One line" msgstr "Одна строка" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:206 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:206 msgid "Open firewall zone settings" msgstr "Открыть настройки зон файрвола" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:211 -msgid "OpenWrt does not write firewall events to the log until you turn logging on. Live View only shows what the firewall already logs — it does not add allow/deny rules." -msgstr "OpenWrt does not write firewall events to the log until you turn logging on. Live View only shows what the firewall already logs — it does not add allow/deny rules." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:211 +msgid "" +"OpenWrt does not write firewall events to the log until you turn logging on. " +"Live View only shows what the firewall already logs — it does not add allow/" +"deny rules." +msgstr "" +"OpenWrt does not write firewall events to the log until you turn logging on. " +"Live View only shows what the firewall already logs — it does not add allow/" +"deny rules." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1595 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1632 msgid "Palette" msgstr "Палитра" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:953 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1517 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:989 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1554 msgid "Pause" msgstr "Пауза" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:951 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:987 msgid "Paused" msgstr "Пауза" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:38 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:38 msgid "Proto" msgstr "Протокол" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1631 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1668 msgid "Protocol — common values" msgstr "Протокол — частые значения" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1613 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1650 msgid "Quick search" msgstr "Быстрый поиск" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:91 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:91 msgid "Remove filter" msgstr "Удалить фильтр" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:953 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:989 msgid "Resume" msgstr "Продолжить" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1588 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1625 msgid "Row tint" msgstr "Цвет строк" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1678 -msgid "Row tint shows pass/deny row backgrounds when checked. Choose Classic (green/red, default) or Accessible (teal/orange). Action text stays colored either way." -msgstr "Подсветка строк показывает фоны pass/deny, когда включена. Выберите классический (зелёный/красный, по умолчанию) или доступный (бирюзовый/оранжевый). Цвет текста действия сохраняется в любом случае." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1715 +msgid "" +"Row tint shows pass/deny row backgrounds when checked. Choose Classic (green/" +"red, default) or Accessible (teal/orange). Action text stays colored either " +"way." +msgstr "" +"Подсветка строк показывает фоны pass/deny, когда включена. Выберите " +"классический (зелёный/красный, по умолчанию) или доступный (бирюзовый/" +"оранжевый). Цвет текста действия сохраняется в любом случае." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1507 -msgid "Row tint used a local color fallback because the active LuCI theme did not apply pass/deny backgrounds." -msgstr "Цветовая маркировка строк использовала локальный запасной цвет, так как активная тема LuCI не применяет фон пропуска/отказа." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1544 +msgid "" +"Row tint used a local color fallback because the active LuCI theme did not " +"apply pass/deny backgrounds." +msgstr "" +"Цветовая маркировка строк использовала " +"локальный запасной цвет, так как активная тема " +"LuCI не применяет фон пропуска/отказа." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:33 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:33 msgid "Rule" msgstr "Правило" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:41 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:934 +msgid "Rule labels incomplete — map truncated" +msgstr "Rule labels incomplete — map truncated" + +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:938 +msgid "Rule labels unavailable" +msgstr "Rule labels unavailable" + +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:936 +msgid "Rule labels unavailable — temp file failed" +msgstr "Rule labels unavailable — temp file failed" + +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:41 msgid "SPort" msgstr "Порт ист." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1607 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1644 msgid "Show hostnames" msgstr "Показывать имена " -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1586 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1623 msgid "Show pass/deny row background colors" msgstr "Показывать цвета фона строк pass/deny" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1533 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1570 msgid "Simple" msgstr "Простой" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:39 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:39 msgid "Source" msgstr "Источник" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1646 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1683 msgid "Source IP contains (! to exclude)" msgstr "IP источника содержит (! для исключения)" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1647 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1684 msgid "Source port (! to exclude)" msgstr "Порт источника (! для исключения)" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1674 -msgid "The rate shown for WAN logging is the firewall zone log_limit. OpenWrt defaults to 10/minute when no explicit limit is configured; fwlive does not impose this cap." -msgstr "Показанная частота WAN-журнала — log_limit зоны. По умолчанию OpenWrt: 10/мин без явного лимита; fwlive сам лимит не задаёт." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1711 +msgid "" +"The rate shown for WAN logging is the firewall zone log_limit. OpenWrt " +"defaults to 10/minute when no explicit limit is configured; fwlive does not " +"impose this cap." +msgstr "" +"Показанная частота WAN-журнала — log_limit зоны. По " +"умолчанию OpenWrt: 10/мин без явного лимита; fwlive " +"сам лимит не задаёт." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1671 -msgid "The table updates automatically when your firewall logs traffic. Use Pause if it moves too fast." -msgstr "Таблица обновляется автоматически, когда файрвол пишет в журнал. Используйте Паузу, если слишком быстро." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1708 +msgid "" +"The table updates automatically when your firewall logs traffic. Use Pause " +"if it moves too fast." +msgstr "" +"Таблица обновляется автоматически, когда " +"файрвол пишет в журнал. Используйте Паузу, если " +"слишком быстро." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1508 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1545 msgid "Theme tint fallback" msgstr "Запасной цвет темы" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:31 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:31 msgid "Time" msgstr "Время" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:219 -msgid "Turns on WAN zone drop/reject logging (same as Network → Firewall → wan → Log). Rate-limited by the zone log_limit (OpenWrt default 10/minute). Normal LAN browsing is not logged." -msgstr "Turns on WAN zone drop/reject logging (same as Network → Firewall → wan → Log). Rate-limited by the zone log_limit (OpenWrt default 10/minute). Normal LAN browsing is not logged." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:219 +msgid "" +"Turns on WAN zone drop/reject logging (same as Network → Firewall → wan → " +"Log). Rate-limited by the zone log_limit (OpenWrt default 10/minute). Normal " +"LAN browsing is not logged." +msgstr "" +"Turns on WAN zone drop/reject logging (same as Network → Firewall → wan → " +"Log). Rate-limited by the zone log_limit (OpenWrt default 10/minute). Normal " +"LAN browsing is not logged." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:126 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:126 msgid "Undo:" msgstr "Undo:" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1679 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1716 msgid "Use Detail for all columns (flags, length, raw message)." -msgstr "Используйте «Подробно» для всех столбцов (флаги, длина, исходное сообщение)." +msgstr "" +"Используйте «Подробно» для всех столбцов (флаги, длина, исходное сообщение)." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1521 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1525 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1558 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1562 msgid "View" msgstr "Вид" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:591 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:598 msgid "WAN drop/reject logging is off." msgstr "WAN drop/reject logging is off." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:204 -msgid "WAN drop/reject logging is on. Blocked inbound WAN traffic will show up here. Normal LAN browsing will not." -msgstr "WAN drop/reject logging is on. Blocked inbound WAN traffic will show up here. Normal LAN browsing will not." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:204 +msgid "" +"WAN drop/reject logging is on. Blocked inbound WAN traffic will show up " +"here. Normal LAN browsing will not." +msgstr "" +"WAN drop/reject logging is on. Blocked inbound WAN traffic will show up " +"here. Normal LAN browsing will not." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:555 -msgid "WAN drop/reject logging is on. Blocked inbound traffic should appear here as it happens — not normal LAN browsing." -msgstr "WAN drop/reject logging is on. Blocked inbound traffic should appear here as it happens — not normal LAN browsing." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:562 +msgid "" +"WAN drop/reject logging is on. Blocked inbound traffic should appear here as " +"it happens — not normal LAN browsing." +msgstr "" +"WAN drop/reject logging is on. Blocked inbound traffic should appear here as " +"it happens — not normal LAN browsing." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:557 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:564 msgid "WAN logging is already enabled." msgstr "WAN-журналирование уже включено." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:88 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:88 msgid "WAN logging on" msgstr "WAN-журнал: ВКЛ" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:94 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:94 msgid "WAN logging on (%s). Click to disable." msgstr "WAN-журнал: ВКЛ (%s). Нажмите, чтобы отключить." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:77 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:77 msgid "WAN logging unavailable: missing kernel log modules" -msgstr "WAN-журналирование недоступно: отсутствуют модули журнала ядра" +msgstr "" +"WAN-журналирование недоступно: отсутствуют модули " +"журнала ядра" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:70 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:70 msgid "WAN logging unavailable: no WAN zone" msgstr "WAN-журналирование недоступно: нет зоны WAN" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:203 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:203 msgid "Waiting for firewall events" msgstr "Waiting for firewall events" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:951 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1502 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:987 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1539 msgid "Watching" msgstr "Наблюдение" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1560 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1597 msgid "Wrap" msgstr "Перенос" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:123 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:123 msgid "allow/deny rules, LAN logging, or anything else." msgstr "allow/deny rules, LAN logging, or anything else." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:786 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:811 msgid "buffer full" msgstr "буфер заполнен" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:81 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:81 msgid "default 10/minute" msgstr "по умолчанию 10/мин" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:28 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:28 msgid "is" msgstr "есть" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:781 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:806 msgid "loading buffer" msgstr "загрузка буфера" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:881 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:906 msgid "loading…" msgstr "loading…" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:37 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:44 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:37 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:44 msgid "not" msgstr "не" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1065 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1101 msgid "not AH" msgstr "не AH" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1064 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1100 msgid "not ESP" msgstr "не ESP" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1063 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1099 msgid "not GRE" msgstr "не GRE" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1060 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1096 msgid "not ICMP" msgstr "не ICMP" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1061 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1097 msgid "not ICMPv6" msgstr "не ICMPv6" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1062 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1098 msgid "not IGMP" msgstr "не IGMP" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1066 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1102 msgid "not SCTP" msgstr "не SCTP" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1058 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1094 msgid "not TCP" msgstr "не TCP" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1059 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1095 msgid "not UDP" msgstr "не UDP" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1623 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1660 msgid "not block" msgstr "не блокировать" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1622 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1659 msgid "not drop" msgstr "не отбрасывать" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1621 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1658 msgid "not pass" msgstr "не пропускать" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1624 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1661 msgid "not reject" msgstr "не отклонять" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1625 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1662 msgid "not unknown" msgstr "не неизвестно" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1636 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1673 msgid "or type…" msgstr "или введите…" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:788 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:813 msgid "render paused (high rate)" msgstr "рендеринг приостановлен (высокая частота)" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:790 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:815 msgid "scroll frozen — scroll to top to follow live" msgstr "scroll frozen — scroll to top to follow live" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:118 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:118 msgid "sets log on the WAN firewall zone and reloads the firewall." msgstr "sets log on the WAN firewall zone and reloads the firewall." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:254 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:258 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:254 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:258 msgid "then ping the router." msgstr "затем выполните ping маршрутизатора." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:128 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:128 msgid "turn it back off with the WAN logging on control on the watch strip." msgstr "turn it back off with the WAN logging on control on the watch strip." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:506 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:513 msgid "using fw4" msgstr "используется fw4" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:504 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:511 msgid "using iptables" msgstr "используется iptables" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:89 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:89 msgid "· %s" msgstr "· %s" diff --git a/luci-app-fwlive/po/templates/luci-app-fwlive.pot b/luci-app-fwlive/po/templates/luci-app-fwlive.pot index 346e25162..e98cf0a41 100644 --- a/luci-app-fwlive/po/templates/luci-app-fwlive.pot +++ b/luci-app-fwlive/po/templates/luci-app-fwlive.pot @@ -1,636 +1,648 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:892 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:909 msgid "%d matching · %d/%d stored" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:895 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:912 msgid "0 matching · %d/%d stored" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:250 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:251 msgid "Accessible (teal/orange)" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:32 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:32 msgid "Action" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:594 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:601 msgid "Administrator access is required to disable logging." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:562 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:569 msgid "Administrator access is required to enable logging." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1058 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1086 msgid "Also seen" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:547 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:583 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:554 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:590 msgid "Another change is staged for the firewall; apply or revert it first." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1623 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1652 msgid "Any action" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1051 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1079 msgid "Any protocol" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:113 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:113 msgid "Before you enable logging" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:545 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:552 msgid "Cannot enable logging until kernel log modules are installed." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:116 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:116 msgid "Changes:" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:249 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:250 msgid "Classic (green/red)" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1607 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1636 msgid "Classic uses green/red; Accessible uses teal/orange" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:116 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:116 msgid "Clear all" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1663 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1692 msgid "" "Click a cell to filter · ≠ on a chip to exclude · Ctrl+click a rule for " "firewall settings · in Simple view, click a row for the full message" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1684 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1713 msgid "" "Click a row (Time or other non-link cells) to see the full log line (Simple " "view)." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:113 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:113 msgid "Click a row for the full message" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1685 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1714 msgid "" "Click an IP, action, or protocol to filter; use the Protocol menu (or ≠ on a " "chip) to exclude." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1052 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1080 msgid "Common" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:910 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:927 msgid "Connection lost — retrying…" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:585 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:592 msgid "Could not disable logging." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:549 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:556 msgid "Could not enable logging." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1645 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1674 msgid "Custom protocol (prefix ! to exclude). Overrides the menu when set." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:42 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:42 msgid "DPort" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:40 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:40 msgid "Destination" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1656 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1685 msgid "Destination IP contains (! to exclude)" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1657 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1686 msgid "Destination port (! to exclude)" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1548 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1577 msgid "Detail" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:37 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:37 msgid "Dir" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:85 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:85 msgid "Disabling…" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1581 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1610 msgid "Display options" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1681 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1710 msgid "Display options on the bar set Limit, row tint, palette, and hostnames." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:121 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:121 msgid "Does not change:" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:138 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:138 msgid "Don’t show this again" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:150 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:230 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:150 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:230 msgid "Enable WAN drop/reject logging" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:104 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:104 msgid "Enable WAN zone drop/reject logging (same as Network → Firewall)." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:107 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:107 msgid "Enable logging" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1680 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1709 msgid "" "Enable logging turns on WAN zone drop/reject logging only (same as Network → " "Firewall). It does not add rules or log normal LAN browsing." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:107 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:150 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:230 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:107 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:150 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:230 msgid "Enabling…" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1065 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1093 msgid "Exclude" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:80 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:80 msgid "Exclude instead" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:53 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:71 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:53 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:71 msgid "Filter by %s" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:136 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:136 msgid "Filter by interface" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:112 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:112 msgid "Filter logs by rule (hint: %s). Ctrl+click to open firewall settings." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1505 -#: applications/luci-app-fwlive/root/usr/share/luci/menu.d/luci-app-fwlive.json:3 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1534 +#: openwrt-feed/luci-app-fwlive/root/usr/share/luci/menu.d/luci-app-fwlive.json:3 msgid "Firewall Live View" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:43 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:43 msgid "Flags" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:45 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:45 msgid "Flow" msgstr "" -#: applications/luci-app-fwlive/root/usr/share/rpcd/acl.d/luci-app-fwlive.json:3 +#: openwrt-feed/luci-app-fwlive/root/usr/share/rpcd/acl.d/luci-app-fwlive.json:3 msgid "Grant access to firewall live log view" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1677 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1706 msgid "Help" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:861 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:878 msgid "" "High event rate — table refresh is throttled to protect the browser. The " "buffer still updates; refresh will resume automatically." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1056 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1084 msgid "ICMPv6" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:35 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:35 msgid "IN" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1688 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1717 msgid "" "If Row tint looks missing, the active LuCI theme may omit success/error or " "info/warn CSS variables; fwlive falls back to local colors (air-gapped, no " "data leaves the device)." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:205 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:205 msgid "" "If the WAN is quiet, wait for probes or use the optional ping check in " "Help / the enabling-logs guide." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:80 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:80 msgid "Include instead" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:34 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:34 msgid "Interface" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1653 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1682 msgid "Interface (prefix ! to exclude)" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:165 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:232 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:165 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:232 msgid "I’ll configure this under Network → Firewall" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:194 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:194 msgid "Kernel log modules missing" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:195 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:195 msgid "" "Kernel netfilter log modules are missing. Install kmod-nf-log-ipv4 and kmod-" "nf-log-ipv6 (or kmod-nf-log / kmod-nf-log6), then reload the firewall." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:44 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:44 msgid "Len" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1584 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1613 msgid "Limit" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:210 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:210 msgid "Logging is off on this router" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:252 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:256 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:252 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:256 msgid "Manual test (System → Terminal):" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:46 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:221 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1555 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1560 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:46 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:221 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1584 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1589 msgid "Message" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1651 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1680 msgid "More filters" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:37 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:37 msgid "Network → Firewall" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:187 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:187 msgid "" "No WAN firewall zone found in /etc/config/firewall. Configure zones under" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:185 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:185 msgid "No WAN zone found" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:163 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:163 msgid "Not now" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:220 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:220 msgid "Nothing changes until you click Enable." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:36 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:36 msgid "OUT" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1575 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1604 msgid "One line" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:206 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:206 msgid "Open firewall zone settings" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:211 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:211 msgid "" "OpenWrt does not write firewall events to the log until you turn logging on. " "Live View only shows what the firewall already logs — it does not add allow/" "deny rules." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1603 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1632 msgid "Palette" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:961 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1525 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:989 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1554 msgid "Pause" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:959 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:987 msgid "Paused" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:38 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:38 msgid "Proto" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1639 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1668 msgid "Protocol — common values" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1621 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1650 msgid "Quick search" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:91 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:91 msgid "Remove filter" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:961 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:989 msgid "Resume" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1596 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1625 msgid "Row tint" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1686 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1715 msgid "" "Row tint shows pass/deny row backgrounds when checked. Choose Classic (green/" "red, default) or Accessible (teal/orange). Action text stays colored either " "way." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1515 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1544 msgid "" "Row tint used a local color fallback because the active LuCI theme did not " "apply pass/deny backgrounds." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:33 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:33 msgid "Rule" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:41 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:934 +msgid "Rule labels incomplete — map truncated" +msgstr "" + +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:938 +msgid "Rule labels unavailable" +msgstr "" + +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:936 +msgid "Rule labels unavailable — temp file failed" +msgstr "" + +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:41 msgid "SPort" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1615 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1644 msgid "Show hostnames" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1594 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1623 msgid "Show pass/deny row background colors" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1541 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1570 msgid "Simple" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:39 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:39 msgid "Source" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1654 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1683 msgid "Source IP contains (! to exclude)" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1655 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1684 msgid "Source port (! to exclude)" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1682 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1711 msgid "" "The rate shown for WAN logging is the firewall zone log_limit. OpenWrt " "defaults to 10/minute when no explicit limit is configured; fwlive does not " "impose this cap." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1679 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1708 msgid "" "The table updates automatically when your firewall logs traffic. Use Pause " "if it moves too fast." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1516 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1545 msgid "Theme tint fallback" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:31 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:31 msgid "Time" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:219 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:219 msgid "" "Turns on WAN zone drop/reject logging (same as Network → Firewall → wan → " "Log). Rate-limited by the zone log_limit (OpenWrt default 10/minute). Normal " "LAN browsing is not logged." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:126 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:126 msgid "Undo:" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1687 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1716 msgid "Use Detail for all columns (flags, length, raw message)." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1529 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1533 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1558 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1562 msgid "View" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:591 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:598 msgid "WAN drop/reject logging is off." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:204 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:204 msgid "" "WAN drop/reject logging is on. Blocked inbound WAN traffic will show up " "here. Normal LAN browsing will not." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:555 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:562 msgid "" "WAN drop/reject logging is on. Blocked inbound traffic should appear here as " "it happens — not normal LAN browsing." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:557 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:564 msgid "WAN logging is already enabled." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:88 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:88 msgid "WAN logging on" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:94 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:94 msgid "WAN logging on (%s). Click to disable." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:77 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:77 msgid "WAN logging unavailable: missing kernel log modules" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:70 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:70 msgid "WAN logging unavailable: no WAN zone" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:203 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:203 msgid "Waiting for firewall events" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:959 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1510 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:987 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1539 msgid "Watching" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1568 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1597 msgid "Wrap" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:123 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:123 msgid "allow/deny rules, LAN logging, or anything else." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:794 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:811 msgid "buffer full" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:81 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:81 msgid "default 10/minute" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:28 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:28 msgid "is" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:789 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:806 msgid "loading buffer" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:889 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:906 msgid "loading…" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:37 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:44 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:37 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:44 msgid "not" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1073 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1101 msgid "not AH" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1072 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1100 msgid "not ESP" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1071 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1099 msgid "not GRE" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1068 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1096 msgid "not ICMP" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1069 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1097 msgid "not ICMPv6" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1070 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1098 msgid "not IGMP" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1074 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1102 msgid "not SCTP" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1066 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1094 msgid "not TCP" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1067 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1095 msgid "not UDP" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1631 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1660 msgid "not block" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1630 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1659 msgid "not drop" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1629 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1658 msgid "not pass" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1632 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1661 msgid "not reject" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1633 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1662 msgid "not unknown" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1644 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1673 msgid "or type…" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:796 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:813 msgid "render paused (high rate)" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:798 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:815 msgid "scroll frozen — scroll to top to follow live" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:118 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:118 msgid "sets log on the WAN firewall zone and reloads the firewall." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:254 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:258 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:254 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:258 msgid "then ping the router." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:128 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:128 msgid "turn it back off with the WAN logging on control on the watch strip." msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:506 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:513 msgid "using fw4" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:504 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:511 msgid "using iptables" msgstr "" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:89 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:89 msgid "· %s" msgstr "" diff --git a/luci-app-fwlive/po/zh_Hans/luci-app-fwlive.po b/luci-app-fwlive/po/zh_Hans/luci-app-fwlive.po index a844b91df..c0951c659 100644 --- a/luci-app-fwlive/po/zh_Hans/luci-app-fwlive.po +++ b/luci-app-fwlive/po/zh_Hans/luci-app-fwlive.po @@ -12,598 +12,672 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:884 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:909 msgid "%d matching · %d/%d stored" msgstr "%d matching · %d/%d stored" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:887 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:912 msgid "0 matching · %d/%d stored" msgstr "0 matching · %d/%d stored" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:250 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:251 msgid "Accessible (teal/orange)" msgstr "可访问(青绿/橙色)" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:32 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:32 msgid "Action" msgstr "动作" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:594 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:601 msgid "Administrator access is required to disable logging." msgstr "需要管理员权限才能" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:562 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:569 msgid "Administrator access is required to enable logging." msgstr "需要管理员权限才能开启日志记录。" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1050 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1086 msgid "Also seen" msgstr "其他常见" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:547 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:583 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:554 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:590 msgid "Another change is staged for the firewall; apply or revert it first." msgstr "防火墙另有未提交的更改;请先应用或还原。" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1615 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1652 msgid "Any action" msgstr "所有动作" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1043 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1079 msgid "Any protocol" msgstr "任意协议" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:113 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:113 msgid "Before you enable logging" msgstr "Before you enable logging" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:545 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:552 msgid "Cannot enable logging until kernel log modules are installed." msgstr "å" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:116 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:116 msgid "Changes:" msgstr "Changes:" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:249 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:250 msgid "Classic (green/red)" msgstr "经" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1599 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1636 msgid "Classic uses green/red; Accessible uses teal/orange" msgstr "经" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:116 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:116 msgid "Clear all" msgstr "æ" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1655 -msgid "Click a cell to filter · ≠ on a chip to exclude · Ctrl+click a rule for firewall settings · in Simple view, click a row for the full message" -msgstr "点击单元格筛选 · 芯片上的 ≠ 排除 · Ctrl+点击规则打开防火墙设置 · 在简单视图中点击行查看完整消息" +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1692 +msgid "" +"Click a cell to filter · ≠ on a chip to exclude · Ctrl+click a rule for " +"firewall settings · in Simple view, click a row for the full message" +msgstr "" +"点击单元格筛选 · 芯片上的 ≠ 排除 · Ctrl+点击规则打开防火墙设置 · 在简单视图中" +"点击行查看完整消息" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1676 -msgid "Click a row (Time or other non-link cells) to see the full log line (Simple view)." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1713 +msgid "" +"Click a row (Time or other non-link cells) to see the full log line (Simple " +"view)." msgstr "点击一行(时间或其他非链接单元格)可查看完整日志行(简单视图)。" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:113 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:113 msgid "Click a row for the full message" msgstr "点击行可查看完整消息" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1677 -msgid "Click an IP, action, or protocol to filter; use the Protocol menu (or ≠ on a chip) to exclude." -msgstr "Click an IP, action, or protocol to filter; use the Protocol menu (or ≠ on a chip) to exclude." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1714 +msgid "" +"Click an IP, action, or protocol to filter; use the Protocol menu (or ≠ on a " +"chip) to exclude." +msgstr "" +"Click an IP, action, or protocol to filter; use the Protocol menu (or ≠ on a " +"chip) to exclude." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1044 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1080 msgid "Common" msgstr "常用" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:902 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:927 msgid "Connection lost — retrying…" msgstr "Connection lost — retrying…" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:585 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:592 msgid "Could not disable logging." msgstr "无法" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:549 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:556 msgid "Could not enable logging." msgstr "无法开启日志记录。" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1637 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1674 msgid "Custom protocol (prefix ! to exclude). Overrides the menu when set." msgstr "自定义协议(! 排除)。有内容时覆盖菜单。" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:42 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:42 msgid "DPort" msgstr "目标端口" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:40 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:40 msgid "Destination" msgstr "目标地址" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1648 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1685 msgid "Destination IP contains (! to exclude)" msgstr "目标 IP å" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1649 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1686 msgid "Destination port (! to exclude)" msgstr "目标端口(! 表示排除)" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1540 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1577 msgid "Detail" msgstr "详细" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:37 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:37 msgid "Dir" msgstr "方向" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:85 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:85 msgid "Disabling…" msgstr "Disabling…" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1573 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1610 msgid "Display options" msgstr "显示选项" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1673 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1710 msgid "Display options on the bar set Limit, row tint, palette, and hostnames." msgstr "栏上的显示选项可设置行数限制、行着色、调色板和主机名。" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:121 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:121 msgid "Does not change:" msgstr "Does not change:" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:138 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:138 msgid "Don’t show this again" msgstr "Don’t show this again" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:150 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:230 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:150 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:230 msgid "Enable WAN drop/reject logging" msgstr "Enable WAN drop/reject logging" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:104 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:104 msgid "Enable WAN zone drop/reject logging (same as Network → Firewall)." msgstr "Enable WAN zone drop/reject logging (same as Network → Firewall)." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:107 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:107 msgid "Enable logging" msgstr "开启日志" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1672 -msgid "Enable logging turns on WAN zone drop/reject logging only (same as Network → Firewall). It does not add rules or log normal LAN browsing." -msgstr "Enable logging turns on WAN zone drop/reject logging only (same as Network → Firewall). It does not add rules or log normal LAN browsing." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1709 +msgid "" +"Enable logging turns on WAN zone drop/reject logging only (same as Network → " +"Firewall). It does not add rules or log normal LAN browsing." +msgstr "" +"Enable logging turns on WAN zone drop/reject logging only (same as Network → " +"Firewall). It does not add rules or log normal LAN browsing." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:107 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:150 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:230 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:107 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:150 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:230 msgid "Enabling…" msgstr "Enabling…" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1057 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1093 msgid "Exclude" msgstr "排除" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:80 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:80 msgid "Exclude instead" msgstr "改为排除" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:53 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:71 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:53 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:71 msgid "Filter by %s" msgstr "按 %s 筛选" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:136 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:136 msgid "Filter by interface" msgstr "按接口筛选" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:112 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:112 msgid "Filter logs by rule (hint: %s). Ctrl+click to open firewall settings." msgstr "按规则筛选日志(提示:%s)。Ctrl+点击可打开防火墙设置。" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1497 -#: applications/luci-app-fwlive/root/usr/share/luci/menu.d/luci-app-fwlive.json:3 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1534 +#: openwrt-feed/luci-app-fwlive/root/usr/share/luci/menu.d/luci-app-fwlive.json:3 msgid "Firewall Live View" msgstr "防火墙实时视图" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:43 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:43 msgid "Flags" msgstr "标志" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:45 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:45 msgid "Flow" msgstr "流" -#: applications/luci-app-fwlive/root/usr/share/rpcd/acl.d/luci-app-fwlive.json:3 +#: openwrt-feed/luci-app-fwlive/root/usr/share/rpcd/acl.d/luci-app-fwlive.json:3 msgid "Grant access to firewall live log view" msgstr "授予防火墙实时日志视图的访问权限" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1669 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1706 msgid "Help" msgstr "帮助" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:853 -msgid "High event rate — table refresh is throttled to protect the browser. The buffer still updates; refresh will resume automatically." -msgstr "High event rate — table refresh is throttled to protect the browser. The buffer still updates; refresh will resume automatically." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:878 +msgid "" +"High event rate — table refresh is throttled to protect the browser. The " +"buffer still updates; refresh will resume automatically." +msgstr "" +"High event rate — table refresh is throttled to protect the browser. The " +"buffer still updates; refresh will resume automatically." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1048 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1084 msgid "ICMPv6" msgstr "ICMPv6" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:35 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:35 msgid "IN" msgstr "IN" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1680 -msgid "If Row tint looks missing, the active LuCI theme may omit success/error or info/warn CSS variables; fwlive falls back to local colors (air-gapped, no data leaves the device)." -msgstr "如果行染色看起来缺失,当前 LuCI 主题可能未提供成功/错误 CSS 变量;fwlive 会回退到本地颜色(隔离运行,数据不会离开本机)。" +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1717 +msgid "" +"If Row tint looks missing, the active LuCI theme may omit success/error or " +"info/warn CSS variables; fwlive falls back to local colors (air-gapped, no " +"data leaves the device)." +msgstr "" +"如果行染色看起来缺失,当前 LuCI 主题可能未提供成功/错误 CSS 变量;fwlive " +"会回退到本地颜色(隔离运行,数据不会离开本机)。" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:205 -msgid "If the WAN is quiet, wait for probes or use the optional ping check in Help / the enabling-logs guide." -msgstr "If the WAN is quiet, wait for probes or use the optional ping check in Help / the enabling-logs guide." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:205 +msgid "" +"If the WAN is quiet, wait for probes or use the optional ping check in " +"Help / the enabling-logs guide." +msgstr "" +"If the WAN is quiet, wait for probes or use the optional ping check in " +"Help / the enabling-logs guide." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:80 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:80 msgid "Include instead" msgstr "改为å" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:34 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:34 msgid "Interface" msgstr "接口" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1645 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1682 msgid "Interface (prefix ! to exclude)" msgstr "接口(! 前缀表示排除)" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:165 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:232 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:165 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:232 msgid "I’ll configure this under Network → Firewall" msgstr "I’ll configure this under Network → Firewall" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:194 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:194 msgid "Kernel log modules missing" msgstr "Kernel log modules missing" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:195 -msgid "Kernel netfilter log modules are missing. Install kmod-nf-log-ipv4 and kmod-nf-log-ipv6 (or kmod-nf-log / kmod-nf-log6), then reload the firewall." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:195 +msgid "" +"Kernel netfilter log modules are missing. Install kmod-nf-log-ipv4 and kmod-" +"nf-log-ipv6 (or kmod-nf-log / kmod-nf-log6), then reload the firewall." msgstr "缺少å" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:44 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:44 msgid "Len" msgstr "长度" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1576 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1613 msgid "Limit" msgstr "限制" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:210 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:210 msgid "Logging is off on this router" msgstr "Logging is off on this router" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:252 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:256 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:252 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:256 msgid "Manual test (System → Terminal):" msgstr "手动测试(系统 → 终端):" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:46 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:221 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1547 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1552 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:46 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:221 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1584 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1589 msgid "Message" msgstr "消息" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1643 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1680 msgid "More filters" msgstr "更多筛选" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:37 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/links.js:37 msgid "Network → Firewall" msgstr "Network → Firewall" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:187 -msgid "No WAN firewall zone found in /etc/config/firewall. Configure zones under" +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:187 +msgid "" +"No WAN firewall zone found in /etc/config/firewall. Configure zones under" msgstr "在 /etc/config/firewall 中未找到 WAN 防火墙区域。请在以下位置配置区域" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:185 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:185 msgid "No WAN zone found" msgstr "No WAN zone found" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:163 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:163 msgid "Not now" msgstr "Not now" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:220 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:220 msgid "Nothing changes until you click Enable." msgstr "Nothing changes until you click Enable." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:36 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:36 msgid "OUT" msgstr "出接口" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1567 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1604 msgid "One line" msgstr "单行" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:206 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:206 msgid "Open firewall zone settings" msgstr "打开防火墙区域设置" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:211 -msgid "OpenWrt does not write firewall events to the log until you turn logging on. Live View only shows what the firewall already logs — it does not add allow/deny rules." -msgstr "OpenWrt does not write firewall events to the log until you turn logging on. Live View only shows what the firewall already logs — it does not add allow/deny rules." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:211 +msgid "" +"OpenWrt does not write firewall events to the log until you turn logging on. " +"Live View only shows what the firewall already logs — it does not add allow/" +"deny rules." +msgstr "" +"OpenWrt does not write firewall events to the log until you turn logging on. " +"Live View only shows what the firewall already logs — it does not add allow/" +"deny rules." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1595 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1632 msgid "Palette" msgstr "Palette" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:953 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1517 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:989 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1554 msgid "Pause" msgstr "暂停" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:951 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:987 msgid "Paused" msgstr "已暂停" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:38 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:38 msgid "Proto" msgstr "协议" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1631 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1668 msgid "Protocol — common values" msgstr "协议 — 常用值" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1613 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1650 msgid "Quick search" msgstr "快速搜索" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:91 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:91 msgid "Remove filter" msgstr "移除筛选" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:953 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:989 msgid "Resume" msgstr "ç»§ç»­" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1588 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1625 msgid "Row tint" msgstr "行染色" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1678 -msgid "Row tint shows pass/deny row backgrounds when checked. Choose Classic (green/red, default) or Accessible (teal/orange). Action text stays colored either way." -msgstr "勾选后行着色显示放行/拒绝行背景。可选经典(绿/红,默认)或无障碍(青绿/橙)。操作文本在两种模式下均保持着色。" +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1715 +msgid "" +"Row tint shows pass/deny row backgrounds when checked. Choose Classic (green/" +"red, default) or Accessible (teal/orange). Action text stays colored either " +"way." +msgstr "" +"勾选后行着色显示放行/拒绝行背景。可选经典(绿/红,默认)或无障碍(青绿/橙)。" +"操作文本在两种模式下均保持着色。" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1507 -msgid "Row tint used a local color fallback because the active LuCI theme did not apply pass/deny backgrounds." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1544 +msgid "" +"Row tint used a local color fallback because the active LuCI theme did not " +"apply pass/deny backgrounds." msgstr "行染色使用了本地颜色回退,因为当前 LuCI 主题未应用放行/拒绝背景色。" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:33 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:33 msgid "Rule" msgstr "规则" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:41 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:934 +msgid "Rule labels incomplete — map truncated" +msgstr "Rule labels incomplete — map truncated" + +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:938 +msgid "Rule labels unavailable" +msgstr "Rule labels unavailable" + +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:936 +msgid "Rule labels unavailable — temp file failed" +msgstr "Rule labels unavailable — temp file failed" + +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:41 msgid "SPort" msgstr "源端口" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1607 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1644 msgid "Show hostnames" msgstr "显示主机名" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1586 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1623 msgid "Show pass/deny row background colors" msgstr "显示放行/拒绝行背景色" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1533 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1570 msgid "Simple" msgstr "简洁" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:39 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:39 msgid "Source" msgstr "源地址" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1646 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1683 msgid "Source IP contains (! to exclude)" msgstr "源 IP å" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1647 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1684 msgid "Source port (! to exclude)" msgstr "源端口(! 表示排除)" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1674 -msgid "The rate shown for WAN logging is the firewall zone log_limit. OpenWrt defaults to 10/minute when no explicit limit is configured; fwlive does not impose this cap." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1711 +msgid "" +"The rate shown for WAN logging is the firewall zone log_limit. OpenWrt " +"defaults to 10/minute when no explicit limit is configured; fwlive does not " +"impose this cap." msgstr "WAN 日志显示的速率是防火墙区域的 log_limit。未" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1671 -msgid "The table updates automatically when your firewall logs traffic. Use Pause if it moves too fast." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1708 +msgid "" +"The table updates automatically when your firewall logs traffic. Use Pause " +"if it moves too fast." msgstr "防火墙写" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1508 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1545 msgid "Theme tint fallback" msgstr "主题着色回退" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:31 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/table.js:31 msgid "Time" msgstr "时间" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:219 -msgid "Turns on WAN zone drop/reject logging (same as Network → Firewall → wan → Log). Rate-limited by the zone log_limit (OpenWrt default 10/minute). Normal LAN browsing is not logged." -msgstr "Turns on WAN zone drop/reject logging (same as Network → Firewall → wan → Log). Rate-limited by the zone log_limit (OpenWrt default 10/minute). Normal LAN browsing is not logged." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:219 +msgid "" +"Turns on WAN zone drop/reject logging (same as Network → Firewall → wan → " +"Log). Rate-limited by the zone log_limit (OpenWrt default 10/minute). Normal " +"LAN browsing is not logged." +msgstr "" +"Turns on WAN zone drop/reject logging (same as Network → Firewall → wan → " +"Log). Rate-limited by the zone log_limit (OpenWrt default 10/minute). Normal " +"LAN browsing is not logged." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:126 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:126 msgid "Undo:" msgstr "Undo:" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1679 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1716 msgid "Use Detail for all columns (flags, length, raw message)." msgstr "使用「详细」可查看全部列(标志、长度、原始消息)。" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1521 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1525 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1558 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1562 msgid "View" msgstr "视图" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:591 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:598 msgid "WAN drop/reject logging is off." msgstr "WAN drop/reject logging is off." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:204 -msgid "WAN drop/reject logging is on. Blocked inbound WAN traffic will show up here. Normal LAN browsing will not." -msgstr "WAN drop/reject logging is on. Blocked inbound WAN traffic will show up here. Normal LAN browsing will not." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:204 +msgid "" +"WAN drop/reject logging is on. Blocked inbound WAN traffic will show up " +"here. Normal LAN browsing will not." +msgstr "" +"WAN drop/reject logging is on. Blocked inbound WAN traffic will show up " +"here. Normal LAN browsing will not." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:555 -msgid "WAN drop/reject logging is on. Blocked inbound traffic should appear here as it happens — not normal LAN browsing." -msgstr "WAN drop/reject logging is on. Blocked inbound traffic should appear here as it happens — not normal LAN browsing." +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:562 +msgid "" +"WAN drop/reject logging is on. Blocked inbound traffic should appear here as " +"it happens — not normal LAN browsing." +msgstr "" +"WAN drop/reject logging is on. Blocked inbound traffic should appear here as " +"it happens — not normal LAN browsing." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:557 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:564 msgid "WAN logging is already enabled." msgstr "WAN 日志已处于开启状态。" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:88 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:88 msgid "WAN logging on" msgstr "WAN 日志:开" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:94 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:94 msgid "WAN logging on (%s). Click to disable." msgstr "WAN 日志:开(%s)。点击可" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:77 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:77 msgid "WAN logging unavailable: missing kernel log modules" msgstr "WAN 日志不可用:缺少å" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:70 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:70 msgid "WAN logging unavailable: no WAN zone" msgstr "WAN 日志不可用:无 WAN 区域" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:203 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:203 msgid "Waiting for firewall events" msgstr "Waiting for firewall events" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:951 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1502 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:987 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1539 msgid "Watching" msgstr "监视中" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1560 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1597 msgid "Wrap" msgstr "自动换行" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:123 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:123 msgid "allow/deny rules, LAN logging, or anything else." msgstr "allow/deny rules, LAN logging, or anything else." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:786 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:811 msgid "buffer full" msgstr "缓冲区已满" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:81 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:81 msgid "default 10/minute" msgstr "默认 10 条/分钟" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:28 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:28 msgid "is" msgstr "是" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:781 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:806 msgid "loading buffer" msgstr "正在加载缓冲区" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:881 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:906 msgid "loading…" msgstr "loading…" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:37 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:44 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:37 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/chips.js:44 msgid "not" msgstr "非" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1065 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1101 msgid "not AH" msgstr "非 AH" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1064 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1100 msgid "not ESP" msgstr "非 ESP" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1063 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1099 msgid "not GRE" msgstr "非 GRE" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1060 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1096 msgid "not ICMP" msgstr "非 ICMP" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1061 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1097 msgid "not ICMPv6" msgstr "非 ICMPv6" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1062 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1098 msgid "not IGMP" msgstr "非 IGMP" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1066 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1102 msgid "not SCTP" msgstr "非 SCTP" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1058 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1094 msgid "not TCP" msgstr "非 TCP" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1059 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1095 msgid "not UDP" msgstr "非 UDP" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1623 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1660 msgid "not block" msgstr "非阻止" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1622 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1659 msgid "not drop" msgstr "非丢弃" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1621 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1658 msgid "not pass" msgstr "非放行" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1624 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1661 msgid "not reject" msgstr "非拒绝" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1625 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1662 msgid "not unknown" msgstr "非未知" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1636 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:1673 msgid "or type…" msgstr "或输入…" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:788 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:813 msgid "render paused (high rate)" msgstr "渲染暂停(速率过高)" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:790 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:815 msgid "scroll frozen — scroll to top to follow live" msgstr "scroll frozen — scroll to top to follow live" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:118 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:118 msgid "sets log on the WAN firewall zone and reloads the firewall." msgstr "sets log on the WAN firewall zone and reloads the firewall." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:254 -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:258 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:254 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:258 msgid "then ping the router." msgstr "然后 ping 路由器。" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:128 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:128 msgid "turn it back off with the WAN logging on control on the watch strip." msgstr "turn it back off with the WAN logging on control on the watch strip." -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:506 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:513 msgid "using fw4" msgstr "使用 fw4" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:504 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:511 msgid "using iptables" msgstr "使用 iptables" -#: applications/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:89 +#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:89 msgid "· %s" msgstr "· %s" diff --git a/luci-app-fwlive/root/usr/libexec/fwlive-log-filter.sh b/luci-app-fwlive/root/usr/libexec/fwlive-log-filter.sh index 7db140ccc..2f3226ef6 100755 --- a/luci-app-fwlive/root/usr/libexec/fwlive-log-filter.sh +++ b/luci-app-fwlive/root/usr/libexec/fwlive-log-filter.sh @@ -23,5 +23,8 @@ input="$(cat)" [ -n "$input" ] || input='{"log":[]}' printf '%s' '{"log":[' -jsonfilter -s "$input" -e '@.log[*]' 2>/dev/null | _fwlive_filter_json_entries +# Prefer stdin over -s: Linux MAX_ARG_STRLEN is 128KiB; a raised logd ring +# (or paused FETCH_LINES_MAX poll) can exceed that and make jsonfilter fail +# while this script still printed {"log":[]} and exited 0 (#234). +printf '%s' "$input" | jsonfilter -e '@.log[*]' 2>/dev/null | _fwlive_filter_json_entries printf '%s' ']}' diff --git a/luci-app-fwlive/root/usr/libexec/fwlive-logging.sh b/luci-app-fwlive/root/usr/libexec/fwlive-logging.sh index 6fa2f7915..154aa7eed 100755 --- a/luci-app-fwlive/root/usr/libexec/fwlive-logging.sh +++ b/luci-app-fwlive/root/usr/libexec/fwlive-logging.sh @@ -62,18 +62,20 @@ json_escape() { }' } -# Production lock dir must be root-owned with no group/other write (#204). +# Production lock dir must be owned by euid with no group/other write (#204). +# Avoid GNU/BusyBox `stat -c` — stock OpenWrt omits FEATURE_STAT_FORMAT (#232). wan_log_lock_dir_safe() { dir="$1" [ -n "$dir" ] || return 1 [ -L "$dir" ] && return 1 [ -d "$dir" ] || return 1 - u=$(stat -c '%u' "$dir" 2>/dev/null) || return 1 - [ "$u" = "0" ] || return 1 - m=$(stat -c '%a' "$dir" 2>/dev/null) || return 1 - o=$((m % 10)) - g=$(( (m / 10) % 10 )) - [ $((o & 2)) -eq 0 ] && [ $((g & 2)) -eq 0 ] + # POSIX -O: true when the effective uid owns the directory (rpcd → root). + # shellcheck disable=SC3067 # BusyBox/dash implement -O; SC3067 is overly strict + [ -O "$dir" ] || return 1 + # Fail closed if group or other write is set. find -perm is on BusyBox; + # -prune limits the walk to this directory only. + _writable=$(find "$dir" -prune \( -perm -020 -o -perm -002 \) -print 2>/dev/null) || return 1 + [ -z "$_writable" ] } # Acquire the exclusive logging lock on fd 9. Blocks until free; fails closed @@ -97,7 +99,12 @@ acquire_wan_log_lock() { chmod 0600 "$WAN_LOG_LOCK_FILE" 2>/dev/null || true chown 0:0 "$WAN_LOG_LOCK_FILE" 2>/dev/null || true [ -L "$WAN_LOG_LOCK_FILE" ] && return 1 - exec 9>"$WAN_LOG_LOCK_FILE" 2>/dev/null || return 1 + # Probe in a subshell first: a failed `exec` redirection aborts a POSIX + # non-interactive shell outright, so `|| return 1` on the real exec would + # never run — and `2>/dev/null` on the same exec would permanently + # silence this process's stderr on the success path (#244). + ( exec 9>>"$WAN_LOG_LOCK_FILE" ) 2>/dev/null || return 1 + exec 9>>"$WAN_LOG_LOCK_FILE" flock 9 2>/dev/null || { exec 9>&- return 1 diff --git a/luci-app-fwlive/root/usr/libexec/rpcd/fwlive b/luci-app-fwlive/root/usr/libexec/rpcd/fwlive index 35d2105c1..da151eae7 100755 --- a/luci-app-fwlive/root/usr/libexec/rpcd/fwlive +++ b/luci-app-fwlive/root/usr/libexec/rpcd/fwlive @@ -44,6 +44,13 @@ slug_key() { echo "$1" | tr '[:upper:]' '[:lower:]' | tr ' _' '--' } +# Cap rules JSON size so a huge ruleset cannot unbound an rpcd reply (#229). +RULES_MAP_MAX_KEYS=512 +RULES_MAP_MAX_BYTES=65536 +# Same wall-clock bound as nft for iptables-save / ip6tables-save (#229). +# Overridable for host tests (e.g. FWLIVE_IPTABLES_TIMEOUT=1). +IPTABLES_TIMEOUT="${FWLIVE_IPTABLES_TIMEOUT:-5}" + map_add() { key="$1" val="$2" @@ -54,10 +61,21 @@ map_add() { # Uses anchored pattern "\"\":" to avoid substring false positives # ("foo" vs "foobar") and value false positives ("see foo"). # Quoting "$esc_key" makes the match literal (no glob escaping needed). + # Callers apply UCI, then labeled (!fw4:) prefixes, then unlabeled + # cosmetics so first-wins prefers authoritative names (#230). case "$OUT" in *"\"$esc_key\":"*) return 0 ;; esac esc_val=$(printf '%s' "$val" | json_escape) + _pair_len=$(( ${#esc_key} + ${#esc_val} + 5 )) + _next_len=$(( ${#OUT} + _pair_len )) + [ -n "$OUT" ] && _next_len=$((_next_len + 1)) + if [ "${_map_keys:-0}" -ge "$RULES_MAP_MAX_KEYS" ] || \ + [ "$_next_len" -gt "$RULES_MAP_MAX_BYTES" ]; then + _map_overflow=1 + return 0 + fi + _map_keys=$(( ${_map_keys:-0} + 1 )) if [ -n "$OUT" ]; then OUT="${OUT}," fi @@ -114,22 +132,26 @@ run_with_timeout() { if command -v timeout >/dev/null 2>&1; then timeout "$secs" "$@" 2>/dev/null else - "$@" 2>/dev/null + # Fail closed (#229): never run unbounded when timeout is absent. + return 127 fi } map_log_prefix_entry() { prefix="$1" comment="$2" + pass="${3:-all}" label='' if [ -n "$comment" ] && is_uci_style_name "$comment"; then label="$comment" fi - # Single normalization site is map_prefix_with_label; idempotent so - # double-normalization is safe but this redundant call is removed. [ -n "$prefix" ] || return 0 + case "$pass" in + labeled) [ -n "$label" ] || return 0 ;; + unlabeled) [ -z "$label" ] || return 0 ;; + esac map_prefix_with_label "$prefix" "$label" } @@ -154,7 +176,10 @@ $(uci_rule_names) EOF } +# pass=labeled|unlabeled|all — labeled before unlabeled so !fw4: beats +# an earlier cosmetic for the same prefix under first-wins (#230). map_from_nft_stream() { + pass="${1:-all}" while IFS= read -r line; do # Capture [^"]* plus escaped-quote units (\"...) so a log prefix or # comment containing an escaped quote is not truncated at the quote. @@ -172,14 +197,22 @@ map_from_nft_stream() { esac if [ -n "$prefix" ]; then + case "$pass" in + labeled) [ -n "$label" ] || continue ;; + unlabeled) [ -z "$label" ] || continue ;; + esac map_prefix_with_label "$prefix" "$label" elif [ -n "$label" ]; then + case "$pass" in + unlabeled) continue ;; + esac map_prefix_with_label "$label" "$label" fi done } map_from_iptables_save_stream() { + pass="${1:-all}" while IFS= read -r line; do case "$line" in -*) ;; @@ -188,7 +221,7 @@ map_from_iptables_save_stream() { prefix=$(echo "$line" | sed -n 's/.*--log-prefix "\([^"\\]*\(\\.[^"\\]*\)*\)".*/\1/p') comment=$(echo "$line" | sed -n 's/.*--comment "\([^"\\]*\(\\.[^"\\]*\)*\)".*/\1/p') [ -n "$prefix" ] || continue - map_log_prefix_entry "$prefix" "$comment" + map_log_prefix_entry "$prefix" "$comment" "$pass" done } @@ -239,65 +272,85 @@ _fwlive_mktemp() { build_rules_map() { OUT='' + _map_keys=0 + _map_overflow='' + _enrich_error='' backend=$(detect_firewall_backend) + # UCI first, then labeled stream prefixes, then unlabeled cosmetics + # (#230). First-wins keeps UCI over nft and !fw4: over cosmetic. map_uci_rule_names case "$backend" in nft) - _tmp=$(_fwlive_mktemp fwlive-nft) || _tmp='' - if [ -n "$_tmp" ]; then - # nft ruleset write to /tmp (tmpfs on OpenWrt, RAM) is - # duration-bounded by NFT_TIMEOUT (5s) for nft only; - # iptables-save/ip6tables-save below run with no timeout. - # Size is not bounded by code; typical firewall ruleset - # dumps are <100KB and the file is removed immediately - # after parsing so RAM impact is negligible in practice. - # No pipeline subshell: accumulation stays in main shell via - # redirect for global first-wins dedup. - if nft_list_ruleset >"$_tmp" 2>/dev/null; then - map_from_nft_stream <"$_tmp" + _rules_dump=$(_fwlive_mktemp fwlive-nft) || _rules_dump='' + if [ -n "$_rules_dump" ]; then + # Dumps land on /tmp (tmpfs). Duration bounded by + # NFT_TIMEOUT / IPTABLES_TIMEOUT; key/byte caps in map_add. + if nft_list_ruleset >"$_rules_dump" 2>/dev/null; then + map_from_nft_stream labeled <"$_rules_dump" + map_from_nft_stream unlabeled <"$_rules_dump" fi - rm -f "$_tmp" + rm -f "$_rules_dump" + else + _enrich_error='mktemp_failed' fi ;; iptables) - _tmp=$(_fwlive_mktemp fwlive-ipt) || _tmp='' - if [ -n "$_tmp" ]; then - if iptables-save >"$_tmp" 2>/dev/null; then - map_from_iptables_save_stream <"$_tmp" + _rules_dump=$(_fwlive_mktemp fwlive-ipt) || _rules_dump='' + if [ -n "$_rules_dump" ]; then + if run_with_timeout "$IPTABLES_TIMEOUT" iptables-save >"$_rules_dump" 2>/dev/null; then + map_from_iptables_save_stream labeled <"$_rules_dump" + map_from_iptables_save_stream unlabeled <"$_rules_dump" fi - rm -f "$_tmp" + rm -f "$_rules_dump" + else + _enrich_error='mktemp_failed' fi if command -v ip6tables-save >/dev/null 2>&1; then - _tmp=$(_fwlive_mktemp fwlive-ip6t) || _tmp='' - if [ -n "$_tmp" ]; then - if ip6tables-save >"$_tmp" 2>/dev/null; then - map_from_iptables_save_stream <"$_tmp" + _rules_dump=$(_fwlive_mktemp fwlive-ip6t) || _rules_dump='' + if [ -n "$_rules_dump" ]; then + if run_with_timeout "$IPTABLES_TIMEOUT" ip6tables-save >"$_rules_dump" 2>/dev/null; then + map_from_iptables_save_stream labeled <"$_rules_dump" + map_from_iptables_save_stream unlabeled <"$_rules_dump" fi - rm -f "$_tmp" + rm -f "$_rules_dump" + elif [ -z "$_enrich_error" ]; then + _enrich_error='mktemp_failed' fi fi ;; esac - printf '{"backend":"%s","rules":{%s}}' "$backend" "$OUT" + _rules_json="{\"backend\":\"$backend\",\"rules\":{$OUT}" + if [ -n "$_enrich_error" ]; then + _rules_json="${_rules_json},\"error\":\"${_enrich_error}\"" + elif [ -n "$_map_overflow" ]; then + _rules_json="${_rules_json},\"error\":\"rules_truncated\"" + fi + printf '%s}' "$_rules_json" } rulesmap_from_iptables_file() { file="$1" OUT='' + _map_keys=0 + _map_overflow='' [ "$file" = "$RULESMAP_IPTABLES_FILE" ] || return 1 [ -f "$file" ] || return 1 - map_from_iptables_save_stream < "$file" - printf '{"backend":"iptables","rules":{%s}}' "$OUT" + map_from_iptables_save_stream labeled < "$file" + map_from_iptables_save_stream unlabeled < "$file" + _rules_json="{\"backend\":\"iptables\",\"rules\":{$OUT}" + if [ -n "$_map_overflow" ]; then + _rules_json="${_rules_json},\"error\":\"rules_truncated\"" + fi + printf '%s}' "$_rules_json" } poll_clamp_lines() { # Contract: non-digit input returns default 50; digit strings are - # clamped to 1..POLL_LINES_MAX with leading zeros stripped. The - # caller (poll_lines_from_input) already filters non-digits, but this - # helper is now directly testable so it validates itself. + # clamped to 1..POLL_LINES_MAX with leading zeros stripped. Validates + # itself so __selftest can call it without jshn. _val="$1" case "$_val" in ''|*[!0-9]*) @@ -305,19 +358,19 @@ poll_clamp_lines() { return 0 ;; esac - _tmp=$(printf '%s' "$_val" | sed 's/^0*//') - if [ -z "$_tmp" ]; then + _digits=$(printf '%s' "$_val" | sed 's/^0*//') + if [ -z "$_digits" ]; then printf '%s' "50" return 0 fi - if [ "${#_tmp}" -gt "${#POLL_LINES_MAX}" ]; then + if [ "${#_digits}" -gt "${#POLL_LINES_MAX}" ]; then printf '%s' "$POLL_LINES_MAX" return 0 fi - if [ "$_tmp" -gt "$POLL_LINES_MAX" ]; then + if [ "$_digits" -gt "$POLL_LINES_MAX" ]; then printf '%s' "$POLL_LINES_MAX" else - printf '%s' "$_tmp" + printf '%s' "$_digits" fi } diff --git a/luci-theme-footstrap/Makefile b/luci-theme-footstrap/Makefile index 81b895ec9..140e8cd0d 100644 --- a/luci-theme-footstrap/Makefile +++ b/luci-theme-footstrap/Makefile @@ -17,7 +17,7 @@ LUCI_NAME:=luci-theme-footstrap FOOTSTRAP_VERSION?= ifneq ($(FOOTSTRAP_VERSION),) PKG_VERSION:=$(FOOTSTRAP_VERSION) -PKG_RELEASE:=49 +PKG_RELEASE:=50 endif LUCI_TITLE:=Footstrap Theme diff --git a/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js b/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js index 606e63eed..0a7b71986 100644 --- a/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js +++ b/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js @@ -673,8 +673,39 @@ function build() { ]; + /* ---- the catalogue this router has not got ---- + * + * The theme's translations are their own packages since 0.14.4, the way every `luci-app-*` + * ships them, and nothing in a package manager can read `uci luci.main.lang` to fetch the right + * one: apk learns it from `install-if` against `luci-i18n-base-` (owfeed.yml), opkg has no + * conditional form of that at all, and a router upgraded from 0.14.3 through the feed simply + * loses the catalogue that used to ride inside the theme (issue #41). `install.sh` covers its + * own path; this covers the one nobody ran a script on. + * + * ASKED OF THE PAGE, not of the package list: the theme has no ubus call of its own and must not + * grow one for this. `_()` returns its argument unchanged when no catalogue answers, so asking + * for a string the catalogue certainly carries is the whole test. + * + * `Layout` is that string — a caption this very form renders, present in every catalogue under `po/`. A word + * that only LOOKS certain is worse than no check: `Appearance` is in the source but obsolete in + * the catalogues (`#~ msgid`), so testing it reported "not translated" on a router whose + * Russian catalogue was installed and working. + * + * The language comes from the document, not from `L.env`, which carries no language field at + * all — the dispatcher stamps `` and that is what the page knows. + * + * Nothing is shown on an English or `auto` router, where there is no catalogue to miss. */ + const lang = (document.documentElement.getAttribute('lang') || '').trim(); + const untranslated = lang && lang !== 'en' && lang !== 'auto' && + _('Layout', 'footstrap') === 'Layout'; + const missing = untranslated ? E('div', { 'class': 'fs-ap-verrow fs-ap-i18n' }, [ + E('span', {}, [ _('This theme is not translated on this router yet.', 'footstrap') + ' ' ]), + E('code', {}, [ 'luci-i18n-footstrap-' + lang ]) + ]) : ''; + defaults.push(E('div', { 'class': 'fs-ap-footer' }, [ - E('div', { 'class': 'fs-ap-verrow' }, [ versionLink ]) + E('div', { 'class': 'fs-ap-verrow' }, [ versionLink ]), + missing ])); /* not .cbi-section: inside a tab pane that is a card within a card, and the stock tabs put diff --git a/luci-theme-footstrap/po/es/footstrap.po b/luci-theme-footstrap/po/es/footstrap.po index 1354f2f0e..f212e1856 100644 --- a/luci-theme-footstrap/po/es/footstrap.po +++ b/luci-theme-footstrap/po/es/footstrap.po @@ -11,145 +11,144 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 3.9\n" -#: htdocs/luci-static/resources/fs-appearance.js:238 +#: htdocs/luci-static/resources/fs-appearance.js:401 msgctxt "footstrap" msgid "Accent" msgstr "Acento" -#: htdocs/luci-static/resources/fs-appearance.js:361 +#: htdocs/luci-static/resources/fs-appearance.js:481 msgctxt "footstrap" msgid "As in file" msgstr "Como en el archivo" -#: ucode/template/themes/footstrap/sysauth.ut:70 +#: ucode/template/themes/footstrap/sysauth.ut:96 msgid "Authorization Required" msgstr "Se requiere autorización" -#: htdocs/luci-static/resources/fs-appearance.js:172 +#: htdocs/luci-static/resources/fs-appearance.js:334 msgctxt "footstrap" msgid "Auto" msgstr "Auto" -#: htdocs/luci-static/resources/fs-appearance.js:205 +#: htdocs/luci-static/resources/fs-appearance.js:365 msgctxt "footstrap" msgid "Auto-collapse" msgstr "Colapso automático" -#: htdocs/luci-static/resources/fs-appearance.js:656 +#: htdocs/luci-static/resources/fs-appearance.js:773 msgctxt "footstrap" msgid "Background" msgstr "Fondo" -#: htdocs/luci-static/resources/fs-widgets.js:259 +#: htdocs/luci-static/resources/fs-appearance.js:185 msgctxt "footstrap" msgid "Barely visible %s" msgstr "Apenas visible %s" -#: htdocs/luci-static/resources/fs-appearance.js:294 +#: htdocs/luci-static/resources/fs-appearance.js:424 msgctxt "footstrap" msgid "Borders" msgstr "Bordes" -#: htdocs/luci-static/resources/fs-appearance.js:275 +#: htdocs/luci-static/resources/fs-appearance.js:421 msgctxt "footstrap" msgid "Cards" msgstr "Tarjetas" -#: htdocs/luci-static/resources/fs-appearance.js:331 +#: htdocs/luci-static/resources/fs-appearance.js:454 msgctxt "footstrap" msgid "Choose SVG" msgstr "Elegir SVG" -#: htdocs/luci-static/resources/fs-appearance.js:324 +#: htdocs/luci-static/resources/fs-appearance.js:447 msgctxt "footstrap" msgid "Choose image" msgstr "Elegir imagen" -#: htdocs/luci-static/resources/fs-widgets.js:258 +#: htdocs/luci-static/resources/fs-appearance.js:184 msgctxt "footstrap" msgid "Clearly visible %s" msgstr "Bien visible %s" -#: htdocs/luci-static/resources/fs-chrome.js:415 -#: ucode/template/themes/footstrap/header.ut:150 +#: htdocs/luci-static/resources/fs-chrome.js:430 +#: ucode/template/themes/footstrap/header.ut:138 msgid "Collapse menu" msgstr "Contraer menú" -#: htdocs/luci-static/resources/fs-appearance.js:344 -#: htdocs/luci-static/resources/fs-appearance.js:653 +#: htdocs/luci-static/resources/fs-appearance.js:465 +#: htdocs/luci-static/resources/fs-appearance.js:770 msgctxt "footstrap" msgid "Colours" msgstr "Colores" -#: htdocs/luci-static/resources/fs-appearance.js:188 +#: htdocs/luci-static/resources/fs-appearance.js:350 msgctxt "footstrap" msgid "Compact" msgstr "Compacto" -#: htdocs/luci-static/resources/fs-appearance.js:545 +#: htdocs/luci-static/resources/fs-appearance.js:644 msgctxt "footstrap" msgid "Confirm reset" msgstr "Confirmar restablecimiento" -#: htdocs/luci-static/resources/fs-widgets.js:268 +#: htdocs/luci-static/resources/fs-appearance.js:193 msgctxt "footstrap" msgid "Contrast %s:1 (WCAG AA wants %s:1 here)" msgstr "Contraste %s:1 (WCAG AA exige aquí %s:1)" -#: htdocs/luci-static/resources/fs-appearance.js:281 +#: htdocs/luci-static/resources/fs-appearance.js:422 msgctxt "footstrap" msgid "Controls" msgstr "Controles" -#: htdocs/luci-static/resources/fs-prefs.js:1099 -#: htdocs/luci-static/resources/fs-prefs.js:1101 +#: htdocs/luci-static/resources/fs-assets.js:32 msgctxt "footstrap" msgid "Could not process the image." msgstr "No se pudo procesar la imagen." -#: htdocs/luci-static/resources/fs-appearance.js:521 +#: htdocs/luci-static/resources/fs-appearance.js:624 msgctxt "footstrap" msgid "Could not save the default. Reload the page and try again." msgstr "" "No se pudo guardar la configuración predeterminada. Recargue la página e " "inténtelo de nuevo." -#: htdocs/luci-static/resources/fs-appearance.js:256 +#: htdocs/luci-static/resources/fs-appearance.js:404 msgctxt "footstrap" msgid "Danger" msgstr "Peligro" -#: htdocs/luci-static/resources/fs-appearance.js:174 +#: htdocs/luci-static/resources/fs-appearance.js:336 msgctxt "footstrap" msgid "Dark" msgstr "Oscuro" -#: htdocs/luci-static/resources/fs-appearance.js:657 +#: htdocs/luci-static/resources/fs-appearance.js:774 msgctxt "footstrap" msgid "Defaults" msgstr "Predeterminados" -#: htdocs/luci-static/resources/fs-appearance.js:187 +#: htdocs/luci-static/resources/fs-appearance.js:349 msgctxt "footstrap" msgid "Density" msgstr "Densidad" -#: htdocs/luci-static/resources/fs-appearance.js:341 +#: htdocs/luci-static/resources/fs-appearance.js:462 msgctxt "footstrap" msgid "Dim" msgstr "Oscurecimiento" -#: htdocs/luci-static/resources/fs-widgets.js:261 +#: htdocs/luci-static/resources/fs-appearance.js:187 msgctxt "footstrap" msgid "Easy to read %s" msgstr "Se lee bien %s" -#: htdocs/luci-static/resources/fs-chrome.js:415 +#: htdocs/luci-static/resources/fs-chrome.js:430 msgid "Expand menu" msgstr "Expandir menú" -#: htdocs/luci-static/resources/fs-appearance.js:366 -#: htdocs/luci-static/resources/fs-appearance.js:451 +#: htdocs/luci-static/resources/fs-appearance.js:486 +#: htdocs/luci-static/resources/fs-appearance.js:564 msgctxt "footstrap" msgid "File" msgstr "Archivo" @@ -162,80 +161,81 @@ msgstr "" "Valores predeterminados de Apariencia de Footstrap para el router (Guardar " "como predeterminado) y subida del fondo de inicio de sesión y del patrón" -#: ucode/template/themes/footstrap/partials/notices.ut:25 +#: ucode/template/themes/footstrap/partials/notices.ut:24 msgid "Go to firmware upgrade..." msgstr "Ir a la actualización del firmware..." -#: ucode/template/themes/footstrap/partials/notices.ut:16 +#: ucode/template/themes/footstrap/partials/notices.ut:15 msgid "Go to password configuration..." msgstr "Ir a la configuración de contraseñas..." -#: htdocs/luci-static/resources/fs-appearance.js:244 +#: htdocs/luci-static/resources/fs-appearance.js:402 msgctxt "footstrap" msgid "Good" msgstr "Correcto" -#: htdocs/luci-static/resources/fs-widgets.js:263 +#: htdocs/luci-static/resources/fs-appearance.js:189 msgctxt "footstrap" msgid "Hard to read %s — large text only" msgstr "Se lee mal %s: solo texto grande" -#: htdocs/luci-static/resources/fs-appearance.js:652 +#: htdocs/luci-static/resources/fs-appearance.js:769 msgctxt "footstrap" msgid "Interface" msgstr "Interfaz" -#: ucode/template/themes/footstrap/sysauth.ut:60 +#: ucode/template/themes/footstrap/sysauth.ut:78 msgid "Invalid username and/or password! Please try again." msgstr "¡Nombre de usuario y/o contraseña incorrectos! Inténtelo de nuevo." -#: ucode/template/themes/footstrap/partials/notices.ut:31 +#: ucode/template/themes/footstrap/partials/notices.ut:30 msgid "JavaScript required!" msgstr "¡Se requiere JavaScript!" -#: htdocs/luci-static/resources/fs-appearance.js:204 +#: htdocs/luci-static/resources/fs-appearance.js:364 msgctxt "footstrap" msgid "Keep open" msgstr "Mantener abierto" -#: htdocs/luci-static/resources/fs-appearance.js:190 +#: htdocs/luci-static/resources/fs-appearance.js:352 msgctxt "footstrap" msgid "Large" msgstr "Grande" -#: htdocs/luci-static/resources/fs-appearance.js:166 +#: htdocs/luci-static/resources/fs-appearance.js:328 +#: htdocs/luci-static/resources/fs-appearance.js:700 msgctxt "footstrap" msgid "Layout" msgstr "Diseño" -#: htdocs/luci-static/resources/fs-appearance.js:173 +#: htdocs/luci-static/resources/fs-appearance.js:335 msgctxt "footstrap" msgid "Light" msgstr "Claro" -#: ucode/template/themes/footstrap/sysauth.ut:142 +#: ucode/template/themes/footstrap/sysauth.ut:162 msgid "Log in" msgstr "Iniciar sesión" -#: ucode/template/themes/footstrap/partials/logout.ut:11 -#: ucode/template/themes/footstrap/partials/logout.ut:13 +#: ucode/template/themes/footstrap/partials/logout.ut:8 +#: ucode/template/themes/footstrap/partials/logout.ut:15 msgid "Log out" msgstr "Cerrar sesión" -#: ucode/template/themes/footstrap/partials/footer.ut:27 +#: ucode/template/themes/footstrap/partials/footer.ut:25 msgid "Lua compatibility mode active" msgstr "Modo de compatibilidad Lua activo" -#: htdocs/luci-static/resources/fs-overview.js:32 +#: htdocs/luci-static/resources/fs-overview.js:22 msgid "Memory" msgstr "Memoria" -#: ucode/template/themes/footstrap/header.ut:147 -#: ucode/template/themes/footstrap/header.ut:158 +#: ucode/template/themes/footstrap/header.ut:135 +#: ucode/template/themes/footstrap/header.ut:146 msgid "Menu" msgstr "Menú" -#: ucode/template/themes/footstrap/partials/notices.ut:23 +#: ucode/template/themes/footstrap/partials/notices.ut:22 msgid "" "No changes to settings will be stored and are lost after rebooting. This " "mode should only be used to install a firmware upgrade" @@ -244,178 +244,177 @@ msgstr "" "reiniciar el sistema. Este modo solo debe usarse para instalar una " "actualización de firmware" -#: htdocs/luci-static/resources/fs-search.js:327 +#: htdocs/luci-static/resources/fs-search.js:324 msgctxt "footstrap" msgid "No pages found" msgstr "No se encontraron páginas" -#: ucode/template/themes/footstrap/partials/notices.ut:13 +#: ucode/template/themes/footstrap/partials/notices.ut:12 msgid "No password set!" msgstr "¡No se ha establecido ninguna contraseña!" -#: htdocs/luci-static/resources/fs-appearance.js:189 +#: htdocs/luci-static/resources/fs-appearance.js:351 msgctxt "footstrap" msgid "Normal" msgstr "Normal" -#: htdocs/luci-static/resources/fs-appearance.js:449 +#: htdocs/luci-static/resources/fs-appearance.js:562 msgctxt "footstrap" msgid "Off" msgstr "Apagado" -#: htdocs/luci-static/resources/fs-search.js:244 +#: htdocs/luci-static/resources/fs-search.js:235 msgctxt "footstrap" msgid "Pages" msgstr "Páginas" -#: htdocs/luci-static/resources/fs-appearance.js:177 -#: htdocs/luci-static/resources/fs-widgets.js:216 +#: htdocs/luci-static/resources/fs-appearance.js:151 +#: htdocs/luci-static/resources/fs-appearance.js:339 msgctxt "footstrap" msgid "Palette" msgstr "Paleta" -#: ucode/template/themes/footstrap/sysauth.ut:82 +#: ucode/template/themes/footstrap/sysauth.ut:108 msgid "Password" msgstr "Contraseña" -#: htdocs/luci-static/resources/fs-appearance.js:352 -#: htdocs/luci-static/resources/fs-appearance.js:450 +#: htdocs/luci-static/resources/fs-appearance.js:472 +#: htdocs/luci-static/resources/fs-appearance.js:563 msgctxt "footstrap" msgid "Pattern" msgstr "Patrón" -#: htdocs/luci-static/resources/fs-prefs.js:945 -#: htdocs/luci-static/resources/fs-prefs.js:947 +#: htdocs/luci-static/resources/fs-assets.js:33 msgctxt "footstrap" msgid "Please choose an SVG file." msgstr "Elija un archivo SVG." -#: htdocs/luci-static/resources/fs-prefs.js:1131 +#: htdocs/luci-static/resources/fs-assets.js:323 msgctxt "footstrap" msgid "Please choose an image file." msgstr "Por favor, seleccione un archivo de imagen." -#: ucode/template/themes/footstrap/sysauth.ut:72 +#: ucode/template/themes/footstrap/sysauth.ut:98 msgid "Please enter your username and password." msgstr "Por favor, ingrese su nombre de usuario y contraseña." -#: htdocs/luci-static/resources/fs-search.js:326 +#: htdocs/luci-static/resources/fs-search.js:323 msgctxt "footstrap" msgid "Recently visited" msgstr "Visitado recientemente" -#: htdocs/luci-static/resources/fs-appearance.js:326 -#: htdocs/luci-static/resources/fs-appearance.js:333 +#: htdocs/luci-static/resources/fs-appearance.js:449 +#: htdocs/luci-static/resources/fs-appearance.js:456 msgctxt "footstrap" msgid "Remove" msgstr "Eliminar" -#: htdocs/luci-static/resources/fs-appearance.js:483 -#: htdocs/luci-static/resources/fs-appearance.js:556 +#: htdocs/luci-static/resources/fs-appearance.js:588 +#: htdocs/luci-static/resources/fs-appearance.js:655 msgctxt "footstrap" msgid "Reset to default" msgstr "Restablecer a valores predeterminados" -#: htdocs/luci-static/resources/fs-appearance.js:478 -#: htdocs/luci-static/resources/fs-appearance.js:555 +#: htdocs/luci-static/resources/fs-appearance.js:584 +#: htdocs/luci-static/resources/fs-appearance.js:654 msgctxt "footstrap" msgid "Reset to saved" msgstr "Restablecer a lo guardado" -#: htdocs/luci-static/resources/fs-appearance.js:193 +#: htdocs/luci-static/resources/fs-appearance.js:355 msgctxt "footstrap" msgid "Rounding" msgstr "Redondeo" -#: htdocs/luci-static/resources/fs-appearance.js:572 +#: htdocs/luci-static/resources/fs-appearance.js:670 msgctxt "footstrap" msgid "Router default" msgstr "Configuración predeterminada del enrutador" -#: htdocs/luci-static/resources/fs-appearance.js:472 -#: htdocs/luci-static/resources/fs-appearance.js:503 -#: htdocs/luci-static/resources/fs-appearance.js:510 +#: htdocs/luci-static/resources/fs-appearance.js:578 +#: htdocs/luci-static/resources/fs-appearance.js:606 +#: htdocs/luci-static/resources/fs-appearance.js:613 msgctxt "footstrap" msgid "Save as default" msgstr "Guardar como predeterminado" -#: htdocs/luci-static/resources/fs-appearance.js:510 +#: htdocs/luci-static/resources/fs-appearance.js:613 msgctxt "footstrap" msgid "Saved as default" msgstr "Guardado como predeterminado" -#: htdocs/luci-static/resources/fs-appearance.js:342 +#: htdocs/luci-static/resources/fs-appearance.js:463 msgctxt "footstrap" msgid "Scale" msgstr "Escala" -#: ucode/template/themes/footstrap/partials/search.ut:16 -#: ucode/template/themes/footstrap/partials/search.ut:18 +#: ucode/template/themes/footstrap/partials/search.ut:12 +#: ucode/template/themes/footstrap/partials/search.ut:14 msgid "Search" msgstr "Buscar" -#: htdocs/luci-static/resources/fs-search.js:238 -#: htdocs/luci-static/resources/fs-search.js:265 +#: htdocs/luci-static/resources/fs-search.js:229 +#: htdocs/luci-static/resources/fs-search.js:255 msgctxt "footstrap" msgid "Search pages" msgstr "Buscar páginas" -#: htdocs/luci-static/resources/fs-search.js:239 +#: htdocs/luci-static/resources/fs-search.js:230 msgctxt "footstrap" msgid "Search pages…" msgstr "Buscar páginas…" -#: htdocs/luci-static/resources/fs-appearance.js:167 +#: htdocs/luci-static/resources/fs-appearance.js:329 msgctxt "footstrap" msgid "Sidebar" msgstr "Barra lateral" -#: htdocs/luci-static/resources/fs-appearance.js:287 +#: htdocs/luci-static/resources/fs-appearance.js:423 msgctxt "footstrap" msgid "Sidebar and bar" msgstr "Barra lateral y superior" -#: ucode/template/themes/footstrap/header.ut:126 +#: ucode/template/themes/footstrap/header.ut:115 msgid "Skip to content" msgstr "Saltar al contenido" -#: htdocs/luci-static/resources/fs-search.js:327 +#: htdocs/luci-static/resources/fs-search.js:324 msgctxt "footstrap" msgid "Start typing to find a page" msgstr "Empiece a escribir para encontrar una página" -#: htdocs/luci-static/resources/fs-overview.js:32 +#: htdocs/luci-static/resources/fs-overview.js:22 msgid "Storage" msgstr "Almacenamiento" -#: htdocs/luci-static/resources/fs-appearance.js:343 +#: htdocs/luci-static/resources/fs-appearance.js:464 msgctxt "footstrap" msgid "Strength" msgstr "Intensidad" -#: htdocs/luci-static/resources/fs-appearance.js:202 +#: htdocs/luci-static/resources/fs-appearance.js:362 msgctxt "footstrap" msgid "Submenus" msgstr "Submenús" -#: htdocs/luci-static/resources/fs-appearance.js:654 +#: htdocs/luci-static/resources/fs-appearance.js:771 msgctxt "footstrap" msgid "Surfaces" msgstr "Superficies" -#: htdocs/luci-static/resources/fs-overview.js:32 +#: htdocs/luci-static/resources/fs-overview.js:22 msgid "System" msgstr "Sistema" -#: ucode/template/themes/footstrap/partials/notices.ut:22 +#: ucode/template/themes/footstrap/partials/notices.ut:21 msgid "System running in recovery (initramfs) mode." msgstr "El sistema se está ejecutando en modo de recuperación (initramfs)." -#: htdocs/luci-static/resources/fs-select.js:756 +#: htdocs/luci-static/resources/fs-select.js:647 msgid "Table" msgstr "Tabla" -#: htdocs/luci-static/resources/fs-prefs.js:893 +#: htdocs/luci-static/resources/fs-assets.js:97 msgctxt "footstrap" msgid "" "That SVG contains script or external references, which this theme will not " @@ -423,44 +422,43 @@ msgid "" msgstr "" "Ese SVG contiene scripts o referencias externas, y este tema no lo instalará." -#: htdocs/luci-static/resources/fs-prefs.js:917 +#: htdocs/luci-static/resources/fs-assets.js:134 msgctxt "footstrap" msgid "That file could not be read." msgstr "No se ha podido leer el archivo." -#: htdocs/luci-static/resources/fs-prefs.js:1103 +#: htdocs/luci-static/resources/fs-assets.js:214 msgctxt "footstrap" msgid "That file is not a readable image." msgstr "Ese archivo no es una imagen legible." -#: htdocs/luci-static/resources/fs-prefs.js:889 -#: htdocs/luci-static/resources/fs-prefs.js:892 +#: htdocs/luci-static/resources/fs-assets.js:31 msgctxt "footstrap" msgid "That file is not an SVG image." msgstr "Ese archivo no es una imagen SVG." -#: htdocs/luci-static/resources/fs-prefs.js:948 +#: htdocs/luci-static/resources/fs-assets.js:306 msgctxt "footstrap" msgid "That file is too large." msgstr "Ese archivo es demasiado grande." -#: htdocs/luci-static/resources/fs-prefs.js:1133 +#: htdocs/luci-static/resources/fs-assets.js:325 msgctxt "footstrap" msgid "That image is too large." msgstr "Esa imagen es demasiado grande." -#: htdocs/luci-static/resources/fs-prefs.js:1026 +#: htdocs/luci-static/resources/fs-assets.js:168 msgctxt "footstrap" msgid "The router refused to delete the file (ubus status %d)." msgstr "El router se negó a eliminar el archivo (estado ubus %d)." -#: htdocs/luci-static/resources/fs-appearance.js:171 -#: htdocs/luci-static/resources/fs-appearance.js:360 +#: htdocs/luci-static/resources/fs-appearance.js:333 +#: htdocs/luci-static/resources/fs-appearance.js:480 msgctxt "footstrap" msgid "Theme" msgstr "Tema" -#: ucode/template/themes/footstrap/partials/notices.ut:14 +#: ucode/template/themes/footstrap/partials/notices.ut:13 msgid "" "There is no password set on this router. Please configure a root password to " "protect the web interface." @@ -468,7 +466,7 @@ msgstr "" "Este enrutador no tiene contraseña. Configure una contraseña de " "administrador para proteger la interfaz web." -#: htdocs/luci-static/resources/fs-appearance.js:504 +#: htdocs/luci-static/resources/fs-appearance.js:607 msgctxt "footstrap" msgid "" "This browser is not storing preferences (site data is blocked), so a change " @@ -479,87 +477,82 @@ msgstr "" "bloqueados), así que un cambio aquí dura hasta que recargues. Guardar como " "predeterminado sigue funcionando y se aplica a todos los navegadores." -#: htdocs/luci-static/resources/fs-appearance.js:214 +#: htdocs/luci-static/resources/fs-appearance.js:702 +msgctxt "footstrap" +msgid "This theme is not translated on this router yet." +msgstr "Este tema aún no está traducido en este router." + +#: htdocs/luci-static/resources/fs-appearance.js:374 msgctxt "footstrap" msgid "Tint (router identification)" msgstr "Tinte (identificación del enrutador)" -#: htdocs/luci-static/resources/fs-appearance.js:229 +#: htdocs/luci-static/resources/fs-appearance.js:387 msgctxt "footstrap" msgid "Tint strength" msgstr "Intensidad del tinte" -#: htdocs/luci-static/resources/fs-widgets.js:264 +#: htdocs/luci-static/resources/fs-appearance.js:190 msgctxt "footstrap" msgid "Too faint to read %s" msgstr "Demasiado tenue para leerse %s" -#: htdocs/luci-static/resources/fs-appearance.js:168 +#: htdocs/luci-static/resources/fs-appearance.js:330 msgctxt "footstrap" msgid "Top" msgstr "Arriba" -#: htdocs/luci-static/resources/fs-prefs.js:960 -#: htdocs/luci-static/resources/fs-prefs.js:963 -#: htdocs/luci-static/resources/fs-prefs.js:1043 -#: htdocs/luci-static/resources/fs-prefs.js:1144 -#: htdocs/luci-static/resources/fs-prefs.js:1147 +#: htdocs/luci-static/resources/fs-assets.js:30 msgctxt "footstrap" msgid "Upload failed." msgstr "Error al cargar el archivo." -#: htdocs/luci-static/resources/fs-appearance.js:402 -#: htdocs/luci-static/resources/fs-appearance.js:432 +#: htdocs/luci-static/resources/fs-appearance.js:531 msgctxt "footstrap" msgid "Uploading…" msgstr "Cargando…" -#: ucode/template/themes/footstrap/sysauth.ut:76 +#: ucode/template/themes/footstrap/sysauth.ut:102 msgid "Username" msgstr "Nombre de usuario" -#: htdocs/luci-static/resources/fs-appearance.js:447 +#: htdocs/luci-static/resources/fs-appearance.js:560 msgctxt "footstrap" msgid "Wallpaper" msgstr "Fondo de pantalla" -#: htdocs/luci-static/resources/fs-appearance.js:250 +#: htdocs/luci-static/resources/fs-appearance.js:403 msgctxt "footstrap" msgid "Warning" msgstr "Advertencia" -#: ucode/template/themes/footstrap/partials/notices.ut:32 +#: ucode/template/themes/footstrap/partials/notices.ut:31 msgid "" "You must enable JavaScript in your browser or LuCI will not work properly." msgstr "" "Debe activar JavaScript en su navegador o LuCI no funcionará correctamente." -#: htdocs/luci-static/resources/fs-appearance.js:290 +#: htdocs/luci-static/resources/fs-appearance.js:423 msgctxt "footstrap" msgid "in the sidebar" msgstr "en la barra lateral" -#: htdocs/luci-static/resources/fs-appearance.js:241 -#: htdocs/luci-static/resources/fs-appearance.js:247 -#: htdocs/luci-static/resources/fs-appearance.js:253 -#: htdocs/luci-static/resources/fs-appearance.js:259 -#: htdocs/luci-static/resources/fs-appearance.js:278 -#: htdocs/luci-static/resources/fs-appearance.js:297 +#: htdocs/luci-static/resources/fs-appearance.js:269 msgctxt "footstrap" msgid "on a card" msgstr "en una tarjeta" -#: htdocs/luci-static/resources/fs-appearance.js:284 +#: htdocs/luci-static/resources/fs-appearance.js:422 msgctxt "footstrap" msgid "on a control" msgstr "en un control" -#: htdocs/luci-static/resources/fs-appearance.js:219 +#: htdocs/luci-static/resources/fs-appearance.js:379 msgctxt "footstrap" msgid "on the canvas" msgstr "en el lienzo" -#: htdocs/luci-static/resources/fs-prefs.js:1121 +#: htdocs/luci-static/resources/fs-assets.js:230 msgctxt "footstrap" msgid "" "the uploaded file could not be removed either; it is still on the router." diff --git a/luci-theme-footstrap/po/ru/footstrap.po b/luci-theme-footstrap/po/ru/footstrap.po index f0136231c..ddd91cec1 100644 --- a/luci-theme-footstrap/po/ru/footstrap.po +++ b/luci-theme-footstrap/po/ru/footstrap.po @@ -7,143 +7,142 @@ msgstr "" "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" -#: htdocs/luci-static/resources/fs-appearance.js:238 +#: htdocs/luci-static/resources/fs-appearance.js:401 msgctxt "footstrap" msgid "Accent" msgstr "Акцент" -#: htdocs/luci-static/resources/fs-appearance.js:361 +#: htdocs/luci-static/resources/fs-appearance.js:481 msgctxt "footstrap" msgid "As in file" msgstr "Как в файле" -#: ucode/template/themes/footstrap/sysauth.ut:70 +#: ucode/template/themes/footstrap/sysauth.ut:96 msgid "Authorization Required" msgstr "Требуется авторизация" -#: htdocs/luci-static/resources/fs-appearance.js:172 +#: htdocs/luci-static/resources/fs-appearance.js:334 msgctxt "footstrap" msgid "Auto" msgstr "Авто" -#: htdocs/luci-static/resources/fs-appearance.js:205 +#: htdocs/luci-static/resources/fs-appearance.js:365 msgctxt "footstrap" msgid "Auto-collapse" msgstr "Сворачивать" -#: htdocs/luci-static/resources/fs-appearance.js:656 +#: htdocs/luci-static/resources/fs-appearance.js:773 msgctxt "footstrap" msgid "Background" msgstr "Фон" -#: htdocs/luci-static/resources/fs-widgets.js:259 +#: htdocs/luci-static/resources/fs-appearance.js:185 msgctxt "footstrap" msgid "Barely visible %s" msgstr "Едва заметна %s" -#: htdocs/luci-static/resources/fs-appearance.js:294 +#: htdocs/luci-static/resources/fs-appearance.js:424 msgctxt "footstrap" msgid "Borders" msgstr "Границы" -#: htdocs/luci-static/resources/fs-appearance.js:275 +#: htdocs/luci-static/resources/fs-appearance.js:421 msgctxt "footstrap" msgid "Cards" msgstr "Карточки" -#: htdocs/luci-static/resources/fs-appearance.js:331 +#: htdocs/luci-static/resources/fs-appearance.js:454 msgctxt "footstrap" msgid "Choose SVG" msgstr "Выбрать SVG" -#: htdocs/luci-static/resources/fs-appearance.js:324 +#: htdocs/luci-static/resources/fs-appearance.js:447 msgctxt "footstrap" msgid "Choose image" msgstr "Выбрать изображение" -#: htdocs/luci-static/resources/fs-widgets.js:258 +#: htdocs/luci-static/resources/fs-appearance.js:184 msgctxt "footstrap" msgid "Clearly visible %s" msgstr "Хорошо видна %s" -#: htdocs/luci-static/resources/fs-chrome.js:415 -#: ucode/template/themes/footstrap/header.ut:150 +#: htdocs/luci-static/resources/fs-chrome.js:430 +#: ucode/template/themes/footstrap/header.ut:138 msgid "Collapse menu" msgstr "Свернуть меню" -#: htdocs/luci-static/resources/fs-appearance.js:344 -#: htdocs/luci-static/resources/fs-appearance.js:653 +#: htdocs/luci-static/resources/fs-appearance.js:465 +#: htdocs/luci-static/resources/fs-appearance.js:770 msgctxt "footstrap" msgid "Colours" msgstr "Цвета" -#: htdocs/luci-static/resources/fs-appearance.js:188 +#: htdocs/luci-static/resources/fs-appearance.js:350 msgctxt "footstrap" msgid "Compact" msgstr "Компактно" -#: htdocs/luci-static/resources/fs-appearance.js:545 +#: htdocs/luci-static/resources/fs-appearance.js:644 msgctxt "footstrap" msgid "Confirm reset" msgstr "Подтвердить сброс" -#: htdocs/luci-static/resources/fs-widgets.js:268 +#: htdocs/luci-static/resources/fs-appearance.js:193 msgctxt "footstrap" msgid "Contrast %s:1 (WCAG AA wants %s:1 here)" msgstr "Контраст %s:1 (WCAG AA требует здесь %s:1)" -#: htdocs/luci-static/resources/fs-appearance.js:281 +#: htdocs/luci-static/resources/fs-appearance.js:422 msgctxt "footstrap" msgid "Controls" msgstr "Элементы форм" -#: htdocs/luci-static/resources/fs-prefs.js:1099 -#: htdocs/luci-static/resources/fs-prefs.js:1101 +#: htdocs/luci-static/resources/fs-assets.js:32 msgctxt "footstrap" msgid "Could not process the image." msgstr "Не удалось обработать изображение." -#: htdocs/luci-static/resources/fs-appearance.js:521 +#: htdocs/luci-static/resources/fs-appearance.js:624 msgctxt "footstrap" msgid "Could not save the default. Reload the page and try again." msgstr "Не удалось сохранить умолчание. Обновите страницу и повторите." -#: htdocs/luci-static/resources/fs-appearance.js:256 +#: htdocs/luci-static/resources/fs-appearance.js:404 msgctxt "footstrap" msgid "Danger" msgstr "Опасность" -#: htdocs/luci-static/resources/fs-appearance.js:174 +#: htdocs/luci-static/resources/fs-appearance.js:336 msgctxt "footstrap" msgid "Dark" msgstr "Тёмная" -#: htdocs/luci-static/resources/fs-appearance.js:657 +#: htdocs/luci-static/resources/fs-appearance.js:774 msgctxt "footstrap" msgid "Defaults" msgstr "Умолчания" -#: htdocs/luci-static/resources/fs-appearance.js:187 +#: htdocs/luci-static/resources/fs-appearance.js:349 msgctxt "footstrap" msgid "Density" msgstr "Плотность" -#: htdocs/luci-static/resources/fs-appearance.js:341 +#: htdocs/luci-static/resources/fs-appearance.js:462 msgctxt "footstrap" msgid "Dim" msgstr "Затемнение" -#: htdocs/luci-static/resources/fs-widgets.js:261 +#: htdocs/luci-static/resources/fs-appearance.js:187 msgctxt "footstrap" msgid "Easy to read %s" msgstr "Хорошо читается %s" -#: htdocs/luci-static/resources/fs-chrome.js:415 +#: htdocs/luci-static/resources/fs-chrome.js:430 msgid "Expand menu" msgstr "Развернуть меню" -#: htdocs/luci-static/resources/fs-appearance.js:366 -#: htdocs/luci-static/resources/fs-appearance.js:451 +#: htdocs/luci-static/resources/fs-appearance.js:486 +#: htdocs/luci-static/resources/fs-appearance.js:564 msgctxt "footstrap" msgid "File" msgstr "Файл" @@ -156,80 +155,81 @@ msgstr "" "Общие настройки внешнего вида Footstrap для роутера (Сохранить как " "умолчание), загрузка фонового изображения и узора" -#: ucode/template/themes/footstrap/partials/notices.ut:25 +#: ucode/template/themes/footstrap/partials/notices.ut:24 msgid "Go to firmware upgrade..." msgstr "Перейти к обновлению прошивки..." -#: ucode/template/themes/footstrap/partials/notices.ut:16 +#: ucode/template/themes/footstrap/partials/notices.ut:15 msgid "Go to password configuration..." msgstr "Перейти к настройке пароля..." -#: htdocs/luci-static/resources/fs-appearance.js:244 +#: htdocs/luci-static/resources/fs-appearance.js:402 msgctxt "footstrap" msgid "Good" msgstr "Норма" -#: htdocs/luci-static/resources/fs-widgets.js:263 +#: htdocs/luci-static/resources/fs-appearance.js:189 msgctxt "footstrap" msgid "Hard to read %s — large text only" msgstr "Плохо читается %s — только крупный текст" -#: htdocs/luci-static/resources/fs-appearance.js:652 +#: htdocs/luci-static/resources/fs-appearance.js:769 msgctxt "footstrap" msgid "Interface" msgstr "Интерфейс" -#: ucode/template/themes/footstrap/sysauth.ut:60 +#: ucode/template/themes/footstrap/sysauth.ut:78 msgid "Invalid username and/or password! Please try again." msgstr "Неверное имя пользователя и/или пароль! Попробуйте ещё раз." -#: ucode/template/themes/footstrap/partials/notices.ut:31 +#: ucode/template/themes/footstrap/partials/notices.ut:30 msgid "JavaScript required!" msgstr "Требуется JavaScript!" -#: htdocs/luci-static/resources/fs-appearance.js:204 +#: htdocs/luci-static/resources/fs-appearance.js:364 msgctxt "footstrap" msgid "Keep open" msgstr "Не сворачивать" -#: htdocs/luci-static/resources/fs-appearance.js:190 +#: htdocs/luci-static/resources/fs-appearance.js:352 msgctxt "footstrap" msgid "Large" msgstr "Крупно" -#: htdocs/luci-static/resources/fs-appearance.js:166 +#: htdocs/luci-static/resources/fs-appearance.js:328 +#: htdocs/luci-static/resources/fs-appearance.js:700 msgctxt "footstrap" msgid "Layout" msgstr "Раскладка" -#: htdocs/luci-static/resources/fs-appearance.js:173 +#: htdocs/luci-static/resources/fs-appearance.js:335 msgctxt "footstrap" msgid "Light" msgstr "Светлая" -#: ucode/template/themes/footstrap/sysauth.ut:142 +#: ucode/template/themes/footstrap/sysauth.ut:162 msgid "Log in" msgstr "Войти" -#: ucode/template/themes/footstrap/partials/logout.ut:11 -#: ucode/template/themes/footstrap/partials/logout.ut:13 +#: ucode/template/themes/footstrap/partials/logout.ut:8 +#: ucode/template/themes/footstrap/partials/logout.ut:15 msgid "Log out" msgstr "Выйти" -#: ucode/template/themes/footstrap/partials/footer.ut:27 +#: ucode/template/themes/footstrap/partials/footer.ut:25 msgid "Lua compatibility mode active" msgstr "Включён режим совместимости с Lua" -#: htdocs/luci-static/resources/fs-overview.js:32 +#: htdocs/luci-static/resources/fs-overview.js:22 msgid "Memory" msgstr "Память" -#: ucode/template/themes/footstrap/header.ut:147 -#: ucode/template/themes/footstrap/header.ut:158 +#: ucode/template/themes/footstrap/header.ut:135 +#: ucode/template/themes/footstrap/header.ut:146 msgid "Menu" msgstr "Меню" -#: ucode/template/themes/footstrap/partials/notices.ut:23 +#: ucode/template/themes/footstrap/partials/notices.ut:22 msgid "" "No changes to settings will be stored and are lost after rebooting. This " "mode should only be used to install a firmware upgrade" @@ -237,178 +237,177 @@ msgstr "" "Изменения настроек не сохраняются и будут потеряны после перезагрузки. Этот " "режим следует использовать только для установки обновления прошивки" -#: htdocs/luci-static/resources/fs-search.js:327 +#: htdocs/luci-static/resources/fs-search.js:324 msgctxt "footstrap" msgid "No pages found" msgstr "Страницы не найдены" -#: ucode/template/themes/footstrap/partials/notices.ut:13 +#: ucode/template/themes/footstrap/partials/notices.ut:12 msgid "No password set!" msgstr "Пароль не установлен!" -#: htdocs/luci-static/resources/fs-appearance.js:189 +#: htdocs/luci-static/resources/fs-appearance.js:351 msgctxt "footstrap" msgid "Normal" msgstr "Обычно" -#: htdocs/luci-static/resources/fs-appearance.js:449 +#: htdocs/luci-static/resources/fs-appearance.js:562 msgctxt "footstrap" msgid "Off" msgstr "Выкл." -#: htdocs/luci-static/resources/fs-search.js:244 +#: htdocs/luci-static/resources/fs-search.js:235 msgctxt "footstrap" msgid "Pages" msgstr "Страницы" -#: htdocs/luci-static/resources/fs-appearance.js:177 -#: htdocs/luci-static/resources/fs-widgets.js:216 +#: htdocs/luci-static/resources/fs-appearance.js:151 +#: htdocs/luci-static/resources/fs-appearance.js:339 msgctxt "footstrap" msgid "Palette" msgstr "Палитра" -#: ucode/template/themes/footstrap/sysauth.ut:82 +#: ucode/template/themes/footstrap/sysauth.ut:108 msgid "Password" msgstr "Пароль" -#: htdocs/luci-static/resources/fs-appearance.js:352 -#: htdocs/luci-static/resources/fs-appearance.js:450 +#: htdocs/luci-static/resources/fs-appearance.js:472 +#: htdocs/luci-static/resources/fs-appearance.js:563 msgctxt "footstrap" msgid "Pattern" msgstr "Узор" -#: htdocs/luci-static/resources/fs-prefs.js:945 -#: htdocs/luci-static/resources/fs-prefs.js:947 +#: htdocs/luci-static/resources/fs-assets.js:33 msgctxt "footstrap" msgid "Please choose an SVG file." msgstr "Выберите файл SVG." -#: htdocs/luci-static/resources/fs-prefs.js:1131 +#: htdocs/luci-static/resources/fs-assets.js:323 msgctxt "footstrap" msgid "Please choose an image file." msgstr "Выберите файл изображения." -#: ucode/template/themes/footstrap/sysauth.ut:72 +#: ucode/template/themes/footstrap/sysauth.ut:98 msgid "Please enter your username and password." msgstr "Введите имя пользователя и пароль." -#: htdocs/luci-static/resources/fs-search.js:326 +#: htdocs/luci-static/resources/fs-search.js:323 msgctxt "footstrap" msgid "Recently visited" msgstr "Недавние" -#: htdocs/luci-static/resources/fs-appearance.js:326 -#: htdocs/luci-static/resources/fs-appearance.js:333 +#: htdocs/luci-static/resources/fs-appearance.js:449 +#: htdocs/luci-static/resources/fs-appearance.js:456 msgctxt "footstrap" msgid "Remove" msgstr "Убрать" -#: htdocs/luci-static/resources/fs-appearance.js:483 -#: htdocs/luci-static/resources/fs-appearance.js:556 +#: htdocs/luci-static/resources/fs-appearance.js:588 +#: htdocs/luci-static/resources/fs-appearance.js:655 msgctxt "footstrap" msgid "Reset to default" msgstr "Сбросить к умолчанию" -#: htdocs/luci-static/resources/fs-appearance.js:478 -#: htdocs/luci-static/resources/fs-appearance.js:555 +#: htdocs/luci-static/resources/fs-appearance.js:584 +#: htdocs/luci-static/resources/fs-appearance.js:654 msgctxt "footstrap" msgid "Reset to saved" msgstr "Сбросить к сохранённым" -#: htdocs/luci-static/resources/fs-appearance.js:193 +#: htdocs/luci-static/resources/fs-appearance.js:355 msgctxt "footstrap" msgid "Rounding" msgstr "Скругление" -#: htdocs/luci-static/resources/fs-appearance.js:572 +#: htdocs/luci-static/resources/fs-appearance.js:670 msgctxt "footstrap" msgid "Router default" msgstr "По умолчанию для роутера" -#: htdocs/luci-static/resources/fs-appearance.js:472 -#: htdocs/luci-static/resources/fs-appearance.js:503 -#: htdocs/luci-static/resources/fs-appearance.js:510 +#: htdocs/luci-static/resources/fs-appearance.js:578 +#: htdocs/luci-static/resources/fs-appearance.js:606 +#: htdocs/luci-static/resources/fs-appearance.js:613 msgctxt "footstrap" msgid "Save as default" msgstr "Сохранить по умолчанию" -#: htdocs/luci-static/resources/fs-appearance.js:510 +#: htdocs/luci-static/resources/fs-appearance.js:613 msgctxt "footstrap" msgid "Saved as default" msgstr "Сохранено по умолчанию" -#: htdocs/luci-static/resources/fs-appearance.js:342 +#: htdocs/luci-static/resources/fs-appearance.js:463 msgctxt "footstrap" msgid "Scale" msgstr "Масштаб" -#: ucode/template/themes/footstrap/partials/search.ut:16 -#: ucode/template/themes/footstrap/partials/search.ut:18 +#: ucode/template/themes/footstrap/partials/search.ut:12 +#: ucode/template/themes/footstrap/partials/search.ut:14 msgid "Search" msgstr "Поиск" -#: htdocs/luci-static/resources/fs-search.js:238 -#: htdocs/luci-static/resources/fs-search.js:265 +#: htdocs/luci-static/resources/fs-search.js:229 +#: htdocs/luci-static/resources/fs-search.js:255 msgctxt "footstrap" msgid "Search pages" msgstr "Поиск по страницам" -#: htdocs/luci-static/resources/fs-search.js:239 +#: htdocs/luci-static/resources/fs-search.js:230 msgctxt "footstrap" msgid "Search pages…" msgstr "Поиск по страницам…" -#: htdocs/luci-static/resources/fs-appearance.js:167 +#: htdocs/luci-static/resources/fs-appearance.js:329 msgctxt "footstrap" msgid "Sidebar" msgstr "Сбоку" -#: htdocs/luci-static/resources/fs-appearance.js:287 +#: htdocs/luci-static/resources/fs-appearance.js:423 msgctxt "footstrap" msgid "Sidebar and bar" msgstr "Боковая панель и шапка" -#: ucode/template/themes/footstrap/header.ut:126 +#: ucode/template/themes/footstrap/header.ut:115 msgid "Skip to content" msgstr "Перейти к содержимому" -#: htdocs/luci-static/resources/fs-search.js:327 +#: htdocs/luci-static/resources/fs-search.js:324 msgctxt "footstrap" msgid "Start typing to find a page" msgstr "Начните вводить название страницы" -#: htdocs/luci-static/resources/fs-overview.js:32 +#: htdocs/luci-static/resources/fs-overview.js:22 msgid "Storage" msgstr "Накопитель" -#: htdocs/luci-static/resources/fs-appearance.js:343 +#: htdocs/luci-static/resources/fs-appearance.js:464 msgctxt "footstrap" msgid "Strength" msgstr "Насыщенность" -#: htdocs/luci-static/resources/fs-appearance.js:202 +#: htdocs/luci-static/resources/fs-appearance.js:362 msgctxt "footstrap" msgid "Submenus" msgstr "Подменю" -#: htdocs/luci-static/resources/fs-appearance.js:654 +#: htdocs/luci-static/resources/fs-appearance.js:771 msgctxt "footstrap" msgid "Surfaces" msgstr "Поверхности" -#: htdocs/luci-static/resources/fs-overview.js:32 +#: htdocs/luci-static/resources/fs-overview.js:22 msgid "System" msgstr "Система" -#: ucode/template/themes/footstrap/partials/notices.ut:22 +#: ucode/template/themes/footstrap/partials/notices.ut:21 msgid "System running in recovery (initramfs) mode." msgstr "Система работает в режиме восстановления (initramfs)." -#: htdocs/luci-static/resources/fs-select.js:756 +#: htdocs/luci-static/resources/fs-select.js:647 msgid "Table" msgstr "Таблица" -#: htdocs/luci-static/resources/fs-prefs.js:893 +#: htdocs/luci-static/resources/fs-assets.js:97 msgctxt "footstrap" msgid "" "That SVG contains script or external references, which this theme will not " @@ -416,44 +415,43 @@ msgid "" msgstr "" "В этом SVG есть скрипт или внешние ссылки — тема не станет его устанавливать." -#: htdocs/luci-static/resources/fs-prefs.js:917 +#: htdocs/luci-static/resources/fs-assets.js:134 msgctxt "footstrap" msgid "That file could not be read." msgstr "Не удалось прочитать файл." -#: htdocs/luci-static/resources/fs-prefs.js:1103 +#: htdocs/luci-static/resources/fs-assets.js:214 msgctxt "footstrap" msgid "That file is not a readable image." msgstr "Не удалось прочитать файл как изображение." -#: htdocs/luci-static/resources/fs-prefs.js:889 -#: htdocs/luci-static/resources/fs-prefs.js:892 +#: htdocs/luci-static/resources/fs-assets.js:31 msgctxt "footstrap" msgid "That file is not an SVG image." msgstr "Этот файл — не изображение SVG." -#: htdocs/luci-static/resources/fs-prefs.js:948 +#: htdocs/luci-static/resources/fs-assets.js:306 msgctxt "footstrap" msgid "That file is too large." msgstr "Файл слишком большой." -#: htdocs/luci-static/resources/fs-prefs.js:1133 +#: htdocs/luci-static/resources/fs-assets.js:325 msgctxt "footstrap" msgid "That image is too large." msgstr "Изображение слишком большое." -#: htdocs/luci-static/resources/fs-prefs.js:1026 +#: htdocs/luci-static/resources/fs-assets.js:168 msgctxt "footstrap" msgid "The router refused to delete the file (ubus status %d)." msgstr "Роутер отказался удалить файл (статус ubus %d)." -#: htdocs/luci-static/resources/fs-appearance.js:171 -#: htdocs/luci-static/resources/fs-appearance.js:360 +#: htdocs/luci-static/resources/fs-appearance.js:333 +#: htdocs/luci-static/resources/fs-appearance.js:480 msgctxt "footstrap" msgid "Theme" msgstr "Тема" -#: ucode/template/themes/footstrap/partials/notices.ut:14 +#: ucode/template/themes/footstrap/partials/notices.ut:13 msgid "" "There is no password set on this router. Please configure a root password to " "protect the web interface." @@ -461,7 +459,7 @@ msgstr "" "На этом роутере не задан пароль. Установите пароль root, чтобы защитить веб-" "интерфейс." -#: htdocs/luci-static/resources/fs-appearance.js:504 +#: htdocs/luci-static/resources/fs-appearance.js:607 msgctxt "footstrap" msgid "" "This browser is not storing preferences (site data is blocked), so a change " @@ -472,87 +470,82 @@ msgstr "" "изменение здесь действует до перезагрузки страницы. «Сохранить как " "умолчание» по-прежнему работает и применяется ко всем браузерам." -#: htdocs/luci-static/resources/fs-appearance.js:214 +#: htdocs/luci-static/resources/fs-appearance.js:702 +msgctxt "footstrap" +msgid "This theme is not translated on this router yet." +msgstr "Тема ещё не переведена на этом роутере." + +#: htdocs/luci-static/resources/fs-appearance.js:374 msgctxt "footstrap" msgid "Tint (router identification)" msgstr "Оттенок (опознание роутера)" -#: htdocs/luci-static/resources/fs-appearance.js:229 +#: htdocs/luci-static/resources/fs-appearance.js:387 msgctxt "footstrap" msgid "Tint strength" msgstr "Насыщенность оттенка" -#: htdocs/luci-static/resources/fs-widgets.js:264 +#: htdocs/luci-static/resources/fs-appearance.js:190 msgctxt "footstrap" msgid "Too faint to read %s" msgstr "Слишком блёкло, не читается %s" -#: htdocs/luci-static/resources/fs-appearance.js:168 +#: htdocs/luci-static/resources/fs-appearance.js:330 msgctxt "footstrap" msgid "Top" msgstr "Сверху" -#: htdocs/luci-static/resources/fs-prefs.js:960 -#: htdocs/luci-static/resources/fs-prefs.js:963 -#: htdocs/luci-static/resources/fs-prefs.js:1043 -#: htdocs/luci-static/resources/fs-prefs.js:1144 -#: htdocs/luci-static/resources/fs-prefs.js:1147 +#: htdocs/luci-static/resources/fs-assets.js:30 msgctxt "footstrap" msgid "Upload failed." msgstr "Не удалось загрузить." -#: htdocs/luci-static/resources/fs-appearance.js:402 -#: htdocs/luci-static/resources/fs-appearance.js:432 +#: htdocs/luci-static/resources/fs-appearance.js:531 msgctxt "footstrap" msgid "Uploading…" msgstr "Загрузка…" -#: ucode/template/themes/footstrap/sysauth.ut:76 +#: ucode/template/themes/footstrap/sysauth.ut:102 msgid "Username" msgstr "Имя пользователя" -#: htdocs/luci-static/resources/fs-appearance.js:447 +#: htdocs/luci-static/resources/fs-appearance.js:560 msgctxt "footstrap" msgid "Wallpaper" msgstr "Обои" -#: htdocs/luci-static/resources/fs-appearance.js:250 +#: htdocs/luci-static/resources/fs-appearance.js:403 msgctxt "footstrap" msgid "Warning" msgstr "Предупреждение" -#: ucode/template/themes/footstrap/partials/notices.ut:32 +#: ucode/template/themes/footstrap/partials/notices.ut:31 msgid "" "You must enable JavaScript in your browser or LuCI will not work properly." msgstr "" "Включите JavaScript в браузере, иначе LuCI не будет работать корректно." -#: htdocs/luci-static/resources/fs-appearance.js:290 +#: htdocs/luci-static/resources/fs-appearance.js:423 msgctxt "footstrap" msgid "in the sidebar" msgstr "в боковой панели" -#: htdocs/luci-static/resources/fs-appearance.js:241 -#: htdocs/luci-static/resources/fs-appearance.js:247 -#: htdocs/luci-static/resources/fs-appearance.js:253 -#: htdocs/luci-static/resources/fs-appearance.js:259 -#: htdocs/luci-static/resources/fs-appearance.js:278 -#: htdocs/luci-static/resources/fs-appearance.js:297 +#: htdocs/luci-static/resources/fs-appearance.js:269 msgctxt "footstrap" msgid "on a card" msgstr "на карточке" -#: htdocs/luci-static/resources/fs-appearance.js:284 +#: htdocs/luci-static/resources/fs-appearance.js:422 msgctxt "footstrap" msgid "on a control" msgstr "на элементе формы" -#: htdocs/luci-static/resources/fs-appearance.js:219 +#: htdocs/luci-static/resources/fs-appearance.js:379 msgctxt "footstrap" msgid "on the canvas" msgstr "на холсте" -#: htdocs/luci-static/resources/fs-prefs.js:1121 +#: htdocs/luci-static/resources/fs-assets.js:230 msgctxt "footstrap" msgid "" "the uploaded file could not be removed either; it is still on the router." diff --git a/luci-theme-footstrap/po/templates/footstrap.pot b/luci-theme-footstrap/po/templates/footstrap.pot index 4e90db79e..d93f441b1 100644 --- a/luci-theme-footstrap/po/templates/footstrap.pot +++ b/luci-theme-footstrap/po/templates/footstrap.pot @@ -1,143 +1,142 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: htdocs/luci-static/resources/fs-appearance.js:238 +#: htdocs/luci-static/resources/fs-appearance.js:401 msgctxt "footstrap" msgid "Accent" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:361 +#: htdocs/luci-static/resources/fs-appearance.js:481 msgctxt "footstrap" msgid "As in file" msgstr "" -#: ucode/template/themes/footstrap/sysauth.ut:70 +#: ucode/template/themes/footstrap/sysauth.ut:96 msgid "Authorization Required" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:172 +#: htdocs/luci-static/resources/fs-appearance.js:334 msgctxt "footstrap" msgid "Auto" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:205 +#: htdocs/luci-static/resources/fs-appearance.js:365 msgctxt "footstrap" msgid "Auto-collapse" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:656 +#: htdocs/luci-static/resources/fs-appearance.js:773 msgctxt "footstrap" msgid "Background" msgstr "" -#: htdocs/luci-static/resources/fs-widgets.js:259 +#: htdocs/luci-static/resources/fs-appearance.js:185 msgctxt "footstrap" msgid "Barely visible %s" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:294 +#: htdocs/luci-static/resources/fs-appearance.js:424 msgctxt "footstrap" msgid "Borders" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:275 +#: htdocs/luci-static/resources/fs-appearance.js:421 msgctxt "footstrap" msgid "Cards" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:331 +#: htdocs/luci-static/resources/fs-appearance.js:454 msgctxt "footstrap" msgid "Choose SVG" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:324 +#: htdocs/luci-static/resources/fs-appearance.js:447 msgctxt "footstrap" msgid "Choose image" msgstr "" -#: htdocs/luci-static/resources/fs-widgets.js:258 +#: htdocs/luci-static/resources/fs-appearance.js:184 msgctxt "footstrap" msgid "Clearly visible %s" msgstr "" -#: htdocs/luci-static/resources/fs-chrome.js:415 -#: ucode/template/themes/footstrap/header.ut:150 +#: htdocs/luci-static/resources/fs-chrome.js:430 +#: ucode/template/themes/footstrap/header.ut:138 msgid "Collapse menu" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:344 -#: htdocs/luci-static/resources/fs-appearance.js:653 +#: htdocs/luci-static/resources/fs-appearance.js:465 +#: htdocs/luci-static/resources/fs-appearance.js:770 msgctxt "footstrap" msgid "Colours" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:188 +#: htdocs/luci-static/resources/fs-appearance.js:350 msgctxt "footstrap" msgid "Compact" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:545 +#: htdocs/luci-static/resources/fs-appearance.js:644 msgctxt "footstrap" msgid "Confirm reset" msgstr "" -#: htdocs/luci-static/resources/fs-widgets.js:268 +#: htdocs/luci-static/resources/fs-appearance.js:193 msgctxt "footstrap" msgid "Contrast %s:1 (WCAG AA wants %s:1 here)" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:281 +#: htdocs/luci-static/resources/fs-appearance.js:422 msgctxt "footstrap" msgid "Controls" msgstr "" -#: htdocs/luci-static/resources/fs-prefs.js:1099 -#: htdocs/luci-static/resources/fs-prefs.js:1101 +#: htdocs/luci-static/resources/fs-assets.js:32 msgctxt "footstrap" msgid "Could not process the image." msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:521 +#: htdocs/luci-static/resources/fs-appearance.js:624 msgctxt "footstrap" msgid "Could not save the default. Reload the page and try again." msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:256 +#: htdocs/luci-static/resources/fs-appearance.js:404 msgctxt "footstrap" msgid "Danger" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:174 +#: htdocs/luci-static/resources/fs-appearance.js:336 msgctxt "footstrap" msgid "Dark" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:657 +#: htdocs/luci-static/resources/fs-appearance.js:774 msgctxt "footstrap" msgid "Defaults" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:187 +#: htdocs/luci-static/resources/fs-appearance.js:349 msgctxt "footstrap" msgid "Density" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:341 +#: htdocs/luci-static/resources/fs-appearance.js:462 msgctxt "footstrap" msgid "Dim" msgstr "" -#: htdocs/luci-static/resources/fs-widgets.js:261 +#: htdocs/luci-static/resources/fs-appearance.js:187 msgctxt "footstrap" msgid "Easy to read %s" msgstr "" -#: htdocs/luci-static/resources/fs-chrome.js:415 +#: htdocs/luci-static/resources/fs-chrome.js:430 msgid "Expand menu" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:366 -#: htdocs/luci-static/resources/fs-appearance.js:451 +#: htdocs/luci-static/resources/fs-appearance.js:486 +#: htdocs/luci-static/resources/fs-appearance.js:564 msgctxt "footstrap" msgid "File" msgstr "" @@ -148,307 +147,306 @@ msgid "" "background and pattern uploads" msgstr "" -#: ucode/template/themes/footstrap/partials/notices.ut:25 +#: ucode/template/themes/footstrap/partials/notices.ut:24 msgid "Go to firmware upgrade..." msgstr "" -#: ucode/template/themes/footstrap/partials/notices.ut:16 +#: ucode/template/themes/footstrap/partials/notices.ut:15 msgid "Go to password configuration..." msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:244 +#: htdocs/luci-static/resources/fs-appearance.js:402 msgctxt "footstrap" msgid "Good" msgstr "" -#: htdocs/luci-static/resources/fs-widgets.js:263 +#: htdocs/luci-static/resources/fs-appearance.js:189 msgctxt "footstrap" msgid "Hard to read %s — large text only" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:652 +#: htdocs/luci-static/resources/fs-appearance.js:769 msgctxt "footstrap" msgid "Interface" msgstr "" -#: ucode/template/themes/footstrap/sysauth.ut:60 +#: ucode/template/themes/footstrap/sysauth.ut:78 msgid "Invalid username and/or password! Please try again." msgstr "" -#: ucode/template/themes/footstrap/partials/notices.ut:31 +#: ucode/template/themes/footstrap/partials/notices.ut:30 msgid "JavaScript required!" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:204 +#: htdocs/luci-static/resources/fs-appearance.js:364 msgctxt "footstrap" msgid "Keep open" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:190 +#: htdocs/luci-static/resources/fs-appearance.js:352 msgctxt "footstrap" msgid "Large" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:166 +#: htdocs/luci-static/resources/fs-appearance.js:328 +#: htdocs/luci-static/resources/fs-appearance.js:700 msgctxt "footstrap" msgid "Layout" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:173 +#: htdocs/luci-static/resources/fs-appearance.js:335 msgctxt "footstrap" msgid "Light" msgstr "" -#: ucode/template/themes/footstrap/sysauth.ut:142 +#: ucode/template/themes/footstrap/sysauth.ut:162 msgid "Log in" msgstr "" -#: ucode/template/themes/footstrap/partials/logout.ut:11 -#: ucode/template/themes/footstrap/partials/logout.ut:13 +#: ucode/template/themes/footstrap/partials/logout.ut:8 +#: ucode/template/themes/footstrap/partials/logout.ut:15 msgid "Log out" msgstr "" -#: ucode/template/themes/footstrap/partials/footer.ut:27 +#: ucode/template/themes/footstrap/partials/footer.ut:25 msgid "Lua compatibility mode active" msgstr "" -#: htdocs/luci-static/resources/fs-overview.js:32 +#: htdocs/luci-static/resources/fs-overview.js:22 msgid "Memory" msgstr "" -#: ucode/template/themes/footstrap/header.ut:147 -#: ucode/template/themes/footstrap/header.ut:158 +#: ucode/template/themes/footstrap/header.ut:135 +#: ucode/template/themes/footstrap/header.ut:146 msgid "Menu" msgstr "" -#: ucode/template/themes/footstrap/partials/notices.ut:23 +#: ucode/template/themes/footstrap/partials/notices.ut:22 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 "" -#: htdocs/luci-static/resources/fs-search.js:327 +#: htdocs/luci-static/resources/fs-search.js:324 msgctxt "footstrap" msgid "No pages found" msgstr "" -#: ucode/template/themes/footstrap/partials/notices.ut:13 +#: ucode/template/themes/footstrap/partials/notices.ut:12 msgid "No password set!" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:189 +#: htdocs/luci-static/resources/fs-appearance.js:351 msgctxt "footstrap" msgid "Normal" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:449 +#: htdocs/luci-static/resources/fs-appearance.js:562 msgctxt "footstrap" msgid "Off" msgstr "" -#: htdocs/luci-static/resources/fs-search.js:244 +#: htdocs/luci-static/resources/fs-search.js:235 msgctxt "footstrap" msgid "Pages" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:177 -#: htdocs/luci-static/resources/fs-widgets.js:216 +#: htdocs/luci-static/resources/fs-appearance.js:151 +#: htdocs/luci-static/resources/fs-appearance.js:339 msgctxt "footstrap" msgid "Palette" msgstr "" -#: ucode/template/themes/footstrap/sysauth.ut:82 +#: ucode/template/themes/footstrap/sysauth.ut:108 msgid "Password" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:352 -#: htdocs/luci-static/resources/fs-appearance.js:450 +#: htdocs/luci-static/resources/fs-appearance.js:472 +#: htdocs/luci-static/resources/fs-appearance.js:563 msgctxt "footstrap" msgid "Pattern" msgstr "" -#: htdocs/luci-static/resources/fs-prefs.js:945 -#: htdocs/luci-static/resources/fs-prefs.js:947 +#: htdocs/luci-static/resources/fs-assets.js:33 msgctxt "footstrap" msgid "Please choose an SVG file." msgstr "" -#: htdocs/luci-static/resources/fs-prefs.js:1131 +#: htdocs/luci-static/resources/fs-assets.js:323 msgctxt "footstrap" msgid "Please choose an image file." msgstr "" -#: ucode/template/themes/footstrap/sysauth.ut:72 +#: ucode/template/themes/footstrap/sysauth.ut:98 msgid "Please enter your username and password." msgstr "" -#: htdocs/luci-static/resources/fs-search.js:326 +#: htdocs/luci-static/resources/fs-search.js:323 msgctxt "footstrap" msgid "Recently visited" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:326 -#: htdocs/luci-static/resources/fs-appearance.js:333 +#: htdocs/luci-static/resources/fs-appearance.js:449 +#: htdocs/luci-static/resources/fs-appearance.js:456 msgctxt "footstrap" msgid "Remove" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:483 -#: htdocs/luci-static/resources/fs-appearance.js:556 +#: htdocs/luci-static/resources/fs-appearance.js:588 +#: htdocs/luci-static/resources/fs-appearance.js:655 msgctxt "footstrap" msgid "Reset to default" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:478 -#: htdocs/luci-static/resources/fs-appearance.js:555 +#: htdocs/luci-static/resources/fs-appearance.js:584 +#: htdocs/luci-static/resources/fs-appearance.js:654 msgctxt "footstrap" msgid "Reset to saved" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:193 +#: htdocs/luci-static/resources/fs-appearance.js:355 msgctxt "footstrap" msgid "Rounding" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:572 +#: htdocs/luci-static/resources/fs-appearance.js:670 msgctxt "footstrap" msgid "Router default" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:472 -#: htdocs/luci-static/resources/fs-appearance.js:503 -#: htdocs/luci-static/resources/fs-appearance.js:510 +#: htdocs/luci-static/resources/fs-appearance.js:578 +#: htdocs/luci-static/resources/fs-appearance.js:606 +#: htdocs/luci-static/resources/fs-appearance.js:613 msgctxt "footstrap" msgid "Save as default" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:510 +#: htdocs/luci-static/resources/fs-appearance.js:613 msgctxt "footstrap" msgid "Saved as default" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:342 +#: htdocs/luci-static/resources/fs-appearance.js:463 msgctxt "footstrap" msgid "Scale" msgstr "" -#: ucode/template/themes/footstrap/partials/search.ut:16 -#: ucode/template/themes/footstrap/partials/search.ut:18 +#: ucode/template/themes/footstrap/partials/search.ut:12 +#: ucode/template/themes/footstrap/partials/search.ut:14 msgid "Search" msgstr "" -#: htdocs/luci-static/resources/fs-search.js:238 -#: htdocs/luci-static/resources/fs-search.js:265 +#: htdocs/luci-static/resources/fs-search.js:229 +#: htdocs/luci-static/resources/fs-search.js:255 msgctxt "footstrap" msgid "Search pages" msgstr "" -#: htdocs/luci-static/resources/fs-search.js:239 +#: htdocs/luci-static/resources/fs-search.js:230 msgctxt "footstrap" msgid "Search pages…" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:167 +#: htdocs/luci-static/resources/fs-appearance.js:329 msgctxt "footstrap" msgid "Sidebar" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:287 +#: htdocs/luci-static/resources/fs-appearance.js:423 msgctxt "footstrap" msgid "Sidebar and bar" msgstr "" -#: ucode/template/themes/footstrap/header.ut:126 +#: ucode/template/themes/footstrap/header.ut:115 msgid "Skip to content" msgstr "" -#: htdocs/luci-static/resources/fs-search.js:327 +#: htdocs/luci-static/resources/fs-search.js:324 msgctxt "footstrap" msgid "Start typing to find a page" msgstr "" -#: htdocs/luci-static/resources/fs-overview.js:32 +#: htdocs/luci-static/resources/fs-overview.js:22 msgid "Storage" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:343 +#: htdocs/luci-static/resources/fs-appearance.js:464 msgctxt "footstrap" msgid "Strength" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:202 +#: htdocs/luci-static/resources/fs-appearance.js:362 msgctxt "footstrap" msgid "Submenus" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:654 +#: htdocs/luci-static/resources/fs-appearance.js:771 msgctxt "footstrap" msgid "Surfaces" msgstr "" -#: htdocs/luci-static/resources/fs-overview.js:32 +#: htdocs/luci-static/resources/fs-overview.js:22 msgid "System" msgstr "" -#: ucode/template/themes/footstrap/partials/notices.ut:22 +#: ucode/template/themes/footstrap/partials/notices.ut:21 msgid "System running in recovery (initramfs) mode." msgstr "" -#: htdocs/luci-static/resources/fs-select.js:756 +#: htdocs/luci-static/resources/fs-select.js:647 msgid "Table" msgstr "" -#: htdocs/luci-static/resources/fs-prefs.js:893 +#: htdocs/luci-static/resources/fs-assets.js:97 msgctxt "footstrap" msgid "" "That SVG contains script or external references, which this theme will not " "install." msgstr "" -#: htdocs/luci-static/resources/fs-prefs.js:917 +#: htdocs/luci-static/resources/fs-assets.js:134 msgctxt "footstrap" msgid "That file could not be read." msgstr "" -#: htdocs/luci-static/resources/fs-prefs.js:1103 +#: htdocs/luci-static/resources/fs-assets.js:214 msgctxt "footstrap" msgid "That file is not a readable image." msgstr "" -#: htdocs/luci-static/resources/fs-prefs.js:889 -#: htdocs/luci-static/resources/fs-prefs.js:892 +#: htdocs/luci-static/resources/fs-assets.js:31 msgctxt "footstrap" msgid "That file is not an SVG image." msgstr "" -#: htdocs/luci-static/resources/fs-prefs.js:948 +#: htdocs/luci-static/resources/fs-assets.js:306 msgctxt "footstrap" msgid "That file is too large." msgstr "" -#: htdocs/luci-static/resources/fs-prefs.js:1133 +#: htdocs/luci-static/resources/fs-assets.js:325 msgctxt "footstrap" msgid "That image is too large." msgstr "" -#: htdocs/luci-static/resources/fs-prefs.js:1026 +#: htdocs/luci-static/resources/fs-assets.js:168 msgctxt "footstrap" msgid "The router refused to delete the file (ubus status %d)." msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:171 -#: htdocs/luci-static/resources/fs-appearance.js:360 +#: htdocs/luci-static/resources/fs-appearance.js:333 +#: htdocs/luci-static/resources/fs-appearance.js:480 msgctxt "footstrap" msgid "Theme" msgstr "" -#: ucode/template/themes/footstrap/partials/notices.ut:14 +#: ucode/template/themes/footstrap/partials/notices.ut:13 msgid "" "There is no password set on this router. Please configure a root password to " "protect the web interface." msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:504 +#: htdocs/luci-static/resources/fs-appearance.js:607 msgctxt "footstrap" msgid "" "This browser is not storing preferences (site data is blocked), so a change " @@ -456,86 +454,81 @@ msgid "" "every browser." msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:214 +#: htdocs/luci-static/resources/fs-appearance.js:702 +msgctxt "footstrap" +msgid "This theme is not translated on this router yet." +msgstr "" + +#: htdocs/luci-static/resources/fs-appearance.js:374 msgctxt "footstrap" msgid "Tint (router identification)" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:229 +#: htdocs/luci-static/resources/fs-appearance.js:387 msgctxt "footstrap" msgid "Tint strength" msgstr "" -#: htdocs/luci-static/resources/fs-widgets.js:264 +#: htdocs/luci-static/resources/fs-appearance.js:190 msgctxt "footstrap" msgid "Too faint to read %s" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:168 +#: htdocs/luci-static/resources/fs-appearance.js:330 msgctxt "footstrap" msgid "Top" msgstr "" -#: htdocs/luci-static/resources/fs-prefs.js:960 -#: htdocs/luci-static/resources/fs-prefs.js:963 -#: htdocs/luci-static/resources/fs-prefs.js:1043 -#: htdocs/luci-static/resources/fs-prefs.js:1144 -#: htdocs/luci-static/resources/fs-prefs.js:1147 +#: htdocs/luci-static/resources/fs-assets.js:30 msgctxt "footstrap" msgid "Upload failed." msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:402 -#: htdocs/luci-static/resources/fs-appearance.js:432 +#: htdocs/luci-static/resources/fs-appearance.js:531 msgctxt "footstrap" msgid "Uploading…" msgstr "" -#: ucode/template/themes/footstrap/sysauth.ut:76 +#: ucode/template/themes/footstrap/sysauth.ut:102 msgid "Username" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:447 +#: htdocs/luci-static/resources/fs-appearance.js:560 msgctxt "footstrap" msgid "Wallpaper" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:250 +#: htdocs/luci-static/resources/fs-appearance.js:403 msgctxt "footstrap" msgid "Warning" msgstr "" -#: ucode/template/themes/footstrap/partials/notices.ut:32 +#: ucode/template/themes/footstrap/partials/notices.ut:31 msgid "" "You must enable JavaScript in your browser or LuCI will not work properly." msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:290 +#: htdocs/luci-static/resources/fs-appearance.js:423 msgctxt "footstrap" msgid "in the sidebar" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:241 -#: htdocs/luci-static/resources/fs-appearance.js:247 -#: htdocs/luci-static/resources/fs-appearance.js:253 -#: htdocs/luci-static/resources/fs-appearance.js:259 -#: htdocs/luci-static/resources/fs-appearance.js:278 -#: htdocs/luci-static/resources/fs-appearance.js:297 +#: htdocs/luci-static/resources/fs-appearance.js:269 msgctxt "footstrap" msgid "on a card" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:284 +#: htdocs/luci-static/resources/fs-appearance.js:422 msgctxt "footstrap" msgid "on a control" msgstr "" -#: htdocs/luci-static/resources/fs-appearance.js:219 +#: htdocs/luci-static/resources/fs-appearance.js:379 msgctxt "footstrap" msgid "on the canvas" msgstr "" -#: htdocs/luci-static/resources/fs-prefs.js:1121 +#: htdocs/luci-static/resources/fs-assets.js:230 msgctxt "footstrap" msgid "" "the uploaded file could not be removed either; it is still on the router." diff --git a/luci-theme-footstrap/styles/pages/80-appearance.css b/luci-theme-footstrap/styles/pages/80-appearance.css index f7dedd919..e7e85a486 100644 --- a/luci-theme-footstrap/styles/pages/80-appearance.css +++ b/luci-theme-footstrap/styles/pages/80-appearance.css @@ -186,6 +186,18 @@ .fs-ap-version { font-size: var(--fs-type-xs); color: var(--fs-dim); font-variant-numeric: tabular-nums; text-decoration: none; } .fs-ap-version:hover { color: var(--fs-accent); text-decoration: underline; } + /* The line that names the missing catalogue package. Same weight as the version beside it — + * it is a fact about this router, not a warning: nothing is broken, one package is absent. + * Wraps, because the package name is 24 characters and the column is narrow at 390px. */ + .fs-ap-i18n { + flex-wrap: wrap; + font-size: var(--fs-type-xs); + color: var(--fs-dim); + } + /* the chip is base/20-typography.css's `code`; only the size follows the line it sits in, which + * is a step smaller than body text */ + .fs-ap-i18n code { font-size: inherit; } + /* No rules here for a segmented control or a range slider of our own: the page draws its enums * with `ui.Select` and its numbers with `ui.RangeSlider`, which this theme already styles for * every other LuCI form. Two copies of a slider, one of them ours, was the thing to delete. */