diff --git a/agentflow/Makefile b/agentflow/Makefile index 4ccfda127..e80fec286 100644 --- a/agentflow/Makefile +++ b/agentflow/Makefile @@ -15,7 +15,7 @@ AGENTFLOW_HASH_aarch64:=7790a94a0a04e57d196165ef96177475125c1b24fe24321f6927a55b PKG_NAME:=agentflow PKG_VERSION:=0.3.5 -PKG_RELEASE:=15 +PKG_RELEASE:=16 AGENTFLOW_URL_FILE:=agentflow-linux-$(AGENTFLOW_ARCH) AGENTFLOW_DOWNLOAD:=$(AGENTFLOW_URL_FILE)-$(AGENTFLOW_HASH_$(ARCH)) @@ -52,16 +52,28 @@ define Package/$(PKG_NAME)/conffiles /etc/config/agentflow endef +define Package/$(PKG_NAME)/postinst +#!/bin/sh +# Compatibility entry for desktops which only scan the old directory. +root="$${IPKG_INSTROOT:-}" +legacy="$${root}/usr/share/linkeasefull/desktop-apps.d/30-agentflow.json" +if [ ! -e "$${legacy}" ] && [ ! -L "$${legacy}" ]; then + mkdir -p "$${legacy%/*}" + ln -s /usr/share/agentflow/agentflow-plugin.json "$${legacy}" || exit $$? +fi +exit 0 +endef + define Package/$(PKG_NAME)/prerm #!/bin/sh -if [ "$${IPKG_INSTROOT}" = "" ]; then - if [ "$$(readlink /usr/share/linkeasefull/desktop-apps.d/30-agentflow.json 2>/dev/null)" = "/usr/share/agentflow/agentflow-plugin.json" ]; then - rm -f /usr/share/linkeasefull/desktop-apps.d/30-agentflow.json +root="$${IPKG_INSTROOT:-}" +for directory in /usr/share/linkease/apps.d /usr/share/linkeasefull/desktop-apps.d; do + registration="$${root}$${directory}/30-agentflow.json" + if [ "$$(readlink "$${registration}" 2>/dev/null)" = "/usr/share/agentflow/agentflow-plugin.json" ]; then + rm -f "$${registration}" fi - if [ "$$(readlink /usr/share/linkease/apps.d/30-agentflow.json 2>/dev/null)" = "/usr/share/agentflow/agentflow-plugin.json" ]; then - rm -f /usr/share/linkease/apps.d/30-agentflow.json - fi -fi +done +rmdir "$${root}/usr/share/linkeasefull/desktop-apps.d" 2>/dev/null || true exit 0 endef @@ -77,14 +89,13 @@ define Build/Compile endef define Package/$(PKG_NAME)/install - $(INSTALL_DIR) $(1)/usr/sbin $(1)/etc/init.d $(1)/etc/uci-defaults $(1)/etc/config $(1)/usr/share/agentflow/www $(1)/usr/share/linkease/apps.d $(1)/usr/share/linkeasefull/desktop-apps.d + $(INSTALL_DIR) $(1)/usr/sbin $(1)/etc/init.d $(1)/etc/uci-defaults $(1)/etc/config $(1)/usr/share/agentflow/www $(1)/usr/share/linkease/apps.d $(INSTALL_BIN) $(PKG_BUILD_DIR)/agentflow $(1)/usr/sbin/agentflow $(INSTALL_BIN) ./files/agentflow.init $(1)/etc/init.d/agentflow $(INSTALL_BIN) ./files/agentflow.uci-default $(1)/etc/uci-defaults/09-agentflow $(INSTALL_CONF) ./files/agentflow.config $(1)/etc/config/agentflow $(INSTALL_DATA) ./files/agentflow-plugin.json $(1)/usr/share/agentflow/agentflow-plugin.json $(INSTALL_DATA) ./files/www/logo.svg $(1)/usr/share/agentflow/www/logo.svg - ln -sf /usr/share/agentflow/agentflow-plugin.json $(1)/usr/share/linkeasefull/desktop-apps.d/30-agentflow.json ln -sf /usr/share/agentflow/agentflow-plugin.json $(1)/usr/share/linkease/apps.d/30-agentflow.json endef diff --git a/baidudrive/Makefile b/baidudrive/Makefile index cf1049b9d..a9ab12ad3 100644 --- a/baidudrive/Makefile +++ b/baidudrive/Makefile @@ -11,7 +11,7 @@ PKG_ARCH_BAIDUDRIVE:=$(ARCH) PKG_NAME:=baidudrive PKG_VERSION:=1.0.6 -PKG_RELEASE:=22 +PKG_RELEASE:=23 PKG_SOURCE:=$(PKG_NAME)-binary-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://github.com/istoreos/istoreos-app-hub/releases/download/baidudrive-runtime-v$(PKG_VERSION)/ PKG_HASH:=skip @@ -41,16 +41,28 @@ define Package/$(PKG_NAME)/conffiles /etc/config/baidudrive endef +define Package/$(PKG_NAME)/postinst +#!/bin/sh +# Compatibility entry for desktops which only scan the old directory. +root="$${IPKG_INSTROOT:-}" +legacy="$${root}/usr/share/linkeasefull/desktop-apps.d/10-baidudrive-plugin.json" +if [ ! -e "$${legacy}" ] && [ ! -L "$${legacy}" ]; then + mkdir -p "$${legacy%/*}" + ln -s /usr/share/baidudrive/baidudrive-plugin.json "$${legacy}" || exit $$? +fi +exit 0 +endef + define Package/$(PKG_NAME)/prerm #!/bin/sh -if [ "$${IPKG_INSTROOT}" = "" ]; then - if [ "$$(readlink /usr/share/linkeasefull/desktop-apps.d/10-baidudrive-plugin.json 2>/dev/null)" = "/usr/share/baidudrive/baidudrive-plugin.json" ]; then - rm -f /usr/share/linkeasefull/desktop-apps.d/10-baidudrive-plugin.json +root="$${IPKG_INSTROOT:-}" +for directory in /usr/share/linkease/apps.d /usr/share/linkeasefull/desktop-apps.d; do + registration="$${root}$${directory}/10-baidudrive-plugin.json" + if [ "$$(readlink "$${registration}" 2>/dev/null)" = "/usr/share/baidudrive/baidudrive-plugin.json" ]; then + rm -f "$${registration}" fi - if [ "$$(readlink /usr/share/linkease/apps.d/10-baidudrive-plugin.json 2>/dev/null)" = "/usr/share/baidudrive/baidudrive-plugin.json" ]; then - rm -f /usr/share/linkease/apps.d/10-baidudrive-plugin.json - fi -fi +done +rmdir "$${root}/usr/share/linkeasefull/desktop-apps.d" 2>/dev/null || true exit 0 endef @@ -61,11 +73,10 @@ define Build/Compile endef define Package/$(PKG_NAME)/install - $(INSTALL_DIR) $(1)/usr/sbin $(1)/usr/libexec/baidudrive $(1)/usr/share/baidudrive/www $(1)/usr/share/linkease/apps.d $(1)/usr/share/linkeasefull/desktop-apps.d $(1)/opt/baidunas-sdk $(1)/opt/baidunas-glibc $(1)/etc/init.d $(1)/etc/uci-defaults $(1)/etc/config + $(INSTALL_DIR) $(1)/usr/sbin $(1)/usr/libexec/baidudrive $(1)/usr/share/baidudrive/www $(1)/usr/share/linkease/apps.d $(1)/opt/baidunas-sdk $(1)/opt/baidunas-glibc $(1)/etc/init.d $(1)/etc/uci-defaults $(1)/etc/config $(INSTALL_BIN) $(PKG_BUILD_DIR)/baidudrive.$(PKG_ARCH_BAIDUDRIVE) $(1)/usr/sbin/baidudrive $(CP) $(PKG_BUILD_DIR)/web/dist/. $(1)/usr/share/baidudrive/www/ $(INSTALL_DATA) ./files/baidudrive-plugin.json $(1)/usr/share/baidudrive/baidudrive-plugin.json - ln -sf /usr/share/baidudrive/baidudrive-plugin.json $(1)/usr/share/linkeasefull/desktop-apps.d/10-baidudrive-plugin.json ln -sf /usr/share/baidudrive/baidudrive-plugin.json $(1)/usr/share/linkease/apps.d/10-baidudrive-plugin.json $(INSTALL_BIN) $(PKG_BUILD_DIR)/nas_sdk/$(PKG_ARCH_BAIDUDRIVE)/baiduNas $(1)/opt/baidunas-sdk/baiduNas $(INSTALL_BIN) $(PKG_BUILD_DIR)/nas_sdk/$(PKG_ARCH_BAIDUDRIVE)/P2PClient.bin $(1)/opt/baidunas-sdk/P2PClient.bin diff --git a/dockermanager/Makefile b/dockermanager/Makefile index 3e5398b24..94a56d720 100644 --- a/dockermanager/Makefile +++ b/dockermanager/Makefile @@ -10,7 +10,7 @@ PKG_ARCH_DOCKERMANAGER:=$(ARCH) PKG_NAME:=dockermanager PKG_VERSION:=0.1.2 -PKG_RELEASE:=9 +PKG_RELEASE:=10 PKG_SOURCE:=$(PKG_NAME)-binary-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://github.com/istoreos/istoreos-app-hub/releases/download/dockermanager-runtime-v$(PKG_VERSION)/ PKG_HASH:=skip @@ -37,16 +37,28 @@ define Package/$(PKG_NAME)/conffiles /etc/config/dockermanager endef +define Package/$(PKG_NAME)/postinst +#!/bin/sh +# Compatibility entry for desktops which only scan the old directory. +root="$${IPKG_INSTROOT:-}" +legacy="$${root}/usr/share/linkeasefull/desktop-apps.d/20-dockermanager-plugin.json" +if [ ! -e "$${legacy}" ] && [ ! -L "$${legacy}" ]; then + mkdir -p "$${legacy%/*}" + ln -s /usr/share/dockermanager/dockermanager-plugin.json "$${legacy}" || exit $$? +fi +exit 0 +endef + define Package/$(PKG_NAME)/prerm #!/bin/sh -if [ "$${IPKG_INSTROOT}" = "" ]; then - if [ "$$(readlink /usr/share/linkeasefull/desktop-apps.d/20-dockermanager-plugin.json 2>/dev/null)" = "/usr/share/dockermanager/dockermanager-plugin.json" ]; then - rm -f /usr/share/linkeasefull/desktop-apps.d/20-dockermanager-plugin.json +root="$${IPKG_INSTROOT:-}" +for directory in /usr/share/linkease/apps.d /usr/share/linkeasefull/desktop-apps.d; do + registration="$${root}$${directory}/20-dockermanager-plugin.json" + if [ "$$(readlink "$${registration}" 2>/dev/null)" = "/usr/share/dockermanager/dockermanager-plugin.json" ]; then + rm -f "$${registration}" fi - if [ "$$(readlink /usr/share/linkease/apps.d/20-dockermanager-plugin.json 2>/dev/null)" = "/usr/share/dockermanager/dockermanager-plugin.json" ]; then - rm -f /usr/share/linkease/apps.d/20-dockermanager-plugin.json - fi -fi +done +rmdir "$${root}/usr/share/linkeasefull/desktop-apps.d" 2>/dev/null || true exit 0 endef @@ -57,12 +69,11 @@ define Build/Compile endef define Package/$(PKG_NAME)/install - $(INSTALL_DIR) $(1)/usr/sbin $(1)/usr/share/dockermanager/www $(1)/usr/share/linkease/apps.d $(1)/usr/share/linkeasefull/desktop-apps.d $(1)/etc/init.d $(1)/etc/config + $(INSTALL_DIR) $(1)/usr/sbin $(1)/usr/share/dockermanager/www $(1)/usr/share/linkease/apps.d $(1)/etc/init.d $(1)/etc/config $(INSTALL_BIN) $(PKG_BUILD_DIR)/docker-manager.$(PKG_ARCH_DOCKERMANAGER) $(1)/usr/sbin/docker-manager $(CP) $(PKG_BUILD_DIR)/www/* $(1)/usr/share/dockermanager/www/ $(INSTALL_DATA) ./files/logo.svg $(1)/usr/share/dockermanager/www/logo.svg $(INSTALL_DATA) ./files/dockermanager-plugin.json $(1)/usr/share/dockermanager/dockermanager-plugin.json - ln -sf /usr/share/dockermanager/dockermanager-plugin.json $(1)/usr/share/linkeasefull/desktop-apps.d/20-dockermanager-plugin.json ln -sf /usr/share/dockermanager/dockermanager-plugin.json $(1)/usr/share/linkease/apps.d/20-dockermanager-plugin.json $(INSTALL_BIN) ./files/dockermanager.init $(1)/etc/init.d/dockermanager $(INSTALL_CONF) ./files/dockermanager.config $(1)/etc/config/dockermanager diff --git a/dufs/Makefile b/dufs/Makefile index ca4df9da7..71d03c418 100644 --- a/dufs/Makefile +++ b/dufs/Makefile @@ -6,21 +6,24 @@ include $(TOPDIR)/rules.mk PKG_NAME:=dufs PKG_VERSION:=0.47.0 -PKG_RELEASE:=3 +PKG_RELEASE:=4 -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz -PKG_SOURCE_URL:=https://codeload.github.com/sigoden/dufs/tar.gz/v$(PKG_VERSION)? +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-vendor.tar.zst +PKG_SOURCE_URL:=@OPENWRT +PKG_SOURCE_PROTO:=cargo-vendor-github +PKG_VENDOR_REPO:=sigoden/dufs +PKG_VENDOR_TAG:=v$(PKG_VERSION) +PKG_VENDOR_HASH:=bab9d4fa1654adc6c88523b61bb8697f575334248cf554282e1f87e2329c0569 PKG_HASH:=skip PKG_MAINTAINER:=Tianling Shen PKG_LICENSE:=Apache-2.0 MIT PKG_LICENSE_FILES:=LICENSE-APACHE LICENSE-MIT -PKG_BUILD_DEPENDS:=rust/host PKG_BUILD_PARALLEL:=1 include $(INCLUDE_DIR)/package.mk -include $(TOPDIR)/feeds/packages/lang/rust/rust-package.mk +include $(INCLUDE_DIR)/rust-package.mk define Package/dufs SECTION:=net @@ -28,7 +31,7 @@ define Package/dufs SUBMENU:=Web Servers/Proxies TITLE:=A distinctive utility file server URL:=https://github.com/sigoden/dufs - DEPENDS:=$(RUST_ARCH_DEPENDS) @!(i386||mips64) +liblzma + DEPENDS:=$(RUST_PKG_DEPENDS) @!(i386||mips64) +liblzma endef define Package/dufs/description diff --git a/fastnet/Makefile b/fastnet/Makefile index 6c0258e9b..c49401c67 100644 --- a/fastnet/Makefile +++ b/fastnet/Makefile @@ -9,8 +9,8 @@ include $(TOPDIR)/rules.mk PKG_ARCH_FASTNET:=$(ARCH) PKG_NAME:=fastnet -PKG_VERSION:=0.8.1 -PKG_RELEASE:=9 +PKG_VERSION:=0.8.9 +PKG_RELEASE:=10 PKG_SOURCE:=$(PKG_NAME)-binary-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://github.com/istoreos/istoreos-app-hub/releases/download/fastnet-runtime-v$(PKG_VERSION)/ @@ -33,11 +33,17 @@ endef define Package/$(PKG_NAME)/prerm #!/bin/sh -if [ "$${IPKG_INSTROOT}" = "" ]; then - if [ "$$(readlink /usr/share/linkease/apps.d/17-fastnet.json 2>/dev/null)" = "/usr/share/fastnet/fastnet-plugin.json" ]; then - rm -f /usr/share/linkease/apps.d/17-fastnet.json - fi +if [ -z "$${IPKG_INSTROOT:-}" ]; then + /etc/init.d/fastnet stop 2>/dev/null || true fi +root="$${IPKG_INSTROOT:-}" +for directory in /usr/share/linkease/apps.d /usr/share/linkeasefull/desktop-apps.d; do + registration="$${root}$${directory}/17-fastnet.json" + if [ "$$(readlink "$${registration}" 2>/dev/null)" = "/usr/share/fastnet/fastnet-plugin.json" ]; then + rm -f "$${registration}" + fi +done +rmdir "$${root}/usr/share/linkeasefull/desktop-apps.d" 2>/dev/null || true exit 0 endef @@ -51,6 +57,9 @@ endef define Package/$(PKG_NAME)/postinst #!/bin/sh +# Maintain the old desktop entry without a second manifest or file owner. +root="$${IPKG_INSTROOT:-}" +sh "$${root}/usr/share/fastnet/register-desktop.sh" || exit $$? if [ -z "$${IPKG_INSTROOT}" ]; then [ -f /etc/uci-defaults/fastnet ] && /etc/uci-defaults/fastnet && rm -f /etc/uci-defaults/fastnet exit 0 @@ -70,6 +79,7 @@ define Package/$(PKG_NAME)/install $(INSTALL_BIN) ./files/fastnet.init $(1)/etc/init.d/fastnet $(INSTALL_BIN) ./files/fastnet.uci-default $(1)/etc/uci-defaults/fastnet $(INSTALL_DATA) ./files/fastnet-plugin.json $(1)/usr/share/fastnet/fastnet-plugin.json + $(INSTALL_BIN) ./files/register-desktop.sh $(1)/usr/share/fastnet/register-desktop.sh ln -sf /usr/share/fastnet/fastnet-plugin.json $(1)/usr/share/linkease/apps.d/17-fastnet.json endef diff --git a/fastnet/files/fastnet-plugin.json b/fastnet/files/fastnet-plugin.json index 87466e0aa..0bc531dce 100644 --- a/fastnet/files/fastnet-plugin.json +++ b/fastnet/files/fastnet-plugin.json @@ -29,9 +29,13 @@ } }, "config": { - "providerOrder": ["uci"], + "providerOrder": [ + "uci" + ], "providers": { - "uci": {"type": "uci"} + "uci": { + "type": "uci" + } } }, "window": { @@ -39,6 +43,22 @@ "height": 760, "singleton": true }, - "capabilities": ["speed-test", "diagnostics", "network"], - "categories": ["network", "service"] + "capabilities": [ + "speed-test", + "diagnostics", + "network" + ], + "categories": [ + "network", + "service" + ], + "backend": { + "type": "http", + "scheme": "http", + "host": "127.0.0.1", + "portFromUci": "fastnet.@fastnet[0].port", + "defaultPort": 3200, + "upstreamBasePath": "/", + "pathMode": "strip-public-base" + } } diff --git a/fastnet/files/fastnet.init b/fastnet/files/fastnet.init index 86119cb6d..49dc39390 100755 --- a/fastnet/files/fastnet.init +++ b/fastnet/files/fastnet.init @@ -21,6 +21,7 @@ start_service() { procd_open_instance procd_set_param limits nofile="65535 65535" procd_set_param command /usr/sbin/FastNet web --addr "$addr" --no-open + procd_set_param env FASTNET_CARD_SOCKET=/var/run/fastnet-card.sock FASTNET_CARD_STATE=/etc/fastnet/card-state.json [ -n "$token" ] && procd_append_param command --token "$token" [ "$logger" = 1 ] && procd_set_param stderr 1 procd_set_param respawn diff --git a/fastnet/files/register-desktop.sh b/fastnet/files/register-desktop.sh new file mode 100755 index 000000000..5c937592b --- /dev/null +++ b/fastnet/files/register-desktop.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# Called by the owning plugin and its metadata migration hook. +set -e +root="${IPKG_INSTROOT:-}" +manifest="/usr/share/fastnet/fastnet-plugin.json" +legacy="${root}/usr/share/linkeasefull/desktop-apps.d/17-fastnet.json" +[ -f "${root}${manifest}" ] || exit 0 +# Replace only the exact historical metadata payload; preserve custom entries. +if [ -f "${legacy}" ] && [ ! -L "${legacy}" ] && [ "$(sha256sum "${legacy}" | cut -d ' ' -f 1)" = "9ca279c3baca876bed3a4abe23d5edd69940fcaff4db17f27237e02c24cbabef" ]; then + rm -f "${legacy}" +fi +if [ ! -e "${legacy}" ] && [ ! -L "${legacy}" ]; then + mkdir -p "${legacy%/*}" + ln -s "${manifest}" "${legacy}" +fi diff --git a/istoreenhance/Makefile b/istoreenhance/Makefile index 20504bc0d..afb99762a 100644 --- a/istoreenhance/Makefile +++ b/istoreenhance/Makefile @@ -12,7 +12,7 @@ PKG_ARCH_ISTOREENHANCE:=$(ARCH) PKG_NAME:=istoreenhance # use PKG_SOURCE_DATE instead of PKG_VERSION for compitable PKG_SOURCE_DATE:=0.9.0 -PKG_RELEASE:=16 +PKG_RELEASE:=17 ARCH_HEXCODE:= ifeq ($(ARCH),x86_64) ARCH_HEXCODE=8664 @@ -56,6 +56,13 @@ endef define Package/$(PKG_NAME)/postinst #!/bin/sh +# Compatibility entry for desktops which only scan the old directory. +root="$${IPKG_INSTROOT:-}" +legacy="$${root}/usr/share/linkeasefull/desktop-apps.d/20-kspeeder.json" +if [ ! -e "$${legacy}" ] && [ ! -L "$${legacy}" ]; then + mkdir -p "$${legacy%/*}" + ln -s /usr/share/kspeeder/kspeeder-plugin.json "$${legacy}" || exit $$? +fi if [ -z "$${IPKG_INSTROOT}" ]; then [ -f /etc/uci-defaults/istoreenhance ] && /etc/uci-defaults/istoreenhance && rm -f /etc/uci-defaults/istoreenhance exit 0 @@ -64,14 +71,14 @@ endef define Package/$(PKG_NAME)/prerm #!/bin/sh -if [ "$${IPKG_INSTROOT}" = "" ]; then - if [ "$$(readlink /usr/share/linkeasefull/desktop-apps.d/20-kspeeder.json 2>/dev/null)" = "/usr/share/kspeeder/kspeeder-plugin.json" ]; then - rm -f /usr/share/linkeasefull/desktop-apps.d/20-kspeeder.json +root="$${IPKG_INSTROOT:-}" +for directory in /usr/share/linkease/apps.d /usr/share/linkeasefull/desktop-apps.d; do + registration="$${root}$${directory}/20-kspeeder.json" + if [ "$$(readlink "$${registration}" 2>/dev/null)" = "/usr/share/kspeeder/kspeeder-plugin.json" ]; then + rm -f "$${registration}" fi - if [ "$$(readlink /usr/share/linkease/apps.d/20-kspeeder.json 2>/dev/null)" = "/usr/share/kspeeder/kspeeder-plugin.json" ]; then - rm -f /usr/share/linkease/apps.d/20-kspeeder.json - fi -fi +done +rmdir "$${root}/usr/share/linkeasefull/desktop-apps.d" 2>/dev/null || true exit 0 endef @@ -82,7 +89,7 @@ define Build/Compile endef define Package/$(PKG_NAME)/install - $(INSTALL_DIR) $(1)/usr/sbin $(1)/etc/config $(1)/etc/init.d $(1)/etc/uci-defaults $(1)/usr/share/kspeeder/www $(1)/usr/share/linkease/apps.d $(1)/usr/share/linkeasefull/desktop-apps.d + $(INSTALL_DIR) $(1)/usr/sbin $(1)/etc/config $(1)/etc/init.d $(1)/etc/uci-defaults $(1)/usr/share/kspeeder/www $(1)/usr/share/linkease/apps.d $(INSTALL_BIN) $(PKG_BUILD_DIR)/iStoreEnhance.$(PKG_ARCH_ISTOREENHANCE) $(1)/usr/sbin/iStoreEnhance $(INSTALL_CONF) ./files/istoreenhance.config $(1)/etc/config/istoreenhance $(INSTALL_BIN) ./files/istoreenhance.init $(1)/etc/init.d/istoreenhance @@ -92,7 +99,6 @@ define Package/$(PKG_NAME)/install $(CP) $(KSPEEDER_WEB_ROOT)/* $(1)/usr/share/kspeeder/www/; \ fi $(INSTALL_DATA) ./files/logo.png $(1)/usr/share/kspeeder/www/logo.png - ln -sf /usr/share/kspeeder/kspeeder-plugin.json $(1)/usr/share/linkeasefull/desktop-apps.d/20-kspeeder.json ln -sf /usr/share/kspeeder/kspeeder-plugin.json $(1)/usr/share/linkease/apps.d/20-kspeeder.json endef diff --git a/kai/Makefile b/kai/Makefile index 92f6ef546..10539622d 100644 --- a/kai/Makefile +++ b/kai/Makefile @@ -11,7 +11,7 @@ PKG_ARCH_kai:=$(ARCH) PKG_NAME:=kai PKG_VERSION:=0.0.28 -PKG_RELEASE:=12 +PKG_RELEASE:=13 PKG_SOURCE:=$(PKG_NAME)-binary-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://github.com/istoreos/istoreos-app-hub/releases/download/kai-runtime-v$(PKG_VERSION)/ PKG_HASH:=skip @@ -39,16 +39,28 @@ define Package/$(PKG_NAME)/conffiles /etc/config/kai endef +define Package/$(PKG_NAME)/postinst +#!/bin/sh +# Compatibility entry for desktops which only scan the old directory. +root="$${IPKG_INSTROOT:-}" +legacy="$${root}/usr/share/linkeasefull/desktop-apps.d/05-kai-plugin.json" +if [ ! -e "$${legacy}" ] && [ ! -L "$${legacy}" ]; then + mkdir -p "$${legacy%/*}" + ln -s /usr/share/kai/kai-plugin.json "$${legacy}" || exit $$? +fi +exit 0 +endef + define Package/$(PKG_NAME)/prerm #!/bin/sh -if [ "$${IPKG_INSTROOT}" = "" ]; then - if [ "$$(readlink /usr/share/linkease/apps.d/05-kai-plugin.json 2>/dev/null)" = "/usr/share/kai/kai-plugin.json" ]; then - rm -f /usr/share/linkease/apps.d/05-kai-plugin.json +root="$${IPKG_INSTROOT:-}" +for directory in /usr/share/linkease/apps.d /usr/share/linkeasefull/desktop-apps.d; do + registration="$${root}$${directory}/05-kai-plugin.json" + if [ "$$(readlink "$${registration}" 2>/dev/null)" = "/usr/share/kai/kai-plugin.json" ]; then + rm -f "$${registration}" fi - if [ "$$(readlink /usr/share/linkeasefull/desktop-apps.d/05-kai-plugin.json 2>/dev/null)" = "/usr/share/kai/kai-plugin.json" ]; then - rm -f /usr/share/linkeasefull/desktop-apps.d/05-kai-plugin.json - fi -fi +done +rmdir "$${root}/usr/share/linkeasefull/desktop-apps.d" 2>/dev/null || true exit 0 endef @@ -59,7 +71,7 @@ define Build/Compile endef define Package/$(PKG_NAME)/install - $(INSTALL_DIR) $(1)/usr/sbin $(1)/usr/libexec $(1)/etc/init.d $(1)/etc/config $(1)/usr/share/kai/www $(1)/usr/share/linkease/apps.d $(1)/usr/share/linkeasefull/desktop-apps.d + $(INSTALL_DIR) $(1)/usr/sbin $(1)/usr/libexec $(1)/etc/init.d $(1)/etc/config $(1)/usr/share/kai/www $(1)/usr/share/linkease/apps.d $(INSTALL_BIN) $(PKG_BUILD_DIR)/kai.$(PKG_ARCH_kai) $(1)/usr/sbin/kai_bin $(INSTALL_BIN) ./files/kai-session-launch $(1)/usr/libexec/kai-session-launch $(INSTALL_BIN) ./files/kai.init $(1)/etc/init.d/kai @@ -67,7 +79,6 @@ define Package/$(PKG_NAME)/install $(INSTALL_DATA) ./files/kai-plugin.json $(1)/usr/share/kai/kai-plugin.json $(INSTALL_DATA) ./files/logo.png $(1)/usr/share/kai/www/logo.png ln -sf /usr/share/kai/kai-plugin.json $(1)/usr/share/linkease/apps.d/05-kai-plugin.json - ln -sf /usr/share/kai/kai-plugin.json $(1)/usr/share/linkeasefull/desktop-apps.d/05-kai-plugin.json endef $(eval $(call BuildPackage,$(PKG_NAME))) diff --git a/kaiplus/Makefile b/kaiplus/Makefile index 988d7d0f2..23c8ca9a3 100644 --- a/kaiplus/Makefile +++ b/kaiplus/Makefile @@ -9,13 +9,12 @@ include $(TOPDIR)/rules.mk KAIPLUS_ARCH_x86_64:=amd64 KAIPLUS_ARCH_aarch64:=arm64 KAIPLUS_ARCH:=$(KAIPLUS_ARCH_$(ARCH)) - KAIPLUS_HASH_x86_64:=945d1bcd7871426a10a77089512328e01e1db292f5dafbcf4e5c6b38f5a15cce KAIPLUS_HASH_aarch64:=8ea9ce946e42f95b02f98749869d4990008d7221705beb51a9a90c00a1b00f83 PKG_NAME:=kaiplus PKG_VERSION:=1.0.11 -PKG_RELEASE:=17 +PKG_RELEASE:=18 KAIPLUS_URL_FILE:=kaiplus-linux-$(KAIPLUS_ARCH) KAIPLUS_DOWNLOAD:=$(KAIPLUS_URL_FILE)-$(KAIPLUS_HASH_$(ARCH)) @@ -52,16 +51,28 @@ define Package/$(PKG_NAME)/conffiles /etc/config/kaiplus endef +define Package/$(PKG_NAME)/postinst +#!/bin/sh +# Compatibility entry for desktops which only scan the old directory. +root="$${IPKG_INSTROOT:-}" +legacy="$${root}/usr/share/linkeasefull/desktop-apps.d/00-kaiplus-plugin.json" +if [ ! -e "$${legacy}" ] && [ ! -L "$${legacy}" ]; then + mkdir -p "$${legacy%/*}" + ln -s /usr/share/kaiplus/kaiplus-plugin.json "$${legacy}" || exit $$? +fi +exit 0 +endef + define Package/$(PKG_NAME)/prerm #!/bin/sh -if [ "$${IPKG_INSTROOT}" = "" ]; then - if [ "$$(readlink /usr/share/linkeasefull/desktop-apps.d/00-kaiplus-plugin.json 2>/dev/null)" = "/usr/share/kaiplus/kaiplus-plugin.json" ]; then - rm -f /usr/share/linkeasefull/desktop-apps.d/00-kaiplus-plugin.json +root="$${IPKG_INSTROOT:-}" +for directory in /usr/share/linkease/apps.d /usr/share/linkeasefull/desktop-apps.d; do + registration="$${root}$${directory}/00-kaiplus-plugin.json" + if [ "$$(readlink "$${registration}" 2>/dev/null)" = "/usr/share/kaiplus/kaiplus-plugin.json" ]; then + rm -f "$${registration}" fi - if [ "$$(readlink /usr/share/linkease/apps.d/00-kaiplus-plugin.json 2>/dev/null)" = "/usr/share/kaiplus/kaiplus-plugin.json" ]; then - rm -f /usr/share/linkease/apps.d/00-kaiplus-plugin.json - fi -fi +done +rmdir "$${root}/usr/share/linkeasefull/desktop-apps.d" 2>/dev/null || true exit 0 endef @@ -77,11 +88,10 @@ define Build/Compile endef define Package/$(PKG_NAME)/install - $(INSTALL_DIR) $(1)/usr/sbin $(1)/usr/share/kaiplus $(1)/usr/share/linkease/apps.d $(1)/usr/share/linkeasefull/desktop-apps.d $(1)/etc/init.d $(1)/etc/config + $(INSTALL_DIR) $(1)/usr/sbin $(1)/usr/share/kaiplus $(1)/usr/share/linkease/apps.d $(1)/etc/init.d $(1)/etc/config $(INSTALL_BIN) $(PKG_BUILD_DIR)/kaiplus $(1)/usr/sbin/kaiplus $(INSTALL_DATA) ./files/logo.png $(1)/usr/share/kaiplus/logo.png $(INSTALL_DATA) ./files/kaiplus-plugin.json $(1)/usr/share/kaiplus/kaiplus-plugin.json - ln -sf /usr/share/kaiplus/kaiplus-plugin.json $(1)/usr/share/linkeasefull/desktop-apps.d/00-kaiplus-plugin.json ln -sf /usr/share/kaiplus/kaiplus-plugin.json $(1)/usr/share/linkease/apps.d/00-kaiplus-plugin.json $(INSTALL_BIN) ./files/kaiplus.init $(1)/etc/init.d/kaiplus $(INSTALL_CONF) ./files/kaiplus.config $(1)/etc/config/kaiplus diff --git a/libart/Makefile b/libart/Makefile new file mode 100644 index 000000000..a67a0d65f --- /dev/null +++ b/libart/Makefile @@ -0,0 +1,79 @@ +# +# Copyright (C) 2006-2010 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# +# Used by rrdtool only, no need to update it + +include $(TOPDIR)/rules.mk + +PKG_NAME:=libart +PKG_VERSION:=2.3.21 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)_lgpl-$(PKG_VERSION).tar.bz2 +PKG_SOURCE_URL:=@GNOME/$(PKG_NAME)_lgpl/2.3 +PKG_HASH:=skip + +PKG_LICENSE:=LGPL-2.0-or-later +PKG_LICENSE_FILES:=COPYING + +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)_lgpl-$(PKG_VERSION) + +PKG_FIXUP:=autoreconf + +PKG_INSTALL:=1 + +include $(INCLUDE_DIR)/package.mk + +define Package/libart + SECTION:=libs + CATEGORY:=Libraries + TITLE:=An high-performance 2D graphics library + URL:=http://www.levien.com/libart/ +endef + +define Package/libart/description + A library of functions for 2D graphics supporting a superset of the + PostScript imaging model, designed to be integrated with graphics, + artwork, and illustration programs. It is written in optimized C, and + is fully compatible with C++. With a small footprint of 10,000 lines of + code, it is especially suitable for embedded applications. +endef + +CONFIGURE_ARGS += \ + --enable-shared \ + --disable-static + +TARGET_CFLAGS += $(FPIC) + +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/bin $(2)/bin $(1)/usr/include $(1)/usr/lib/pkgconfig + $(INSTALL_BIN) \ + $(PKG_INSTALL_DIR)/usr/bin/libart2-config \ + $(1)/usr/bin/ + $(SED) \ + 's,^\(prefix\|exec_prefix\)=.*,\1=$(STAGING_DIR)/usr,g' \ + $(1)/usr/bin/libart2-config + $(LN) $(STAGING_DIR)/usr/bin/libart2-config $(2)/bin/ + + $(CP) \ + $(PKG_INSTALL_DIR)/usr/include/libart-2.0 \ + $(1)/usr/include/ + + $(CP) \ + $(PKG_INSTALL_DIR)/usr/lib/libart_lgpl_2.so* \ + $(1)/usr/lib/ + + $(INSTALL_DATA) \ + $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libart-2.0.pc \ + $(1)/usr/lib/pkgconfig/ +endef + +define Package/libart/install + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libart_lgpl_2.so.* $(1)/usr/lib/ +endef + +$(eval $(call BuildPackage,libart)) diff --git a/luci-app-cf-optimizer/Makefile b/luci-app-cf-optimizer/Makefile index 45025935d..e67e49747 100644 --- a/luci-app-cf-optimizer/Makefile +++ b/luci-app-cf-optimizer/Makefile @@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-cf-optimizer PKG_VERSION:=1.0.0 -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_LICENSE:=Apache-2.0 PKG_MAINTAINER:=Dante diff --git a/luci-app-cf-optimizer/root/etc/init.d/cf-optimizer b/luci-app-cf-optimizer/root/etc/init.d/cf-optimizer index 7e1cf574d..edbcf0ced 100755 --- a/luci-app-cf-optimizer/root/etc/init.d/cf-optimizer +++ b/luci-app-cf-optimizer/root/etc/init.d/cf-optimizer @@ -21,12 +21,11 @@ start_service() { procd_set_param respawn 3600 5 0 procd_set_param stdout 1 procd_set_param stderr 1 - procd_set_param pidfile /var/run/cf-optimizer/cf-optimizer.pid procd_close_instance } stop_service() { - rm -f /var/run/cf-optimizer/cf-optimizer.pid + : } service_stopped() { @@ -39,10 +38,8 @@ service_stopped() { } reload_service() { - "$PROG" sync-hosts >/dev/null 2>&1 stop start - "$PROG" run >/dev/null 2>&1 & } service_triggers() { diff --git a/luci-app-cf-optimizer/root/usr/sbin/cf-optimizer b/luci-app-cf-optimizer/root/usr/sbin/cf-optimizer index 0f3de3086..82ce87743 100755 --- a/luci-app-cf-optimizer/root/usr/sbin/cf-optimizer +++ b/luci-app-cf-optimizer/root/usr/sbin/cf-optimizer @@ -123,6 +123,7 @@ sync_hosts() { mkdir -p "$(dirname "$HOSTS_FILE")" > "$hosts_tmp" echo "# Auto-generated by cf-optimizer sync on $(date '+%Y-%m-%d %H:%M:%S')" >> "$hosts_tmp" + local d for d in $domains; do echo "$current_ip $d" >> "$hosts_tmp" done @@ -146,18 +147,19 @@ load_candidate_ips() { if [ "$ip_source" = "custom" ] || [ "$ip_source" = "mixed" ]; then append_custom_ip() { - local item="$1" - [ -z "$item" ] && return + local _item="$1" + local _base_prefix _host + [ -z "$_item" ] && return # 若为 CIDR 简单网段 (如 /24),取前 3 个 IP - case "$item" in + case "$_item" in */*) - local base_prefix=$(echo "$item" | cut -d'/' -f1 | cut -d'.' -f1-3) - for host in 1 2 3; do - echo "$base_prefix.$host" >> "$out_file" + _base_prefix=$(echo "$_item" | cut -d'/' -f1 | cut -d'.' -f1-3) + for _host in 1 2 3; do + echo "$_base_prefix.$_host" >> "$out_file" done ;; *) - echo "$item" | grep -E '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' >> "$out_file" + echo "$_item" | grep -E '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' >> "$out_file" ;; esac } @@ -225,14 +227,15 @@ run_optimization() { local target_colos="" append_target_colo() { - local item="$1" - [ -z "$item" ] && return - for c in $item; do - local clean_c=$(echo "$c" | tr 'a-z' 'A-Z' | tr -d ' \t\r\n') - if [ -n "$clean_c" ]; then + local _item="$1" + local _colo _clean_colo + [ -z "$_item" ] && return + for _colo in $_item; do + _clean_colo=$(echo "$_colo" | tr 'a-z' 'A-Z' | tr -d ' \t\r\n') + if [ -n "$_clean_colo" ]; then case " $target_colos " in - *" $clean_c "*) ;; - *) target_colos="$target_colos $clean_c" ;; + *" $_clean_colo "*) ;; + *) target_colos="$target_colos $_clean_colo" ;; esac fi done @@ -246,22 +249,23 @@ run_optimization() { fi check_colo_allowed() { - local colo="$1" - [ -z "$colo" ] && return 0 + local _colo="$1" + [ -z "$_colo" ] && return 0 [ "$colo_filter_mode" = "none" ] && return 0 - local match=0 - for c in $target_colos; do - if [ "$c" = "$colo" ]; then - match=1 + local _match=0 + local _tc + for _tc in $target_colos; do + if [ "$_tc" = "$_colo" ]; then + _match=1 break fi done if [ "$colo_filter_mode" = "exclude" ]; then - [ "$match" -eq 1 ] && return 1 || return 0 + [ "$_match" -eq 1 ] && return 1 || return 0 elif [ "$colo_filter_mode" = "include" ]; then - [ "$match" -eq 1 ] && return 0 || return 1 + [ "$_match" -eq 1 ] && return 0 || return 1 fi return 0 } @@ -339,6 +343,7 @@ run_optimization() { # 阶段二:轮询交叉时序采样(跨越完整测试时段,精准捕获阶段性丢包与网络毛刺) mkdir -p "$TMP_DIR/samples" + local seq for seq in $(seq 1 "$sample_count"); do while read -r ip; do [ -z "$ip" ] && continue @@ -518,6 +523,7 @@ run_optimization() { mkdir -p "$(dirname "$HOSTS_FILE")" > "$hosts_tmp" echo "# Auto-generated by cf-optimizer on $(date '+%Y-%m-%d %H:%M:%S')" >> "$hosts_tmp" + local d for d in $domains; do echo "$final_ip $d" >> "$hosts_tmp" done @@ -609,6 +615,7 @@ apply_fast_failover() { mkdir -p "$(dirname "$HOSTS_FILE")" > "$hosts_tmp" echo "# Auto-generated by cf-optimizer failover on $(date '+%Y-%m-%d %H:%M:%S')" >> "$hosts_tmp" + local d for d in $domains; do echo "$target_ip $d" >> "$hosts_tmp" done @@ -758,8 +765,9 @@ check_health_and_failover() { } daemon_loop() { + mkdir -p "$RUN_DIR" echo $$ > "$PID_FILE" - trap 'rm -f "$PID_FILE"; exit 0' INT TERM EXIT + trap 'rm -f "$PID_FILE"; [ -f "$RUN_DIR/task.lock/pid" ] && [ "$(cat "$RUN_DIR/task.lock/pid" 2>/dev/null)" = "$$" ] && rm -rf "$RUN_DIR/task.lock"; exit 0' INT TERM EXIT log "守护进程启动 [PID: $$]" diff --git a/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js b/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js index 3c2b480e4..5530179c8 100644 --- a/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js +++ b/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js @@ -358,7 +358,7 @@ return view.extend({ o.titleref = L.url("admin", "system", "package-manager") o.rawhtml = true; o.title = '' + _("DNS requests via TCP not supported") + ''; - o.cfgvalue = function() { return _("BusyBox's nslookup and hostip do not support TCP " + + o.cfgvalue = function() { return _("BusyBox's nslookup does not support TCP " + "instead of the default UDP when sending requests to the DNS server!") + "
- " + _("Install 'bind-host' or 'knot-host' or 'drill' package if you know you need TCP for DNS requests.")}; @@ -372,7 +372,7 @@ return view.extend({ o.cfgvalue = function() { return _("BusyBox's nslookup in the current compiled version " + "does not handle given DNS Servers correctly!") + "
- " + - _("You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' package, " + + _("You should install 'bind-host' or 'knot-host' or 'drill' package, " + "if you need to specify a DNS server to detect your registered IP.")}; } diff --git a/luci-app-ddns/po/de/ddns.po b/luci-app-ddns/po/de/ddns.po index b4401e47b..32b9c74d7 100644 --- a/luci-app-ddns/po/de/ddns.po +++ b/luci-app-ddns/po/de/ddns.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: luci-app-ddns 2.4.2-1\n" "POT-Creation-Date: 2016-09-25 10:43+0200\n" -"PO-Revision-Date: 2026-09-08 12:39+0000\n" -"Last-Translator: HerbJul <19JulianHerbst95@web.de>\n" +"PO-Revision-Date: 2026-11-04 16:54+0000\n" +"Last-Translator: Dirk Brenken \n" "Language-Team: German \n" "Language: de\n" @@ -11,7 +11,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2026.9.1\n" +"X-Generator: Weblate 2026.11.1.dev0\n" "X-Poedit-SourceCharset: UTF-8\n" "X-Poedit-Basepath: .\n" @@ -393,7 +393,7 @@ msgstr "Service installieren" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:810 #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:860 msgid "Interface" -msgstr "Interface" +msgstr "Schnittstelle" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1005 msgid "Interval to force an update at the DDNS Provider" @@ -716,7 +716,7 @@ msgstr "Status-Verzeichnis" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:564 msgid "Stop" -msgstr "Stopp" +msgstr "Stoppen" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:201 msgid "Stop DDNS" diff --git a/luci-app-ddns/po/hu/ddns.po b/luci-app-ddns/po/hu/ddns.po index 927474293..7b40ca0ef 100644 --- a/luci-app-ddns/po/hu/ddns.po +++ b/luci-app-ddns/po/hu/ddns.po @@ -2,8 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: luci-app-ddns 2.4.0-1\n" "POT-Creation-Date: 2016-01-30 11:07+0100\n" -"PO-Revision-Date: 2025-05-08 13:02+0000\n" -"Last-Translator: hmzs \n" +"PO-Revision-Date: 2026-11-05 07:53+0000\n" +"Last-Translator: Kövecses József " +"\n" "Language-Team: Hungarian \n" "Language: hu\n" @@ -11,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.12-dev\n" +"X-Generator: Weblate 2026.11.1.dev0\n" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:423 msgid "\"../\" not allowed in path for Security Reason." @@ -36,7 +37,7 @@ msgstr "Nem nyilvános IP-k engedélyezése" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:604 msgid "Basic Settings" -msgstr "Alapszintű beállítások" +msgstr "Alapbeállítások" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:902 msgid "Bind Network" @@ -52,7 +53,7 @@ msgid "" "when sending requests to the DNS server!" msgstr "" "A BusyBox nslookup és hostip függvényei az alapértelmezett UDP helyett nem " -"támogatják a TCP-t, amikor kéréseket küldenek a DNS-kiszolgálónak!" +"támogatják a TCP-t, amikor kéréseket küldenek a DNS-szervernek!" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:372 msgid "" @@ -60,17 +61,19 @@ msgid "" "Servers correctly!" msgstr "" "A BusyBox nslookup függvénye az aktuális verzióban nem kezeli helyesen a " -"megadott DNS-kiszolgálókat!" +"megadott DNS-szervereket!" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:443 msgid "CA cert bundle file" -msgstr "" +msgstr "CA-tanúsítványcsomag fájlja" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:444 msgid "" "CA certificate bundle file that will be used to download services data. Set " "IGNORE to skip certificate validation." msgstr "" +"A szolgáltatásadatok letöltéséhez használt CA-tanúsítványcsomag fájlja. A " +"tanúsítvány-ellenőrzés kihagyásához adja meg az IGNORE értéket." #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:532 msgid "Cancel" @@ -86,7 +89,7 @@ msgstr "Ellenőrzés mértékegysége" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/status/include/70_ddns.js:27 msgid "Configuration" -msgstr "Beállítás" +msgstr "Beállítások" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:226 #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1133 @@ -115,8 +118,8 @@ msgstr "Jelenlegi beállítás:" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:276 msgid "Currently DDNS updates are not started at boot or on interface events." msgstr "" -"Jelenleg a DDNS frissítések nincsenek elindítva a rendszerindításkor vagy a " -"csatolóeseményeknél." +"Jelenleg a DDNS frissítések nincsenek elindítva a rendszerindításkor vagy az " +"interfészeseményeknél." #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:725 msgid "Custom update script for updating your DDNS Provider." @@ -133,7 +136,7 @@ msgstr "Egyéni frissítő parancsfájl" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:284 msgid "DDNS" -msgstr "" +msgstr "DDNS" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:207 #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:279 @@ -160,7 +163,7 @@ msgstr "a TCP-n keresztüli DNS-kérések nem támogatottak" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:923 msgid "DNS-Server" -msgstr "DNS-kiszolgáló" +msgstr "DNS-szerver" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:401 msgid "Date format" @@ -174,7 +177,7 @@ msgstr "" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:861 msgid "Defines the interface to read systems IP-Address from" msgstr "" -"Meghatározza azt a csatolót, amelyből a rendszerek IP-címeit olvasni kell" +"Meghatározza azt az interfészt, amelyből a rendszerek IP-címeit olvasni kell" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:843 msgid "Defines the network to read systems IP-Address from" @@ -218,7 +221,7 @@ msgstr "Hiba" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1039 msgid "Error Max Retry Counter" -msgstr "" +msgstr "Hiba esetén az újrapróbálkozások legnagyobb száma" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1049 msgid "Error Retry Interval" @@ -243,7 +246,7 @@ msgstr "Fájl" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:709 msgid "Follow instructions found on their WEB page." -msgstr "" +msgstr "Kövesse a webhelyükön található utasításokat." #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:403 msgid "For supported codes look here" @@ -263,7 +266,7 @@ msgstr "TCP kényszerítése a DNS-en" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1030 msgid "Force Unit" -msgstr "" +msgstr "Kényszerítés mértékegysége" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:947 msgid "Format" @@ -279,11 +282,11 @@ msgid "" "interface." msgstr "" "A GNU Wget az adott hálózat IP-jét fogja használni, a cURL a fizikai " -"csatolót fogja használni." +"interfészt fogja használni." #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:265 msgid "Global Settings" -msgstr "" +msgstr "Globális beállítások" #: applications/luci-app-ddns/root/usr/share/rpcd/acl.d/luci-app-ddns.json:3 msgid "Grant access to ddns procedures" @@ -345,7 +348,7 @@ msgstr "" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:384 msgid "If using secure communication you should verify server certificates!" msgstr "" -"Biztonságos kommunikáció használatakor ellenőriznie kell a kiszolgáló " +"Biztonságos kommunikáció használatakor ellenőriznie kell a szerver " "tanúsítványait!" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:325 @@ -359,7 +362,7 @@ msgstr "" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:962 msgid "Info" -msgstr "Infó" +msgstr "Információ" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:264 msgid "Information" @@ -378,15 +381,17 @@ msgid "" "Install 'ca-certificates' package or needed certificates by hand into /etc/" "ssl/certs default directory" msgstr "" +"Telepítse a 'ca-certificates' csomagot, vagy másolja kézzel a szükséges " +"tanúsítványokat az alapértelmezett /etc/ssl/certs könyvtárba" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:668 msgid "Install Service" -msgstr "" +msgstr "Szolgáltatás telepítése" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:810 #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:860 msgid "Interface" -msgstr "Csatoló" +msgstr "Interfész" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1005 msgid "Interval to force an update at the DDNS Provider" @@ -424,7 +429,7 @@ msgstr "Naplózás fájlba" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:956 msgid "Log to syslog" -msgstr "Naplózás a rendszernaplóba" +msgstr "Naplózás a rendszernaplóba (syslog)" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:619 #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1129 @@ -434,7 +439,7 @@ msgstr "Gépnév keresése" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:805 msgid "Method used to determine the system IP-Address to send in updates" -msgstr "" +msgstr "A frissítésekben küldendő rendszer-IP-cím meghatározásának módja" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:491 #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1123 @@ -454,12 +459,12 @@ msgid "" "Neither GNU Wget with SSL nor cURL is installed to support secure updates " "via HTTPS protocol." msgstr "" -"Sem az SSL-lel rendelkező GNU Wget, sem a cURL nincs telepítve a HTTPS " +"Sem az SSL-lel rendelkező GNU Wget, sem a cURL nincs telepítve a HTTPS-" "protokollon keresztüli biztonságos frissítések támogatásához." #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:613 msgid "Neither from LuCI interface nor from console." -msgstr "" +msgstr "Sem a LuCI felületéről, sem a konzolról." #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:808 #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:842 @@ -480,7 +485,7 @@ msgstr "Soha" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:494 msgid "New DDns Service…" -msgstr "Új DDNS szolgáltatás…" +msgstr "Új DDNS-szolgáltatás…" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1144 #: applications/luci-app-ddns/htdocs/luci-static/resources/view/status/include/70_ddns.js:28 @@ -489,7 +494,7 @@ msgstr "Következő frissítés" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1144 msgid "Next Verify" -msgstr "" +msgstr "Következő ellenőrzés" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:227 #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1134 @@ -540,18 +545,20 @@ msgstr "ELHAGYHATÓ: a kommunikációhoz használandó hálózat" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:945 msgid "OPTIONAL: Proxy-Server for detection and updates." -msgstr "ELHAGYHATÓ: proxy-kiszolgáló a felismeréshez és a frissítésekhez." +msgstr "ELHAGYHATÓ: proxy-szerver a felismeréshez és a frissítésekhez." #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:924 msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'." msgstr "" -"ELHAGYHATÓ: nem alapértelmezett DNS-kiszolgáló használata a „Regisztrált IP” " +"ELHAGYHATÓ: nem alapértelmezett DNS-szerver használata a „Regisztrált IP” " "felismeréséhez." #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1040 msgid "" "On Error the script will stop execution after the given number of retries." msgstr "" +"Hiba esetén a parancsfájl a megadott számú újrapróbálkozás után leállítja a " +"végrehajtást." #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:767 msgid "Optional Encoded Parameter" @@ -575,7 +582,7 @@ msgstr "" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:944 msgid "PROXY-Server" -msgstr "Proxy-kiszolgáló" +msgstr "Proxy-szerver" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:758 msgid "Password" @@ -599,7 +606,7 @@ msgstr "Nyomja meg a [Beolvasás] gombot" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:717 #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:739 msgid "Provide either an Update Script OR an Update URL" -msgstr "" +msgstr "Adjon meg vagy egy frissítő parancsfájlt, VAGY egy frissítési URL-t" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1068 msgid "Read / Reread log file" @@ -607,7 +614,7 @@ msgstr "Naplófájl olvasása vagy újraolvasása" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:691 msgid "Really switch service?" -msgstr "" +msgstr "Biztosan vált szolgáltatást?" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1129 #: applications/luci-app-ddns/htdocs/luci-static/resources/view/status/include/70_ddns.js:30 @@ -624,7 +631,7 @@ msgstr "A szolgáltatás újratöltése" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:747 msgid "Replaces [DOMAIN] in Update-URL (URL-encoded)" -msgstr "" +msgstr "Lecseréli a [DOMAIN] értéket a frissítési URL-ben (URL-kódoltan)" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:759 msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)" @@ -641,7 +648,7 @@ msgstr "DDns újraindítása" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1057 msgid "Retry Unit" -msgstr "" +msgstr "Újrapróbálkozás mértékegysége" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:17 msgid "Run once" @@ -655,23 +662,23 @@ msgstr "Fut" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:811 #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:868 msgid "Script" -msgstr "Parancsfájl" +msgstr "Szkript" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:517 #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:655 msgid "Select a service" -msgstr "" +msgstr "Válasszon szolgáltatást" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:518 #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:657 #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:677 msgid "Service doesn't support this IP type" -msgstr "" +msgstr "A szolgáltatás nem támogatja ezt az IP-típust" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:656 #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:667 msgid "Service not installed" -msgstr "" +msgstr "A szolgáltatás nincs telepítve" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:455 msgid "Services" @@ -679,21 +686,23 @@ msgstr "Szolgáltatások" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:450 msgid "Services URL Download" -msgstr "" +msgstr "Szolgáltatáslista letöltési URL-je" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:294 msgid "Services list last update" -msgstr "" +msgstr "A szolgáltatáslista utolsó frissítése" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1007 msgid "Setting this parameter to 0 will force the script to only run once" -msgstr "" +msgstr "Ha ezt a paramétert 0-ra állítja, a parancsfájl csak egyszer fut le" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:451 msgid "" "Source URL for services file. Defaults to the master openwrt ddns package " "repo." msgstr "" +"A szolgáltatásfájl forrás-URL-je. Alapértelmezés szerint az openwrt ddns " +"csomag fő tárolója." #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:201 msgid "Start DDNS" @@ -713,7 +722,7 @@ msgstr "Állapotkönyvtár" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:564 msgid "Stop" -msgstr "Megállítás" +msgstr "Leállítás" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:201 msgid "Stop DDNS" @@ -725,11 +734,11 @@ msgstr "A szolgáltatás leállítása" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:19 msgid "Stopped" -msgstr "Megállítva" +msgstr "Leállítva" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:692 msgid "Switch service" -msgstr "" +msgstr "Szolgáltatás váltása" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1042 msgid "The default setting of '0' will retry infinitely." @@ -754,10 +763,12 @@ msgid "" "This is only a problem with multiple WAN interfaces and your DDNS provider " "is unreachable via one of them." msgstr "" +"Ez csak akkor jelent problémát, ha több WAN-interfész van, és a DDNS-" +"szolgáltató valamelyiken keresztül nem érhető el." #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1084 msgid "This is the current content of the log file in %h for this service." -msgstr "" +msgstr "Ez a szolgáltatás naplófájljának (%h) jelenlegi tartalma." #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:210 #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:277 @@ -770,7 +781,7 @@ msgstr "" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:892 msgid "This will be autoset to the selected interface" -msgstr "Ez automatikusan be lesz állítva a kiválasztott csatolóhoz" +msgstr "Ez automatikusan be lesz állítva a kiválasztott interfészhez" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:606 msgid "Timer Settings" @@ -794,11 +805,11 @@ msgstr "Ismeretlen" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:301 msgid "Update DDns Services List" -msgstr "" +msgstr "DDns-szolgáltatáslista frissítése" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:682 msgid "Update URL" -msgstr "" +msgstr "Frissítési URL" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:707 msgid "Update URL for updating your DDNS Provider." @@ -824,7 +835,7 @@ msgstr "Felhasználónév" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:371 msgid "Using specific DNS Server not supported" -msgstr "Bizonyos DNS-kiszolgáló használata nem támogatott" +msgstr "Bizonyos DNS-szerver használata nem támogatott" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:989 msgid "Values below 5 minutes == 300 seconds are not supported" @@ -876,6 +887,8 @@ msgid "" "You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' " "package, if you need to specify a DNS server to detect your registered IP." msgstr "" +"Ha DNS-szervert kell megadnia a regisztrált IP-cím észleléséhez, telepítse a " +"'bind-host', 'knot-host', 'drill' vagy 'hostip' csomagot." #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:323 msgid "" @@ -945,7 +958,7 @@ msgstr "másodperc" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:791 msgid "to run HTTPS without verification of server certificates (insecure)" msgstr "" -"HTTPS futtatásához a kiszolgáló tanúsítványainak ellenőrzése nélkül (nem " +"HTTPS futtatásához a szerver tanúsítványainak ellenőrzése nélkül (nem " "biztonságos)" #~ msgid "DDns" diff --git a/luci-app-ddns/po/it/ddns.po b/luci-app-ddns/po/it/ddns.po index 05372b6c9..1758cbe57 100644 --- a/luci-app-ddns/po/it/ddns.po +++ b/luci-app-ddns/po/it/ddns.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: luci-app-ddns 2.4.0-1\n" "POT-Creation-Date: 2016-01-30 11:07+0100\n" -"PO-Revision-Date: 2026-05-26 15:21+0000\n" -"Last-Translator: Stefano Mora \n" +"PO-Revision-Date: 2026-11-05 21:33+0000\n" +"Last-Translator: Martin Olmer \n" "Language-Team: Italian \n" "Language: it\n" @@ -11,7 +11,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2026.6.dev0\n" +"X-Generator: Weblate 2026.11.2.dev0\n" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:423 msgid "\"../\" not allowed in path for Security Reason." @@ -28,7 +28,7 @@ msgstr "Aggiungi un nuovo servizio..." #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:605 msgid "Advanced Settings" -msgstr "Impostazioni Avanzate" +msgstr "Impostazioni avanzate" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:392 msgid "Allow non-public IPs" @@ -469,7 +469,7 @@ msgstr "Rete" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:887 #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:905 msgid "Network on which the ddns-updater scripts will be started" -msgstr "Rete su cui lo script di aggiornamento DDNS sara avviato" +msgstr "Rete su cui lo script di aggiornamento DDNS sarà avviato" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:228 #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1148 @@ -749,6 +749,8 @@ msgid "" "This is only a problem with multiple WAN interfaces and your DDNS provider " "is unreachable via one of them." msgstr "" +"Questo è un problema solo con interfacce WAN multiple e il tuo fornitore " +"DDNS è irraggiungibile tramite una di esse." #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1084 msgid "This is the current content of the log file in %h for this service." @@ -794,7 +796,7 @@ msgstr "Aggiorna l'elenco dei servizi DDNS" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:682 msgid "Update URL" -msgstr "" +msgstr "URL di aggiornamento" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:707 msgid "Update URL for updating your DDNS Provider." diff --git a/luci-app-ddns/po/ja/ddns.po b/luci-app-ddns/po/ja/ddns.po index 93c6e4972..3b194d2c2 100644 --- a/luci-app-ddns/po/ja/ddns.po +++ b/luci-app-ddns/po/ja/ddns.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: luci-app-ddns 2.4.0-1\n" "POT-Creation-Date: 2016-01-30 11:07+0100\n" -"PO-Revision-Date: 2026-10-18 16:40+0000\n" +"PO-Revision-Date: 2026-10-22 07:52+0000\n" "Last-Translator: Monarch " "\n" "Language-Team: Japanese \n" "Language-Team: Korean \n" @@ -745,7 +745,7 @@ msgid "" "force_interval set to '0')" msgstr "" "이는 DDNS 스크립트를 별도로 실행하는 경우의 기본값입니다. (예: " -"force_interval을 '0'으로 설정한 cron을 통해)" +"force_interval을 '0'으로 설정한 상태로 cron을 통해)" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:892 msgid "This will be autoset to the selected interface" diff --git a/luci-app-ddns/po/pt_BR/ddns.po b/luci-app-ddns/po/pt_BR/ddns.po index 1a6381179..95653e3f9 100644 --- a/luci-app-ddns/po/pt_BR/ddns.po +++ b/luci-app-ddns/po/pt_BR/ddns.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: luci-app-ddns 2.4.0-1\n" "POT-Creation-Date: 2016-01-30 11:07+0100\n" -"PO-Revision-Date: 2026-09-29 13:09+0000\n" -"Last-Translator: Pavel Borecki \n" +"PO-Revision-Date: 2026-11-01 06:11+0000\n" +"Last-Translator: LucasMZ \n" "Language-Team: Portuguese (Brazil) \n" "Language: pt_BR\n" @@ -11,7 +11,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 2026.10.dev0\n" +"X-Generator: Weblate 2026.11.dev0\n" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:423 msgid "\"../\" not allowed in path for Security Reason." @@ -356,7 +356,7 @@ msgstr "" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:962 msgid "Info" -msgstr "Informação (Info)" +msgstr "Informações" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:264 msgid "Information" @@ -699,7 +699,7 @@ msgstr "Estado" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1116 msgid "Status" -msgstr "Status" +msgstr "Estado" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:410 msgid "Status directory" diff --git a/luci-app-ddns/po/ro/ddns.po b/luci-app-ddns/po/ro/ddns.po index 98a8f505b..6f80d1a48 100644 --- a/luci-app-ddns/po/ro/ddns.po +++ b/luci-app-ddns/po/ro/ddns.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: luci-app-ddns 2.4.0-1\n" "POT-Creation-Date: 2016-01-30 11:07+0100\n" -"PO-Revision-Date: 2026-03-18 02:23+0000\n" -"Last-Translator: CRISTIAN ANDREI \n" +"PO-Revision-Date: 2026-11-04 21:31+0000\n" +"Last-Translator: Martin Olmer \n" "Language-Team: Romanian \n" "Language: ro\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " "20)) ? 1 : 2;\n" -"X-Generator: Weblate 5.17-dev\n" +"X-Generator: Weblate 2026.11.1.dev0\n" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:423 msgid "\"../\" not allowed in path for Security Reason." @@ -617,7 +617,7 @@ msgstr "IP înregistrat" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:565 msgid "Reload" -msgstr "Reîncărcați" +msgstr "Reîncărcare" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:550 msgid "Reload this service" @@ -709,7 +709,7 @@ msgstr "Stat" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1116 msgid "Status" -msgstr "Stare" +msgstr "Status" #: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:410 msgid "Status directory" diff --git a/luci-app-ddns/root/usr/share/rpcd/ucode/ddns.uc b/luci-app-ddns/root/usr/share/rpcd/ucode/ddns.uc index 32d1da738..e05701f3c 100644 --- a/luci-app-ddns/root/usr/share/rpcd/ucode/ddns.uc +++ b/luci-app-ddns/root/usr/share/rpcd/ucode/ddns.uc @@ -2,7 +2,7 @@ 'use strict'; -import { readfile, popen, stat, glob } from 'fs'; +import { readfile, writefile, mkdir, popen, stat, glob } from 'fs'; import { init_enabled } from 'luci.sys'; import { isnan } from 'math'; import { cursor } from 'uci'; @@ -115,8 +115,12 @@ const methods = { if (section == '.anonymous') return; - if (stat(`${rundir}/${section}.ip`)?.type == 'file') { - ip = readfile(`${rundir}/${section}.ip`); + // ddns-scripts runs a service only if it is enabled; it is disabled by default + const enabled = s['enabled'] in [ '1', 'on', 'true', 'yes', 'enabled' ]; + const ipFile = `${rundir}/${section}.ip`; + + if (stat(ipFile)?.type == 'file') { + ip = readfile(ipFile); } else { const dnsServer = s['dns_server'] || ''; const forceIpVersion = int(s['force_ipversion'] || 0); @@ -136,7 +140,14 @@ const methods = { if (length(dnsServer) > 0) push(command, '-d', shellquote(dnsServer)); push(command, '-- get_registered_ip'); - const result = system(`${join(' ', command)}`); + /* Without a working DNS the lookup takes 10 s or more, and LuCI fetches + this status together with the rest of a page such as the Overview. So the + lookup runs in the background, and the helper writes its result to the IP + file for a later call. The file is created empty first, so that the calls + in between do not start the lookup again. */ + mkdir(rundir); + writefile(ipFile, ''); + system(`${join(' ', command)} >/dev/null 2>&1 &`); } lastUpdate = int(readfile(`${rundir}/${section}.update`) || 0); @@ -178,9 +189,9 @@ const methods = { nextUpdate = 'Verify'; } else if (forcedUpdateInterval === 0) { nextUpdate = 'Run once'; - } else if (pid == 0 && s['enabled'] == '0') { + } else if (pid == 0 && !enabled) { nextUpdate = 'Disabled'; - } else if (pid == 0 && s['enabled'] != '0') { + } else if (pid == 0) { nextUpdate = 'Stopped'; } @@ -287,15 +298,11 @@ const methods = { res['has_bindhost'] = cache['has_bindhost'] || hasBindHost(); - const hasHostIp = () => { - return hasCommand('hostip'); - }; - const hasNslookup = () => { return hasCommand('nslookup'); }; - res['has_dnsserver'] = cache['has_bindhost'] || hasNslookup() || hasHostIp() || hasBindHost(); + res['has_dnsserver'] = cache['has_bindhost'] || hasNslookup() || hasBindHost(); const checkCerts = () => { let present = false; diff --git a/luci-app-ddnsto/Makefile b/luci-app-ddnsto/Makefile index a6c160b4b..203261351 100644 --- a/luci-app-ddnsto/Makefile +++ b/luci-app-ddnsto/Makefile @@ -8,8 +8,38 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=LuCI support for ddnsto LUCI_DEPENDS:=+ddnsto +block-mount LUCI_PKGARCH:=all -PKG_VERSION:=4.2.2-r1 -PKG_RELEASE:=3 +PKG_VERSION:=4.2.2-r3 +PKG_RELEASE:=4 + +define Package/luci-app-ddnsto/postinst +#!/bin/sh +# Maintain the old desktop entry without a second manifest or file owner. +root="$${IPKG_INSTROOT:-}" +sh "$${root}/usr/share/ddnsto/register-desktop.sh" || exit $$? +icon="$${root}/usr/share/linkeasefull/app-meta/ddnsto/logo.png" +if [ "$$(readlink "$${icon}" 2>/dev/null)" = "/www/luci-static/resources/app-icons/ddnsto.png" ]; then + rm -f "$${icon}" +fi +rmdir "$${root}/usr/share/linkeasefull/app-meta/ddnsto" "$${root}/usr/share/linkeasefull/app-meta" 2>/dev/null || true +if [ -z "$${IPKG_INSTROOT}" ]; then + rm -f /tmp/luci-indexcache /tmp/luci-indexcache.* + rm -rf /tmp/luci-modulecache/ +fi +exit 0 +endef + +define Package/luci-app-ddnsto/prerm +#!/bin/sh +root="$${IPKG_INSTROOT:-}" +for directory in /usr/share/linkease/apps.d /usr/share/linkeasefull/desktop-apps.d; do + registration="$${root}$${directory}/16-ddnsto.json" + if [ "$$(readlink "$${registration}" 2>/dev/null)" = "/usr/share/ddnsto/ddnsto-plugin.json" ]; then + rm -f "$${registration}" + fi +done +rmdir "$${root}/usr/share/linkeasefull/desktop-apps.d" 2>/dev/null || true +exit 0 +endef include $(TOPDIR)/feeds/luci/luci.mk diff --git a/luci-app-ddnsto/root/usr/share/ddnsto/ddnsto-plugin.json b/luci-app-ddnsto/root/usr/share/ddnsto/ddnsto-plugin.json new file mode 100644 index 000000000..0ed3393a2 --- /dev/null +++ b/luci-app-ddnsto/root/usr/share/ddnsto/ddnsto-plugin.json @@ -0,0 +1,46 @@ +{ + "schemaVersion": 1, + "id": "ddnsto", + "name": "DDNSTO", + "icon": "logo.png", + "staticRoot": "/usr/share/ddnsto/www", + "desktop": { + "mode": "builtin", + "component": "LuciContainer", + "props": { + "initialPath": "/cgi-bin/luci/admin/services/ddnsto", + "contentOnly": true, + "isolation": "scoped-dom-css", + "mountIds": [ + "root", + "app" + ], + "hideChrome": true, + "preloadScripts": [ + "/luci-static/linkeasefull-embed/embed-prelude.js" + ], + "preloadStyles": [ + "/luci-static/linkeasefull-embed/embed.css" + ] + } + }, + "standalone": { + "url": "/cgi-bin/luci/admin/services/ddnsto" + }, + "window": { + "width": 980, + "height": 700, + "singleton": true + }, + "capabilities": [ + "ddnsto", + "openwrt", + "luci", + "network" + ], + "categories": [ + "network", + "service", + "openwrt" + ] +} diff --git a/luci-app-ddnsto/root/usr/share/ddnsto/register-desktop.sh b/luci-app-ddnsto/root/usr/share/ddnsto/register-desktop.sh new file mode 100755 index 000000000..aed53cbc9 --- /dev/null +++ b/luci-app-ddnsto/root/usr/share/ddnsto/register-desktop.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# Called by the owning plugin and its metadata migration hook. +set -e +root="${IPKG_INSTROOT:-}" +manifest="/usr/share/ddnsto/ddnsto-plugin.json" +legacy="${root}/usr/share/linkeasefull/desktop-apps.d/16-ddnsto.json" +[ -f "${root}${manifest}" ] || exit 0 +# Replace only the exact historical metadata payload; preserve custom entries. +if [ -f "${legacy}" ] && [ ! -L "${legacy}" ] && [ "$(sha256sum "${legacy}" | cut -d ' ' -f 1)" = "a72a8b3e529c91b2a3bc32ef695e5f7dc2935e332fcbd3201f985e05c2c8763d" ]; then + rm -f "${legacy}" +fi +if [ ! -e "${legacy}" ] && [ ! -L "${legacy}" ]; then + mkdir -p "${legacy%/*}" + ln -s "${manifest}" "${legacy}" +fi diff --git a/luci-app-ddnsto/root/usr/share/ddnsto/www/logo.png b/luci-app-ddnsto/root/usr/share/ddnsto/www/logo.png new file mode 100644 index 000000000..c0ac79dc8 Binary files /dev/null and b/luci-app-ddnsto/root/usr/share/ddnsto/www/logo.png differ diff --git a/luci-app-ddnsto/root/usr/share/linkease/apps.d/16-ddnsto.json b/luci-app-ddnsto/root/usr/share/linkease/apps.d/16-ddnsto.json new file mode 120000 index 000000000..ccba184fc --- /dev/null +++ b/luci-app-ddnsto/root/usr/share/linkease/apps.d/16-ddnsto.json @@ -0,0 +1 @@ +/usr/share/ddnsto/ddnsto-plugin.json \ No newline at end of file diff --git a/luci-app-dockerman/po/cs/dockerman.po b/luci-app-dockerman/po/cs/dockerman.po index a8a7dddf3..d618731ad 100644 --- a/luci-app-dockerman/po/cs/dockerman.po +++ b/luci-app-dockerman/po/cs/dockerman.po @@ -1,14 +1,14 @@ msgid "" msgstr "" -"PO-Revision-Date: 2026-09-28 18:23+0000\n" -"Last-Translator: Pavel Borecki \n" +"PO-Revision-Date: 2026-11-04 21:09+0000\n" +"Last-Translator: Martin Olmer \n" "Language-Team: Czech \n" "Language: cs\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n" -"X-Generator: Weblate 2026.10.dev0\n" +"X-Generator: Weblate 2026.11.1.dev0\n" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:505 msgid "/mnt/path" @@ -2083,7 +2083,7 @@ msgstr "Varování" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1078 msgid "WebSocket" -msgstr "" +msgstr "WebSocket" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1087 msgid "WebSocket Console" diff --git a/luci-app-dockerman/po/de/dockerman.po b/luci-app-dockerman/po/de/dockerman.po index 63f8e7ead..22a347e26 100644 --- a/luci-app-dockerman/po/de/dockerman.po +++ b/luci-app-dockerman/po/de/dockerman.po @@ -1,14 +1,14 @@ msgid "" msgstr "" -"PO-Revision-Date: 2026-09-24 06:06+0000\n" -"Last-Translator: Pavel Borecki \n" +"PO-Revision-Date: 2026-11-04 16:54+0000\n" +"Last-Translator: Dirk Brenken \n" "Language-Team: German \n" "Language: de\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2026.10.dev0\n" +"X-Generator: Weblate 2026.11.1.dev0\n" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:505 msgid "/mnt/path" @@ -1793,7 +1793,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:372 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1804 msgid "Stop" -msgstr "Stopp" +msgstr "Stoppen" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:155 msgctxt "daemon stop action" diff --git a/luci-app-dockerman/po/fr/dockerman.po b/luci-app-dockerman/po/fr/dockerman.po index 5e94ee8cd..37a8b8760 100644 --- a/luci-app-dockerman/po/fr/dockerman.po +++ b/luci-app-dockerman/po/fr/dockerman.po @@ -1,14 +1,14 @@ msgid "" msgstr "" -"PO-Revision-Date: 2026-10-13 21:56+0000\n" -"Last-Translator: Pavel Borecki \n" +"PO-Revision-Date: 2026-11-06 10:18+0000\n" +"Last-Translator: Martin Olmer \n" "Language-Team: French \n" "Language: fr\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 2026.11.dev0\n" +"X-Generator: Weblate 2026.11.2.dev0\n" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:505 msgid "/mnt/path" @@ -32,7 +32,7 @@ msgstr "Une liste de capacités kernel a ajouter au conteneur" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:249 msgid "Action" -msgstr "" +msgstr "Action" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1825 msgid "Action unavailable:" @@ -44,7 +44,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:582 msgid "Add" -msgstr "Add" +msgstr "Ajouter" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:315 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:620 @@ -61,7 +61,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:634 msgid "Advanced" -msgstr "" +msgstr "Avancé" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:590 msgid "Aliases" @@ -250,7 +250,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1189 msgid "Clear" -msgstr "" +msgstr "Nettoyer" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:617 msgid "Click to add a new tag to this image" @@ -437,7 +437,7 @@ msgstr "Aperçu des conteneurs" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:421 msgid "Create" -msgstr "" +msgstr "Créer" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:979 msgid "Create container" @@ -1290,7 +1290,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:679 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:249 msgid "No" -msgstr "" +msgstr "Non" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1878 msgid "No additional networks available to connect" @@ -1418,7 +1418,7 @@ msgstr "Réseau overlay" #: applications/luci-app-dockerman/root/usr/share/luci/menu.d/luci-app-dockerman.json:19 msgid "Overview" -msgstr "Aperçu" +msgstr "Vue d'ensemble" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:847 msgid "PID" @@ -1667,7 +1667,7 @@ msgstr "Exécuter la commande" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:84 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:141 msgid "Running" -msgstr "" +msgstr "En cours d'exécution" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:833 msgid "Running Processes" @@ -1794,7 +1794,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:88 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:145 msgid "Stopped" -msgstr "" +msgstr "Arrêté" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1098 msgid "Streams:" @@ -1952,7 +1952,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:63 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:249 msgid "Type" -msgstr "" +msgstr "Type" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1135 msgid "Type command here... (Ctrl+D to detach)" @@ -2042,7 +2042,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:240 msgid "Version" -msgstr "" +msgstr "Version" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:374 msgid "Volume (named)" @@ -2080,7 +2080,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:679 msgid "Yes" -msgstr "" +msgstr "Oui" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:323 msgid "attach" @@ -2210,7 +2210,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:757 msgid "none" -msgstr "" +msgstr "aucun" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:337 msgid "oom" diff --git a/luci-app-dockerman/po/ga/dockerman.po b/luci-app-dockerman/po/ga/dockerman.po index 8011b9538..371006c3d 100644 --- a/luci-app-dockerman/po/ga/dockerman.po +++ b/luci-app-dockerman/po/ga/dockerman.po @@ -1,7 +1,8 @@ msgid "" msgstr "" -"PO-Revision-Date: 2026-09-02 17:28+0000\n" -"Last-Translator: Aindriú Mac Giolla Eoin \n" +"PO-Revision-Date: 2026-10-27 05:52+0000\n" +"Last-Translator: Aindriú Mac Giolla Eoin " +"\n" "Language-Team: Irish \n" "Language: ga\n" @@ -9,7 +10,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : (n>2 && n<7) ? 2 :(n>" "6 && n<11) ? 3 : 4;\n" -"X-Generator: Weblate 2026.9.dev0\n" +"X-Generator: Weblate 2026.11.dev0\n" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:505 msgid "/mnt/path" @@ -1823,7 +1824,7 @@ msgstr "Sruthanna:" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:103 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/networks.js:191 msgid "Subnet" -msgstr "Folíon" +msgstr "Fo-líonra" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:460 msgid "Subpath" diff --git a/luci-app-dockerman/po/hu/dockerman.po b/luci-app-dockerman/po/hu/dockerman.po index af0846aea..8f8db89c0 100644 --- a/luci-app-dockerman/po/hu/dockerman.po +++ b/luci-app-dockerman/po/hu/dockerman.po @@ -1,30 +1,31 @@ msgid "" msgstr "" -"PO-Revision-Date: 2026-10-13 21:56+0000\n" -"Last-Translator: Pavel Borecki \n" +"PO-Revision-Date: 2026-11-05 07:54+0000\n" +"Last-Translator: Kövecses József " +"\n" "Language-Team: Hungarian \n" "Language: hu\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2026.11.dev0\n" +"X-Generator: Weblate 2026.11.1.dev0\n" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:505 msgid "/mnt/path" -msgstr "" +msgstr "/mnt/path" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:457 msgid "/path/in/image" -msgstr "" +msgstr "/path/in/image" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:127 msgid "0" -msgstr "" +msgstr "0" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:106 msgid "A Token is preferred over a Password." -msgstr "" +msgstr "A token előnyt élvez a jelszóval szemben." #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:673 msgid "A list of kernel capabilities to add to the container" @@ -32,15 +33,15 @@ msgstr "A tárolóhoz hozzáadandó kernelképességek listája" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:249 msgid "Action" -msgstr "" +msgstr "Művelet" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1825 msgid "Action unavailable:" -msgstr "" +msgstr "A művelet nem érhető el:" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:249 msgid "Actor" -msgstr "" +msgstr "Szereplő" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:582 msgid "Add" @@ -49,63 +50,65 @@ msgstr "Hozzáadás" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:315 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:620 msgid "Add Mount" -msgstr "" +msgstr "Csatolás hozzáadása" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:655 msgid "Add host device to the container" -msgstr "" +msgstr "Gazdaeszköz hozzáadása a konténerhez" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:681 msgid "Added Capabilities" -msgstr "" +msgstr "Hozzáadott képességek" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:634 msgid "Advanced" -msgstr "" +msgstr "Speciális" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:590 msgid "Aliases" -msgstr "" +msgstr "Álnevek" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1924 msgid "Aliases (optional):" -msgstr "" +msgstr "Álnevek (opcionális):" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:342 msgid "All Subtypes" -msgstr "" +msgstr "Minden altípus" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:73 msgid "All Types" -msgstr "" +msgstr "Minden típus" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:647 msgid "Allocates an ephemeral host port for all of a container's exposed ports" -msgstr "" +msgstr "Ideiglenes gazdaportot foglal a konténer összes közzétett portjához" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:486 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:251 msgid "Always" -msgstr "" +msgstr "Mindig" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:234 msgid "Always pull image first" -msgstr "" +msgstr "Mindig töltse le előbb a lemezképet" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:146 msgid "" "An overview with the relevant data is displayed here with which the LuCI " "docker client is connected." msgstr "" +"Itt egy áttekintés látható azokról a fontos adatokról, amelyekhez a LuCI " +"Docker-kliens kapcsolódik." #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:33 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:168 msgid "Api Version" -msgstr "API verzió" +msgstr "API-verzió" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:70 msgid "Attachable" -msgstr "" +msgstr "Csatolható" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:139 msgid "Available" @@ -113,110 +116,114 @@ msgstr "Elérhető" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:431 msgid "Back to Containers" -msgstr "" +msgstr "Vissza a konténerekhez" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:48 msgid "Base device" -msgstr "Alap eszköz" +msgstr "Alapeszköz" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:373 msgid "Bind (host directory)" -msgstr "" +msgstr "Kötés (gazdakönyvtár)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:306 msgid "Bind mount a volume" -msgstr "" +msgstr "Kötet csatolása (bind mount)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:740 msgid "BlkIO Stats" -msgstr "" +msgstr "Blokk I/O statisztika" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:675 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:738 msgid "Block IO Weight" -msgstr "" +msgstr "Blokk I/O súly" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:739 msgid "" "Block IO weight (relative weight) accepts a weight value between 10 and 1000." -msgstr "" +msgstr "A blokk I/O súly (relatív súly) 10 és 1000 közötti értéket fogad el." #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:59 msgid "Bridge (Support direct communication between MAC VLANs)" -msgstr "" +msgstr "Híd (közvetlen kommunikáció a MAC VLAN-ok között)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:43 msgid "Bridge device" -msgstr "Híd eszköz" +msgstr "Hídeszköz" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:419 msgid "Build" -msgstr "" +msgstr "Összeállítás" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:206 msgid "Build an image." -msgstr "" +msgstr "Lemezkép összeállítása." #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:72 msgid "" "By entering a valid image name with the corresponding version, the docker " "image can be downloaded from the configured registry." msgstr "" +"Érvényes lemezképnév és hozzá tartozó verzió megadásával a Docker-lemezkép " +"letölthető a beállított regisztrációs adatbázisból." #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:672 msgid "CAP-ADD(--cap-add)" -msgstr "" +msgstr "CAP-ADD (--cap-add)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:847 msgid "COMMAND" -msgstr "" +msgstr "COMMAND" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:690 msgid "CPU Period" -msgstr "" +msgstr "CPU-periódus" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:625 msgid "CPU Period (microseconds)" -msgstr "" +msgstr "CPU-periódus (mikroszekundum)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:696 msgid "CPU Quota" -msgstr "" +msgstr "CPU-kvóta" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:628 msgid "CPU Quota (microseconds)" -msgstr "" +msgstr "CPU-kvóta (mikroszekundum)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:631 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:702 msgid "CPU Shares Weight" -msgstr "" +msgstr "CPU-részesedés súlya" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:741 msgid "CPU Stats" -msgstr "" +msgstr "CPU-statisztika" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:766 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:795 msgid "CPU Usage" -msgstr "" +msgstr "CPU-használat" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:703 msgid "" "CPU shares relative weight, if 0 is set, the system will ignore the value " "and use the default of 1024" msgstr "" +"CPU-részesedés relatív súlya; 0 megadása esetén a rendszer figyelmen kívül " +"hagyja az értéket, és az alapértelmezett 1024-et használja" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:770 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:799 msgid "CPU usage data unavailable" -msgstr "" +msgstr "A CPU-használati adatok nem érhetők el" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:615 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:678 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:169 msgid "CPUs" -msgstr "" +msgstr "CPU-k" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1934 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:517 @@ -226,38 +233,39 @@ msgstr "Mégse" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:35 msgid "Causes errors when a chosen API > Docker endpoint API support." msgstr "" +"Hibát okoz, ha a választott API újabb, mint amit a Docker-végpont támogat." #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:890 msgid "Changes" -msgstr "" +msgstr "Változások" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:420 msgid "Clean" -msgstr "" +msgstr "Tisztítás" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:257 msgid "Cleaned build cache" -msgstr "" +msgstr "Az összeállítási gyorsítótár kiürítve" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1189 msgid "Clear" -msgstr "" +msgstr "Törlés" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:617 msgid "Click to add a new tag to this image" -msgstr "" +msgstr "Kattintson új címke hozzáadásához a lemezképhez" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:531 msgid "Click to remove this tag" -msgstr "" +msgstr "Kattintson a címke eltávolításához" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/networks.js:213 msgid "Click to view this network" -msgstr "" +msgstr "Kattintson a hálózat megtekintéséhez" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:81 msgid "Client connection" -msgstr "" +msgstr "Kliens kapcsolat" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:492 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:166 @@ -266,37 +274,37 @@ msgstr "Parancs" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:1152 msgid "Command cancelled" -msgstr "" +msgstr "A parancs megszakítva" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:1131 #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:1142 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:86 msgid "Command failed" -msgstr "" +msgstr "A parancs sikertelen" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:1119 msgid "Command successful" -msgstr "" +msgstr "A parancs sikeres" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1020 msgid "Command:" -msgstr "" +msgstr "Parancs:" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:80 msgid "Config Only" -msgstr "" +msgstr "Csak beállítás (Config Only)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:76 msgid "ConfigFrom" -msgstr "" +msgstr "ConfigFrom" #: applications/luci-app-dockerman/root/usr/share/luci/menu.d/luci-app-dockerman.json:31 msgid "Configuration" -msgstr "Beállítás" +msgstr "Beállítások" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:58 msgid "Configure the default bridge network" -msgstr "" +msgstr "Az alapértelmezett hídhálózat beállítása" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:564 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1049 @@ -311,59 +319,59 @@ msgstr "Csatlakozás hálózathoz" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1964 msgid "Connect network" -msgstr "" +msgstr "Hálózat csatlakoztatása" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1521 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1533 msgid "Connected" -msgstr "" +msgstr "Kapcsolódva" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1063 msgid "Connected to container console" -msgstr "" +msgstr "Kapcsolódva a konténer konzoljához" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1406 msgid "Connecting…" -msgstr "" +msgstr "Kapcsolódás…" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1006 msgid "Console" -msgstr "" +msgstr "Konzol" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1008 msgid "Console Connection" -msgstr "" +msgstr "Konzolkapcsolat" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1523 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1774 msgid "Console connected" -msgstr "" +msgstr "Konzol kapcsolódva" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1516 msgid "Console connection closed" -msgstr "" +msgstr "A konzolkapcsolat lezárult" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1560 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1795 msgid "Console disconnected" -msgstr "" +msgstr "Konzol leválasztva" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1580 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1595 msgid "Console is not connected" -msgstr "" +msgstr "A konzol nincs kapcsolódva" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:160 msgid "Container" -msgstr "" +msgstr "Konténer" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:976 msgid "Container Inspect" -msgstr "" +msgstr "Konténer vizsgálata" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1201 msgid "Container Logs" -msgstr "" +msgstr "Konténernaplók" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:212 msgid "Container Name" @@ -371,46 +379,46 @@ msgstr "Konténer neve" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:826 msgid "Container Statistics" -msgstr "" +msgstr "Konténerstatisztika" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:985 msgid "Container created" -msgstr "" +msgstr "Konténer létrehozva" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:446 msgid "Container detail" -msgstr "" +msgstr "Konténer részletei" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:985 msgid "Container duplicated" -msgstr "" +msgstr "Konténer duplikálva" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:714 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:721 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:840 msgid "Container is not running" -msgstr "" +msgstr "A konténer nem fut" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1094 msgid "Container is not running. Cannot connect to WebSocket console." -msgstr "" +msgstr "A konténer nem fut. Nem lehet kapcsolódni a WebSocket konzolhoz." #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1015 msgid "Container is not running. Cannot connect to console." -msgstr "" +msgstr "A konténer nem fut. Nem lehet kapcsolódni a konzolhoz." #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1386 msgid "Container rename" -msgstr "" +msgstr "Konténer átnevezése" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1394 msgid "Container rename failed" -msgstr "" +msgstr "A konténer átnevezése sikertelen" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1355 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1371 msgid "Container update failed" -msgstr "" +msgstr "A konténer frissítése sikertelen" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:577 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:84 @@ -420,31 +428,31 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/volumes.js:248 #: applications/luci-app-dockerman/root/usr/share/luci/menu.d/luci-app-dockerman.json:109 msgid "Containers" -msgstr "" +msgstr "Konténerek" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:100 msgid "Containers overview" -msgstr "" +msgstr "Konténerek áttekintése" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:421 msgid "Create" -msgstr "" +msgstr "Létrehozás" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:979 msgid "Create container" -msgstr "" +msgstr "Konténer létrehozása" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:1000 msgid "Create container failed" -msgstr "" +msgstr "A konténer létrehozása sikertelen" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:234 msgid "Create network" -msgstr "" +msgstr "Hálózat létrehozása" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:249 msgid "Create network failed" -msgstr "" +msgstr "A hálózat létrehozása sikertelen" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:63 msgid "Create new docker container" @@ -452,7 +460,7 @@ msgstr "Új docker konténer létrehozása" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:30 msgid "Create new docker network" -msgstr "" +msgstr "Új Docker-hálózat létrehozása" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:467 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:168 @@ -468,45 +476,48 @@ msgstr "DNS" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:588 msgid "DNS Names" -msgstr "" +msgstr "DNS-nevek" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:73 msgid "Debug" -msgstr "" +msgstr "Hibakeresés" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:753 msgid "Default (daemon)" -msgstr "" +msgstr "Alapértelmezett (démon)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:57 msgid "Default bridge" -msgstr "" +msgstr "Alapértelmezett híd" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:26 msgid "Default ps flags" -msgstr "" +msgstr "Alapértelmezett ps-kapcsolók" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:606 msgid "Delete this volume mount" -msgstr "" +msgstr "A kötetcsatolás törlése" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:104 msgid "" "Destinations prefixed with a Registry host matching an entry in this table " "invoke its corresponding credentials." msgstr "" +"Azok a célok, amelyek előtagja a táblázat egy bejegyzésével egyező " +"regisztrációs adatbázis gépnevet tartalmaz, a hozzá tartozó hitelesítési " +"adatokat használják." #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1589 msgid "Detach signal sent (Ctrl+D)" -msgstr "" +msgstr "Leválasztási jel elküldve (Ctrl+D)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:96 msgid "Detail" -msgstr "" +msgstr "Részletek" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:654 msgid "Device(--device)" -msgstr "" +msgstr "Eszköz (--device)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:521 msgid "Devices" @@ -516,85 +527,85 @@ msgstr "Eszközök" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1059 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1124 msgid "Disconnect" -msgstr "" +msgstr "Kapcsolat bontása" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1863 msgid "Disconnect network" -msgstr "" +msgstr "Hálózat leválasztása" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1853 msgid "Disconnect network \"%s\" from container?" -msgstr "" +msgstr "Leválasztja a(z) \"%s\" hálózatot a konténerről?" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1125 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1509 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1539 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1558 msgid "Disconnected" -msgstr "" +msgstr "Kapcsolat bontva" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:536 msgid "Do you want to remove the tag \"%s\"?" -msgstr "" +msgstr "Biztosan eltávolítja a(z) \"%s\" címkét?" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:16 msgid "Docker - Configuration" -msgstr "" +msgstr "Docker - Beállítás" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:336 msgid "Docker - Container" -msgstr "" +msgstr "Docker - Konténer" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:201 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:49 msgid "Docker - Containers" -msgstr "" +msgstr "Docker - Konténerek" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:54 msgid "Docker - Events" -msgstr "" +msgstr "Docker - Események" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:36 msgid "Docker - Images" -msgstr "" +msgstr "Docker - Lemezképek" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:44 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/networks.js:57 msgid "Docker - Networks" -msgstr "" +msgstr "Docker - Hálózatok" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:26 msgid "Docker - New Network" -msgstr "" +msgstr "Docker - Új hálózat" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:144 msgid "Docker - Overview" -msgstr "" +msgstr "Docker - Áttekintés" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/volumes.js:56 msgid "Docker - Volumes" -msgstr "" +msgstr "Docker - Kötetek" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:228 msgid "Docker Image" -msgstr "" +msgstr "Docker-lemezkép" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:49 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:171 msgid "Docker Root Dir" -msgstr "" +msgstr "Docker gyökérkönyvtár" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:167 msgid "Docker Version" -msgstr "" +msgstr "Docker-verzió" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:17 msgid "DockerMan is a simple docker manager client for LuCI" -msgstr "" +msgstr "A DockerMan egy egyszerű Docker-kezelő kliens a LuCI-hoz" #: applications/luci-app-dockerman/root/usr/share/luci/menu.d/luci-app-dockerman.json:3 msgid "Dockerman JS" -msgstr "" +msgstr "Dockerman JS" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:953 msgid "Download" @@ -602,7 +613,7 @@ msgstr "Letöltés" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:276 msgid "Download a valid remote image tar." -msgstr "" +msgstr "Érvényes távoli lemezkép tar letöltése." #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:63 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:41 @@ -613,15 +624,15 @@ msgstr "Illesztőprogram" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:687 msgid "Dropped Capabilities" -msgstr "" +msgstr "Elvett képességek" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:407 msgid "Duplicate/Edit" -msgstr "" +msgstr "Duplikálás/szerkesztés" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:66 msgid "Duplicate/Edit Container: %s" -msgstr "" +msgstr "Konténer duplikálása/szerkesztése: %s" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:422 msgid "Edit" @@ -629,11 +640,11 @@ msgstr "Szerkesztés" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:315 msgid "Edit Mount" -msgstr "" +msgstr "Csatolás szerkesztése" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:196 msgid "Edit this container" -msgstr "" +msgstr "A konténer szerkesztése" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:122 msgid "Enable IPv6" @@ -641,31 +652,31 @@ msgstr "IPv6 engedélyezése" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:623 msgid "Enter a new tag for image %s:" -msgstr "" +msgstr "Adjon meg új címkét a(z) %s lemezképhez:" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/volumes.js:119 msgid "Enter an optional name and labels for the new volume" -msgstr "" +msgstr "Adjon meg egy opcionális nevet és feliratokat az új kötethez" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:397 msgid "Enter volume name or pick existing" -msgstr "" +msgstr "Adja meg a kötet nevét, vagy válasszon egy meglévőt" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:250 msgid "Entry" -msgstr "" +msgstr "Bejegyzés" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:500 msgid "Env" -msgstr "" +msgstr "Környezet" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:246 msgid "Environment" -msgstr "" +msgstr "Környezet" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:300 msgid "Environmental Variable(-e)" -msgstr "" +msgstr "Környezeti változó (-e)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:1029 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:76 @@ -692,44 +703,44 @@ msgstr "Hiba" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1682 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1696 msgid "Error loading logs:" -msgstr "" +msgstr "Hiba a naplók betöltésekor:" #: applications/luci-app-dockerman/root/usr/share/luci/menu.d/luci-app-dockerman.json:392 msgid "Events" -msgstr "" +msgstr "Események" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:65 msgid "Example:" -msgstr "" +msgstr "Példa:" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:84 msgid "Example: tcp://0.0.0.0:2375" -msgstr "" +msgstr "Példa: tcp://0.0.0.0:2375" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:118 msgid "Exclude IPs" -msgstr "" +msgstr "Kizárt IP-címek" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:417 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:386 msgid "Export" -msgstr "" +msgstr "Exportálás" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:273 msgid "Export this container" -msgstr "" +msgstr "A konténer exportálása" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:646 msgid "Exposed All Ports(-P)" -msgstr "" +msgstr "Összes port közzététele (-P)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:625 msgid "Exposed Ports(-p)" -msgstr "" +msgstr "Közzétett portok (-p)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1779 msgid "Failed to connect to console" -msgstr "" +msgstr "Nem sikerült kapcsolódni a konzolhoz" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:90 msgid "Failed to execute \"/etc/init.d/%s %s\" action: %s" @@ -737,98 +748,100 @@ msgstr "Nem sikerült végrehajtani az „/etc/init.d/%s %s” műveletet: %s" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:321 msgid "Failed to load events: %s" -msgstr "" +msgstr "Nem sikerült betölteni az eseményeket: %s" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1684 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1695 msgid "Failed to load logs" -msgstr "" +msgstr "Nem sikerült betölteni a naplókat" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/volumes.js:25 msgid "Failed to load volumes" -msgstr "" +msgstr "Nem sikerült betölteni a köteteket" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1577 msgid "Failed to send data" -msgstr "" +msgstr "Nem sikerült elküldeni az adatokat" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1592 msgid "Failed to send detach signal" -msgstr "" +msgstr "Nem sikerült elküldeni a leválasztási jelet" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1731 msgid "Failed to start console" -msgstr "" +msgstr "Nem sikerült elindítani a konzolt" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:77 msgid "Fatal" -msgstr "" +msgstr "Végzetes" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:924 msgid "File" -msgstr "" +msgstr "Fájl" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1611 msgid "File uploaded to" -msgstr "" +msgstr "A fájl feltöltve ide" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:893 msgid "Filesystem Changes" -msgstr "" +msgstr "Fájlrendszer-változások" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:469 msgid "Finish Time" -msgstr "" +msgstr "Befejezés ideje" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:27 msgid "" "Flags passed to docker top (ps). Leave empty to use the built-in default." msgstr "" +"A docker top (ps) parancsnak átadott kapcsolók. Üresen hagyva a beépített " +"alapértelmezés érvényes." #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:50 msgid "For local dockerd socket instances only." -msgstr "" +msgstr "Csak helyi dockerd socket példányok esetén." #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:301 msgid "Force Remove" -msgstr "" +msgstr "Kényszerített eltávolítás" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:423 msgid "Force remove" -msgstr "" +msgstr "Kényszerített eltávolítás" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1314 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:771 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:153 msgid "Form is not ready yet." -msgstr "" +msgstr "Az űrlap még nem áll készen." #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:96 msgid "From" -msgstr "" +msgstr "Forrás" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:584 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:105 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:108 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/networks.js:193 msgid "Gateway" -msgstr "" +msgstr "Átjáró" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:580 msgid "Global IPv6 Address" -msgstr "" +msgstr "Globális IPv6-cím" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:21 msgid "Global settings" -msgstr "" +msgstr "Általános beállítások" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:23 msgid "Globals" -msgstr "" +msgstr "Általános" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:262 msgid "Go to relevant configuration page" -msgstr "" +msgstr "Ugrás a megfelelő beállítási oldalra" #: applications/luci-app-dockerman/root/usr/share/rpcd/acl.d/luci-app-dockerman.json:3 msgid "Grant UCI access for luci-app-dockerman" @@ -837,20 +850,20 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:476 msgid "Health Status" -msgstr "" +msgstr "Egészségi állapot" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:424 msgid "History" -msgstr "" +msgstr "Előzmények" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:448 msgid "Host Directory" -msgstr "" +msgstr "Gazdakönyvtár" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:489 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:640 msgid "Host Name" -msgstr "" +msgstr "Gépnév" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:457 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:569 @@ -858,108 +871,108 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:60 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/networks.js:178 msgid "ID" -msgstr "" +msgstr "Azonosító" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:45 msgid "IP VLAN" -msgstr "" +msgstr "IP VLAN" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:113 msgid "IP range" -msgstr "" +msgstr "IP-tartomány" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:98 msgid "IPAM Driver" -msgstr "" +msgstr "IPAM-illesztőprogram" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:576 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:267 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:123 msgid "IPv4 Address" -msgstr "" +msgstr "IPv4-cím" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1920 msgid "IPv4 Address (optional):" -msgstr "" +msgstr "IPv4-cím (opcionális):" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:64 msgid "IPv6" -msgstr "" +msgstr "IPv6" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:578 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:272 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:129 msgid "IPv6 Address" -msgstr "" +msgstr "IPv6-cím" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1922 msgid "IPv6 Address (optional):" -msgstr "" +msgstr "IPv6-cím (opcionális):" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:586 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:134 msgid "IPv6 Gateway" -msgstr "" +msgstr "IPv6-átjáró" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:277 msgid "IPv6 Link-Local Address" -msgstr "" +msgstr "IPv6-kapcsolati helyi (link-local) cím" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:128 msgid "IPv6 Subnet" -msgstr "" +msgstr "IPv6-alhálózat" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:459 msgid "Image" -msgstr "Képfájl" +msgstr "Lemezkép" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:375 msgid "Image (from image)" -msgstr "" +msgstr "Lemezkép (lemezképből)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:462 msgid "Image ID" -msgstr "" +msgstr "Lemezkép-azonosító" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:113 msgid "Image create completed" -msgstr "" +msgstr "A lemezkép létrehozása befejeződött" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:231 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:699 msgid "Image loaded successfully" -msgstr "" +msgstr "A lemezkép betöltése sikeres" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:188 msgid "Image push completed" -msgstr "" +msgstr "A lemezkép feltöltése (push) befejeződött" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:199 #: applications/luci-app-dockerman/root/usr/share/luci/menu.d/luci-app-dockerman.json:237 msgid "Images" -msgstr "" +msgstr "Lemezképek" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:337 msgid "Images overview" -msgstr "" +msgstr "Lemezképek áttekintése" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:359 msgid "Import" -msgstr "" +msgstr "Importálás" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:202 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:212 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:222 msgid "In Use:" -msgstr "" +msgstr "Használatban:" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1113 msgid "Include logs" -msgstr "" +msgstr "Naplók belefoglalása" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:172 msgid "Index Server Address" -msgstr "" +msgstr "Indexszerver címe" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:74 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:453 @@ -971,17 +984,17 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:57 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:161 msgid "Info" -msgstr "Infó" +msgstr "Információ" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:73 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:72 msgid "Ingress" -msgstr "" +msgstr "Bemenet" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:73 msgid "" "Ingress network is the network which provides the routing-mesh in swarm mode" -msgstr "" +msgstr "Az ingress hálózat biztosítja a routing-mesh-t swarm módban" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:425 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:958 @@ -989,50 +1002,50 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:992 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:134 msgid "Inspect" -msgstr "" +msgstr "Vizsgálat" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:216 msgid "Interactive (-i)" -msgstr "" +msgstr "Interaktív (-i)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:67 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:88 msgid "Internal" -msgstr "" +msgstr "Belső" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:64 msgid "Ipvlan Mode" -msgstr "" +msgstr "Ipvlan mód" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:64 msgid "" "It replaces the daemon registry mirrors with a new set of registry mirrors" -msgstr "" +msgstr "A démon regisztrációs adatbázis tükreit új tükrökre cseréli" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:382 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1805 msgid "Kill" -msgstr "" +msgstr "Kilövés (kill)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:261 msgid "Kill this container" -msgstr "" +msgstr "A konténer kilövése (kill)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:896 msgid "Kind" -msgstr "" +msgstr "Fajta" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:68 msgid "L2 bridge" -msgstr "" +msgstr "L2 bridge" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:69 msgid "L3 bridge" -msgstr "" +msgstr "L3 bridge" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:94 msgid "LAN connection" -msgstr "" +msgstr "LAN-kapcsolat" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:92 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:84 @@ -1040,63 +1053,65 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/volumes.js:132 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/volumes.js:243 msgid "Labels" -msgstr "" +msgstr "Feliratok (labels)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1171 msgid "Lines to show:" -msgstr "" +msgstr "Megjelenítendő sorok:" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:514 msgid "Links" -msgstr "" +msgstr "Hivatkozások" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:287 msgid "Links with other containers" -msgstr "" +msgstr "Hivatkozások más konténerekre" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:309 msgid "Load Events" -msgstr "" +msgstr "Események betöltése" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1184 msgid "Load Logs" -msgstr "" +msgstr "Naplók betöltése" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1677 msgid "Loading logs…" -msgstr "" +msgstr "Naplók betöltése…" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:34 msgid "Lock API endpoint to a specific version (helps guarantee behaviour)." msgstr "" +"Az API-végpont rögzítése egy adott verzióhoz (segít a működés garantálásában)" +"." #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1163 msgid "Log Controls" -msgstr "" +msgstr "Naplóvezérlők" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:693 msgid "Log Driver" -msgstr "" +msgstr "Naplózó illesztőprogram" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:71 msgid "Log Level" -msgstr "" +msgstr "Naplózási szint" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:696 msgid "Log Options" -msgstr "" +msgstr "Naplózási beállítások" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:751 msgid "Log driver" -msgstr "" +msgstr "Naplózó illesztőprogram" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:745 msgid "Log driver options" -msgstr "" +msgstr "Naplózó illesztőprogram beállításai" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1159 msgid "Logs" -msgstr "" +msgstr "Naplók" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:582 msgid "MAC Address" @@ -1108,60 +1123,64 @@ msgstr "MAC VLAN" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:122 msgid "Mac Address" -msgstr "" +msgstr "MAC-cím" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:341 msgid "Manage and view container configuration" -msgstr "" +msgstr "Konténerbeállítások kezelése és megtekintése" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:739 msgid "Mem Stats" -msgstr "" +msgstr "Memóriastatisztika" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:709 msgid "Memory" -msgstr "" +msgstr "Memória" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:651 msgid "Memory + Swap" -msgstr "" +msgstr "Memória + cserehely" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:635 msgid "Memory Limit" -msgstr "" +msgstr "Memóriakorlát" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:662 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:725 msgid "Memory Reservation" -msgstr "" +msgstr "Memóriafoglalás" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:758 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:789 msgid "Memory Usage" -msgstr "" +msgstr "Memóriahasználat" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:710 msgid "" "Memory limit (format: []). Number is a positive integer. Unit " "can be one of b, k, m, or g. Minimum is 4M" msgstr "" +"Memóriakorlát (formátum: []). A szám pozitív egész. Az egység " +"lehet b, k, m vagy g. A legkisebb érték 4M" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:762 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:793 msgid "Memory usage data unavailable" -msgstr "" +msgstr "A memóriahasználati adatok nem érhetők el" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:803 msgid "Metric" -msgstr "" +msgstr "Mérőszám" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:697 msgid "Microseconds of CPU time that the container can get in a CPU period" msgstr "" +"Az egy CPU-periódus alatt a konténer számára elérhető CPU-idő " +"mikroszekundumban" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1658 msgid "Missing header or CORS interfering" -msgstr "" +msgstr "Hiányzó fejléc vagy CORS-zavar" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:430 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:55 @@ -1170,23 +1189,23 @@ msgstr "Mód" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:501 msgid "Mount Path" -msgstr "" +msgstr "Csatolási útvonal" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/volumes.js:254 msgid "Mount Point" -msgstr "" +msgstr "Csatolási pont" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:661 msgid "Mount tmpfs directory" -msgstr "" +msgstr "Tmpfs könyvtár csatolása" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:305 msgid "Mount(--mount)" -msgstr "" +msgstr "Csatolás (--mount)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:549 msgid "Mounts/Binds" -msgstr "" +msgstr "Csatolások/kötések" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:455 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:567 @@ -1200,48 +1219,48 @@ msgstr "Név" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:213 msgid "Name of the container that can be selected during container creation" -msgstr "" +msgstr "A konténer neve, amely a konténer létrehozásakor kiválasztható" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:38 msgid "Name of the network that can be selected during container creation" -msgstr "" +msgstr "A hálózat neve, amely a konténer létrehozásakor kiválasztható" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:738 msgid "Net Stats" -msgstr "" +msgstr "Hálózati statisztika" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:282 msgid "Network Aliases" -msgstr "" +msgstr "Hálózati álnevek" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:100 msgid "Network Configurations" -msgstr "" +msgstr "Hálózati beállítások" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:59 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:37 msgid "Network Name" -msgstr "" +msgstr "Hálózat neve" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1968 msgid "Network connected" -msgstr "" +msgstr "Hálózat csatlakoztatva" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:242 msgid "Network created" -msgstr "" +msgstr "A hálózat létrejött" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:240 msgid "Network created with warning" -msgstr "" +msgstr "A hálózat létrejött, figyelmeztetéssel" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1867 msgid "Network disconnected" -msgstr "" +msgstr "Hálózat leválasztva" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:1143 msgid "Network error" -msgstr "" +msgstr "Hálózati hiba" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:557 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:254 @@ -1249,143 +1268,148 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:209 #: applications/luci-app-dockerman/root/usr/share/luci/menu.d/luci-app-dockerman.json:299 msgid "Networks" -msgstr "" +msgstr "Hálózatok" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:49 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/networks.js:62 msgid "Networks overview" -msgstr "" +msgstr "Hálózatok áttekintése" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:987 msgid "New container duplicated from" -msgstr "" +msgstr "Új konténer duplikálva innen" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:988 msgid "New container has been created." -msgstr "" +msgstr "Az új konténer létrejött." #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:622 msgid "New tag" -msgstr "" +msgstr "Új címke" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/volumes.js:118 msgid "New volume" -msgstr "" +msgstr "Új kötet" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:484 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:679 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:249 msgid "No" -msgstr "" +msgstr "Nem" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1878 msgid "No additional networks available to connect" -msgstr "" +msgstr "Nincs további csatlakoztatható hálózat" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:877 msgid "No changes needed" -msgstr "" +msgstr "Nincs szükség módosításra" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:348 msgid "No copy (nocopy)" -msgstr "" +msgstr "Nincs másolás (nocopy)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:251 msgid "No events found" -msgstr "" +msgstr "Nem található esemény" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:898 msgid "No filesystem changes detected" -msgstr "" +msgstr "Nem észlelhető fájlrendszer-változás" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:161 msgid "No image tags available" -msgstr "" +msgstr "Nincsenek elérhető lemezkép-címkék" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:386 msgid "No images selected" -msgstr "" +msgstr "Nincs kiválasztott lemezkép" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1688 msgid "No logs available" -msgstr "" +msgstr "Nincsenek elérhető naplók" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:972 msgid "No name specified." -msgstr "" +msgstr "Nincs megadva név." #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1946 msgid "No network selected" -msgstr "" +msgstr "Nincs kiválasztott hálózat" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:855 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1281 msgid "No processes running" -msgstr "" +msgstr "Nincsenek futó folyamatok" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:805 msgid "No statistics available" -msgstr "" +msgstr "Nincs elérhető statisztika" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:614 msgid "No volumes available" -msgstr "" +msgstr "Nincsenek elérhető kötetek" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:83 msgid "" "Note that dockerd no longer listens on IP:port without TLS options after v27." msgstr "" +"Vegye figyelembe, hogy a v27 óta a dockerd TLS-beállítások nélkül már nem " +"figyel IP:port címen." #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:51 msgid "Note: docker provides no container import facility." -msgstr "" +msgstr "Megjegyzés: a docker nem kínál konténerimportálási lehetőséget." #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:116 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:151 msgid "Now" -msgstr "" +msgstr "Most" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:679 msgid "Number of CPUs. Number is a fractional number. 0.000 means no limit" msgstr "" +"A CPU-k száma. Tört szám is lehet. A 0.000 azt jelenti, hogy nincs korlát" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:864 #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:891 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1363 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:242 msgid "OK" -msgstr "" +msgstr "OK" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:673 msgid "OOM Kill Disable" -msgstr "" +msgstr "OOM-kilövés letiltása" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:487 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:252 msgid "On failure" -msgstr "" +msgstr "Hiba esetén" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:37 msgid "" "On this page all images are displayed that are available on the system and " "with which a container can be created." msgstr "" +"Ezen az oldalon látható a rendszeren elérhető összes lemezkép, amelyből " +"konténer hozható létre." #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:263 msgid "Only for user-defined networks" -msgstr "" +msgstr "Csak felhasználó által meghatározott hálózatokhoz" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:351 msgid "Open in browser" -msgstr "" +msgstr "Megnyitás böngészőben" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:899 msgid "Operation failed" -msgstr "" +msgstr "A művelet sikertelen" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:542 msgid "Operational Output" -msgstr "" +msgstr "Műveleti kimenet" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:466 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:495 @@ -1396,7 +1420,7 @@ msgstr "Lehetőségek" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:46 msgid "Overlay network" -msgstr "" +msgstr "Overlay hálózat" #: applications/luci-app-dockerman/root/usr/share/luci/menu.d/luci-app-dockerman.json:19 msgid "Overview" @@ -1404,19 +1428,19 @@ msgstr "Áttekintés" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:847 msgid "PID" -msgstr "" +msgstr "PID" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:737 msgid "PID Stats" -msgstr "" +msgstr "PID-statisztika" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/networks.js:189 msgid "Parent Interface" -msgstr "" +msgstr "Szülőinterfész" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:62 msgid "Pass-through (Mirror physical device to single MAC VLAN)" -msgstr "" +msgstr "Áteresztés (fizikai eszköz tükrözése egyetlen MAC VLAN-ra)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:120 msgid "Password" @@ -1424,74 +1448,74 @@ msgstr "Jelszó" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:896 msgid "Path" -msgstr "Útvonal" +msgstr "Elérési út" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1640 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1641 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1664 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1665 msgid "Path error" -msgstr "" +msgstr "Elérésiút-hiba" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:936 msgid "Path:" -msgstr "" +msgstr "Elérési út:" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:396 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1806 msgid "Pause" -msgstr "" +msgstr "Szüneteltetés" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:207 msgid "Pause this container" -msgstr "" +msgstr "A konténer szüneteltetése" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:86 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:143 msgid "Paused" -msgstr "" +msgstr "Szüneteltetve" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:742 msgid "Per CPU Stats" -msgstr "" +msgstr "CPU-nkénti statisztika" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:550 msgid "Please choose a directory or enter a volume name" -msgstr "" +msgstr "Kérjük, válasszon egy könyvtárat, vagy adja meg egy kötet nevét" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:555 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:563 msgid "Please enter a mount path" -msgstr "" +msgstr "Kérjük, adjon meg egy csatolási útvonalat" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:559 msgid "Please enter a subpath" -msgstr "" +msgstr "Kérjük, adjon meg egy alútvonalat" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:293 msgid "Please enter an image repo tag" -msgstr "" +msgstr "Kérjük, adjon meg egy lemezkép tároló:címke értéket" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:299 msgid "Please enter an image source" -msgstr "" +msgstr "Kérjük, adja meg a lemezkép forrását" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:102 msgid "Please enter an image tag" -msgstr "" +msgstr "Kérjük, adjon meg egy lemezkép-címkét" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:176 msgid "Please select an image tag to push" -msgstr "" +msgstr "Kérjük, válassza ki a feltöltendő lemezkép-címkét" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:1029 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1622 msgid "Please specify a path" -msgstr "" +msgstr "Kérjük, adjon meg egy elérési utat" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1035 msgid "Port:" -msgstr "" +msgstr "Port:" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:507 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:164 @@ -1500,123 +1524,125 @@ msgstr "Portok" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:60 msgid "Private (Prevent communication between MAC VLANs)" -msgstr "" +msgstr "Privát (a MAC VLAN-ok közötti kommunikáció tiltása)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:240 msgid "Privileged" -msgstr "" +msgstr "Privilegizált" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:678 msgid "Privileged Mode" -msgstr "" +msgstr "Privilegizált mód" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:830 msgid "Processes" -msgstr "" +msgstr "Folyamatok" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:337 msgid "Propagation: private" -msgstr "" +msgstr "Terjesztés: private" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:338 msgid "Propagation: rprivate" -msgstr "" +msgstr "Terjesztés: rprivate" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:340 msgid "Propagation: rshared" -msgstr "" +msgstr "Terjesztés: rshared" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:342 msgid "Propagation: rslave" -msgstr "" +msgstr "Terjesztés: rslave" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:339 msgid "Propagation: shared" -msgstr "" +msgstr "Terjesztés: shared" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:341 msgid "Propagation: slave" -msgstr "" +msgstr "Terjesztés: slave" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:429 msgid "Prune" -msgstr "" +msgstr "Takarítás (prune)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:626 msgid "Publish container's port(s) to the host" -msgstr "" +msgstr "A konténer portjainak közzététele a gazdagépen" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:361 msgid "Pull" -msgstr "" +msgstr "Letöltés (pull)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:362 msgid "Push" -msgstr "" +msgstr "Felküldés" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:143 msgid "" "Push an image to a registry. Select an image tag from all available tags on " "the system." msgstr "" +"Lemezkép feltöltése (push) egy regisztrációs adatbázisba. Válasszon egy " +"lemezkép-címkét a rendszeren elérhető összes címke közül." #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:817 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:881 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:913 msgid "Raw JSON" -msgstr "" +msgstr "Nyers JSON" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:335 msgid "Read-only (ro)" -msgstr "" +msgstr "Csak olvasható (ro)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:336 msgid "Read-write (rw)" -msgstr "" +msgstr "Olvasható-írható (rw)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:125 msgid "Registry" -msgstr "" +msgstr "Regisztrációs adatbázis" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:100 msgid "Registry Auth" -msgstr "" +msgstr "Regisztrációs adatbázis hitelesítése" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:63 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:173 msgid "Registry Mirrors" -msgstr "" +msgstr "Regisztrációs adatbázis tükrök" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:426 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:424 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1808 msgid "Remove" -msgstr "" +msgstr "Eltávolítás" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1815 msgid "Remove container?" -msgstr "" +msgstr "Eltávolítja a konténert?" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:535 msgid "Remove tag" -msgstr "" +msgstr "Címke eltávolítása" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:625 msgid "Repository" -msgstr "" +msgstr "Tároló (repository)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:658 msgid "Repository cannot be empty" -msgstr "" +msgstr "A tároló nem lehet üres" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:755 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:787 msgid "Resource Usage" -msgstr "" +msgstr "Erőforrás-használat" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:607 msgid "Resources" -msgstr "" +msgstr "Erőforrások" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:363 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1803 @@ -1627,45 +1653,45 @@ msgstr "Újraindítás" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:154 msgctxt "daemon restart action" msgid "Restart" -msgstr "" +msgstr "Újraindítás" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:482 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:246 msgid "Restart Policy" -msgstr "" +msgstr "Újraindítási házirend" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:238 msgid "Restart this container" -msgstr "" +msgstr "A konténer újraindítása" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:88 msgid "Restrict external access to the network" -msgstr "" +msgstr "A hálózat külső elérésének korlátozása" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:630 msgid "Run command" -msgstr "" +msgstr "Futtatandó parancs" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:84 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:141 msgid "Running" -msgstr "" +msgstr "Fut" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:833 msgid "Running Processes" -msgstr "" +msgstr "Futó folyamatok" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:192 msgid "Running:" -msgstr "" +msgstr "Fut:" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:847 msgid "STAT" -msgstr "" +msgstr "STAT" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:427 msgid "Save locally" -msgstr "" +msgstr "Mentés helyben" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:249 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:62 @@ -1675,53 +1701,57 @@ msgstr "Hatókör" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:91 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:336 msgid "Select Type First" -msgstr "" +msgstr "Először válasszon típust" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:159 msgid "Select image tag" -msgstr "" +msgstr "Lemezkép-címke kiválasztása" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1918 msgid "Select network to connect:" -msgstr "" +msgstr "Válassza ki a csatlakoztatandó hálózatot:" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:361 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:474 msgid "Select options..." -msgstr "" +msgstr "Beállítások kiválasztása..." #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1150 msgid "Send" -msgstr "" +msgstr "Küldés" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:291 msgid "Set custom DNS servers" -msgstr "" +msgstr "Egyéni DNS-szerverek beállítása" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:301 msgid "Set environment variables inside the container" -msgstr "" +msgstr "Környezeti változók beállítása a konténerben" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:72 msgid "Set the logging level" -msgstr "" +msgstr "A naplózási szint beállítása" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:95 msgid "" "Set your LAN interface when docker listens on all addresses like 0.0.0.0 " "or ::." msgstr "" +"Adja meg a LAN-interfészt, ha a docker minden címen figyel, például 0.0.0.0 " +"vagy :: címen." #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:423 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:599 msgid "Size" -msgstr "" +msgstr "Méret" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:82 msgid "" "Specifies where the Docker daemon will listen for client connections. " "default:" msgstr "" +"Megadja, hol figyelje a Docker démon a kliensek kapcsolódásait. " +"Alapértelmezett:" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:354 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1802 @@ -1730,57 +1760,57 @@ msgstr "Indítás" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:208 msgid "Start this container" -msgstr "" +msgstr "A konténer indítása" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:161 msgid "State" -msgstr "" +msgstr "Állapot" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:703 msgid "Stats" -msgstr "" +msgstr "Statisztika" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:464 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:714 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:721 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:840 msgid "Status" -msgstr "" +msgstr "Állapot" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1109 msgid "Stderr" -msgstr "" +msgstr "Stderr" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1101 msgid "Stdin" -msgstr "" +msgstr "Stdin" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1105 msgid "Stdout" -msgstr "" +msgstr "Stdout" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:372 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1804 msgid "Stop" -msgstr "Megállítás" +msgstr "Leállítás" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:155 msgctxt "daemon stop action" msgid "Stop" -msgstr "" +msgstr "Leállítás" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:249 msgid "Stop this container" -msgstr "" +msgstr "A konténer leállítása" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:88 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:145 msgid "Stopped" -msgstr "" +msgstr "Leállítva" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1098 msgid "Streams:" -msgstr "" +msgstr "Adatfolyamok:" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:104 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:103 @@ -1790,80 +1820,84 @@ msgstr "Alhálózat" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:460 msgid "Subpath" -msgstr "" +msgstr "Alútvonal" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:81 msgid "Subtype" -msgstr "" +msgstr "Altípus" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1523 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1774 msgid "Success" -msgstr "" +msgstr "Siker" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:1012 msgid "Successful" -msgstr "" +msgstr "Sikeres" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:542 msgid "Sysctl Settings" -msgstr "" +msgstr "Sysctl-beállítások" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:666 msgid "Sysctl(--sysctl)" -msgstr "" +msgstr "Sysctl (--sysctl)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:667 msgid "Sysctls (kernel parameters) options" -msgstr "" +msgstr "Sysctl-beállítások (kernelparaméterek)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:222 msgid "TTY (-t)" -msgstr "" +msgstr "TTY (-t)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1764 msgid "TTYd may still be starting up" -msgstr "" +msgstr "Lehet, hogy a TTYd még indul" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:635 msgid "Tag" -msgstr "" +msgstr "Címke (tag)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:670 msgid "Tag added successfully" -msgstr "" +msgstr "A címke hozzáadása sikeres" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:554 msgid "Tag removed successfully" -msgstr "" +msgstr "A címke eltávolítása sikeres" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:105 msgid "The first match is used." -msgstr "" +msgstr "Az első egyezés kerül felhasználásra." #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:641 msgid "The hostname to use for the container" -msgstr "" +msgstr "A konténer gépneve" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:691 msgid "The length of a CPU period in microseconds" -msgstr "" +msgstr "Egy CPU-periódus hossza mikroszekundumban" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:746 msgid "The logging configuration for this container" -msgstr "" +msgstr "A konténer naplózási beállításai" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:296 msgid "" "The user that commands are run as inside the container. (format: name|" "uid[:group|gid])" msgstr "" +"A felhasználó, akinek nevében a parancsok futnak a konténerben. (formátum: " +"name|uid[:group|gid])" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:50 msgid "" "This page displays all docker Containers that have been created on the " "connected docker host." msgstr "" +"Ez az oldal megjeleníti a kapcsolódott Docker-gazdagépen létrehozott összes " +"Docker-konténert." #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:45 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/networks.js:58 @@ -1871,40 +1905,44 @@ msgid "" "This page displays all docker networks that have been created on the " "connected docker host." msgstr "" +"Ez az oldal megjeleníti a kapcsolódott Docker-gazdagépen létrehozott összes " +"Docker-hálózatot." #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/volumes.js:57 msgid "" "This page displays all docker volumes that have been created on the " "connected docker host." msgstr "" +"Ez az oldal megjeleníti a kapcsolódott Docker-gazdagépen létrehozott összes " +"Docker-kötetet." #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:249 msgid "Time" -msgstr "" +msgstr "Idő" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:376 msgid "Tmpfs" -msgstr "" +msgstr "Tmpfs" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:528 msgid "Tmpfs Directories" -msgstr "" +msgstr "Tmpfs könyvtárak" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:660 msgid "Tmpfs(--tmpfs)" -msgstr "" +msgstr "Tmpfs (--tmpfs)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:131 msgid "To" -msgstr "" +msgstr "Cél" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:138 msgid "Token" -msgstr "" +msgstr "Token" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:107 msgid "Tokes and Passwords are not encrypted in the uci configuration." -msgstr "" +msgstr "A tokenek és jelszavak nincsenek titkosítva az UCI-beállításokban." #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:82 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:139 @@ -1915,64 +1953,64 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/volumes.js:45 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/volumes.js:111 msgid "Total" -msgstr "" +msgstr "Összesen" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:170 msgid "Total Memory" -msgstr "" +msgstr "Teljes memória" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:190 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:200 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:210 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:220 msgid "Total:" -msgstr "" +msgstr "Összesen:" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:498 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:63 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:249 msgid "Type" -msgstr "" +msgstr "Típus" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1135 msgid "Type command here... (Ctrl+D to detach)" -msgstr "" +msgstr "Írja be ide a parancsot... (leválasztás: Ctrl+D)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:847 msgid "USER" -msgstr "" +msgstr "USER" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:980 msgid "Unexpected error" -msgstr "" +msgstr "Váratlan hiba" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1355 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1640 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1683 msgid "Unknown error" -msgstr "" +msgstr "Ismeretlen hiba" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:485 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:250 msgid "Unless stopped" -msgstr "" +msgstr "Hacsak nincs leállítva" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:396 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1807 msgid "Unpause" -msgstr "" +msgstr "Folytatás" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:208 msgid "Unpause this container" -msgstr "" +msgstr "A konténer folytatása" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:582 msgid "Update" -msgstr "" +msgstr "Frissítés" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1359 msgid "Updated" -msgstr "" +msgstr "Frissítve" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:428 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:948 @@ -1981,20 +2019,20 @@ msgstr "Feltöltés" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1610 msgid "Uploading file to container…" -msgstr "" +msgstr "Fájl feltöltése a konténerbe…" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:698 msgid "Uploading image…" -msgstr "" +msgstr "Lemezkép feltöltése…" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1609 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:697 msgid "Uploading…" -msgstr "" +msgstr "Feltöltés…" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:103 msgid "Used for push/pull operations on custom registries." -msgstr "" +msgstr "Egyéni regisztrációs adatbázisokon végzett push/pull műveletekhez." #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:115 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:479 @@ -2004,42 +2042,42 @@ msgstr "Felhasználó (user)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1027 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:295 msgid "User(-u)" -msgstr "" +msgstr "Felhasználó (-u)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:61 msgid "VEPA (Virtual Ethernet Port Aggregator)" -msgstr "" +msgstr "VEPA (Virtual Ethernet Port Aggregator)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:847 msgid "VSZ" -msgstr "" +msgstr "VSZ" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:803 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:244 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:251 msgid "Value" -msgstr "" +msgstr "Érték" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:240 msgid "Version" -msgstr "" +msgstr "Verzió" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:374 msgid "Volume (named)" -msgstr "" +msgstr "Kötet (nevesített)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:401 msgid "Volume Name" -msgstr "" +msgstr "Kötet neve" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:219 #: applications/luci-app-dockerman/root/usr/share/luci/menu.d/luci-app-dockerman.json:348 msgid "Volumes" -msgstr "" +msgstr "Kötetek" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/volumes.js:61 msgid "Volumes overview" -msgstr "" +msgstr "Kötetek áttekintése" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:75 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1764 @@ -2048,51 +2086,51 @@ msgstr "Figyelmeztetés" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1078 msgid "WebSocket" -msgstr "" +msgstr "WebSocket" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1087 msgid "WebSocket Console" -msgstr "" +msgstr "WebSocket konzol" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1500 msgid "WebSocket error" -msgstr "" +msgstr "WebSocket-hiba" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:679 msgid "Yes" -msgstr "" +msgstr "Igen" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:323 msgid "attach" -msgstr "" +msgstr "attach" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:404 msgid "builder" -msgstr "" +msgstr "builder" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:324 msgid "commit" -msgstr "" +msgstr "commit" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1836 msgid "completed" -msgstr "" +msgstr "befejeződött" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:405 msgid "config" -msgstr "" +msgstr "config" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:372 msgid "connect" -msgstr "" +msgstr "connect" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:406 msgid "container" -msgstr "" +msgstr "container" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:325 msgid "copy" -msgstr "" +msgstr "copy" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:326 #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:357 @@ -2100,109 +2138,109 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:382 #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:391 msgid "create" -msgstr "" +msgstr "create" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:407 msgid "daemon" -msgstr "" +msgstr "daemon" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:358 msgid "delete" -msgstr "" +msgstr "delete" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:327 #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:374 #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:385 msgid "destroy" -msgstr "" +msgstr "destroy" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:328 msgid "detach" -msgstr "" +msgstr "detach" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:329 msgid "die" -msgstr "" +msgstr "die" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:373 msgid "disconnect" -msgstr "" +msgstr "disconnect" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:330 msgid "exec_create" -msgstr "" +msgstr "exec_create" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:331 msgid "exec_detach" -msgstr "" +msgstr "exec_detach" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:333 msgid "exec_die" -msgstr "" +msgstr "exec_die" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:332 msgid "exec_start" -msgstr "" +msgstr "exec_start" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:334 msgid "export" -msgstr "" +msgstr "export" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:206 msgid "git repositories require git installed on the docker host." -msgstr "" +msgstr "A git tárolókhoz telepített git szükséges a Docker-gazdagépen." #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:335 msgid "health_status" -msgstr "" +msgstr "health_status" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:408 msgid "image" -msgstr "" +msgstr "image" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:755 msgid "json-file" -msgstr "" +msgstr "json-file" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:336 msgid "kill" -msgstr "" +msgstr "kill" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:360 msgid "load" -msgstr "" +msgstr "load" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:754 msgid "local" -msgstr "" +msgstr "local" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:383 msgid "mount" -msgstr "" +msgstr "mount" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:409 msgid "network" -msgstr "" +msgstr "network" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:410 msgid "node" -msgstr "" +msgstr "node" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:757 msgid "none" -msgstr "" +msgstr "none" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:337 msgid "oom" -msgstr "" +msgstr "oom" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:338 msgid "pause" -msgstr "" +msgstr "pause" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:411 msgid "plugin" -msgstr "" +msgstr "plugin" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:318 #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:347 @@ -2210,99 +2248,99 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:377 #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:386 msgid "prune" -msgstr "" +msgstr "prune" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:869 msgid "ps flags:" -msgstr "" +msgstr "ps-kapcsolók:" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:352 msgid "reload" -msgstr "" +msgstr "reload" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:376 #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:393 msgid "remove" -msgstr "" +msgstr "remove" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:339 msgid "rename" -msgstr "" +msgstr "rename" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:340 msgid "resize" -msgstr "" +msgstr "resize" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:341 msgid "restart" -msgstr "" +msgstr "restart" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:363 msgid "save" -msgstr "" +msgstr "save" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:412 msgid "secret" -msgstr "" +msgstr "secret" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:413 msgid "service" -msgstr "" +msgstr "service" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:342 msgid "start" -msgstr "" +msgstr "start" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:343 msgid "stop" -msgstr "" +msgstr "stop" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:756 msgid "syslog" -msgstr "" +msgstr "syslog" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:364 msgid "tag" -msgstr "" +msgstr "tag" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:437 msgid "tmpfs Options" -msgstr "" +msgstr "tmpfs-beállítások" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:344 msgid "top" -msgstr "" +msgstr "top" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:384 msgid "unmount" -msgstr "" +msgstr "unmount" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:345 msgid "unpause" -msgstr "" +msgstr "unpause" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:365 msgid "untag" -msgstr "" +msgstr "untag" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:346 #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:375 #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:392 msgid "update" -msgstr "" +msgstr "update" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:414 msgid "volume" -msgstr "" +msgstr "volume" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/volumes.js:126 msgid "volume name" -msgstr "" +msgstr "kötet neve" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1361 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:991 msgid "with warnings" -msgstr "" +msgstr "figyelmeztetésekkel" #~ msgid "Command line Error" #~ msgstr "Parancssori hibaüzenet" diff --git a/luci-app-dockerman/po/id/dockerman.po b/luci-app-dockerman/po/id/dockerman.po index 86a48c26f..aee60f000 100644 --- a/luci-app-dockerman/po/id/dockerman.po +++ b/luci-app-dockerman/po/id/dockerman.po @@ -1,14 +1,15 @@ msgid "" msgstr "" -"PO-Revision-Date: 2026-08-18 10:04+0000\n" -"Last-Translator: Fiqri Ardyansyah \n" +"PO-Revision-Date: 2026-10-23 20:11+0000\n" +"Last-Translator: \"Hamake D. Arayanai\" " +"\n" "Language-Team: Indonesian \n" "Language: id\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 2026.9.dev0\n" +"X-Generator: Weblate 2026.11.dev0\n" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:505 msgid "/mnt/path" @@ -32,11 +33,11 @@ msgstr "Daftar kapabilitas kernel untuk ditambahkan ke kontainer" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:249 msgid "Action" -msgstr "" +msgstr "Tindakan" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1825 msgid "Action unavailable:" -msgstr "" +msgstr "Tindakan tidak tersedia:" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:249 msgid "Actor" @@ -57,27 +58,27 @@ msgstr "Tambah perangkat host ke kontainer" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:681 msgid "Added Capabilities" -msgstr "" +msgstr "Kemampuan Tambahan" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:634 msgid "Advanced" -msgstr "" +msgstr "Lanjutan" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:590 msgid "Aliases" -msgstr "" +msgstr "Nama lain" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1924 msgid "Aliases (optional):" -msgstr "" +msgstr "Nama lain (opsional):" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:342 msgid "All Subtypes" -msgstr "" +msgstr "Semua Subtipe" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:73 msgid "All Types" -msgstr "" +msgstr "Semua Jenis" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:647 msgid "Allocates an ephemeral host port for all of a container's exposed ports" @@ -116,7 +117,7 @@ msgstr "Sudah ada" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:431 msgid "Back to Containers" -msgstr "" +msgstr "Kembali ke Kontainer" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:48 msgid "Base device" @@ -124,7 +125,7 @@ msgstr "Perangkat pokok" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:373 msgid "Bind (host directory)" -msgstr "" +msgstr "Bind (direktori host)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:306 msgid "Bind mount a volume" @@ -132,7 +133,7 @@ msgstr "Pasang memperlihatkan volume" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:740 msgid "BlkIO Stats" -msgstr "" +msgstr "Statistik BlkIO" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:675 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:738 @@ -158,7 +159,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:206 msgid "Build an image." -msgstr "" +msgstr "Bangun sebuah citra." #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:72 msgid "" @@ -178,19 +179,19 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:690 msgid "CPU Period" -msgstr "" +msgstr "Periode CPU" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:625 msgid "CPU Period (microseconds)" -msgstr "" +msgstr "Periode CPU (mikrodetik)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:696 msgid "CPU Quota" -msgstr "" +msgstr "Kuota CPU" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:628 msgid "CPU Quota (microseconds)" -msgstr "" +msgstr "Kuota CPU (mikrodetik)" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:631 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:702 diff --git a/luci-app-dockerman/po/it/dockerman.po b/luci-app-dockerman/po/it/dockerman.po index e870dc3bc..610e7ebd4 100644 --- a/luci-app-dockerman/po/it/dockerman.po +++ b/luci-app-dockerman/po/it/dockerman.po @@ -1,14 +1,14 @@ msgid "" msgstr "" -"PO-Revision-Date: 2026-10-13 21:56+0000\n" -"Last-Translator: Pavel Borecki \n" +"PO-Revision-Date: 2026-11-05 22:13+0000\n" +"Last-Translator: Martin Olmer \n" "Language-Team: Italian \n" "Language: it\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2026.11.dev0\n" +"X-Generator: Weblate 2026.11.2.dev0\n" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:505 msgid "/mnt/path" @@ -32,7 +32,7 @@ msgstr "Una lista di capacità del kernel da aggiungere al contenitore" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:249 msgid "Action" -msgstr "" +msgstr "Azione" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1825 msgid "Action unavailable:" @@ -61,7 +61,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:634 msgid "Advanced" -msgstr "" +msgstr "Avanzato" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:590 msgid "Aliases" @@ -246,7 +246,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1189 msgid "Clear" -msgstr "" +msgstr "Cancella" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:617 msgid "Click to add a new tag to this image" @@ -321,7 +321,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1521 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1533 msgid "Connected" -msgstr "" +msgstr "Connesso" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1063 msgid "Connected to container console" @@ -433,7 +433,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:421 msgid "Create" -msgstr "" +msgstr "Crea" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:979 msgid "Create container" @@ -1280,7 +1280,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:679 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:249 msgid "No" -msgstr "" +msgstr "No" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1878 msgid "No additional networks available to connect" @@ -1653,7 +1653,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:84 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:141 msgid "Running" -msgstr "" +msgstr "In esecuzione" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:833 msgid "Running Processes" @@ -1738,7 +1738,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:161 msgid "State" -msgstr "" +msgstr "Stato" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:703 msgid "Stats" @@ -1780,7 +1780,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:88 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:145 msgid "Stopped" -msgstr "" +msgstr "Fermato" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1098 msgid "Streams:" @@ -1790,7 +1790,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:103 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/networks.js:191 msgid "Subnet" -msgstr "" +msgstr "Sottorete" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:460 msgid "Subpath" @@ -1884,7 +1884,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:249 msgid "Time" -msgstr "" +msgstr "Orario" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:376 msgid "Tmpfs" @@ -1936,7 +1936,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:63 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:249 msgid "Type" -msgstr "" +msgstr "Tipo" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1135 msgid "Type command here... (Ctrl+D to detach)" @@ -1954,7 +1954,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1640 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1683 msgid "Unknown error" -msgstr "" +msgstr "Errore sconosciuto" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:485 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:250 @@ -2026,7 +2026,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:240 msgid "Version" -msgstr "" +msgstr "Versione" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:374 msgid "Volume (named)" @@ -2064,7 +2064,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:679 msgid "Yes" -msgstr "" +msgstr "Si" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:323 msgid "attach" @@ -2194,7 +2194,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:757 msgid "none" -msgstr "" +msgstr "nessuno" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:337 msgid "oom" diff --git a/luci-app-dockerman/po/pt_BR/dockerman.po b/luci-app-dockerman/po/pt_BR/dockerman.po index d6c567dc6..9af9cb07c 100644 --- a/luci-app-dockerman/po/pt_BR/dockerman.po +++ b/luci-app-dockerman/po/pt_BR/dockerman.po @@ -1,8 +1,7 @@ msgid "" msgstr "" -"PO-Revision-Date: 2026-10-18 16:40+0000\n" -"Last-Translator: Janderson Vieira Santos " -"\n" +"PO-Revision-Date: 2026-11-01 06:11+0000\n" +"Last-Translator: LucasMZ \n" "Language-Team: Portuguese (Brazil) \n" "Language: pt_BR\n" @@ -771,7 +770,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:77 msgid "Fatal" -msgstr "Fatal" +msgstr "Fatais" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:924 msgid "File" @@ -979,7 +978,7 @@ msgstr "Índice do Endereço do Servidor" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:57 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:161 msgid "Info" -msgstr "Informação (Info)" +msgstr "Informações" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:73 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:72 @@ -1762,7 +1761,7 @@ msgstr "Condição geral" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:721 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:840 msgid "Status" -msgstr "Status" +msgstr "Estado" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1109 msgid "Stderr" diff --git a/luci-app-dockerman/po/ro/dockerman.po b/luci-app-dockerman/po/ro/dockerman.po index 430740800..b4b9315ff 100644 --- a/luci-app-dockerman/po/ro/dockerman.po +++ b/luci-app-dockerman/po/ro/dockerman.po @@ -1,7 +1,7 @@ msgid "" msgstr "" -"PO-Revision-Date: 2026-10-13 21:56+0000\n" -"Last-Translator: Pavel Borecki \n" +"PO-Revision-Date: 2026-11-05 09:04+0000\n" +"Last-Translator: Martin Olmer \n" "Language-Team: Romanian \n" "Language: ro\n" @@ -9,7 +9,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " "20)) ? 1 : 2;\n" -"X-Generator: Weblate 2026.11.dev0\n" +"X-Generator: Weblate 2026.11.1.dev0\n" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:505 msgid "/mnt/path" @@ -33,7 +33,7 @@ msgstr "O listă de capabilități de kernel care trebuie adăugate la container #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:249 msgid "Action" -msgstr "" +msgstr "Acţiune" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1825 msgid "Action unavailable:" @@ -954,7 +954,7 @@ msgstr "Prezentare generală a imaginilor" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:359 msgid "Import" -msgstr "Importați" +msgstr "Importare" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:202 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:212 @@ -1291,7 +1291,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:679 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:249 msgid "No" -msgstr "" +msgstr "Nu" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1878 msgid "No additional networks available to connect" @@ -1668,7 +1668,7 @@ msgstr "Executați comanda" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:84 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:141 msgid "Running" -msgstr "" +msgstr "Rulare" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:833 msgid "Running Processes" @@ -1764,7 +1764,7 @@ msgstr "Statistici" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:721 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:840 msgid "Status" -msgstr "Stare" +msgstr "Status" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1109 msgid "Stderr" @@ -1936,7 +1936,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/volumes.js:45 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/volumes.js:111 msgid "Total" -msgstr "" +msgstr "Total" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:170 msgid "Total Memory" @@ -1953,7 +1953,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:63 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:249 msgid "Type" -msgstr "" +msgstr "Tip" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1135 msgid "Type command here... (Ctrl+D to detach)" @@ -2043,7 +2043,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:240 msgid "Version" -msgstr "" +msgstr "Versiune" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:374 msgid "Volume (named)" @@ -2081,7 +2081,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:679 msgid "Yes" -msgstr "" +msgstr "Da" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:323 msgid "attach" @@ -2203,7 +2203,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:409 msgid "network" -msgstr "" +msgstr "rețea" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:410 msgid "node" @@ -2211,7 +2211,7 @@ msgstr "" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:757 msgid "none" -msgstr "" +msgstr "niciuna" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:337 msgid "oom" diff --git a/luci-app-dockerman/po/ru/dockerman.po b/luci-app-dockerman/po/ru/dockerman.po index d00436880..48d037416 100644 --- a/luci-app-dockerman/po/ru/dockerman.po +++ b/luci-app-dockerman/po/ru/dockerman.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"PO-Revision-Date: 2026-10-01 12:16+0000\n" +"PO-Revision-Date: 2026-10-25 04:14+0000\n" "Last-Translator: SnIPeRSnIPeR " "\n" "Language-Team: Russian =2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Weblate 2026.10.dev0\n" +"X-Generator: Weblate 2026.11.dev0\n" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:505 msgid "/mnt/path" @@ -1576,7 +1576,7 @@ msgstr "Открыть порт(ы) контейнера хосту" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:361 msgid "Pull" -msgstr "Скачать" +msgstr "Запрашивать" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:362 msgid "Push" diff --git a/luci-app-dockerman/po/zh_Hant/dockerman.po b/luci-app-dockerman/po/zh_Hant/dockerman.po index 84f750439..715a52ddd 100644 --- a/luci-app-dockerman/po/zh_Hant/dockerman.po +++ b/luci-app-dockerman/po/zh_Hant/dockerman.po @@ -1,15 +1,14 @@ msgid "" msgstr "" -"PO-Revision-Date: 2026-08-17 17:58+0000\n" -"Last-Translator: 加尼瑪空格把變數都破壞了! " -"\n" +"PO-Revision-Date: 2026-10-20 09:40+0000\n" +"Last-Translator: TCP \n" "Language-Team: Chinese (Traditional Han script) \n" "Language: zh_Hant\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 2026.9.dev0\n" +"X-Generator: Weblate 2026.11.dev0\n" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:505 msgid "/mnt/path" @@ -250,7 +249,7 @@ msgstr "點選以新增標籤至此映像檔" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:531 msgid "Click to remove this tag" -msgstr "點選以刪除此標籤" +msgstr "點選以移除此標籤" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/networks.js:213 msgid "Click to view this network" @@ -536,7 +535,7 @@ msgstr "已斷線" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:536 msgid "Do you want to remove the tag \"%s\"?" -msgstr "刪除標籤 「%s」嗎?" +msgstr "移除標籤 「%s」嗎?" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:16 msgid "Docker - Configuration" @@ -792,11 +791,11 @@ msgstr "僅適用於本地 dockerd socket 實例。" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:301 msgid "Force Remove" -msgstr "強制刪除" +msgstr "強制移除" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:423 msgid "Force remove" -msgstr "強制刪除" +msgstr "強制移除" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1314 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:771 @@ -1593,15 +1592,15 @@ msgstr "Registry 鏡像" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:424 #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1808 msgid "Remove" -msgstr "刪除" +msgstr "移除" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1815 msgid "Remove container?" -msgstr "刪除容器?" +msgstr "移除容器?" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:535 msgid "Remove tag" -msgstr "刪除標籤" +msgstr "移除標籤" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:625 msgid "Repository" @@ -1837,7 +1836,7 @@ msgstr "標籤新增成功" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:554 msgid "Tag removed successfully" -msgstr "標籤刪除成功" +msgstr "標籤移除成功" #: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:105 msgid "The first match is used." @@ -2225,7 +2224,7 @@ msgstr "重新載入" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:376 #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:393 msgid "remove" -msgstr "刪除" +msgstr "移除" #: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:339 msgid "rename" diff --git a/luci-app-fastnet/Makefile b/luci-app-fastnet/Makefile index f9d807f63..581fe8a5c 100644 --- a/luci-app-fastnet/Makefile +++ b/luci-app-fastnet/Makefile @@ -7,12 +7,32 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=LuCI support for fastnet LUCI_DEPENDS:=+fastnet +luci-lib-linkeaseauth +linkease-app-entry +# APK uses -rN; OPKG uses -N for runtime package releases. +LUCI_EXTRA_DEPENDS:=fastnet (>=0.8.9-$(if $(CONFIG_USE_APK),r)1) LUCI_PKGARCH:=all -PKG_VERSION:=0.8.1-r5 -PKG_RELEASE:=7 +PKG_VERSION:=0.8.9-r1 +PKG_RELEASE:=8 +# Preserve LuCI translation version ordering when upgrading older git-* packages. +PKG_PO_VERSION:=git-26.313.00000-082 LUCI_MINIFY_CSS:=0 LUCI_MINIFY_JS:=0 +define Package/luci-app-fastnet/postinst +#!/bin/sh +set -e +"$${IPKG_INSTROOT}/usr/libexec/fastnet-card-register" install +if [ -z "$${IPKG_INSTROOT}" ]; then + rm -f /tmp/luci-indexcache /tmp/luci-indexcache.* + rm -rf /tmp/luci-modulecache/ + killall -HUP rpcd 2>/dev/null || true +fi +endef + +define Package/luci-app-fastnet/prerm +#!/bin/sh +"$${IPKG_INSTROOT}/usr/libexec/fastnet-card-register" remove +endef + include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/luci-app-fastnet/luasrc/controller/fastnet.lua b/luci-app-fastnet/luasrc/controller/fastnet.lua index 00bb349b8..b00cd38fe 100644 --- a/luci-app-fastnet/luasrc/controller/fastnet.lua +++ b/luci-app-fastnet/luasrc/controller/fastnet.lua @@ -1,10 +1,15 @@ module("luci.controller.fastnet", package.seeall) function index() + for _,action in ipairs({"summary","run","task","cancel"}) do + entry({"admin","services","fastnet","card",action},call("action_card_"..action)).leaf=true + end if not nixio.fs.access("/etc/config/fastnet") then return end entry({"admin", "services", "fastnet"}, cbi("fastnet"), _("FastNet"), 50).dependent = true entry({"admin", "services", "fastnet", "status"}, call("action_status")).leaf = true + entry({"admin", "services", "fastnet", "browser-origin"}, call("action_browser_origin")).leaf = true + entry({"admin", "services", "fastnet", "embed"}, call("action_embed")).leaf = true local open = entry({"admin", "services", "fastnet", "open"}, call("action_open")) open.leaf = true open.dependent = false @@ -30,5 +35,64 @@ function action_status() end function action_open() - compat():open("fastnet") + local dispatcher = require "luci.dispatcher" + require("luci.http").redirect(dispatcher.build_url("admin", "services", "fastnet", "embed") .. "?standalone=1") +end + +-- Only the launch metadata passes through LuCI. The iframe and all test data +-- connect to the configured FastNet service port in the browser. +function action_embed() + local http = require "luci.http" + local ctx = require("luci.dispatcher").context + if http.getenv("REQUEST_METHOD") ~= "GET" then http.status(405); return end + if not ctx.authsession or ctx.authuser ~= "root" then http.status(403); return end + local authority = http.getenv("HTTP_HOST") or "" + local host = authority:match("^(%[[%x:%.]+%]):?%d*$") or authority:match("^([%w%.%-]+):?%d*$") + local uci = require("luci.model.uci").cursor() + local port = tonumber(uci:get_first("fastnet", "fastnet", "port") or "3200") + if uci:get_first("fastnet", "fastnet", "enabled") == "0" or not host or not port or port % 1 ~= 0 or port < 1 or port > 65535 then + http.status(503); return + end + local url = "http://" .. host .. ":" .. tostring(port) .. "/webui/" + local query = {} + if http.formvalue("standalone") ~= "1" then + query[#query+1] = "embed=quickstart" + query[#query+1] = "theme=" .. (http.formvalue("theme") == "dark" and "dark" or "light") + end + if http.formvalue("view") == "history" then query[#query+1] = "view=history" end + local token = uci:get_first("fastnet", "fastnet", "token") or "" + if token ~= "" then query[#query+1] = "token=" .. http.urlencode(token) end + if #query > 0 then url = url .. "?" .. table.concat(query, "&") end + http.header("Cache-Control", "no-store") + http.header("Referrer-Policy", "no-referrer") + if http.formvalue("format") == "json" then + http.prepare_content("application/json"); http.write_json({url=url}) + else + http.redirect(url) + end +end + +function action_card_summary() require("luci.model.fastnet.card").new():handle("summary") end +function action_card_run() require("luci.model.fastnet.card").new():handle("run") end +function action_card_task() require("luci.model.fastnet.card").new():handle("task") end +function action_card_cancel() require("luci.model.fastnet.card").new():handle("cancel") end + +-- uHTTPd owns REMOTE_ADDR. The app proxy's loopback peer and browser-provided +-- forwarded headers cannot stand in for the real browser in LAN capability UI. +function action_browser_origin() + local http = require "luci.http" + local ctx = require("luci.dispatcher").context + if not ctx.authsession or ctx.authuser ~= "root" then http.status(403); return end + if http.getenv("REQUEST_METHOD") ~= "GET" then http.status(405); return end + local address = http.getenv("REMOTE_ADDR") + if type(address) ~= "string" or address == "" or #address > 64 or not address:match("^[%x:%.]+$") then http.status(503); return end + local loopback = address == "::1" or address:match("^127%.") ~= nil or address:match("^::ffff:127%.") ~= nil + local local_address = loopback + for _, entry in ipairs(require("nixio").getifaddrs() or {}) do + if entry.addr == address then local_address = true; break end + end + http.prepare_content("application/json") + http.header("Cache-Control", "no-store") + http.header("X-Content-Type-Options", "nosniff") + http.write_json({isLoopback=loopback,isLocal=local_address,isLocalInterface=local_address}) end diff --git a/luci-app-fastnet/luasrc/model/fastnet/card.lua b/luci-app-fastnet/luasrc/model/fastnet/card.lua new file mode 100644 index 000000000..e5604ca9f --- /dev/null +++ b/luci-app-fastnet/luasrc/model/fastnet/card.lua @@ -0,0 +1,150 @@ +-- The public authenticated adapter. No shell commands, core tokens or probes. +local M = {} +local SOCKET = "/var/run/fastnet-card.sock" +local STATE = "/etc/fastnet/card-state.json" +local MAX_BODY, MAX_RESPONSE = 1024, 8192 + +local function socket_request(method, path, body) + local nixio = require "nixio" + local socket = nixio.socket("unix", "stream") + if not socket then return nil, nil, "service_unavailable" end + local deadline = os.time() + 6 + local function timeout() + local remaining = deadline - os.time() + if remaining <= 0 then return false end + socket:setopt("socket", "sndtimeo", remaining) + socket:setopt("socket", "rcvtimeo", remaining) + return true + end + local function fail(reason) socket:close(); return nil, nil, reason end + timeout() + if not socket:connect(SOCKET) then return fail("service_unavailable") end + body = body or "" + local request = method .. " /api/card/" .. path .. " HTTP/1.0\r\nHost: localhost\r\nConnection: close\r\nContent-Type: application/json\r\nContent-Length: " .. #body .. "\r\n\r\n" .. body + local offset = 1 + while offset <= #request do + if not timeout() then return fail("upstream_timeout") end + local sent = socket:send(request:sub(offset)) + if not sent or sent <= 0 then return fail("upstream_timeout") end + offset = offset + sent + end + local chunks, length = {}, 0 + while true do + if not timeout() then return fail("upstream_timeout") end + local chunk = socket:recv(2048) + if not chunk then return fail("upstream_timeout") end + if chunk == "" then break end + length = length + #chunk + if length > MAX_RESPONSE + 4096 then return fail("upstream_too_large") end + chunks[#chunks + 1] = chunk + end + socket:close() + local raw = table.concat(chunks) + local headers, response = raw:match("^(.-)\r\n\r\n(.*)$") + local status = headers and tonumber(headers:match("^HTTP/1%.[01]%s+(%d%d%d)")) + if not status or not headers:lower():match("content%-type:%s*application/json") or #response > MAX_RESPONSE then return nil, nil, "invalid_upstream" end + return status, response +end + +local function defaults() + local nixio, fs = require "nixio", require "nixio.fs" + local function read(path, maximum) + local file = nixio.open(path, "r") + if not file then return nil end + local parts, length = {}, 0 + while true do + local part=file:read(4096) + if not part then file:close();return nil end + if part=="" then break end + length=length+#part + if length>maximum then file:close();return nil end + parts[#parts+1]=part + end + file:close();return table.concat(parts) + end + return {http=require "luci.http",ctx=require("luci.dispatcher").context,json=require "luci.jsonc",fs=fs, + enabled=function() return require("luci.model.uci").cursor():get_first("fastnet", "fastnet", "enabled") ~= "0" end, + state=function() return read(STATE, 128*1024) end,request=socket_request} +end + +function M.new(deps) + local d = deps or defaults() + local http, ctx, json = d.http, d.ctx, d.json + local function reply(status, value) + http.status(status) + http.prepare_content("application/json") + http.header("Cache-Control", "no-store") + http.header("X-Content-Type-Options", "nosniff") + http.write(type(value)=="string" and value or json.stringify(value)) + end + local function error_reply(status, code) return reply(status, {error=code}) end + -- jsonc drops null object members when decoding. Forward live core JSON as + -- bytes; reconstruct nullable fields explicitly only for a stopped service. + local function atom(value) return value==nil and "null" or json.stringify(value) end + local function measurement(value) + if type(value)~="table" then return '{"status":"not_tested","value":null,"measuredAt":null,"error":null}' end + return '{"status":'..atom(value.status)..',"value":'..atom(value.value)..',"measuredAt":'..atom(value.measuredAt)..',"error":'..atom(value.error)..',"runId":'..atom(value.runId)..'}' + end + local function stopped_summary(reason) + local raw=d.state();local disk=raw and json.parse(raw) or nil + local latest=type(disk)=="table" and (disk.schemaVersion==1 or disk.schemaVersion==2) and disk.latest or nil + local result="null" + if type(latest)=="table" then + result='{"runId":'..atom(latest.runId)..',"measuredAt":'..atom(latest.measuredAt)..',"download":'..measurement(latest.download)..',"upload":'..measurement(latest.upload)..',"nat":'..measurement(latest.nat)..',"ipv6":'..measurement(latest.ipv6) + if type(latest.bandwidth)=="table" then result=result..',"bandwidth":'..json.stringify(latest.bandwidth) end + result=result..'}' + end + local state = d.enabled() and "unavailable" or "disabled" + return reply(200,'{"schemaVersion":1,"instanceId":"","service":{"state":'..atom(state)..',"reason":'..atom(reason)..'},"latest":'..result..',"latestResults":'..json.stringify(type(disk)=="table" and disk.latestResults or {})..',"task":null}') + end + return {handle=function(_, action) + if type(ctx.authsession)~="string" or ctx.authsession=="" then return error_reply(401,"unauthenticated") end + if ctx.authuser~="root" then return error_reply(403,"forbidden") end + local writing=action=="run" or action=="cancel" + local method=http.getenv("REQUEST_METHOD") + if method~=(writing and "POST" or "GET") then return error_reply(405,"method") end + if not d.fs.access("/etc/config/fastnet") then return error_reply(503,"installation_incomplete") end + if not d.fs.access("/usr/sbin/FastNet") then return error_reply(503,"core_missing") end + local body, path = nil, action + if writing then + local site=http.getenv("HTTP_SEC_FETCH_SITE") + if site and site~="same-origin" and site~="none" then return error_reply(403,"cross_origin") end + local origin=http.getenv("HTTP_ORIGIN") + local secure=http.getenv("HTTPS");local scheme=(secure=="on" or secure=="1") and "https" or "http" + if origin and origin~=scheme.."://"..(http.getenv("HTTP_HOST") or "") then return error_reply(403,"cross_origin") end + -- Some uhttpd builds omit custom CGI headers. The standard LuCI query + -- token is read without consuming the JSON request body. + local csrf=http.getenv("HTTP_X_CSRF_TOKEN") or http.getenv("HTTP_X-CSRF-TOKEN") or http.formvalue("token",true) + if type(ctx.authtoken)~="string" or ctx.authtoken=="" or csrf~=ctx.authtoken then return error_reply(403,"csrf") end + local kind=(http.getenv("CONTENT_TYPE") or ""):match("^%s*([^;]+)") + if kind~="application/json" then return error_reply(422,"content_type") end + local size=tonumber(http.getenv("CONTENT_LENGTH")) + if size and size>MAX_BODY then return error_reply(413,"body_too_large") end + body=http.content() + if type(body)~="string" or #body>MAX_BODY then return error_reply(413,"body_too_large") end + local key=action=="run" and "idempotencyKey" or "id" + local value=body:match('^%s*{%s*"'..key..'"%s*:%s*"([A-Za-z0-9_-]+)"%s*}%s*$') + if not value or #value>(action=="run" and 64 or 96) or #value<(action=="run" and 16 or 1) then return error_reply(422,"invalid_request") end + elseif action=="task" then + local id=http.formvalue("id") + if type(id)~="string" or #id<1 or #id>96 or not id:match("^[A-Za-z0-9_-]+$") then return error_reply(422,"invalid_id") end + path="task?id="..id + elseif action~="summary" then return error_reply(404,"not_found") end + local status, raw, reason=d.request(method,path,body) + if not status then + if action=="summary" and reason=="service_unavailable" then return stopped_summary(reason) end + return error_reply(reason=="service_unavailable" and 503 or 502,reason or "invalid_upstream") + end + local value=type(raw)=="string" and #raw<=MAX_RESPONSE and json.parse(raw) or nil + if type(value)~="table" then return error_reply(502,"invalid_upstream") end + if status>=400 then + local allowed={busy=true,not_found=true,invalid_id=true,invalid_request=true,persistence_failed=true,local_only=true,method=true} + return error_reply(status,allowed[value.error] and value.error or "core_error") + end + if action=="summary" then + if value.schemaVersion~=1 or type(value.service)~="table" then return error_reply(502,"invalid_upstream") end + elseif type(value.id)~="string" or type(value.state)~="string" then return error_reply(502,"invalid_upstream") end + return reply(status,raw) + end} +end +return M diff --git a/luci-app-fastnet/root/etc/uci-defaults/50_luci-fastnet b/luci-app-fastnet/root/etc/uci-defaults/50_luci-fastnet index cd1c52f82..ca3bb0520 100644 --- a/luci-app-fastnet/root/etc/uci-defaults/50_luci-fastnet +++ b/luci-app-fastnet/root/etc/uci-defaults/50_luci-fastnet @@ -1,5 +1,6 @@ #!/bin/sh +/usr/libexec/fastnet-card-register install || exit 1 rm -f /tmp/luci-indexcache exit 0 diff --git a/luci-app-fastnet/root/usr/libexec/fastnet-card-register b/luci-app-fastnet/root/usr/libexec/fastnet-card-register new file mode 100755 index 000000000..421926a8b --- /dev/null +++ b/luci-app-fastnet/root/usr/libexec/fastnet-card-register @@ -0,0 +1,23 @@ +#!/bin/sh +set -eu +root=${IPKG_INSTROOT:-} +source="$root/usr/share/fastnet/quickstart/fastnet.json" +target="$root/usr/share/quickstart/cards.d/fastnet.json" +case "${1:-install}" in + install) + [ -f "$source" ] || exit 1 + entry=$(sed -n 's/^[[:space:]]*"entry": "\(\/luci-static\/fastnet\/quickstart\/card\.[a-f0-9][a-f0-9]*\.js\)".*/\1/p' "$source") + [ -n "$entry" ] && [ -f "$root/www$entry" ] || exit 1 + umask 022 + mkdir -p "${target%/*}" + temporary="$target.new.$$" + trap 'rm -f "$temporary"' EXIT HUP INT TERM + cp "$source" "$temporary" + mv -f "$temporary" "$target" + ;; + remove) + # Never delete another package's registration, including a replaced file. + if [ -f "$source" ] && cmp -s "$source" "$target"; then rm -f "$target"; fi + ;; + *) exit 2 ;; +esac diff --git a/luci-app-fastnet/root/usr/share/fastnet/quickstart/fastnet.json b/luci-app-fastnet/root/usr/share/fastnet/quickstart/fastnet.json new file mode 100644 index 000000000..be495b92d --- /dev/null +++ b/luci-app-fastnet/root/usr/share/fastnet/quickstart/fastnet.json @@ -0,0 +1,23 @@ +{ + "schemaVersion": 1, + "id": "plugin.fastnet", + "title": "外网测速", + "glyph": "activity", + "abi": "quickstart-card-v1", + "version": "0.8.9-1", + "apiBase": "/cgi-bin/luci/admin/services/fastnet/card", + "forms": { + "standard": { + "minWidth": 280, + "minHeight": 260 + }, + "summary": { + "minWidth": 240, + "minHeight": 148 + } + }, + "stacked": [ + "summary" + ], + "entry": "/luci-static/fastnet/quickstart/card.dfb0ce55.js" +} diff --git a/luci-app-fastnet/root/www/luci-static/fastnet/quickstart/card.dfb0ce55.js b/luci-app-fastnet/root/www/luci-static/fastnet/quickstart/card.dfb0ce55.js new file mode 100644 index 000000000..572d1ce68 --- /dev/null +++ b/luci-app-fastnet/root/www/luci-static/fastnet/quickstart/card.dfb0ce55.js @@ -0,0 +1,398 @@ +var D = (n, b, v) => new Promise((e, d) => { + var l = (r) => { + try { + f(v.next(r)); + } catch (q) { + d(q); + } + }, a = (r) => { + try { + f(v.throw(r)); + } catch (q) { + d(q); + } + }, f = (r) => r.done ? e(r.value) : Promise.resolve(r.value).then(l, a); + f((v = v.apply(n, b)).next()); +}); +import { defineAsyncComponent as ia, h as W, computed as z, ref as J, onMounted as ua, onUnmounted as pa, openBlock as C, createElementBlock as B, unref as c, normalizeClass as G, createElementVNode as s, createTextVNode as w, toDisplayString as o, createBlock as la, resolveDynamicComponent as oa, withCtx as fa, createCommentVNode as ca, reactive as ma } from "/luci-static/quickstart/card-runtime-v1.js"; +const ga = '[data-fastnet-card]{--fn-down:var(--qs-card-accent);position:relative;isolation:isolate;container-type:inline-size;gap:12px;border-radius:inherit}[data-fastnet-card] .qs-card-header h2>svg{color:var(--fn-down)}[data-fastnet-card] .qs-card-primary{background:var(--qs-card-accent);color:var(--qs-card-panel);border-color:transparent;padding:6px 13px;border-radius:9px;font-weight:600}[data-fastnet-card] .qs-card-menu>summary{border-color:transparent;color:var(--qs-card-muted)}[data-fastnet-card] .fn-speed-stage{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:center;gap:14px;padding:18px 20px;border-radius:14px;border:1px solid var(--qs-card-line);background:var(--qs-card-soft)}[data-fastnet-card] .fn-speed-caption{display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:10px;letter-spacing:.7px;color:var(--qs-card-muted)}[data-fastnet-card] .fn-live{display:flex;align-items:center;gap:5px;letter-spacing:0;white-space:nowrap}[data-fastnet-card] .fn-live:before{content:"";width:5px;height:5px;border-radius:50%;background:var(--qs-card-muted)}[data-fastnet-card] .fn-live.is-active{color:var(--qs-card-accent)}[data-fastnet-card] .fn-live.is-active:before{background:currentColor;box-shadow:0 0 0 3px var(--qs-card-soft)}[data-fastnet-card] .qs-card-metrics{gap:18px;align-items:center;grid-template-columns:1.25fr 1fr}[data-fastnet-card] .qs-card-metrics strong{font-size:clamp(30px,12cqi,52px);line-height:1.15;letter-spacing:-1.7px;font-weight:700;margin-top:4px;color:var(--fn-down)}[data-fastnet-card] .qs-card-metrics>div+div{border-left:1px solid var(--qs-card-line);padding-left:18px}[data-fastnet-card] .qs-card-metrics>div+div strong{font-size:clamp(25px,8cqi,36px);color:var(--qs-card-text);letter-spacing:-.9px}[data-fastnet-card] .qs-card-metrics small{letter-spacing:0}[data-fastnet-card] .qs-card-time{gap:5px;font-size:10px}[data-fastnet-card] .qs-card-statuses{padding:0;border:0;gap:10px}[data-fastnet-card] .qs-card-statuses>div{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:3px 8px;padding:8px 10px;border:1px solid var(--qs-card-line);border-radius:8px;background:var(--qs-card-panel)}[data-fastnet-card] .qs-card-statuses span{display:flex;align-items:center;gap:6px;letter-spacing:.3px;margin:0;flex:none}[data-fastnet-card] .qs-card-statuses i{width:6px;height:6px;border-radius:50%;background:var(--qs-card-muted)}[data-fastnet-card] .qs-card-statuses [data-tone=good] i{background:var(--qs-card-good)}[data-fastnet-card] .qs-card-statuses [data-tone=warning] i{background:var(--qs-card-warning)}[data-fastnet-card].qs-card-summary{gap:3px;background:none}[data-fastnet-card].qs-card-summary .fn-speed-stage{display:block;flex:none;padding:0;border:0;background:none}[data-fastnet-card].qs-card-summary .fn-speed-caption{display:none}[data-fastnet-card].qs-card-summary .qs-card-metrics{grid-template-columns:1fr 1fr;gap:12px}[data-fastnet-card].qs-card-summary .qs-card-metrics strong{font-size:23px;letter-spacing:-.5px;margin:0}[data-fastnet-card].qs-card-summary .qs-card-metrics>div+div{padding:0;border:0}[data-fastnet-card].qs-card-summary .qs-card-statuses>div{padding:0;border:0;background:none;max-width:50%;flex-wrap:nowrap;gap:5px}[data-fastnet-card].qs-card-summary .qs-card-statuses span{margin:0;gap:4px}[data-fastnet-card].qs-card-summary .qs-card-statuses i{width:4px;height:4px}[data-fastnet-card].qs-card-summary .qs-card-primary{padding:2px 7px;border-radius:6px}@media(max-width:600px){[data-fastnet-card]:not(.qs-card-summary) .fn-speed-stage{padding:14px;gap:12px}[data-fastnet-card]:not(.qs-card-summary) .qs-card-metrics strong{font-size:36px}[data-fastnet-card]:not(.qs-card-summary) .qs-card-metrics>div+div strong{font-size:28px}}[data-fastnet-card].fn-dense:not(.qs-card-summary){gap:5px;padding:10px 14px}[data-fastnet-card].fn-dense:not(.qs-card-summary) .fn-speed-stage{padding:6px 12px;gap:3px;min-height:81px;flex-shrink:0}[data-fastnet-card].fn-dense:not(.qs-card-summary) .fn-speed-caption{display:none}[data-fastnet-card].fn-dense:not(.qs-card-summary) .qs-card-metrics strong{font-size:28px;line-height:1.15;margin:0}[data-fastnet-card].fn-dense:not(.qs-card-summary) .qs-card-metrics>div+div strong{font-size:23px}[data-fastnet-card].fn-dense:not(.qs-card-summary) .qs-card-statuses>div{padding:6px 9px}[data-fastnet-card] .fn-lan-summary{flex:none;min-width:0;padding:0 20px;color:var(--qs-card-text)}[data-fastnet-card] .fn-lan-caption{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:2px 8px;font-size:10px;color:var(--qs-card-muted)}[data-fastnet-card] .fn-lan-caption time{font-variant-numeric:tabular-nums;white-space:nowrap}[data-fastnet-card] .fn-lan-metrics{display:grid;grid-template-columns:1.25fr 1fr;gap:18px;margin-top:6px}[data-fastnet-card] .fn-lan-metrics>div{min-width:0}[data-fastnet-card] .fn-lan-metrics>div+div{padding-left:18px;border-left:1px solid var(--qs-card-line)}[data-fastnet-card] .fn-lan-label{display:block;font-size:10px;color:var(--qs-card-muted)}[data-fastnet-card] .fn-lan-metrics strong{display:flex;align-items:baseline;gap:4px;font-size:20px;line-height:1.3;white-space:nowrap;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.4px}[data-fastnet-card] .fn-lan-metrics small{font-size:10px;letter-spacing:0;font-weight:400;color:var(--qs-card-muted)}[data-fastnet-card].fn-dense:not(.qs-card-summary) .fn-lan-summary{padding:0 12px}[data-fastnet-card].fn-dense:not(.qs-card-summary) .fn-lan-metrics{margin-top:2px}[data-fastnet-card].fn-dense:not(.qs-card-summary) .fn-lan-metrics strong{font-size:17px}[data-fastnet-card].qs-card-summary .fn-lan-summary{display:grid;grid-template-columns:28px minmax(0,1fr);align-items:center;gap:5px;padding:0}[data-fastnet-card].qs-card-summary .fn-lan-route,[data-fastnet-card].qs-card-summary .fn-lan-caption time,[data-fastnet-card].qs-card-summary .fn-lan-label{display:none}[data-fastnet-card].qs-card-summary .fn-lan-metrics{grid-template-columns:1fr 1fr;gap:8px;margin:0}[data-fastnet-card].qs-card-summary .fn-lan-metrics>div+div{border:0;padding:0}[data-fastnet-card].qs-card-summary .fn-lan-metrics strong{font-size:12px;font-weight:500;letter-spacing:0}[data-fastnet-card].qs-card-summary .fn-lan-metrics small{font-size:9px}@container (max-width:340px){[data-fastnet-card] .fn-lan-summary{padding:0 14px}[data-fastnet-card] .fn-lan-metrics strong{font-size:18px}}[data-fastnet-card].fn-dense:not(.qs-card-summary) .fn-lan-label,[data-fastnet-card].fn-dense:not(.qs-card-summary) .qs-card-progress small{display:none}[data-fastnet-card].fn-dense:not(.qs-card-summary) .qs-card-progress>button{min-height:26px;padding:2px 8px}@media(pointer:coarse){[data-fastnet-card].fn-dense:not(.qs-card-summary) .qs-card-progress>button{min-width:44px;min-height:44px}}@media(pointer:coarse){[data-fastnet-card].fn-dense:not(.qs-card-summary){padding:8px 14px;gap:4px}[data-fastnet-card].fn-dense:not(.qs-card-summary) .fn-lan-summary{display:grid;grid-template-columns:28px minmax(0,1fr);gap:5px;align-items:center}[data-fastnet-card].fn-dense:not(.qs-card-summary) .fn-lan-route,[data-fastnet-card].fn-dense:not(.qs-card-summary) .fn-lan-caption time{display:none}[data-fastnet-card].fn-dense:not(.qs-card-summary) .fn-lan-metrics{margin:0;grid-template-columns:1fr 1fr;gap:8px}[data-fastnet-card].fn-dense:not(.qs-card-summary) .fn-lan-metrics>div+div{padding:0;border:0}[data-fastnet-card].fn-dense:not(.qs-card-summary) .fn-lan-metrics strong{font-size:14px}}@media(pointer:coarse){[data-fastnet-card].qs-card-summary{gap:2px}[data-fastnet-card].qs-card-summary .qs-card-metrics span{display:block;font-size:10px;line-height:1.2}[data-fastnet-card].qs-card-summary .qs-card-metrics strong{font-size:21px;line-height:1.1}[data-fastnet-card].qs-card-summary .qs-card-time{line-height:1.2}}', k = (n) => n && ["running", "cancel_requested"].includes(n.state), K = ["running", "cancel_requested", "succeeded", "partial", "failed", "cancelled", "interrupted"]; +function ya(n) { + var b, v, e, d; + if ((n == null ? void 0 : n.schemaVersion) !== 1 || !["ready", "disabled", "unavailable"].includes((b = n.service) == null ? void 0 : b.state) || !("latest" in n) || !("task" in n)) throw Error("invalid_summary"); + if ((v = n.latest) != null && v.bandwidth) { + const l = n.latest.bandwidth; + if (![l.downloadBps, l.uploadBps].every((a) => typeof a == "number" && Number.isFinite(a) && a >= 0) || !l.measuredAt || !Number.isFinite(Date.parse(l.measuredAt))) throw Error("invalid_bandwidth"); + } + if (n.task && !K.includes(n.task.state)) throw Error("invalid_task"); + for (const l of ["download", "upload", "nat", "ipv6"]) if (n.latest) { + const a = n.latest[l]; + if (!a || !["ok", "unavailable", "error", "not_tested"].includes(a.status) || a.value !== null && (["download", "upload"].includes(l) ? typeof a.value != "number" || !Number.isFinite(a.value) || a.value < 0 : typeof a.value != "string")) throw Error("invalid_measurement"); + } + for (const l of ["download", "upload", "lanDownload", "lanUpload", "lanPing"]) { + const a = (d = (e = n.latestResults) == null ? void 0 : e[l]) == null ? void 0 : d.value; + if (a != null && (!Number.isFinite(a) || a < 0)) throw Error("invalid_measurement"); + } + return n; +} +function va(n) { + var e, d; + const b = n == null ? void 0 : n.latestResults; + if (b != null && b.download || b != null && b.upload) { + const l = b.download, a = b.upload; + return { downloadBps: (e = l == null ? void 0 : l.value) != null ? e : null, uploadBps: (d = a == null ? void 0 : a.value) != null ? d : null, measuredAt: [l == null ? void 0 : l.measuredAt, a == null ? void 0 : a.measuredAt].filter(Boolean).sort().pop(), mixed: !!(l && a && l.runId !== a.runId) }; + } + const v = n == null ? void 0 : n.latest; + return v ? v.bandwidth || { downloadBps: v.download.status === "ok" ? v.download.value : null, uploadBps: v.upload.status === "ok" ? v.upload.value : null, measuredAt: v.measuredAt } : null; +} +function E(n) { + return n == null ? "—" : n > 0 && n < 1e5 ? "<0.1" : (n / 1e6).toLocaleString("en-US", { maximumFractionDigits: n >= 1e8 ? 0 : 1 }); +} +function H(n, b) { + return !n || !Number.isFinite(Date.parse(n)) ? "—" : new Date(n).toLocaleString(b === "en" ? "en-GB" : "zh-CN", { year: "numeric", month: "2-digit", day: "2-digit", hour: "2-digit", minute: "2-digit", hour12: !1 }); +} +function xa(n, b = (e) => e, v = globalThis) { + const e = b({ loading: !1, summary: null, task: null, submitting: !1, cancelling: !1, error: "", errorAction: "read", paused: !1, failures: 0 }); + let d = !0, l = !0, a, f, r, q = null, y = 0; + const h = () => { + v.clearTimeout(a), a = void 0, f == null || f.abort(), f = void 0, y++; + }, N = (u) => [401, 403].includes(u == null ? void 0 : u.status) ? "permission" : (u == null ? void 0 : u.status) === 404 ? "upgrade" : "unavailable", S = () => { + d && l && !e.paused && (a = v.setTimeout(k(e.task) ? I : _, k(e.task) ? 2e3 : 15e3)); + }; + function I() { + return D(this, null, function* () { + if (!d || !l || !k(e.task)) return; + const u = e.task.id, m = ++y; + f = new AbortController(); + try { + const g = yield n.request("/task?id=" + encodeURIComponent(u), { signal: f.signal }); + if (!d || m !== y) return; + if (g.id !== u || !K.includes(g.state)) throw Error("invalid_task"); + if (e.task = g, e.failures = 0, e.error = "", !k(g)) { + q = null, yield _(); + return; + } + } catch (g) { + if (!d || m !== y) return; + e.failures++, e.error = N(g), e.errorAction = "read", (e.failures >= 3 || ["permission", "upgrade"].includes(e.error)) && (e.paused = !0); + } finally { + d && m === y && (f = void 0, S()); + } + }); + } + function _() { + return D(this, null, function* () { + if (h(), !d || !l) return; + const u = y; + e.loading = !0, f = new AbortController(); + try { + const m = ya(yield n.request("/summary", { signal: f.signal })); + if (!d || u !== y) return; + e.summary = m, e.task = m.task || m.lastTask || null, e.error = "", e.failures = 0, e.paused = !1, k(e.task) && (q = null); + } catch (m) { + d && u === y && (e.error = N(m), e.errorAction = "read", e.failures++, e.paused = e.failures >= 3 || ["permission", "upgrade"].includes(e.error)); + } finally { + d && u === y && (e.loading = !1, f = void 0, S()); + } + }); + } + function V() { + return D(this, null, function* () { + var m; + if (!d || e.error === "permission" || e.submitting || k(e.task) || e.loading || ((m = e.summary) == null ? void 0 : m.service.state) !== "ready") return; + h(); + const u = y; + e.submitting = !0, e.error = "", r = new AbortController(), q || (q = Array.from(crypto.getRandomValues(new Uint8Array(16)), (g) => g.toString(16).padStart(2, "0")).join("")); + try { + const g = yield n.request("/run", { method: "POST", body: JSON.stringify({ idempotencyKey: q }), signal: r.signal }); + if (!d) return; + if (!K.includes(g.state)) throw Error("invalid_task"); + if (q = null, u !== y) return; + e.task = g, e.paused = !1, e.failures = 0, k(g) ? S() : yield _(); + } catch (g) { + if (!d || u !== y) return; + (g == null ? void 0 : g.status) === 409 ? (q = null, yield _()) : (e.error = N(g), e.errorAction = ["permission", "upgrade"].includes(e.error) ? "read" : "run", g != null && g.status && g.status < 500 && (q = null)); + } finally { + d && (e.submitting = !1, r = void 0); + } + }); + } + function M() { + return D(this, null, function* () { + if (!d || !k(e.task) || e.cancelling) return; + h(); + const u = y; + e.cancelling = !0, r = new AbortController(); + try { + const m = yield n.request("/cancel", { method: "POST", body: JSON.stringify({ id: e.task.id }), signal: r.signal }); + if (!d || u !== y) return; + e.task = m, k(m) ? S() : yield _(); + } catch (m) { + d && u === y && (e.error = N(m), e.errorAction = "read", S()); + } finally { + d && (e.cancelling = !1, r = void 0); + } + }); + } + return { state: e, start: V, stop: M, reload: _, visibility(u) { + l = u, h(), u && _(); + }, dispose() { + d = !1, h(), r == null || r.abort(); + } }; +} +const ba = ["data-task-id"], qa = { class: "qs-card-header" }, ha = { + key: 0, + class: "widget-action-group" +}, wa = { + key: 1, + class: "qs-card-actions" +}, ka = { class: "qs-card-menu" }, _a = ["aria-label"], Aa = { class: "fn-speed-stage" }, Ca = { class: "fn-speed-caption" }, Na = { class: "qs-card-metrics" }, Sa = { class: "qs-card-time" }, Ta = ["datetime"], za = ["aria-label"], Ba = { class: "fn-lan-caption" }, Ra = { class: "fn-lan-route" }, Fa = ["datetime"], Pa = { class: "fn-lan-metrics" }, Da = { class: "fn-lan-label" }, Ea = { class: "fn-lan-label" }, Ia = { class: "qs-card-statuses" }, La = ["data-tone"], Ua = ["title"], Va = ["data-tone"], Ma = ["title"], Oa = { + key: 0, + class: "qs-card-progress", + role: "status" +}, ja = ["disabled"], $a = { + key: 1, + class: "qs-card-alert", + role: "alert" +}, Wa = { + key: 2, + class: "qs-card-alert", + role: "status" +}, Ha = { + __name: "Card", + props: ["context"], + setup(n) { + const b = ia(() => import("./chunk.31ac0177.js")), v = ia({ loader: () => import("./chunk.1932f6b1.js"), timeout: 8e3, errorComponent: { render: () => W("p", { role: "alert", style: "padding:24px" }, [W("span", "FastNet 暂时无法打开 / Unable to open FastNet. "), W("a", { href: "/cgi-bin/luci/admin/services/fastnet/open", target: "_blank", rel: "noopener" }, "新窗口打开 / Open in new window ↗")]) } }), e = n, d = e.context, l = d.locale === "en" ? "en" : "zh-cn", a = (i, t) => l === "en" ? t : i, f = xa(d, ma), r = f.state, q = "/cgi-bin/luci/admin/services/fastnet", y = z(() => va(r.summary)), h = z(() => k(r.task)), N = z(() => { + var i, t, p, x, A, P; + return [(p = (t = (i = r.summary) == null ? void 0 : i.latestResults) == null ? void 0 : t.lanDownload) == null ? void 0 : p.measuredAt, (P = (A = (x = r.summary) == null ? void 0 : x.latestResults) == null ? void 0 : A.lanUpload) == null ? void 0 : P.measuredAt].filter(Boolean).sort().pop(); + }), S = { preparing: a("准备测速", "Preparing"), ping: a("检测延迟", "Testing latency"), download: a("测试下载", "Testing download"), upload: a("测试上传", "Testing upload"), nat: a("检测 NAT", "Checking NAT"), ipv6: a("检测 IPv6", "Checking IPv6") }, I = z(() => { + var i, t; + return ((i = r.task) == null ? void 0 : i.state) === "cancel_requested" ? a("正在停止", "Stopping") : S[(t = r.task) == null ? void 0 : t.stage] || a("测速中", "Testing"); + }), _ = z(() => r.error === "permission" ? a("登录已失效或权限不足,请重新登录", "Session expired or permission denied; sign in again") : r.error === "upgrade" ? a("插件接口不可用,请检查或升级 FastNet", "Plugin API unavailable; check or update FastNet") : r.paused ? a("连接连续失败,已暂停查询;后台任务继续运行", "Queries paused after repeated failures; the background task continues") : a("暂时无法确认结果,保留已有数据", "Result unavailable; existing data retained")), V = z(() => [{ id: "details", label: a("查看上次结果", "Last result details") }, { id: "history", label: a("测速历史", "Test history") }, { id: "reload", label: a("重新读取", "Reload") }, { id: "settings", label: a("插件设置", "Plugin settings") }, { id: "full", label: a("完整 FastNet", "Full FastNet") }]); + function M(i) { + i === "details" ? X() : i === "history" ? T("history") : i === "reload" ? f.reload() : i === "settings" ? window.open(q, "_blank", "noopener") : i === "full" && T(); + } + const u = J(!1), m = J(null), g = J(!1); + let R, F, O = !0; + function Q(i) { + var p, x; + const t = (x = (p = r.summary) == null ? void 0 : p.latest) == null ? void 0 : x[i]; + return j(i) || (t == null ? void 0 : t.status) === "error" ? "warning" : (t == null ? void 0 : t.status) === "ok" ? "good" : "neutral"; + } + function T(i) { + var p, x; + const t = (p = i == null ? void 0 : i.currentTarget) == null ? void 0 : p.closest("details"); + t == null || t.removeAttribute("open"), (x = t == null ? void 0 : t.querySelector("summary")) == null || x.focus({ preventScroll: !0 }), u.value = !0, f.visibility(!1), d.openDetails(v, { context: d, locale: l, view: i === "history" ? "history" : "quick" }, { wide: !0, headerAction: { href: q + "/open", label: a("新窗口打开", "Open in new window") }, onClose() { + u.value = !1, f.visibility(!document.hidden && !u.value && O); + } }); + } + const j = (i) => { + var t, p, x; + return !h.value && !!((x = (p = (t = r.summary) == null ? void 0 : t.lastTask) == null ? void 0 : p.issues) != null && x[i]); + }; + function L(i) { + var x, A; + const t = (A = (x = r.summary) == null ? void 0 : x.latest) == null ? void 0 : A[i]; + let p; + return !t || t.status === "not_tested" ? p = a("未检测", "Not tested") : t.status === "error" ? p = a("检测失败", "Probe failed") : t.status === "unavailable" ? p = a("不可用", "Unavailable") : i === "ipv6" ? p = /部分|准备度 [0-9]\/10/.test(t.value) ? a("部分可用", "Partly available") : a("可用", "Available") : p = /port.?restricted/i.test(t.value) ? a("端口受限锥形", "Port Restricted Cone") : /restricted.*cone/i.test(t.value) ? a("受限锥形", "Restricted Cone") : /full.?cone/i.test(t.value) ? a("全锥形", "Full Cone") : /symmetric/i.test(t.value) ? a("对称型", "Symmetric") : t.value, j(i) ? p + " · " + a("本次失败", "latest failed") : p; + } + function X(i) { + var p, x; + const t = (p = i == null ? void 0 : i.currentTarget) == null ? void 0 : p.closest("details"); + t == null || t.removeAttribute("open"), (x = t == null ? void 0 : t.querySelector("summary")) == null || x.focus({ preventScroll: !0 }), d.openDetails(b, { state: r, locale: l, stamp: H, mbps: E }); + } + function U() { + f.visibility(!document.hidden && !u.value && O); + } + return ua(() => { + R = new ResizeObserver(() => { + var i; + g.value = ((i = m.value) == null ? void 0 : i.clientHeight) < 380; + }), m.value && R.observe(m.value), F = new IntersectionObserver((i) => { + var t; + O = ((t = i[0]) == null ? void 0 : t.isIntersecting) !== !1, U(); + }), m.value && F.observe(m.value), document.addEventListener("visibilitychange", U), U(); + }), pa(() => { + R == null || R.disconnect(), F == null || F.disconnect(), document.removeEventListener("visibilitychange", U), f.dispose(); + }), (i, t) => { + var p, x, A, P, Y, Z, aa, ta, ea, sa, na, ra, da; + return C(), B("article", { + ref_key: "root", + ref: m, + class: G(["qs-card-content", { "qs-card-summary": c(d).form === "summary", "fn-dense": g.value }]), + "data-fastnet-card": "", + "data-task-id": h.value ? c(r).task.id : void 0 + }, [ + s("header", qa, [ + s("h2", null, [ + t[4] || (t[4] = s("svg", { + viewBox: "0 0 24 24", + "aria-hidden": "true" + }, [ + s("path", { d: "M3 12h4l3-8 4 16 3-8h4" }) + ], -1)), + w(o(a("外网测速", "Internet speed")), 1) + ]), + (p = c(d).components) != null && p.PrimaryAction && ((x = c(d).components) != null && x.Menu) ? (C(), B("div", ha, [ + (C(), la(oa(c(d).components.PrimaryAction), { + icon: "activity", + "data-fastnet-test": "", + onClick: T + }, { + default: fa(() => [ + w(o(h.value ? a("查看进度", "View progress") : a("测速", "Test")), 1) + ]), + _: 1 + })), + (C(), la(oa(c(d).components.Menu), { + label: a("外网测速更多操作", "Internet speed actions"), + items: V.value, + onSelect: M + }, null, 40, ["label", "items"])) + ])) : (C(), B("div", wa, [ + s("button", { + class: "qs-card-primary", + "data-fastnet-test": "", + onClick: T + }, o(h.value ? a("查看进度", "View progress") : a("测速", "Test")), 1), + s("details", ka, [ + s("summary", { + "aria-label": a("外网测速更多操作", "Internet speed actions") + }, "⋮", 8, _a), + s("div", null, [ + s("button", { + "data-fastnet-details": "", + onClick: X + }, o(a("查看上次结果", "Last result details")), 1), + s("button", { + onClick: t[0] || (t[0] = ($) => T("history")) + }, o(a("测速历史", "Test history")), 1), + s("button", { + onClick: t[1] || (t[1] = ($) => c(f).reload()) + }, o(a("重新读取", "Reload")), 1), + s("a", { + href: q, + target: "_blank", + rel: "noopener" + }, o(a("插件设置", "Plugin settings")), 1), + s("button", { onClick: T }, o(a("完整 FastNet", "Full FastNet")), 1) + ]) + ]) + ])) + ]), + s("div", Aa, [ + s("div", Ca, [ + s("span", null, "WAN · " + o(a("最近有效结果", "LATEST VALID RESULTS")), 1), + s("span", { + class: G(["fn-live", { "is-active": h.value }]) + }, o(h.value ? I.value : (A = y.value) != null && A.measuredAt ? a("已保存", "Saved") : a("等待测速", "Ready to test")), 3) + ]), + s("div", Na, [ + s("div", null, [ + s("span", null, "↓ " + o(a("上次下载", "Last download")), 1), + s("strong", null, [ + w(o(c(E)((P = y.value) == null ? void 0 : P.downloadBps)), 1), + t[5] || (t[5] = s("small", null, "Mbps", -1)) + ]) + ]), + s("div", null, [ + s("span", null, "↑ " + o(a("上次上传", "Last upload")), 1), + s("strong", null, [ + w(o(c(E)((Y = y.value) == null ? void 0 : Y.uploadBps)), 1), + t[6] || (t[6] = s("small", null, "Mbps", -1)) + ]) + ]) + ]), + s("p", Sa, [ + w(o(a("上次测速", "Last tested")) + " ", 1), + s("time", { + datetime: ((Z = y.value) == null ? void 0 : Z.measuredAt) || void 0 + }, o((aa = y.value) != null && aa.measuredAt ? c(H)(y.value.measuredAt, c(l)) : a("尚未测速", "No test yet")), 9, Ta) + ]) + ]), + s("section", { + class: "fn-lan-summary", + "aria-label": a("内网测速结果", "LAN speed results") + }, [ + s("div", Ba, [ + s("span", null, [ + t[7] || (t[7] = w("LAN ", -1)), + s("span", Ra, "· " + o(a("浏览器 → 路由器", "Browser → Router")), 1) + ]), + s("time", { + datetime: N.value || void 0 + }, o(c(H)(N.value, c(l))), 9, Fa) + ]), + s("div", Pa, [ + s("div", null, [ + s("span", Da, o(a("下载", "Download")), 1), + s("strong", null, [ + w("↓ " + o(c(E)((sa = (ea = (ta = c(r).summary) == null ? void 0 : ta.latestResults) == null ? void 0 : ea.lanDownload) == null ? void 0 : sa.value)), 1), + t[8] || (t[8] = s("small", null, "Mbps", -1)) + ]) + ]), + s("div", null, [ + s("span", Ea, o(a("上传", "Upload")), 1), + s("strong", null, [ + w("↑ " + o(c(E)((da = (ra = (na = c(r).summary) == null ? void 0 : na.latestResults) == null ? void 0 : ra.lanUpload) == null ? void 0 : da.value)), 1), + t[9] || (t[9] = s("small", null, "Mbps", -1)) + ]) + ]) + ]) + ], 8, za), + s("div", Ia, [ + s("div", { + "data-tone": Q("nat") + }, [ + t[10] || (t[10] = s("span", null, [ + s("i", { "aria-hidden": "true" }), + w("NAT") + ], -1)), + s("strong", { + title: L("nat") + }, o(L("nat")), 9, Ua) + ], 8, La), + s("div", { + "data-tone": Q("ipv6") + }, [ + t[11] || (t[11] = s("span", null, [ + s("i", { "aria-hidden": "true" }), + w("IPv6") + ], -1)), + s("strong", { + class: G({ "qs-card-warning": j("ipv6") }), + title: L("ipv6") + }, o(L("ipv6")), 11, Ma) + ], 8, Va) + ]), + h.value ? (C(), B("div", Oa, [ + s("span", null, [ + w(o(I.value), 1), + s("small", null, o(a("上次有效结果保持显示", "Previous valid results remain visible")), 1) + ]), + s("button", { + disabled: c(r).cancelling || c(r).task.state === "cancel_requested", + onClick: t[2] || (t[2] = ($) => c(f).stop()) + }, o(c(r).cancelling || c(r).task.state === "cancel_requested" ? a("正在停止", "Stopping") : a("停止", "Stop")), 9, ja) + ])) : ca("", !0), + c(r).error ? (C(), B("p", $a, [ + w(o(_.value) + " ", 1), + s("button", { + onClick: t[3] || (t[3] = ($) => c(r).errorAction === "run" ? T() : c(f).reload()) + }, o(c(r).paused ? a("恢复查询", "Resume queries") : a("重试", "Retry")), 1) + ])) : c(r).summary && c(r).summary.service.state !== "ready" ? (C(), B("p", Wa, [ + w(o(c(r).summary.service.state === "disabled" ? a("服务未启用", "Service disabled") : a("服务暂不可用", "Service unavailable")) + " ", 1), + s("a", { href: q }, o(a("打开设置", "Open settings")), 1) + ])) : ca("", !0) + ], 10, ba); + }; + } +}; +if (!document.getElementById("fastnet-card-v1-style")) { + const n = document.createElement("style"); + n.id = "fastnet-card-v1-style", n.textContent = ga, document.head.appendChild(n); +} +const Ka = 1; +export { + Ka as apiVersion, + Ha as default +}; diff --git a/luci-app-fastnet/root/www/luci-static/fastnet/quickstart/chunk.1932f6b1.js b/luci-app-fastnet/root/www/luci-static/fastnet/quickstart/chunk.1932f6b1.js new file mode 100644 index 000000000..88a548f65 --- /dev/null +++ b/luci-app-fastnet/root/www/luci-static/fastnet/quickstart/chunk.1932f6b1.js @@ -0,0 +1,120 @@ +var S = (p, d, t) => new Promise((_, o) => { + var u = (i) => { + try { + n(t.next(i)); + } catch (a) { + o(a); + } + }, f = (i) => { + try { + n(t.throw(i)); + } catch (a) { + o(a); + } + }, n = (i) => i.done ? _(i.value) : Promise.resolve(i.value).then(u, f); + n((t = t.apply(p, d)).next()); +}); +import { ref as v, computed as B, watch as H, onMounted as L, onUnmounted as O, openBlock as w, createElementBlock as g, createElementVNode as x, createCommentVNode as y, toDisplayString as b } from "/luci-static/quickstart/card-runtime-v1.js"; +function R(p, d = location) { + const t = new URL(p); + if (t.protocol !== "http:" || t.hostname !== d.hostname || t.pathname !== "/webui/" || t.username || t.password || t.hash) throw Error("invalid_direct_target"); + return { url: t.href, origin: t.origin, mixedContent: d.protocol === "https:" }; +} +const j = ".fn-web-dialog{width:100%;min-width:0;min-height:0;display:flex;flex-direction:column;background:var(--qs-card-panel);color:var(--qs-card-text)}.fn-web-frame{position:relative;flex:1;min-height:0}.fn-web-frame iframe{display:block;border:0;width:100%;height:100%;background:var(--qs-card-panel)}.fn-web-loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:24px;text-align:center;background:var(--qs-card-panel);color:var(--qs-card-muted)}.fn-web-loading strong{color:var(--qs-card-text);font-size:16px}.fn-web-loading p{font-size:12px;line-height:1.7;max-width:360px;margin:0}.fn-web-loading button{font:inherit;color:var(--qs-card-accent);border:1px solid var(--qs-card-line);background:var(--qs-card-soft);padding:10px 20px;border-radius:8px;cursor:pointer}.fn-web-loading a{color:var(--qs-card-accent);font-size:14px}.fn-web-footnote{font-size:10px;color:var(--qs-card-muted);line-height:1.6;margin:0!important;padding:9px 20px;border-top:1px solid var(--qs-card-line)}@media(max-width:600px){.fn-web-footnote{padding:8px 14px}}", U = { + class: "fn-web-dialog", + "data-fastnet-web-dialog": "" +}, W = { class: "fn-web-frame" }, A = ["src", "title"], D = ["role"], M = ["href"], V = { class: "fn-web-footnote" }, J = { + __name: "WebDialog", + props: ["context", "locale", "view"], + emits: ["close"], + setup(p, { emit: d }) { + if (!document.getElementById("fastnet-web-v1-style")) { + const e = document.createElement("style"); + e.id = "fastnet-web-v1-style", e.textContent = j, document.head.appendChild(e); + } + const t = p, _ = d, o = (e, r) => t.locale === "en" ? r : e, u = v(null), f = v(!1), n = v(!1), i = v(0), a = v(null), P = B(() => { + if (!a.value) return ""; + const e = new URL(a.value.url); + return e.searchParams.delete("embed"), e.searchParams.delete("theme"), e.href; + }); + let c, s, k = !1; + function z() { + clearTimeout(c), c = setTimeout(() => { + f.value || (n.value = !0); + }, 15e3); + } + function T() { + return S(this, null, function* () { + s == null || s.abort(), s = new AbortController(); + const e = s; + clearTimeout(c), a.value = null, f.value = !1, n.value = !1, i.value++, z(); + try { + const r = yield fetch("/cgi-bin/luci/admin/services/fastnet/embed?format=json&theme=" + t.context.theme.effective + (t.view === "history" ? "&view=history" : ""), { credentials: "same-origin", cache: "no-store", redirect: "error", signal: e.signal }); + if (!r.ok) throw Error("launch_unavailable"); + const l = R((yield r.json()).url); + if (k || e.signal.aborted) return; + a.value = l, l.mixedContent && clearTimeout(c); + } catch (r) { + !k && !e.signal.aborted && (clearTimeout(c), n.value = !0); + } + }); + } + function q() { + var e, r; + a.value && ((r = (e = u.value) == null ? void 0 : e.contentWindow) == null || r.postMessage({ type: "quickstart:theme", theme: t.context.theme.effective }, a.value.origin)); + } + function C(e) { + var r, l, h, N, F, E; + if (!(!a.value || e.origin !== a.value.origin || e.source !== ((r = u.value) == null ? void 0 : r.contentWindow))) { + if (((l = e.data) == null ? void 0 : l.type) === "fastnet:ready") + clearTimeout(c), f.value = !0, n.value = !1, q(); + else if (((h = e.data) == null ? void 0 : h.type) === "fastnet:close") _("close"); + else if (((N = e.data) == null ? void 0 : N.type) === "fastnet:focus") { + const m = (F = u.value) == null ? void 0 : F.closest("section.network-dialog"); + (E = (m == null ? void 0 : m.querySelector(e.data.backward ? "[data-network-dialog-close]" : "[data-network-dialog-open]")) || (m == null ? void 0 : m.querySelector("[data-network-dialog-close]"))) == null || E.focus(); + } + } + } + return H(() => t.context.theme.effective, q), L(() => { + window.addEventListener("message", C), T(); + }), O(() => { + k = !0, s == null || s.abort(), clearTimeout(c), window.removeEventListener("message", C); + }), (e, r) => { + var l, h; + return w(), g("div", U, [ + x("div", W, [ + a.value && !n.value && !a.value.mixedContent ? (w(), g("iframe", { + key: i.value, + ref_key: "frame", + ref: u, + src: a.value.url, + title: o("FastNet 完整测速界面", "FastNet speed test interface"), + referrerpolicy: "origin" + }, null, 8, A)) : y("", !0), + f.value ? y("", !0) : (w(), g("div", { + key: 1, + class: "fn-web-loading", + role: n.value ? "alert" : "status" + }, [ + x("strong", null, b((l = a.value) != null && l.mixedContent ? o("在新窗口中直接测速", "Test directly in a new window") : n.value ? o("FastNet 页面暂时无法加载", "FastNet could not be loaded") : o("正在打开 FastNet…", "Opening FastNet…")), 1), + x("p", null, b((h = a.value) != null && h.mixedContent ? o("当前 HTTPS 页面无法嵌入 HTTP 测速服务,请在新窗口打开 FastNet。", "This HTTPS page cannot embed the HTTP service. Open FastNet in a new window.") : n.value ? o("可以重试,或在新窗口中打开。请确认插件服务已启用。", "Retry or open in a new window. Check that the plugin service is enabled.") : o("打开页面不会自动测速;请在子窗口中点击开始。", "Opening the page does not start a test. Select Start inside the window.")), 1), + a.value && (n.value || a.value.mixedContent) ? (w(), g("a", { + key: 0, + href: P.value, + target: "_blank", + rel: "noopener noreferrer" + }, b(o("打开 FastNet ↗", "Open FastNet ↗")), 9, M)) : y("", !0), + n.value ? (w(), g("button", { + key: 1, + onClick: T + }, b(o("重新加载", "Reload")), 1)) : y("", !0) + ], 8, D)) + ]), + x("p", V, b(o("核心已接受的测速继续运行;关闭窗口将中断浏览器测量,已保存结果保留。", "Accepted core tests continue. Browser tests stop when closed; saved results remain.")), 1) + ]); + }; + } +}; +export { + J as default +}; diff --git a/luci-app-fastnet/root/www/luci-static/fastnet/quickstart/chunk.31ac0177.js b/luci-app-fastnet/root/www/luci-static/fastnet/quickstart/chunk.31ac0177.js new file mode 100644 index 000000000..c66d0d1e2 --- /dev/null +++ b/luci-app-fastnet/root/www/luci-static/fastnet/quickstart/chunk.31ac0177.js @@ -0,0 +1,41 @@ +import { openBlock as d, createElementBlock as i, createElementVNode as l, toDisplayString as s, Fragment as N, renderList as g, createTextVNode as h, unref as y, createCommentVNode as P } from "/luci-static/quickstart/card-runtime-v1.js"; +const k = { class: "qs-card-details" }, D = { key: 0 }, T = { + href: "/cgi-bin/luci/admin/services/fastnet/open", + target: "_blank", + rel: "noopener" +}, x = { + __name: "Details", + props: ["state", "locale", "stamp", "mbps"], + setup(c) { + const o = c, b = o.stamp, w = o.mbps, _ = ["download", "upload", "nat", "ipv6", "lanPing", "lanDownload", "lanUpload"], e = (a, t) => o.locale === "en" ? t : a, f = { download: e("下载", "Download"), upload: e("上传", "Upload"), nat: "NAT", ipv6: "IPv6", lanPing: e("内网延迟", "LAN latency"), lanDownload: e("内网下载", "LAN download"), lanUpload: e("内网上传", "LAN upload") }; + function p(a) { + var t, n, r, u; + return ((n = (t = o.state.summary) == null ? void 0 : t.latestResults) == null ? void 0 : n[a]) || ((u = (r = o.state.summary) == null ? void 0 : r.latest) == null ? void 0 : u[a]); + } + function A(a) { + const t = p(a); + return !t || t.status === "not_tested" ? e("未检测", "Not tested") : t.status === "error" ? e("检测失败", "Probe failed") : t.status === "unavailable" ? e("不可用", "Unavailable") : a === "lanPing" ? t.value.toFixed(1) + " ms" : /download|upload/i.test(a) ? w(t.value) + " Mbps" : t.value; + } + return (a, t) => (d(), i("div", k, [ + l("p", null, s(e("默认外网出口 · 路由器 → 互联网", "Default WAN route · Router → Internet")), 1), + l("dl", null, [ + (d(), i(N, null, g(_, (n) => { + var r, u, m, v; + return d(), i(N, { key: n }, [ + l("dt", null, s(f[n]), 1), + l("dd", null, [ + h(s(A(n)), 1), + l("small", null, s(y(b)((r = p(n)) == null ? void 0 : r.measuredAt, c.locale)), 1), + (v = (m = (u = c.state.summary) == null ? void 0 : u.lastTask) == null ? void 0 : m.issues) != null && v[n] ? (d(), i("span", D, s(e("本次探测失败,保留上次有效结果", "Latest probe failed; previous valid result retained")), 1)) : P("", !0) + ]) + ], 64); + }), 64)) + ]), + l("p", null, s(e("测速会使用外网上传和下载带宽。NAT 与 IPv6 分别反映各自检测时间的结果。", "Testing uses WAN upload and download bandwidth. NAT and IPv6 describe their own detection times.")), 1), + l("a", T, s(e("打开完整 FastNet", "Open full FastNet")), 1) + ])); + } +}; +export { + x as default +}; diff --git a/luci-app-fastnet/root/www/luci-static/fastnet/quickstart/provenance.json b/luci-app-fastnet/root/www/luci-static/fastnet/quickstart/provenance.json new file mode 100644 index 000000000..999fb8e78 --- /dev/null +++ b/luci-app-fastnet/root/www/luci-static/fastnet/quickstart/provenance.json @@ -0,0 +1,30 @@ +{ + "schemaVersion": 1, + "abi": "quickstart-card-v1", + "vue": "3.5.44", + "compiler": "3.5.44", + "version": "0.8.9-1", + "sourceCommit": "082bf1e42911b8fdfed7ac421518ee990952b304", + "sourceFiles": { + "quickstart-card/manifest.json": "0f8b3a0dc15803c27243288e97ebea098ba2894c26b836293ed656f9396104d1", + "quickstart-card/package-lock.json": "daaa5d8d53587115f2fb7127adb51cbfaa9c5d55906e598ab643e8b4b0fc3a6d", + "quickstart-card/package.json": "7683ee1fb095bbf9897941bc4bf4796c488545cc9f712a943870ded1cdf7fccb", + "quickstart-card/src/Card.vue": "792c0528eb22ad3e84db8f023b29b430ea5faf8b1638766176bf24ce05aa90f7", + "quickstart-card/src/Details.vue": "a94eb71ec6ac389f4c1d6e5ea82c546ed1be5e31da410a63563c78e8a233407c", + "quickstart-card/src/WebDialog.vue": "9248328cf1e8d2afd671a44ba6340e7d84ef7f32f101461471f9f1d2920517f4", + "quickstart-card/src/directFrame.js": "648cd8ed2f9f2188aee71475df1ee4f936df73fdc7ce3fa7de03f0ae2c8b2f1a", + "quickstart-card/src/index.js": "48c908c983f14c159bf50c1d2ab3c54824f04bc2ecdacc714691164dea974c75", + "quickstart-card/src/model.js": "0497552a2caadd0f3d1333f359cb6704a9e370e68ce71ed80c2d9090857124e3", + "quickstart-card/src/style.css": "818e49ac458ee245b2c27fd7a7d62bd7e2117e44a85bbb388dddd175b05fce66", + "quickstart-card/src/webStyle.css": "7bc8849ff35cce46a1aec88239905f307eb7ebe655d8d19c9c88d854018526b7", + "quickstart-card/vite.config.js": "7dda71bfe6923df40b4142608d38fa239da9e79e0b30ff3cd6d1747c49f657eb", + "scripts/build-quickstart-card.sh": "345645c1513398221c612f6f1c0da77b3e4c958a86a18ef9382236307a55e3e8", + "scripts/card-provenance.py": "2bbed5b4ad40fe94310bc6b9ba6f4d20fc7ed8ec675800b4ebcb5ed68d01a026" + }, + "sourceSha256": "ca7ed2ac012210d4be444c080306e27e77c02eab0a998dda7b5f911f712f4385", + "assets": { + "card.dfb0ce55.js": "ed9555d2ead731e603cce340c950c681d8dcb64f301c52ed5380bf8e7cd62664", + "chunk.1932f6b1.js": "af27ba0c26dff540b8fd4cf07eaa50cca447539f7cc3d7d29f3fb3c44bf0ffef", + "chunk.31ac0177.js": "c9d9ebd0ea447c7cee8743a912f63c744ff426a50eb1c5dc8c8321b86103d4f1" + } +} diff --git a/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js b/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js index 638e67a18..e7caca409 100644 --- a/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js +++ b/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js @@ -1,5 +1,6 @@ 'use strict'; 'require baseclass'; +'require rpc'; 'require ui'; /* Shared between the Test page's recent-history block and the full History @@ -164,20 +165,54 @@ return baseclass.extend({ /* One token->label table for the schedule intervals: Settings builds * its choices from it and the Test page looks the status label up, so * the two cannot drift. The init script accepts more shapes than these - * six, so readers must fall back to the raw token. */ + * seven, so readers must fall back to the raw token. */ INTERVALS: { '15m': _('Every 15 minutes'), '30m': _('Every 30 minutes'), '1h': _('Hourly'), '6h': _('Every 6 hours'), '12h': _('Every 12 hours'), - '1d': _('Daily') + '1d': _('Daily'), + '7d': _('Weekly') }, + /* Cron's weekday numbers, Monday first; an array keeps that order. */ + DAYS: [ + [ '1', _('Monday') ], [ '2', _('Tuesday') ], [ '3', _('Wednesday') ], + [ '4', _('Thursday') ], [ '5', _('Friday') ], [ '6', _('Saturday') ], + [ '0', _('Sunday') ] + ], + + /* The interval and the weekdays as set; a token it does not know shows as it is. */ + scheduleLabel(interval, days) { + const every = this.INTERVALS[interval || '1d'] || interval; + const day = d => (this.DAYS.find(x => x[0] == d) || [ d, d ])[1]; + + if (!days || days == '*') + return every; + + return _('%s on %s', 'schedule interval on weekdays').format(every, + String(days).split(',').map(p => p.split('-').map(day).join('–')).join(', ')); + }, + + /* Each interface's link: the name the backend records its results under. */ + callLinks: rpc.declare({ + object: 'librespeed', + method: 'links', + expect: { '': {} } + }), + /* Exported alongside the chart: every timestamp a page prints should * come through here, or the date-only guard gets lost in a copy. */ chartStampFull: chartStampFull, + /* By epoch: the backend lists runs as recorded, which is out of order + * for a run recorded before NTP set the clock. */ + byTime(entries) { + return (Array.isArray(entries) ? entries.slice() : []) + .sort((a, b) => (a.epoch ?? 0) - (b.epoch ?? 0)); + }, + /* Plain figures of one series: what is normal, how much it wobbles, and * where it stands now. The story sentences are built from these. On * daily aggregates the extremes come from the _min/_max columns the diff --git a/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js b/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js index 5a87c7c7b..bc1cfff5d 100644 --- a/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js +++ b/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js @@ -14,6 +14,17 @@ * second fetch, since the entries are in memory anyway. */ const pageSize = 50; +/* Entries without an interface; '?' is outside the UCI name alphabet. */ +const UNKNOWN = '?'; + +function ifaceKey(e) { + return e.interface || UNKNOWN; +} + +function ifaceLabel(key) { + return (key == UNKNOWN) ? _('unknown') : key; +} + const callConfig = rpc.declare({ object: 'librespeed', method: 'config', @@ -36,6 +47,7 @@ return view.extend({ range: 86400, server: '', iface: '', + def: null, page: 0, /* Which entries come back -- and at which resolution -- is the server's @@ -54,9 +66,9 @@ return view.extend({ ? callHistory(now - 2 * this.range, now - this.range).catch(() => ({})) : Promise.resolve({}) ]).then(L.bind(function(data) { - this.entries = Array.isArray(data[0].entries) ? data[0].entries : []; + this.entries = lscommon.byTime(data[0].entries); this.resolution = data[0].resolution || 'raw'; - this.prevEntries = Array.isArray(data[1].entries) ? data[1].entries : []; + this.prevEntries = lscommon.byTime(data[1].entries); this.prevResolution = data[1].resolution || 'raw'; }, this)); }, @@ -67,32 +79,50 @@ return view.extend({ speed: lscommon.GROUPS.speed.slice(), latency: lscommon.GROUPS.latency.slice() }; - /* The config rides along for one purpose: with history keeping off, - * the empty state must not send the user to run a test that will - * never produce an entry. */ + /* The config rides along for the default interface, and because + * with history keeping off the empty state must not send the user + * to run a test that will never produce an entry. */ return Promise.all([ this.fetch(), - callConfig().then(c => { this.config = c; }, () => {}) - ]); + callConfig().then(c => { this.config = c; }, () => {}), + lscommon.callLinks().catch(() => ({})) + ]).then(data => { + const def = this.config && this.config.interface; + + this.def = (data[2].interfaces || {})[def] || def; + }); }, /* The server/interface filters narrow the fetched range on the client; - * daily aggregates carry neither field, so there the filters offer only - * "All" and match everything. */ + * daily aggregates carry no server, so there that filter offers only + * "All", which matches everything. */ applyFilters(entries) { return (entries || []).filter(e => (!this.server || (e.server && e.server.name) == this.server) && - (!this.iface || e.interface == this.iface)); + ifaceKey(e) == this.iface); + }, + + /* The default interface first, then by name, unknown last. */ + ifaceKeys(entries) { + const rank = k => (k == this.def) ? 0 : ((k == UNKNOWN) ? 2 : 1), + keys = []; + + entries.forEach(e => { + if (keys.indexOf(ifaceKey(e)) < 0) + keys.push(ifaceKey(e)); + }); + + return keys.sort((a, b) => rank(a) - rank(b) || L.naturalCompare(a, b)); }, visible() { return this.applyFilters(this.entries); }, - filterSelect(title, values, current, onpick) { + filterSelect(title, values, current, onpick, all, label) { const sel = E('select', { 'class': 'cbi-input-select' }, - [ E('option', { 'value': '' }, [ _('All') ]) ].concat( - values.map(v => E('option', { 'value': v }, [ v ])))); + (all ? [ E('option', { 'value': '' }, [ _('All') ]) ] : []).concat( + values.map(v => E('option', { 'value': v }, [ label ? label(v) : v ])))); sel.value = values.indexOf(current) >= 0 ? current : ''; sel.addEventListener('change', ui.createHandlerFn(this, function() { @@ -248,6 +278,10 @@ return view.extend({ this.chartNode.appendChild(E('p', { 'class': 'librespeed-muted' }, [ _('Daily minimum, average and maximum.') ])); + if (this.iface == UNKNOWN) + this.chartNode.appendChild(E('p', { 'class': 'librespeed-muted' }, + [ _('These results name no interface: days archived before results were kept per interface, which mix all links.') ])); + /* The sort key carries the same decimal count as the display half: * ui.Table stringifies the whole cell and compares digit runs one by * one, so ragged fractions would put 94.4 above 94.35. */ @@ -274,7 +308,6 @@ return view.extend({ let rows = entries.slice().reverse().map(e => [ [ e.epoch ?? 0, cell(when(e)) ], cell((e.server && e.server.name) || '–'), - cell(e.interface || '–'), cell(protoCell(e)), [ num(e.download_mbps, 2), cell(fmtNum(e.download_mbps, 2)) ], [ num(e.upload_mbps, 2), cell(fmtNum(e.upload_mbps, 2)) ], @@ -351,7 +384,7 @@ return view.extend({ * shows a locale string, and numbers order numerically. The table is * where sorting belongs; the chart above never reorders time. */ this.table = new ui.Table([ - _('Time'), _('Server'), _('Interface'), _('Protocol'), + _('Time'), _('Server'), _('Protocol'), _('Download [Mbps]'), _('Upload [Mbps]'), _('Ping [ms]'), _('Jitter [ms]') ], { id: 'librespeed-history' }); this.tableNode = this.table.render(); @@ -383,32 +416,30 @@ return view.extend({ ranges.classList.add('librespeed-push'); /* Filter choices are whatever the fetched range actually contains. */ - const servers = [], ifaces = []; + const servers = [], ifaces = this.ifaceKeys(this.entries); this.entries.forEach(e => { const s = e.server && e.server.name; if (s && servers.indexOf(s) < 0) servers.push(s); - if (e.interface && ifaces.indexOf(e.interface) < 0) - ifaces.push(e.interface); }); /* The freshly fetched window may no longer contain the chosen - * server or interface -- daily aggregates carry neither field at + * server or interface -- daily aggregates may carry neither field at * all. The widget would then quietly repaint as "All" while the * model kept filtering everything out, with no control on screen * able to clear it; reconcile the model here, where the choice * lists are built. */ if (this.server && servers.indexOf(this.server) < 0) this.server = ''; - if (this.iface && ifaces.indexOf(this.iface) < 0) - this.iface = ''; + if (ifaces.indexOf(this.iface) < 0) + this.iface = ifaces[0]; const filters = E('div', { 'class': 'librespeed-toolbar' }, [ this.filterSelect(_('Server'), servers.sort(), this.server, - function(v) { this.server = v; this.page = 0; this.redraw(); }), - this.filterSelect(_('Interface'), ifaces.sort(), this.iface, - function(v) { this.iface = v; this.page = 0; this.redraw(); }) + function(v) { this.server = v; this.page = 0; this.redraw(); }, true), + ifaces.length ? this.filterSelect(_('Interface'), ifaces, this.iface, + function(v) { this.iface = v; this.page = 0; this.redraw(); }, false, ifaceLabel) : '' ]); this.controls.innerHTML = ''; diff --git a/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js b/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js index 4f75b6705..8387c5f10 100644 --- a/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js +++ b/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js @@ -2,31 +2,60 @@ 'require view'; 'require form'; 'require rpc'; -'require tools.widgets as widgets'; +'require uci'; 'require librespeed.common as lscommon'; +/* global lscommon */ + const callConfig = rpc.declare({ object: 'librespeed', method: 'config', expect: { '': {} } }); +/* The intervals the init script can put in cron; it leaves out any other. */ +const INTERVAL_RE = /^(?:(?:[1-9]|[1-5][0-9])m|(?:[1-9]|1[0-9]|2[0-3])h|1d|7d)$/; + return view.extend({ load() { - return callConfig().catch(() => ({})); + return Promise.all([ + callConfig().catch(() => ({})), + lscommon.callLinks().catch(() => ({})), + uci.load('librespeed') + ]); }, - render(config) { + render(data) { + const config = data[0], + links = data[1].links || [], + ifmap = data[1].interfaces || {}, + linkOf = n => ifmap[n] || n; let m, s, o; + /* Links, plus stored names that are not links: a save drops what is not offered. */ + const offer = (opt, stored) => { + const label = n => { + if (links.indexOf(ifmap[n]) >= 0) + return _('%s (recorded as %s)').format(n, ifmap[n]); + if (ifmap[n]) + return _('%s (no gateway)').format(n); + return Object.keys(ifmap).length ? _('%s (not found)').format(n) : n; + }; + + links.forEach(n => opt.value(n)); + stored.filter((n, i, a) => n && links.indexOf(n) < 0 && a.indexOf(n) == i) + .forEach(n => opt.value(n, label(n))); + }; + m = new form.Map('librespeed', _('LibreSpeed – Settings')); s = m.section(form.NamedSection, 'main', 'librespeed', _('Measurement')); - o = s.option(widgets.NetworkSelect, 'interface', _('Interface'), - _('Logical interface the measurement is bound to.')); + o = s.option(form.ListValue, 'interface', _('Interface'), + _('Logical interface measured by default: by the Test page unless another one is chosen there, and by an automatic test that names no interface.')); o.default = 'wan'; - o.nocreate = true; + offer(o, [ uci.get('librespeed', 'main', 'interface') || 'wan' ]); + const mainIface = o; o = s.option(form.Value, 'server', _('Server'), _("Numeric server id from the LibreSpeed server list, or 'auto' to pick the closest.")); @@ -54,34 +83,97 @@ return view.extend({ o.value('http', _('force HTTP')); o.default = 'auto'; - s = m.section(form.NamedSection, 'schedule', 'librespeed', _('Scheduled measurements')); + /* The help sits above the table, as a phone hides the column headings. */ + s = m.section(form.TableSection, 'schedule', _('Scheduled measurements'), [ + [ _('Enable'), _('Runs a measurement from cron at the chosen interval. Note that a measurement saturates the connection while it runs.') ], + [ _('Days'), _('Leave empty to run every day. A weekly test runs on one of the chosen days, or on any day when none is chosen; the day is drawn once and kept while it stays among the chosen days.') ], + [ _('Hours'), _('An hour window on the 24-hour clock, such as 2-5 for 02:00–05:59. A daily or weekly measurement runs at a random time inside it, drawn when the schedule is applied; shorter intervals only run within it. Leave empty for any time. A window across midnight is not supported.') ] + ].map(h => E('p', {}, [ '%s: %s'.format(h[0], h[1]) ]))); + s.anonymous = true; + s.addremove = true; + /* A new row gets the night window of the shipped first row. */ + s.handleAdd = function(ev, name) { + const sid = this.map.data.add('librespeed', 'schedule', name); - o = s.option(form.Flag, 'enabled', _('Enable'), - _('Runs a measurement from cron at the chosen interval. Note that a measurement saturates the connection while it runs.')); + this.map.data.set('librespeed', sid, 'hours', '2-5'); + + return this.map.save(null, true); + }; + /* The legacy named section first, as the init script reads it first. */ + s.cfgsections = function() { + const legacy = (uci.get('librespeed', 'schedule') || {})['.type'] == 'librespeed'; + + return (legacy ? [ 'schedule' ] : []).concat( + uci.sections('librespeed', 'schedule').map(x => x['.name'])); + }; + const rows = s.cfgsections(); + + o = s.option(form.ListValue, 'interface', _('Interface')); + o.optional = true; + o.placeholder = _('Default interface'); + offer(o, rows.map(sid => uci.get('librespeed', sid, 'interface'))); + /* Only enabled tests reach the crontab, one per link. The legacy row + * without an interface measures the default interface chosen above. */ + const measured = (sid, v) => linkOf(v || (sid == 'schedule' ? mainIface.formvalue('main') : '')); + o.validate = function(section_id, value) { + if (!value && section_id != 'schedule') + return _('Choose the interface this test measures.'); + + if (enabled.formvalue(section_id) != '1') + return true; + + const name = measured(section_id, value); + const taken = this.section.cfgsections().some(sid => sid != section_id && + enabled.formvalue(sid) == '1' && measured(sid, this.formvalue(sid) ?? this.cfgvalue(sid)) == name); + + return !taken || _('Another enabled automatic test already measures %s.').format(name); + }; + + o = s.option(form.Flag, 'enabled', _('Enable')); + const enabled = o; o = s.option(form.ListValue, 'interval', _('Interval')); /* From the shared table, so the Test page's status label and these * choices cannot drift apart. */ Object.keys(lscommon.INTERVALS).forEach(k => o.value(k, lscommon.INTERVALS[k])); + /* A hand-set interval is offered as it is, or a save would replace it. */ + rows.map(sid => uci.get('librespeed', sid, 'interval')) + .filter((v, i, a) => v && !lscommon.INTERVALS[v] && a.indexOf(v) == i) + .forEach(v => o.value(v)); o.default = '1d'; o.depends('enabled', '1'); + o.retain = true; + /* Without a width the table squeezes the column and cuts the labels. */ + o.width = '13em'; + o.validate = function(section_id, value) { + return INTERVAL_RE.test(value) || + _('The interval %s is not supported. Use 1-59m, 1-23h, 1d or 7d.').format(value); + }; - o = s.option(form.MultiValue, 'days', _('Days'), - _('Leave empty to run every day.')); - o.value('1', _('Monday')); - o.value('2', _('Tuesday')); - o.value('3', _('Wednesday')); - o.value('4', _('Thursday')); - o.value('5', _('Friday')); - o.value('6', _('Saturday')); - o.value('0', _('Sunday')); + o = s.option(form.MultiValue, 'days', _('Days')); + lscommon.DAYS.forEach(d => o.value(d[0], d[1])); o.optional = true; o.depends('enabled', '1'); + o.retain = true; /* The init script hands this straight to cron, which wants commas. */ o.cfgvalue = function(section_id) { const v = form.MultiValue.prototype.cfgvalue.apply(this, arguments); - return (v == null || v == '*') ? [] : String(v).split(','); + const on = {}; + + if (v == null || v == '*') + return []; + + /* A hand-set range (1-5) as its days, so an untouched save keeps it. */ + String(v).split(',').forEach(p => { + const r = p.match(/^([0-6])(?:-([0-6]))?$/); + + if (r) + for (let d = +r[1]; d <= +(r[2] ?? r[1]); d++) + on[d] = true; + }); + + return lscommon.DAYS.map(d => d[0]).filter(d => on[d]); }; o.write = function(section_id, value) { const list = Array.isArray(value) ? value.filter(v => v !== '') : []; @@ -90,11 +182,11 @@ return view.extend({ return this.super('write', [ section_id, list.join(',') ]); }; - o = s.option(form.Value, 'hours', _('Hours'), - _('An hour window on the 24-hour clock, such as 2-5 for 02:00–05:59. A daily measurement runs at a random time inside it, drawn when the schedule is applied; shorter intervals only run within it. Leave empty for any time. A window across midnight is not supported.')); + o = s.option(form.Value, 'hours', _('Hours')); o.placeholder = '2-5'; o.optional = true; o.depends('enabled', '1'); + o.retain = true; o.validate = function(section_id, value) { if (value == '') return true; @@ -138,22 +230,25 @@ return view.extend({ o.depends('enabled', '1'); return m.render().then(node => { - const cron = config && config.schedule && config.schedule.cron; + const scheds = config.schedules || []; const box = E('div', { 'style': 'margin-top:1em' }); - if (cron) { + if (scheds.length) { /* Epochs computed by the backend in the router's timezone. */ - const runs = (config && config.schedule && config.schedule.next_runs || []) - .map(e => new Date(e * 1000)); - box.appendChild(E('h4', {}, [ _('Upcoming measurements') ])); - box.appendChild(E('table', { 'class': 'table', 'style': 'max-width:24em' }, - runs.map(d => E('tr', { 'class': 'tr' }, [ - E('td', { 'class': 'td' }, [ d.toLocaleDateString() ]), - E('td', { 'class': 'td' }, [ d.toLocaleTimeString() ]) - ])))); + box.appendChild(E('table', { 'class': 'table', 'style': 'max-width:32em' }, + scheds.flatMap(sc => (sc.next_runs || []).map(e => { + const d = new Date(e * 1000); + + return E('tr', { 'class': 'tr' }, [ + E('td', { 'class': 'td' }, [ linkOf(sc.interface) ]), + E('td', { 'class': 'td' }, [ d.toLocaleDateString(undefined, + { weekday: 'short', year: 'numeric', month: 'numeric', day: 'numeric' }) ]), + E('td', { 'class': 'td' }, [ d.toLocaleTimeString() ]) + ]); + })))); box.appendChild(E('p', { 'style': 'color:#888' }, [ - _('A daily measurement runs at a time drawn when the schedule is applied; saving draws it anew.') + _('The time of a daily measurement is drawn anew whenever the schedule is applied. A weekly measurement keeps its drawn day and time while they fit the chosen days and hours.') ])); } else { diff --git a/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js b/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js index 36bd6bedf..95c0d292e 100644 --- a/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js +++ b/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js @@ -12,6 +12,9 @@ const callStart = rpc.declare({ object: 'librespeed', method: 'start', + params: [ 'interface' ], + /* A ubus error must not read as a start. */ + reject: true, expect: { '': {} } }); @@ -201,6 +204,7 @@ return view.extend({ button: null, lastSeen: null, config: {}, + ifmap: {}, load() { return Promise.all([ @@ -208,23 +212,27 @@ return view.extend({ callResult().catch(() => ({})), callConfig().catch(() => ({})), callHistory(Math.floor(Date.now() / 1000 - recentSeconds), - undefined, 0).catch(() => ({})) + undefined, 0).catch(() => ({})), + lscommon.callLinks().catch(() => ({})) ]); }, renderRecent(data) { - const entries = Array.isArray(data && data.entries) ? data.entries : []; + /* One interface only: an average over WAN and LTE describes neither. */ + const all = lscommon.byTime(data && data.entries); + const entries = all.filter(e => e.interface == this.iface); /* Kept so switching the metric can redraw without refetching. */ this.recentData = data; this.recentNode.innerHTML = ''; + this.recentSubtitle.textContent = '%s · %s'.format(_('last 24 hours'), this.iface); this.recentCount.textContent = entries.length ? N_(entries.length, '%d measurement', '%d measurements') .format(entries.length) : ''; /* The active button names the metric, so the subtitle only carries - * the window. */ + * the window and the interface. */ this.recentSwitch.replaceChildren(...lscommon.switcher(this, lscommon.GROUPS.speed.map(k => { const m = lscommon.METRICS.find(x => x[0] == k); @@ -277,6 +285,17 @@ return view.extend({ if (!drew) { this.recentNode.appendChild(E('p', { 'class': 'librespeed-muted' }, [ _('No data in the last 24 hours.') ])); + + const others = all.length - entries.length; + + if (!entries.length && others > 0) + this.recentNode.appendChild(E('p', { 'class': 'librespeed-muted' }, [ + N_(others, '%d measurement of another interface is in the full history.', + '%d measurements of other interfaces are in the full history.').format(others), + ' ', + E('a', { 'href': L.url('admin', 'network', 'librespeed', 'history') }, + [ _('View full history »') ]) + ])); return; } @@ -328,19 +347,20 @@ return view.extend({ }, handleStart(ev) { - return callStart().then(L.bind(function(res) { - if (res && res.error) { - ui.addNotification(null, E('p', [ - _('Could not start the measurement: %s').format(res.error) - ])); - return; - } + /* A raised RPC error carries LuCI's stack trace after its first line. */ + const fail = msg => ui.addNotification(null, E('p', [ + _('Could not start the measurement: %s').format(String(msg).split('\n')[0]) + ])); + + return callStart(this.iface).then(L.bind(function(res) { + if (res && res.error) + return fail(res.error); /* Show the running state immediately rather than waiting up to * pollInterval for the next status. */ this.renderStatus({ running: true, started: Date.now() / 1000 }); this.setBusy(true); - }, this)); + }, this), err => fail(err.message)); }, handleStop(ev) { @@ -360,13 +380,18 @@ return view.extend({ running ? 'handleStop' : 'handleStart'); }, - runContext() { + linkOf(name) { + return this.ifmap[name] || name; + }, + + runContext(status) { const parts = []; if (this.config.server && this.config.server != 'auto') parts.push(_('server %s').format(this.config.server)); - if (this.config.interface) - parts.push(this.config.interface); + /* As the backend names it: a cron run may measure another interface. */ + if (status.interface) + parts.push(status.interface); return parts.join(' · '); }, @@ -462,7 +487,7 @@ return view.extend({ rows.push(E('div', { 'class': 'librespeed-muted' }, [ _('%s elapsed').format(elapsed) ])); - const ctx = this.runContext(); + const ctx = this.runContext(status); if (ctx) rows.push(E('div', { 'class': 'librespeed-muted', 'style': 'margin-top:.5em' }, [ ctx ])); @@ -480,19 +505,21 @@ return view.extend({ status.last_finished ? ' · ' + fmtTime(status.last_finished) : '' ])); } - else if (!status.running && status.last_error) { + + /* One per interface, kept until a run of it succeeds. */ + (status.running ? [] : status.failures || []).forEach(f => { /* Compact, and above the figures: the failure is news, the last * good result is still the substance of the page. */ - this.alertNode.appendChild(E('div', { + this.alertNode.appendChild(E('div', {}, [ E('div', { 'class': 'alert-message warning', 'style': 'display:inline-block; text-align:left' }, [ - E('strong', {}, [ _('Last measurement failed') ]), + E('strong', {}, [ _('Last measurement of %s failed').format(this.linkOf(f.interface)) ]), E('br'), - status.last_error, - status.last_finished ? ' · ' + fmtTime(status.last_finished) : '' - ])); - } + f.error, + f.finished ? ' · ' + fmtTime(f.finished) : '' + ]) ])); + }); }, renderResult(result) { @@ -586,9 +613,12 @@ return view.extend({ const status = data[0] || {}, result = data[1] || {}, config = data[2] || {}, - recent = data[3] || {}; + recent = data[3] || {}, + links = data[4] || {}; this.config = config; + this.ifmap = links.interfaces || {}; + this.iface = this.linkOf(config.interface || 'wan'); this.alertNode = E('div', {}); this.statusNode = E('div', {}); this.resultHeading = E('div', { 'class': 'librespeed-muted', 'style': 'margin-top:.35em' }); @@ -600,8 +630,7 @@ return view.extend({ 'class': 'librespeed-visually-hidden' }); this.recentCount = E('span', { 'class': 'librespeed-muted' }); - this.recentSubtitle = E('div', { 'class': 'librespeed-muted' }, - [ _('last 24 hours') ]); + this.recentSubtitle = E('div', { 'class': 'librespeed-muted' }); /* Built once and refilled: ui.Table gives sortable headers, the same * as the History page's table. */ this.recentTable = new ui.Table([ @@ -618,6 +647,28 @@ return view.extend({ this.button = E('button', { 'class': 'cbi-button cbi-button-action' }, [ _('Start test') ]); + /* The backend's links, or the default without any; the choice lasts + * for this page only. A default that is not a link is not chosen. */ + const ifaces = (links.links || []).slice(); + let note = ''; + + if (!ifaces.length) + ifaces.push(this.iface); + else if (ifaces.indexOf(this.iface) < 0) { + note = _('The default interface %s is not available.').format(config.interface || 'wan'); + this.iface = ifaces[0]; + } + + const ifaceSelect = E('select', { + 'class': 'cbi-input-select', + 'change': ev => { + this.iface = ev.target.value; + this.renderRecent(this.recentData); + } + }, ifaces.map(n => E('option', { 'value': n }, [ n ]))); + + ifaceSelect.value = this.iface; + this.lastSeen = status.last_finished; this.renderStatus(status); @@ -668,20 +719,17 @@ return view.extend({ /* Computed by the backend in the router's timezone; the browser may * well sit in another one, so it only formats the epoch. */ - const sched = config.schedule || {}; - const next = sched.next_runs || []; - /* Strict, matching history.js: the backend derives this from the - * crontab and emits a real boolean, never UCI's '0'/'1'. */ - const schedRows = [ [ _('Enabled'), sched.enabled === true ? _('Yes') : _('No') ] ]; + const schedRows = (config.schedules || []).map(sc => { + const every = lscommon.scheduleLabel(sc.interval, sc.days), + next = (sc.next_runs || [])[0]; - if (sched.enabled === true) { - /* The shared table translates the six tokens the UI offers; the - * init script accepts more, so the raw token is the fallback. */ - schedRows.push([ _('Interval'), - lscommon.INTERVALS[sched.interval || '1d'] || sched.interval ]); - if (next.length) - schedRows.push([ _('Next run'), new Date(next[0] * 1000).toLocaleString() ]); - } + return [ this.linkOf(sc.interface), next + ? '%s · %s'.format(every, new Date(next * 1000).toLocaleString()) + : every ]; + }); + + if (!schedRows.length) + schedRows.push([ _('Enabled'), _('No') ]); /* The main card carries the result; the aside carries what the next * run will do. Plain sections and tables, so every theme renders it. */ @@ -689,7 +737,6 @@ return view.extend({ E('div', { 'class': 'cbi-section', 'style': 'margin:0 0 1em 0' }, [ E('h3', [ _('Test configuration') ]), kv([ - [ _('Interface'), config.interface || 'wan' ], [ _('Server'), (config.server == 'auto' || !config.server) ? _('automatic (nearest)') : config.server ], [ _('Protocol'), @@ -715,7 +762,17 @@ return view.extend({ this.statusNode, this.resultHeading, this.resultNode, - E('div', { 'style': 'margin-top:1em' }, [ this.button ]) + E('div', { + 'class': 'librespeed-toolbar', + 'style': 'justify-content:center; margin-top:1em' + }, [ + E('label', {}, [ + E('span', { 'class': 'librespeed-muted' }, [ _('Interface') ]), + ' ', ifaceSelect + ]), + this.button + ]), + note ? E('p', { 'class': 'librespeed-muted', 'style': 'margin:.5em 0 0' }, [ note ]) : '' ]); const recentSection = E('div', { 'class': 'cbi-section', 'style': 'margin:1.5em 0 0 0' }, [ diff --git a/luci-app-librespeed/po/templates/librespeed.pot b/luci-app-librespeed/po/templates/librespeed.pot index 488202e1a..dc8c4fc33 100644 --- a/luci-app-librespeed/po/templates/librespeed.pot +++ b/luci-app-librespeed/po/templates/librespeed.pot @@ -1,168 +1,199 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:315 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:223 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:348 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:231 msgid "%d measurement" msgid_plural "%d measurements" msgstr[0] "" msgstr[1] "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:463 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:293 +msgid "%d measurement of another interface is in the full history." +msgid_plural "%d measurements of other interfaces are in the full history." +msgstr[0] "" +msgstr[1] "" + +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:41 +msgid "%s (no gateway)" +msgstr "" + +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:42 +msgid "%s (not found)" +msgstr "" + +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:39 +msgid "%s (recorded as %s)" +msgstr "" + +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:488 msgid "%s elapsed" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:123 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:135 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:194 +msgctxt "schedule interval on weekdays" +msgid "%s on %s" +msgstr "" + +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:215 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:227 msgid "1 year" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:30 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:31 msgid "1y" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:136 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:228 msgid "2 years" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:27 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:28 msgid "24h" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:121 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:213 msgid "30 days" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:29 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:30 msgid "30d" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:120 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:212 msgid "7 days" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:28 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:29 msgid "7d" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:122 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:134 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:214 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:226 msgid "90 days" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:156 -msgid "" -"A daily measurement runs at a time drawn when the schedule is applied; " -"saving draws it anew." -msgstr "" - -#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:31 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:94 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:32 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:124 msgid "All" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:94 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:90 msgid "" -"An hour window on the 24-hour clock, such as 2-5 for 02:00–05:59. A daily " -"measurement runs at a random time inside it, drawn when the schedule is " -"applied; shorter intervals only run within it. Leave empty for any time. A " -"window across midnight is not supported." +"An hour window on the 24-hour clock, such as 2-5 for 02:00–05:59. A daily or " +"weekly measurement runs at a random time inside it, drawn when the schedule " +"is applied; shorter intervals only run within it. Leave empty for any time. " +"A window across midnight is not supported." msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:127 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:129 +msgid "Another enabled automatic test already measures %s." +msgstr "" + +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:219 msgid "Archive path" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:133 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:225 msgid "Archive retention" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:562 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:120 +msgid "Choose the interface this test measures." +msgstr "" + +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:589 msgid "Completed" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:128 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:220 msgid "" "Completed days are reduced to daily minimum, average and maximum and " "appended here once a day, so measurements since the last flush may be lost " "after an unexpected power loss. Leave empty to keep no persistent history." msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:389 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:426 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:414 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:451 msgid "Connecting to the test server…" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:334 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:352 msgid "Could not start the measurement: %s" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:174 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:175 msgid "Daily" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:249 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:279 msgid "Daily minimum, average and maximum." msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:70 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:89 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:154 msgid "Days" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:252 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:260 msgid "Declining — the last measurement is %d%% below the 24-hour average." msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:11 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:92 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:532 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:113 +msgid "Default interface" +msgstr "" + +#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:12 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:95 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:559 msgid "Download" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:355 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:609 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:388 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:638 msgid "Download [Mbps]" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:59 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:88 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:132 msgid "Enable" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:675 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:732 msgid "Enabled" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:702 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:749 msgid "" "Encrypted transfers, which on hardware without AES acceleration may bound " "the result." msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:173 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:174 msgid "Every 12 hours" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:169 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:170 msgid "Every 15 minutes" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:170 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:171 msgid "Every 30 minutes" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:172 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:173 msgid "Every 6 hours" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:443 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:474 msgid "Export CSV" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:446 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:477 msgid "Export JSON" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:76 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:182 msgid "Friday" msgstr "" @@ -170,263 +201,264 @@ msgstr "" msgid "Grant access to LibreSpeed measurements" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:697 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:744 msgid "HTTP (forced)" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:696 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:743 msgid "HTTPS (forced)" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:159 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:189 msgid "Hide this series" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:109 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:201 #: applications/luci-app-librespeed/root/usr/share/luci/menu.d/luci-app-librespeed.json:25 msgid "History" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:215 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:245 msgid "History keeping is switched off, so measurements are not recorded." msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:115 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:207 msgid "History stored in /tmp is lost when the router reboots." msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:171 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:172 msgid "Hourly" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:93 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:90 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:185 msgid "Hours" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:354 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:410 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:26 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:550 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:692 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:441 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:54 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:111 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:577 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:770 msgid "Interface" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:62 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:680 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:135 msgid "Interval" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:14 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:540 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:15 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:567 msgid "Jitter" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:355 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:609 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:388 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:638 msgid "Jitter [ms]" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:111 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:203 msgid "Keep history" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:490 -msgid "Last measurement failed" +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:517 +msgid "Last measurement of %s failed" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:382 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:407 msgid "Last successful measurement" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:369 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:402 msgid "Latency" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:71 -msgid "Leave empty to run every day." +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:89 +msgid "" +"Leave empty to run every day. A weekly test runs on one of the chosen days, " +"or on any day when none is chosen; the day is drawn once and kept while it " +"stays among the chosen days." msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:738 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:795 #: applications/luci-app-librespeed/root/usr/share/luci/menu.d/luci-app-librespeed.json:3 msgid "LibreSpeed" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:455 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:486 msgid "LibreSpeed – History" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:22 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:50 msgid "LibreSpeed – Settings" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:27 -msgid "Logical interface the measurement is bound to." +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:55 +msgid "" +"Logical interface measured by default: by the Test page unless another one " +"is chosen there, and by an automatic test that names no interface." msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:24 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:52 msgid "Measurement" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:438 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:469 msgid "Measurements" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:741 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:798 msgid "Measures the internet connection from this router." msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:236 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:244 msgid "Metric" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:72 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:181 msgid "Monday" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:37 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:66 msgid "Must be a server id or 'auto'" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:47 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:76 msgid "Must be an http(s) URL" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:329 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:362 msgid "Next" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:683 -msgid "Next run" -msgstr "" - -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:675 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:732 msgid "No" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:246 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:276 msgid "No data for the selected metric." msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:279 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:287 msgid "No data in the last 24 hours." msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:507 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:534 msgid "No measurement yet." msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:218 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:248 msgid "No measurements match the current filters." msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:430 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:461 msgid "No measurements yet" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:161 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:256 msgid "" "No schedule is active. Enable it above and apply to draw the measurement " "time." msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:32 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:61 msgid "" "Numeric server id from the LibreSpeed server list, or 'auto' to pick the " "closest." msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:51 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:80 msgid "" "On routers without AES acceleration, TLS itself can bound the result — " "forcing plain HTTP then measures the line rather than the cipher." msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:223 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:253 msgid "Open settings" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:324 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:357 msgid "Page %d of %d" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:114 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:206 msgid "Path" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:13 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:91 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:539 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:14 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:94 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:566 msgid "Ping" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:355 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:609 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:388 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:638 msgid "Ping [ms]" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:322 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:355 msgid "Previous" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:354 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:50 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:559 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:695 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:387 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:79 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:586 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:742 msgid "Protocol" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:381 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:414 msgid "Range" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:726 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:783 msgid "Recent history" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:119 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:211 msgid "Retention" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:739 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:796 msgid "Router speed test" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:217 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:247 msgid "Run a speed test to start building your connection history." msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:60 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:88 msgid "" "Runs a measurement from cron at the chosen interval. Note that a measurement " "saturates the connection while it runs." msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:77 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:182 msgid "Saturday" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:707 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:754 msgid "Schedule status" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:57 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:87 msgid "Scheduled measurements" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:370 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:403 msgid "Series" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:354 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:408 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:31 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:548 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:608 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:693 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:387 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:439 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:60 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:575 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:637 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:740 msgid "Server" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:40 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:69 msgid "Server list URL" msgstr "" @@ -434,34 +466,34 @@ msgstr "" msgid "Settings" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:159 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:189 msgid "Show this series" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:369 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:402 msgid "Speed" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:189 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:219 msgid "Stable over the selected period." msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:258 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:266 msgid "Stable — averaged %d Mbps, ranging from %d to %d Mbps." msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:223 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:424 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:356 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:619 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:253 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:455 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:376 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:648 msgid "Start test" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:356 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:376 msgid "Stop test" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:78 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:183 msgid "Sunday" msgstr "" @@ -469,32 +501,53 @@ msgstr "" msgid "Test" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:690 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:738 msgid "Test configuration" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:479 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:658 +msgid "The default interface %s is not available." +msgstr "" + +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:151 +msgid "The interval %s is not supported. Use 1-59m, 1-23h, 1d or 7d." +msgstr "" + +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:504 msgid "The last measurement was stopped." msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:105 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:251 +msgid "" +"The time of a daily measurement is drawn anew whenever the schedule is " +"applied. A weekly measurement keeps its drawn day and time while they fit " +"the chosen days and hours." +msgstr "" + +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:197 msgid "The window must not cross midnight" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:75 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:283 +msgid "" +"These results name no interface: days archived before results were kept per " +"interface, which mix all links." +msgstr "" + +#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:182 msgid "Thursday" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:354 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:608 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:387 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:637 msgid "Time" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:73 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:181 msgid "Tuesday" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:41 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:70 msgid "" "URL of a LibreSpeed server list in JSON, from a self-hosted deployment: " "either a static file such as https://example.org/servers.json or a generator " @@ -502,121 +555,126 @@ msgid "" "official list." msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:700 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:747 msgid "Unencrypted transfers, so the line is measured rather than the cipher." msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:149 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:238 msgid "Upcoming measurements" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:12 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:93 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:533 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:13 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:96 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:560 msgid "Upload" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:355 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:609 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:388 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:638 msgid "Upload [Mbps]" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:103 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:195 msgid "Use an hour (0-23) or a range like 2-5" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:255 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:263 msgid "Variable — ranged from %d to %d Mbps." msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:326 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:297 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:345 msgid "View full history »" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:581 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:608 msgid "View result" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:74 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:181 msgid "Wednesday" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:703 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:176 +msgid "Weekly" +msgstr "" + +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:750 msgid "Whichever scheme the server list provides." msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:675 -msgid "Yes" -msgstr "" - -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:694 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:741 msgid "automatic (nearest)" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:294 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:313 msgid "average" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:300 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:371 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:168 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:335 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/librespeed/common.js:406 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:198 msgid "avg" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:295 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:314 msgid "best" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:293 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:312 msgid "current" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:179 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:209 msgid "declining" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:557 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:584 msgid "encrypted (HTTPS)" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:54 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:83 msgid "force HTTP" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:53 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:82 msgid "force HTTPS" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:179 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:209 msgid "highly variable" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:604 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:229 msgid "last 24 hours" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:557 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:584 msgid "plain HTTP" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:367 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:391 msgid "server %s" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:52 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:698 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/settings.js:81 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:745 msgid "server default" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:179 -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:186 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:209 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:216 msgid "stable" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:134 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:25 +msgid "unknown" +msgstr "" + +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/history.js:164 msgid "vs previous period" msgstr "" -#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:296 +#: applications/luci-app-librespeed/htdocs/luci-static/resources/view/librespeed/test.js:315 msgid "worst" msgstr "" diff --git a/luci-app-librespeed/root/usr/share/rpcd/acl.d/luci-app-librespeed.json b/luci-app-librespeed/root/usr/share/rpcd/acl.d/luci-app-librespeed.json index 1126662cd..0e81b4498 100644 --- a/luci-app-librespeed/root/usr/share/rpcd/acl.d/luci-app-librespeed.json +++ b/luci-app-librespeed/root/usr/share/rpcd/acl.d/luci-app-librespeed.json @@ -7,24 +7,12 @@ "status", "result", "history", - "config" - ], - "network.interface": [ - "dump" - ], - "network": [ - "get_proto_handlers" - ], - "luci-rpc": [ - "getBoardJSON", - "getNetworkDevices", - "getWirelessDevices" + "config", + "links" ] }, "uci": [ - "librespeed", - "network", - "wireless" + "librespeed" ] }, "write": { diff --git a/luci-app-linkeasefull-embed/Makefile b/luci-app-linkeasefull-embed/Makefile index baa6d5eaf..770ae0d42 100644 --- a/luci-app-linkeasefull-embed/Makefile +++ b/luci-app-linkeasefull-embed/Makefile @@ -7,8 +7,8 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-linkeasefull-embed -PKG_VERSION:=1.2.0-r1 -PKG_RELEASE:=4 +PKG_VERSION:=1.2.0-r3 +PKG_RELEASE:=5 PKG_BUILD_PARALLEL:=1 PKG_USE_MIPS16:=0 @@ -28,14 +28,29 @@ define Package/$(PKG_NAME)/description Register OpenWrt LuCI as a LinkEaseFull desktop module and provide embedded-mode assets. endef +define Package/$(PKG_NAME)/postinst +#!/bin/sh +# Compatibility entry for desktops which only scan the old directory. +root="$${IPKG_INSTROOT:-}" +legacy="$${root}/usr/share/linkeasefull/desktop-apps.d/15-openwrt-luci.json" +if [ ! -e "$${legacy}" ] && [ ! -L "$${legacy}" ]; then + mkdir -p "$${legacy%/*}" + ln -s /usr/share/linkeasefull/openwrt-luci/openwrt-luci.json "$${legacy}" || exit $$? +fi +exit 0 +endef + define Package/$(PKG_NAME)/prerm #!/bin/sh set -e root="$${IPKG_INSTROOT:-}" -registration="$${root}/usr/share/linkeasefull/desktop-apps.d/15-openwrt-luci.json" -if [ "$$(readlink "$${registration}" 2>/dev/null)" = "/usr/share/linkeasefull/openwrt-luci/openwrt-luci.json" ]; then - rm -f "$${registration}" -fi +for directory in /usr/share/linkease/apps.d /usr/share/linkeasefull/desktop-apps.d; do + registration="$${root}$${directory}/15-openwrt-luci.json" + if [ "$$(readlink "$${registration}" 2>/dev/null)" = "/usr/share/linkeasefull/openwrt-luci/openwrt-luci.json" ]; then + rm -f "$${registration}" + fi +done +rmdir "$${root}/usr/share/linkeasefull/desktop-apps.d" 2>/dev/null || true exit 0 endef @@ -46,13 +61,13 @@ define Build/Compile endef define Package/$(PKG_NAME)/install - $(INSTALL_DIR) $(1)/usr/share/linkeasefull/openwrt-luci $(1)/usr/share/linkeasefull/desktop-apps.d + $(INSTALL_DIR) $(1)/usr/share/linkeasefull/openwrt-luci $(1)/usr/share/linkease/apps.d $(INSTALL_DIR) $(1)/www/luci-static/linkeasefull-embed $(INSTALL_DATA) ./files/openwrt-luci/openwrt-luci.json $(1)/usr/share/linkeasefull/openwrt-luci/openwrt-luci.json $(INSTALL_DATA) ./files/openwrt-luci/openwrt.svg $(1)/usr/share/linkeasefull/openwrt-luci/openwrt.svg $(INSTALL_DATA) ./files/www/embed.css $(1)/www/luci-static/linkeasefull-embed/embed.css $(INSTALL_DATA) ./files/www/embed-prelude.js $(1)/www/luci-static/linkeasefull-embed/embed-prelude.js - ln -sf /usr/share/linkeasefull/openwrt-luci/openwrt-luci.json $(1)/usr/share/linkeasefull/desktop-apps.d/15-openwrt-luci.json + ln -sf /usr/share/linkeasefull/openwrt-luci/openwrt-luci.json $(1)/usr/share/linkease/apps.d/15-openwrt-luci.json endef $(eval $(call BuildPackage,$(PKG_NAME))) diff --git a/luci-app-linkeasefull-embed/README.md b/luci-app-linkeasefull-embed/README.md index 6a062220c..803953661 100644 --- a/luci-app-linkeasefull-embed/README.md +++ b/luci-app-linkeasefull-embed/README.md @@ -7,7 +7,7 @@ separate from the independently installable `linkeasefull` runtime package. This package installs: - `/usr/share/linkeasefull/openwrt-luci/openwrt-luci.json` -- `/usr/share/linkeasefull/desktop-apps.d/15-openwrt-luci.json` +- `/usr/share/linkease/apps.d/15-openwrt-luci.json` - `/www/luci-static/linkeasefull-embed/embed-prelude.js` - `/www/luci-static/linkeasefull-embed/embed.css` diff --git a/luci-app-package-manager/po/fr/package-manager.po b/luci-app-package-manager/po/fr/package-manager.po index 1359b26e4..5bd3953a7 100644 --- a/luci-app-package-manager/po/fr/package-manager.po +++ b/luci-app-package-manager/po/fr/package-manager.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2026-05-03 18:07+0000\n" -"Last-Translator: sllk \n" +"PO-Revision-Date: 2026-11-06 09:18+0000\n" +"Last-Translator: Martin Olmer \n" "Language-Team: French \n" "Language: fr\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 5.17.1\n" +"X-Generator: Weblate 2026.11.2.dev0\n" #: applications/luci-app-package-manager/htdocs/luci-static/resources/view/package-manager.js:943 #: applications/luci-app-package-manager/htdocs/luci-static/resources/view/package-manager.js:1008 @@ -287,7 +287,7 @@ msgstr "Remise à zéro" #: applications/luci-app-package-manager/htdocs/luci-static/resources/view/package-manager.js:1157 msgid "SHA256" -msgstr "SHA-256" +msgstr "SHA256" #: applications/luci-app-package-manager/htdocs/luci-static/resources/view/package-manager.js:1019 msgid "Save" diff --git a/luci-app-package-manager/po/hu/package-manager.po b/luci-app-package-manager/po/hu/package-manager.po index 3345dc74e..92a1438e1 100644 --- a/luci-app-package-manager/po/hu/package-manager.po +++ b/luci-app-package-manager/po/hu/package-manager.po @@ -1,8 +1,9 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2026-10-13 21:56+0000\n" -"Last-Translator: Pavel Borecki \n" +"PO-Revision-Date: 2026-11-04 16:54+0000\n" +"Last-Translator: Kövecses József " +"\n" "Language-Team: Hungarian \n" "Language: hu\n" @@ -10,7 +11,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2026.11.dev0\n" +"X-Generator: Weblate 2026.11.1.dev0\n" #: applications/luci-app-package-manager/htdocs/luci-static/resources/view/package-manager.js:943 #: applications/luci-app-package-manager/htdocs/luci-static/resources/view/package-manager.js:1008 @@ -233,7 +234,7 @@ msgstr "Nincs telepítve" #: applications/luci-app-package-manager/htdocs/luci-static/resources/view/package-manager.js:1268 msgid "OK" -msgstr "Rendben" +msgstr "OK" #: applications/luci-app-package-manager/htdocs/luci-static/resources/view/package-manager.js:1344 msgid "Package name" diff --git a/luci-app-package-manager/po/pt_BR/package-manager.po b/luci-app-package-manager/po/pt_BR/package-manager.po index 802b78dd9..c9308d942 100644 --- a/luci-app-package-manager/po/pt_BR/package-manager.po +++ b/luci-app-package-manager/po/pt_BR/package-manager.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2026-09-29 12:10+0000\n" -"Last-Translator: Pavel Borecki \n" +"PO-Revision-Date: 2026-11-01 06:11+0000\n" +"Last-Translator: LucasMZ \n" "Language-Team: Portuguese (Brazil) \n" "Language: pt_BR\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 2026.10.dev0\n" +"X-Generator: Weblate 2026.11.dev0\n" #: applications/luci-app-package-manager/htdocs/luci-static/resources/view/package-manager.js:943 #: applications/luci-app-package-manager/htdocs/luci-static/resources/view/package-manager.js:1008 @@ -142,7 +142,7 @@ msgstr "Executando o gerenciador de pacotes" #: applications/luci-app-package-manager/htdocs/luci-static/resources/view/package-manager.js:1257 msgid "Filter" -msgstr "Filtrar" +msgstr "Filtro" #: applications/luci-app-package-manager/root/usr/share/rpcd/acl.d/luci-app-package-manager.json:3 msgid "Grant access to package management" diff --git a/luci-app-package-manager/po/zh_Hant/package-manager.po b/luci-app-package-manager/po/zh_Hant/package-manager.po index 26ff5df45..1cc3c7dba 100644 --- a/luci-app-package-manager/po/zh_Hant/package-manager.po +++ b/luci-app-package-manager/po/zh_Hant/package-manager.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2026-05-15 10:43+0000\n" -"Last-Translator: 為什麼不加空格 \n" +"PO-Revision-Date: 2026-10-20 09:40+0000\n" +"Last-Translator: TCP \n" "Language-Team: Chinese (Traditional Han script) \n" "Language: zh_Hant\n" @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 2026.5.dev0\n" +"X-Generator: Weblate 2026.11.dev0\n" #: applications/luci-app-package-manager/htdocs/luci-static/resources/view/package-manager.js:943 #: applications/luci-app-package-manager/htdocs/luci-static/resources/view/package-manager.js:1008 @@ -37,7 +37,7 @@ msgstr "允許覆寫衝突套件檔案" #: applications/luci-app-package-manager/htdocs/luci-static/resources/view/package-manager.js:1057 msgid "Automatically remove unused dependencies" -msgstr "自動刪除未使用依賴項" +msgstr "自動移除未使用依賴項" #: applications/luci-app-package-manager/htdocs/luci-static/resources/view/package-manager.js:1328 msgid "Available" @@ -243,15 +243,15 @@ msgstr "確定安裝 %h?" #: applications/luci-app-package-manager/htdocs/luci-static/resources/view/package-manager.js:1071 msgid "Remove" -msgstr "刪除" +msgstr "移除" #: applications/luci-app-package-manager/htdocs/luci-static/resources/view/package-manager.js:1047 msgid "Remove package %h" -msgstr "刪除套件 %h" +msgstr "移除套件 %h" #: applications/luci-app-package-manager/htdocs/luci-static/resources/view/package-manager.js:337 msgid "Remove…" -msgstr "刪除…" +msgstr "移除…" #: applications/luci-app-package-manager/htdocs/luci-static/resources/view/package-manager.js:822 msgid "Require approx. %1024mB size for %d package(s) to install." diff --git a/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js b/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js index 797149f15..bb5cf49bc 100644 --- a/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js +++ b/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js @@ -31,8 +31,8 @@ function dscpRank(v){return v<0?-1000:DSCP_BULK[v]?v-100:v===46?100:v>=10&&v<=38 // Colour by sorted class name, so a class keeps its colour as the bars reorder. function qc(n){return 'var(--qos-c-'+n+')';} var CN_COLORS=['blue','green','orange','purple','red','cyan','brown','pink'].map(qc); -// qosify_map_stats() appends these two default slots; they are not config classes. -var CN_SKIP={tcp_default:1,udp_default:1}; +// qosify_map_stats() appends these two default slots for traffic no rule matched. +var CN_DEF={tcp_default:'dscp_default_tcp',udp_default:'dscp_default_udp'}; // A class with no codepoint to place in a tin. var CN_NONE=qc('none'); // CAKE's DSCP to tin tables in sch_cake.c, already put through tin_order, so each @@ -53,6 +53,9 @@ var TIN_COLORS={besteffort:['blue'], diffserv4:['red','blue','yellow','green'], diffserv3:['red','blue','green']}; for(var tk in TIN_COLORS)TIN_COLORS[tk]=TIN_COLORS[tk].map(qc); +// q_cake.c names the tins of a three- and four-tin mode and numbers any other +// count from Tin 0, lowest priority first, as qosify-status prints them. +function tinName(n,i){return n===3?['Bulk','Best Effort','Voice'][i]:n===4?['Bulk','Best Effort','Video','Voice'][i]:'Tin '+i;} // qosify.init handles 'alias' with add_class and 'device' with add_interface, // so those section types share the option set of class / interface. var OPT_DESC={ @@ -80,6 +83,7 @@ var OPT_DESC={ nat:_('Enable CAKE NAT host detection via conntrack'), host_isolate:_('Enable CAKE host isolation'), autorate_ingress:_('Enable CAKE automatic rate estimation for ingress'), + multiqueue:_('Use cake_mq instead of cake on devices with more than one queue'), overhead_type:_('CAKE overhead keyword added to options; manual uses overhead and overhead_encap'), overhead:_('Adds overhead when overhead_type is manual'), overhead_encap:_('Adds atm, noatm or ptm when overhead_type is manual'), @@ -91,6 +95,23 @@ var OPT_DESC={ }; // Quick Add grids hold at most this many options per table. var QA_COLS=7; +// tc get_rate64() units; a bare number is bytes per second. Not CAKE's unlimited: +// qosify sends a set value as "bandwidth ", which get_rate64() refuses for +// a word, so the qdisc is not created. An empty bandwidth is what runs unlimited. +var RATE=/^\d+(\.\d+)?((k|m|g|t)?(bit|bps)|(ki|mi|gi|ti)(bit|bps))?$/i; +// interface_create() drops a name of IFNAMSIZ (16) or more, or with a quote. +var NAME_MAX=15; +// class_map has QOSIFY_MAX_CLASS_ENTRIES slots for class and alias sections. +var CLASS_MAX=16; +// true once qosify.init passes multiqueue (cake_mq); null is unknown. OpenWrt +// added it with qosify b3ee50e, which also takes port 65535 (1501e09 and beeb87e stop at 65534). +var MQ_OK=null; +function portMax(){return MQ_OK?65535:65534;} +// cmd_add_qdisc() only attaches cake_mq where /sys/class/net//queues has more +// than one tx (egress) or rx (ingress, the ifb) queue, so a single-queue device +// such as pppoe-wan gets plain cake. MQ_DEV is that device for the quick settings +// section and MQ_MULTI whether it has several queues; null is unknown. +var MQ_DEV=null,MQ_MULTI=null; // luci.setInitAction was dropped from luci-base in 4440b267d; the rc namespace // (built into the rpcd core binary, so no extra dependency) replaces it. @@ -147,6 +168,38 @@ var callQosifyDump=rpc.declare({ expect:{'':{}}, reject:true }); +// add takes a dscp, an optional timeout and string arrays per match type; remove +// is the same method without dscp (UBUS_METHOD_MASK). Unset arguments drop out. +var DYN_KEYS=['ipv4','ipv6','tcp_port','udp_port','dns']; +var callQosifyAdd=rpc.declare({object:'qosify',method:'add',params:['dscp','timeout'].concat(DYN_KEYS),reject:true}); +var callQosifyRemove=rpc.declare({object:'qosify',method:'remove',params:DYN_KEYS,reject:true}); +// get_stats zeroes what it has just reported when reset is set. +var callQosifyStatsReset=rpc.declare({object:'qosify',method:'get_stats',params:['reset'],expect:{'':{}},reject:true}); +// dump type_name to the add/remove argument it came from. +var DYN_ARG={ipv4_addr:'ipv4',ipv6_addr:'ipv6',tcp_port:'tcp_port',udp_port:'udp_port',dns:'dns'}; +function dynArgs(k,v){return DYN_KEYS.map(function(x){return x===k?[v]:undefined;});} +var callIfStatus=rpc.declare({ + object:'network.interface', + method:'status', + params:['interface'], + expect:{'':{}}, + reject:true +}); +// A config interface resolves to its l3_device, as qosify does; down or unknown +// leaves MQ_MULTI null and the row shown. +function mqProbe(){ + var sn=ifSect(),w=(sn&&uci.get('qosify',sn.id))||{},n=w.name; + MQ_DEV=MQ_MULTI=null; + if(!n||MQ_OK===false)return Promise.resolve(); + return (sn.type==='device'?Promise.resolve(n):callIfStatus(n).then(function(r){return r.l3_device||null;})).then(function(d){ + if(!d||!/^[\w.@:-]+$/.test(d))return; + return fs.list('/sys/class/net/'+d+'/queues').then(function(l){ + var tx=0,rx=0; + l.forEach(function(e){if(/^tx-/.test(e.name))tx++;else if(/^rx-/.test(e.name))rx++;}); + MQ_DEV=d;MQ_MULTI=tx>1||rx>1; + }); + }).catch(function(){MQ_DEV=MQ_MULTI=null;}); +} var callServiceList=rpc.declare({ object:'service', method:'list', @@ -173,7 +226,7 @@ function clsOpt(c){var d=c.ingress===c.egress?c.egress:(c.ingress||'-')+'/'+(c.e function trim(s){return (s||'').replace(/^\s+|\s+$/g,'');} function $(id){return document.getElementById(id);} -// ingress/egress/nat/host_isolate/autorate_ingress reach the daemon through +// ingress/egress/nat/host_isolate/autorate_ingress/multiqueue reach the daemon through // qosify.init's `add_option boolean` -> json_add_boolean -> !!atoi(), so only a // non-zero number is true: 'true', 'on' and 'yes' all mean off. function numBool(v,def){ @@ -272,6 +325,19 @@ function hasNat(v){return /(^|\s)nat(\s|$)/.test(v||'');} function ifLint(s,dev){ var w=[],c=ifCfg(s,dev); if(!s.name)w.push(_('name is not set — qosify.init sends an empty device name and this section is never applied')); + else if(String(s.name).length>NAME_MAX||/'/.test(s.name))w.push(_('name "%s" is dropped by qosify — it takes at most %d characters and no quote').format(s.name,NAME_MAX)); + if(s.mode&&MODES.indexOf(s.mode)<0)w.push(_('mode "%s" is not a CAKE diffserv mode — tc refuses the qdisc, so nothing is shaped although qosify reports the section active').format(s.mode)); + ['bandwidth_up','bandwidth_down','bandwidth'].forEach(function(k){ + if(s[k]&&!RATE.test(String(s[k])))w.push(_('%s "%s" is not a tc rate — tc refuses the qdisc, so nothing is shaped although qosify reports the section active').format(k,s[k])); + }); + if(s.overhead_type&&OVH.indexOf(s.overhead_type)<0)w.push(_('overhead_type "%s" is not one qosify.init knows, so no overhead is set').format(s.overhead_type)); + if(s.overhead_type==='manual'){ + if(s.overhead&&!/^-?\d+$/.test(s.overhead))w.push(_('%s "%s" is not a whole number — tc refuses the qdisc').format('overhead',s.overhead)); + if(s.overhead_encap&&ENCAP.indexOf(s.overhead_encap)<0)w.push(_('overhead_encap "%s" is not atm, noatm or ptm — tc refuses the qdisc').format(s.overhead_encap)); + } + if(s.overhead_mpu&&!/^\d+$/.test(s.overhead_mpu))w.push(_('%s "%s" is not a whole number — tc refuses the qdisc').format('overhead_mpu',s.overhead_mpu)); + if(s.overhead_vlan&&!/^\d+$/.test(s.overhead_vlan))w.push(_('overhead_vlan "%s" is not 0, 1 or 2 — qosify.init adds no ether-vlan').format(s.overhead_vlan)); + if(MQ_OK===false&&numBool(s.multiqueue,false))w.push(_('multiqueue is set, but this qosify.init does not pass it to qosify')); if(!c.host_isolate&&c.nat){ var ne=hasNat(s.options)||hasNat(s.egress_options); var ni=hasNat(s.options)||hasNat(s.ingress_options); @@ -282,7 +348,7 @@ function ifLint(s,dev){ if(!c.ingress&&!c.egress)w.push(_('ingress and egress are both 0 — nothing is shaped')); if(c.egress&&!c.bw_up)w.push(_('no bandwidth_up or bandwidth — egress CAKE runs unlimited')); if(c.ingress&&!c.bw_dn)w.push(_('no bandwidth_down or bandwidth — ingress CAKE runs unlimited')); - ['ingress','egress','nat','host_isolate','autorate_ingress'].forEach(function(k){ + ['ingress','egress','nat','host_isolate','autorate_ingress','multiqueue'].forEach(function(k){ if(s[k]!=null&&s[k]!==''&&!boolNum(s[k]))w.push(_('%s is set to "%s" — qosify converts it with atoi(), so anything but a non-zero number means off').format(k,s[k])); }); if(s.disabled!=null&&s.disabled!==''&&!/^(0|1|on|off|true|false|yes|no|enabled|disabled)$/i.test(String(s.disabled))) @@ -311,7 +377,7 @@ function cfgSections(txt){ // line continuation) or an open quote (a multi-line value) cannot be followed line by // line, so it is listed in '.bad' and refused by cfgLint(), as is a tc-bound key (TCK) // that is not one value. -var TCK=/^(bandwidth(_up|_down)?|mode|(ingress_|egress_)?options)$/; +var TCK=/^(bandwidth(_up|_down)?|mode|(ingress_|egress_)?options|overhead(_encap|_mpu)?)$/; function cfgStmts(l){return (l.replace(/^((?:[^'"#]|'[^']*'|"[^"]*")*)#.*$/,'$1').match(/(?:[^'";]|'[^']*'|"[^"]*"|['"])+/g)||[]);} function uciWords(st){ var w=[],cur=null,m,re=/\s+|'([^']*)'|"([^"\\]*)"|([^\s'"\\]+)|([\s\S])/g; @@ -360,12 +426,17 @@ function setOpts(txt,type,name,idx,kv){ } var out=[lines[s.start]],seen={}; for(i=s.start+1;i<=s.end;i++){ - var lm=/^\s*list\s+(\S+)(\s|$)/.exec(lines[i]); - if(lm&&(lm[1] in kv))throw new Error(_('%s is a list in this section — edit %s directly').format(lm[1],UCI_PATH)); - var m=/^\s*option\s+(\S+)\s+(.*)$/.exec(lines[i]); - if(m&&(m[1] in kv)){ - seen[m[1]]=1; - if(kv[m[1]]!=null)out.push("\toption "+m[1]+" '"+qv(kv[m[1]])+"'"); + // An option name may be quoted ('bandwidth_up'), as libuci reads it. + var lm=/^\s*list\s+(\S+)(\s|$)/.exec(lines[i]),lk=lm&&unq(lm[1]); + if(lm&&(lk in kv))throw new Error(_('%s is a list in this section — edit %s directly').format(lk,UCI_PATH)); + var m=/^\s*option\s+(\S+)\s+(.*)$/.exec(lines[i]),ok=m&&unq(m[1]); + if(m&&(ok in kv)){ + // Replacing the line would drop a second statement after ; or leave the rest + // of a value that runs onto the next line. + var st=cfgStmts(lines[i]); + if(st.length>1||!uciWords(st[0]||''))throw new Error(_('%s is not one plain statement in this section — edit %s directly').format(ok,UCI_PATH)); + seen[ok]=1; + if(kv[ok]!=null)out.push("\toption "+ok+" '"+qv(kv[ok])+"'"); continue; } out.push(lines[i]); @@ -384,8 +455,9 @@ function dscpNum(v){ return null; } // NQB is in qosify from 298754f, the get_stats "classes" table from 0edbc51 two -// commits on. OpenWrt went from 1501e09 (24.10, 25.12) to beeb87e (master), so a -// reply with "classes" means NQB is known, one without it means not; null is unknown. +// commits on. OpenWrt went from 1501e09 (24.10, 25.12) to b3ee50e, now 143d71d +// (master), so a reply with "classes" means NQB is known, one without it means not; +// null is unknown. var NQB_OK=null; function nqbSeen(st){if(st)NQB_OK=!!st.classes;} function dscpList(){return NQB_OK===false?DSCP.filter(function(d){return d!=='NQB';}):DSCP;} @@ -398,11 +470,11 @@ function dscpOk(v,cls){ var n=dscpNum(v); return n!==null&&n<64; } -// Match keys qosify_map_parse_line() loads: ports 1-65534 (strtoul base 0), +// Match keys qosify_map_parse_line() loads: ports 1-portMax() (strtoul base 0), // one address for inet_pton(), or a dns pattern. function portOk(p){ var a=p.split('-'),x=dscpNum(a[0]),y=a.length>1?dscpNum(a[1]):x; - return a.length<3&&x!==null&&y!==null&&x>=1&&y>=x&&y<=65534; + return a.length<3&&x!==null&&y!==null&&x>=1&&y>=x&&y<=portMax(); } function ip4Ok(a){return /^((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.|$)){4}$/.test(a)&&!/\.$/.test(a);} function ip6Ok(a){ @@ -431,7 +503,7 @@ function ruleWarn(txt,names){ } if(bare.length)w.push(_('No DSCP target on line %s — qosify skips single-field lines').format(bare.join(', '))); if(xtra.length)w.push(_('More than two fields on line %s — qosify reads the rest of the line as the DSCP value and skips it').format(xtra.join(', '))); - if(mt.length)w.push(_('Match not loaded by qosify on line %s — ports 1-65534, one IPv4/IPv6 address (no CIDR or %%zone), or dns:, dns_c:').format(mt.join(', '))); + if(mt.length)w.push(_('Match not loaded by qosify on line %s — ports 1-%d, one IPv4/IPv6 address (no CIDR or %%zone), or dns:, dns_c:, dns_q:').format(mt.join(', '),portMax())); if(bad.length)w.push(_('Unknown class/DSCP target: %s').format(bad.join(', '))+(NQB_OK===false&&bad.indexOf('NQB')>=0?' '+_('(this qosify build has no NQB)'):'')); return w; } @@ -439,16 +511,33 @@ function ruleWarn(txt,names){ // Defaults-level dscp_prio/dscp_bulk/dscp_icmp failing makes qosify_ubus_config() // return before the interfaces are applied; the rest is dropped quietly. // cmd_add_qdisc() pastes bandwidth, mode and the options unquoted into a tc -// command run with sh -c as root, so a shell metacharacter there is refused too. +// command run with sh -c as root, and qosify.init folds overhead, overhead_encap +// and overhead_mpu into options. From qosify 143d71d (master) check_str() drops a +// value with any byte outside TCV, a mode falling back to diffserv4; 1501e09 +// (24.10, 25.12) refuses only a quote. No tc rate or CAKE keyword needs more, so +// TCV holds on every build, a list checked as config_get joins it, with spaces. +var TCV=/^[A-Za-z0-9._ -]*$/; +// The integer keys go through jshn's atoll(), which keeps only leading digits. +var INTK=['timeout','prio_max_avg_pkt_len','bulk_trigger_pps','bulk_trigger_timeout']; function cfgLint(secs){ - var w=[],cls=[]; - secs.forEach(function(s){if((s['.type']==='class'||s['.type']==='alias')&&s['.name'])cls.push(s['.name']);}); + var w=[],cls=[],al=[],nc=0; + secs.forEach(function(s){ + if(s['.type']!=='class'&&s['.type']!=='alias')return; + nc++; + if(s['.name'])(s['.type']==='class'?cls:al).push(s['.name']); + }); + // qosify.init sends class sections, then alias sections, in file order. + cls=cls.concat(al); + if(nc>CLASS_MAX)w.push({load:true,t:_('%d class and alias sections — qosify has %d class slots, so %s and the rules using them are dropped').format(nc,CLASS_MAX,cls.slice(CLASS_MAX).join(', ')||'-')}); secs.forEach(function(s){ var t=s['.type'],n=s['.name']||t; (s['.bad']||[]).forEach(function(k){w.push({hard:true,t:_('%s: %s cannot be checked — write it as one plain or fully quoted value, with no backslash').format(n,k)});}); + if(t==='defaults'||t==='class'||t==='alias')INTK.forEach(function(k){ + if(s[k]!=null&&s[k]!==''&&!/^\d+$/.test(String(s[k])))w.push({t:_('%s: %s "%s" is not a whole number — qosify.init passes it through atoll(), which keeps only the leading digits').format(n,k,s[k])}); + }); if(t==='interface'||t==='device'){ - ['bandwidth_up','bandwidth_down','bandwidth','mode','ingress_options','egress_options','options'].forEach(function(k){ - if(s[k]&&/['"`$;&|<>(){}\\\n]/.test(String(s[k])))w.push({hard:true,t:_('%s: %s contains shell metacharacters — qosify runs the tc command with sh -c as root, so they would break it or be executed').format(n,k)}); + ['bandwidth_up','bandwidth_down','bandwidth','mode','ingress_options','egress_options','options','overhead','overhead_encap','overhead_mpu'].forEach(function(k){ + if(s[k]&&!TCV.test([].concat(s[k]).join(' ')))w.push({hard:true,t:_('%s: %s may only contain letters, digits, spaces, dots, underscores and hyphens — qosify 143d71d (snapshots) drops it otherwise, and 24.10 and 25.12 paste it into a tc command run with sh -c as root').format(n,k)}); }); } else if(t==='defaults'){ @@ -482,11 +571,16 @@ function rulesLoaded(secs){ }); } +// E() and dom.content() set a lone string child as innerHTML and append array +// members as text nodes. Messages and cells carry values from the config, the +// rules file and qosify's replies, so every string goes in as text. +function tx(v){return typeof v==='string'?[v]:v;} + var noteSeen={}; function notify(msg,kind){ var key=String(msg); if(noteSeen[key])return null; - var n=ui.addNotification(null,E('p',{},msg),kind||'info'); + var n=ui.addNotification(null,E('p',{},tx(key)),kind||'info'); if(!n)return null; noteSeen[key]=1; var ms=(kind==='danger')?10000:(kind==='warning')?8000:5000; @@ -499,13 +593,13 @@ function notify(msg,kind){ // Stock LuCI markup: themes style .cbi-section, .table, .label and // .cbi-value already, so qosify.css only draws the section boxes. -function badge(kind,t){return E('span',{'class':kind?'label '+kind:'label'},t);} -function desc(t){return E('div',{'class':'cbi-value-description'},t);} -function sdesc(t){return E('div',{'class':'cbi-section-descr'},t);} -function kvRow(k,v,id){return E('tr',{'class':'tr'},[E('td',{'class':'td left','width':'33%'},k),E('td',{'class':'td left','id':id||null},v)]);} +function badge(kind,t){return E('span',{'class':kind?'label '+kind:'label'},tx(t));} +function desc(t){return E('div',{'class':'cbi-value-description'},tx(t));} +function sdesc(t){return E('div',{'class':'cbi-section-descr'},tx(t));} +function kvRow(k,v,id){return E('tr',{'class':'tr'},[E('td',{'class':'td left','width':'33%'},tx(k)),E('td',{'class':'td left','id':id||null},tx(v))]);} function kvTable(rows,id){return E('table',{'class':'table','id':id||null},rows);} -function emRow(t){return E('tr',{'class':'tr placeholder'},E('td',{'class':'td'},E('em',{},t)));} -function emP(t){return E('p',{},E('em',{},t));} +function emRow(t){return E('tr',{'class':'tr placeholder'},E('td',{'class':'td'},E('em',{},tx(t))));} +function emP(t){return E('p',{},E('em',{},tx(t)));} function gridTable(head,rows,empty){ return E('table',{'class':'table cbi-section-table'},[E('tr',{'class':'tr cbi-section-table-titles'},head.map(function(h){return E('th',{'class':'th'},h);}))] .concat(rows.length?rows.map(function(r){return E('tr',{'class':'tr cbi-section-table-row'},r.map(function(c,i){return E('td',{'class':'td','data-title':head[i]},c);}));}):[emRow(empty)])); @@ -536,6 +630,12 @@ function colHead(cols,id){ return E('div',{'class':'qhead','id':id||null},colTable(cols,E('tr',{'class':'tr table-titles'}, cols.map(function(c){return E('th',{'class':c[2]?'th qn':'th left'},c[0]);})))); } +// E() builds HTML elements; the tin donuts are SVG, which needs its namespace. +function svgE(tag,attr){ + var e=document.createElementNS('http://www.w3.org/2000/svg',tag); + for(var k in attr)e.setAttribute(k,attr[k]); + return e; +} function valRow(lbl,el){ var n=Array.isArray(el)?el[0]:el; if(n&&!n.id&&n.querySelector)n=n.querySelector('[id]'); @@ -559,7 +659,7 @@ function confirmDialog(title,text,label,negative){ return new Promise(function(resolve){ var done=function(v){ui.hideModal();resolve(v);}; ui.showModal(title,[ - E('p',{},text), + E('p',{},tx(text)), E('div',{'class':'right'},[ E('button',{'class':'cbi-button','click':function(){done(false);}},_('Cancel')), ' ', @@ -576,9 +676,10 @@ return view.extend({ load:function(){ return Promise.all([ - uci.load('qosify').catch(function(){return null;}), + uci.load('qosify').catch(function(){return null;}).then(function(r){return r&&mqProbe().then(function(){return r;});}), this.gatherCtx(true), - callQosifyStats().then(nqbSeen,function(){}) + callQosifyStats().then(nqbSeen,function(){}), + L.resolveDefault(fs.read('/etc/init.d/qosify'),null).then(function(t){if(t!=null)MQ_OK=/add_option boolean multiqueue/.test(t);}) ]); }, @@ -618,6 +719,7 @@ return view.extend({ // this from a requestAnimationFrame, so the pane is in the DOM. if(t[0]==='st')self.refreshStatus(); if(t[0]==='cn')self.refreshCounters(); + if(t[0]==='ru')self.refreshDyn(); self.fitEditor(); }); group.appendChild(pane); @@ -648,6 +750,7 @@ return view.extend({ poll.add(function(){if(self.currentTab!=='ov'||self._n)return;return self.refreshOverview();}); poll.add(function(){if(self.currentTab!=='st'||self._n)return;return self.refreshStatus();}); poll.add(function(){if(self.currentTab!=='cn'||self._n)return;return self.refreshCounters();}); + poll.add(function(){if(self.currentTab!=='ru'||self._n)return;return self.refreshDyn();}); }, tabOverview:function(ctx){ @@ -679,7 +782,7 @@ return view.extend({ var s=E('select',{'class':'cbi-input-select','id':'q-'+name,'data-q':name}),sv=val||def,known=false; if(def==null)s.appendChild(E('option',{'value':''},'--')); opts.forEach(function(o){var a={'value':o};if(sv===o){a.selected='selected';known=true;}s.appendChild(E('option',a,o));}); - if(val&&!known)s.appendChild(E('option',{'value':val,'selected':'selected'},_('%s (current)').format(val))); + if(val&&!known)s.appendChild(E('option',{'value':val,'selected':'selected'},[_('%s (current)').format(val)])); return s; } function num(name,val,ph){var e=txt(name,val,ph);e.type='number';return e;} @@ -712,7 +815,7 @@ return view.extend({ function syncOvh(){manRows.forEach(function(r){r.style.display=ovSel.value==='manual'?'':'none';});} ovSel.addEventListener('change',syncOvh); syncOvh(); - var grp=E('div',{},[ + var grp=E('div',{'class':'qs-panes'},[ pane('qs-basic',_('Basic'),[ [_('QoS Enabled'),[E('span',{'class':'qs-ctl'},[chk('enabled',enChecked),' ',enBadge]),desc(_('Unticked sets disabled 1 and qosify skips this section.'))]], [isDev?_('Device'):_('Interface'),[txt('name',w.name||(sn?(isDev?'':sn.name):'wan'),_('e.g. %s').format(isDev?'eth0':'wan')),desc(isDev?_('Netdev to enable QoS on. Required.'):_('netifd interface to enable QoS on. Required.'))]], @@ -726,7 +829,7 @@ return view.extend({ [_('Automatic download rate'),[chk('autorate',numBool(w.autorate_ingress,false)),desc(OPT_DESC.autorate_ingress)]], [_('NAT awareness'),[chk('nat',numBool(w.nat,!isDev)),desc(OPT_DESC.nat),natNote]], [_('Host isolation'),[hiCb,desc(OPT_DESC.host_isolate)]] - ]), + ].concat(MQ_OK===false||MQ_MULTI===false?[]:[[_('Multiqueue CAKE'),[chk('multiqueue',numBool(w.multiqueue,false)),desc(OPT_DESC.multiqueue)]]])), pane('qs-overhead',_('Overhead'),[ [_('Overhead preset'),[ovSel,desc(_('CAKE overhead keyword. Use none if unsure.'))]], manRows[0], @@ -747,7 +850,7 @@ return view.extend({ var wrap=E('div',{},grp); ui.tabs.initTabGroup(grp.childNodes); return [ - E('h3',{},_('%s quick settings').format(sn?sn.type+(sn.name?' '+sn.name:''):'interface wan')), + E('h3',{},tx(_('%s quick settings').format(sn?sn.type+(sn.name?' '+sn.name:''):'interface wan'))), wrap, E('div',{'class':'cbi-page-actions'}, E('button',{'class':'cbi-button cbi-button-apply','click':function(){return self.saveQuick();}},_('Save & Apply'))) @@ -837,9 +940,10 @@ return view.extend({ }, // qosify.init in 25.12 and master pushes its config from service_running(), - // which rc.common only calls for `running`, so start and restart leave the - // daemon with no config. reload pushes it once the ubus object is up; on 24.10, - // where service_started() already did, the same config changes nothing. + // which procd runs on its own, asynchronously, after the instance starts; on + // 24.10 service_started() does it. reload pushes it once the ubus object is + // up, so the config is in place before the shaping check reads the status; + // the same config again changes nothing. pushConfig:function(){ var n=10; function tick(){ @@ -996,6 +1100,7 @@ return view.extend({ this.qaSelect(qadIf,'nat',['0','1']); this.qaSelect(qadIf,'host_isolate',['0','1']); this.qaSelect(qadIf,'autorate_ingress',['0','1']); + if(MQ_OK!==false)this.qaSelect(qadIf,'multiqueue',['0','1']); this.qaSelect(qadIf,'overhead_type',OVH); this.qaNum(qadIf,'overhead','44'); this.qaSelect(qadIf,'overhead_encap',ENCAP); @@ -1018,8 +1123,8 @@ return view.extend({ }); qa.appendChild(fold('qos-qa-ref',_('Reference'),[ this.classRef('qos-cls-cfg'), - refBox(_('DSCP values'),_('DSCP codepoints: CS0–CS7, AF11–AF43, EF, VA, NQB, LE, DF (NQB needs qosify from June 2026; 24.10 and 25.12 do not have it). A raw value from 0 to 63 is accepted too, and any dscp_* value may also name a class. Prefix with + to override only when the DSCP field is zero.'),[]), - refBox(_('Defaults'),_('Defaults qosify applies when a key is absent — interface: mode diffserv4, ingress 1, egress 1, nat 1, host_isolate 1, autorate_ingress 0. device: identical except nat 0. defaults: timeout 3600, dscp_default_tcp/udp CS0, dscp_prio/dscp_bulk/dscp_icmp unset, bulk_trigger_pps/bulk_trigger_timeout/prio_max_avg_pkt_len 0 (disabled).'),[]) + refBox(_('DSCP values'),_('DSCP codepoints: CS0–CS7, AF11–AF43, EF, VA, NQB, LE, DF (NQB needs qosify from June 2026; 24.10 and 25.12 do not have it). A raw value from 0 to 63 is accepted too, and any dscp_* value may also name a class. Prefix with + to override only when the DSCP field is zero (as described from qosify c698349; 24.10 and 25.12 do not honour it).'),[]), + refBox(_('Defaults'),_('Defaults qosify applies when a key is absent — interface: mode diffserv4, ingress 1, egress 1, nat 1, host_isolate 1, autorate_ingress 0, multiqueue 0. device: identical except nat 0. defaults: timeout 3600, dscp_default_tcp/udp CS0, dscp_prio/dscp_bulk/dscp_icmp unset, bulk_trigger_pps/bulk_trigger_timeout/prio_max_avg_pkt_len 0 (disabled).'),[]) ],false)); section.appendChild(qa); section.addEventListener('toggle',function(){self.fitEditor();},true); @@ -1051,7 +1156,7 @@ return view.extend({ }, qaSelect:function(parent,opt,opts){ var s=E('select',{'id':this.qaId(parent,opt),'class':'cbi-input-select','data-opt':opt,'aria-label':opt},E('option',{'value':''},'--')); - opts.forEach(function(o){s.appendChild(E('option',{'value':o},o));}); + opts.forEach(function(o){s.appendChild(E('option',{'value':o},[o]));}); this.qaCell(parent,opt,s); }, qaNum:function(parent,opt,ph){ @@ -1084,20 +1189,21 @@ return view.extend({ var classes=this.getClasses(),sel=$('qar-cls'),cur,self=this; if(sel){ cur=sel.value; - dom.content(sel,classes.map(function(c){return E('option',{'value':c.name},clsOpt(c));})); + dom.content(sel,classes.map(function(c){return E('option',{'value':c.name},[clsOpt(c)]);})); if(cur&&classes.some(function(c){return c.name===cur;}))sel.value=cur; } ['qos-cls-cfg','qos-cls-ru'].forEach(function(id){ var b=$(id); if(b)dom.content(b,self.classRows(classes)); }); - var names=classes.map(function(c){return c.name;}).concat(dscpList()); + var names=classes.map(function(c){return c.name;}).concat(dscpList()),dy=$('qdy-dscp'); + if(dy){cur=dy.value;dom.content(dy,names.map(function(o){return E('option',{'value':o},[o]);}));if(names.indexOf(cur)>=0)dy.value=cur;} ['qac-opts-defaults','qac-opts-class'].forEach(function(id){ var p=$(id);if(!p)return; var ss=p.querySelectorAll('select[data-opt^="dscp_"]'); for(var i=0;i[-]'],['udp:','udp:[-]'],['both:','tcp: + udp:'],['dns:','dns:'],['dnsr:','dns:/'],['dns_c:','dns_c:'],['dns_cr:','dns_c:/'],['ipv4:',_('IPv4 address, e.g. 1.1.1.1')],['ipv6:',_('IPv6 address, e.g. ff01::1')]].forEach(function(o){ qarType.appendChild(E('option',{'value':o[0]},[document.createTextNode(o[1])])); }); - var qarCls=E('select',{'class':'cbi-input-select','id':'qar-cls','aria-label':'dscp'},this.getClasses().map(function(c){return E('option',{'value':c.name},clsOpt(c));})); + var qarCls=E('select',{'class':'cbi-input-select','id':'qar-cls','aria-label':'dscp'},this.getClasses().map(function(c){return E('option',{'value':c.name},[clsOpt(c)]);})); var qr=[['match',5,qarType],['',8,E('input',{'type':'text','class':'cbi-input-text','id':'qar-val','aria-label':_('value'),'placeholder':_('e.g. %s').format('4500')})], ['dscp',6,qarCls],['+',1,E('input',{'type':'checkbox','class':'cbi-input-checkbox','id':'qar-prio','aria-label':_('Only override the DSCP value if it is zero')})], ['',2,E('button',{'class':'cbi-button cbi-button-add','click':function(){return self.qarAdd();}},_('Add'))]]; - section.appendChild(E('div',{'class':'qa'},fold('qos-qa-rule',_('Quick Add'),[ + // Two folds side by side in look: Quick Add writes the rules file, Dynamic + // Entries the running daemon; the line under each title says which. + section.appendChild(E('div',{'class':'qa'},[fold('qos-qa-rule',_('Quick Add'),[ + sdesc(_('Adds a line to the editor below; Save & Apply writes it to the rules file, so it is kept.')), colTable(qr,[E('tr',{'class':'tr cbi-section-table-titles'},qr.map(function(c){return E('th',{'class':'th','title':c[0]},c[0]);})), E('tr',{'class':'tr cbi-section-table-row'},qr.map(function(c){return E('td',{'class':'td','data-title':c[0]},c[2]);}))]), E('div',{'class':'qa-foot'},[refBox(_('Mapping file syntax'),_('Each line has two whitespace separated fields, match and dscp. dscp can be a raw value, a codepoint like CS0, or a class name. DNS entries are compared in the order in which they are specified, using the first matching entry.'),[ @@ -1174,12 +1284,102 @@ return view.extend({ ['+',_('Only override the DSCP value if it is zero')] ]), this.classRef('qos-cls-ru')]) - ],false))); + ],false),this.dynSect()])); section.addEventListener('toggle',function(){self.fitEditor();},true); section.appendChild(this.editorSect('qos-rules-ta',RULES_PATH,ctx.rulesText,ctx.rulesStat,function(){return self.clearRules();},function(){return self.saveRules();})); return section; }, + // ubus call qosify add/remove. The entries live in the running daemon only: + // a reload keeps them, a restart drops them. dump lists them with user set, and + // one on a match from the files overrides it until it expires or is removed. + dynSect:function(){ + var self=this,d=uci.sections('qosify','defaults')[0]||{}; + var qr=[['match',4,E('select',{'class':'cbi-input-select','id':'qdy-type','aria-label':_('match')},DYN_KEYS.map(function(k){return E('option',{'value':k},k);}))], + ['',8,E('input',{'type':'text','class':'cbi-input-text','id':'qdy-val','aria-label':_('value'),'placeholder':_('e.g. %s').format('1.1.1.1')})], + ['dscp',5,E('select',{'class':'cbi-input-select','id':'qdy-dscp','aria-label':'dscp'},this.getClasses().map(function(c){return c.name;}).concat(dscpList()).map(function(o){return E('option',{'value':o},[o]);}))], + ['+',1,E('input',{'type':'checkbox','class':'cbi-input-checkbox','id':'qdy-prio','aria-label':_('Only override the DSCP value if it is zero')})], + ['timeout',4,E('input',{'type':'number','min':'1','class':'cbi-input-text','id':'qdy-tmo','aria-label':'timeout','placeholder':d.timeout||'3600'})], + ['',2,E('button',{'class':'cbi-button cbi-button-add','click':function(){return self.dynAdd();}},_('Add'))]]; + var f=fold('qos-dyn-sect',_('Dynamic Entries'),[ + sdesc(_('Added to the running qosify at once and not saved: an entry expires after its timeout (the defaults timeout when left empty) and a qosify restart drops it. One on a match from the rules file overrides it until then.')), + colTable(qr,[E('tr',{'class':'tr cbi-section-table-titles'},qr.map(function(c){return E('th',{'class':'th','title':c[0]},c[0]);})), + E('tr',{'class':'tr cbi-section-table-row'},qr.map(function(c){return E('td',{'class':'td','data-title':c[0]},c[2]);}))]), + E('div',{'id':'qos-dyn'},emP(_('Loading...')))],false); + f.addEventListener('toggle',function(){if(f.open)self.refreshDyn(true);}); + return f; + }, + + // qosify_map_set_entry() skips a value it cannot parse and still answers 0, so + // the value is checked here as the rules file is. + dynAdd:function(){ + var self=this,k=$('qdy-type').value,v=trim($('qdy-val').value),c=$('qdy-dscp').value,t=trim($('qdy-tmo').value); + var ok=k==='ipv4'?ip4Ok(v):k==='ipv6'?ip6Ok(v):k==='dns'?/^\S+$/.test(v):portOk(v); + if(!ok){notify(_('"%s" is not a value qosify accepts for %s.').format(v,k),'danger');return;} + if(t&&!(/^\d+$/.test(t)&&+t>0)){notify(_('timeout must be a whole number of seconds above 0.'),'danger');return;} + if(!c){notify(_('No classes defined. Add classes in the Config tab first.'),'danger');return;} + self.lock(); + return callQosifyAdd.apply(null,[($('qdy-prio').checked?'+':'')+c,t?+t:undefined].concat(dynArgs(k,v))).then(function(){ + $('qdy-val').value=''; + notify(_('Entry added.'),'info'); + },function(e){notify(_('Add failed: %s').format(e),'danger');}).finally(function(){self.unlock();return self.refreshDyn(true);}); + }, + + dynRemove:function(type,addr){ + var self=this; + self.lock(); + return callQosifyRemove.apply(null,dynArgs(DYN_ARG[type],addr)).then(function(){ + notify(_('Entry removed.'),'info'); + },function(e){notify(_('Remove failed: %s').format(e),'danger');}).finally(function(){self.unlock();return self.refreshDyn(true);}); + }, + + // One service list and one dump per tick, only while Rules and the fold are open. + refreshDyn:function(force){ + var self=this,box=$('qos-dyn'),f=$('qos-dyn-sect'); + if(!box||(!force&&(self.currentTab!=='ru'||(f&&!f.open)))||self._dy)return Promise.resolve(); + self._dy=true; + return callServiceList('qosify').then(isRunning,function(){return null;}).then(function(run){ + if(!run)return [run,null]; + return callQosifyDump().then(function(r){return [run,r];},function(){return [run,null];}); + }).then(function(d){self.fillDyn(box,d[0],d[1]);}).finally(function(){self._dy=false;}); + }, + + // Rebuilt when the listing changes, otherwise only the timeouts are rewritten, + // so the scroll position and a pending click survive a tick. + fillDyn:function(box,run,r){ + var self=this,cols=[['type',14],['match',38],['dscp',14],['timeout',14,1],['',10,1]],rows,sig; + if(!run||!r){ + box.qosSig=null; + dom.content(box,emP(run==null?_('rpcd is not answering for qosify, so the service state is unknown.'):!run?_('qosify is not running. Start from the Overview tab.'):_('dump did not answer.'))); + return; + } + rows=(r.entries||[]).filter(function(e){return e&&e.user&&DYN_ARG[e.type];}).slice(0,MAP_ROWS+1); + if(!rows.length){box.qosSig=null;dom.content(box,emP(_('No dynamic entries.')));return;} + sig=rows.map(function(e){return [e.type,e.addr,e.dscp,e.file].join(',');}).join('\n'); + if(box.qosSig!==sig){ + var sb=$('qos-dyn-box'),st=sb?sb.scrollTop:0,trs; + box.qosSig=sig; + box.qosCells=[]; + trs=rows.slice(0,MAP_ROWS).map(function(e){ + var a=String(e.addr),c=E('td',{'class':'td qn'}); + box.qosCells.push(c); + return E('tr',{'class':'tr'},[E('td',{'class':'td'},[e.type]), + E('td',{'class':'td','title':a},[E('code',{},[a]),e.file?' '+_('(over file)'):'']), + E('td',{'class':'td'},[e.dscp||'-']),c, + E('td',{'class':'td qn'},self.readonly?'':E('button',{'class':'cbi-button cbi-button-remove','click':function(){return self.dynRemove(e.type,a);}},_('Remove')))]); + }); + dom.content(box,[E('div',{'class':'qbox'},[colHead(cols,'qos-dyn-head'),E('div',{'id':'qos-dyn-box'},colTable(cols,trs))]), + rows.length>MAP_ROWS?emP(_('The first %d entries are shown.').format(MAP_ROWS)):'']); + $('qos-dyn-box').scrollTop=st; + } + rows.slice(0,MAP_ROWS).forEach(function(e,i){ + var t=e.timeout!=null?'%t'.format(e.timeout):_('never'),c=box.qosCells[i]; + if(c.textContent!==t)c.textContent=t; + }); + var mb=$('qos-dyn-box'),mh=$('qos-dyn-head'); + if(mb&&mh)mh.style.paddingRight=Math.max(0,mb.offsetWidth-mb.clientWidth)+'px'; + }, + tabAdvanced:function(ctx){ var self=this; function bkRow(i,path,fn,st){ @@ -1276,14 +1476,14 @@ return view.extend({ // Only what the reply contains is rendered. isCounter:function(v){return !!v&&typeof v==='object'&&(v.packets!=null||v.bytes!=null);}, // qosify_map_get_ebpf_entry_count() sums the IPv4 and IPv6 address maps only. - // 1501e09 sends none of these, so there the section stays hidden. + // One line under the class bars; 1501e09 sends none of these, so there is none. infoNodes:function(st){ - var rows=[]; - if(st.ebpf_map_entries!=null)rows.push(['ebpf_map_entries',String(st.ebpf_map_entries)]); - if(st.last_reload_time)rows.push(['last_reload_time',fmtMtime(st.last_reload_time)]); - if(st.dns_cache)rows.push(['dns_cache','size %d, hits %d, misses %d'.format(st.dns_cache.size||0,st.dns_cache.hits||0,st.dns_cache.misses||0)]); - if(!rows.length)return null; - return E('div',{'class':'qbox'},E('table',{'class':'table'},rows.map(function(r){return kvRow(E('code',{},r[0]),r[1]);}))); + var out=[]; + function add(k,v){out.push(out.length?' · ':'',E('code',{},k),' '+v);} + if(st.ebpf_map_entries!=null)add('ebpf_map_entries',String(st.ebpf_map_entries)); + if(st.last_reload_time)add('last_reload_time',fmtMtime(st.last_reload_time)); + if(st.dns_cache)add('dns_cache','size %d, hits %d, misses %d'.format(st.dns_cache.size||0,st.dns_cache.hits||0,st.dns_cache.misses||0)); + return out.length?E('p',{'class':'qos-cn-info'},out):null; }, // dump lists port, address and DNS entries, but pattern_stats is the only @@ -1309,21 +1509,32 @@ return view.extend({ this.getClasses().forEach(function(c){m[c.name]=dscpRank(self.dscpVal(c.egress||c.ingress));}); return m; }, - // DNS rows ordered by dscpRank(). Entries added over ubus (user, no file) carry - // a timeout and follow the file entries, so the MAP_ROWS cut falls on them. - mapRows:function(entries){ - var rows=[],dyn=[],cls=this.dscpRanks(),self=this,i,e,a,rk; + // DNS rows, the most traffic first by the measure, then by dscpRank(). Entries + // added over ubus (user, no file) carry a timeout and follow the file entries, + // so the MAP_ROWS cut falls on them. With one CAKE mode a row's bar takes the + // colour of the tin its dscp lands in. + mapRows:function(entries,dns){ + var rows=[],dyn=[],cls=this.dscpRanks(),self=this,f=this.cnPk?'packets':'bytes', + m=this.cakeModes(),mode=m.length===1&&MODES.indexOf(m[0])>=0?m[0]:null,i,e,a,rk,t; for(i=0;imax)max=r.n;}); (this._mapCells||[]).forEach(function(c,i){ var r=rows[i],e=(dns&&dns[r.addr])||{},t,w; t=!dns?'-':[Number(e.hits||0).toLocaleString(),Number(e.packets||0).toLocaleString(),'%1024.2mB'.format(e.bytes||0)].join(' / '); w=r.timeout!=null?'%t'.format(r.timeout):'-'; if(c.t.textContent!==t)c.t.textContent=t; if(c.w&&c.w.textContent!==w)c.w.textContent=w; + c.f.style.width=(max&&r.n?Math.max(r.n/max*100,1):0).toFixed(2)+'%'; + c.f.style.background=r.color; }); t=rows.length>MAP_ROWS?_('DNS Entries (%d of %d)').format(MAP_ROWS,rows.length):_('DNS Entries (%d)').format(rows.length); if(lg&&lg.textContent!==t)lg.textContent=t; @@ -1405,46 +1621,121 @@ return view.extend({ }).finally(function(){self._cn=false;}); }, + // The measure picks bytes or packets for the donuts, bars and shares; the + // tables keep both figures. tabCounters:function(){ + var self=this; return E('div',{'id':'qos-cn'},[ - sect(_('Traffic by Class'),[E('div',{'id':'qos-cn-msg'}),E('div',{'id':'qos-cn-bars'})]), + E('div',{'id':'qos-cn-measure'},[E('label',{'for':'qos-cn-unit'},_('Measure')), + E('select',{'id':'qos-cn-unit','class':'cbi-input-select','change':function(ev){self.cnPk=ev.target.value==='packets';self.redrawCounters();}}, + [E('option',{'value':'bytes'},_('Bytes')),E('option',{'value':'packets'},_('Packets'))])]), sect(_('Traffic by CAKE Tin'),E('div',{'id':'qos-cn-tins'},emP(_('Loading...'))),{'id':'qos-cn-tin-sect','style':'display:none'}), - sect('get_stats',E('div',{'id':'qos-cn-info'}),{'id':'qos-cn-info-sect','style':'display:none'}), - sect(_('DNS Entries'),E('div',{'id':'qos-cn-map'},emP(_('Loading...'))),{'id':'qos-cn-map-sect','style':'display:none'}) + sect(_('Traffic by Class'),[E('div',{'id':'qos-cn-msg'}),E('div',{'id':'qos-cn-bars'}), + E('p',{'id':'qos-cn-note','class':'qos-cn-info','style':'display:none'},[_('qosify reports packets only per class.')]), + E('div',{'id':'qos-cn-info'})]), + sect(_('DNS Entries'),E('div',{'id':'qos-cn-map'},emP(_('Loading...'))),{'id':'qos-cn-map-sect','style':'display:none'}), + sect(_('Traffic by DSCP'),E('div',{'id':'qos-cn-dscp'}),{'id':'qos-cn-dscp-sect','style':'display:none'}), + E('div',{'class':'cbi-page-actions'},E('button',{'class':'cbi-button cbi-button-negative','id':'qos-btn-cnreset','disabled':'', + 'click':function(){return self.resetCounters();}},_('Reset counters'))) ]); }, - // Cumulative totals since the last reload, EF first and bulk last. A - // dscp_default_* naming a class is counted against that class, so the two - // default slots would double-count and are skipped. + // A new measure draws again from the last replies, with no new calls. + redrawCounters:function(){ + this.drawBars(); + this.drawTins(); + if(this._cnDns)this.fillMap(this._mapDump,this._cnStats&&this._cnStats.dns); + }, + + // get_stats with reset zeroes the counters it reports: the classes, and on + // newer qosify the DSCP and DNS tables and the DNS cache hits. tc owns the tin + // counters, which only a new qdisc clears. + resetCounters:function(){ + var self=this; + return confirmDialog(_('Reset counters'),_('Zero qosify\'s own counters (get_stats)? The CAKE tin counters belong to tc and are kept.'),_('Reset counters'),true).then(function(go){ + if(!go)return null; + self.lock(); + return callQosifyStatsReset(true).then(function(){ + notify(_('Counters reset.'),'info'); + },function(e){notify(_('Reset failed: %s').format(e),'danger');}).finally(function(){self.unlock();return self.refreshCounters();}); + }); + }, + + // get_stats dscp: every packet by the DSCP read back from it after the + // classifier, with the tin colours and order of the class chart. A value no + // codepoint names is keyed 0x%02x (qosify_dscp_name()) and kept under that key. + dscpTotals:function(t,mode){ + var rows=[],pk=0,bytes=null,self=this,byTin=MODES.indexOf(mode)>=0; + Object.keys(t).sort().forEach(function(k,ix){ + if(!t[k]||t[k].packets==null||self.dscpVal(k)<0)return; + var v=self.dscpVal(k),tn=byTin&&v>=0?+TIN_MAP[mode].charAt(v):-1; + pk+=t[k].packets; + if(t[k].bytes!=null)bytes=(bytes||0)+t[k].bytes; + rows.push({name:k,pk:t[k].packets,bytes:t[k].bytes,tin:tn,rk:dscpRank(v), + color:!byTin?CN_COLORS[ix%CN_COLORS.length]:tn<0?CN_NONE:TIN_COLORS[mode][tn]}); + }); + rows.sort(function(a,b){return b.tin-a.tin||b.rk-a.rk||(a.name=0,rank=this.dscpRanks(),mark=this.dscpMarks(),tin={}; + var cls=st&&st.classes,k,rows=[],names=[],pk=0,bytes=null,self=this, + fold=MODES.indexOf(mode)>=0,rank=this.dscpRanks(),mark=this.dscpMarks(),tin={},def=this.defMarks(); if(fold)this.getClasses().forEach(function(c){ var v=self.dscpVal(c.egress||c.ingress); tin[c.name]=v<0?-1:+TIN_MAP[mode].charAt(v); }); + for(k in def){ + var dv=this.dscpVal(def[k]); + mark[k]=def[k]; + rank[k]=dscpRank(dv); + if(fold)tin[k]=dv<0?-1:+TIN_MAP[mode].charAt(dv); + } if(!cls){ cls={}; for(k in st)if(self.isCounter(st[k]))cls[k]=st[k]; } - for(k in cls)if(cls[k].packets!=null&&!CN_SKIP[k])names.push(k); + for(k in cls)if(cls[k].packets!=null&&(!CN_DEF[k]||def[k]))names.push(k); names.sort(); names.forEach(function(n,ix){ var v=cls[n].packets||0; - total+=v; + pk+=v; if(cls[n].bytes!=null)bytes=(bytes||0)+cls[n].bytes; var t=tin[n]!=null?tin[n]:-1; - rows.push({name:n,v:v,bytes:cls[n].bytes,tin:t, + rows.push({name:n,pk:v,bytes:cls[n].bytes,tin:t, color:!fold?CN_COLORS[ix%CN_COLORS.length]:t<0?CN_NONE:TIN_COLORS[mode][t], mark:mark[n]||'',rk:rank[n]!=null?rank[n]:-1000}); }); rows.sort(function(a,b){return b.tin-a.tin||b.rk-a.rk||(a.name=0;}); - b=/^qdisc cake /.test(l)?{mode:w.pop()}:null; + b=dir&&/^qdisc cake(_mq)? /.test(l)?{dir:dir,mode:w.pop()}:null; if(b)blk.push(b); } else if(b&&!b.names&&/^\s+(Bulk|Tin 0)\b/.test(l))b.names=l.trim().split(/\s{2,}/); @@ -1491,8 +1783,8 @@ return view.extend({ }); blk.forEach(function(b){ if(!b.names||!b.pkts)return; - var k=b.mode+'|'+b.names.join('|'),g=key[k]; - if(!g)grp.push(g=key[k]={mode:b.mode,names:b.names,pkts:[],bytes:[],drops:[],marks:[]}); + var k=b.dir+'|'+b.mode+'|'+b.names.join('|'),g=key[k]; + if(!g)grp.push(g=key[k]={dir:b.dir,mode:b.mode,names:b.names,pkts:[],bytes:[],drops:[],marks:[]}); ['pkts','bytes','drops','marks'].forEach(function(f){ if(!b[f])g[f]=null; else if(g[f])b[f].forEach(function(v,i){g[f][i]=(g[f][i]||0)+v;}); @@ -1500,105 +1792,230 @@ return view.extend({ }); return grp.map(function(g){ var c=TIN_COLORS[g.mode],n=g.names.length,rows=g.names.map(function(t,i){ - var r={name:t,v:g.pkts[i]||0,bytes:g.bytes?g.bytes[i]||0:null, + return {name:t,pk:g.pkts[i]||0,bytes:g.bytes?g.bytes[i]||0:null, drops:g.drops?g.drops[i]||0:null,marks:g.marks?g.marks[i]||0:null, color:c&&c.length===n?c[i]:CN_COLORS[i%CN_COLORS.length]}; - return r; }).reverse(); - rows.total=rows.reduce(function(t,r){return t+r.v;},0); + rows.dir=g.dir; + rows.mode=g.mode; + rows.pk=rows.reduce(function(t,r){return t+r.pk;},0); rows.bytes=g.bytes?rows.reduce(function(t,r){return t+r.bytes;},0):null; return rows; }); }, - // A compact box, header table above the rows as on DNS Entries: name, codepoint where a row has one, a - // .cbi-progressbar, then the counters under the names their source uses - // (get_stats packets/bytes, tc pkts/bytes/drops) and share, with a total row. - // Built again only when the rows or columns change; otherwise cells and bar - // widths are set in place. Length is (row/largest row)^BAR_EXP, a non-zero - // row kept at 1%. + // A compact box, header table above the rows as on DNS Entries: name, codepoint + // where a row has one, a .cbi-progressbar, then packets and bytes under the + // names get_stats uses and the share, with a total row. Bars and shares follow + // the measure. Built again only when the rows or columns change; otherwise + // cells and bar widths are set in place. Length is (row/largest row)^BAR_EXP, + // a non-zero row kept at 1%. drawChart:function(box,rows,empty,head){ var total=rows.total||0,max=0,c=box.qosChart,sig, dcol=rows.some(function(r){return r.mark;}), - bcol=rows.bytes!=null, - xcol=rows.some(function(r){return r.drops!=null;}), - pk=xcol?'pkts':'packets'; + bcol=rows.bytes!=null; if(!rows.length){box.qosChart=null;dom.content(box,emP(empty));return;} rows.forEach(function(r){if(r.v>max)max=r.v;}); - sig=[dcol,bcol,xcol].concat(rows.map(function(r){return r.name;})).join('\n'); + sig=[dcol,bcol].concat(rows.map(function(r){return r.name;})).join('\n'); function td(n,t){return E('td',{'class':n?'td qn':'td left','data-title':t});} function set(el,v){if(el&&el.textContent!==v)el.textContent=v;} function num(n){return Number(n||0).toLocaleString();} if(!c||c.sig!==sig){ var cols=[[head,20]]; if(dcol)cols.push(['dscp',10]); - cols.push(['',34],[pk,13,1]); + cols.push(['',34],['packets',13,1]); if(bcol)cols.push(['bytes',13,1]); - if(xcol)cols.push(['drops',9,1]); cols.push([_('share'),9,1]); c=box.qosChart={sig:sig,rows:[]}; var trs=rows.map(function(){ - var o={name:td(0,head),dscp:dcol?td(0,'dscp'):null,fill:E('div'),pkt:td(1,pk), - bytes:bcol?td(1,'bytes'):null,drops:xcol?td(1,'drops'):null,share:td(1,_('share'))}; + var o={name:td(0,head),dscp:dcol?td(0,'dscp'):null,fill:E('div'),pkt:td(1,'packets'), + bytes:bcol?td(1,'bytes'):null,share:td(1,_('share'))}; o.tr=E('tr',{'class':'tr'},[o.name,o.dscp||'', E('td',{'class':'td'},E('div',{'class':'cbi-progressbar'},o.fill)), - o.pkt,o.bytes||'',o.drops||'',o.share]); + o.pkt,o.bytes||'',o.share]); c.rows.push(o); return o.tr; }); - c.tot={pkt:td(1,pk),bytes:bcol?td(1,'bytes'):null,drops:xcol?td(1,'drops'):null}; + c.tot={pkt:td(1,'packets'),bytes:bcol?td(1,'bytes'):null}; trs.push(E('tr',{'class':'tr qt'},[E('td',{'class':'td left'},_('total')),dcol?E('td',{'class':'td'}):'',E('td',{'class':'td'}), - c.tot.pkt,c.tot.bytes||'',c.tot.drops||'',E('td',{'class':'td qn'},'100%')])); + c.tot.pkt,c.tot.bytes||'',E('td',{'class':'td qn'},'100%')])); dom.content(box,E('div',{'class':'qbox'},[colHead(cols),colTable(cols,trs)])); } rows.forEach(function(r,i){ var o=c.rows[i],share=total?(r.v/total)*100:0, - len=max&&r.v?Math.max(Math.pow(r.v/max,BAR_EXP)*100,1):0, - tip=r.marks!=null?'marks %d'.format(r.marks):''; + len=max&&r.v?Math.max(Math.pow(r.v/max,BAR_EXP)*100,1):0; set(o.name,r.name); if(o.name.title!==r.name)o.name.title=r.name; set(o.dscp,r.mark||''); - set(o.pkt,num(r.v)); + set(o.pkt,num(r.pk)); if(o.bytes)set(o.bytes,'%1024.2mB'.format(r.bytes||0)); - if(o.drops)set(o.drops,r.drops!=null?num(r.drops):'-'); set(o.share,fmtShare(share)); - if(o.tr.title!==tip)o.tr.title=tip; o.fill.style.width=len.toFixed(2)+'%'; o.fill.style.background=r.color; }); - set(c.tot.pkt,num(total)); + set(c.tot.pkt,num(rows.pk)); if(c.tot.bytes)set(c.tot.bytes,'%1024.2mB'.format(rows.bytes)); - if(c.tot.drops)set(c.tot.drops,num(rows.reduce(function(t,r){return t+(r.drops||0);},0))); }, + // Traffic by Class under one CAKE mode: a row per tin with its total, highest + // priority first, and under it a row per class, busiest first, its bar against + // the busiest class's. Tins and classes without traffic are left out. One + // auto-layout table, so the names and figures keep their width and the bars + // take the rest. Rebuilt only when the tins, the classes, their order or the + // unit change; otherwise figures and widths are set in place. + drawGroups:function(box,rows,mode){ + var grp=[],by={},max=0,c=box.qosChart,sig,n=TIN_COLORS[mode].length,b=rows.unit==='bytes'; + function set(el,v){if(el.textContent!==v)el.textContent=v;} + function fig(v){return b?'%1024.2mB'.format(v):Number(v).toLocaleString();} + function pct(v){return fmtShare(rows.total?v/rows.total*100:0);} + function names(l){return l.map(function(r){return r.name;}).join();} + if(!rows.length){box.qosChart=null;dom.content(box,emP(_('No per-class counters.')));return;} + rows.forEach(function(r){ + var g=by[r.tin]; + if(!r.v)return; + if(!g)grp.push(g=by[r.tin]={tin:r.tin,rows:[],v:0}); + g.rows.push(r); + g.v+=r.v; + if(r.v>max)max=r.v; + }); + if(!grp.length){box.qosChart=null;dom.content(box,emP(_('No class traffic yet.')));return;} + grp.forEach(function(g){ + g.rows.sort(function(x,y){return y.v-x.v||y.rk-x.rk||(x.name=0)this.drawGroups(box,rows,mode); + else this.drawChart(box,rows,_('No per-class counters.'),'class'); + } else{box.qosChart=null;dom.content(box,'');} + // 1501e09 (24.10, 25.12) counts packets only per class, so with Bytes picked + // the bars stay in packets and the note says why. + if(note)note.style.display=rows&&rows.length&&rows.unit!=='bytes'&&!this.cnPk?'':'none'; + // 1501e09 (24.10, 25.12) has no dscp table, so the section stays hidden there. + if(dss)dss.style.display=dt?'':'none'; + if(ds){if(dt)this.drawChart(ds,this.dscpTotals(dt,mode),_('No DSCP traffic yet.'),'dscp');else{ds.qosChart=null;dom.content(ds,'');}} }, // CAKE's own per-tin counters, per qdisc since it was created, so they need - // not add up to the class totals, which count what the classifier matched. - // A fork that fails keeps the last charts rather than collapsing the section. + // not add up to the class totals, which count what the classifier matched in + // both directions. A fork that fails keeps the last donuts rather than + // collapsing the section. fillTins:function(running,r){ - var sect=$('qos-cn-tin-sect'),box=$('qos-cn-tins'),self=this,t; + var sect=$('qos-cn-tin-sect'),box=$('qos-cn-tins'); if(!sect||!box)return; sect.style.display=running?'':'none'; if(!running)return; if(!this.readonly&&!r&&this._tinOk)return; - t=this.readonly?[]:this.cakeTins(r&&r.stdout); - this._tinOk=t.length>0; - if(!t.length){ - box.qosGroups=0; + this._tins=this.readonly?[]:this.cakeTins(r&&r.stdout); + this._tinOk=this._tins.length>0; + if(!this._tinOk){ + box.qosGroups=null; dom.content(box,emP(this.readonly?_('Requires write access.'):r&&r.stdout?_('No CAKE tin statistics.'):_('No output.'))); return; } - if(box.qosGroups!==t.length){ - box.qosGroups=t.length; - dom.content(box,t.map(function(){return E('div');})); + this.drawTins(); + }, + + // A box per direction and mode: a donut of the measure by tin with the total + // inside, beside a table of the measure, share and drops under tc's names, and + // marks as the row tooltip. A direction running two modes names each one. + // Rebuilt only when the boxes or tins change; otherwise arcs, cells and the + // unit heading are set in place. + drawTins:function(){ + var box=$('qos-cn-tins'),t=this._tins,self=this,sig; + if(!box||!t||!t.length)return; + sig=t.map(function(rows){self.measure(rows);return rows.dir+' '+rows.mode+' '+rows.map(function(r){return r.name;}).join();}).join('\n'); + if(box.qosGroups!==sig){ + box.qosGroups=sig; + dom.content(box,E('div',{'class':'qos-tins'},t.map(function(rows){ + return self.tinBox(rows,t.filter(function(x){return x.dir===rows.dir;}).length>1);}))); } - t.forEach(function(rows,i){self.drawChart(box.childNodes[i],rows,'','tin');}); + t.forEach(function(rows,i){self.tinValues(box.firstChild.childNodes[i].qosTin,rows);}); + }, + tinBox:function(rows,named){ + var svg=svgE('svg',{'viewBox':'0 0 120 120','aria-hidden':'true'}), + o={arcs:[],cells:[],tot:E('strong'),unit:E('small'),th:E('th',{'class':'th qn'}),tv:E('td',{'class':'td qn'}),td:E('td',{'class':'td qn'})}, + cols=[['tin',34],['',24],[_('share'),16],['drops',20]],trs=[],el; + svg.appendChild(svgE('circle',{'class':'qos-ring','cx':60,'cy':60,'r':44})); + rows.forEach(function(r){ + var a=svgE('circle',{'cx':60,'cy':60,'r':44,'transform':'rotate(-90 60 60)'}), + c={v:E('td',{'class':'td qn'}),s:E('td',{'class':'td qn'}),d:E('td',{'class':'td qn'})}; + a.style.stroke=r.color; + svg.appendChild(a); + o.arcs.push(a); + c.tr=E('tr',{'class':'tr'},[E('td',{'class':'td left'},[E('span',{'class':'qos-sw','style':'background:'+r.color}),r.name]),c.v,c.s,c.d]); + o.cells.push(c); + trs.push(c.tr); + }); + trs.push(E('tr',{'class':'tr qt'},[E('td',{'class':'td left'},_('total')),o.tv,E('td',{'class':'td qn'},'100%'),o.td])); + el=E('div',{'class':'qbox'},[ + E('div',{'class':'qhead qos-tin-head'},[E('div',{},[rows.dir==='egress'?_('Upload (egress)'):_('Download (ingress)'),named?' · '+rows.mode:'']), + colTable(cols,E('tr',{'class':'tr table-titles'},[E('th',{'class':'th left'},'tin'),o.th,E('th',{'class':'th qn'},_('share')),E('th',{'class':'th qn'},'drops')]))]), + E('div',{'class':'qos-tin-body'},[E('div',{'class':'qos-donut'},[svg,E('div',{},[o.tot,o.unit])]),colTable(cols,trs)])]); + el.qosTin=o; + return el; + }, + // Arcs run clockwise from the top in row order, 2 units apart when more than + // one tin has traffic; a tin with any keeps a visible sliver. + tinValues:function(o,rows){ + var C=2*Math.PI*44,tot=rows.total,acc=0,gap=rows.filter(function(r){return r.v>0;}).length>1?2:0; + function set(el,v){if(el.textContent!==v)el.textContent=v;} + function num(n){return Number(n||0).toLocaleString();} + function fig(v){return rows.unit==='bytes'?'%1024.2mB'.format(v):num(v);} + rows.forEach(function(r,i){ + var f=tot?r.v/tot:0,len=f?Math.max(f*C-gap,1.5):0,c=o.cells[i],tip=r.marks!=null?'marks %d'.format(r.marks):''; + o.arcs[i].setAttribute('stroke-dasharray',len.toFixed(2)+' '+(C-len).toFixed(2)); + o.arcs[i].setAttribute('stroke-dashoffset',(-acc).toFixed(2)); + acc+=f*C; + set(c.v,fig(r.v)); + set(c.s,fmtShare(f*100)); + set(c.d,r.drops!=null?num(r.drops):'-'); + if(c.tr.title!==tip)c.tr.title=tip; + }); + set(o.tot,fig(tot)); + set(o.unit,rows.unit); + set(o.th,rows.unit); + set(o.tv,fig(tot)); + set(o.td,rows.some(function(r){return r.drops!=null;})?num(rows.reduce(function(t,r){return t+(r.drops||0);},0)):'-'); }, // Nothing here survives the daemon: get_stats counts since the last reload and @@ -1607,9 +2024,9 @@ return view.extend({ // than leaving the last poll's numbers on screen looking live. _cnDns is reset // with it, or DNS Entries would keep a stale listing until stats return. fillCounters:function(ctx){ - var msg=$('qos-cn-msg'),info=$('qos-cn-info'),is=$('qos-cn-info-sect'), + var msg=$('qos-cn-msg'),info=$('qos-cn-info'), nodes=ctx.running&&ctx.stats?this.infoNodes(ctx.stats):null; - if(is)is.style.display=nodes?'':'none'; + if($('qos-btn-cnreset'))$('qos-btn-cnreset').disabled=this.readonly||!ctx.running||!ctx.stats; if(!ctx.running){ this._cnDns=false; if(info)dom.content(info,''); @@ -1624,13 +2041,14 @@ return view.extend({ if(info)dom.content(info,nodes||''); }, - // Rebuilt only when the listing's shape changes; otherwise only the figures - // and footer are rewritten. + // Rebuilt only when the listing's shape or order changes; otherwise only the + // figures, bars and footer are rewritten. The dump is kept for a new measure. fillMap:function(r,dns){ var box=$('qos-cn-map'),lg=$('qos-cn-map-sect-title'),sc=$('qos-cn-map-sect'); + this._mapDump=r; if(sc)sc.style.display=this._cnDns?'':'none'; if(!box||!this._cnDns)return; - var e=(r&&r.entries)||[],rows=this.mapRows(e),sig,t; + var e=(r&&r.entries)||[],rows=this.mapRows(e,dns),sig,t; if(!rows.length){ this._mapSig=this._mapCells=null; if(lg)lg.textContent=_('DNS Entries'); @@ -1661,7 +2079,9 @@ return view.extend({ }); } if(!load){walk('interface',false);walk('device',true);} - cfgLint(all).forEach(function(x){if(!load||x.hard)out.push(x.t);}); + cfgLint(all).forEach(function(x){if(!load||x.hard||x.load)out.push(x.t);}); + if(!load&&MQ_MULTI===false){var qs=ifSect(),qw=(qs&&uci.get('qosify',qs.id))||{}; + if(numBool(qw.multiqueue,false))out.push(_('%s: multiqueue is set, but %s has one queue, so qosify uses plain cake').format(qs.id,MQ_DEV));} if(!rulesLoaded(all))out.push(_('%s is not in the defaults list — qosify does not load it, so the Rules tab has no effect').format(RULES_PATH)); return out; }, @@ -1764,16 +2184,14 @@ return view.extend({ var chk=function(id){var e=$('q-'+id);return e&&e.checked;}; var bw=function(s){return trim(s).replace(/\s+/g,'');}; var bwUp=bw(get('bw_up')),bwDn=bw(get('bw_down')); - var rate=/^(unlimited|\d+(\.\d+)?((k|m|g|t)?(bit|bps)|(ki|mi|gi)(bit|bps))?)$/i; var ovh=get('overhead'),mode=get('mode'),mpu=trim(get('overhead_mpu')),vlan=get('overhead_vlan'),ob=trim(get('ovh_bytes')); var iopts=trim(get('ing_opts')),eopts=trim(get('egr_opts')),gopts=trim(get('opts')); - var safe=/^[\w\s.:-]*$/; - if(!safe.test(iopts)||!safe.test(eopts)||!safe.test(gopts)||!safe.test(bwUp)||!safe.test(bwDn)){ - notify(_('Error: invalid characters in bandwidth or options fields. Use alphanumeric, spaces, hyphens, dots, colons only.'),'danger'); + if(!TCV.test(iopts)||!TCV.test(eopts)||!TCV.test(gopts)||!TCV.test(bwUp)||!TCV.test(bwDn)){ + notify(_('Error: invalid characters in bandwidth or options fields. Use letters, digits, spaces, dots, underscores and hyphens only.'),'danger'); return; } - if(bwUp&&!rate.test(bwUp))notify(_('bandwidth_up does not look like a tc rate (100mbit, 12MBps, unlimited) — passing it through anyway').format(),'warning'); - if(bwDn&&!rate.test(bwDn))notify(_('bandwidth_down does not look like a tc rate (100mbit, 12MBps, unlimited) — passing it through anyway').format(),'warning'); + if(bwUp&&!RATE.test(bwUp))notify(_('bandwidth_up does not look like a tc rate (100mbit, 12MBps; leave empty for unlimited) — passing it through anyway'),'warning'); + if(bwDn&&!RATE.test(bwDn))notify(_('bandwidth_down does not look like a tc rate (100mbit, 12MBps; leave empty for unlimited) — passing it through anyway'),'warning'); if(mpu&&!/^\d+$/.test(mpu)){notify(_('Error: overhead_mpu must be a whole number of bytes'),'danger');return;} if(ovh==='manual'&&ob&&!/^-?\d+$/.test(ob)){notify(_('Error: overhead must be a whole number of bytes'),'danger');return;} var en=chk('enabled'),s0=ifSect(),bwAll=((s0&&uci.get('qosify',s0.id))||{}).bandwidth; @@ -1801,10 +2219,13 @@ return view.extend({ kv.overhead_encap=(ovh==='manual'&&get('overhead_encap'))?get('overhead_encap'):null; kv.overhead_mpu=mpu||null; kv.overhead_vlan=vlan&&vlan!=='0'?vlan:null; + // Hidden on a qosify.init without multiqueue, where it is left as it is. + if($('q-multiqueue'))kv.multiqueue=chk('multiqueue')?'1':'0'; var nmEl=$('q-name'); if(nmEl){ var nm=trim(nmEl.value); if(nm&&!/^[\w.@:-]+$/.test(nm)){notify(_('Error: name must be a device or interface name'),'danger');return;} + if(nm.length>NAME_MAX){notify(_('Error: qosify drops a name longer than %d characters').format(NAME_MAX),'danger');return;} kv.name=nm||null; } @@ -1837,6 +2258,11 @@ return view.extend({ confirmFresh:function(el,path){ return L.resolveDefault(fs.stat(path),null).then(function(st){ + // A failed read leaves the editor empty although the file is not; saving would replace it. + if(st&&st.size>0&&!(el.dataset.orig||'').length){ + notify(_('%s came back empty although it is %d bytes on disk — refusing to overwrite it').format(path,st.size),'danger'); + return false; + } if(!fileMoved(el,st))return true; return confirmDialog(_('File changed on disk'), _('%s has changed since this editor was loaded. Saving now discards those changes.').format(path), @@ -2156,7 +2582,7 @@ return view.extend({ for(j=0;j65534){notify(_('Port must be 1-65534 (qosify rejects 65535).'),'danger');return;} + if(n<1||n>portMax()){notify(_('Port must be 1-%d.').format(portMax()),'danger');return;} pn.push(n); } if(pn.length===2&&pn[0]>pn[1]){notify(_('Range start must not exceed end.'),'danger');return;} @@ -2256,6 +2682,7 @@ return view.extend({ self._rulesN=countRules(ctx.rulesText); self._cfgOk=(ctx.cfgRaw||'').length>10&&/(^|\n)config /.test(ctx.cfgRaw||''); if(ctx.cfgRaw===null)notify(_('%s could not be read — the editor is left empty and will not be saved over it.').format(UCI_PATH),'danger'); + if(ctx.rulesText===null&&ctx.rulesStat&&ctx.rulesStat.size>0)notify(_('%s could not be read — the editor is left empty and will not be saved over it.').format(RULES_PATH),'danger'); } ctx.rulesN=self._rulesN; ctx.cfgOk=self._cfgOk; @@ -2288,7 +2715,8 @@ return view.extend({ var self=this; self.lock(); uci.unload('qosify'); - return uci.load('qosify').then(function(){ + // uci.load() rejects when the config is missing; the service table must still refresh. + return uci.load('qosify').catch(function(){}).then(function(){ return self.gatherCtx(false); }).then(function(ctx){ self.updateSvcTable(ctx); @@ -2305,7 +2733,7 @@ return view.extend({ refreshOverviewFull:function(){ var self=this; - return self.refreshOverview().then(function(ctx){ + return self.refreshOverview().then(function(ctx){return mqProbe().then(function(){return ctx;});}).then(function(ctx){ self.fillSect('qos-svc-sect',self.buildSvcSect(ctx)); self.fillSect('qos-qs-sect',self.buildQsSect(ctx)); return ctx; diff --git a/luci-app-qosify/htdocs/luci-static/resources/view/qosify/qosify.css b/luci-app-qosify/htdocs/luci-static/resources/view/qosify/qosify.css index 95a7ac8d8..154f680dd 100644 --- a/luci-app-qosify/htdocs/luci-static/resources/view/qosify/qosify.css +++ b/luci-app-qosify/htdocs/luci-static/resources/view/qosify/qosify.css @@ -9,21 +9,19 @@ --qos-hd: var(--background-color-low, rgba(128, 128, 128, .06)); --qos-r: 4px; --qos-gap: .75em; - --qos-pad: .45em 1em; + /* The table cell padding; every box and row uses it, so all tabs line up. */ + --qos-pad: .45em .75em; } -/* The service bar sits outside any section, so it gets its own box. Flex - items ignore float, so the theme's page-actions floats cannot reorder the - buttons and they stay in declared order whatever their colour class. */ +/* The service bar is the theme's own .cbi-page-actions, sized and drawn as + the quick settings Save & Apply bar above it. Flex items ignore float, so the + theme's page-actions floats cannot reorder the buttons and they stay in + declared order whatever their colour class. */ #qos-svc-btns { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .4em; - margin: 0 0 var(--qos-gap); - padding: var(--qos-pad); - border: 1px solid var(--qos-bd); - border-radius: var(--qos-r); } #qos-svc-btns::after { @@ -46,7 +44,7 @@ } #qos-app .table .td { - padding: .45em .75em; + padding: var(--qos-pad); vertical-align: middle; border-top-color: var(--qos-ln); } @@ -101,12 +99,6 @@ padding: 0; } -/* The fold box sits just clear of its heading; the theme's h3 line-height - would otherwise double its depth. */ -#qos-app .qa > details.cbi-section { - padding: .4em .75em; -} - #qos-app .qos-box > h3 { margin: 0 0 var(--qos-gap); } @@ -162,6 +154,16 @@ padding: .15em .3em; } +/* The Dynamic Entries list is a table, not a form row: full cell padding. */ +#qos-app .qa #qos-dyn .th, +#qos-app .qa #qos-dyn .td { + padding: var(--qos-pad); +} + +#qos-app .qa .cbi-section-descr { + margin: 0 0 .4em; +} + #qos-app .qa .th { font-size: .85em; overflow: hidden; @@ -197,7 +199,7 @@ } #qos-app .qa details:not(.cbi-section) .td { - padding: .2em .5em; + padding: var(--qos-pad); border-top: 1px solid var(--qos-ln); } @@ -286,7 +288,8 @@ } /* A header table above a boxed body; bars and figures are updated in place. */ -#qos-cn .qbox { +#qos-cn .qbox, +#qos-dyn .qbox { overflow: hidden; border: 1px solid var(--qos-bd); border-radius: var(--qos-r); @@ -296,19 +299,23 @@ margin-top: var(--qos-gap); } -#qos-cn .qhead { +#qos-cn .qhead, +#qos-dyn .qhead { background: var(--qos-hd); border-bottom: 1px solid var(--qos-ln); } #qos-cn .qhead .th, -#qos-cn .qbox .td { +#qos-cn .qbox .td, +#qos-dyn .qhead .th, +#qos-dyn .qbox .td { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } -#qos-cn .qbox .tr:not(.table-titles):hover .td { +#qos-cn .qbox .tr:not(.table-titles):hover .td, +#qos-dyn .qbox .tr:not(.table-titles):hover .td { background: var(--qos-hd); } @@ -319,7 +326,8 @@ border-radius: var(--qos-r); } -#qos-cn .qn { +#qos-cn .qn, +#qos-dyn .qn { width: 1%; text-align: right; white-space: nowrap; @@ -330,50 +338,229 @@ font-weight: 600; } -#qos-cn-map-box { +/* The measure sits above the sections, at the right, as a plain select. */ +#qos-cn-measure { + display: flex; + justify-content: flex-end; + align-items: center; + gap: .5em; +} + +#qos-cn-measure select { + width: auto; +} + +/* Traffic by CAKE Tin: a box per direction, side by side while they fit. The + banner holds the direction over the donut and the column titles over the + table; in a narrow box both wrap, so the titles stay above the table and the + donut drops below it. */ +#qos-cn .qos-tins { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(min(100%, 26em), 1fr)); + gap: var(--qos-gap); +} + +#qos-cn .qos-tins .qbox { + min-width: 0; +} + +#qos-cn .qos-tins .qbox + .qbox { + margin-top: 0; +} + +#qos-cn .qos-tin-head, +#qos-cn .qos-tin-body { + display: flex; + flex-wrap: wrap; + align-items: center; +} + +#qos-cn .qos-tin-head { + column-gap: var(--qos-gap); +} + +/* As wide as the donut and its margin, so the titles sit over their columns. */ +#qos-cn .qos-tin-head > div { + flex: none; + box-sizing: border-box; + width: calc(9.5em + var(--qos-gap)); + padding: var(--qos-pad); + padding-right: 0; +} + +#qos-cn .qos-tin-body { + flex-wrap: wrap-reverse; + justify-content: center; +} + +#qos-cn .qos-tin-head .table, +#qos-cn .qos-tin-body .table { + flex: 1 1 18em; + margin: 0; +} + +/* Arcs are stroked circles over a ring that shows where a tin has none. */ +#qos-cn .qos-donut { + position: relative; + flex: none; + width: 9.5em; + height: 9.5em; + margin: var(--qos-gap); +} + +#qos-cn .qos-donut svg { + display: block; + width: 100%; + height: 100%; + fill: none; + stroke-width: 15; +} + +#qos-cn .qos-donut .qos-ring { + stroke: var(--qos-ln); +} + +#qos-cn .qos-donut div { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-size: .9em; + font-variant-numeric: tabular-nums; + white-space: nowrap; +} + +/* Traffic by Class under one mode: tin rows are shaded as the header is. Class + rows sit under the tin name, by the cell padding plus a swatch and its margin, + with their codepoints muted. The bars' column takes what the names and figures + leave. */ +#qos-cn .qos-bar { + width: 100%; + min-width: 4em; +} + +#qos-cn .qbox .qos-grp .td { + background: var(--qos-hd); +} + +/* Footstrap pins a table's titles under its top bar while the page scrolls. + In this clipped box they would pin to the box and cover the first rows. */ +#qos-cn .qos-cls .th { + position: static; +} + +#qos-cn .qos-cls .qos-in > .td:first-child { + padding-left: 1.85em; +} + +#qos-cn .qos-mk { + opacity: .75; +} + +#qos-cn .qos-sw { + display: inline-block; + width: .7em; + height: .7em; + margin-right: .4em; + border-radius: 2px; +} + +#qos-cn .qos-cn-info { + margin: var(--qos-gap) 0 0; + font-size: 90%; +} + +#qos-cn-map-box, +#qos-dyn-box { height: 24rem; min-height: 6rem; overflow-y: scroll; resize: vertical; } -/* Quick settings: one inner box per tab, rows split by the same line as the - tables, and the control then its hint on one line so every hint starts in - the same column. */ +/* A handful of dynamic entries is usual, so the box fits its rows up to the same height. */ +#qos-dyn-box { + height: auto; + min-height: 0; + max-height: 24rem; + overflow-y: auto; +} + +/* Quick settings: unboxed, like the Service table above it, with its rows laid + out as that table's: the same cell padding, a 33% label column in the theme's + normal weight and a line above every row. The control then its hint on one + line, so every hint starts in the same column. */ +/* Clear of the Service table above, which ends without a bar of its own. */ +#qos-qs-sect { + --qos-ctl: 2.4em; + margin-top: 2em; +} + +/* Every row is as deep as one holding an input box, checkbox rows included, and + the box fits its rows, with no blank space under the last one. */ #qos-app .qs-box { min-width: 0; - min-height: 13em; - padding: .3em 1.5em; - border: 1px solid var(--qos-bd); - border-radius: var(--qos-r); + padding: 0; } +/* The theme wraps .cbi-value; a row here never wraps on a wide screen, and the + field takes what the label leaves (basis 0), not its content's width, so a + long hint cannot push the field onto a line of its own. */ #qos-qs-sect .cbi-value { - align-items: flex-start; + flex-wrap: nowrap; + align-items: center; margin: 0; - padding: .25em 0; -} - -#qos-qs-sect .cbi-value + .cbi-value { + padding: 0; border-top: 1px solid var(--qos-ln); } +/* No line above a tab's first row: the tab bar already draws one there. */ +#qos-qs-sect .qs-box > .cbi-value:first-child { + border-top: 0; +} + #qos-qs-sect .cbi-value label.cbi-value-title { - flex: 0 0 16em; - padding-top: 0; - line-height: 30px; - font-weight: 600; + flex: 0 0 33%; + box-sizing: border-box; + padding: var(--qos-pad); + text-align: left; + font-weight: normal; } #qos-qs-sect .cbi-value-field { display: grid; - grid-template-columns: minmax(0, 18em) minmax(0, 1fr); + grid-template-columns: minmax(0, 28em) minmax(0, 1fr); align-items: center; gap: .3em 1.5em; - flex: 1 1 auto; - margin-left: 1.5em; + flex: 1 1 0; + box-sizing: border-box; + min-height: calc(var(--qos-ctl) + .9em); + margin: 0; + padding: var(--qos-pad); min-width: 0; - line-height: 30px; +} + +/* The tab panes share one grid cell, so the box is as deep as the tallest tab + and switching tabs never moves the page; a shorter tab leaves a gap under its + last row. A hidden pane keeps its size but cannot be seen, clicked or focused. */ +#qos-qs-sect .qs-panes { + display: grid; +} + +#qos-qs-sect .qs-panes > [data-tab] { + grid-area: 1 / 1; + height: auto; + max-height: none; + overflow: visible; +} + +#qos-qs-sect .qs-panes > [data-tab]:not([data-tab-active="true"]) { + visibility: hidden; } #qos-qs-sect .cbi-value-description { @@ -398,6 +585,7 @@ #qos-qs-sect .cbi-value-field input[type=text], #qos-qs-sect .cbi-value-field input[type=number], #qos-qs-sect .cbi-value-field select { + height: var(--qos-ctl); max-width: 100%; box-sizing: border-box; } @@ -424,10 +612,6 @@ width: 18em; } -#qos-qs-sect .qs-wide .cbi-value-field { - grid-template-columns: minmax(0, 28em) minmax(0, 1fr); -} - #qos-qs-sect [data-q$=opts] { width: 100%; } @@ -439,15 +623,28 @@ } #qos-qs-sect .cbi-value label.cbi-value-title { - line-height: 1.5; + padding-bottom: 0; } #qos-qs-sect .cbi-value-field { grid-template-columns: minmax(0, 1fr); - margin-left: 0; } #qos-qs-sect .cbi-value-field > * { grid-column: 1; } + + /* Traffic by Class leaves its bars out and lets a codepoint, or a class name + too long for the line, wrap, so the figures keep their width. */ + #qos-cn .qos-bar { + display: none; + } + + #qos-cn .qos-cls .td:first-child { + white-space: normal; + } + + #qos-cn .qos-cls code { + overflow-wrap: anywhere; + } } diff --git a/luci-app-qosify/htdocs/luci-static/resources/view/status/include/75_qosify.js b/luci-app-qosify/htdocs/luci-static/resources/view/status/include/75_qosify.js new file mode 100644 index 000000000..d041b5841 --- /dev/null +++ b/luci-app-qosify/htdocs/luci-static/resources/view/status/include/75_qosify.js @@ -0,0 +1,86 @@ +// SPDX-License-Identifier: MIT +'use strict'; +'require baseclass'; +'require fs'; +'require rpc'; +'require uci'; + +// Status > Overview card: the Service rows of the app's Overview tab, with the +// shaped rates. Three ubus calls a tick and the qosify config, which uci.load() +// reads once per page, so nothing forks. index.js stops drawing a card whose +// load() rejects, so each call settles to null, shown as unknown. +var callServiceList=rpc.declare({object:'service',method:'list',params:['name'],expect:{'':{}},reject:true}); +// skip_running_check keeps rc.list from forking `qosify running`. +var callRcList=rpc.declare({object:'rc',method:'list',params:['name','skip_running_check'],expect:{'':{}},reject:true}); +var callQosifyStatus=rpc.declare({object:'qosify',method:'status',expect:{'':{}},reject:true}); +// Bootstrap and OpenWrt 2020 have no .label.danger; the app's own rule from +// qosify.css. Footstrap drops the row lines of a two-cell table on this page: +// a rule outside its layers draws them, and :where() keeps it under any theme's +// .table .td, so bootstrap and its phone layout keep their own lines. +var STYLE='.qos-ov .label.danger{background-color:var(--error-color-high,#e8210d);color:var(--on-error-color,#fff)}'+ + ':where(.qos-ov .tr+.tr)>.td{border-top:1px solid var(--border-color-medium,rgba(128,128,128,.35))}'; + +function nul(){return null;} +function tx(v){return typeof v==='string'?[v]:v;} +function badge(kind,t){return E('span',{'class':'label '+kind},tx(t));} +function unk(){return badge('warning',_('Unknown'));} +function kvRow(k,v){return E('tr',{'class':'tr'},[E('td',{'class':'td left','width':'33%'},tx(k)),E('td',{'class':'td left'},tx(v))]);} +function isRunning(r){try{var i=r.qosify.instances;for(var k in i)if(i[k].running)return true;}catch(e){}return false;} +function runPid(r){try{var i=r.qosify.instances;for(var k in i)if(i[k].running&&i[k].pid)return i[k].pid;}catch(e){}return 0;} +// The status keys are option name; qosify.init sends no disabled section +// (config_get_bool) and falls back to bandwidth for an unset direction. A +// shaped direction without one runs CAKE unlimited. +function ifSect(type,name){ + return uci.sections('qosify',type).filter(function(s){return s.name===name&&!/^(1|on|true|yes|enabled)$/.test(s.disabled);})[0]||null; +} +function rate(s,on,k){return !on?_('no'):!s?_('yes'):s['bandwidth_'+k]||s.bandwidth||_('unlimited');} + +return baseclass.extend({ + title:_('qosify'), + + load:function(){ + var self=this; + return Promise.all([ + callServiceList('qosify').catch(nul), + callRcList('qosify',true).catch(nul), + callQosifyStatus().catch(nul), + uci.load('qosify').catch(nul) + ]).then(function(d){return self.uptime(d[0]).then(function(u){d.push(u);return d;});}); + }, + + // As on the Overview tab: service list carries the pid but no start time, so + // starttime (field 22 of /proc//stat, USER_HZ ticks since boot) is set + // against /proc/uptime, once per pid; later ticks add performance.now(). + uptime:function(r){ + var self=this,pid=runPid(r); + if(!pid){self._up=null;return Promise.resolve(null);} + if(self._up&&self._up.pid===pid)return Promise.resolve(self._up.up+(performance.now()-self._up.t)/1000); + return Promise.all([fs.read('/proc/'+pid+'/stat'),fs.read('/proc/uptime')]).then(function(d){ + var st=String(d[0]),f=st.slice(st.lastIndexOf(')')+2).split(' '),up=parseFloat(d[1])-f[19]/100; + if(!(up>=0))return null; + self._up={pid:pid,up:up,t:performance.now()}; + return up; + }).catch(nul); + }, + + // The Overview tab's rows and wording, each interface with its rates in place + // of yes. The qosify object goes with the daemon, so an unanswered status + // call only reads unknown while it runs. + render:function(d){ + var run=d[0]!==null?isRunning(d[0]):null,rc=d[1]&&d[1].qosify,st=d[2]||(run===false?{}:null),n=0,ifs=[]; + if(st)['interfaces','devices'].forEach(function(g){ + for(var k in st[g]){ + var e=st[g][k]||{},s=d[3]!==null?ifSect(g==='devices'?'device':'interface',k):null; + if(e.active)n++; + ifs.push(kvRow((g==='devices'?_('device %s'):_('interface %s')).format(k),[badge(e.active?'success':'danger',e.active?_('active'):_('inactive')),' ', + _('device: %s, ingress: %s, egress: %s').format(e.ifname||'-',rate(s,e.ingress,'down'),rate(s,e.egress,'up'))])); + } + }); + return E([E('style',{},[STYLE]),E('table',{'class':'table qos-ov'},[ + kvRow(_('Status'),run==null?unk():run&&!st?badge('warning',_('Running — Shaping Unknown')):run&&n?badge('success',_('Running & Shaping')): + run?badge('warning',_('Running — Not Shaping')):badge('danger',_('Not Running'))), + kvRow(_('Uptime'),d[4]!=null?'%t'.format(Math.floor(d[4])):'-'), + kvRow(_('Autostart'),d[1]===null?unk():rc&&rc.enabled?badge('success',_('Enabled')):badge('danger',_('Disabled'))) + ].concat(ifs))]); + } +}); diff --git a/luci-app-qosify/po/cs/qosify.po b/luci-app-qosify/po/cs/qosify.po index f20a587a3..496685e95 100644 --- a/luci-app-qosify/po/cs/qosify.po +++ b/luci-app-qosify/po/cs/qosify.po @@ -3,43 +3,68 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Language: cs\n" "Content-Transfer-Encoding: 8bit\n" -"Last-Translator: Hannu Nyman \n" +"Last-Translator: Martin Olmer \n" "Language-Team: Czech \n" "Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n" -"PO-Revision-Date: 2026-09-29 18:07+0000\n" -"X-Generator: Weblate 2026.10.dev0\n" +"PO-Revision-Date: 2026-11-04 21:09+0000\n" +"X-Generator: Weblate 2026.11.1.dev0\n" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1255 +msgid "\"%s\" is not a value qosify accepts for %s." +msgstr "„%s“ není hodnota, kterou qosify přijímá pro %s." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:483 +msgid "" +"%d class and alias sections — qosify has %d class slots, so %s and the rules " +"using them are dropped" +msgstr "" +"sekce %d třída a alternativní název – qosify má %d slotů tříd, takže %s a " +"pravidla, která je používají, jsou zahozena" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "%d interface" msgid_plural "%d interfaces" msgstr[0] "%d rozhraní" msgstr[1] "%d rozhraní" msgstr[2] "%d rozhraní" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:986 msgid "%d rule" msgid_plural "%d rules" msgstr[0] "%d pravidlo" msgstr[1] "%d pravidla" msgstr[2] "%d pravidel" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:942 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:985 msgid "%d section" msgid_plural "%d sections" msgstr[0] "%d sekce" msgstr[1] "%d sekce" msgstr[2] "%d sekcí" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:294 +msgid "" +"%s \"%s\" is not a tc rate — tc refuses the qdisc, so nothing is shaped " +"although qosify reports the section active" +msgstr "" +"%s „%s“ není tc četnost – tc odmítne qdisc, takže nic není přiškrcováno, i " +"když qosify hlásí sekci jako aktivní" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:298 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:301 +msgid "%s \"%s\" is not a whole number — tc refuses the qdisc" +msgstr "%s „%s“ není celé číslo – tc odmítne qdisc" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 msgid "%s (current)" msgstr "%s (stávající)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 msgid "%s (from bandwidth)" msgstr "%s (z šířky pásma)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2085 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2288 msgid "" "%s and %s are replaced with the templates shipped by the qosify package, and " "shaping is left disabled." @@ -47,26 +72,26 @@ msgstr "" "%s a %s jsou nahrazeny šablonami dodávanými s balíčkem qosify a omezování " "rychlosti je ponecháno vypnuté." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1809 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2012 msgid "" "%s came back empty although it is %d bytes on disk — refusing to overwrite it" msgstr "" "%s přišlo nazpět prázdné i když na disku má %d bajtů – odmítá se ho přepsat" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2346 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2549 msgid "%s changed on disk — your unsaved edits are still in the editor." msgstr "" "%s změněno na disku – vámi provedené neuložené úpravy se ale pořád ještě " "nacházejí v editoru." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2249 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2452 msgid "" "%s could not be read — the editor is left empty and will not be saved over " "it." msgstr "" "%s nebylo možné číst – editor je ponechán prázdný a nebude uložen přes něj." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1833 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2036 msgid "" "%s has changed since this editor was loaded. Saving now discards those " "changes." @@ -74,7 +99,7 @@ msgstr "" "%s má změny od okamžiku, kdy byl tento editor načten. Uložení nyní tamty " "změny zahodí." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1864 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2067 msgid "" "%s is %d bytes on disk but was never loaded into the editor — refusing to " "truncate it. Reload the page first." @@ -82,11 +107,11 @@ msgstr "" "%s má na disku %d bajtů, ale nikdy nebylo načteno do editoru – odmítá se " "provést zkrácení. Nejprve stránku znovu načtěte." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:392 msgid "%s is a list in this section — edit %s directly" msgstr "%s je seznam v této sekci – upravte %s přímo" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1656 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1859 msgid "" "%s is not in the defaults list — qosify does not load it, so the Rules tab " "has no effect" @@ -94,7 +119,7 @@ msgstr "" "%s není na seznamu výchozích – qosify ho nenačte, takže záložka Pravidla " "nemá žádný efekt" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:286 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:314 msgid "" "%s is set to \"%s\" — qosify converts it with atoi(), so anything but a non-" "zero number means off" @@ -102,43 +127,43 @@ msgstr "" "%s je nastavené na „%s“ – qosify ho převede pomocí atoi(), takže cokoli " "kromě nenulového čísla znamená vypnuto" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:750 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:793 msgid "%s quick settings" msgstr "%s rychlá nastavení" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2069 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2272 msgid "%s uploaded, qosify reloaded." msgstr "%s nahráno – qosify znovunačteno." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2103 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2306 msgid "%s was not written: %s" msgstr "%s nebylo zapsáno: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2106 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2309 msgid "%s was reset but %s was not written: %s" msgstr "%s bylo resetováno, ale %s nebylo zapsáno: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1945 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2148 msgid "%s, applied (QoS disabled)." msgstr "%s, uplatněno (QoS zakázáno)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1950 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 msgid "" "%s, applied — qosify did not answer on ubus, so shaping could not be checked." msgstr "" "%s, uplatněno – qosify neodpovědělo na ubus, takže omezování provozu nebylo " "možné zkontrolovat." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1947 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 msgid "%s, applied." msgstr "%s, uplatněno." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:459 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:468 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:500 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:509 msgid "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify ignores it" msgstr "%s: %s „%s“ není třída, kódový bod nebo 0-63 – qosify ho ignoruje" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:456 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:497 msgid "" "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify rejects the whole " "config and interface changes are not applied" @@ -146,7 +171,7 @@ msgstr "" "%s: %s „%s“ není třída, kódový bod nebo 0-63 – qosify odmítne celé nastavení " "a změny pro rozhraní nejsou uplatněny" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:465 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:506 msgid "" "%s: %s \"%s\" is not a codepoint or 0-63 — qosify drops this class and the " "rules using it" @@ -154,7 +179,15 @@ msgstr "" "%s: %s „%s“ není kódový bod nebo 0-63 – qosify zahodí tuto třídu a pravidla, " "které ji používají" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:448 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:488 +msgid "" +"%s: %s \"%s\" is not a whole number — qosify.init passes it through atoll(), " +"which keeps only the leading digits" +msgstr "" +"%s: %s „%s“ není celé číslo – qosify.init ho předá skrze atoll(), která " +"ponechá pouze úvodní číslice před desetinnou čárkou" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:486 msgid "" "%s: %s cannot be checked — write it as one plain or fully quoted value, with " "no backslash" @@ -162,7 +195,7 @@ msgstr "" "%s: „%s“ nebylo možné zkontrolovat – zapište to jako jednu holou nebo plně " "citovanou hodnotu, bez jakýchkoli zpětných lomítek" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:451 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:492 msgid "" "%s: %s contains shell metacharacters — qosify runs the tc command with sh -c " "as root, so they would break it or be executed" @@ -170,31 +203,63 @@ msgstr "" "%s: %s obsahuje metaznaky shellu – qosify spustí příkaz tc s sh - c jako " "root, takže by to rozbili nebo budou vykonány" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "(alias)" msgstr "(alternativní název)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1304 +msgid "(over file)" +msgstr "(přes soubor)" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 msgid "(this qosify build has no NQB)" msgstr "(toto sestavení qosify nemá žádné NQB)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2185 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2388 msgid "A config defaults section already exists." msgstr "Sekce výchozích nastavení už existuje." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2183 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2386 msgid "A section name may only contain letters, digits and underscores." msgstr "Název sekce může obsahovat pouze písmena, číslice a podtržítka." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:856 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Action" +msgstr "Akce" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:899 msgid "Active" msgstr "Aktivní" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:957 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1162 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1000 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1206 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1240 msgid "Add" msgstr "Přidat" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1262 +msgid "Add failed: %s" +msgstr "Přidání se nezdařilo: %s" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1242 +msgid "" +"Added to the running qosify at once and not saved: an entry expires after " +"its timeout (the defaults timeout when left empty) and a qosify restart " +"drops it. One on a match from the rules file overrides it until then." +msgstr "" +"Jednorázově přidáno do spuštěného qosify a neuloženo: platnost položky " +"skončí po jejím časovém limit (pokud nevyplněno, bude použit výchozí) a " +"restart qosify ji zahodí. Takové na shodě ze souboru pravidel ho do té doby " +"přebíjí." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +msgid "" +"Adds a line to the editor below; Save & Apply writes it to the rules file, " +"so it is kept." +msgstr "" +"Přidá řádek do níže uvedeného editoru; „Uložit a použít“ ho zapíše do " +"souboru s pravidly, takže je ponechán." + #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:85 msgid "Adds atm, noatm or ptm when overhead_type is manual" msgstr "Pokud overhead_type je manual (ruční), přidá atm, noatm nebo ptm" @@ -211,32 +276,32 @@ msgstr "Přidá mpu " msgid "Adds overhead when overhead_type is manual" msgstr "Když overhead_type je manual (ruční), přidá overhead " -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:608 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:649 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:780 msgid "Advanced" msgstr "Pokročilé" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "An empty %s stops all shaping. Continue?" msgstr "Prázdné %s zastaví veškeré omezování provozu. Pokračovat?" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:726 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:769 msgid "Automatic download rate" msgstr "Automatická rychlost stahování" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:936 msgid "Autostart" msgstr "Automatické spouštění" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:967 msgid "Autostart state unknown — rpcd did not answer" msgstr "Stav automatického spouštění neznámý – rpcd neodpovědělo" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 msgid "Available" msgstr "K dispozici" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1196 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1334 msgid "Backup" msgstr "Záloha" @@ -248,12 +313,12 @@ msgstr "" "Šířka pásma pro oba směry, kde bandwitdth_up nebo bandwidth_down není " "nastaveno" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:716 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:759 msgid "Basic" msgstr "Základní" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:224 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2029 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:240 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2232 msgid "Binary content rejected" msgstr "Binární obsah odmítnut" @@ -265,7 +330,7 @@ msgstr "CAKE diffserv režim" msgid "CAKE egress options" msgstr "CAKE egress předvolby" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "CAKE egress options, space separated." msgstr "CAKE egress předvolby (oddělované mezerou)." @@ -273,7 +338,7 @@ msgstr "CAKE egress předvolby (oddělované mezerou)." msgid "CAKE ingress options" msgstr "CAKE ingress předvolby" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "CAKE ingress options, space separated." msgstr "CAKE ingress předvolby (oddělované mezerou)." @@ -289,104 +354,108 @@ msgstr "" "CAKE overhead klíčová slova přidaná k předvolbám; manual použije overhead a " "overhead_encap" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "CAKE overhead keyword. Use none if unsure." msgstr "CAKE overhead klíčové slovo. Pokud nevíte, použijte none." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:564 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 msgid "Cancel" msgstr "Zrušit" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1356 msgid "Check Devices" msgstr "Zkontrolovat zařízení" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1330 msgid "Choose file…" msgstr "Zvolte soubor…" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1114 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1158 msgid "Classes" msgstr "Třídy" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1940 msgid "Cleanup exited with code %d" msgstr "Vyčistit ukončené s kódem %d" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1190 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear" msgstr "Vyčistit" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2072 msgid "Clear configuration" msgstr "Vyčistit nastavení" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear editor" msgstr "Vyčistit editor" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to disable autostart" msgstr "Kliknutím zakážete automatické spouštění" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to enable autostart" msgstr "Kliknutím povolíte automatické spouštění" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 msgid "Common CAKE options" msgstr "Běžné CAKE předvolby" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:604 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:645 msgid "Config" msgstr "Nastavení" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared, qosify stopped." msgstr "Nastavení vyčištěno, qosify zastaveno." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared." msgstr "Nastavení vyčištěno." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1915 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2118 msgid "Config saved" msgstr "Nastavení uloženo" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2042 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2050 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2253 msgid "Config: %s" msgstr "Nastavení: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:566 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 msgid "Continue" msgstr "Pokračovat" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1391 msgid "Could not read %s: %s" msgstr "Nebylo možné číst %s: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:648 msgid "Counters" msgstr "Čítače" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1627 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1567 +msgid "Counters reset." +msgstr "Vynulování čítačů." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1830 msgid "DNS Entries" msgstr "DNS položky" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d of %d)" msgstr "DNS položky (%d z %d)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d)" msgstr "DNS položky (%d)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "" "DSCP codepoints: CS0–CS7, AF11–AF43, EF, VA, NQB, LE, DF (NQB needs qosify " "from June 2026; 24.10 and 25.12 do not have it). A raw value from 0 to 63 is " @@ -423,7 +492,7 @@ msgstr "DSCP hodnota pro ingress a egress, kde nejsou nastavené" msgid "DSCP value for priority-marked packets" msgstr "DSCP hodnota pro pakety označené jako prioritní" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "DSCP values" msgstr "DSCP hodnoty" @@ -439,12 +508,12 @@ msgstr "Výchozí DSCP hodnota pro UDP pakety" msgid "Default timeout for dynamically added entries" msgstr "Výchozí časový limit pro dynamicky přidané položky" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1358 msgid "Defaults" msgstr "Výchozí" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 msgid "" "Defaults qosify applies when a key is absent — interface: mode diffserv4, " "ingress 1, egress 1, nat 1, host_isolate 1, autorate_ingress 0. device: " @@ -458,21 +527,25 @@ msgstr "" "dscp_prio/dscp_bulk/dscp_icmp unset, bulk_trigger_pps/bulk_trigger_timeout/" "prio_max_avg_pkt_len 0 (zakázáno)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Description" +msgstr "Popis" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Device" msgstr "Zařízení" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1914 msgid "Device check done." msgstr "Kontrola zařízení dokončena." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1714 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1917 msgid "Device check failed: %s" msgstr "Kontrola zařízení se nezdařila: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:859 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Disabled" msgstr "Zakázáno" @@ -480,30 +553,34 @@ msgstr "Zakázáno" msgid "Downlink bandwidth (same format as tc)" msgstr "Šířka downlink pásma (stejný formát jako tc)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Downlink bandwidth, same format as tc. Set just below line speed." msgstr "" "Šířka downlink pásma, stejný formát jako tc. Nastavte kousek pod rychlost " "linky." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1247 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1393 msgid "Download" msgstr "Stáhnout" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Download bandwidth" msgstr "Šířka pásma stahování" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:767 msgid "Download shaping" msgstr "Omezování rychlosti stahování" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1197 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1335 msgid "Download the current files from the router." msgstr "Stáhnout si stávající soubory ze směrovače." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1241 +msgid "Dynamic Entries" +msgstr "Dynamické položky" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "" "Each line has two whitespace separated fields, match and dscp. dscp can be a " "raw value, a codepoint like CS0, or a class name. DNS entries are compared " @@ -514,22 +591,22 @@ msgstr "" "třídy. DNS položky jsou porovnávány v pořadí ve kterém jsou uvedeny, pomocí " "první odpovídající položky." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "Egress CAKE options" msgstr "Egress CAKE předvolby" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2223 msgid "Empty file" msgstr "Vyprázdnit soubor" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 msgid "" "Empty the config editor? Nothing is written until you click Save & Apply." msgstr "" "Vyprázdnit editor nastavení? Nic není zapsáno dokud nekliknete na „Uložit a " "použít“." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "" "Empty the rules editor? Nothing is written until you click Save & Apply." msgstr "" @@ -556,54 +633,62 @@ msgstr "Zapnout omezování rychlosti egress" msgid "Enable ingress shaping" msgstr "Zapnout omezování rychlosti ingress" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Enabled" msgstr "Povoleno" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:858 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 msgid "Enabled — Not Running" msgstr "Povoleno – nespuštěné" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:857 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 msgid "Enabled — Not Shaping (check config)" msgstr "Povoleno – neomezující provoz (zkontrolujte nastavení)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Encapsulation overhead" msgstr "Režie zapouzdřování" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2182 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2385 msgid "Enter a section name." msgstr "Zadejte název sekce." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2156 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2359 msgid "Enter a single IPv4 address (qosify does not accept CIDR)." msgstr "Zadejte jedinou IPv4 adresu (qosify nepřijímá CIDR)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2159 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2362 msgid "" "Enter a single IPv6 address (qosify does not accept CIDR or a %zone suffix)." msgstr "Zadejte jednu IPv6 adresu (qosify nepřijímá CIDR nebo příponu %zone)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2141 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2344 msgid "Enter a value." msgstr "Zadejte hodnotu." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Entries" msgstr "Položky" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1848 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1961 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1261 +msgid "Entry added." +msgstr "Položka přidána." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1269 +msgid "Entry removed." +msgstr "Položka odebrána." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2051 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2164 msgid "Error: %s" msgstr "Chyba: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1845 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2048 msgid "Error: No valid config stanzas found." msgstr "Chyba: nenalezeny žádné platné sloky (stanza)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1763 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1965 msgid "" "Error: invalid characters in bandwidth or options fields. Use alphanumeric, " "spaces, hyphens, dots, colons only." @@ -611,41 +696,57 @@ msgstr "" "Chyba: neplatné znaky v šířce pásma nebo kolonkách předvoleb. Používejte " "pouze písmena a číslice, mezery, spojovníky, tečky a dvojtečky." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1798 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2000 msgid "Error: name must be a device or interface name" msgstr "Chyba: je třeba, aby název bylo zařízení nebo (název) rozhraní" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1769 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1971 msgid "Error: overhead must be a whole number of bytes" msgstr "Chyba: je třeba, aby režie bylo celé číslo bajtů" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1970 msgid "Error: overhead_mpu must be a whole number of bytes" msgstr "Chyba: je třeba, aby overhead_mpu bylo celé číslo počtu bajtů" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2070 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2001 +msgid "Error: qosify drops a name longer than %d characters" +msgstr "Chyba: qosify zahodí název delší než %d znaků" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2273 msgid "Errors:" msgstr "Chyby:" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 +msgid "" +"Every shaped section is looked up again, one whose device now exists is " +"started and one whose device has gone is stopped. Nothing is reported back " +"by the call — the result shows in the Service table on the Overview tab." +msgstr "" +"Každá sekce přiškrcování je znovu prohledána. Ty, kterých zařízení nyní " +"existuje, jsou spouštěné a ty, který zařízení už neexistuje naopak " +"zastaveny. Voláním není nazpět hlášeno nic – výsledek je zobrazen v tabulce " +"Služba na kartě Přehled." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 msgid "File" msgstr "Soubor" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1832 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 msgid "File changed on disk" msgstr "Soubor změněn na disku" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2224 msgid "File too large (max 64KB)" msgstr "Soubor příliš velký (nejvýše 64KB)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:667 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 msgid "Files" msgstr "Soubory" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Found (empty or invalid)" msgstr "Nalezeno (prázdné nebo neplatné)" @@ -653,37 +754,33 @@ msgstr "Nalezeno (prázdné nebo neplatné)" msgid "Grant access to LuCI app qosify" msgstr "Udělit přístup k LuCI aplikaci qosify" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:728 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:771 msgid "Host isolation" msgstr "Izolace hostitele" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1169 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1216 msgid "IPv4 address, e.g. 1.1.1.1" msgstr "IPv4 adresa, např. 1.1.1.1" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1170 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 msgid "IPv6 address, e.g. ff01::1" msgstr "IPv6 adresa, např. ff01::1" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "Ingress CAKE options" msgstr "Ingress CAKE předvolby" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Interface" msgstr "Rozhraní" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:741 -msgid "Invalid CAKE options can stop qosify starting." -msgstr "Neplatné CAKE předvolby mohou zastavit spouštění qosify." - -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1173 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1220 msgid "Like dns:... but only matches cname entries" msgstr "Jako dns:… ale odpovídá pouze cname položkám" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:228 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:244 msgid "" "Line %d is longer than 1023 characters — the rule loader reads fixed-size " "lines and would split it, comment included" @@ -695,28 +792,29 @@ msgstr "" msgid "List of files with port/IP/host mappings" msgstr "Seznam souborů s mapováními portu/IP/hostitele" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 msgid "Loading..." msgstr "Načítání…" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1212 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1350 msgid "Maintenance" msgstr "Údržba" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Manual overhead" msgstr "Ruční režie" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "Mapping file syntax" msgstr "Syntaxe souboru s mapováními" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1692 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1895 msgid "Mapping files reloaded." msgstr "Soubor s mapováními znovu načten." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:434 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:462 msgid "" "Match not loaded by qosify on line %s — ports 1-65534, one IPv4/IPv6 address " "(no CIDR or %%zone), or dns:, dns_c:" @@ -728,21 +826,21 @@ msgstr "" msgid "Maximum average packet length for marking a flow as priority" msgstr "Nejvyšší průměrná délka paketu pro označení toku jako přednostního" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Minimum packet unit (MPU)" msgstr "Minimální jednotka paketu (MPU)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Missing" msgstr "Chybí" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Modified" msgstr "Změněno" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:433 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:461 msgid "" "More than two fields on line %s — qosify reads the rest of the line as the " "DSCP value and skips it" @@ -750,64 +848,73 @@ msgstr "" "Více než dvě kolonky na řádku %s – qosify čte zbytek řádku jako DSCP hodnotu " "a přeskakuje to" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:770 msgid "NAT awareness" msgstr "Povědomí o NAT" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Netdev to enable QoS on. Required." msgstr "Netdev na kterém zapnout QoS. Vyžadováno." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No CAKE tin statistics." msgstr "Žádné CAKE tin statistiky." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1628 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1831 msgid "No DNS entries." msgstr "Žádné DNS záznamy." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:432 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:460 msgid "No DSCP target on line %s — qosify skips single-field lines" msgstr "Žádný DSCP cíl na řádku %s – qosify přeskočí řádky s jedinou kolonkou" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1107 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +msgid "No DSCP traffic yet." +msgstr "Zatím ještě žádný DSCP provoz." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1151 msgid "No classes defined in %s" msgstr "V %s nejsou definovány žádné třídy" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2142 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1257 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2345 msgid "No classes defined. Add classes in the Config tab first." msgstr "Nedefinovány žádné třídy. Nejprve na kartě Nastavení nějaké přidejte." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1192 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1294 +msgid "No dynamic entries." +msgstr "Žádné dynamické položky." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1328 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1329 msgid "No file selected" msgstr "Nevybrán žádný soubor" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2209 msgid "No files selected." msgstr "Nevybrány žádné soubory." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No output." msgstr "Žádný výstup." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 msgid "No per-class counters." msgstr "Žádné čítače pro jednotlivé třídy." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2357 msgid "No spaces or # allowed in patterns or addresses." msgstr "Ve vzorech nebo adresách nejsou dovolené mezery nebo znaky #." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2030 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2233 msgid "No valid UCI config stanzas" msgstr "Žádné platné sloky (stanza) UCI nastavení" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:913 msgid "Not Running" msgstr "Nespuštěné" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1973 msgid "Note: bandwidth not set — CAKE will run unlimited on that direction." msgstr "" "Pozn.: šířka pásma nenastavena – CAKE bude v takovém směru provozováno " @@ -817,43 +924,44 @@ msgstr "" msgid "Number of packets per second to trigger bulk flow detection" msgstr "Počet paketů za sekundu pro spuštění dávkového zjišťování toku" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1161 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1174 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1221 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1238 msgid "Only override the DSCP value if it is zero" msgstr "Hodnotu DSCP přepisovat pouze pokud je nula" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:704 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:747 msgid "" "Only sent with host isolation on — add nat to common CAKE options to force it" msgstr "" "Posílat pouze se zapnutou izolací hostitele – pokud chcete vynutit, přidejte " "k běžným CAKE předvolbám nat" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1017 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1060 msgid "Options" msgstr "Předvolby" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:730 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:773 msgid "Overhead" msgstr "Režie" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "Overhead preset" msgstr "Přednastavení režie" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:603 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:644 msgid "Overview" msgstr "Přehled" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1834 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2037 msgid "Overwrite" msgstr "Přepsat" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2007 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2210 msgid "Overwrite config files" msgstr "Přepsat soubory s nastaveními" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1172 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 msgid "" "POSIX.2 extended regular expression for matching hostnames. Only works if " "dns lookups are passed to qosify via the add_dns_host ubus call." @@ -862,184 +970,194 @@ msgstr "" "pouze pokud jsou dns vyhledávání předávána do qosify prostřednictvím ubus " "volání add_dns_host." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2353 msgid "Port must be 1-65534 (qosify rejects 65535)." msgstr "Je třeba, aby port byl 1-65534 (qosify odmítne 65535)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2149 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2349 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2352 msgid "Port must be a number or a range (4500, 5060-5061)." msgstr "Je třeba, aby port bylo číslo nebo rozsah (4500, 5060-5061)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "QoS Enabled" msgstr "QoS povoleno" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:721 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 msgid "Queueing mode" msgstr "Režim zařazování do fronty" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1163 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1209 msgid "Quick Add" msgstr "Rychlé přidání" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1016 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1059 msgid "Quick Add: %s" msgstr "Rychlé přidání: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2356 msgid "Range start must not exceed end." msgstr "Je třeba, aby začátek rozsahu nebyl vyšší než jeho konec." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 msgid "Re-check devices" msgstr "Znovu zkontrolovat zařízení" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 msgid "Re-checking devices..." msgstr "Opětovná kontrola zařízení…" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:811 msgid "Re-read the mapping files only" msgstr "Znovu načíst pouze soubory s mapováním" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 msgid "Re-reading the mapping files..." msgstr "Opětovné načítání souborů s mapováním…" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 -msgid "" -"Re-runs the daemon's own device pass: every shaped section is looked up " -"again, one whose device now exists is started and one whose device has gone " -"is stopped. Nothing is reported back by the call — the result shows in the " -"Service table on the Overview tab." -msgstr "" -"Znovu spustit průchod zařízení procesu služby samotného: je znovu vyhledána " -"každá sekce shaped. Taková, které zařízení nyní existuje je spuštěna a " -"taková, pro které už ne naopak zastavena. Zpět voláním není hlášeno nic – " -"výsledek se ukáže v tabulce Služby na kartě Přehled." +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1351 +msgid "Re-runs the daemon's own device pass." +msgstr "Znovu spustí průchod vlastního zařízení procesu služby." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2024 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2227 msgid "Read error" msgstr "Chyba čtení" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Reading and validating files..." msgstr "Načítání a ověřování souborů…" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1681 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1884 msgid "Reading tc output..." msgstr "Čtení výstupu tc…" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1019 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1062 msgid "Reference" msgstr "Reference" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload" msgstr "Znovunačíst" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload Rules" msgstr "Znovunačíst pravidla" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1695 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1898 msgid "Reload failed: %s" msgstr "Znovunačtení se nezdařilo: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1306 +msgid "Remove" +msgstr "Odebrat" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1270 +msgid "Remove failed: %s" +msgstr "Odebrání se nezdařilo: %s" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 +msgid "Replaced with" +msgstr "Nahrazeno za" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "Requires write access." msgstr "Vyžaduje přístup pro zápis." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2086 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1365 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2289 msgid "Reset" msgstr "Reset" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2120 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1554 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "Reset counters" +msgstr "Vynulovat čítače" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2323 msgid "Reset failed: %s" msgstr "Resetování se nezdařilo: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2084 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2287 msgid "Reset to defaults" msgstr "Vrátit na výchozí" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2116 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2319 msgid "Reset to defaults, applied." msgstr "Reset na výchozí – uplatněn." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Resetting" msgstr "Resetování" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Restart" msgstr "Restart" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1203 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1341 msgid "Restore" msgstr "Obnovit" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 -msgid "Restore qosify defaults" -msgstr "Obnovit výchozí pro qosify" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1359 +msgid "Restore qosify defaults. Shaping is left disabled." +msgstr "Vrátit na výchozí pro qosify. Přiškrcování je ponecháno zakázané." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Restoring defaults..." msgstr "Obnovování výchozích…" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:646 msgid "Rules" msgstr "Pravidla" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1976 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2179 msgid "Rules saved" msgstr "Pravidla uložena" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2053 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2056 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2256 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2259 msgid "Rules: %s" msgstr "Pravidla: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:868 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:911 msgid "Running & Shaping" msgstr "Spuštěné a provoz omezující" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:912 msgid "Running — Not Shaping" msgstr "Spuštěné – provoz neomezující" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:867 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:910 msgid "Running — Shaping Unknown" msgstr "Spuštěné – omezování rychlosti neznámé" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1147 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:796 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 msgid "Save & Apply" msgstr "Uložit a použít" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1825 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1897 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1924 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1985 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2028 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2100 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2127 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2188 msgid "Save failed: %s" msgstr "Uložení se nezdařilo: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Saving" msgstr "Ukládání" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 msgid "Saving settings and applying..." msgstr "Ukládání nastavení a uplatňování…" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2186 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2389 msgid "Section %s already exists." msgstr "Sekce %s už existuje." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1011 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1054 msgid "" "Section name is the class name that rules and dscp_* values refer to. " "qosify.init reads config alias the same way as config class." @@ -1048,45 +1166,45 @@ msgstr "" "qosify.init čte alternativní názvy nastavení stejným způsobem, jako třídy " "nastavení." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Sending %s to qosify..." msgstr "Odesílání %s do qosify…" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Sent to CAKE as atm, noatm or ptm." msgstr "Odeslat do CAKE jako atm, noatm nebo ptm." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "Sent to CAKE as ether-vlan, once per tag." msgstr "Odeslat do CAKE jako ether-vlan (jednou na štítek)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Sent to CAKE as mpu, in bytes." msgstr "Odesláno do CAKE jako mpu (v bajtech)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Sent to CAKE as overhead, in bytes." msgstr "Odesláno do CAKE jako overhead (v bajtech)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:663 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:706 msgid "Service" msgstr "Služba" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1745 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1948 msgid "Service action failed: %s" msgstr "Akce služby se nezdařila: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1817 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 msgid "Settings saved" msgstr "Nastavení uložena" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:723 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:937 msgid "Shaping" msgstr "Omezování rychlosti" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Size" msgstr "Velikost" @@ -1094,33 +1212,37 @@ msgstr "Velikost" msgid "Skip this section" msgstr "Přeskočit tento výběr" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Start" msgstr "Spustit" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:606 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:891 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:647 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:934 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Status" msgstr "Stav" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:855 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:898 msgid "Status Unknown" msgstr "Stav neznámý" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:809 msgid "Stop" msgstr "Zastavit" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1167 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 msgid "TCP single port, or range from to " msgstr "TCP jediný port nebo rozsah od po " -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1680 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1883 msgid "The detailed tc output needs write access to this page." msgstr "Podrobný výstup z tc vyžaduje oprávnění k zápisu na tuto stránku." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:590 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1309 +msgid "The first %d entries are shown." +msgstr "Je zobrazeno prvních %d položek." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:631 msgid "" "The qosify UCI configuration could not be loaded — class and interface lists " "may be incomplete." @@ -1128,12 +1250,12 @@ msgstr "" "UCI nastavení pro qosify nebylo možné načíst – je možné, že seznamy tříd a " "rozhraní nebudou úplné." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1342 msgid "" "The selected files replace the ones on the router and qosify is reloaded." msgstr "Vybrané soubory nahradí ty na směrovači a qosify bude načteno znovu." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2008 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2211 msgid "" "The selected files replace the ones on the router and qosify is reloaded. " "Download a backup from this tab first if you need one." @@ -1145,33 +1267,37 @@ msgstr "" msgid "Time below bulk_trigger_pps threshold until a bulk flow mark is removed" msgstr "Čas pod prahem bulk_trigger_pps dokud není odebrána dávkového toku" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 msgid "Traffic by CAKE Tin" msgstr "Provoz podle CAKE Tin" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1401 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1548 msgid "Traffic by Class" msgstr "Provoz podle tříd" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:596 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1549 +msgid "Traffic by DSCP" +msgstr "Provoz podle DSCP" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:637 msgid "Traffic shaping and DSCP classification via qosify" msgstr "Omezování provozu a DSCP rozřazování prostřednictvím qosify" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1168 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 msgid "UDP single port, or range from to " msgstr "UDP jediný port nebo rozsah od po " -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:864 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:866 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:907 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:909 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:968 msgid "Unknown" msgstr "Neznámé" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 msgid "Unknown class/DSCP target: %s" msgstr "Neznámá třída / DSCP cíl: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "Unticked sets disabled 1 and qosify skips this section." msgstr "Nezaškrtnuté nastaví disabled (na) 1 a qosify tuto sekci přeskočí." @@ -1179,79 +1305,79 @@ msgstr "Nezaškrtnuté nastaví disabled (na) 1 a qosify tuto sekci přeskočí. msgid "Uplink bandwidth (same format as tc)" msgstr "Šířka uplink pásma (stejný formát jako tc)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Uplink bandwidth, same format as tc. Set just below line speed." msgstr "" "Šířka uplink pásma (stejný formát jako tc). Nastavte mírně pod rychlost " "linky." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 msgid "Upload" msgstr "Nahrát" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1348 msgid "Upload & Apply" msgstr "Nahrát a použít" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2009 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2212 msgid "Upload and apply" msgstr "Nahrát a použít" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Upload bandwidth" msgstr "Šířka pásma odesílání" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2061 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2264 msgid "Upload error: %s" msgstr "Chyba nahrávání: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2078 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2281 msgid "Upload failed: %s" msgstr "Nahrání se nezdařilo: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 msgid "Upload shaping" msgstr "Omezování rychlosti odesílání" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Uploading" msgstr "Nahrávání" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:892 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:935 msgid "Uptime" msgstr "Doba chodu" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "VLAN tags" msgstr "VLAN štítky" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Valid" msgstr "Platné" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1951 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 msgid "Warning: %s but qosify is not shaping traffic — check the Status tab." msgstr "Varování: %s ale qosify neomezuje provoz – podívejte se na kartu Stav." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Working" msgstr "Pracující" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "Write empty file" msgstr "Zapsat prázdný soubor" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 msgid "Writing config and reloading qosify..." msgstr "Zapisování nastavení a načítání qosify…" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Writing rules and reloading qosify..." msgstr "Zapisování pravidel a znovunačítání qosify…" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:633 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:675 msgid "" "You have read-only access to this page, so editing and service control are " "disabled." @@ -1259,11 +1385,19 @@ msgstr "" "K této stránce máte přístup pouze pro čtení, takže upravování a ovládání " "služby je vypnuté." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "" +"Zero qosify's own counters (get_stats)? The CAKE tin counters belong to tc " +"and are kept." +msgstr "" +"Vynulovat vlastní čítače qosify (get_stats)? CAKE tin čítače náleží tc a " +"jsou ponechány." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 msgid "active" msgstr "aktivní" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1969 msgid "" "bandwidth_down does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" @@ -1271,7 +1405,7 @@ msgstr "" "bandwidth_down se nejeví být rychlostí pro tc (100mbit, 12MBps, unlimited) – " "předává se ale i tak" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1968 msgid "" "bandwidth_up does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" @@ -1279,7 +1413,7 @@ msgstr "" "bandwidth_up se nejeví být rychlostí pro tc (100mbit, 12MBps, unlimited) – " "předává se ale i tak" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1012 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1055 msgid "" "config device takes the same options, with name set to a netdev. nat " "defaults to 1 for interfaces and 0 for devices." @@ -1287,15 +1421,15 @@ msgstr "" "nastavení zařízení přijímá stejné předvolby, s názvem nastaveným na netdev. " "nat je ve výchozím stavu 1 pro rozhraní a 0 pro zařízení." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "device %s" msgstr "zařízení %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "device: %s, ingress: %s, egress: %s" msgstr "zařízení: %s, ingress: %s, egress: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:289 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:317 msgid "" "disabled is set to \"%s\" — config_get_bool does not recognise that, so the " "section stays enabled" @@ -1303,45 +1437,66 @@ msgstr "" "disabled je nastavené na \"%s\" – config_get_bool toto nerozpoznává, takže " "sekce zůstává povolená" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2129 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +msgid "dump did not answer." +msgstr "dump neodpovědělo." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2332 msgid "e.g. %s" msgstr "např. %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1171 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 msgid "fnmatch() pattern supporting * and ? as wildcard characters" msgstr "fnmatch() vzorec podporující * a ? jako zástupné znaky" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1613 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1816 msgid "get_stats did not answer." msgstr "get_stats neodpovědělo." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 msgid "inactive" msgstr "neaktivní" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "ingress %s, egress %s" msgstr "ingress %s, egress %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:282 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:310 msgid "ingress and egress are both 0 — nothing is shaped" msgstr "vstup a výstup je obojí 0 – nic není omezováno" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "interface %s" msgstr "rozhraní %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1155 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1199 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1235 msgid "match" msgstr "shoda" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:274 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:292 +msgid "" +"mode \"%s\" is not a CAKE diffserv mode — tc refuses the qdisc, so nothing " +"is shaped although qosify reports the section active" +msgstr "" +"režim „%s“ není CAKE diffserv režim – tc odmítne qdisc, takže není nic " +"přiškrcováno, i když qosify hlásí sekci jako aktivní" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:291 +msgid "" +"name \"%s\" is dropped by qosify — it takes at most %d characters and no " +"quote" +msgstr "" +"název „%s“ je qosify zahozen – přijímá nejvýše %d znaků a žádnou uvozovku" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:290 msgid "" "name is not set — qosify.init sends an empty device name and this section is " "never applied" @@ -1349,7 +1504,7 @@ msgstr "" "název není nastavený – qosify.init odešle prázdný název zařízení a tato " "sekce nikdy nebude uplatněna" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:278 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:306 msgid "" "nat is not sent: qosify only emits nat/nonat inside the host_isolate branch. " "CAKE does accept flows plus nat — put nat in options to apply it" @@ -1357,7 +1512,7 @@ msgstr "" "nat není odeslán: qosify pouze vyšle nat/nonat uvnitř větve host_isolate. " "CAKE nepřijímá toky plus nat – pro jeho uplatnění dejte do předvoleb nat" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:279 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:307 msgid "" "nat only reaches %s — put it in options, or in both ingress_options and " "egress_options" @@ -1373,67 +1528,93 @@ msgstr "" "netifd rozhraní (nastavit rozhraní) nebo netdev (nastavit zařízení) na " "kterém zapnout QoS" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "netifd interface to enable QoS on. Required." msgstr "netifd rozhraní na kterém zapnout QoS. Vyžadováno." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1313 +msgid "never" +msgstr "nikdy" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "no" msgstr "ne" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:284 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:312 msgid "no bandwidth_down or bandwidth — ingress CAKE runs unlimited" msgstr "žádné bandwidth_down nebo bandwidth – vstupní CAKE běží neomezované" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:283 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:311 msgid "no bandwidth_up or bandwidth — egress CAKE runs unlimited" msgstr "žádné bandwidth_down nebo bandwidth – výstupní CAKE běží neomezované" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "none" msgstr "žádné" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:281 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:309 msgid "overhead and overhead_encap are ignored unless overhead_type is manual" msgstr "" "overhead a overhead_encap jsou ignorovány pokud overhead_type je manual" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:595 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:299 +msgid "overhead_encap \"%s\" is not atm, noatm or ptm — tc refuses the qdisc" +msgstr "overhead_encap „%s“ není atm, noatm nebo ptm – tc odmítne qdisc" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:296 +msgid "" +"overhead_type \"%s\" is not one qosify.init knows, so no overhead is set" +msgstr "" +"overhead_type „%s“ není z těch, které qosify.init rozpoznává, takže není " +"nastavena žádná režie" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:302 +msgid "overhead_vlan \"%s\" is not 0, 1 or 2 — qosify.init adds no ether-vlan" +msgstr "" +"overhead_vlan „%s“ není 0, 1 nebo 2 – qosify.init nepřidá žádnou ether-vlan" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:636 #: applications/luci-app-qosify/root/usr/share/luci/menu.d/luci-app-qosify.json:3 msgid "qosify" msgstr "qosify" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:847 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:890 msgid "" "qosify did not appear on ubus, so its config was not applied — press Reload" msgstr "" "qosify se neobjevilo na ubus, takže nastavení na něj nebylo uplatněno – " "klikněte na Znovunačíst" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:833 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1729 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:876 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1932 msgid "qosify did not come up — check the system log" msgstr "qosify nenastartovalo – podívejte se do systémového záznamu událostí" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1610 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1672 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1813 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1875 msgid "qosify is not running. Start from the Overview tab." msgstr "qosify není spuštěné. Napravte to z karty Přehled." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1735 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1887 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2090 msgid "qosify is still running — leaving the qdiscs alone" msgstr "qosify pořád ještě je spuštěné – qdisc jsou ponechány napokoji" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1253 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1361 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1362 +msgid "qosify package template" +msgstr "šablony qosify balíčku" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1399 msgid "qosify-status" msgstr "qosify-status" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1885 msgid "qosify-status returned no output." msgstr "qosify-status nevrátilo žádný výstup." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:918 msgid "" "rpcd is not answering for qosify — check the ACL in /usr/share/rpcd/acl.d " "and restart rpcd" @@ -1441,40 +1622,63 @@ msgstr "" "rpcd neodpovídá na qosify – zkontrolujte ACL seznamy v /usr/share/rpcd/acl.d " "a restartujte rpcd" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:832 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1609 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1671 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1728 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1734 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1886 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1812 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1874 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1931 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1937 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2089 msgid "rpcd is not answering for qosify, so the service state is unknown." msgstr "rpcd neodpovídá ohledně qosify, takže stav služby není znám." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:955 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:998 msgid "section name" msgstr "název sekce" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:953 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:996 msgid "section type" msgstr "typ sekce" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1529 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1533 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1731 msgid "share" msgstr "sdílet" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1541 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1256 +msgid "timeout must be a whole number of seconds above 0." +msgstr "je třeba, aby časový limit bylo celé číslo počtu sekund, vyšší než 0." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1739 msgid "total" msgstr "celkem" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 msgid "value" msgstr "hodnota" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "yes" msgstr "ano" +#~ msgid "Invalid CAKE options can stop qosify starting." +#~ msgstr "Neplatné CAKE předvolby mohou zastavit spouštění qosify." + +#~ msgid "" +#~ "Re-runs the daemon's own device pass: every shaped section is looked up " +#~ "again, one whose device now exists is started and one whose device has " +#~ "gone is stopped. Nothing is reported back by the call — the result shows " +#~ "in the Service table on the Overview tab." +#~ msgstr "" +#~ "Znovu spustit průchod zařízení procesu služby samotného: je znovu " +#~ "vyhledána každá sekce shaped. Taková, které zařízení nyní existuje je " +#~ "spuštěna a taková, pro které už ne naopak zastavena. Zpět voláním není " +#~ "hlášeno nic – výsledek se ukáže v tabulce Služby na kartě Přehled." + +#~ msgid "Restore qosify defaults" +#~ msgstr "Obnovit výchozí pro qosify" + #~ msgid "%s contains a quote — qosify rejects the whole value" #~ msgstr "%s obsahuje uvozovku – qosify odmítne celou hodnotu" diff --git a/luci-app-qosify/po/de/qosify.po b/luci-app-qosify/po/de/qosify.po index 67761fee0..2e68788cd 100644 --- a/luci-app-qosify/po/de/qosify.po +++ b/luci-app-qosify/po/de/qosify.po @@ -3,171 +3,224 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Language: de\n" "Content-Transfer-Encoding: 8bit\n" -"Last-Translator: Ettore Atalan \n" +"Last-Translator: Dirk Brenken \n" "Language-Team: German \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"PO-Revision-Date: 2026-09-28 18:23+0000\n" -"X-Generator: Weblate 2026.10.dev0\n" +"PO-Revision-Date: 2026-11-04 16:54+0000\n" +"X-Generator: Weblate 2026.11.1.dev0\n" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1255 +msgid "\"%s\" is not a value qosify accepts for %s." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:483 +msgid "" +"%d class and alias sections — qosify has %d class slots, so %s and the rules " +"using them are dropped" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "%d interface" msgid_plural "%d interfaces" msgstr[0] "" msgstr[1] "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:986 msgid "%d rule" msgid_plural "%d rules" msgstr[0] "%d Regel" msgstr[1] "%d Regeln" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:942 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:985 msgid "%d section" msgid_plural "%d sections" msgstr[0] "" msgstr[1] "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:294 +msgid "" +"%s \"%s\" is not a tc rate — tc refuses the qdisc, so nothing is shaped " +"although qosify reports the section active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:298 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:301 +msgid "%s \"%s\" is not a whole number — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 msgid "%s (current)" msgstr "%s (aktuell)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 msgid "%s (from bandwidth)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2085 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2288 msgid "" "%s and %s are replaced with the templates shipped by the qosify package, and " "shaping is left disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1809 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2012 msgid "" "%s came back empty although it is %d bytes on disk — refusing to overwrite it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2346 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2549 msgid "%s changed on disk — your unsaved edits are still in the editor." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2249 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2452 msgid "" "%s could not be read — the editor is left empty and will not be saved over " "it." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1833 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2036 msgid "" "%s has changed since this editor was loaded. Saving now discards those " "changes." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1864 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2067 msgid "" "%s is %d bytes on disk but was never loaded into the editor — refusing to " "truncate it. Reload the page first." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:392 msgid "%s is a list in this section — edit %s directly" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1656 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1859 msgid "" "%s is not in the defaults list — qosify does not load it, so the Rules tab " "has no effect" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:286 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:314 msgid "" "%s is set to \"%s\" — qosify converts it with atoi(), so anything but a non-" "zero number means off" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:750 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:793 msgid "%s quick settings" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2069 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2272 msgid "%s uploaded, qosify reloaded." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2103 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2306 msgid "%s was not written: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2106 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2309 msgid "%s was reset but %s was not written: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1945 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2148 msgid "%s, applied (QoS disabled)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1950 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 msgid "" "%s, applied — qosify did not answer on ubus, so shaping could not be checked." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1947 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 msgid "%s, applied." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:459 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:468 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:500 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:509 msgid "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify ignores it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:456 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:497 msgid "" "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify rejects the whole " "config and interface changes are not applied" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:465 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:506 msgid "" "%s: %s \"%s\" is not a codepoint or 0-63 — qosify drops this class and the " "rules using it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:448 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:488 +msgid "" +"%s: %s \"%s\" is not a whole number — qosify.init passes it through atoll(), " +"which keeps only the leading digits" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:486 msgid "" "%s: %s cannot be checked — write it as one plain or fully quoted value, with " "no backslash" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:451 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:492 msgid "" "%s: %s contains shell metacharacters — qosify runs the tc command with sh -c " "as root, so they would break it or be executed" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "(alias)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1304 +msgid "(over file)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 msgid "(this qosify build has no NQB)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2185 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2388 msgid "A config defaults section already exists." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2183 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2386 msgid "A section name may only contain letters, digits and underscores." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:856 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Action" +msgstr "Aktion" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:899 msgid "Active" msgstr "Aktiv" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:957 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1162 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1000 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1206 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1240 msgid "Add" msgstr "Hinzufügen" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1262 +msgid "Add failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1242 +msgid "" +"Added to the running qosify at once and not saved: an entry expires after " +"its timeout (the defaults timeout when left empty) and a qosify restart " +"drops it. One on a match from the rules file overrides it until then." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +msgid "" +"Adds a line to the editor below; Save & Apply writes it to the rules file, " +"so it is kept." +msgstr "" + #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:85 msgid "Adds atm, noatm or ptm when overhead_type is manual" msgstr "" @@ -184,32 +237,32 @@ msgstr "" msgid "Adds overhead when overhead_type is manual" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:608 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:649 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:780 msgid "Advanced" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "An empty %s stops all shaping. Continue?" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:726 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:769 msgid "Automatic download rate" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:936 msgid "Autostart" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:967 msgid "Autostart state unknown — rpcd did not answer" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 msgid "Available" msgstr "Verfügbar" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1196 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1334 msgid "Backup" msgstr "" @@ -219,12 +272,12 @@ msgid "" "set" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:716 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:759 msgid "Basic" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:224 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2029 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:240 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2232 msgid "Binary content rejected" msgstr "" @@ -236,7 +289,7 @@ msgstr "" msgid "CAKE egress options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "CAKE egress options, space separated." msgstr "" @@ -244,7 +297,7 @@ msgstr "" msgid "CAKE ingress options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "CAKE ingress options, space separated." msgstr "" @@ -258,104 +311,108 @@ msgid "" "overhead_encap" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "CAKE overhead keyword. Use none if unsure." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:564 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 msgid "Cancel" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1356 msgid "Check Devices" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1330 msgid "Choose file…" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1114 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1158 msgid "Classes" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1940 msgid "Cleanup exited with code %d" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1190 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2072 msgid "Clear configuration" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear editor" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to disable autostart" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to enable autostart" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 msgid "Common CAKE options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:604 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:645 msgid "Config" msgstr "Einstellungen" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared, qosify stopped." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1915 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2118 msgid "Config saved" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2042 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2050 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2253 msgid "Config: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:566 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 msgid "Continue" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1391 msgid "Could not read %s: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:648 msgid "Counters" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1627 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1567 +msgid "Counters reset." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1830 msgid "DNS Entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d of %d)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "" "DSCP codepoints: CS0–CS7, AF11–AF43, EF, VA, NQB, LE, DF (NQB needs qosify " "from June 2026; 24.10 and 25.12 do not have it). A raw value from 0 to 63 is " @@ -387,7 +444,7 @@ msgstr "" msgid "DSCP value for priority-marked packets" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "DSCP values" msgstr "" @@ -403,12 +460,12 @@ msgstr "" msgid "Default timeout for dynamically added entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1358 msgid "Defaults" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 msgid "" "Defaults qosify applies when a key is absent — interface: mode diffserv4, " "ingress 1, egress 1, nat 1, host_isolate 1, autorate_ingress 0. device: " @@ -423,21 +480,25 @@ msgstr "" "dscp_icmp nicht gesetzt, bulk_trigger_pps/bulk_trigger_timeout/" "prio_max_avg_pkt_len 0 (deaktiviert)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Description" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Device" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1914 msgid "Device check done." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1714 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1917 msgid "Device check failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:859 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Disabled" msgstr "Deaktiviert" @@ -445,48 +506,52 @@ msgstr "Deaktiviert" msgid "Downlink bandwidth (same format as tc)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Downlink bandwidth, same format as tc. Set just below line speed." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1247 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1393 msgid "Download" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Download bandwidth" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:767 msgid "Download shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1197 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1335 msgid "Download the current files from the router." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1241 +msgid "Dynamic Entries" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "" "Each line has two whitespace separated fields, match and dscp. dscp can be a " "raw value, a codepoint like CS0, or a class name. DNS entries are compared " "in the order in which they are specified, using the first matching entry." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "Egress CAKE options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2223 msgid "Empty file" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 msgid "" "Empty the config editor? Nothing is written until you click Save & Apply." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "" "Empty the rules editor? Nothing is written until you click Save & Apply." msgstr "" @@ -511,94 +576,114 @@ msgstr "" msgid "Enable ingress shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Enabled" msgstr "Aktiviert" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:858 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 msgid "Enabled — Not Running" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:857 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 msgid "Enabled — Not Shaping (check config)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Encapsulation overhead" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2182 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2385 msgid "Enter a section name." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2156 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2359 msgid "Enter a single IPv4 address (qosify does not accept CIDR)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2159 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2362 msgid "" "Enter a single IPv6 address (qosify does not accept CIDR or a %zone suffix)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2141 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2344 msgid "Enter a value." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1848 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1961 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1261 +msgid "Entry added." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1269 +msgid "Entry removed." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2051 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2164 msgid "Error: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1845 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2048 msgid "Error: No valid config stanzas found." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1763 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1965 msgid "" "Error: invalid characters in bandwidth or options fields. Use alphanumeric, " "spaces, hyphens, dots, colons only." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1798 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2000 msgid "Error: name must be a device or interface name" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1769 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1971 msgid "Error: overhead must be a whole number of bytes" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1970 msgid "Error: overhead_mpu must be a whole number of bytes" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2070 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2001 +msgid "Error: qosify drops a name longer than %d characters" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2273 msgid "Errors:" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 +msgid "" +"Every shaped section is looked up again, one whose device now exists is " +"started and one whose device has gone is stopped. Nothing is reported back " +"by the call — the result shows in the Service table on the Overview tab." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 msgid "File" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1832 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 msgid "File changed on disk" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2224 msgid "File too large (max 64KB)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:667 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 msgid "Files" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Found (empty or invalid)" msgstr "" @@ -606,37 +691,33 @@ msgstr "" msgid "Grant access to LuCI app qosify" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:728 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:771 msgid "Host isolation" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1169 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1216 msgid "IPv4 address, e.g. 1.1.1.1" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1170 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 msgid "IPv6 address, e.g. ff01::1" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "Ingress CAKE options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Interface" -msgstr "" +msgstr "Schnittstelle" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:741 -msgid "Invalid CAKE options can stop qosify starting." -msgstr "" - -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1173 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1220 msgid "Like dns:... but only matches cname entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:228 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:244 msgid "" "Line %d is longer than 1023 characters — the rule loader reads fixed-size " "lines and would split it, comment included" @@ -646,28 +727,29 @@ msgstr "" msgid "List of files with port/IP/host mappings" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 msgid "Loading..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1212 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1350 msgid "Maintenance" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Manual overhead" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "Mapping file syntax" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1692 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1895 msgid "Mapping files reloaded." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:434 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:462 msgid "" "Match not loaded by qosify on line %s — ports 1-65534, one IPv4/IPv6 address " "(no CIDR or %%zone), or dns:, dns_c:" @@ -677,84 +759,93 @@ msgstr "" msgid "Maximum average packet length for marking a flow as priority" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Minimum packet unit (MPU)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Missing" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Modified" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:433 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:461 msgid "" "More than two fields on line %s — qosify reads the rest of the line as the " "DSCP value and skips it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:770 msgid "NAT awareness" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Netdev to enable QoS on. Required." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No CAKE tin statistics." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1628 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1831 msgid "No DNS entries." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:432 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:460 msgid "No DSCP target on line %s — qosify skips single-field lines" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1107 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +msgid "No DSCP traffic yet." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1151 msgid "No classes defined in %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2142 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1257 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2345 msgid "No classes defined. Add classes in the Config tab first." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1192 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1294 +msgid "No dynamic entries." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1328 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1329 msgid "No file selected" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2209 msgid "No files selected." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No output." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 msgid "No per-class counters." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2357 msgid "No spaces or # allowed in patterns or addresses." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2030 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2233 msgid "No valid UCI config stanzas" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:913 msgid "Not Running" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1973 msgid "Note: bandwidth not set — CAKE will run unlimited on that direction." msgstr "" @@ -762,264 +853,279 @@ msgstr "" msgid "Number of packets per second to trigger bulk flow detection" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1161 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1174 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1221 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1238 msgid "Only override the DSCP value if it is zero" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:704 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:747 msgid "" "Only sent with host isolation on — add nat to common CAKE options to force it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1017 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1060 msgid "Options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:730 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:773 msgid "Overhead" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "Overhead preset" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:603 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:644 msgid "Overview" msgstr "Übersicht" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1834 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2037 msgid "Overwrite" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2007 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2210 msgid "Overwrite config files" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1172 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 msgid "" "POSIX.2 extended regular expression for matching hostnames. Only works if " "dns lookups are passed to qosify via the add_dns_host ubus call." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2353 msgid "Port must be 1-65534 (qosify rejects 65535)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2149 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2349 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2352 msgid "Port must be a number or a range (4500, 5060-5061)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "QoS Enabled" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:721 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 msgid "Queueing mode" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1163 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1209 msgid "Quick Add" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1016 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1059 msgid "Quick Add: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2356 msgid "Range start must not exceed end." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 msgid "Re-check devices" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 msgid "Re-checking devices..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:811 msgid "Re-read the mapping files only" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 msgid "Re-reading the mapping files..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 -msgid "" -"Re-runs the daemon's own device pass: every shaped section is looked up " -"again, one whose device now exists is started and one whose device has gone " -"is stopped. Nothing is reported back by the call — the result shows in the " -"Service table on the Overview tab." +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1351 +msgid "Re-runs the daemon's own device pass." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2024 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2227 msgid "Read error" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Reading and validating files..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1681 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1884 msgid "Reading tc output..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1019 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1062 msgid "Reference" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload Rules" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1695 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1898 msgid "Reload failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1306 +msgid "Remove" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1270 +msgid "Remove failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 +msgid "Replaced with" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "Requires write access." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2086 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1365 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2289 msgid "Reset" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2120 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1554 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "Reset counters" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2323 msgid "Reset failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2084 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2287 msgid "Reset to defaults" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2116 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2319 msgid "Reset to defaults, applied." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Resetting" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Restart" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1203 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1341 msgid "Restore" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 -msgid "Restore qosify defaults" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1359 +msgid "Restore qosify defaults. Shaping is left disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Restoring defaults..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:646 msgid "Rules" -msgstr "" +msgstr "Regeln" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1976 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2179 msgid "Rules saved" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2053 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2056 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2256 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2259 msgid "Rules: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:868 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:911 msgid "Running & Shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:912 msgid "Running — Not Shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:867 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:910 msgid "Running — Shaping Unknown" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1147 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:796 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 msgid "Save & Apply" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1825 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1897 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1924 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1985 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2028 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2100 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2127 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2188 msgid "Save failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Saving" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 msgid "Saving settings and applying..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2186 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2389 msgid "Section %s already exists." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1011 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1054 msgid "" "Section name is the class name that rules and dscp_* values refer to. " "qosify.init reads config alias the same way as config class." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Sending %s to qosify..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Sent to CAKE as atm, noatm or ptm." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "Sent to CAKE as ether-vlan, once per tag." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Sent to CAKE as mpu, in bytes." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Sent to CAKE as overhead, in bytes." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:663 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:706 msgid "Service" -msgstr "" +msgstr "Dienst" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1745 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1948 msgid "Service action failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1817 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 msgid "Settings saved" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:723 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:937 msgid "Shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Size" msgstr "" @@ -1027,44 +1133,48 @@ msgstr "" msgid "Skip this section" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Start" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:606 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:891 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:647 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:934 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Status" msgstr "Status" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:855 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:898 msgid "Status Unknown" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:809 msgid "Stop" -msgstr "Stopp" +msgstr "Stoppen" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1167 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 msgid "TCP single port, or range from to " msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1680 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1883 msgid "The detailed tc output needs write access to this page." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:590 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1309 +msgid "The first %d entries are shown." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:631 msgid "" "The qosify UCI configuration could not be loaded — class and interface lists " "may be incomplete." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1342 msgid "" "The selected files replace the ones on the router and qosify is reloaded." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2008 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2211 msgid "" "The selected files replace the ones on the router and qosify is reloaded. " "Download a backup from this tab first if you need one." @@ -1074,33 +1184,37 @@ msgstr "" msgid "Time below bulk_trigger_pps threshold until a bulk flow mark is removed" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 msgid "Traffic by CAKE Tin" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1401 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1548 msgid "Traffic by Class" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:596 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1549 +msgid "Traffic by DSCP" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:637 msgid "Traffic shaping and DSCP classification via qosify" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1168 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 msgid "UDP single port, or range from to " msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:864 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:866 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:907 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:909 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:968 msgid "Unknown" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 msgid "Unknown class/DSCP target: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "Unticked sets disabled 1 and qosify skips this section." msgstr "" @@ -1108,169 +1222,193 @@ msgstr "" msgid "Uplink bandwidth (same format as tc)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Uplink bandwidth, same format as tc. Set just below line speed." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 msgid "Upload" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1348 msgid "Upload & Apply" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2009 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2212 msgid "Upload and apply" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Upload bandwidth" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2061 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2264 msgid "Upload error: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2078 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2281 msgid "Upload failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 msgid "Upload shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Uploading" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:892 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:935 msgid "Uptime" -msgstr "" +msgstr "Laufzeit" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "VLAN tags" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Valid" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1951 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 msgid "Warning: %s but qosify is not shaping traffic — check the Status tab." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Working" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "Write empty file" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 msgid "Writing config and reloading qosify..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Writing rules and reloading qosify..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:633 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:675 msgid "" "You have read-only access to this page, so editing and service control are " "disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "" +"Zero qosify's own counters (get_stats)? The CAKE tin counters belong to tc " +"and are kept." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 msgid "active" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1969 msgid "" "bandwidth_down does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1968 msgid "" "bandwidth_up does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1012 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1055 msgid "" "config device takes the same options, with name set to a netdev. nat " "defaults to 1 for interfaces and 0 for devices." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "device %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "device: %s, ingress: %s, egress: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:289 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:317 msgid "" "disabled is set to \"%s\" — config_get_bool does not recognise that, so the " "section stays enabled" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2129 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +msgid "dump did not answer." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2332 msgid "e.g. %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1171 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 msgid "fnmatch() pattern supporting * and ? as wildcard characters" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1613 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1816 msgid "get_stats did not answer." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 msgid "inactive" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "ingress %s, egress %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:282 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:310 msgid "ingress and egress are both 0 — nothing is shaped" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "interface %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1155 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1199 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1235 msgid "match" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:274 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:292 +msgid "" +"mode \"%s\" is not a CAKE diffserv mode — tc refuses the qdisc, so nothing " +"is shaped although qosify reports the section active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:291 +msgid "" +"name \"%s\" is dropped by qosify — it takes at most %d characters and no " +"quote" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:290 msgid "" "name is not set — qosify.init sends an empty device name and this section is " "never applied" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:278 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:306 msgid "" "nat is not sent: qosify only emits nat/nonat inside the host_isolate branch. " "CAKE does accept flows plus nat — put nat in options to apply it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:279 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:307 msgid "" "nat only reaches %s — put it in options, or in both ingress_options and " "egress_options" @@ -1282,100 +1420,133 @@ msgid "" "on" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "netifd interface to enable QoS on. Required." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1313 +msgid "never" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "no" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:284 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:312 msgid "no bandwidth_down or bandwidth — ingress CAKE runs unlimited" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:283 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:311 msgid "no bandwidth_up or bandwidth — egress CAKE runs unlimited" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "none" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:281 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:309 msgid "overhead and overhead_encap are ignored unless overhead_type is manual" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:595 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:299 +msgid "overhead_encap \"%s\" is not atm, noatm or ptm — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:296 +msgid "" +"overhead_type \"%s\" is not one qosify.init knows, so no overhead is set" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:302 +msgid "overhead_vlan \"%s\" is not 0, 1 or 2 — qosify.init adds no ether-vlan" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:636 #: applications/luci-app-qosify/root/usr/share/luci/menu.d/luci-app-qosify.json:3 msgid "qosify" msgstr "qosify" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:847 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:890 msgid "" "qosify did not appear on ubus, so its config was not applied — press Reload" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:833 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1729 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:876 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1932 msgid "qosify did not come up — check the system log" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1610 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1672 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1813 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1875 msgid "qosify is not running. Start from the Overview tab." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1735 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1887 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2090 msgid "qosify is still running — leaving the qdiscs alone" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1253 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1361 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1362 +msgid "qosify package template" +msgstr "qosify paketvorlage" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1399 msgid "qosify-status" -msgstr "" +msgstr "qosify-status" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1885 msgid "qosify-status returned no output." -msgstr "" +msgstr "qosify-status gab keine ausgabe zurück." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:918 msgid "" "rpcd is not answering for qosify — check the ACL in /usr/share/rpcd/acl.d " "and restart rpcd" msgstr "" +"rpcd wird nicht für qosify beantwortet — überprüfen Sie die ACL in /usr/" +"share/rpcd/acl.d und starten Sie rpcd" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:832 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1609 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1671 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1728 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1734 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1886 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1812 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1874 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1931 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1937 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2089 msgid "rpcd is not answering for qosify, so the service state is unknown." msgstr "" +"rpcd antwortet nicht für qosify, so dass der servicezustand unbekannt ist." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:955 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:998 msgid "section name" -msgstr "" +msgstr "Name Sektion" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:953 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:996 msgid "section type" -msgstr "" +msgstr "Typ Sektion" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1529 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1533 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1731 +#, fuzzy msgid "share" -msgstr "" +msgstr "Freigabe" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1541 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1256 +msgid "timeout must be a whole number of seconds above 0." +msgstr "Timeout in Sekunden: muss eine Ganzzahl größer Null sein." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1739 msgid "total" msgstr "gesamt" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 msgid "value" msgstr "Wert" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "yes" msgstr "ja" diff --git a/luci-app-qosify/po/es/qosify.po b/luci-app-qosify/po/es/qosify.po index 6339b03b6..f97f7dc3a 100644 --- a/luci-app-qosify/po/es/qosify.po +++ b/luci-app-qosify/po/es/qosify.po @@ -10,33 +10,54 @@ msgstr "" "PO-Revision-Date: 2026-10-13 21:56+0000\n" "X-Generator: Weblate 2026.11.dev0\n" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1255 +msgid "\"%s\" is not a value qosify accepts for %s." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:483 +msgid "" +"%d class and alias sections — qosify has %d class slots, so %s and the rules " +"using them are dropped" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "%d interface" msgid_plural "%d interfaces" msgstr[0] "%d interfaz" msgstr[1] "%d interfaces" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:986 msgid "%d rule" msgid_plural "%d rules" msgstr[0] "%d regla" msgstr[1] "%d reglas" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:942 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:985 msgid "%d section" msgid_plural "%d sections" msgstr[0] "%d sección" msgstr[1] "%d secciones" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:294 +msgid "" +"%s \"%s\" is not a tc rate — tc refuses the qdisc, so nothing is shaped " +"although qosify reports the section active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:298 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:301 +msgid "%s \"%s\" is not a whole number — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 msgid "%s (current)" msgstr "%s (actual)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 msgid "%s (from bandwidth)" msgstr "%s (del ancho de banda)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2085 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2288 msgid "" "%s and %s are replaced with the templates shipped by the qosify package, and " "shaping is left disabled." @@ -44,25 +65,26 @@ msgstr "" "%s y %s se reemplazan con las plantillas que vienen con el paquete qosify, y " "el modelado se deja desactivado." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1809 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2012 msgid "" "%s came back empty although it is %d bytes on disk — refusing to overwrite it" msgstr "" "%s devolvió vacío aunque son %d bytes en el disco — se niega a sobrescribirlo" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2346 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2549 msgid "%s changed on disk — your unsaved edits are still in the editor." msgstr "" "%s se modificaron en el disco — sus ediciones no guardadas aún se encuentran " "en el editor." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2249 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2452 msgid "" "%s could not be read — the editor is left empty and will not be saved over " "it." -msgstr "No se pudo leer %s — el editor se deja vacío y no se guardará sobre él." +msgstr "" +"No se pudo leer %s — el editor se deja vacío y no se guardará sobre él." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1833 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2036 msgid "" "%s has changed since this editor was loaded. Saving now discards those " "changes." @@ -70,7 +92,7 @@ msgstr "" "%s ha cambiado desde que se cargó este editor. Guardar ahora descarta esos " "cambios." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1864 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2067 msgid "" "%s is %d bytes on disk but was never loaded into the editor — refusing to " "truncate it. Reload the page first." @@ -78,11 +100,11 @@ msgstr "" "%s ocupa %d bytes en el disco, pero nunca se cargó en el editor — por lo " "tanto, se niega a truncarlo. Recargue la página primero." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:392 msgid "%s is a list in this section — edit %s directly" msgstr "%s es una lista en esta sección — editar %s directamente" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1656 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1859 msgid "" "%s is not in the defaults list — qosify does not load it, so the Rules tab " "has no effect" @@ -90,7 +112,7 @@ msgstr "" "%s no está en la lista predeterminada — qosify no lo carga, por lo que la " "pestaña Reglas no tiene ningún efecto" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:286 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:314 msgid "" "%s is set to \"%s\" — qosify converts it with atoi(), so anything but a non-" "zero number means off" @@ -98,45 +120,45 @@ msgstr "" "%s se establece en \"%s\" — qosify lo convierte con atoi(), por lo que " "cualquier cosa que no sea un número distinto de cero significa apagado" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:750 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:793 msgid "%s quick settings" msgstr "Configuración rápida de %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2069 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2272 msgid "%s uploaded, qosify reloaded." msgstr "%s subido, qosify recargado." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2103 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2306 msgid "%s was not written: %s" msgstr "%s no se escribió: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2106 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2309 msgid "%s was reset but %s was not written: %s" msgstr "%s se reinició pero %s no se escribió: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1945 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2148 msgid "%s, applied (QoS disabled)." msgstr "%s, aplicado (QoS desactivado)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1950 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 msgid "" "%s, applied — qosify did not answer on ubus, so shaping could not be checked." msgstr "" "%s, aplicado — qosify no respondió en ubus, por lo que no se pudo comprobar " "el modelado." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1947 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 msgid "%s, applied." msgstr "%s, aplicado." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:459 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:468 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:500 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:509 msgid "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify ignores it" msgstr "" "%s: %s \"%s\" no es una clase, punto de código ni un valor entre 0 y 63 — " "qosify lo ignora" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:456 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:497 msgid "" "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify rejects the whole " "config and interface changes are not applied" @@ -144,7 +166,7 @@ msgstr "" "%s: %s \"%s\" no es una clase, punto de código ni un valor entre 0 y 63 — " "qosify rechaza toda la configuración y no se aplican los cambios de interfaz" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:465 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:506 msgid "" "%s: %s \"%s\" is not a codepoint or 0-63 — qosify drops this class and the " "rules using it" @@ -152,7 +174,13 @@ msgstr "" "%s: %s \"%s\" no es un punto de código ni un valor entre 0 y 63 — qosify " "descarta esta clase y las reglas que la utilizan" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:448 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:488 +msgid "" +"%s: %s \"%s\" is not a whole number — qosify.init passes it through atoll(), " +"which keeps only the leading digits" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:486 msgid "" "%s: %s cannot be checked — write it as one plain or fully quoted value, with " "no backslash" @@ -160,7 +188,7 @@ msgstr "" "%s: %s no se puede comprobar — escríbalo como un único valor simple o entre " "comillas completas, sin barra invertida" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:451 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:492 msgid "" "%s: %s contains shell metacharacters — qosify runs the tc command with sh -c " "as root, so they would break it or be executed" @@ -168,32 +196,58 @@ msgstr "" "%s: %s contiene metacaracteres de shell — qosify ejecuta el comando tc con " "sh -c como root, por lo que lo romperían o se ejecutarían" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "(alias)" msgstr "(alias)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1304 +msgid "(over file)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 msgid "(this qosify build has no NQB)" msgstr "(Esta compilación de Qosify no tiene NQB)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2185 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2388 msgid "A config defaults section already exists." msgstr "Ya existe una sección de configuración predeterminada." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2183 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2386 msgid "A section name may only contain letters, digits and underscores." msgstr "" "El nombre de una sección solo puede contener letras, dígitos y guiones bajos." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:856 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Action" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:899 msgid "Active" msgstr "Activo" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:957 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1162 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1000 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1206 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1240 msgid "Add" msgstr "Añadir" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1262 +msgid "Add failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1242 +msgid "" +"Added to the running qosify at once and not saved: an entry expires after " +"its timeout (the defaults timeout when left empty) and a qosify restart " +"drops it. One on a match from the rules file overrides it until then." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +msgid "" +"Adds a line to the editor below; Save & Apply writes it to the rules file, " +"so it is kept." +msgstr "" + #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:85 msgid "Adds atm, noatm or ptm when overhead_type is manual" msgstr "Agrega atm, noatm o ptm cuando overhead_type es manual" @@ -210,32 +264,32 @@ msgstr "Agrega mpu " msgid "Adds overhead when overhead_type is manual" msgstr "Agrega sobrecarga cuando overhead_type es manual" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:608 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:649 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:780 msgid "Advanced" msgstr "Avanzado" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "An empty %s stops all shaping. Continue?" msgstr "Un %s vacío detiene todo el procesamiento. ¿Continuar?" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:726 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:769 msgid "Automatic download rate" msgstr "Tasa de descarga automática" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:936 msgid "Autostart" msgstr "Inicio automático" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:967 msgid "Autostart state unknown — rpcd did not answer" msgstr "Estado de inicio automático desconocido — rpcd no respondió" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 msgid "Available" msgstr "Disponible" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1196 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1334 msgid "Backup" msgstr "Respaldo" @@ -247,12 +301,12 @@ msgstr "" "Ancho de banda para ambas direcciones, cuando no se ha configurado " "bandwidth_up ni bandwidth_down" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:716 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:759 msgid "Basic" msgstr "Básico" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:224 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2029 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:240 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2232 msgid "Binary content rejected" msgstr "Contenido binario rechazado" @@ -264,7 +318,7 @@ msgstr "Modo diffserv de CAKE" msgid "CAKE egress options" msgstr "Opciones de salida de CAKE" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "CAKE egress options, space separated." msgstr "Opciones de salida CAKE, espacio separado." @@ -272,7 +326,7 @@ msgstr "Opciones de salida CAKE, espacio separado." msgid "CAKE ingress options" msgstr "Opciones de ingreso de CAKE" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "CAKE ingress options, space separated." msgstr "Opciones de ingreso de CAKE, separadas por espacios." @@ -288,104 +342,108 @@ msgstr "" "Se agregó la palabra clave CAKE overhead a las opciones; el manual usa " "overhead y overhead_encap" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "CAKE overhead keyword. Use none if unsure." msgstr "Palabra clave CAKE overhead. Use none si no está seguro." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:564 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 msgid "Cancel" msgstr "Cancelar" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1356 msgid "Check Devices" msgstr "Comprobar dispositivos" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1330 msgid "Choose file…" msgstr "Elegir archivo…" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1114 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1158 msgid "Classes" msgstr "Clases" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1940 msgid "Cleanup exited with code %d" msgstr "La limpieza finalizó con el código %d" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1190 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear" msgstr "Limpiar" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2072 msgid "Clear configuration" msgstr "Limpiar configuración" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear editor" msgstr "Limpiar editor" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to disable autostart" msgstr "Haga clic para desactivar el inicio automático" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to enable autostart" msgstr "Haga clic para activar el inicio automático" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 msgid "Common CAKE options" msgstr "Opciones comunes de CAKE" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:604 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:645 msgid "Config" msgstr "Configuración" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared, qosify stopped." msgstr "Config borrada, qosify detenido." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared." msgstr "Configuración limpiada." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1915 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2118 msgid "Config saved" msgstr "Configuración guardada" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2042 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2050 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2253 msgid "Config: %s" msgstr "Configuración: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:566 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 msgid "Continue" msgstr "Continuar" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1391 msgid "Could not read %s: %s" msgstr "No se pudo leer %s: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:648 msgid "Counters" msgstr "Contadores" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1627 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1567 +msgid "Counters reset." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1830 msgid "DNS Entries" msgstr "Entradas DNS" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d of %d)" msgstr "Entradas DNS (%d de %d)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d)" msgstr "Entradas DNS (%d)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "" "DSCP codepoints: CS0–CS7, AF11–AF43, EF, VA, NQB, LE, DF (NQB needs qosify " "from June 2026; 24.10 and 25.12 do not have it). A raw value from 0 to 63 is " @@ -422,7 +480,7 @@ msgstr "Valor DSCP para ingreso y egreso, donde no están configurados" msgid "DSCP value for priority-marked packets" msgstr "Valor DSCP para paquetes marcados con prioridad" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "DSCP values" msgstr "Valores DSCP" @@ -438,12 +496,12 @@ msgstr "Valor DSCP predeterminado para paquetes UDP" msgid "Default timeout for dynamically added entries" msgstr "Tiempo de espera predeterminado para entradas agregadas dinámicamente" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1358 msgid "Defaults" msgstr "Valores predeterminados" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 msgid "" "Defaults qosify applies when a key is absent — interface: mode diffserv4, " "ingress 1, egress 1, nat 1, host_isolate 1, autorate_ingress 0. device: " @@ -457,21 +515,25 @@ msgstr "" "dscp_default_tcp/udp CS0, dscp_prio/dscp_bulk/dscp_icmp no configurado, " "bulk_trigger_pps/bulk_trigger_timeout/prio_max_avg_pkt_len 0 (desactivado)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Description" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Device" msgstr "Dispositivo" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1914 msgid "Device check done." msgstr "Comprobación del dispositivo realizada." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1714 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1917 msgid "Device check failed: %s" msgstr "Falló la comprobación del dispositivo: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:859 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Disabled" msgstr "Desactivado" @@ -479,30 +541,34 @@ msgstr "Desactivado" msgid "Downlink bandwidth (same format as tc)" msgstr "Ancho de banda de enlace descendente (mismo formato que tc)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Downlink bandwidth, same format as tc. Set just below line speed." msgstr "" "Ancho de banda de enlace descendente, mismo formato que tc. Ajustar justo " "por debajo de la velocidad de línea." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1247 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1393 msgid "Download" msgstr "Descargar" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Download bandwidth" msgstr "Ancho de banda de descarga" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:767 msgid "Download shaping" msgstr "Modelado de descarga" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1197 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1335 msgid "Download the current files from the router." msgstr "Descargar los archivos actuales del enrutador." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1241 +msgid "Dynamic Entries" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "" "Each line has two whitespace separated fields, match and dscp. dscp can be a " "raw value, a codepoint like CS0, or a class name. DNS entries are compared " @@ -513,22 +579,22 @@ msgstr "" "de clase. Las entradas DNS se comparan en el orden en que se especifican, " "utilizando la primera entrada que coincida." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "Egress CAKE options" msgstr "Opciones de egreso de CAKE" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2223 msgid "Empty file" msgstr "Archivo vacío" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 msgid "" "Empty the config editor? Nothing is written until you click Save & Apply." msgstr "" "¿Editor de configuración vacío? No se escribe nada hasta que hagas clic en " "Guardar y aplicar." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "" "Empty the rules editor? Nothing is written until you click Save & Apply." msgstr "" @@ -555,56 +621,64 @@ msgstr "Activar modelado de engreso" msgid "Enable ingress shaping" msgstr "Activar modelado de ingreso" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Enabled" msgstr "Activado" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:858 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 msgid "Enabled — Not Running" msgstr "Activado — No se está ejecutando" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:857 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 msgid "Enabled — Not Shaping (check config)" msgstr "Activado — No se está modelando (verificar configuración)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Encapsulation overhead" msgstr "Sobrecarga de encapsulación" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2182 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2385 msgid "Enter a section name." msgstr "Introduzca el nombre de una sección." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2156 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2359 msgid "Enter a single IPv4 address (qosify does not accept CIDR)." msgstr "Introduzca una única dirección IPv4 (qosify no acepta CIDR)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2159 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2362 msgid "" "Enter a single IPv6 address (qosify does not accept CIDR or a %zone suffix)." msgstr "" "Introduzca una única dirección IPv6 (qosify no acepta CIDR ni el sufijo " "%zone)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2141 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2344 msgid "Enter a value." msgstr "Introduzca un valor." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Entries" msgstr "Entradas" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1848 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1961 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1261 +msgid "Entry added." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1269 +msgid "Entry removed." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2051 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2164 msgid "Error: %s" msgstr "Error: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1845 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2048 msgid "Error: No valid config stanzas found." msgstr "Error: No se encontraron secciones de configuración válidas." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1763 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1965 msgid "" "Error: invalid characters in bandwidth or options fields. Use alphanumeric, " "spaces, hyphens, dots, colons only." @@ -613,41 +687,53 @@ msgstr "" "Utilice únicamente caracteres alfanuméricos, espacios, guiones, puntos y dos " "puntos." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1798 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2000 msgid "Error: name must be a device or interface name" msgstr "Error: el nombre debe ser un nombre de dispositivo o interfaz" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1769 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1971 msgid "Error: overhead must be a whole number of bytes" msgstr "Error: la sobrecarga debe ser un número entero de bytes" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1970 msgid "Error: overhead_mpu must be a whole number of bytes" msgstr "Error: overhead_mpu debe ser un número entero de bytes" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2070 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2001 +msgid "Error: qosify drops a name longer than %d characters" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2273 msgid "Errors:" msgstr "Errores:" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 +msgid "" +"Every shaped section is looked up again, one whose device now exists is " +"started and one whose device has gone is stopped. Nothing is reported back " +"by the call — the result shows in the Service table on the Overview tab." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 msgid "File" msgstr "Archivo" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1832 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 msgid "File changed on disk" msgstr "Archivo modificado en el disco" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2224 msgid "File too large (max 64KB)" msgstr "El archivo es demasiado grande (máximo 64 KB)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:667 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 msgid "Files" msgstr "Archivos" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Found (empty or invalid)" msgstr "Encontrado (vacío o no válido)" @@ -655,37 +741,33 @@ msgstr "Encontrado (vacío o no válido)" msgid "Grant access to LuCI app qosify" msgstr "Otorgar acceso a la aplicación LuCI qosify" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:728 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:771 msgid "Host isolation" msgstr "Aislamiento del host" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1169 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1216 msgid "IPv4 address, e.g. 1.1.1.1" msgstr "Dirección IPv4, p. ej. 1.1.1.1" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1170 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 msgid "IPv6 address, e.g. ff01::1" msgstr "Dirección IPv6, p. ej. ff01::1" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "Ingress CAKE options" msgstr "Opciones de ingreso de CAKE" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Interface" msgstr "Interfaz" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:741 -msgid "Invalid CAKE options can stop qosify starting." -msgstr "Las opciones de CAKE no válidas pueden impedir que qosify se inicie." - -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1173 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1220 msgid "Like dns:... but only matches cname entries" msgstr "Similar a dns:... pero solo coincide con las entradas cname" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:228 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:244 msgid "" "Line %d is longer than 1023 characters — the rule loader reads fixed-size " "lines and would split it, comment included" @@ -697,28 +779,29 @@ msgstr "" msgid "List of files with port/IP/host mappings" msgstr "Lista de archivos con asignaciones de puerto/IP/host" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 msgid "Loading..." msgstr "Cargando..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1212 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1350 msgid "Maintenance" msgstr "Mantenimiento" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Manual overhead" msgstr "Sobrecarga manual" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "Mapping file syntax" msgstr "Sintaxis del archivo de mapeo" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1692 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1895 msgid "Mapping files reloaded." msgstr "Archivos de mapeo recargados." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:434 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:462 msgid "" "Match not loaded by qosify on line %s — ports 1-65534, one IPv4/IPv6 address " "(no CIDR or %%zone), or dns:, dns_c:" @@ -728,23 +811,24 @@ msgstr "" #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:66 msgid "Maximum average packet length for marking a flow as priority" -msgstr "Longitud media máxima del paquete para marcar un flujo como prioritario" +msgstr "" +"Longitud media máxima del paquete para marcar un flujo como prioritario" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Minimum packet unit (MPU)" msgstr "Unidad mínima de paquete (MPU)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Missing" msgstr "Ausente" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Modified" msgstr "Modificado" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:433 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:461 msgid "" "More than two fields on line %s — qosify reads the rest of the line as the " "DSCP value and skips it" @@ -752,69 +836,78 @@ msgstr "" "Más de dos campos en la línea %s —qosify lee el resto de la línea como el " "valor DSCP y lo omite" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:770 msgid "NAT awareness" msgstr "Conciencia NAT" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Netdev to enable QoS on. Required." msgstr "Netdev para activar QoS. Es obligatorio." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No CAKE tin statistics." msgstr "No hay estadísticas sobre tin de CAKE." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1628 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1831 msgid "No DNS entries." msgstr "No hay entradas DNS." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:432 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:460 msgid "No DSCP target on line %s — qosify skips single-field lines" msgstr "" "No hay objetivo DSCP en la línea %s — qosify omite las líneas de campo único" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1107 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +msgid "No DSCP traffic yet." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1151 msgid "No classes defined in %s" msgstr "No se han definido clases en %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2142 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1257 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2345 msgid "No classes defined. Add classes in the Config tab first." msgstr "" "No hay clases definidas. Añada primero las clases en la pestaña " "Configuración." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1192 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1294 +msgid "No dynamic entries." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1328 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1329 msgid "No file selected" msgstr "No se ha seleccionado ningún archivo" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2209 msgid "No files selected." msgstr "No se ha seleccionado ningún archivo." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No output." msgstr "Sin salida." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 msgid "No per-class counters." msgstr "No hay contadores por clase." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2357 msgid "No spaces or # allowed in patterns or addresses." msgstr "" "No se permiten espacios ni el símbolo # en los patrones ni en las " "direcciones." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2030 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2233 msgid "No valid UCI config stanzas" msgstr "No hay secciones de configuración UCI válidas" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:913 msgid "Not Running" msgstr "No se está ejecutando" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1973 msgid "Note: bandwidth not set — CAKE will run unlimited on that direction." msgstr "" "Nota: el ancho de banda no está configurado; CAKE funcionará sin " @@ -825,43 +918,44 @@ msgid "Number of packets per second to trigger bulk flow detection" msgstr "" "Número de paquetes por segundo para activar la detección de flujo masivo" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1161 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1174 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1221 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1238 msgid "Only override the DSCP value if it is zero" msgstr "Solo se puede sobrescribir el valor DSCP si es cero" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:704 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:747 msgid "" "Only sent with host isolation on — add nat to common CAKE options to force it" msgstr "" "Solo se envía con el aislamiento del host activado — agregue nat a las " "opciones comunes de CAKE para forzarlo" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1017 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1060 msgid "Options" msgstr "Opciones" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:730 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:773 msgid "Overhead" msgstr "Sobrecarga" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "Overhead preset" msgstr "Preajuste de sobrecarga" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:603 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:644 msgid "Overview" msgstr "Vista general" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1834 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2037 msgid "Overwrite" msgstr "Sobreescribir" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2007 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2210 msgid "Overwrite config files" msgstr "Sobrescribir archivos de configuración" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1172 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 msgid "" "POSIX.2 extended regular expression for matching hostnames. Only works if " "dns lookups are passed to qosify via the add_dns_host ubus call." @@ -870,185 +964,194 @@ msgstr "" "Solo funciona si las consultas DNS se pasan a qosify mediante la llamada a " "ubus add_dns_host." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2353 msgid "Port must be 1-65534 (qosify rejects 65535)." msgstr "El puerto debe ser 1-65534 (qosify rechaza el 65535)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2149 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2349 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2352 msgid "Port must be a number or a range (4500, 5060-5061)." msgstr "El puerto debe ser un número o un rango (4500, 5060-5061)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "QoS Enabled" msgstr "QoS activado" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:721 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 msgid "Queueing mode" msgstr "Modo de cola" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1163 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1209 msgid "Quick Add" msgstr "Agregar rápidamente" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1016 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1059 msgid "Quick Add: %s" msgstr "Agregar rápidamente: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2356 msgid "Range start must not exceed end." msgstr "El inicio del rango no debe exceder el final." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 msgid "Re-check devices" msgstr "Volver a comprobar los dispositivos" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 msgid "Re-checking devices..." msgstr "Revisando los dispositivos..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:811 msgid "Re-read the mapping files only" msgstr "Volver a leer únicamente los archivos de mapeo" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 msgid "Re-reading the mapping files..." msgstr "Releyendo los archivos de mapeo..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 -msgid "" -"Re-runs the daemon's own device pass: every shaped section is looked up " -"again, one whose device now exists is started and one whose device has gone " -"is stopped. Nothing is reported back by the call — the result shows in the " -"Service table on the Overview tab." +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1351 +msgid "Re-runs the daemon's own device pass." msgstr "" -"Volver a ejecutar el proceso de detección de dispositivos del propio " -"demonio: se busca de nuevo en cada sección de modelado, se inicia la sección " -"cuyo dispositivo existe ahora y se detiene la sección cuyo dispositivo ha " -"desaparecido. La llamada no devuelve ningún resultado; este se muestra en la " -"tabla de Servicio de la pestaña Vista general." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2024 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2227 msgid "Read error" msgstr "Error de lectura" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Reading and validating files..." msgstr "Lectura y validación de archivos..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1681 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1884 msgid "Reading tc output..." msgstr "Leyendo la salida de tc..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1019 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1062 msgid "Reference" msgstr "Referencia" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload" msgstr "Recargar" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload Rules" msgstr "Reglas de recarga" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1695 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1898 msgid "Reload failed: %s" msgstr "Error al recargar: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1306 +msgid "Remove" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1270 +msgid "Remove failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 +msgid "Replaced with" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "Requires write access." msgstr "Requiere permisos de escritura." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2086 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1365 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2289 msgid "Reset" msgstr "Restablecer" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2120 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1554 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "Reset counters" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2323 msgid "Reset failed: %s" msgstr "Error al reiniciar: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2084 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2287 msgid "Reset to defaults" msgstr "Restablecer valores predeterminados" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2116 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2319 msgid "Reset to defaults, applied." msgstr "Restablecer a valores predeterminados, aplicado." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Resetting" msgstr "Restableciendo" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Restart" msgstr "Reiniciar" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1203 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1341 msgid "Restore" msgstr "Restaurar" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 -msgid "Restore qosify defaults" -msgstr "Restaurar la configuración predeterminada de qosify" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1359 +msgid "Restore qosify defaults. Shaping is left disabled." +msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Restoring defaults..." msgstr "Restaurando valores predeterminados..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:646 msgid "Rules" msgstr "Reglas" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1976 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2179 msgid "Rules saved" msgstr "Reglas guardadas" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2053 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2056 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2256 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2259 msgid "Rules: %s" msgstr "Reglas: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:868 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:911 msgid "Running & Shaping" msgstr "Ejecutándose y modelando" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:912 msgid "Running — Not Shaping" msgstr "Ejecutándose — Sin modelado" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:867 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:910 msgid "Running — Shaping Unknown" msgstr "Ejecutándose — Modelado desconocido" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1147 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:796 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 msgid "Save & Apply" msgstr "Guardar y aplicar" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1825 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1897 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1924 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1985 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2028 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2100 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2127 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2188 msgid "Save failed: %s" msgstr "Error al guardar: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Saving" msgstr "Guardando" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 msgid "Saving settings and applying..." msgstr "Guardando la configuración y aplicándola..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2186 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2389 msgid "Section %s already exists." msgstr "La sección %s ya existe." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1011 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1054 msgid "" "Section name is the class name that rules and dscp_* values refer to. " "qosify.init reads config alias the same way as config class." @@ -1057,45 +1160,45 @@ msgstr "" "reglas y los valores dscp_*. qosify.init lee el alias de configuración de la " "misma manera que la clase de configuración." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Sending %s to qosify..." msgstr "Enviando %s a qosify..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Sent to CAKE as atm, noatm or ptm." msgstr "Enviado a CAKE como atm, noatm o ptm." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "Sent to CAKE as ether-vlan, once per tag." msgstr "Enviado a CAKE como ether-vlan, una vez por etiqueta." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Sent to CAKE as mpu, in bytes." msgstr "Enviado a CAKE como mpu, en bytes." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Sent to CAKE as overhead, in bytes." msgstr "Enviado a CAKE como sobrecarga, en bytes." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:663 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:706 msgid "Service" msgstr "Servicio" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1745 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1948 msgid "Service action failed: %s" msgstr "La acción del servicio falló: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1817 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 msgid "Settings saved" msgstr "Configuración guardada" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:723 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:937 msgid "Shaping" msgstr "Modelado" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Size" msgstr "Tamaño" @@ -1103,34 +1206,38 @@ msgstr "Tamaño" msgid "Skip this section" msgstr "Omitir esta sección" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Start" msgstr "Iniciar" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:606 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:891 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:647 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:934 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Status" msgstr "Estado" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:855 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:898 msgid "Status Unknown" msgstr "Estado desconocido" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:809 msgid "Stop" msgstr "Detener" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1167 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 msgid "TCP single port, or range from to " msgstr "Puerto TCP único, o rango desde hasta " -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1680 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1883 msgid "The detailed tc output needs write access to this page." msgstr "" "La salida detallada de tc necesita permisos de escritura en esta página." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:590 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1309 +msgid "The first %d entries are shown." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:631 msgid "" "The qosify UCI configuration could not be loaded — class and interface lists " "may be incomplete." @@ -1138,14 +1245,14 @@ msgstr "" "No se pudo cargar la configuración UCI de qosify — es posible que las listas " "de clases e interfaces estén incompletas." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1342 msgid "" "The selected files replace the ones on the router and qosify is reloaded." msgstr "" "Los archivos seleccionados reemplazan a los del enrutador y se vuelve a " "cargar qosify." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2008 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2211 msgid "" "The selected files replace the ones on the router and qosify is reloaded. " "Download a backup from this tab first if you need one." @@ -1160,33 +1267,37 @@ msgstr "" "Tiempo por debajo del umbral bulk_trigger_pps hasta que se elimine una marca " "de flujo masivo" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 msgid "Traffic by CAKE Tin" msgstr "Tráfico Tin por CAKE" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1401 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1548 msgid "Traffic by Class" msgstr "Tráfico por clase" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:596 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1549 +msgid "Traffic by DSCP" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:637 msgid "Traffic shaping and DSCP classification via qosify" msgstr "Modelado de tráfico y DSCP mediante qosify" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1168 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 msgid "UDP single port, or range from to " msgstr "UDP de un solo puerto o rango desde hasta " -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:864 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:866 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:907 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:909 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:968 msgid "Unknown" msgstr "Desconocido" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 msgid "Unknown class/DSCP target: %s" msgstr "Destino de clase/DSCP desconocido: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "Unticked sets disabled 1 and qosify skips this section." msgstr "" "Si no se marca la casilla, se desactiva la opción 1 y qosify omite esta " @@ -1196,81 +1307,81 @@ msgstr "" msgid "Uplink bandwidth (same format as tc)" msgstr "Ancho de banda de enlace ascendente (mismo formato que tc)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Uplink bandwidth, same format as tc. Set just below line speed." msgstr "" "Ancho de banda de enlace ascendente, mismo formato que tc. Ajustar justo por " "debajo de la velocidad de línea." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 msgid "Upload" msgstr "Cargar" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1348 msgid "Upload & Apply" msgstr "Subir y aplicar" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2009 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2212 msgid "Upload and apply" msgstr "Subir y aplicar" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Upload bandwidth" msgstr "Ancho de banda de carga" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2061 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2264 msgid "Upload error: %s" msgstr "Error de carga: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2078 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2281 msgid "Upload failed: %s" msgstr "Error al cargar: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 msgid "Upload shaping" msgstr "Modelado de carga" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Uploading" msgstr "Cargando" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:892 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:935 msgid "Uptime" msgstr "Tiempo de actividad" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "VLAN tags" msgstr "Etiquetas VLAN" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Valid" msgstr "Válido" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1951 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 msgid "Warning: %s but qosify is not shaping traffic — check the Status tab." msgstr "" "Advertencia: %s pero qosify no está modelando el tráfico — compruebe la " "pestaña Estado." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Working" msgstr "Trabajando" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "Write empty file" msgstr "Escribir archivo vacío" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 msgid "Writing config and reloading qosify..." msgstr "Escribiendo la configuración y recargando qosify..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Writing rules and reloading qosify..." msgstr "Escribiendo reglas y recargando qosify..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:633 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:675 msgid "" "You have read-only access to this page, so editing and service control are " "disabled." @@ -1278,11 +1389,17 @@ msgstr "" "Tiene acceso de solo lectura a esta página, por lo que la edición y el " "control del servicio están desactivados." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "" +"Zero qosify's own counters (get_stats)? The CAKE tin counters belong to tc " +"and are kept." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 msgid "active" msgstr "activo" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1969 msgid "" "bandwidth_down does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" @@ -1290,7 +1407,7 @@ msgstr "" "bandwidth_down no parece una tasa tc (100mbit, 12 MBps, ilimitado) — de " "todos modos, se deja pasar" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1968 msgid "" "bandwidth_up does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" @@ -1298,7 +1415,7 @@ msgstr "" "bandwidth_up no parece una tasa tc (100mbit, 12 MBps, ilimitado) — de todos " "modos, se deja pasar" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1012 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1055 msgid "" "config device takes the same options, with name set to a netdev. nat " "defaults to 1 for interfaces and 0 for devices." @@ -1307,15 +1424,15 @@ msgstr "" "establecido en un netdev. nat por defecto es 1 para interfaces y 0 para " "dispositivos." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "device %s" msgstr "dispositivo %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "device: %s, ingress: %s, egress: %s" msgstr "dispositivo: %s, ingreso: %s, egreso: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:289 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:317 msgid "" "disabled is set to \"%s\" — config_get_bool does not recognise that, so the " "section stays enabled" @@ -1323,45 +1440,63 @@ msgstr "" "desactivado está configurado para «%s» — config_get_bool no lo reconoce, por " "lo que la sección permanece activada" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2129 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +msgid "dump did not answer." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2332 msgid "e.g. %s" msgstr "p. ej. %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1171 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 msgid "fnmatch() pattern supporting * and ? as wildcard characters" msgstr "fnmatch() admite patrones * y ? como caracteres comodín" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1613 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1816 msgid "get_stats did not answer." msgstr "get_stats no respondió." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 msgid "inactive" msgstr "inactivo" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "ingress %s, egress %s" msgstr "ingreso %s, egreso %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:282 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:310 msgid "ingress and egress are both 0 — nothing is shaped" msgstr "ingress y egress son ambos 0 — no se modela nada" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "interface %s" msgstr "interfaz %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1155 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1199 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1235 msgid "match" msgstr "coincidir" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:274 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:292 +msgid "" +"mode \"%s\" is not a CAKE diffserv mode — tc refuses the qdisc, so nothing " +"is shaped although qosify reports the section active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:291 +msgid "" +"name \"%s\" is dropped by qosify — it takes at most %d characters and no " +"quote" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:290 msgid "" "name is not set — qosify.init sends an empty device name and this section is " "never applied" @@ -1369,7 +1504,7 @@ msgstr "" "el nombre no está configurado — qosify.init envía un nombre de dispositivo " "vacío y esta sección nunca se aplica" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:278 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:306 msgid "" "nat is not sent: qosify only emits nat/nonat inside the host_isolate branch. " "CAKE does accept flows plus nat — put nat in options to apply it" @@ -1377,7 +1512,7 @@ msgstr "" "nat no se envía: qosify solo emite nat/nonat dentro de la rama host_isolate. " "CAKE sí acepta flujos más nat — agregue nat en las opciones para aplicarlo" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:279 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:307 msgid "" "nat only reaches %s — put it in options, or in both ingress_options and " "egress_options" @@ -1393,69 +1528,92 @@ msgstr "" "interfaz netifd (interfaz de configuración) o netdev (dispositivo de " "configuración) para activar QoS en" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "netifd interface to enable QoS on. Required." msgstr "interfaz netifd para activar QoS. Es obligatorio." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1313 +msgid "never" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "no" msgstr "no" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:284 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:312 msgid "no bandwidth_down or bandwidth — ingress CAKE runs unlimited" msgstr "" "sin bandwidth_down o bandwidth — ingress CAKE se ejecuta de forma ilimitada" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:283 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:311 msgid "no bandwidth_up or bandwidth — egress CAKE runs unlimited" msgstr "" "sin bandwidth_up ni bandwidth — egress CAKE se ejecuta de forma ilimitada" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "none" msgstr "ninguno" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:281 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:309 msgid "overhead and overhead_encap are ignored unless overhead_type is manual" msgstr "" "overhead y overhead_encap se ignoran a menos que overhead_type sea manual" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:595 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:299 +msgid "overhead_encap \"%s\" is not atm, noatm or ptm — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:296 +msgid "" +"overhead_type \"%s\" is not one qosify.init knows, so no overhead is set" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:302 +msgid "overhead_vlan \"%s\" is not 0, 1 or 2 — qosify.init adds no ether-vlan" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:636 #: applications/luci-app-qosify/root/usr/share/luci/menu.d/luci-app-qosify.json:3 msgid "qosify" msgstr "Qosify" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:847 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:890 msgid "" "qosify did not appear on ubus, so its config was not applied — press Reload" msgstr "" "qosify no apareció en ubus, por lo que su configuración no se aplicó — " "presione Recargar" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:833 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1729 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:876 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1932 msgid "qosify did not come up — check the system log" msgstr "qosify no se inició — revise el registro del sistema" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1610 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1672 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1813 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1875 msgid "qosify is not running. Start from the Overview tab." msgstr "qosify no se está ejecutando. Comience desde la pestaña Vista general." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1735 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1887 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2090 msgid "qosify is still running — leaving the qdiscs alone" msgstr "qosify sigue en ejecución — dejando los qdiscs solos" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1253 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1361 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1362 +msgid "qosify package template" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1399 msgid "qosify-status" msgstr "qosify-status" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1885 msgid "qosify-status returned no output." msgstr "qosify-status no devolvió ningún resultado." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:918 msgid "" "rpcd is not answering for qosify — check the ACL in /usr/share/rpcd/acl.d " "and restart rpcd" @@ -1463,41 +1621,66 @@ msgstr "" "rpcd no responde a qosify — comprobar la ACL en /usr/share/rpcd/acl.d y " "reiniciar rpcd" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:832 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1609 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1671 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1728 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1734 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1886 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1812 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1874 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1931 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1937 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2089 msgid "rpcd is not answering for qosify, so the service state is unknown." msgstr "" "rpcd no responde a qosify, por lo que se desconoce el estado del servicio." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:955 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:998 msgid "section name" msgstr "nombre de la sección" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:953 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:996 msgid "section type" msgstr "tipo de sección" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1529 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1533 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1731 msgid "share" msgstr "compartir" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1541 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1256 +msgid "timeout must be a whole number of seconds above 0." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1739 msgid "total" msgstr "total" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 msgid "value" msgstr "valor" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "yes" msgstr "sí" +#~ msgid "Invalid CAKE options can stop qosify starting." +#~ msgstr "" +#~ "Las opciones de CAKE no válidas pueden impedir que qosify se inicie." + +#~ msgid "" +#~ "Re-runs the daemon's own device pass: every shaped section is looked up " +#~ "again, one whose device now exists is started and one whose device has " +#~ "gone is stopped. Nothing is reported back by the call — the result shows " +#~ "in the Service table on the Overview tab." +#~ msgstr "" +#~ "Volver a ejecutar el proceso de detección de dispositivos del propio " +#~ "demonio: se busca de nuevo en cada sección de modelado, se inicia la " +#~ "sección cuyo dispositivo existe ahora y se detiene la sección cuyo " +#~ "dispositivo ha desaparecido. La llamada no devuelve ningún resultado; " +#~ "este se muestra en la tabla de Servicio de la pestaña Vista general." + +#~ msgid "Restore qosify defaults" +#~ msgstr "Restaurar la configuración predeterminada de qosify" + #~ msgid "%s contains a quote — qosify rejects the whole value" #~ msgstr "%s contiene una comilla — qosify rechaza todo el valor" diff --git a/luci-app-qosify/po/fr/qosify.po b/luci-app-qosify/po/fr/qosify.po new file mode 100644 index 000000000..9baf00988 --- /dev/null +++ b/luci-app-qosify/po/fr/qosify.po @@ -0,0 +1,1562 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: fr\n" +"Content-Transfer-Encoding: 8bit\n" +"Last-Translator: Martin Olmer \n" +"Language-Team: French \n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"PO-Revision-Date: 2026-11-06 09:48+0000\n" +"X-Generator: Weblate 2026.11.2.dev0\n" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1302 +msgid "\"%s\" is not a value qosify accepts for %s." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:521 +msgid "" +"%d class and alias sections — qosify has %d class slots, so %s and the rules " +"using them are dropped" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:970 +msgid "%d interface" +msgid_plural "%d interfaces" +msgstr[0] "" +msgstr[1] "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1031 +msgid "%d rule" +msgid_plural "%d rules" +msgstr[0] "" +msgstr[1] "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1030 +msgid "%d section" +msgid_plural "%d sections" +msgstr[0] "" +msgstr[1] "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:326 +msgid "" +"%s \"%s\" is not a tc rate — tc refuses the qdisc, so nothing is shaped " +"although qosify reports the section active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:330 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:333 +msgid "%s \"%s\" is not a whole number — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:769 +msgid "%s (current)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:787 +msgid "%s (from bandwidth)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2339 +msgid "" +"%s and %s are replaced with the templates shipped by the qosify package, and " +"shaping is left disabled." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2063 +msgid "" +"%s came back empty although it is %d bytes on disk — refusing to overwrite it" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2600 +msgid "%s changed on disk — your unsaved edits are still in the editor." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2503 +msgid "" +"%s could not be read — the editor is left empty and will not be saved over " +"it." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2087 +msgid "" +"%s has changed since this editor was loaded. Saving now discards those " +"changes." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2118 +msgid "" +"%s is %d bytes on disk but was never loaded into the editor — refusing to " +"truncate it. Reload the page first." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:426 +msgid "%s is a list in this section — edit %s directly" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1908 +msgid "" +"%s is not in the defaults list — qosify does not load it, so the Rules tab " +"has no effect" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:432 +msgid "%s is not one plain statement in this section — edit %s directly" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:347 +msgid "" +"%s is set to \"%s\" — qosify converts it with atoi(), so anything but a non-" +"zero number means off" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:837 +msgid "%s quick settings" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2323 +msgid "%s uploaded, qosify reloaded." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2357 +msgid "%s was not written: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2360 +msgid "%s was reset but %s was not written: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 +msgid "%s, applied (QoS disabled)." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2204 +msgid "" +"%s, applied — qosify did not answer on ubus, so shaping could not be checked." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2201 +msgid "%s, applied." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:538 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:547 +msgid "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify ignores it" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:535 +msgid "" +"%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify rejects the whole " +"config and interface changes are not applied" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:544 +msgid "" +"%s: %s \"%s\" is not a codepoint or 0-63 — qosify drops this class and the " +"rules using it" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:526 +msgid "" +"%s: %s \"%s\" is not a whole number — qosify.init passes it through atoll(), " +"which keeps only the leading digits" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:524 +msgid "" +"%s: %s cannot be checked — write it as one plain or fully quoted value, with " +"no backslash" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:530 +msgid "" +"%s: %s contains shell metacharacters — qosify runs the tc command with sh -c " +"as root, so they would break it or be executed" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1907 +msgid "%s: multiqueue is set, but %s has one queue, so qosify uses plain cake" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1199 +msgid "(alias)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1351 +msgid "(over file)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:501 +msgid "(this qosify build has no NQB)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2439 +msgid "A config defaults section already exists." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2437 +msgid "A section name may only contain letters, digits and underscores." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1399 +msgid "Action" +msgstr "Action" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 +msgid "Active" +msgstr "Actif" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1045 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1253 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1287 +msgid "Add" +msgstr "Ajouter" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1309 +msgid "Add failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1289 +msgid "" +"Added to the running qosify at once and not saved: an entry expires after " +"its timeout (the defaults timeout when left empty) and a qosify restart " +"drops it. One on a match from the rules file overrides it until then." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1257 +msgid "" +"Adds a line to the editor below; Save & Apply writes it to the rules file, " +"so it is kept." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:86 +msgid "Adds atm, noatm or ptm when overhead_type is manual" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:88 +msgid "Adds ether-vlan once per level (1 or 2)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:87 +msgid "Adds mpu " +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:85 +msgid "Adds overhead when overhead_type is manual" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:693 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:824 +msgid "Advanced" +msgstr "Avancé" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2124 +msgid "An empty %s stops all shaping. Continue?" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:813 +msgid "Automatic download rate" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 +msgid "Autostart" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1012 +msgid "Autostart state unknown — rpcd did not answer" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:971 +msgid "Available" +msgstr "Disponible" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1381 +msgid "Backup" +msgstr "Sauvegarder" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:76 +msgid "" +"Bandwidth for both directions, where bandwidth_up or bandwidth_down is not " +"set" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:803 +msgid "Basic" +msgstr "Basique" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:272 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2283 +msgid "Binary content rejected" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:79 +msgid "CAKE diffserv mode" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:90 +msgid "CAKE egress options" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:826 +msgid "CAKE egress options, space separated." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:89 +msgid "CAKE ingress options" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:825 +msgid "CAKE ingress options, space separated." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:91 +msgid "CAKE options for ingress + egress" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:84 +msgid "" +"CAKE overhead keyword added to options; manual uses overhead and " +"overhead_encap" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:818 +msgid "CAKE overhead keyword. Use none if unsure." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:648 +msgid "Cancel" +msgstr "Annuler" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1403 +msgid "Check Devices" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1377 +msgid "Choose file…" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +msgid "Classes" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1989 +msgid "Cleanup exited with code %d" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1237 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2244 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2250 +msgid "Clear" +msgstr "Nettoyer" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2123 +msgid "Clear configuration" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2244 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2250 +msgid "Clear editor" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1017 +msgid "Click to disable autostart" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1017 +msgid "Click to enable autostart" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:827 +msgid "Common CAKE options" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:689 +msgid "Config" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2148 +msgid "Config cleared, qosify stopped." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2148 +msgid "Config cleared." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2169 +msgid "Config saved" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2296 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2304 +msgid "Config: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:650 +msgid "Continue" +msgstr "Continuer" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1438 +msgid "Could not read %s: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:692 +msgid "Counters" +msgstr "Compteurs" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1614 +msgid "Counters reset." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1599 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1877 +msgid "DNS Entries" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1557 +msgid "DNS Entries (%d of %d)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1557 +msgid "DNS Entries (%d)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1110 +msgid "" +"DSCP codepoints: CS0–CS7, AF11–AF43, EF, VA, NQB, LE, DF (NQB needs qosify " +"from June 2026; 24.10 and 25.12 do not have it). A raw value from 0 to 63 is " +"accepted too, and any dscp_* value may also name a class. Prefix with + to " +"override only when the DSCP field is zero (as described from qosify c698349; " +"24.10 and 25.12 do not honour it)." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:63 +msgid "DSCP value for ICMP packets" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:65 +msgid "DSCP value for bulk-marked packets" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:71 +msgid "DSCP value for egress" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:70 +msgid "DSCP value for ingress" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:69 +msgid "DSCP value for ingress and egress, where they are not set" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:64 +msgid "DSCP value for priority-marked packets" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1110 +msgid "DSCP values" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:61 +msgid "Default DSCP value for TCP packets" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:62 +msgid "Default DSCP value for UDP packets" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:60 +msgid "Default timeout for dynamically added entries" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1111 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1405 +msgid "Defaults" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1111 +msgid "" +"Defaults qosify applies when a key is absent — interface: mode diffserv4, " +"ingress 1, egress 1, nat 1, host_isolate 1, autorate_ingress 0, multiqueue " +"0. device: identical except nat 0. defaults: timeout 3600, dscp_default_tcp/" +"udp CS0, dscp_prio/dscp_bulk/dscp_icmp unset, bulk_trigger_pps/" +"bulk_trigger_timeout/prio_max_avg_pkt_len 0 (disabled)." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1399 +msgid "Description" +msgstr "Description" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:805 +msgid "Device" +msgstr "Appareil" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1963 +msgid "Device check done." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1966 +msgid "Device check failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:947 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:969 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1018 +msgid "Disabled" +msgstr "Désactivé" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:75 +msgid "Downlink bandwidth (same format as tc)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 +msgid "Downlink bandwidth, same format as tc. Set just below line speed." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1383 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1440 +msgid "Download" +msgstr "Télécharger" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 +msgid "Download bandwidth" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:811 +msgid "Download shaping" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1382 +msgid "Download the current files from the router." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1288 +msgid "Dynamic Entries" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1260 +msgid "" +"Each line has two whitespace separated fields, match and dscp. dscp can be a " +"raw value, a codepoint like CS0, or a class name. DNS entries are compared " +"in the order in which they are specified, using the first matching entry." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:826 +msgid "Egress CAKE options" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2274 +msgid "Empty file" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2244 +msgid "" +"Empty the config editor? Nothing is written until you click Save & Apply." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2250 +msgid "" +"Empty the rules editor? Nothing is written until you click Save & Apply." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:80 +msgid "Enable CAKE NAT host detection via conntrack" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:82 +msgid "Enable CAKE automatic rate estimation for ingress" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:81 +msgid "Enable CAKE host isolation" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:78 +msgid "Enable egress shaping" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:77 +msgid "Enable ingress shaping" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:969 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1018 +msgid "Enabled" +msgstr "Activé" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:946 +msgid "Enabled — Not Running" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 +msgid "Enabled — Not Shaping (check config)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:798 +msgid "Encapsulation overhead" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2436 +msgid "Enter a section name." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2410 +msgid "Enter a single IPv4 address (qosify does not accept CIDR)." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2413 +msgid "" +"Enter a single IPv6 address (qosify does not accept CIDR or a %zone suffix)." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2395 +msgid "Enter a value." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1029 +msgid "Entries" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1308 +msgid "Entry added." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1316 +msgid "Entry removed." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2102 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2215 +msgid "Error: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2099 +msgid "Error: No valid config stanzas found." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2014 +msgid "" +"Error: invalid characters in bandwidth or options fields. Use alphanumeric, " +"spaces, hyphens, dots, colons only." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2051 +msgid "Error: name must be a device or interface name" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 +msgid "Error: overhead must be a whole number of bytes" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2019 +msgid "Error: overhead_mpu must be a whole number of bytes" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2052 +msgid "Error: qosify drops a name longer than %d characters" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2324 +msgid "Errors:" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1400 +msgid "" +"Every shaped section is looked up again, one whose device now exists is " +"started and one whose device has gone is stopped. Nothing is reported back " +"by the call — the result shows in the Service table on the Overview tab." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1029 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1383 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1390 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1407 +msgid "File" +msgstr "Fichier" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2086 +msgid "File changed on disk" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2275 +msgid "File too large (max 64KB)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 +msgid "Files" +msgstr "Fichiers" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1026 +msgid "Found (empty or invalid)" +msgstr "" + +#: applications/luci-app-qosify/root/usr/share/rpcd/acl.d/luci-app-qosify.json:3 +msgid "Grant access to LuCI app qosify" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:815 +msgid "Host isolation" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1247 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1263 +msgid "IPv4 address, e.g. 1.1.1.1" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1247 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1264 +msgid "IPv6 address, e.g. ff01::1" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:825 +msgid "Ingress CAKE options" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:805 +msgid "Interface" +msgstr "Interface" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1267 +msgid "Like dns:... but only matches cname entries" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:276 +msgid "" +"Line %d is longer than 1023 characters — the rule loader reads fixed-size " +"lines and would split it, comment included" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:59 +msgid "List of files with port/IP/host mappings" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1292 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1597 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1599 +msgid "Loading..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1397 +msgid "Maintenance" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:797 +msgid "Manual overhead" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1260 +msgid "Mapping file syntax" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1944 +msgid "Mapping files reloaded." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:500 +msgid "" +"Match not loaded by qosify on line %s — ports 1-%d, one IPv4/IPv6 address " +"(no CIDR or %%zone), or dns:, dns_c:, dns_q:" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:66 +msgid "Maximum average packet length for marking a flow as priority" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:821 +msgid "Minimum packet unit (MPU)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:971 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1026 +msgid "Missing" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1029 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1383 +msgid "Modified" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:499 +msgid "" +"More than two fields on line %s — qosify reads the rest of the line as the " +"DSCP value and skips it" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:816 +msgid "Multiqueue CAKE" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:814 +msgid "NAT awareness" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:805 +msgid "Netdev to enable QoS on. Required." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1834 +msgid "No CAKE tin statistics." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1878 +msgid "No DNS entries." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:498 +msgid "No DSCP target on line %s — qosify skips single-field lines" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1818 +msgid "No DSCP traffic yet." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1197 +msgid "No classes defined in %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1304 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2396 +msgid "No classes defined. Add classes in the Config tab first." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1341 +msgid "No dynamic entries." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1375 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1376 +msgid "No file selected" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2260 +msgid "No files selected." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1834 +msgid "No output." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1814 +msgid "No per-class counters." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2408 +msgid "No spaces or # allowed in patterns or addresses." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2284 +msgid "No valid UCI config stanzas" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:958 +msgid "Not Running" +msgstr "Ne fonctionne pas" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2022 +msgid "Note: bandwidth not set — CAKE will run unlimited on that direction." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:67 +msgid "Number of packets per second to trigger bulk flow detection" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1252 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1268 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1285 +msgid "Only override the DSCP value if it is zero" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:791 +msgid "" +"Only sent with host isolation on — add nat to common CAKE options to force it" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1106 +msgid "Options" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:817 +msgid "Overhead" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:818 +msgid "Overhead preset" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:688 +msgid "Overview" +msgstr "Vue d'ensemble" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2088 +msgid "Overwrite" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2261 +msgid "Overwrite config files" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1266 +msgid "" +"POSIX.2 extended regular expression for matching hostnames. Only works if " +"dns lookups are passed to qosify via the add_dns_host ubus call." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2404 +msgid "Port must be 1-%d." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2400 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2403 +msgid "Port must be a number or a range (4500, 5060-5061)." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:804 +msgid "QoS Enabled" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 +msgid "Queueing mode" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1256 +msgid "Quick Add" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1105 +msgid "Quick Add: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2407 +msgid "Range start must not exceed end." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1400 +msgid "Re-check devices" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1959 +msgid "Re-checking devices..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:855 +msgid "Re-read the mapping files only" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1942 +msgid "Re-reading the mapping files..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1398 +msgid "Re-runs the daemon's own device pass." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2278 +msgid "Read error" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2289 +msgid "Reading and validating files..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1933 +msgid "Reading tc output..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1108 +msgid "Reference" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:852 +msgid "Reload" +msgstr "Recharger" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:852 +msgid "Reload Rules" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1947 +msgid "Reload failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 +msgid "Remove" +msgstr "Désinstaller" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1317 +msgid "Remove failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1407 +msgid "Replaced with" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1834 +msgid "Requires write access." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1412 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2340 +msgid "Reset" +msgstr "Remise à zéro" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1601 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1610 +msgid "Reset counters" +msgstr "Remise à zéro des compteurs" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1615 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2374 +msgid "Reset failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2338 +msgid "Reset to defaults" +msgstr "Ré-initialisation" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2370 +msgid "Reset to defaults, applied." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2349 +msgid "Resetting" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:851 +msgid "Restart" +msgstr "Redémarrer" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1388 +msgid "Restore" +msgstr "Restaurer" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1406 +msgid "Restore qosify defaults. Shaping is left disabled." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2349 +msgid "Restoring defaults..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:690 +msgid "Rules" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2230 +msgid "Rules saved" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2307 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2310 +msgid "Rules: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:956 +msgid "Running & Shaping" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:957 +msgid "Running — Not Shaping" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:955 +msgid "Running — Shaping Unknown" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:840 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1238 +msgid "Save & Apply" +msgstr "Enregistrer et Appliquer" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2079 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2151 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2178 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2239 +msgid "Save failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2057 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2160 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2226 +msgid "Saving" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2057 +msgid "Saving settings and applying..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2440 +msgid "Section %s already exists." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1100 +msgid "" +"Section name is the class name that rules and dscp_* values refer to. qosify." +"init reads config alias the same way as config class." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1976 +msgid "Sending %s to qosify..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:798 +msgid "Sent to CAKE as atm, noatm or ptm." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:822 +msgid "Sent to CAKE as ether-vlan, once per tag." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:821 +msgid "Sent to CAKE as mpu, in bytes." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:797 +msgid "Sent to CAKE as overhead, in bytes." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:750 +msgid "Service" +msgstr "Service" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1997 +msgid "Service action failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2071 +msgid "Settings saved" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:810 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:982 +msgid "Shaping" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1029 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1383 +msgid "Size" +msgstr "Taille" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:73 +msgid "Skip this section" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:851 +msgid "Start" +msgstr "Démarrer" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:691 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:979 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1029 +msgid "Status" +msgstr "État" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 +msgid "Status Unknown" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:853 +msgid "Stop" +msgstr "Arrêter" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1261 +msgid "TCP single port, or range from to " +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1932 +msgid "The detailed tc output needs write access to this page." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1356 +msgid "The first %d entries are shown." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:675 +msgid "" +"The qosify UCI configuration could not be loaded — class and interface lists " +"may be incomplete." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1389 +msgid "" +"The selected files replace the ones on the router and qosify is reloaded." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2262 +msgid "" +"The selected files replace the ones on the router and qosify is reloaded. " +"Download a backup from this tab first if you need one." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:68 +msgid "Time below bulk_trigger_pps threshold until a bulk flow mark is removed" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1597 +msgid "Traffic by CAKE Tin" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1595 +msgid "Traffic by Class" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1596 +msgid "Traffic by DSCP" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:681 +msgid "Traffic shaping and DSCP classification via qosify" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1262 +msgid "UDP single port, or range from to " +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:952 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:954 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1013 +msgid "Unknown" +msgstr "Inconnue" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:501 +msgid "Unknown class/DSCP target: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:804 +msgid "Unticked sets disabled 1 and qosify skips this section." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:74 +msgid "Uplink bandwidth (same format as tc)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:806 +msgid "Uplink bandwidth, same format as tc. Set just below line speed." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1390 +msgid "Upload" +msgstr "Téléverser" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1395 +msgid "Upload & Apply" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2263 +msgid "Upload and apply" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:806 +msgid "Upload bandwidth" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2315 +msgid "Upload error: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2332 +msgid "Upload failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:812 +msgid "Upload shaping" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2289 +msgid "Uploading" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:980 +msgid "Uptime" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:83 +msgid "Use cake_mq instead of cake on devices with more than one queue" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:822 +msgid "VLAN tags" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1026 +msgid "Valid" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2205 +msgid "Warning: %s but qosify is not shaping traffic — check the Status tab." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1942 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1959 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1976 +msgid "Working" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2124 +msgid "Write empty file" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2160 +msgid "Writing config and reloading qosify..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2226 +msgid "Writing rules and reloading qosify..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +msgid "" +"You have read-only access to this page, so editing and service control are " +"disabled." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1610 +msgid "" +"Zero qosify's own counters (get_stats)? The CAKE tin counters belong to tc " +"and are kept." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:989 +msgid "active" +msgstr "actif" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2018 +msgid "" +"bandwidth_down does not look like a tc rate (100mbit, 12MBps, unlimited) — " +"passing it through anyway" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2017 +msgid "" +"bandwidth_up does not look like a tc rate (100mbit, 12MBps, unlimited) — " +"passing it through anyway" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1101 +msgid "" +"config device takes the same options, with name set to a netdev. nat " +"defaults to 1 for interfaces and 0 for devices." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:988 +msgid "device %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:990 +msgid "device: %s, ingress: %s, egress: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:350 +msgid "" +"disabled is set to \"%s\" — config_get_bool does not recognise that, so the " +"section stays enabled" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1337 +msgid "dump did not answer." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:787 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:805 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:825 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:826 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:827 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1251 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1283 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2383 +msgid "e.g. %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1265 +msgid "fnmatch() pattern supporting * and ? as wildcard characters" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1863 +msgid "get_stats did not answer." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:989 +msgid "inactive" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1199 +msgid "ingress %s, egress %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:343 +msgid "ingress and egress are both 0 — nothing is shaped" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:988 +msgid "interface %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1246 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1282 +msgid "match" +msgstr "correspond" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:324 +msgid "" +"mode \"%s\" is not a CAKE diffserv mode — tc refuses the qdisc, so nothing " +"is shaped although qosify reports the section active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:335 +msgid "multiqueue is set, but this qosify.init does not pass it to qosify" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:323 +msgid "" +"name \"%s\" is dropped by qosify — it takes at most %d characters and no " +"quote" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:322 +msgid "" +"name is not set — qosify.init sends an empty device name and this section is " +"never applied" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:339 +msgid "" +"nat is not sent: qosify only emits nat/nonat inside the host_isolate branch. " +"CAKE does accept flows plus nat — put nat in options to apply it" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:340 +msgid "" +"nat only reaches %s — put it in options, or in both ingress_options and " +"egress_options" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:72 +msgid "" +"netifd interface (config interface) or netdev (config device) to enable QoS " +"on" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:805 +msgid "netifd interface to enable QoS on. Required." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 +msgid "never" +msgstr "jamais" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:990 +msgid "no" +msgstr "non" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:345 +msgid "no bandwidth_down or bandwidth — ingress CAKE runs unlimited" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:344 +msgid "no bandwidth_up or bandwidth — egress CAKE runs unlimited" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:970 +msgid "none" +msgstr "aucun" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:342 +msgid "overhead and overhead_encap are ignored unless overhead_type is manual" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:331 +msgid "overhead_encap \"%s\" is not atm, noatm or ptm — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:328 +msgid "" +"overhead_type \"%s\" is not one qosify.init knows, so no overhead is set" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:334 +msgid "overhead_vlan \"%s\" is not 0, 1 or 2 — qosify.init adds no ether-vlan" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:680 +#: applications/luci-app-qosify/root/usr/share/luci/menu.d/luci-app-qosify.json:3 +msgid "qosify" +msgstr "qosify" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:935 +msgid "" +"qosify did not appear on ubus, so its config was not applied — press Reload" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:920 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1981 +msgid "qosify did not come up — check the system log" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1337 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1860 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1924 +msgid "qosify is not running. Start from the Overview tab." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1987 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2141 +msgid "qosify is still running — leaving the qdiscs alone" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1408 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1409 +msgid "qosify package template" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1446 +msgid "qosify-status" +msgstr "qosify-status" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1934 +msgid "qosify-status returned no output." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:963 +msgid "" +"rpcd is not answering for qosify — check the ACL in /usr/share/rpcd/acl.d " +"and restart rpcd" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:919 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1337 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1859 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1923 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1980 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1986 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2140 +msgid "rpcd is not answering for qosify, so the service state is unknown." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1043 +msgid "section name" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1041 +msgid "section type" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1774 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1778 +msgid "share" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1303 +msgid "timeout must be a whole number of seconds above 0." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1786 +msgid "total" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1251 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1283 +msgid "value" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:990 +msgid "yes" +msgstr "oui" diff --git a/luci-app-qosify/po/ga/qosify.po b/luci-app-qosify/po/ga/qosify.po index db4942b1b..9b7564b9a 100644 --- a/luci-app-qosify/po/ga/qosify.po +++ b/luci-app-qosify/po/ga/qosify.po @@ -9,10 +9,22 @@ msgstr "" "luciapplicationsqosify/ga/>\n" "Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : (n>2 && n<7) ? 2 :(n>" "6 && n<11) ? 3 : 4;\n" -"PO-Revision-Date: 2026-10-15 11:02+0000\n" +"PO-Revision-Date: 2026-10-27 05:52+0000\n" "X-Generator: Weblate 2026.11.dev0\n" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1255 +msgid "\"%s\" is not a value qosify accepts for %s." +msgstr "Ní luach é \"%s\" a ghlacann qosify le haghaidh %s." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:483 +msgid "" +"%d class and alias sections — qosify has %d class slots, so %s and the rules " +"using them are dropped" +msgstr "" +"%d rannán aicme agus ailias — tá %d sliotán aicme ag qosify, mar sin fágtar " +"%s agus na rialacha a bhaineann úsáid astu ar lár" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "%d interface" msgid_plural "%d interfaces" msgstr[0] "%d comhéadan" @@ -21,7 +33,7 @@ msgstr[2] "%d chomhéadan" msgstr[3] "%d chomhéadan" msgstr[4] "%d chomhéadan" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:986 msgid "%d rule" msgid_plural "%d rules" msgstr[0] "%d riail" @@ -30,7 +42,7 @@ msgstr[2] "%d riail" msgstr[3] "%d riail" msgstr[4] "%d riail" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:942 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:985 msgid "%d section" msgid_plural "%d sections" msgstr[0] "%d rannán" @@ -39,15 +51,28 @@ msgstr[2] "%d rannán" msgstr[3] "%d rannán" msgstr[4] "%d rannán" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:294 +msgid "" +"%s \"%s\" is not a tc rate — tc refuses the qdisc, so nothing is shaped " +"although qosify reports the section active" +msgstr "" +"Ní ráta 'tc' é %s \"%s\" — diúltaíonn 'tc' don qdisc, mar sin ní dhéantar " +"aon mhúnlú, cé go léiríonn 'qosify' go bhfuil an rannán gníomhach" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:298 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:301 +msgid "%s \"%s\" is not a whole number — tc refuses the qdisc" +msgstr "Ní uimhir shlán é %s \"%s\" — diúltaíonn tc don qdisc" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 msgid "%s (current)" msgstr "%s (reatha)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 msgid "%s (from bandwidth)" msgstr "%s (ón bandaleithead)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2085 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2288 msgid "" "%s and %s are replaced with the templates shipped by the qosify package, and " "shaping is left disabled." @@ -55,20 +80,20 @@ msgstr "" "Cuirtear na teimpléid a sholáthraíonn an pacáiste qosify in áit %s agus %s, " "agus fágtar an mhúnlú tráchta díchumasaithe." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1809 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2012 msgid "" "%s came back empty although it is %d bytes on disk — refusing to overwrite it" msgstr "" "Tháinig %s ar ais folamh cé go bhfuil sé %d beart ar an diosca — ag diúltú é " "a fhorscríobh" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2346 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2549 msgid "%s changed on disk — your unsaved edits are still in the editor." msgstr "" "Athraíodh %s ar an diosca — tá do chuid athruithe nár sábháladh fós san " "eagarthóir." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2249 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2452 msgid "" "%s could not be read — the editor is left empty and will not be saved over " "it." @@ -76,7 +101,7 @@ msgstr "" "Níorbh fhéidir %s a léamh — fágadh an t-eagarthóir folamh agus ní shábhálfar " "aon rud ina áit." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1833 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2036 msgid "" "%s has changed since this editor was loaded. Saving now discards those " "changes." @@ -84,7 +109,7 @@ msgstr "" "Tá athrú tagtha ar %s ó luchtú an eagarthóra seo. Má shábhálann tú anois, " "caillfear na hathruithe sin." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1864 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2067 msgid "" "%s is %d bytes on disk but was never loaded into the editor — refusing to " "truncate it. Reload the page first." @@ -92,11 +117,11 @@ msgstr "" "Tá %s %d beart ar an diosca ach níor luchtáladh riamh é sa eagarthóir — á " "dhiúltú é a ghiorrú. Athluchtaigh an leathanach ar dtús." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:392 msgid "%s is a list in this section — edit %s directly" msgstr "Is liosta é %s sa rannán seo — cuir %s in eagar go díreach" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1656 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1859 msgid "" "%s is not in the defaults list — qosify does not load it, so the Rules tab " "has no effect" @@ -104,7 +129,7 @@ msgstr "" "Níl %s ar an liosta réamhshocruithe — níl sé á luchtú ag qosify, mar sin níl " "aon éifeacht ag an gcluaisín Rialacha" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:286 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:314 msgid "" "%s is set to \"%s\" — qosify converts it with atoi(), so anything but a non-" "zero number means off" @@ -112,45 +137,45 @@ msgstr "" "Tá %s socraithe ar \"%s\" — déanann qosify é a thiontú le atoi(), mar sin " "ciallaíonn aon rud seachas uimhir neamh-nialasach go bhfuil sé múchta" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:750 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:793 msgid "%s quick settings" msgstr "Socruithe tapa %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2069 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2272 msgid "%s uploaded, qosify reloaded." msgstr "%s uaslódáilte, qosify athlódáilte." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2103 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2306 msgid "%s was not written: %s" msgstr "Níor scríobhadh %s: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2106 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2309 msgid "%s was reset but %s was not written: %s" msgstr "Athshocraíodh %s ach níor scríobhadh %s: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1945 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2148 msgid "%s, applied (QoS disabled)." msgstr "%s, curtha i bhfeidhm (QoS díchumasaithe)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1950 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 msgid "" "%s, applied — qosify did not answer on ubus, so shaping could not be checked." msgstr "" "%s, curtha i bhfeidhm — níor thug qosify freagra ar ubus, mar sin níorbh " "fhéidir an mhúnlú a sheiceáil." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1947 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 msgid "%s, applied." msgstr "%s, curtha i bhfeidhm." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:459 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:468 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:500 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:509 msgid "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify ignores it" msgstr "" "%s: %s Ní aicme, pointe cóid ná luach idir 0 agus 63 é \"%s\" — déanann " "qosify neamhaird de" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:456 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:497 msgid "" "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify rejects the whole " "config and interface changes are not applied" @@ -159,7 +184,7 @@ msgstr "" "qosify don chumraíocht ar fad agus ní chuirtear na hathruithe ar an " "gcomhéadan i bhfeidhm" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:465 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:506 msgid "" "%s: %s \"%s\" is not a codepoint or 0-63 — qosify drops this class and the " "rules using it" @@ -167,7 +192,15 @@ msgstr "" "%s: Ní pointe cóid ná luach idir 0 agus 63 é %s \"%s\" — déanann qosify an " "aicme seo agus na rialacha a bhaineann léi a chaitheamh i leataobh" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:448 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:488 +msgid "" +"%s: %s \"%s\" is not a whole number — qosify.init passes it through atoll(), " +"which keeps only the leading digits" +msgstr "" +"%s: %s Ní uimhir shlán é \"%s\" — cuireann qosify.init tríd an bhfeidhm atoll" +"() é, rud nach gcoinníonn ach na digití tosaigh" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:486 msgid "" "%s: %s cannot be checked — write it as one plain or fully quoted value, with " "no backslash" @@ -175,41 +208,75 @@ msgstr "" "%s: Ní féidir %s a sheiceáil — scríobh é mar luach simplí amháin nó mar " "luach atá faoi luíana iomlána, gan aon chúlslais" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:451 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:492 msgid "" "%s: %s contains shell metacharacters — qosify runs the tc command with sh -c " "as root, so they would break it or be executed" msgstr "" -"%s: Tá meitea-charachtair bhlaosc i %s — ritheann qosify an t-ordú tc le sh -" -"c mar fhréamh (root), mar sin chuirfeadh siad isteach ar a fheidhmiú nó " +"%s: Tá meitea-charachtair bhlaosc i %s — ritheann qosify an t-ordú tc le sh " +"-c mar fhréamh (root), mar sin chuirfeadh siad isteach ar a fheidhmiú nó " "rithfí iad" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "(alias)" msgstr "(ainm cleite)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1304 +msgid "(over file)" +msgstr "(thar comhad)" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 msgid "(this qosify build has no NQB)" msgstr "(níl NQB ag an leagan seo de qosify)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2185 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2388 msgid "A config defaults section already exists." msgstr "Tá rannóg réamhshocruithe cumraíochta ann cheana féin." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2183 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2386 msgid "A section name may only contain letters, digits and underscores." msgstr "" "Ní fhéadfaidh ach litreacha, digití agus fostí a bheith i n-ainm rannáin." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:856 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Action" +msgstr "Gníomh" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:899 msgid "Active" msgstr "Gníomhach" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:957 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1162 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1000 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1206 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1240 msgid "Add" msgstr "Cuir leis" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1262 +msgid "Add failed: %s" +msgstr "Theip ar an gcur leis: %s" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1242 +msgid "" +"Added to the running qosify at once and not saved: an entry expires after " +"its timeout (the defaults timeout when left empty) and a qosify restart " +"drops it. One on a match from the rules file overrides it until then." +msgstr "" +"Cuirtear leis an qosify atá ag rith láithreach bonn, gan é a shábháil: téann " +"iontráil in éag tar éis an ama teorann a bhaineann léi (úsáidtear na " +"luachanna réamhshocraithe mura sonraítear aon rud), agus scriostar í má " +"athchóirítear an qosify. Má bhíonn meaitseáil ann de réir an chomhaid " +"rialacha, beidh an riail sin i réim thar an iontráil go dtí go rachaidh sí " +"in éag." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +msgid "" +"Adds a line to the editor below; Save & Apply writes it to the rules file, " +"so it is kept." +msgstr "" +"Cuireann sé líne leis an eagarthóir thíos; scríobhann Sábháil agus Cuir i " +"bhFeidhm í sa chomhad rialacha, ionas go gcoimeádtar í." + #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:85 msgid "Adds atm, noatm or ptm when overhead_type is manual" msgstr "Cuireann sé atm, noatm nó ptm leis nuair is manual é overhead_type" @@ -228,33 +295,33 @@ msgstr "" "Cuireann sé forchostas leis nuair is 'manual' (láimhe) atá i gceist " "le overhead_type" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:608 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:649 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:780 msgid "Advanced" msgstr "Ardleibhéil" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "An empty %s stops all shaping. Continue?" msgstr "" "Cuireann %s folamh stop le gach múnlú. Ar mhaith leat leanúint ar aghaidh?" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:726 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:769 msgid "Automatic download rate" msgstr "Ráta íoslódála uathoibríoch" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:936 msgid "Autostart" msgstr "Uaththosú" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:967 msgid "Autostart state unknown — rpcd did not answer" msgstr "Stádas an uaththosaithe anaithnid — níor thug rpcd freagra" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 msgid "Available" msgstr "Ar fáil" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1196 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1334 msgid "Backup" msgstr "Cúltaca" @@ -266,12 +333,12 @@ msgstr "" "Bandleithead don dá threo, i gcás nach bhfuil bandwidth_up ná bandwidth_down " "socraithe" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:716 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:759 msgid "Basic" msgstr "Bunúsach" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:224 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2029 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:240 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2232 msgid "Binary content rejected" msgstr "Ábhar dénártha diúltaithe" @@ -283,7 +350,7 @@ msgstr "Mód diffserv CAKE" msgid "CAKE egress options" msgstr "Roghanna imeachta CAKE" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "CAKE egress options, space separated." msgstr "Roghanna imeachta CAKE, scartha le spásanna." @@ -291,7 +358,7 @@ msgstr "Roghanna imeachta CAKE, scartha le spásanna." msgid "CAKE ingress options" msgstr "Roghanna iontrála CAKE" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "CAKE ingress options, space separated." msgstr "Roghanna iontrála CAKE, scartha le spásanna." @@ -307,105 +374,109 @@ msgstr "" "Cuireadh eochairfhocal forchostais CAKE leis na roghanna; úsáideann an " "lámhleabhar forchostais agus forchostais_encap" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "CAKE overhead keyword. Use none if unsure." msgstr "" "Príomhfhocal forchostais CAKE. Ná húsáid aon cheann mura bhfuil tú cinnte." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:564 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 msgid "Cancel" msgstr "Cealaigh" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1356 msgid "Check Devices" msgstr "Seiceáil na gléasanna" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1330 msgid "Choose file…" msgstr "Roghnaigh comhad…" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1114 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1158 msgid "Classes" msgstr "Ranganna" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1940 msgid "Cleanup exited with code %d" msgstr "Tháinig deireadh leis an nglanadh leis an gcód %d" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1190 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear" msgstr "Glan" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2072 msgid "Clear configuration" msgstr "Cumraíocht shoiléir" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear editor" msgstr "Glan an t-eagarthóir" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to disable autostart" msgstr "Cliceáil chun uaththosú a dhíchumasú" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to enable autostart" msgstr "Cliceáil chun uaththosú a chumasú" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 msgid "Common CAKE options" msgstr "Roghanna coitianta CAKE" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:604 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:645 msgid "Config" msgstr "Cumraíocht" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared, qosify stopped." msgstr "Glanadh an chumraíocht, stopadh qosify." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared." msgstr "Cumraíocht glanta." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1915 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2118 msgid "Config saved" msgstr "Cumraíocht sábháilte" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2042 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2050 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2253 msgid "Config: %s" msgstr "Cumraíocht: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:566 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 msgid "Continue" msgstr "Lean ar aghaidh" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1391 msgid "Could not read %s: %s" msgstr "Níorbh fhéidir %s a léamh: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:648 msgid "Counters" msgstr "Cuntair" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1627 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1567 +msgid "Counters reset." +msgstr "Athshocraíodh na háiritheoirí." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1830 msgid "DNS Entries" msgstr "Iontrálacha DNS" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d of %d)" msgstr "Iontrálacha DNS (%d as %d)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d)" msgstr "Iontrálacha DNS (%d)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "" "DSCP codepoints: CS0–CS7, AF11–AF43, EF, VA, NQB, LE, DF (NQB needs qosify " "from June 2026; 24.10 and 25.12 do not have it). A raw value from 0 to 63 is " @@ -444,7 +515,7 @@ msgstr "" msgid "DSCP value for priority-marked packets" msgstr "Luach DSCP do phaicéid atá marcáilte le tosaíocht" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "DSCP values" msgstr "Luachanna DSCP" @@ -462,12 +533,12 @@ msgstr "" "Am scoir réamhshocraithe le haghaidh iontrálacha a chuirtear leis go " "dinimiciúil" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1358 msgid "Defaults" msgstr "Réamhshocruithe" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 msgid "" "Defaults qosify applies when a key is absent — interface: mode diffserv4, " "ingress 1, egress 1, nat 1, host_isolate 1, autorate_ingress 0. device: " @@ -481,21 +552,25 @@ msgstr "" "timeout 3600, dscp_default_tcp/udp CS0, dscp_prio/dscp_bulk/dscp_icmp unset, " "bulk_trigger_pps/bulk_trigger_timeout/prio_max_avg_pkt_len 0 (díchumasaithe)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Description" +msgstr "Cur síos" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Device" msgstr "Gléas" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1914 msgid "Device check done." msgstr "Seiceáil an fheiste críochnaithe." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1714 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1917 msgid "Device check failed: %s" msgstr "Theip ar sheiceáil an ghléis: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:859 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Disabled" msgstr "Míchumasaithe" @@ -503,30 +578,34 @@ msgstr "Míchumasaithe" msgid "Downlink bandwidth (same format as tc)" msgstr "Bandaleithead an nasc-íoslódála (an fhormáid chéanna le tc)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Downlink bandwidth, same format as tc. Set just below line speed." msgstr "" "Bandaleithead an nasc-síos, sa bhformáid chéanna le tc. Socraigh é díreach " "faoi bhun luas na líne." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1247 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1393 msgid "Download" msgstr "Íoslódáil" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Download bandwidth" msgstr "Bandaleithead íoslódála" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:767 msgid "Download shaping" msgstr "Íoslódáil múnlú" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1197 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1335 msgid "Download the current files from the router." msgstr "Íoslódáil na comhaid reatha ón ródaire." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1241 +msgid "Dynamic Entries" +msgstr "Iontrálacha Dinimiciúla" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "" "Each line has two whitespace separated fields, match and dscp. dscp can be a " "raw value, a codepoint like CS0, or a class name. DNS entries are compared " @@ -537,22 +616,22 @@ msgstr "" "ina ainm aicme. Déantar comparáid idir iontrálacha DNS san ord ina " "sonraítear iad, agus úsáidtear an chéad iontráil a thagann leis an gcritéar." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "Egress CAKE options" msgstr "Roghanna Egress CAKE" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2223 msgid "Empty file" msgstr "Comhad folamh" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 msgid "" "Empty the config editor? Nothing is written until you click Save & Apply." msgstr "" "An bhfuil an t-eagarthóir cumraíochta le folmhú? Ní scríobhtar aon rud go " "dtí go gcliceálann tú ar Sábháil & Cuir i bhFeidhm." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "" "Empty the rules editor? Nothing is written until you click Save & Apply." msgstr "" @@ -579,56 +658,64 @@ msgstr "Cumasaigh múnlú tráchta amach" msgid "Enable ingress shaping" msgstr "Cumasaigh múnlú tráchta isteach" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Enabled" msgstr "Cumasaithe" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:858 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 msgid "Enabled — Not Running" msgstr "Cumasaithe — Ní Rith" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:857 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 msgid "Enabled — Not Shaping (check config)" msgstr "Cumasaithe — Gan Múnlú (seiceáil cumraíocht)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Encapsulation overhead" msgstr "Forchostas cuimsithe" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2182 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2385 msgid "Enter a section name." msgstr "Cuir isteach ainm na ríne." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2156 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2359 msgid "Enter a single IPv4 address (qosify does not accept CIDR)." msgstr "Cuir isteach seoladh IPv4 amháin (ní ghlacann qosify le CIDR)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2159 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2362 msgid "" "Enter a single IPv6 address (qosify does not accept CIDR or a %zone suffix)." msgstr "" "Cuir isteach seoladh IPv6 amháin (ní ghlacann qosify le CIDR ná le hiarmhír " "%zone)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2141 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2344 msgid "Enter a value." msgstr "Cuir isteach luach." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Entries" msgstr "Iontrálacha" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1848 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1961 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1261 +msgid "Entry added." +msgstr "Iontráil curtha leis." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1269 +msgid "Entry removed." +msgstr "Iontráil bainte." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2051 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2164 msgid "Error: %s" msgstr "Earráid: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1845 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2048 msgid "Error: No valid config stanzas found." msgstr "Earráid: Níor aimsíodh aon véarsaí cumraíochta bailí." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1763 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1965 msgid "" "Error: invalid characters in bandwidth or options fields. Use alphanumeric, " "spaces, hyphens, dots, colons only." @@ -637,41 +724,58 @@ msgstr "" "húsáid ach carachtair alfa-uimhriúla, spásanna, fleiscíní, poncanna agus " "idirchóinní." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1798 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2000 msgid "Error: name must be a device or interface name" msgstr "Earráid: ní mór ainm gléis nó comhéadain a bheith ann" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1769 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1971 msgid "Error: overhead must be a whole number of bytes" msgstr "Earráid: ní mór don fhorchostais a bheith ina líon iomlán beart" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1970 msgid "Error: overhead_mpu must be a whole number of bytes" msgstr "Earráid: ní mór gur líon iomlán beart é overhead_mpu" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2070 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2001 +msgid "Error: qosify drops a name longer than %d characters" +msgstr "" +"Earráid: caitheann qosify ainm ar leataobh atá níos faide ná %d carachtar" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2273 msgid "Errors:" msgstr "Earráidí:" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 +msgid "" +"Every shaped section is looked up again, one whose device now exists is " +"started and one whose device has gone is stopped. Nothing is reported back " +"by the call — the result shows in the Service table on the Overview tab." +msgstr "" +"Déantar athchuardach ar gach rannán múnlaithe; cuirtear tús le rannán a " +"bhfuil a ghléas ann faoi láthair, agus stoptar rannán a bhfuil a ghléas " +"imithe. Ní sheoltar aon fhaisnéis ar ais ón nglao — feictear an toradh sa " +"tábla Seirbhíse ar an gcluaisín Forléargais." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 msgid "File" msgstr "Comhad" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1832 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 msgid "File changed on disk" msgstr "Athraíodh an comhad ar an diosca" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2224 msgid "File too large (max 64KB)" msgstr "Comhad ró-mhór (uasmhéid 64KB)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:667 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 msgid "Files" msgstr "Comhaid" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Found (empty or invalid)" msgstr "Aimsithe (folamh nó neamhbhailí)" @@ -679,37 +783,33 @@ msgstr "Aimsithe (folamh nó neamhbhailí)" msgid "Grant access to LuCI app qosify" msgstr "Deonaigh rochtain ar aip LuCI qosify" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:728 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:771 msgid "Host isolation" msgstr "Leithlisiú óstach" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1169 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1216 msgid "IPv4 address, e.g. 1.1.1.1" msgstr "Seoladh IPv4, m.sh. 1.1.1.1" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1170 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 msgid "IPv6 address, e.g. ff01::1" msgstr "Seoladh IPv6, m.sh. ff01::1" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "Ingress CAKE options" msgstr "Roghanna Ingress CAKE" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Interface" msgstr "Comhéadan" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:741 -msgid "Invalid CAKE options can stop qosify starting." -msgstr "D’fhéadfadh roghanna CAKE neamhbhailí cosc a chur ar qosify tosú." - -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1173 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1220 msgid "Like dns:... but only matches cname entries" msgstr "Cosúil le dns:... ach ní mheaitseálann sé ach iontrálacha cname" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:228 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:244 msgid "" "Line %d is longer than 1023 characters — the rule loader reads fixed-size " "lines and would split it, comment included" @@ -721,28 +821,29 @@ msgstr "" msgid "List of files with port/IP/host mappings" msgstr "Liosta comhad ina bhfuil mapálacha port/IP/óstach" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 msgid "Loading..." msgstr "Ag luchtú..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1212 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1350 msgid "Maintenance" msgstr "Cothabháil" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Manual overhead" msgstr "Costas riaracháin láimhe" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "Mapping file syntax" msgstr "Comhréir an chomhaid mapála" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1692 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1895 msgid "Mapping files reloaded." msgstr "Athlódáladh comhaid mhapála." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:434 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:462 msgid "" "Match not loaded by qosify on line %s — ports 1-65534, one IPv4/IPv6 address " "(no CIDR or %%zone), or dns:, dns_c:" @@ -754,21 +855,21 @@ msgstr "" msgid "Maximum average packet length for marking a flow as priority" msgstr "Uasfhad meánach paicéid chun sruth a mharcáil mar shruth tosaíochta" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Minimum packet unit (MPU)" msgstr "Íos-aonad paicéid (MPU)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Missing" msgstr "Ar iarraidh" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Modified" msgstr "Athraithe" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:433 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:461 msgid "" "More than two fields on line %s — qosify reads the rest of the line as the " "DSCP value and skips it" @@ -776,68 +877,77 @@ msgstr "" "Níos mó ná dhá réimse ar an líne %s — léann qosify an chuid eile den líne " "mar luach DSCP agus déanann sé neamhaird air" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:770 msgid "NAT awareness" msgstr "Feasacht ar NAT" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Netdev to enable QoS on. Required." msgstr "Netdev ar a gcuirfear QoS i ngníomh. Riachtanach." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No CAKE tin statistics." msgstr "Gan staitisticí maidir le múnlaí cácaí." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1628 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1831 msgid "No DNS entries." msgstr "Gan aon iontráil DNS." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:432 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:460 msgid "No DSCP target on line %s — qosify skips single-field lines" msgstr "" "Gan sprioc DSCP ar an líne %s — déanann qosify neamhaird ar línte a bhfuil " "réimse amháin iontu" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1107 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +msgid "No DSCP traffic yet." +msgstr "Níl aon trácht DSCP ann go fóill." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1151 msgid "No classes defined in %s" msgstr "Níl aon ranganna sainithe i %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2142 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1257 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2345 msgid "No classes defined. Add classes in the Config tab first." msgstr "" "Níl aon ranganna sainmhínithe. Cuir ranganna leis sa chluaisín Cumraíochta " "ar dtús." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1192 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1294 +msgid "No dynamic entries." +msgstr "Gan iontrálacha dinimiciúla." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1328 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1329 msgid "No file selected" msgstr "Níl aon chomhad roghnaithe" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2209 msgid "No files selected." msgstr "Níl aon chomhaid roghnaithe." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No output." msgstr "Gan aon aschur." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 msgid "No per-class counters." msgstr "Gan áiritheoirí in aghaidh an ranga." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2357 msgid "No spaces or # allowed in patterns or addresses." msgstr "Ní cheadaítear spásanna ná # i bpatrúin ná i seoltaí." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2030 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2233 msgid "No valid UCI config stanzas" msgstr "Gan aon véarsaí cumraíochta UCI bailí" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:913 msgid "Not Running" msgstr "Gan Rith" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1973 msgid "Note: bandwidth not set — CAKE will run unlimited on that direction." msgstr "" "Nóta: níl an bandaleithead socraithe — rithfidh CAKE gan teorainn sa treo " @@ -849,43 +959,44 @@ msgstr "" "Líon na bpaicéad in aghaidh an tsoicind chun braite sreafa mórchóir a " "spreagadh" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1161 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1174 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1221 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1238 msgid "Only override the DSCP value if it is zero" msgstr "Ná sáraigh an luach DSCP ach amháin má tá sé nialas" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:704 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:747 msgid "" "Only sent with host isolation on — add nat to common CAKE options to force it" msgstr "" "Ní sheoltar é ach nuair atá leithlisiú óstach (host isolation) curtha ar " "siúl — cuir 'nat' le gnáth-roghanna CAKE chun é a chur i bhfeidhm" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1017 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1060 msgid "Options" msgstr "Roghanna" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:730 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:773 msgid "Overhead" msgstr "Os cionn an chinn" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "Overhead preset" msgstr "Réamhshocrú os cionn an chinn" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:603 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:644 msgid "Overview" msgstr "Forbhreathnú" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1834 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2037 msgid "Overwrite" msgstr "Forscríobh" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2007 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2210 msgid "Overwrite config files" msgstr "Sáraigh comhaid chumraíochta" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1172 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 msgid "" "POSIX.2 extended regular expression for matching hostnames. Only works if " "dns lookups are passed to qosify via the add_dns_host ubus call." @@ -894,185 +1005,194 @@ msgstr "" "oibríonn sé ach má chuirtear cuardaigh DNS ar aghaidh chuig qosify tríd an " "nglao ubus `add_dns_host`." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2353 msgid "Port must be 1-65534 (qosify rejects 65535)." msgstr "Ní mór don phort a bheith 1-65534 (diúltaíonn qosify do 65535)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2149 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2349 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2352 msgid "Port must be a number or a range (4500, 5060-5061)." msgstr "Caithfidh an port a bheith ina uimhir nó ina raon (4500, 5060-5061)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "QoS Enabled" msgstr "QoS Cumasaithe" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:721 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 msgid "Queueing mode" msgstr "Modh scuaineála" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1163 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1209 msgid "Quick Add" msgstr "Cuir leis go tapa" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1016 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1059 msgid "Quick Add: %s" msgstr "Cuir leis go tapa: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2356 msgid "Range start must not exceed end." msgstr "Ní mór tús an raoin a bheith níos faide ná deireadh an raoin." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 msgid "Re-check devices" msgstr "Athsheiceáil na feistí" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 msgid "Re-checking devices..." msgstr "Ag athsheiceáil feistí..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:811 msgid "Re-read the mapping files only" msgstr "Athléigh na comhaid mhapála amháin" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 msgid "Re-reading the mapping files..." msgstr "Ag athléamh na gcomhad mapála..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 -msgid "" -"Re-runs the daemon's own device pass: every shaped section is looked up " -"again, one whose device now exists is started and one whose device has gone " -"is stopped. Nothing is reported back by the call — the result shows in the " -"Service table on the Overview tab." -msgstr "" -"Ritheann sé pas feiste an deamhain féin arís: déantar athscrúdú ar gach " -"rannán múnlaithe; cuirtear tús le rannán a bhfuil a fheiste ann anois, agus " -"stoptar rannán nach bhfuil a fheiste ann a thuilleadh. Ní thugann an glao " -"aon fhaisnéis ar ais — feictear an toradh sa tábla Seirbhísí ar an gcluaisín " -"Forléargais." +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1351 +msgid "Re-runs the daemon's own device pass." +msgstr "Ritheann sé pas gléis an deamain féin arís." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2024 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2227 msgid "Read error" msgstr "Earráid léite" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Reading and validating files..." msgstr "Ag léamh agus ag bailíochtú comhad..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1681 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1884 msgid "Reading tc output..." msgstr "Ag léamh aschur tc..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1019 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1062 msgid "Reference" msgstr "Tagairt" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload" msgstr "Athlódáil" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload Rules" msgstr "Athluchtaigh na Rialacha" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1695 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1898 msgid "Reload failed: %s" msgstr "Theip ar an athlódáil: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1306 +msgid "Remove" +msgstr "Bain" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1270 +msgid "Remove failed: %s" +msgstr "Theip ar an mbaint: %s" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 +msgid "Replaced with" +msgstr "Curtha ina áit" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "Requires write access." msgstr "Teastaíonn cead scríofa." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2086 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1365 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2289 msgid "Reset" msgstr "Athshocraigh" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2120 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1554 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "Reset counters" +msgstr "Athshocraigh na cuntair" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2323 msgid "Reset failed: %s" msgstr "Theip ar an athshocrú: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2084 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2287 msgid "Reset to defaults" msgstr "Athshocraigh go dtí na réamhshocruithe" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2116 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2319 msgid "Reset to defaults, applied." msgstr "Athshocrú chuig réamhshocruithe, curtha i bhfeidhm." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Resetting" msgstr "Ag athshocrú" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Restart" msgstr "Atosaigh" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1203 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1341 msgid "Restore" msgstr "Athchóirigh" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 -msgid "Restore qosify defaults" -msgstr "Athchóirigh réamhshocruithe qosify" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1359 +msgid "Restore qosify defaults. Shaping is left disabled." +msgstr "Athchóirigh réamhshocruithe qosify. Fágtar múnlú faoi mhíchumas." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Restoring defaults..." msgstr "Ag athchóiriú réamhshocruithe..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:646 msgid "Rules" msgstr "Rialacha" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1976 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2179 msgid "Rules saved" msgstr "Rialacha sábháilte" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2053 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2056 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2256 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2259 msgid "Rules: %s" msgstr "Rialacha: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:868 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:911 msgid "Running & Shaping" msgstr "Rith & Múnlú" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:912 msgid "Running — Not Shaping" msgstr "Rith — Ní Múnlú" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:867 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:910 msgid "Running — Shaping Unknown" msgstr "Ag rith — Múnlú Anaithnid" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1147 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:796 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 msgid "Save & Apply" msgstr "Sábháil agus Cuir i bhFeidhm" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1825 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1897 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1924 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1985 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2028 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2100 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2127 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2188 msgid "Save failed: %s" msgstr "Theip ar shábháil: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Saving" msgstr "Ag sábháil" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 msgid "Saving settings and applying..." msgstr "Ag sábháil socruithe agus ag cur i bhfeidhm..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2186 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2389 msgid "Section %s already exists." msgstr "Tá an roinn %s ann cheana féin." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1011 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1054 msgid "" "Section name is the class name that rules and dscp_* values refer to. " "qosify.init reads config alias the same way as config class." @@ -1081,45 +1201,45 @@ msgstr "" "luachanna dscp_* di. Léann qosify.init an ailias cumraíochta ar an gcaoi " "chéanna leis an aicme chumraíochta." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Sending %s to qosify..." msgstr "Ag seoladh %s chuig qosify..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Sent to CAKE as atm, noatm or ptm." msgstr "Seolta chuig CAKE mar atm, noatm ná ptm." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "Sent to CAKE as ether-vlan, once per tag." msgstr "Seolta chuig CAKE mar ether-vlan, uair amháin in aghaidh an chlibe." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Sent to CAKE as mpu, in bytes." msgstr "Seolta chuigCAKE mar mpu, i mbearta." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Sent to CAKE as overhead, in bytes." msgstr "Seolta chuig CAKE mar mhaoirchostas, i mbearta." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:663 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:706 msgid "Service" msgstr "Seirbhís" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1745 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1948 msgid "Service action failed: %s" msgstr "Theip ar ghníomh seirbhíse: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1817 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 msgid "Settings saved" msgstr "Socruithe sábháilte" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:723 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:937 msgid "Shaping" msgstr "Múnlú" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Size" msgstr "Méid" @@ -1127,35 +1247,39 @@ msgstr "Méid" msgid "Skip this section" msgstr "Scipeáil an rannán seo" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Start" msgstr "Tosaigh" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:606 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:891 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:647 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:934 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Status" msgstr "Stádas" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:855 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:898 msgid "Status Unknown" msgstr "Stádas anaithnid" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:809 msgid "Stop" msgstr "Stop" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1167 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 msgid "TCP single port, or range from to " msgstr "Port aonair TCP, nó raon ó go " -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1680 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1883 msgid "The detailed tc output needs write access to this page." msgstr "" "Teastaíonn cead scríofa don leathanach seo le haghaidh aschur mionchruinn an " "tc." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:590 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1309 +msgid "The first %d entries are shown." +msgstr "Tá na chéad %d iontráil á dtaispeáint." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:631 msgid "" "The qosify UCI configuration could not be loaded — class and interface lists " "may be incomplete." @@ -1163,14 +1287,14 @@ msgstr "" "Níorbh fhéidir cumraíocht UCI qosify a luchtú — d’fhéadfadh liostaí na " "ranganna agus na gcomhéadan a bheith neamhiomlán." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1342 msgid "" "The selected files replace the ones on the router and qosify is reloaded." msgstr "" "Cuireann na comhaid roghnaithe in ionad na gcomhad atá ar an ródaire, agus " "athlódáiltear qosify." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2008 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2211 msgid "" "The selected files replace the ones on the router and qosify is reloaded. " "Download a backup from this tab first if you need one." @@ -1185,33 +1309,37 @@ msgstr "" "An t-am faoi bhun na tairsí bulk_trigger_pps go dtí go mbaintear marc sreafa " "mórchóir" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 msgid "Traffic by CAKE Tin" msgstr "Trácht le CAKE Tin" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1401 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1548 msgid "Traffic by Class" msgstr "Trácht de réir Aicme" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:596 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1549 +msgid "Traffic by DSCP" +msgstr "Trácht de réir DSCP" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:637 msgid "Traffic shaping and DSCP classification via qosify" msgstr "Múnlú tráchta agus aicmiú DSCP trí qosify" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1168 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 msgid "UDP single port, or range from to " msgstr "Port aonair UDP, nó raon ó go " -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:864 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:866 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:907 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:909 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:968 msgid "Unknown" msgstr "Anaithnid" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 msgid "Unknown class/DSCP target: %s" msgstr "Sprioc ranga/DSCP anaithnid: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "Unticked sets disabled 1 and qosify skips this section." msgstr "" "Tacair neamhthiceáilte díchumasaithe 1 agus scipeálann qosify an chuid seo." @@ -1220,80 +1348,80 @@ msgstr "" msgid "Uplink bandwidth (same format as tc)" msgstr "Bandaleithead uasnaisc (an fhormáid chéanna le tc)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Uplink bandwidth, same format as tc. Set just below line speed." msgstr "" "Bandaleithead nasc suas, sa bhformáid chéanna le tc. Socraigh é díreach faoi " "bhun luas na líne." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 msgid "Upload" msgstr "Uaslódáil" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1348 msgid "Upload & Apply" msgstr "Uaslódáil agus Cuir i bhFeidhm" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2009 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2212 msgid "Upload and apply" msgstr "Uaslódáil agus cuir i bhfeidhm" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Upload bandwidth" msgstr "Bandaleithead uaslódála" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2061 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2264 msgid "Upload error: %s" msgstr "Earráid uaslódála: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2078 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2281 msgid "Upload failed: %s" msgstr "Theip ar an uaslódáil: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 msgid "Upload shaping" msgstr "Múnlú uaslódála" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Uploading" msgstr "Ag uaslódáil" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:892 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:935 msgid "Uptime" msgstr "Am oibríochta" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "VLAN tags" msgstr "Clibeanna VLAN" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Valid" msgstr "Bailí" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1951 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 msgid "Warning: %s but qosify is not shaping traffic — check the Status tab." msgstr "" "Rabhadh: %s ach níl qosify ag múnlú tráchta — seiceáil an cluaisín Stádas." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Working" msgstr "Ag obair" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "Write empty file" msgstr "Scríobh comhad folamh" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 msgid "Writing config and reloading qosify..." msgstr "Ag scríobh cumraíochta agus ag athlódáil qosify..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Writing rules and reloading qosify..." msgstr "Rialacha a scríobh agus qosify a athlódáil..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:633 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:675 msgid "" "You have read-only access to this page, so editing and service control are " "disabled." @@ -1301,11 +1429,19 @@ msgstr "" "Tá rochtain léite amháin agat ar an leathanach seo, mar sin tá an t-" "eagarthóireacht agus rialú na seirbhíse díchumasaithe." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "" +"Zero qosify's own counters (get_stats)? The CAKE tin counters belong to tc " +"and are kept." +msgstr "" +"An ndéantar cuntair inmheánacha qosify (get_stats) a athshocrú go nialas? " +"Baineann na cuntair CAKE le tc agus coinnítear iad." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 msgid "active" msgstr "gníomhach" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1969 msgid "" "bandwidth_down does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" @@ -1313,7 +1449,7 @@ msgstr "" "Ní cosúil gur ráta tc é bandwidth_down (100mbit, 12MBps, gan teorainn) — á " "chur ar aghaidh mar sin féin" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1968 msgid "" "bandwidth_up does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" @@ -1321,7 +1457,7 @@ msgstr "" "Ní cosúil gur ráta tc é bandwidth_up (100mbit, 12MBps, gan teorainn) — á " "chur ar aghaidh mar sin féin" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1012 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1055 msgid "" "config device takes the same options, with name set to a netdev. nat " "defaults to 1 for interfaces and 0 for devices." @@ -1330,15 +1466,15 @@ msgstr "" "netdev. Is é 1 an réamhshocrú do nat i gcás comhéadan, agus is é 0 é i gcás " "feistí." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "device %s" msgstr "gléas %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "device: %s, ingress: %s, egress: %s" msgstr "gléas: %s, ionchur: %s, aschur: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:289 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:317 msgid "" "disabled is set to \"%s\" — config_get_bool does not recognise that, so the " "section stays enabled" @@ -1346,46 +1482,69 @@ msgstr "" "Tá disabled socraithe ar \"%s\" — ní aithníonn config_get_bool é sin, mar " "sin fanann an rannán cumasaithe" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2129 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +msgid "dump did not answer." +msgstr "Níor fhreagair dump." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2332 msgid "e.g. %s" msgstr "m.sh. %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1171 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 msgid "fnmatch() pattern supporting * and ? as wildcard characters" msgstr "Patrún fnmatch() a thacaíonn le * agus ? mar charachtair fhiáine" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1613 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1816 msgid "get_stats did not answer." msgstr "Níor thug get_stats freagra." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 msgid "inactive" msgstr "neamhghníomhach" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "ingress %s, egress %s" msgstr "iontráil %s, imeacht %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:282 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:310 msgid "ingress and egress are both 0 — nothing is shaped" msgstr "" "Tá an bealach isteach agus an bealach amach araon 0 — níl aon rud múnlaithe" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "interface %s" msgstr "comhéadan %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1155 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1199 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1235 msgid "match" msgstr "meaitseáil" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:274 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:292 +msgid "" +"mode \"%s\" is not a CAKE diffserv mode — tc refuses the qdisc, so nothing " +"is shaped although qosify reports the section active" +msgstr "" +"Ní mód CAKE diffserv é an mód \"%s\" — diúltaíonn tc don qdisc, mar sin ní " +"dhéantar aon mhúnlú tráchta, cé go léiríonn qosify go bhfuil an rannán " +"gníomhach" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:291 +msgid "" +"name \"%s\" is dropped by qosify — it takes at most %d characters and no " +"quote" +msgstr "" +"Tá an t-ainm \"%s\" fágtha ar lár ag qosify — ní cheadaítear ach uasmhéid de " +"%d carachtar ann, agus ní cheadaítear comharthaí athfhriotail" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:290 msgid "" "name is not set — qosify.init sends an empty device name and this section is " "never applied" @@ -1393,7 +1552,7 @@ msgstr "" "Níl an t-ainm socraithe — seolann qosify.init ainm gléis folamh agus ní " "chuirtear an chuid seo i bhfeidhm choíche" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:278 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:306 msgid "" "nat is not sent: qosify only emits nat/nonat inside the host_isolate branch. " "CAKE does accept flows plus nat — put nat in options to apply it" @@ -1402,7 +1561,7 @@ msgstr "" "host_isolate. Glacann CAKE le sreafaí móide nat — cuir nat sna roghanna chun " "é a chur i bhfeidhm" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:279 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:307 msgid "" "nat only reaches %s — put it in options, or in both ingress_options and " "egress_options" @@ -1418,68 +1577,96 @@ msgstr "" "comhéadan netifd (comhéadan cumraíochta) nó netdev (gléas cumraíochta) chun " "QoS a chumasú ar" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "netifd interface to enable QoS on. Required." msgstr "Comhéadan netifd ar a gcuirfear QoS i ngníomh. Riachtanach." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1313 +msgid "never" +msgstr "riamh" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "no" msgstr "níl" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:284 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:312 msgid "no bandwidth_down or bandwidth — ingress CAKE runs unlimited" msgstr "gan bandwidth_down ná bandwidth — ritheann CAKE ingress gan teorainn" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:283 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:311 msgid "no bandwidth_up or bandwidth — egress CAKE runs unlimited" msgstr "gan bandwidth_up ná bandwidth — ritheann CAKE amach gan teorainn" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "none" msgstr "aon cheann" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:281 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:309 msgid "overhead and overhead_encap are ignored unless overhead_type is manual" msgstr "" "Déantar neamhaird de overhead agus overhead_encap mura bhfuil overhead_type " "de láimh" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:595 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:299 +msgid "overhead_encap \"%s\" is not atm, noatm or ptm — tc refuses the qdisc" +msgstr "" +"Ní atm, noatm ná ptm atá i overhead_encap \"%s\" — diúltaíonn tc don qdisc" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:296 +msgid "" +"overhead_type \"%s\" is not one qosify.init knows, so no overhead is set" +msgstr "" +"Ní cineál aitheanta ag qosify.init é overhead_type \"%s\", mar sin níl aon " +"oschostas socraithe" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:302 +msgid "overhead_vlan \"%s\" is not 0, 1 or 2 — qosify.init adds no ether-vlan" +msgstr "" +"Níl overhead_vlan \"%s\" cothrom le 0, 1 ná 2 — ní chuireann qosify.init " +"ether-vlan leis" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:636 #: applications/luci-app-qosify/root/usr/share/luci/menu.d/luci-app-qosify.json:3 msgid "qosify" msgstr "qosify" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:847 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:890 msgid "" "qosify did not appear on ubus, so its config was not applied — press Reload" msgstr "" "Níor tháinig qosify chun cinn ar ubus, mar sin níor cuireadh a chumraíocht i " "bhfeidhm — brúigh Athlódáil" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:833 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1729 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:876 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1932 msgid "qosify did not come up — check the system log" msgstr "Níor thosaigh qosify — seiceáil loga an chórais" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1610 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1672 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1813 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1875 msgid "qosify is not running. Start from the Overview tab." msgstr "Níl qosify ag rith. Tosaigh ón táb Forbhreathnú." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1735 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1887 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2090 msgid "qosify is still running — leaving the qdiscs alone" msgstr "Tá qosify fós ag rith — na qdiscs á bhfágáil mar atá" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1253 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1361 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1362 +msgid "qosify package template" +msgstr "Teimpléad pacáiste qosify" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1399 msgid "qosify-status" msgstr "qosify-status" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1885 msgid "qosify-status returned no output." msgstr "Níor thug qosify-status aon aschur ar ais." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:918 msgid "" "rpcd is not answering for qosify — check the ACL in /usr/share/rpcd/acl.d " "and restart rpcd" @@ -1487,42 +1674,67 @@ msgstr "" "Níl rpcd ag freagairt do qosify — seiceáil an ACL i /usr/share/rpcd/acl.d " "agus athtosaigh rpcd" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:832 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1609 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1671 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1728 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1734 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1886 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1812 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1874 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1931 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1937 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2089 msgid "rpcd is not answering for qosify, so the service state is unknown." msgstr "" "Níl rpcd ag freagairt do qosify, mar sin ní fios cén staid ina bhfuil an " "tseirbhís." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:955 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:998 msgid "section name" msgstr "ainm an rannán" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:953 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:996 msgid "section type" msgstr "cineál rannóige" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1529 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1533 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1731 msgid "share" msgstr "roinn" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1541 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1256 +msgid "timeout must be a whole number of seconds above 0." +msgstr "" +"Caithfidh an teorainn ama a bheith ina líon iomlán soicindí atá níos mó ná 0." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1739 msgid "total" msgstr "iomlán" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 msgid "value" msgstr "luach" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "yes" msgstr "tá" +#~ msgid "Invalid CAKE options can stop qosify starting." +#~ msgstr "D’fhéadfadh roghanna CAKE neamhbhailí cosc a chur ar qosify tosú." + +#~ msgid "" +#~ "Re-runs the daemon's own device pass: every shaped section is looked up " +#~ "again, one whose device now exists is started and one whose device has " +#~ "gone is stopped. Nothing is reported back by the call — the result shows " +#~ "in the Service table on the Overview tab." +#~ msgstr "" +#~ "Ritheann sé pas feiste an deamhain féin arís: déantar athscrúdú ar gach " +#~ "rannán múnlaithe; cuirtear tús le rannán a bhfuil a fheiste ann anois, " +#~ "agus stoptar rannán nach bhfuil a fheiste ann a thuilleadh. Ní thugann an " +#~ "glao aon fhaisnéis ar ais — feictear an toradh sa tábla Seirbhísí ar an " +#~ "gcluaisín Forléargais." + +#~ msgid "Restore qosify defaults" +#~ msgstr "Athchóirigh réamhshocruithe qosify" + #~ msgid "%s contains a quote — qosify rejects the whole value" #~ msgstr "Tá luachan i %s — diúltaíonn qosify don luach iomlán" diff --git a/luci-app-qosify/po/hu/qosify.po b/luci-app-qosify/po/hu/qosify.po new file mode 100644 index 000000000..75f732579 --- /dev/null +++ b/luci-app-qosify/po/hu/qosify.po @@ -0,0 +1,1562 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: hu\n" +"Content-Transfer-Encoding: 8bit\n" +"Last-Translator: Martin Olmer \n" +"Language-Team: Hungarian \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"PO-Revision-Date: 2026-11-05 13:14+0000\n" +"X-Generator: Weblate 2026.11.2.dev0\n" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1302 +msgid "\"%s\" is not a value qosify accepts for %s." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:521 +msgid "" +"%d class and alias sections — qosify has %d class slots, so %s and the rules " +"using them are dropped" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:970 +msgid "%d interface" +msgid_plural "%d interfaces" +msgstr[0] "" +msgstr[1] "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1031 +msgid "%d rule" +msgid_plural "%d rules" +msgstr[0] "" +msgstr[1] "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1030 +msgid "%d section" +msgid_plural "%d sections" +msgstr[0] "" +msgstr[1] "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:326 +msgid "" +"%s \"%s\" is not a tc rate — tc refuses the qdisc, so nothing is shaped " +"although qosify reports the section active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:330 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:333 +msgid "%s \"%s\" is not a whole number — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:769 +msgid "%s (current)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:787 +msgid "%s (from bandwidth)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2339 +msgid "" +"%s and %s are replaced with the templates shipped by the qosify package, and " +"shaping is left disabled." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2063 +msgid "" +"%s came back empty although it is %d bytes on disk — refusing to overwrite it" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2600 +msgid "%s changed on disk — your unsaved edits are still in the editor." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2503 +msgid "" +"%s could not be read — the editor is left empty and will not be saved over " +"it." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2087 +msgid "" +"%s has changed since this editor was loaded. Saving now discards those " +"changes." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2118 +msgid "" +"%s is %d bytes on disk but was never loaded into the editor — refusing to " +"truncate it. Reload the page first." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:426 +msgid "%s is a list in this section — edit %s directly" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1908 +msgid "" +"%s is not in the defaults list — qosify does not load it, so the Rules tab " +"has no effect" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:432 +msgid "%s is not one plain statement in this section — edit %s directly" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:347 +msgid "" +"%s is set to \"%s\" — qosify converts it with atoi(), so anything but a non-" +"zero number means off" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:837 +msgid "%s quick settings" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2323 +msgid "%s uploaded, qosify reloaded." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2357 +msgid "%s was not written: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2360 +msgid "%s was reset but %s was not written: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 +msgid "%s, applied (QoS disabled)." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2204 +msgid "" +"%s, applied — qosify did not answer on ubus, so shaping could not be checked." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2201 +msgid "%s, applied." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:538 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:547 +msgid "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify ignores it" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:535 +msgid "" +"%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify rejects the whole " +"config and interface changes are not applied" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:544 +msgid "" +"%s: %s \"%s\" is not a codepoint or 0-63 — qosify drops this class and the " +"rules using it" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:526 +msgid "" +"%s: %s \"%s\" is not a whole number — qosify.init passes it through atoll(), " +"which keeps only the leading digits" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:524 +msgid "" +"%s: %s cannot be checked — write it as one plain or fully quoted value, with " +"no backslash" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:530 +msgid "" +"%s: %s contains shell metacharacters — qosify runs the tc command with sh -c " +"as root, so they would break it or be executed" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1907 +msgid "%s: multiqueue is set, but %s has one queue, so qosify uses plain cake" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1199 +msgid "(alias)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1351 +msgid "(over file)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:501 +msgid "(this qosify build has no NQB)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2439 +msgid "A config defaults section already exists." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2437 +msgid "A section name may only contain letters, digits and underscores." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1399 +msgid "Action" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 +msgid "Active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1045 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1253 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1287 +msgid "Add" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1309 +msgid "Add failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1289 +msgid "" +"Added to the running qosify at once and not saved: an entry expires after " +"its timeout (the defaults timeout when left empty) and a qosify restart " +"drops it. One on a match from the rules file overrides it until then." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1257 +msgid "" +"Adds a line to the editor below; Save & Apply writes it to the rules file, " +"so it is kept." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:86 +msgid "Adds atm, noatm or ptm when overhead_type is manual" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:88 +msgid "Adds ether-vlan once per level (1 or 2)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:87 +msgid "Adds mpu " +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:85 +msgid "Adds overhead when overhead_type is manual" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:693 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:824 +msgid "Advanced" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2124 +msgid "An empty %s stops all shaping. Continue?" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:813 +msgid "Automatic download rate" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 +msgid "Autostart" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1012 +msgid "Autostart state unknown — rpcd did not answer" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:971 +msgid "Available" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1381 +msgid "Backup" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:76 +msgid "" +"Bandwidth for both directions, where bandwidth_up or bandwidth_down is not " +"set" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:803 +msgid "Basic" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:272 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2283 +msgid "Binary content rejected" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:79 +msgid "CAKE diffserv mode" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:90 +msgid "CAKE egress options" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:826 +msgid "CAKE egress options, space separated." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:89 +msgid "CAKE ingress options" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:825 +msgid "CAKE ingress options, space separated." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:91 +msgid "CAKE options for ingress + egress" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:84 +msgid "" +"CAKE overhead keyword added to options; manual uses overhead and " +"overhead_encap" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:818 +msgid "CAKE overhead keyword. Use none if unsure." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:648 +msgid "Cancel" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1403 +msgid "Check Devices" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1377 +msgid "Choose file…" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +msgid "Classes" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1989 +msgid "Cleanup exited with code %d" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1237 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2244 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2250 +msgid "Clear" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2123 +msgid "Clear configuration" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2244 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2250 +msgid "Clear editor" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1017 +msgid "Click to disable autostart" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1017 +msgid "Click to enable autostart" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:827 +msgid "Common CAKE options" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:689 +msgid "Config" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2148 +msgid "Config cleared, qosify stopped." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2148 +msgid "Config cleared." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2169 +msgid "Config saved" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2296 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2304 +msgid "Config: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:650 +msgid "Continue" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1438 +msgid "Could not read %s: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:692 +msgid "Counters" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1614 +msgid "Counters reset." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1599 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1877 +msgid "DNS Entries" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1557 +msgid "DNS Entries (%d of %d)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1557 +msgid "DNS Entries (%d)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1110 +msgid "" +"DSCP codepoints: CS0–CS7, AF11–AF43, EF, VA, NQB, LE, DF (NQB needs qosify " +"from June 2026; 24.10 and 25.12 do not have it). A raw value from 0 to 63 is " +"accepted too, and any dscp_* value may also name a class. Prefix with + to " +"override only when the DSCP field is zero (as described from qosify c698349; " +"24.10 and 25.12 do not honour it)." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:63 +msgid "DSCP value for ICMP packets" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:65 +msgid "DSCP value for bulk-marked packets" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:71 +msgid "DSCP value for egress" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:70 +msgid "DSCP value for ingress" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:69 +msgid "DSCP value for ingress and egress, where they are not set" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:64 +msgid "DSCP value for priority-marked packets" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1110 +msgid "DSCP values" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:61 +msgid "Default DSCP value for TCP packets" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:62 +msgid "Default DSCP value for UDP packets" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:60 +msgid "Default timeout for dynamically added entries" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1111 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1405 +msgid "Defaults" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1111 +msgid "" +"Defaults qosify applies when a key is absent — interface: mode diffserv4, " +"ingress 1, egress 1, nat 1, host_isolate 1, autorate_ingress 0, multiqueue " +"0. device: identical except nat 0. defaults: timeout 3600, dscp_default_tcp/" +"udp CS0, dscp_prio/dscp_bulk/dscp_icmp unset, bulk_trigger_pps/" +"bulk_trigger_timeout/prio_max_avg_pkt_len 0 (disabled)." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1399 +msgid "Description" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:805 +msgid "Device" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1963 +msgid "Device check done." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1966 +msgid "Device check failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:947 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:969 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1018 +msgid "Disabled" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:75 +msgid "Downlink bandwidth (same format as tc)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 +msgid "Downlink bandwidth, same format as tc. Set just below line speed." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1383 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1440 +msgid "Download" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 +msgid "Download bandwidth" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:811 +msgid "Download shaping" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1382 +msgid "Download the current files from the router." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1288 +msgid "Dynamic Entries" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1260 +msgid "" +"Each line has two whitespace separated fields, match and dscp. dscp can be a " +"raw value, a codepoint like CS0, or a class name. DNS entries are compared " +"in the order in which they are specified, using the first matching entry." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:826 +msgid "Egress CAKE options" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2274 +msgid "Empty file" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2244 +msgid "" +"Empty the config editor? Nothing is written until you click Save & Apply." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2250 +msgid "" +"Empty the rules editor? Nothing is written until you click Save & Apply." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:80 +msgid "Enable CAKE NAT host detection via conntrack" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:82 +msgid "Enable CAKE automatic rate estimation for ingress" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:81 +msgid "Enable CAKE host isolation" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:78 +msgid "Enable egress shaping" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:77 +msgid "Enable ingress shaping" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:969 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1018 +msgid "Enabled" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:946 +msgid "Enabled — Not Running" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 +msgid "Enabled — Not Shaping (check config)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:798 +msgid "Encapsulation overhead" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2436 +msgid "Enter a section name." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2410 +msgid "Enter a single IPv4 address (qosify does not accept CIDR)." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2413 +msgid "" +"Enter a single IPv6 address (qosify does not accept CIDR or a %zone suffix)." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2395 +msgid "Enter a value." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1029 +msgid "Entries" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1308 +msgid "Entry added." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1316 +msgid "Entry removed." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2102 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2215 +msgid "Error: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2099 +msgid "Error: No valid config stanzas found." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2014 +msgid "" +"Error: invalid characters in bandwidth or options fields. Use alphanumeric, " +"spaces, hyphens, dots, colons only." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2051 +msgid "Error: name must be a device or interface name" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 +msgid "Error: overhead must be a whole number of bytes" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2019 +msgid "Error: overhead_mpu must be a whole number of bytes" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2052 +msgid "Error: qosify drops a name longer than %d characters" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2324 +msgid "Errors:" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1400 +msgid "" +"Every shaped section is looked up again, one whose device now exists is " +"started and one whose device has gone is stopped. Nothing is reported back " +"by the call — the result shows in the Service table on the Overview tab." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1029 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1383 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1390 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1407 +msgid "File" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2086 +msgid "File changed on disk" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2275 +msgid "File too large (max 64KB)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 +msgid "Files" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1026 +msgid "Found (empty or invalid)" +msgstr "" + +#: applications/luci-app-qosify/root/usr/share/rpcd/acl.d/luci-app-qosify.json:3 +msgid "Grant access to LuCI app qosify" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:815 +msgid "Host isolation" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1247 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1263 +msgid "IPv4 address, e.g. 1.1.1.1" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1247 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1264 +msgid "IPv6 address, e.g. ff01::1" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:825 +msgid "Ingress CAKE options" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:805 +msgid "Interface" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1267 +msgid "Like dns:... but only matches cname entries" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:276 +msgid "" +"Line %d is longer than 1023 characters — the rule loader reads fixed-size " +"lines and would split it, comment included" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:59 +msgid "List of files with port/IP/host mappings" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1292 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1597 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1599 +msgid "Loading..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1397 +msgid "Maintenance" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:797 +msgid "Manual overhead" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1260 +msgid "Mapping file syntax" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1944 +msgid "Mapping files reloaded." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:500 +msgid "" +"Match not loaded by qosify on line %s — ports 1-%d, one IPv4/IPv6 address " +"(no CIDR or %%zone), or dns:, dns_c:, dns_q:" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:66 +msgid "Maximum average packet length for marking a flow as priority" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:821 +msgid "Minimum packet unit (MPU)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:971 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1026 +msgid "Missing" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1029 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1383 +msgid "Modified" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:499 +msgid "" +"More than two fields on line %s — qosify reads the rest of the line as the " +"DSCP value and skips it" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:816 +msgid "Multiqueue CAKE" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:814 +msgid "NAT awareness" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:805 +msgid "Netdev to enable QoS on. Required." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1834 +msgid "No CAKE tin statistics." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1878 +msgid "No DNS entries." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:498 +msgid "No DSCP target on line %s — qosify skips single-field lines" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1818 +msgid "No DSCP traffic yet." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1197 +msgid "No classes defined in %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1304 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2396 +msgid "No classes defined. Add classes in the Config tab first." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1341 +msgid "No dynamic entries." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1375 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1376 +msgid "No file selected" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2260 +msgid "No files selected." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1834 +msgid "No output." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1814 +msgid "No per-class counters." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2408 +msgid "No spaces or # allowed in patterns or addresses." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2284 +msgid "No valid UCI config stanzas" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:958 +msgid "Not Running" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2022 +msgid "Note: bandwidth not set — CAKE will run unlimited on that direction." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:67 +msgid "Number of packets per second to trigger bulk flow detection" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1252 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1268 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1285 +msgid "Only override the DSCP value if it is zero" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:791 +msgid "" +"Only sent with host isolation on — add nat to common CAKE options to force it" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1106 +msgid "Options" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:817 +msgid "Overhead" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:818 +msgid "Overhead preset" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:688 +msgid "Overview" +msgstr "Áttekintés" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2088 +msgid "Overwrite" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2261 +msgid "Overwrite config files" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1266 +msgid "" +"POSIX.2 extended regular expression for matching hostnames. Only works if " +"dns lookups are passed to qosify via the add_dns_host ubus call." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2404 +msgid "Port must be 1-%d." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2400 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2403 +msgid "Port must be a number or a range (4500, 5060-5061)." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:804 +msgid "QoS Enabled" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 +msgid "Queueing mode" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1256 +msgid "Quick Add" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1105 +msgid "Quick Add: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2407 +msgid "Range start must not exceed end." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1400 +msgid "Re-check devices" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1959 +msgid "Re-checking devices..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:855 +msgid "Re-read the mapping files only" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1942 +msgid "Re-reading the mapping files..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1398 +msgid "Re-runs the daemon's own device pass." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2278 +msgid "Read error" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2289 +msgid "Reading and validating files..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1933 +msgid "Reading tc output..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1108 +msgid "Reference" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:852 +msgid "Reload" +msgstr "Újratöltés" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:852 +msgid "Reload Rules" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1947 +msgid "Reload failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 +msgid "Remove" +msgstr "Eltávolítás" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1317 +msgid "Remove failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1407 +msgid "Replaced with" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1834 +msgid "Requires write access." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1412 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2340 +msgid "Reset" +msgstr "Visszaállítás" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1601 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1610 +msgid "Reset counters" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1615 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2374 +msgid "Reset failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2338 +msgid "Reset to defaults" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2370 +msgid "Reset to defaults, applied." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2349 +msgid "Resetting" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:851 +msgid "Restart" +msgstr "Újraindítás" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1388 +msgid "Restore" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1406 +msgid "Restore qosify defaults. Shaping is left disabled." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2349 +msgid "Restoring defaults..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:690 +msgid "Rules" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2230 +msgid "Rules saved" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2307 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2310 +msgid "Rules: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:956 +msgid "Running & Shaping" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:957 +msgid "Running — Not Shaping" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:955 +msgid "Running — Shaping Unknown" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:840 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1238 +msgid "Save & Apply" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2079 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2151 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2178 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2239 +msgid "Save failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2057 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2160 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2226 +msgid "Saving" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2057 +msgid "Saving settings and applying..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2440 +msgid "Section %s already exists." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1100 +msgid "" +"Section name is the class name that rules and dscp_* values refer to. qosify." +"init reads config alias the same way as config class." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1976 +msgid "Sending %s to qosify..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:798 +msgid "Sent to CAKE as atm, noatm or ptm." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:822 +msgid "Sent to CAKE as ether-vlan, once per tag." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:821 +msgid "Sent to CAKE as mpu, in bytes." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:797 +msgid "Sent to CAKE as overhead, in bytes." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:750 +msgid "Service" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1997 +msgid "Service action failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2071 +msgid "Settings saved" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:810 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:982 +msgid "Shaping" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1029 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1383 +msgid "Size" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:73 +msgid "Skip this section" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:851 +msgid "Start" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:691 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:979 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1029 +msgid "Status" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 +msgid "Status Unknown" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:853 +msgid "Stop" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1261 +msgid "TCP single port, or range from to " +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1932 +msgid "The detailed tc output needs write access to this page." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1356 +msgid "The first %d entries are shown." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:675 +msgid "" +"The qosify UCI configuration could not be loaded — class and interface lists " +"may be incomplete." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1389 +msgid "" +"The selected files replace the ones on the router and qosify is reloaded." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2262 +msgid "" +"The selected files replace the ones on the router and qosify is reloaded. " +"Download a backup from this tab first if you need one." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:68 +msgid "Time below bulk_trigger_pps threshold until a bulk flow mark is removed" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1597 +msgid "Traffic by CAKE Tin" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1595 +msgid "Traffic by Class" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1596 +msgid "Traffic by DSCP" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:681 +msgid "Traffic shaping and DSCP classification via qosify" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1262 +msgid "UDP single port, or range from to " +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:952 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:954 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1013 +msgid "Unknown" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:501 +msgid "Unknown class/DSCP target: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:804 +msgid "Unticked sets disabled 1 and qosify skips this section." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:74 +msgid "Uplink bandwidth (same format as tc)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:806 +msgid "Uplink bandwidth, same format as tc. Set just below line speed." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1390 +msgid "Upload" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1395 +msgid "Upload & Apply" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2263 +msgid "Upload and apply" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:806 +msgid "Upload bandwidth" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2315 +msgid "Upload error: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2332 +msgid "Upload failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:812 +msgid "Upload shaping" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2289 +msgid "Uploading" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:980 +msgid "Uptime" +msgstr "Futási idő" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:83 +msgid "Use cake_mq instead of cake on devices with more than one queue" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:822 +msgid "VLAN tags" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1026 +msgid "Valid" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2205 +msgid "Warning: %s but qosify is not shaping traffic — check the Status tab." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1942 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1959 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1976 +msgid "Working" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2124 +msgid "Write empty file" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2160 +msgid "Writing config and reloading qosify..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2226 +msgid "Writing rules and reloading qosify..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +msgid "" +"You have read-only access to this page, so editing and service control are " +"disabled." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1610 +msgid "" +"Zero qosify's own counters (get_stats)? The CAKE tin counters belong to tc " +"and are kept." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:989 +msgid "active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2018 +msgid "" +"bandwidth_down does not look like a tc rate (100mbit, 12MBps, unlimited) — " +"passing it through anyway" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2017 +msgid "" +"bandwidth_up does not look like a tc rate (100mbit, 12MBps, unlimited) — " +"passing it through anyway" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1101 +msgid "" +"config device takes the same options, with name set to a netdev. nat " +"defaults to 1 for interfaces and 0 for devices." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:988 +msgid "device %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:990 +msgid "device: %s, ingress: %s, egress: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:350 +msgid "" +"disabled is set to \"%s\" — config_get_bool does not recognise that, so the " +"section stays enabled" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1337 +msgid "dump did not answer." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:787 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:805 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:825 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:826 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:827 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1251 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1283 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2383 +msgid "e.g. %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1265 +msgid "fnmatch() pattern supporting * and ? as wildcard characters" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1863 +msgid "get_stats did not answer." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:989 +msgid "inactive" +msgstr "inaktív" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1199 +msgid "ingress %s, egress %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:343 +msgid "ingress and egress are both 0 — nothing is shaped" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:988 +msgid "interface %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1246 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1282 +msgid "match" +msgstr "illesztés" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:324 +msgid "" +"mode \"%s\" is not a CAKE diffserv mode — tc refuses the qdisc, so nothing " +"is shaped although qosify reports the section active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:335 +msgid "multiqueue is set, but this qosify.init does not pass it to qosify" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:323 +msgid "" +"name \"%s\" is dropped by qosify — it takes at most %d characters and no " +"quote" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:322 +msgid "" +"name is not set — qosify.init sends an empty device name and this section is " +"never applied" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:339 +msgid "" +"nat is not sent: qosify only emits nat/nonat inside the host_isolate branch. " +"CAKE does accept flows plus nat — put nat in options to apply it" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:340 +msgid "" +"nat only reaches %s — put it in options, or in both ingress_options and " +"egress_options" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:72 +msgid "" +"netifd interface (config interface) or netdev (config device) to enable QoS " +"on" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:805 +msgid "netifd interface to enable QoS on. Required." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 +msgid "never" +msgstr "soha" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:990 +msgid "no" +msgstr "nem" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:345 +msgid "no bandwidth_down or bandwidth — ingress CAKE runs unlimited" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:344 +msgid "no bandwidth_up or bandwidth — egress CAKE runs unlimited" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:970 +msgid "none" +msgstr "none" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:342 +msgid "overhead and overhead_encap are ignored unless overhead_type is manual" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:331 +msgid "overhead_encap \"%s\" is not atm, noatm or ptm — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:328 +msgid "" +"overhead_type \"%s\" is not one qosify.init knows, so no overhead is set" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:334 +msgid "overhead_vlan \"%s\" is not 0, 1 or 2 — qosify.init adds no ether-vlan" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:680 +#: applications/luci-app-qosify/root/usr/share/luci/menu.d/luci-app-qosify.json:3 +msgid "qosify" +msgstr "qosify" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:935 +msgid "" +"qosify did not appear on ubus, so its config was not applied — press Reload" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:920 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1981 +msgid "qosify did not come up — check the system log" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1337 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1860 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1924 +msgid "qosify is not running. Start from the Overview tab." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1987 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2141 +msgid "qosify is still running — leaving the qdiscs alone" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1408 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1409 +msgid "qosify package template" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1446 +msgid "qosify-status" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1934 +msgid "qosify-status returned no output." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:963 +msgid "" +"rpcd is not answering for qosify — check the ACL in /usr/share/rpcd/acl.d " +"and restart rpcd" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:919 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1337 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1859 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1923 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1980 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1986 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2140 +msgid "rpcd is not answering for qosify, so the service state is unknown." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1043 +msgid "section name" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1041 +msgid "section type" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1774 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1778 +msgid "share" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1303 +msgid "timeout must be a whole number of seconds above 0." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1786 +msgid "total" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1251 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1283 +msgid "value" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:990 +msgid "yes" +msgstr "" diff --git a/luci-app-qosify/po/it/qosify.po b/luci-app-qosify/po/it/qosify.po new file mode 100644 index 000000000..af6c7ddf9 --- /dev/null +++ b/luci-app-qosify/po/it/qosify.po @@ -0,0 +1,1562 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: it\n" +"Content-Transfer-Encoding: 8bit\n" +"Last-Translator: Martin Olmer \n" +"Language-Team: Italian \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"PO-Revision-Date: 2026-11-05 20:25+0000\n" +"X-Generator: Weblate 2026.11.2.dev0\n" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1302 +msgid "\"%s\" is not a value qosify accepts for %s." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:521 +msgid "" +"%d class and alias sections — qosify has %d class slots, so %s and the rules " +"using them are dropped" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:970 +msgid "%d interface" +msgid_plural "%d interfaces" +msgstr[0] "" +msgstr[1] "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1031 +msgid "%d rule" +msgid_plural "%d rules" +msgstr[0] "" +msgstr[1] "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1030 +msgid "%d section" +msgid_plural "%d sections" +msgstr[0] "" +msgstr[1] "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:326 +msgid "" +"%s \"%s\" is not a tc rate — tc refuses the qdisc, so nothing is shaped " +"although qosify reports the section active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:330 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:333 +msgid "%s \"%s\" is not a whole number — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:769 +msgid "%s (current)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:787 +msgid "%s (from bandwidth)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2339 +msgid "" +"%s and %s are replaced with the templates shipped by the qosify package, and " +"shaping is left disabled." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2063 +msgid "" +"%s came back empty although it is %d bytes on disk — refusing to overwrite it" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2600 +msgid "%s changed on disk — your unsaved edits are still in the editor." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2503 +msgid "" +"%s could not be read — the editor is left empty and will not be saved over " +"it." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2087 +msgid "" +"%s has changed since this editor was loaded. Saving now discards those " +"changes." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2118 +msgid "" +"%s is %d bytes on disk but was never loaded into the editor — refusing to " +"truncate it. Reload the page first." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:426 +msgid "%s is a list in this section — edit %s directly" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1908 +msgid "" +"%s is not in the defaults list — qosify does not load it, so the Rules tab " +"has no effect" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:432 +msgid "%s is not one plain statement in this section — edit %s directly" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:347 +msgid "" +"%s is set to \"%s\" — qosify converts it with atoi(), so anything but a non-" +"zero number means off" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:837 +msgid "%s quick settings" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2323 +msgid "%s uploaded, qosify reloaded." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2357 +msgid "%s was not written: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2360 +msgid "%s was reset but %s was not written: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 +msgid "%s, applied (QoS disabled)." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2204 +msgid "" +"%s, applied — qosify did not answer on ubus, so shaping could not be checked." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2201 +msgid "%s, applied." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:538 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:547 +msgid "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify ignores it" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:535 +msgid "" +"%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify rejects the whole " +"config and interface changes are not applied" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:544 +msgid "" +"%s: %s \"%s\" is not a codepoint or 0-63 — qosify drops this class and the " +"rules using it" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:526 +msgid "" +"%s: %s \"%s\" is not a whole number — qosify.init passes it through atoll(), " +"which keeps only the leading digits" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:524 +msgid "" +"%s: %s cannot be checked — write it as one plain or fully quoted value, with " +"no backslash" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:530 +msgid "" +"%s: %s contains shell metacharacters — qosify runs the tc command with sh -c " +"as root, so they would break it or be executed" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1907 +msgid "%s: multiqueue is set, but %s has one queue, so qosify uses plain cake" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1199 +msgid "(alias)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1351 +msgid "(over file)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:501 +msgid "(this qosify build has no NQB)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2439 +msgid "A config defaults section already exists." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2437 +msgid "A section name may only contain letters, digits and underscores." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1399 +msgid "Action" +msgstr "Azione" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 +msgid "Active" +msgstr "Attivo" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1045 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1253 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1287 +msgid "Add" +msgstr "Aggiungi" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1309 +msgid "Add failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1289 +msgid "" +"Added to the running qosify at once and not saved: an entry expires after " +"its timeout (the defaults timeout when left empty) and a qosify restart " +"drops it. One on a match from the rules file overrides it until then." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1257 +msgid "" +"Adds a line to the editor below; Save & Apply writes it to the rules file, " +"so it is kept." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:86 +msgid "Adds atm, noatm or ptm when overhead_type is manual" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:88 +msgid "Adds ether-vlan once per level (1 or 2)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:87 +msgid "Adds mpu " +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:85 +msgid "Adds overhead when overhead_type is manual" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:693 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:824 +msgid "Advanced" +msgstr "Avanzato" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2124 +msgid "An empty %s stops all shaping. Continue?" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:813 +msgid "Automatic download rate" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 +msgid "Autostart" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1012 +msgid "Autostart state unknown — rpcd did not answer" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:971 +msgid "Available" +msgstr "Disponibile" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1381 +msgid "Backup" +msgstr "Backup" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:76 +msgid "" +"Bandwidth for both directions, where bandwidth_up or bandwidth_down is not " +"set" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:803 +msgid "Basic" +msgstr "Di base" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:272 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2283 +msgid "Binary content rejected" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:79 +msgid "CAKE diffserv mode" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:90 +msgid "CAKE egress options" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:826 +msgid "CAKE egress options, space separated." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:89 +msgid "CAKE ingress options" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:825 +msgid "CAKE ingress options, space separated." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:91 +msgid "CAKE options for ingress + egress" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:84 +msgid "" +"CAKE overhead keyword added to options; manual uses overhead and " +"overhead_encap" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:818 +msgid "CAKE overhead keyword. Use none if unsure." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:648 +msgid "Cancel" +msgstr "Annulla" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1403 +msgid "Check Devices" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1377 +msgid "Choose file…" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +msgid "Classes" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1989 +msgid "Cleanup exited with code %d" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1237 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2244 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2250 +msgid "Clear" +msgstr "Cancella" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2123 +msgid "Clear configuration" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2244 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2250 +msgid "Clear editor" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1017 +msgid "Click to disable autostart" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1017 +msgid "Click to enable autostart" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:827 +msgid "Common CAKE options" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:689 +msgid "Config" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2148 +msgid "Config cleared, qosify stopped." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2148 +msgid "Config cleared." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2169 +msgid "Config saved" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2296 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2304 +msgid "Config: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:650 +msgid "Continue" +msgstr "Continua" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1438 +msgid "Could not read %s: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:692 +msgid "Counters" +msgstr "Contatori" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1614 +msgid "Counters reset." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1599 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1877 +msgid "DNS Entries" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1557 +msgid "DNS Entries (%d of %d)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1557 +msgid "DNS Entries (%d)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1110 +msgid "" +"DSCP codepoints: CS0–CS7, AF11–AF43, EF, VA, NQB, LE, DF (NQB needs qosify " +"from June 2026; 24.10 and 25.12 do not have it). A raw value from 0 to 63 is " +"accepted too, and any dscp_* value may also name a class. Prefix with + to " +"override only when the DSCP field is zero (as described from qosify c698349; " +"24.10 and 25.12 do not honour it)." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:63 +msgid "DSCP value for ICMP packets" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:65 +msgid "DSCP value for bulk-marked packets" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:71 +msgid "DSCP value for egress" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:70 +msgid "DSCP value for ingress" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:69 +msgid "DSCP value for ingress and egress, where they are not set" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:64 +msgid "DSCP value for priority-marked packets" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1110 +msgid "DSCP values" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:61 +msgid "Default DSCP value for TCP packets" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:62 +msgid "Default DSCP value for UDP packets" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:60 +msgid "Default timeout for dynamically added entries" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1111 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1405 +msgid "Defaults" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1111 +msgid "" +"Defaults qosify applies when a key is absent — interface: mode diffserv4, " +"ingress 1, egress 1, nat 1, host_isolate 1, autorate_ingress 0, multiqueue " +"0. device: identical except nat 0. defaults: timeout 3600, dscp_default_tcp/" +"udp CS0, dscp_prio/dscp_bulk/dscp_icmp unset, bulk_trigger_pps/" +"bulk_trigger_timeout/prio_max_avg_pkt_len 0 (disabled)." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1399 +msgid "Description" +msgstr "Descrizione" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:805 +msgid "Device" +msgstr "Dispositivo" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1963 +msgid "Device check done." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1966 +msgid "Device check failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:947 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:969 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1018 +msgid "Disabled" +msgstr "Disattivato" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:75 +msgid "Downlink bandwidth (same format as tc)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 +msgid "Downlink bandwidth, same format as tc. Set just below line speed." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1383 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1440 +msgid "Download" +msgstr "Scarica" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 +msgid "Download bandwidth" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:811 +msgid "Download shaping" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1382 +msgid "Download the current files from the router." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1288 +msgid "Dynamic Entries" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1260 +msgid "" +"Each line has two whitespace separated fields, match and dscp. dscp can be a " +"raw value, a codepoint like CS0, or a class name. DNS entries are compared " +"in the order in which they are specified, using the first matching entry." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:826 +msgid "Egress CAKE options" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2274 +msgid "Empty file" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2244 +msgid "" +"Empty the config editor? Nothing is written until you click Save & Apply." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2250 +msgid "" +"Empty the rules editor? Nothing is written until you click Save & Apply." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:80 +msgid "Enable CAKE NAT host detection via conntrack" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:82 +msgid "Enable CAKE automatic rate estimation for ingress" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:81 +msgid "Enable CAKE host isolation" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:78 +msgid "Enable egress shaping" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:77 +msgid "Enable ingress shaping" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:969 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1018 +msgid "Enabled" +msgstr "Abilita" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:946 +msgid "Enabled — Not Running" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 +msgid "Enabled — Not Shaping (check config)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:798 +msgid "Encapsulation overhead" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2436 +msgid "Enter a section name." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2410 +msgid "Enter a single IPv4 address (qosify does not accept CIDR)." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2413 +msgid "" +"Enter a single IPv6 address (qosify does not accept CIDR or a %zone suffix)." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2395 +msgid "Enter a value." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1029 +msgid "Entries" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1308 +msgid "Entry added." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1316 +msgid "Entry removed." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2102 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2215 +msgid "Error: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2099 +msgid "Error: No valid config stanzas found." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2014 +msgid "" +"Error: invalid characters in bandwidth or options fields. Use alphanumeric, " +"spaces, hyphens, dots, colons only." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2051 +msgid "Error: name must be a device or interface name" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 +msgid "Error: overhead must be a whole number of bytes" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2019 +msgid "Error: overhead_mpu must be a whole number of bytes" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2052 +msgid "Error: qosify drops a name longer than %d characters" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2324 +msgid "Errors:" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1400 +msgid "" +"Every shaped section is looked up again, one whose device now exists is " +"started and one whose device has gone is stopped. Nothing is reported back " +"by the call — the result shows in the Service table on the Overview tab." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1029 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1383 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1390 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1407 +msgid "File" +msgstr "File" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2086 +msgid "File changed on disk" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2275 +msgid "File too large (max 64KB)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 +msgid "Files" +msgstr "File" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1026 +msgid "Found (empty or invalid)" +msgstr "" + +#: applications/luci-app-qosify/root/usr/share/rpcd/acl.d/luci-app-qosify.json:3 +msgid "Grant access to LuCI app qosify" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:815 +msgid "Host isolation" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1247 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1263 +msgid "IPv4 address, e.g. 1.1.1.1" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1247 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1264 +msgid "IPv6 address, e.g. ff01::1" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:825 +msgid "Ingress CAKE options" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:805 +msgid "Interface" +msgstr "Interfaccia" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1267 +msgid "Like dns:... but only matches cname entries" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:276 +msgid "" +"Line %d is longer than 1023 characters — the rule loader reads fixed-size " +"lines and would split it, comment included" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:59 +msgid "List of files with port/IP/host mappings" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1292 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1597 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1599 +msgid "Loading..." +msgstr "Caricamento..." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1397 +msgid "Maintenance" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:797 +msgid "Manual overhead" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1260 +msgid "Mapping file syntax" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1944 +msgid "Mapping files reloaded." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:500 +msgid "" +"Match not loaded by qosify on line %s — ports 1-%d, one IPv4/IPv6 address " +"(no CIDR or %%zone), or dns:, dns_c:, dns_q:" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:66 +msgid "Maximum average packet length for marking a flow as priority" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:821 +msgid "Minimum packet unit (MPU)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:971 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1026 +msgid "Missing" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1029 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1383 +msgid "Modified" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:499 +msgid "" +"More than two fields on line %s — qosify reads the rest of the line as the " +"DSCP value and skips it" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:816 +msgid "Multiqueue CAKE" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:814 +msgid "NAT awareness" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:805 +msgid "Netdev to enable QoS on. Required." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1834 +msgid "No CAKE tin statistics." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1878 +msgid "No DNS entries." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:498 +msgid "No DSCP target on line %s — qosify skips single-field lines" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1818 +msgid "No DSCP traffic yet." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1197 +msgid "No classes defined in %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1304 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2396 +msgid "No classes defined. Add classes in the Config tab first." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1341 +msgid "No dynamic entries." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1375 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1376 +msgid "No file selected" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2260 +msgid "No files selected." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1834 +msgid "No output." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1814 +msgid "No per-class counters." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2408 +msgid "No spaces or # allowed in patterns or addresses." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2284 +msgid "No valid UCI config stanzas" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:958 +msgid "Not Running" +msgstr "Non in esecuzione" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2022 +msgid "Note: bandwidth not set — CAKE will run unlimited on that direction." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:67 +msgid "Number of packets per second to trigger bulk flow detection" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1252 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1268 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1285 +msgid "Only override the DSCP value if it is zero" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:791 +msgid "" +"Only sent with host isolation on — add nat to common CAKE options to force it" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1106 +msgid "Options" +msgstr "Opzioni" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:817 +msgid "Overhead" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:818 +msgid "Overhead preset" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:688 +msgid "Overview" +msgstr "Riepilogo" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2088 +msgid "Overwrite" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2261 +msgid "Overwrite config files" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1266 +msgid "" +"POSIX.2 extended regular expression for matching hostnames. Only works if " +"dns lookups are passed to qosify via the add_dns_host ubus call." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2404 +msgid "Port must be 1-%d." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2400 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2403 +msgid "Port must be a number or a range (4500, 5060-5061)." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:804 +msgid "QoS Enabled" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 +msgid "Queueing mode" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1256 +msgid "Quick Add" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1105 +msgid "Quick Add: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2407 +msgid "Range start must not exceed end." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1400 +msgid "Re-check devices" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1959 +msgid "Re-checking devices..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:855 +msgid "Re-read the mapping files only" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1942 +msgid "Re-reading the mapping files..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1398 +msgid "Re-runs the daemon's own device pass." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2278 +msgid "Read error" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2289 +msgid "Reading and validating files..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1933 +msgid "Reading tc output..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1108 +msgid "Reference" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:852 +msgid "Reload" +msgstr "Ricarica" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:852 +msgid "Reload Rules" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1947 +msgid "Reload failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 +msgid "Remove" +msgstr "Rimuovi" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1317 +msgid "Remove failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1407 +msgid "Replaced with" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1834 +msgid "Requires write access." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1412 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2340 +msgid "Reset" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1601 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1610 +msgid "Reset counters" +msgstr "Azzera contatori" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1615 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2374 +msgid "Reset failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2338 +msgid "Reset to defaults" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2370 +msgid "Reset to defaults, applied." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2349 +msgid "Resetting" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:851 +msgid "Restart" +msgstr "Riavvia" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1388 +msgid "Restore" +msgstr "Ripristina" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1406 +msgid "Restore qosify defaults. Shaping is left disabled." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2349 +msgid "Restoring defaults..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:690 +msgid "Rules" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2230 +msgid "Rules saved" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2307 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2310 +msgid "Rules: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:956 +msgid "Running & Shaping" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:957 +msgid "Running — Not Shaping" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:955 +msgid "Running — Shaping Unknown" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:840 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1238 +msgid "Save & Apply" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2079 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2151 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2178 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2239 +msgid "Save failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2057 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2160 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2226 +msgid "Saving" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2057 +msgid "Saving settings and applying..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2440 +msgid "Section %s already exists." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1100 +msgid "" +"Section name is the class name that rules and dscp_* values refer to. qosify." +"init reads config alias the same way as config class." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1976 +msgid "Sending %s to qosify..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:798 +msgid "Sent to CAKE as atm, noatm or ptm." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:822 +msgid "Sent to CAKE as ether-vlan, once per tag." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:821 +msgid "Sent to CAKE as mpu, in bytes." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:797 +msgid "Sent to CAKE as overhead, in bytes." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:750 +msgid "Service" +msgstr "Servizio" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1997 +msgid "Service action failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2071 +msgid "Settings saved" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:810 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:982 +msgid "Shaping" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1029 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1383 +msgid "Size" +msgstr "Dimensione" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:73 +msgid "Skip this section" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:851 +msgid "Start" +msgstr "Avvia" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:691 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:979 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1029 +msgid "Status" +msgstr "Stato" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 +msgid "Status Unknown" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:853 +msgid "Stop" +msgstr "Ferma" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1261 +msgid "TCP single port, or range from to " +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1932 +msgid "The detailed tc output needs write access to this page." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1356 +msgid "The first %d entries are shown." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:675 +msgid "" +"The qosify UCI configuration could not be loaded — class and interface lists " +"may be incomplete." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1389 +msgid "" +"The selected files replace the ones on the router and qosify is reloaded." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2262 +msgid "" +"The selected files replace the ones on the router and qosify is reloaded. " +"Download a backup from this tab first if you need one." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:68 +msgid "Time below bulk_trigger_pps threshold until a bulk flow mark is removed" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1597 +msgid "Traffic by CAKE Tin" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1595 +msgid "Traffic by Class" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1596 +msgid "Traffic by DSCP" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:681 +msgid "Traffic shaping and DSCP classification via qosify" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1262 +msgid "UDP single port, or range from to " +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:952 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:954 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1013 +msgid "Unknown" +msgstr "Sconosciuto" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:501 +msgid "Unknown class/DSCP target: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:804 +msgid "Unticked sets disabled 1 and qosify skips this section." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:74 +msgid "Uplink bandwidth (same format as tc)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:806 +msgid "Uplink bandwidth, same format as tc. Set just below line speed." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1390 +msgid "Upload" +msgstr "Carica" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1395 +msgid "Upload & Apply" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2263 +msgid "Upload and apply" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:806 +msgid "Upload bandwidth" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2315 +msgid "Upload error: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2332 +msgid "Upload failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:812 +msgid "Upload shaping" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2289 +msgid "Uploading" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:980 +msgid "Uptime" +msgstr "Tempo di attività" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:83 +msgid "Use cake_mq instead of cake on devices with more than one queue" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:822 +msgid "VLAN tags" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1026 +msgid "Valid" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2205 +msgid "Warning: %s but qosify is not shaping traffic — check the Status tab." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1942 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1959 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1976 +msgid "Working" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2124 +msgid "Write empty file" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2160 +msgid "Writing config and reloading qosify..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2226 +msgid "Writing rules and reloading qosify..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +msgid "" +"You have read-only access to this page, so editing and service control are " +"disabled." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1610 +msgid "" +"Zero qosify's own counters (get_stats)? The CAKE tin counters belong to tc " +"and are kept." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:989 +msgid "active" +msgstr "attivo" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2018 +msgid "" +"bandwidth_down does not look like a tc rate (100mbit, 12MBps, unlimited) — " +"passing it through anyway" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2017 +msgid "" +"bandwidth_up does not look like a tc rate (100mbit, 12MBps, unlimited) — " +"passing it through anyway" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1101 +msgid "" +"config device takes the same options, with name set to a netdev. nat " +"defaults to 1 for interfaces and 0 for devices." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:988 +msgid "device %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:990 +msgid "device: %s, ingress: %s, egress: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:350 +msgid "" +"disabled is set to \"%s\" — config_get_bool does not recognise that, so the " +"section stays enabled" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1337 +msgid "dump did not answer." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:787 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:805 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:825 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:826 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:827 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1251 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1283 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2383 +msgid "e.g. %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1265 +msgid "fnmatch() pattern supporting * and ? as wildcard characters" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1863 +msgid "get_stats did not answer." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:989 +msgid "inactive" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1199 +msgid "ingress %s, egress %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:343 +msgid "ingress and egress are both 0 — nothing is shaped" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:988 +msgid "interface %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1246 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1282 +msgid "match" +msgstr "corrispondenza" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:324 +msgid "" +"mode \"%s\" is not a CAKE diffserv mode — tc refuses the qdisc, so nothing " +"is shaped although qosify reports the section active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:335 +msgid "multiqueue is set, but this qosify.init does not pass it to qosify" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:323 +msgid "" +"name \"%s\" is dropped by qosify — it takes at most %d characters and no " +"quote" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:322 +msgid "" +"name is not set — qosify.init sends an empty device name and this section is " +"never applied" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:339 +msgid "" +"nat is not sent: qosify only emits nat/nonat inside the host_isolate branch. " +"CAKE does accept flows plus nat — put nat in options to apply it" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:340 +msgid "" +"nat only reaches %s — put it in options, or in both ingress_options and " +"egress_options" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:72 +msgid "" +"netifd interface (config interface) or netdev (config device) to enable QoS " +"on" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:805 +msgid "netifd interface to enable QoS on. Required." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 +msgid "never" +msgstr "mai" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:990 +msgid "no" +msgstr "no" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:345 +msgid "no bandwidth_down or bandwidth — ingress CAKE runs unlimited" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:344 +msgid "no bandwidth_up or bandwidth — egress CAKE runs unlimited" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:970 +msgid "none" +msgstr "nessuno" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:342 +msgid "overhead and overhead_encap are ignored unless overhead_type is manual" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:331 +msgid "overhead_encap \"%s\" is not atm, noatm or ptm — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:328 +msgid "" +"overhead_type \"%s\" is not one qosify.init knows, so no overhead is set" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:334 +msgid "overhead_vlan \"%s\" is not 0, 1 or 2 — qosify.init adds no ether-vlan" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:680 +#: applications/luci-app-qosify/root/usr/share/luci/menu.d/luci-app-qosify.json:3 +msgid "qosify" +msgstr "qosify" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:935 +msgid "" +"qosify did not appear on ubus, so its config was not applied — press Reload" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:920 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1981 +msgid "qosify did not come up — check the system log" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1337 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1860 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1924 +msgid "qosify is not running. Start from the Overview tab." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1987 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2141 +msgid "qosify is still running — leaving the qdiscs alone" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1408 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1409 +msgid "qosify package template" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1446 +msgid "qosify-status" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1934 +msgid "qosify-status returned no output." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:963 +msgid "" +"rpcd is not answering for qosify — check the ACL in /usr/share/rpcd/acl.d " +"and restart rpcd" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:919 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1337 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1859 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1923 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1980 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1986 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2140 +msgid "rpcd is not answering for qosify, so the service state is unknown." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1043 +msgid "section name" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1041 +msgid "section type" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1774 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1778 +msgid "share" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1303 +msgid "timeout must be a whole number of seconds above 0." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1786 +msgid "total" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1251 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1283 +msgid "value" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:990 +msgid "yes" +msgstr "" diff --git a/luci-app-qosify/po/ko/qosify.po b/luci-app-qosify/po/ko/qosify.po index d6028194d..d70756a89 100644 --- a/luci-app-qosify/po/ko/qosify.po +++ b/luci-app-qosify/po/ko/qosify.po @@ -10,161 +10,214 @@ msgstr "" "PO-Revision-Date: 2026-10-01 18:42+0000\n" "X-Generator: Weblate 2026.10\n" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1255 +msgid "\"%s\" is not a value qosify accepts for %s." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:483 +msgid "" +"%d class and alias sections — qosify has %d class slots, so %s and the rules " +"using them are dropped" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "%d interface" msgid_plural "%d interfaces" msgstr[0] "인터페이스 %d개" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:986 msgid "%d rule" msgid_plural "%d rules" msgstr[0] "규칙 %d개" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:942 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:985 msgid "%d section" msgid_plural "%d sections" msgstr[0] "섹션 %d개" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:294 +msgid "" +"%s \"%s\" is not a tc rate — tc refuses the qdisc, so nothing is shaped " +"although qosify reports the section active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:298 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:301 +msgid "%s \"%s\" is not a whole number — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 msgid "%s (current)" msgstr "%s (현재)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 msgid "%s (from bandwidth)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2085 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2288 msgid "" "%s and %s are replaced with the templates shipped by the qosify package, and " "shaping is left disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1809 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2012 msgid "" "%s came back empty although it is %d bytes on disk — refusing to overwrite it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2346 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2549 msgid "%s changed on disk — your unsaved edits are still in the editor." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2249 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2452 msgid "" "%s could not be read — the editor is left empty and will not be saved over " "it." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1833 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2036 msgid "" "%s has changed since this editor was loaded. Saving now discards those " "changes." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1864 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2067 msgid "" "%s is %d bytes on disk but was never loaded into the editor — refusing to " "truncate it. Reload the page first." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:392 msgid "%s is a list in this section — edit %s directly" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1656 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1859 msgid "" "%s is not in the defaults list — qosify does not load it, so the Rules tab " "has no effect" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:286 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:314 msgid "" "%s is set to \"%s\" — qosify converts it with atoi(), so anything but a non-" "zero number means off" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:750 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:793 msgid "%s quick settings" msgstr "%s 빠른 설정" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2069 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2272 msgid "%s uploaded, qosify reloaded." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2103 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2306 msgid "%s was not written: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2106 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2309 msgid "%s was reset but %s was not written: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1945 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2148 msgid "%s, applied (QoS disabled)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1950 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 msgid "" "%s, applied — qosify did not answer on ubus, so shaping could not be checked." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1947 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 msgid "%s, applied." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:459 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:468 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:500 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:509 msgid "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify ignores it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:456 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:497 msgid "" "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify rejects the whole " "config and interface changes are not applied" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:465 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:506 msgid "" "%s: %s \"%s\" is not a codepoint or 0-63 — qosify drops this class and the " "rules using it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:448 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:488 +msgid "" +"%s: %s \"%s\" is not a whole number — qosify.init passes it through atoll(), " +"which keeps only the leading digits" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:486 msgid "" "%s: %s cannot be checked — write it as one plain or fully quoted value, with " "no backslash" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:451 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:492 msgid "" "%s: %s contains shell metacharacters — qosify runs the tc command with sh -c " "as root, so they would break it or be executed" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "(alias)" msgstr "(별칭)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1304 +msgid "(over file)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 msgid "(this qosify build has no NQB)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2185 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2388 msgid "A config defaults section already exists." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2183 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2386 msgid "A section name may only contain letters, digits and underscores." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:856 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Action" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:899 msgid "Active" msgstr "활성" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:957 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1162 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1000 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1206 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1240 msgid "Add" msgstr "추가" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1262 +msgid "Add failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1242 +msgid "" +"Added to the running qosify at once and not saved: an entry expires after " +"its timeout (the defaults timeout when left empty) and a qosify restart " +"drops it. One on a match from the rules file overrides it until then." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +msgid "" +"Adds a line to the editor below; Save & Apply writes it to the rules file, " +"so it is kept." +msgstr "" + #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:85 msgid "Adds atm, noatm or ptm when overhead_type is manual" msgstr "" @@ -181,32 +234,32 @@ msgstr "" msgid "Adds overhead when overhead_type is manual" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:608 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:649 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:780 msgid "Advanced" msgstr "고급" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "An empty %s stops all shaping. Continue?" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:726 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:769 msgid "Automatic download rate" msgstr "자동 다운로드 속도" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:936 msgid "Autostart" msgstr "자동 시작" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:967 msgid "Autostart state unknown — rpcd did not answer" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 msgid "Available" msgstr "사용 가능" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1196 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1334 msgid "Backup" msgstr "백업" @@ -216,12 +269,12 @@ msgid "" "set" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:716 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:759 msgid "Basic" msgstr "기본" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:224 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2029 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:240 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2232 msgid "Binary content rejected" msgstr "" @@ -233,7 +286,7 @@ msgstr "CAKE 차등 서비스(Diffserv) 모드" msgid "CAKE egress options" msgstr "CAKE 이그레스 옵션" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "CAKE egress options, space separated." msgstr "" @@ -241,7 +294,7 @@ msgstr "" msgid "CAKE ingress options" msgstr "CAKE 인그레스 옵션" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "CAKE ingress options, space separated." msgstr "" @@ -255,104 +308,108 @@ msgid "" "overhead_encap" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "CAKE overhead keyword. Use none if unsure." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:564 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 msgid "Cancel" msgstr "취소" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1356 msgid "Check Devices" msgstr "장치 확인" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1330 msgid "Choose file…" msgstr "파일 선택…" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1114 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1158 msgid "Classes" msgstr "클래스" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1940 msgid "Cleanup exited with code %d" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1190 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2072 msgid "Clear configuration" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear editor" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to disable autostart" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to enable autostart" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 msgid "Common CAKE options" msgstr "공통 CAKE 옵션" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:604 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:645 msgid "Config" msgstr "설정" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared, qosify stopped." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1915 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2118 msgid "Config saved" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2042 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2050 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2253 msgid "Config: %s" msgstr "설정: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:566 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 msgid "Continue" msgstr "계속" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1391 msgid "Could not read %s: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:648 msgid "Counters" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1627 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1567 +msgid "Counters reset." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1830 msgid "DNS Entries" msgstr "DNS 항목" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d of %d)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "" "DSCP codepoints: CS0–CS7, AF11–AF43, EF, VA, NQB, LE, DF (NQB needs qosify " "from June 2026; 24.10 and 25.12 do not have it). A raw value from 0 to 63 is " @@ -384,7 +441,7 @@ msgstr "" msgid "DSCP value for priority-marked packets" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "DSCP values" msgstr "DSCP 값" @@ -400,12 +457,12 @@ msgstr "UDP 패킷의 기본 DSCP 값" msgid "Default timeout for dynamically added entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1358 msgid "Defaults" msgstr "기본값" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 msgid "" "Defaults qosify applies when a key is absent — interface: mode diffserv4, " "ingress 1, egress 1, nat 1, host_isolate 1, autorate_ingress 0. device: " @@ -414,21 +471,25 @@ msgid "" "prio_max_avg_pkt_len 0 (disabled)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Description" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Device" msgstr "장치" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1914 msgid "Device check done." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1714 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1917 msgid "Device check failed: %s" msgstr "장치 확인 실패: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:859 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Disabled" msgstr "비활성화" @@ -436,48 +497,52 @@ msgstr "비활성화" msgid "Downlink bandwidth (same format as tc)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Downlink bandwidth, same format as tc. Set just below line speed." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1247 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1393 msgid "Download" msgstr "다운로드" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Download bandwidth" msgstr "다운로드 대역폭" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:767 msgid "Download shaping" msgstr "다운로드 셰이핑" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1197 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1335 msgid "Download the current files from the router." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1241 +msgid "Dynamic Entries" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "" "Each line has two whitespace separated fields, match and dscp. dscp can be a " "raw value, a codepoint like CS0, or a class name. DNS entries are compared " "in the order in which they are specified, using the first matching entry." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "Egress CAKE options" msgstr "이그레스 CAKE 옵션" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2223 msgid "Empty file" msgstr "빈 파일" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 msgid "" "Empty the config editor? Nothing is written until you click Save & Apply." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "" "Empty the rules editor? Nothing is written until you click Save & Apply." msgstr "" @@ -502,94 +567,114 @@ msgstr "이그레스 셰이핑 활성화" msgid "Enable ingress shaping" msgstr "인그레스 셰이핑 활성화" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Enabled" msgstr "활성화" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:858 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 msgid "Enabled — Not Running" msgstr "활성화 — 실행 중 아님" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:857 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 msgid "Enabled — Not Shaping (check config)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Encapsulation overhead" msgstr "캡슐화 오버헤드" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2182 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2385 msgid "Enter a section name." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2156 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2359 msgid "Enter a single IPv4 address (qosify does not accept CIDR)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2159 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2362 msgid "" "Enter a single IPv6 address (qosify does not accept CIDR or a %zone suffix)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2141 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2344 msgid "Enter a value." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Entries" msgstr "항목" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1848 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1961 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1261 +msgid "Entry added." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1269 +msgid "Entry removed." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2051 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2164 msgid "Error: %s" msgstr "오류: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1845 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2048 msgid "Error: No valid config stanzas found." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1763 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1965 msgid "" "Error: invalid characters in bandwidth or options fields. Use alphanumeric, " "spaces, hyphens, dots, colons only." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1798 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2000 msgid "Error: name must be a device or interface name" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1769 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1971 msgid "Error: overhead must be a whole number of bytes" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1970 msgid "Error: overhead_mpu must be a whole number of bytes" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2070 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2001 +msgid "Error: qosify drops a name longer than %d characters" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2273 msgid "Errors:" msgstr "오류:" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 +msgid "" +"Every shaped section is looked up again, one whose device now exists is " +"started and one whose device has gone is stopped. Nothing is reported back " +"by the call — the result shows in the Service table on the Overview tab." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 msgid "File" msgstr "파일" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1832 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 msgid "File changed on disk" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2224 msgid "File too large (max 64KB)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:667 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 msgid "Files" msgstr "파일" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Found (empty or invalid)" msgstr "" @@ -597,37 +682,33 @@ msgstr "" msgid "Grant access to LuCI app qosify" msgstr "LuCI 앱 qosify에 접근 권한 부여" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:728 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:771 msgid "Host isolation" msgstr "호스트 격리" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1169 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1216 msgid "IPv4 address, e.g. 1.1.1.1" msgstr "IPv4 주소 (예: 1.1.1.1)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1170 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 msgid "IPv6 address, e.g. ff01::1" msgstr "IPv6 주소 (예: ff01::1)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "Ingress CAKE options" msgstr "인그레스 CAKE 옵션" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Interface" msgstr "인터페이스" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:741 -msgid "Invalid CAKE options can stop qosify starting." -msgstr "" - -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1173 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1220 msgid "Like dns:... but only matches cname entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:228 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:244 msgid "" "Line %d is longer than 1023 characters — the rule loader reads fixed-size " "lines and would split it, comment included" @@ -637,28 +718,29 @@ msgstr "" msgid "List of files with port/IP/host mappings" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 msgid "Loading..." msgstr "불러오는 중..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1212 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1350 msgid "Maintenance" msgstr "유지 관리" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Manual overhead" msgstr "수동 오버헤드" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "Mapping file syntax" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1692 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1895 msgid "Mapping files reloaded." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:434 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:462 msgid "" "Match not loaded by qosify on line %s — ports 1-65534, one IPv4/IPv6 address " "(no CIDR or %%zone), or dns:, dns_c:" @@ -668,84 +750,93 @@ msgstr "" msgid "Maximum average packet length for marking a flow as priority" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Minimum packet unit (MPU)" msgstr "최소 패킷 단위 (MPU)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Missing" msgstr "누락됨" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Modified" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:433 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:461 msgid "" "More than two fields on line %s — qosify reads the rest of the line as the " "DSCP value and skips it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:770 msgid "NAT awareness" msgstr "NAT 인식" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Netdev to enable QoS on. Required." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No CAKE tin statistics." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1628 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1831 msgid "No DNS entries." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:432 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:460 msgid "No DSCP target on line %s — qosify skips single-field lines" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1107 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +msgid "No DSCP traffic yet." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1151 msgid "No classes defined in %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2142 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1257 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2345 msgid "No classes defined. Add classes in the Config tab first." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1192 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1294 +msgid "No dynamic entries." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1328 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1329 msgid "No file selected" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2209 msgid "No files selected." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No output." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 msgid "No per-class counters." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2357 msgid "No spaces or # allowed in patterns or addresses." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2030 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2233 msgid "No valid UCI config stanzas" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:913 msgid "Not Running" msgstr "중지됨" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1973 msgid "Note: bandwidth not set — CAKE will run unlimited on that direction." msgstr "" @@ -753,264 +844,279 @@ msgstr "" msgid "Number of packets per second to trigger bulk flow detection" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1161 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1174 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1221 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1238 msgid "Only override the DSCP value if it is zero" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:704 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:747 msgid "" "Only sent with host isolation on — add nat to common CAKE options to force it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1017 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1060 msgid "Options" msgstr "옵션" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:730 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:773 msgid "Overhead" msgstr "오버헤드" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "Overhead preset" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:603 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:644 msgid "Overview" msgstr "개요" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1834 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2037 msgid "Overwrite" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2007 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2210 msgid "Overwrite config files" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1172 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 msgid "" "POSIX.2 extended regular expression for matching hostnames. Only works if " "dns lookups are passed to qosify via the add_dns_host ubus call." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2353 msgid "Port must be 1-65534 (qosify rejects 65535)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2149 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2349 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2352 msgid "Port must be a number or a range (4500, 5060-5061)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "QoS Enabled" msgstr "QoS 활성화" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:721 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 msgid "Queueing mode" msgstr "대기열 관리 모드" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1163 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1209 msgid "Quick Add" msgstr "빠른 추가" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1016 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1059 msgid "Quick Add: %s" msgstr "빠른 추가: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2356 msgid "Range start must not exceed end." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 msgid "Re-check devices" msgstr "장치 재확인" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 msgid "Re-checking devices..." msgstr "장치를 다시 확인 중..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:811 msgid "Re-read the mapping files only" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 msgid "Re-reading the mapping files..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 -msgid "" -"Re-runs the daemon's own device pass: every shaped section is looked up " -"again, one whose device now exists is started and one whose device has gone " -"is stopped. Nothing is reported back by the call — the result shows in the " -"Service table on the Overview tab." +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1351 +msgid "Re-runs the daemon's own device pass." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2024 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2227 msgid "Read error" msgstr "읽기 오류" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Reading and validating files..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1681 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1884 msgid "Reading tc output..." msgstr "tc 출력을 읽는 중..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1019 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1062 msgid "Reference" msgstr "참조" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload" msgstr "다시 불러오기" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload Rules" msgstr "규칙 다시 불러오기" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1695 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1898 msgid "Reload failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1306 +msgid "Remove" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1270 +msgid "Remove failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 +msgid "Replaced with" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "Requires write access." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2086 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1365 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2289 msgid "Reset" msgstr "초기화" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2120 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1554 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "Reset counters" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2323 msgid "Reset failed: %s" msgstr "초기화 실패: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2084 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2287 msgid "Reset to defaults" msgstr "기본값으로 초기화" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2116 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2319 msgid "Reset to defaults, applied." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Resetting" msgstr "초기화 중" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Restart" msgstr "재시작" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1203 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1341 msgid "Restore" msgstr "복원" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 -msgid "Restore qosify defaults" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1359 +msgid "Restore qosify defaults. Shaping is left disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Restoring defaults..." msgstr "기본값 복원 중..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:646 msgid "Rules" msgstr "규칙" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1976 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2179 msgid "Rules saved" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2053 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2056 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2256 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2259 msgid "Rules: %s" msgstr "규칙: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:868 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:911 msgid "Running & Shaping" msgstr "실행 중 및 셰이핑 중" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:912 msgid "Running — Not Shaping" msgstr "실행 중 — 셰이핑 중 아님" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:867 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:910 msgid "Running — Shaping Unknown" msgstr "실행 중 — 셰이핑 상태 알 수 없음" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1147 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:796 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 msgid "Save & Apply" msgstr "저장 및 적용" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1825 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1897 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1924 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1985 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2028 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2100 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2127 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2188 msgid "Save failed: %s" msgstr "저장 실패: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Saving" msgstr "저장 중" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 msgid "Saving settings and applying..." msgstr "설정 저장 및 적용 중..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2186 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2389 msgid "Section %s already exists." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1011 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1054 msgid "" "Section name is the class name that rules and dscp_* values refer to. " "qosify.init reads config alias the same way as config class." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Sending %s to qosify..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Sent to CAKE as atm, noatm or ptm." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "Sent to CAKE as ether-vlan, once per tag." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Sent to CAKE as mpu, in bytes." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Sent to CAKE as overhead, in bytes." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:663 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:706 msgid "Service" msgstr "서비스" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1745 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1948 msgid "Service action failed: %s" msgstr "서비스 작업 실패: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1817 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 msgid "Settings saved" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:723 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:937 msgid "Shaping" msgstr "셰이핑" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Size" msgstr "크기" @@ -1018,44 +1124,48 @@ msgstr "크기" msgid "Skip this section" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Start" msgstr "시작" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:606 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:891 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:647 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:934 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Status" msgstr "상태" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:855 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:898 msgid "Status Unknown" msgstr "상태 알 수 없음" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:809 msgid "Stop" msgstr "중지" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1167 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 msgid "TCP single port, or range from to " msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1680 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1883 msgid "The detailed tc output needs write access to this page." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:590 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1309 +msgid "The first %d entries are shown." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:631 msgid "" "The qosify UCI configuration could not be loaded — class and interface lists " "may be incomplete." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1342 msgid "" "The selected files replace the ones on the router and qosify is reloaded." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2008 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2211 msgid "" "The selected files replace the ones on the router and qosify is reloaded. " "Download a backup from this tab first if you need one." @@ -1065,33 +1175,37 @@ msgstr "" msgid "Time below bulk_trigger_pps threshold until a bulk flow mark is removed" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 msgid "Traffic by CAKE Tin" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1401 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1548 msgid "Traffic by Class" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:596 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1549 +msgid "Traffic by DSCP" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:637 msgid "Traffic shaping and DSCP classification via qosify" msgstr "QoSify를 통한 트래픽 셰이핑 및 DSCP 분류" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1168 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 msgid "UDP single port, or range from to " msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:864 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:866 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:907 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:909 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:968 msgid "Unknown" msgstr "알 수 없음" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 msgid "Unknown class/DSCP target: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "Unticked sets disabled 1 and qosify skips this section." msgstr "" @@ -1099,169 +1213,193 @@ msgstr "" msgid "Uplink bandwidth (same format as tc)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Uplink bandwidth, same format as tc. Set just below line speed." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 msgid "Upload" msgstr "업로드" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1348 msgid "Upload & Apply" msgstr "업로드 및 적용" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2009 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2212 msgid "Upload and apply" msgstr "업로드 및 적용" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Upload bandwidth" msgstr "업로드 대역폭" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2061 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2264 msgid "Upload error: %s" msgstr "업로드 오류: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2078 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2281 msgid "Upload failed: %s" msgstr "업로드 실패: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 msgid "Upload shaping" msgstr "업로드 셰이핑" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Uploading" msgstr "업로드 중" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:892 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:935 msgid "Uptime" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "VLAN tags" msgstr "VLAN 태그" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Valid" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1951 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 msgid "Warning: %s but qosify is not shaping traffic — check the Status tab." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Working" msgstr "작업 중" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "Write empty file" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 msgid "Writing config and reloading qosify..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Writing rules and reloading qosify..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:633 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:675 msgid "" "You have read-only access to this page, so editing and service control are " "disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "" +"Zero qosify's own counters (get_stats)? The CAKE tin counters belong to tc " +"and are kept." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 msgid "active" msgstr "활성" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1969 msgid "" "bandwidth_down does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1968 msgid "" "bandwidth_up does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1012 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1055 msgid "" "config device takes the same options, with name set to a netdev. nat " "defaults to 1 for interfaces and 0 for devices." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "device %s" msgstr "장치 %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "device: %s, ingress: %s, egress: %s" msgstr "장치: %s, 인그레스: %s, 이그레스: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:289 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:317 msgid "" "disabled is set to \"%s\" — config_get_bool does not recognise that, so the " "section stays enabled" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2129 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +msgid "dump did not answer." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2332 msgid "e.g. %s" msgstr "예: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1171 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 msgid "fnmatch() pattern supporting * and ? as wildcard characters" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1613 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1816 msgid "get_stats did not answer." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 msgid "inactive" msgstr "비활성" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "ingress %s, egress %s" msgstr "인그레스 %s, 이그레스 %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:282 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:310 msgid "ingress and egress are both 0 — nothing is shaped" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "interface %s" msgstr "인터페이스 %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1155 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1199 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1235 msgid "match" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:274 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:292 +msgid "" +"mode \"%s\" is not a CAKE diffserv mode — tc refuses the qdisc, so nothing " +"is shaped although qosify reports the section active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:291 +msgid "" +"name \"%s\" is dropped by qosify — it takes at most %d characters and no " +"quote" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:290 msgid "" "name is not set — qosify.init sends an empty device name and this section is " "never applied" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:278 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:306 msgid "" "nat is not sent: qosify only emits nat/nonat inside the host_isolate branch. " "CAKE does accept flows plus nat — put nat in options to apply it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:279 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:307 msgid "" "nat only reaches %s — put it in options, or in both ingress_options and " "egress_options" @@ -1273,100 +1411,129 @@ msgid "" "on" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "netifd interface to enable QoS on. Required." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1313 +msgid "never" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "no" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:284 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:312 msgid "no bandwidth_down or bandwidth — ingress CAKE runs unlimited" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:283 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:311 msgid "no bandwidth_up or bandwidth — egress CAKE runs unlimited" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "none" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:281 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:309 msgid "overhead and overhead_encap are ignored unless overhead_type is manual" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:595 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:299 +msgid "overhead_encap \"%s\" is not atm, noatm or ptm — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:296 +msgid "" +"overhead_type \"%s\" is not one qosify.init knows, so no overhead is set" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:302 +msgid "overhead_vlan \"%s\" is not 0, 1 or 2 — qosify.init adds no ether-vlan" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:636 #: applications/luci-app-qosify/root/usr/share/luci/menu.d/luci-app-qosify.json:3 msgid "qosify" msgstr "QoSify" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:847 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:890 msgid "" "qosify did not appear on ubus, so its config was not applied — press Reload" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:833 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1729 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:876 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1932 msgid "qosify did not come up — check the system log" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1610 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1672 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1813 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1875 msgid "qosify is not running. Start from the Overview tab." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1735 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1887 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2090 msgid "qosify is still running — leaving the qdiscs alone" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1253 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1361 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1362 +msgid "qosify package template" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1399 msgid "qosify-status" msgstr "qosify-status" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1885 msgid "qosify-status returned no output." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:918 msgid "" "rpcd is not answering for qosify — check the ACL in /usr/share/rpcd/acl.d " "and restart rpcd" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:832 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1609 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1671 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1728 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1734 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1886 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1812 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1874 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1931 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1937 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2089 msgid "rpcd is not answering for qosify, so the service state is unknown." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:955 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:998 msgid "section name" msgstr "섹션 이름" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:953 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:996 msgid "section type" msgstr "섹션 유형" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1529 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1533 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1731 msgid "share" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1541 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1256 +msgid "timeout must be a whole number of seconds above 0." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1739 msgid "total" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 msgid "value" msgstr "값" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "yes" msgstr "" diff --git a/luci-app-qosify/po/lo/qosify.po b/luci-app-qosify/po/lo/qosify.po index 225fed4db..e02327574 100644 --- a/luci-app-qosify/po/lo/qosify.po +++ b/luci-app-qosify/po/lo/qosify.po @@ -10,161 +10,214 @@ msgstr "" "PO-Revision-Date: 2026-08-15 13:06+0000\n" "X-Generator: Weblate 2026.9.dev0\n" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1255 +msgid "\"%s\" is not a value qosify accepts for %s." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:483 +msgid "" +"%d class and alias sections — qosify has %d class slots, so %s and the rules " +"using them are dropped" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "%d interface" msgid_plural "%d interfaces" msgstr[0] "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:986 msgid "%d rule" msgid_plural "%d rules" msgstr[0] "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:942 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:985 msgid "%d section" msgid_plural "%d sections" msgstr[0] "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:294 +msgid "" +"%s \"%s\" is not a tc rate — tc refuses the qdisc, so nothing is shaped " +"although qosify reports the section active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:298 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:301 +msgid "%s \"%s\" is not a whole number — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 msgid "%s (current)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 msgid "%s (from bandwidth)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2085 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2288 msgid "" "%s and %s are replaced with the templates shipped by the qosify package, and " "shaping is left disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1809 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2012 msgid "" "%s came back empty although it is %d bytes on disk — refusing to overwrite it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2346 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2549 msgid "%s changed on disk — your unsaved edits are still in the editor." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2249 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2452 msgid "" "%s could not be read — the editor is left empty and will not be saved over " "it." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1833 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2036 msgid "" "%s has changed since this editor was loaded. Saving now discards those " "changes." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1864 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2067 msgid "" "%s is %d bytes on disk but was never loaded into the editor — refusing to " "truncate it. Reload the page first." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:392 msgid "%s is a list in this section — edit %s directly" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1656 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1859 msgid "" "%s is not in the defaults list — qosify does not load it, so the Rules tab " "has no effect" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:286 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:314 msgid "" "%s is set to \"%s\" — qosify converts it with atoi(), so anything but a non-" "zero number means off" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:750 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:793 msgid "%s quick settings" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2069 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2272 msgid "%s uploaded, qosify reloaded." msgstr "ອັບໂຫຼດ %s ແລ້ວ, ໂຫຼດ qosify ໃໝ່ແລ້ວ." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2103 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2306 msgid "%s was not written: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2106 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2309 msgid "%s was reset but %s was not written: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1945 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2148 msgid "%s, applied (QoS disabled)." msgstr "%s, ນຳໃຊ້ແລ້ວ (ປິດ QoS)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1950 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 msgid "" "%s, applied — qosify did not answer on ubus, so shaping could not be checked." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1947 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 msgid "%s, applied." msgstr "%s, ນຳໃຊ້ແລ້ວ." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:459 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:468 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:500 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:509 msgid "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify ignores it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:456 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:497 msgid "" "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify rejects the whole " "config and interface changes are not applied" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:465 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:506 msgid "" "%s: %s \"%s\" is not a codepoint or 0-63 — qosify drops this class and the " "rules using it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:448 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:488 +msgid "" +"%s: %s \"%s\" is not a whole number — qosify.init passes it through atoll(), " +"which keeps only the leading digits" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:486 msgid "" "%s: %s cannot be checked — write it as one plain or fully quoted value, with " "no backslash" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:451 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:492 msgid "" "%s: %s contains shell metacharacters — qosify runs the tc command with sh -c " "as root, so they would break it or be executed" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "(alias)" msgstr "(ຊື່ແທນ)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1304 +msgid "(over file)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 msgid "(this qosify build has no NQB)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2185 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2388 msgid "A config defaults section already exists." msgstr "ມີສ່ວນຄ່າເລີ່ມຕົ້ນການຕັ້ງຄ່າຢູ່ແລ້ວ." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2183 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2386 msgid "A section name may only contain letters, digits and underscores." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:856 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Action" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:899 msgid "Active" msgstr "ກຳລັງເຮັດວຽກ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:957 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1162 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1000 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1206 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1240 msgid "Add" msgstr "ເພີ່ມ" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1262 +msgid "Add failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1242 +msgid "" +"Added to the running qosify at once and not saved: an entry expires after " +"its timeout (the defaults timeout when left empty) and a qosify restart " +"drops it. One on a match from the rules file overrides it until then." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +msgid "" +"Adds a line to the editor below; Save & Apply writes it to the rules file, " +"so it is kept." +msgstr "" + #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:85 msgid "Adds atm, noatm or ptm when overhead_type is manual" msgstr "" @@ -181,32 +234,32 @@ msgstr "" msgid "Adds overhead when overhead_type is manual" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:608 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:649 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:780 msgid "Advanced" msgstr "ຂັ້ນສູງ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "An empty %s stops all shaping. Continue?" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:726 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:769 msgid "Automatic download rate" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:936 msgid "Autostart" msgstr "ເລີ່ມອັດຕະໂນມັດ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:967 msgid "Autostart state unknown — rpcd did not answer" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 msgid "Available" msgstr "ມີຢູ່" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1196 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1334 msgid "Backup" msgstr "" @@ -216,12 +269,12 @@ msgid "" "set" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:716 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:759 msgid "Basic" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:224 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2029 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:240 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2232 msgid "Binary content rejected" msgstr "ເນື້ອຫາໄບນາຣີຖືກປະຕິເສດ" @@ -233,7 +286,7 @@ msgstr "" msgid "CAKE egress options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "CAKE egress options, space separated." msgstr "" @@ -241,7 +294,7 @@ msgstr "" msgid "CAKE ingress options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "CAKE ingress options, space separated." msgstr "" @@ -255,104 +308,108 @@ msgid "" "overhead_encap" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "CAKE overhead keyword. Use none if unsure." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:564 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 msgid "Cancel" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1356 msgid "Check Devices" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1330 msgid "Choose file…" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1114 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1158 msgid "Classes" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1940 msgid "Cleanup exited with code %d" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1190 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear" msgstr "ລ້າງອອກ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2072 msgid "Clear configuration" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear editor" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to disable autostart" msgstr "ກົດເພື່ອປິດການເລີ່ມອັດຕະໂນມັດ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to enable autostart" msgstr "ກົດເພື່ອເປີດການເລີ່ມອັດຕະໂນມັດ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 msgid "Common CAKE options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:604 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:645 msgid "Config" msgstr "ຕັ້ງຄ່າ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared, qosify stopped." msgstr "ລ້າງການຕັ້ງຄ່າແລ້ວ, qosify ຢຸດເຮັດວຽກແລ້ວ." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1915 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2118 msgid "Config saved" msgstr "ບັນທຶກການຕັ້ງຄ່າແລ້ວ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2042 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2050 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2253 msgid "Config: %s" msgstr "ການຕັ້ງຄ່າ: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:566 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 msgid "Continue" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1391 msgid "Could not read %s: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:648 msgid "Counters" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1627 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1567 +msgid "Counters reset." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1830 msgid "DNS Entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d of %d)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "" "DSCP codepoints: CS0–CS7, AF11–AF43, EF, VA, NQB, LE, DF (NQB needs qosify " "from June 2026; 24.10 and 25.12 do not have it). A raw value from 0 to 63 is " @@ -384,7 +441,7 @@ msgstr "" msgid "DSCP value for priority-marked packets" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "DSCP values" msgstr "" @@ -400,12 +457,12 @@ msgstr "" msgid "Default timeout for dynamically added entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1358 msgid "Defaults" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 msgid "" "Defaults qosify applies when a key is absent — interface: mode diffserv4, " "ingress 1, egress 1, nat 1, host_isolate 1, autorate_ingress 0. device: " @@ -419,21 +476,25 @@ msgstr "" "dscp_icmp ບໍ່ໄດ້ກຳນົດ, bulk_trigger_pps/bulk_trigger_timeout/" "prio_max_avg_pkt_len 0 (ປິດໃຊ້ງານ)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Description" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Device" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1914 msgid "Device check done." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1714 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1917 msgid "Device check failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:859 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Disabled" msgstr "ປິດໃຊ້ງານ" @@ -441,48 +502,52 @@ msgstr "ປິດໃຊ້ງານ" msgid "Downlink bandwidth (same format as tc)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Downlink bandwidth, same format as tc. Set just below line speed." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1247 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1393 msgid "Download" msgstr "ດາວໂຫຼດ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Download bandwidth" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:767 msgid "Download shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1197 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1335 msgid "Download the current files from the router." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1241 +msgid "Dynamic Entries" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "" "Each line has two whitespace separated fields, match and dscp. dscp can be a " "raw value, a codepoint like CS0, or a class name. DNS entries are compared " "in the order in which they are specified, using the first matching entry." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "Egress CAKE options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2223 msgid "Empty file" msgstr "ໄຟລ໌ວ່າງເປົ່າ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 msgid "" "Empty the config editor? Nothing is written until you click Save & Apply." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "" "Empty the rules editor? Nothing is written until you click Save & Apply." msgstr "" @@ -507,94 +572,114 @@ msgstr "" msgid "Enable ingress shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Enabled" msgstr "ເປີດໃຊ້ງານ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:858 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 msgid "Enabled — Not Running" msgstr "ເປີດໃຊ້ງານ — ແຕ່ບໍ່ເຮັດວຽກ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:857 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 msgid "Enabled — Not Shaping (check config)" msgstr "ເປີດໃຊ້ງານ — ແຕ່ບໍ່ມີການຈັດສັນທຣາຟິກ (ກວດສອບການຕັ້ງຄ່າ)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Encapsulation overhead" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2182 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2385 msgid "Enter a section name." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2156 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2359 msgid "Enter a single IPv4 address (qosify does not accept CIDR)." msgstr "ໃສ່ທີ່ຢູ່ IPv4 ດຽວ (qosify ບໍ່ຮອງຮັບ CIDR)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2159 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2362 msgid "" "Enter a single IPv6 address (qosify does not accept CIDR or a %zone suffix)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2141 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2344 msgid "Enter a value." msgstr "ໃສ່ຄ່າ." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1848 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1961 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1261 +msgid "Entry added." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1269 +msgid "Entry removed." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2051 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2164 msgid "Error: %s" msgstr "ຂໍ້ຜິດພາດ: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1845 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2048 msgid "Error: No valid config stanzas found." msgstr "ຂໍ້ຜິດພາດ: ບໍ່ພົບສ່ວນການຕັ້ງຄ່າທີ່ຖືກຕ້ອງ." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1763 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1965 msgid "" "Error: invalid characters in bandwidth or options fields. Use alphanumeric, " "spaces, hyphens, dots, colons only." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1798 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2000 msgid "Error: name must be a device or interface name" msgstr "ຂໍ້ຜິດພາດ: ຊື່ຕ້ອງເປັນຊື່ອຸປະກອນ ຫຼື ຊື່ອິນເຕີເຟສ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1769 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1971 msgid "Error: overhead must be a whole number of bytes" msgstr "ຂໍ້ຜິດພາດ: overhead ຕ້ອງເປັນຕົວເລກຈຳນວນເຕັມຂອງໄບຕ໌" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1970 msgid "Error: overhead_mpu must be a whole number of bytes" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2070 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2001 +msgid "Error: qosify drops a name longer than %d characters" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2273 msgid "Errors:" msgstr "ຂໍ້ຜິດພາດ:" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 +msgid "" +"Every shaped section is looked up again, one whose device now exists is " +"started and one whose device has gone is stopped. Nothing is reported back " +"by the call — the result shows in the Service table on the Overview tab." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 msgid "File" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1832 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 msgid "File changed on disk" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2224 msgid "File too large (max 64KB)" msgstr "ໄຟລ໌ໃຫຍ່ເກີນໄປ (ສູງສຸດ 64KB)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:667 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 msgid "Files" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Found (empty or invalid)" msgstr "ພົບ (ວ່າງເປົ່າ ຫຼື ບໍ່ຖືກຕ້ອງ)" @@ -602,37 +687,33 @@ msgstr "ພົບ (ວ່າງເປົ່າ ຫຼື ບໍ່ຖືກຕ msgid "Grant access to LuCI app qosify" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:728 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:771 msgid "Host isolation" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1169 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1216 msgid "IPv4 address, e.g. 1.1.1.1" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1170 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 msgid "IPv6 address, e.g. ff01::1" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "Ingress CAKE options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Interface" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:741 -msgid "Invalid CAKE options can stop qosify starting." -msgstr "" - -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1173 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1220 msgid "Like dns:... but only matches cname entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:228 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:244 msgid "" "Line %d is longer than 1023 characters — the rule loader reads fixed-size " "lines and would split it, comment included" @@ -642,28 +723,29 @@ msgstr "" msgid "List of files with port/IP/host mappings" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 msgid "Loading..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1212 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1350 msgid "Maintenance" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Manual overhead" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "Mapping file syntax" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1692 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1895 msgid "Mapping files reloaded." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:434 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:462 msgid "" "Match not loaded by qosify on line %s — ports 1-65534, one IPv4/IPv6 address " "(no CIDR or %%zone), or dns:, dns_c:" @@ -673,84 +755,93 @@ msgstr "" msgid "Maximum average packet length for marking a flow as priority" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Minimum packet unit (MPU)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Missing" msgstr "ຫາຍໄປ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Modified" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:433 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:461 msgid "" "More than two fields on line %s — qosify reads the rest of the line as the " "DSCP value and skips it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:770 msgid "NAT awareness" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Netdev to enable QoS on. Required." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No CAKE tin statistics." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1628 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1831 msgid "No DNS entries." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:432 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:460 msgid "No DSCP target on line %s — qosify skips single-field lines" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1107 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +msgid "No DSCP traffic yet." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1151 msgid "No classes defined in %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2142 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1257 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2345 msgid "No classes defined. Add classes in the Config tab first." msgstr "ບໍ່ມີການກຳນົດຄລາສ. ໃຫ້ເພີ່ມຄລາສໃນແທັບ ການຕັ້ງຄ່າ ກ່ອນ." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1192 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1294 +msgid "No dynamic entries." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1328 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1329 msgid "No file selected" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2209 msgid "No files selected." msgstr "ບໍ່ໄດ້ເລືອກໄຟລ໌." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No output." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 msgid "No per-class counters." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2357 msgid "No spaces or # allowed in patterns or addresses." msgstr "ບໍ່ອະນຸຍາດໃຫ້ມີຍະຫວ່າງ ຫຼື # ໃນຮູບແບບ ຫຼື ທີ່ຢູ່." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2030 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2233 msgid "No valid UCI config stanzas" msgstr "ບໍ່ພົບສ່ວນການຕັ້ງຄ່າ UCI ທີ່ຖືກຕ້ອງ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:913 msgid "Not Running" msgstr "ບໍ່ເຮັດວຽກ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1973 msgid "Note: bandwidth not set — CAKE will run unlimited on that direction." msgstr "ໝາຍເຫດ: ບໍ່ໄດ້ຕັ້ງຄ່າແບນວິດ — CAKE ຈະເຮັດວຽກແບບບໍ່ຈຳກັດຄວາມໄວໃນທິດທາງນັ້ນ." @@ -758,264 +849,279 @@ msgstr "ໝາຍເຫດ: ບໍ່ໄດ້ຕັ້ງຄ່າແບນວ msgid "Number of packets per second to trigger bulk flow detection" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1161 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1174 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1221 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1238 msgid "Only override the DSCP value if it is zero" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:704 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:747 msgid "" "Only sent with host isolation on — add nat to common CAKE options to force it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1017 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1060 msgid "Options" msgstr "ຕົວເລືອກ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:730 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:773 msgid "Overhead" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "Overhead preset" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:603 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:644 msgid "Overview" msgstr "ພາບລວມ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1834 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2037 msgid "Overwrite" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2007 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2210 msgid "Overwrite config files" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1172 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 msgid "" "POSIX.2 extended regular expression for matching hostnames. Only works if " "dns lookups are passed to qosify via the add_dns_host ubus call." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2353 msgid "Port must be 1-65534 (qosify rejects 65535)." msgstr "ພອດຕ້ອງຢູ່ລະຫວ່າງ 1-65534 (qosify ປະຕິເສດ 65535)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2149 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2349 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2352 msgid "Port must be a number or a range (4500, 5060-5061)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "QoS Enabled" msgstr "ເປີດໃຊ້ QoS" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:721 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 msgid "Queueing mode" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1163 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1209 msgid "Quick Add" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1016 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1059 msgid "Quick Add: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2356 msgid "Range start must not exceed end." msgstr "ຄ່າເລີ່ມຕົ້ນຂອງຊ່ວງຕ້ອງບໍ່ເກີນຄ່າສຸດທ້າຍ." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 msgid "Re-check devices" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 msgid "Re-checking devices..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:811 msgid "Re-read the mapping files only" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 msgid "Re-reading the mapping files..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 -msgid "" -"Re-runs the daemon's own device pass: every shaped section is looked up " -"again, one whose device now exists is started and one whose device has gone " -"is stopped. Nothing is reported back by the call — the result shows in the " -"Service table on the Overview tab." +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1351 +msgid "Re-runs the daemon's own device pass." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2024 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2227 msgid "Read error" msgstr "ອ່ານຜິດພາດ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Reading and validating files..." msgstr "ກຳລັງອ່ານ ແລະ ກວດສອບຄວາມຖືກຕ້ອງຂອງໄຟລ໌..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1681 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1884 msgid "Reading tc output..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1019 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1062 msgid "Reference" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload" msgstr "ໂຫຼດໃໝ່" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload Rules" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1695 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1898 msgid "Reload failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1306 +msgid "Remove" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1270 +msgid "Remove failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 +msgid "Replaced with" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "Requires write access." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2086 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1365 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2289 msgid "Reset" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2120 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1554 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "Reset counters" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2323 msgid "Reset failed: %s" msgstr "ການຣີເຊັດລົ້ມເຫຼວ: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2084 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2287 msgid "Reset to defaults" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2116 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2319 msgid "Reset to defaults, applied." msgstr "ຣີເຊັດເປັນຄ່າເລີ່ມຕົ້ນ ແລະ ນຳໃຊ້ແລ້ວ." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Resetting" msgstr "ກຳລັງຣີເຊັດ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Restart" msgstr "ເລີ່ມໃໝ່" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1203 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1341 msgid "Restore" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 -msgid "Restore qosify defaults" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1359 +msgid "Restore qosify defaults. Shaping is left disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Restoring defaults..." msgstr "ກຳລັງຄືນຄ່າເລີ່ມຕົ້ນ..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:646 msgid "Rules" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1976 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2179 msgid "Rules saved" msgstr "ບັນທຶກກົດເກນແລ້ວ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2053 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2056 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2256 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2259 msgid "Rules: %s" msgstr "ກົດເກນ: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:868 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:911 msgid "Running & Shaping" msgstr "ກຳລັງເຮັດວຽກ ແລະ ຈັດສັນທຣາຟິກ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:912 msgid "Running — Not Shaping" msgstr "ກຳລັງເຮັດວຽກ — ແຕ່ບໍ່ມີການຈັດສັນທຣາຟິກ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:867 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:910 msgid "Running — Shaping Unknown" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1147 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:796 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 msgid "Save & Apply" msgstr "ບັນທຶກ ແລະ ນຳໃຊ້" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1825 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1897 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1924 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1985 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2028 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2100 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2127 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2188 msgid "Save failed: %s" msgstr "ບັນທຶກລົ້ມເຫຼວ: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Saving" msgstr "ກຳລັງບັນທຶກ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 msgid "Saving settings and applying..." msgstr "ກຳລັງບັນທຶກການຕັ້ງຄ່າ ແລະ ນຳໃຊ້..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2186 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2389 msgid "Section %s already exists." msgstr "ສ່ວນ %s ມີຢູ່ແລ້ວ." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1011 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1054 msgid "" "Section name is the class name that rules and dscp_* values refer to. " "qosify.init reads config alias the same way as config class." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Sending %s to qosify..." msgstr "ກຳລັງສົ່ງ %s ໄປຫາ qosify..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Sent to CAKE as atm, noatm or ptm." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "Sent to CAKE as ether-vlan, once per tag." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Sent to CAKE as mpu, in bytes." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Sent to CAKE as overhead, in bytes." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:663 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:706 msgid "Service" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1745 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1948 msgid "Service action failed: %s" msgstr "ການດຳເນີນການບໍລິການລົ້ມເຫຼວ: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1817 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 msgid "Settings saved" msgstr "ບັນທຶກການຕັ້ງຄ່າແລ້ວ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:723 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:937 msgid "Shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Size" msgstr "" @@ -1023,44 +1129,48 @@ msgstr "" msgid "Skip this section" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Start" msgstr "ເລີ່ມ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:606 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:891 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:647 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:934 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Status" msgstr "ສະຖານະ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:855 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:898 msgid "Status Unknown" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:809 msgid "Stop" msgstr "ຢຸດ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1167 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 msgid "TCP single port, or range from to " msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1680 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1883 msgid "The detailed tc output needs write access to this page." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:590 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1309 +msgid "The first %d entries are shown." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:631 msgid "" "The qosify UCI configuration could not be loaded — class and interface lists " "may be incomplete." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1342 msgid "" "The selected files replace the ones on the router and qosify is reloaded." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2008 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2211 msgid "" "The selected files replace the ones on the router and qosify is reloaded. " "Download a backup from this tab first if you need one." @@ -1070,33 +1180,37 @@ msgstr "" msgid "Time below bulk_trigger_pps threshold until a bulk flow mark is removed" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 msgid "Traffic by CAKE Tin" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1401 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1548 msgid "Traffic by Class" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:596 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1549 +msgid "Traffic by DSCP" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:637 msgid "Traffic shaping and DSCP classification via qosify" msgstr "ການຈັດສັນທຣາຟິກ ແລະ ການຈັດປະເພດ DSCP ຜ່ານ qosify" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1168 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 msgid "UDP single port, or range from to " msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:864 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:866 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:907 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:909 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:968 msgid "Unknown" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 msgid "Unknown class/DSCP target: %s" msgstr "ບໍ່ຮູ້ຈັກຄລາສ/ເປົ້າໝາຍ DSCP: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "Unticked sets disabled 1 and qosify skips this section." msgstr "" @@ -1104,163 +1218,187 @@ msgstr "" msgid "Uplink bandwidth (same format as tc)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Uplink bandwidth, same format as tc. Set just below line speed." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 msgid "Upload" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1348 msgid "Upload & Apply" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2009 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2212 msgid "Upload and apply" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Upload bandwidth" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2061 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2264 msgid "Upload error: %s" msgstr "ອັບໂຫຼດຜິດພາດ: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2078 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2281 msgid "Upload failed: %s" msgstr "ອັບໂຫຼດລົ້ມເຫຼວ: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 msgid "Upload shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Uploading" msgstr "ກຳລັງອັບໂຫຼດ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:892 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:935 msgid "Uptime" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "VLAN tags" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Valid" msgstr "ຖືກຕ້ອງ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1951 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 msgid "Warning: %s but qosify is not shaping traffic — check the Status tab." msgstr "ຄຳເຕືອນ: %s ແຕ່ qosify ບໍ່ໄດ້ຈັດສັນທຣາຟິກ — ໃຫ້ກວດສອບທີ່ແທັບ ສະຖານະ." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Working" msgstr "ກຳລັງເຮັດວຽກ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "Write empty file" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 msgid "Writing config and reloading qosify..." msgstr "ກຳລັງຂຽນການຕັ້ງຄ່າ ແລະ ໂຫຼດ qosify ໃໝ່..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Writing rules and reloading qosify..." msgstr "ກຳລັງຂຽນກົດເກນ ແລະ ໂຫຼດ qosify ໃໝ່..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:633 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:675 msgid "" "You have read-only access to this page, so editing and service control are " "disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "" +"Zero qosify's own counters (get_stats)? The CAKE tin counters belong to tc " +"and are kept." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 msgid "active" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1969 msgid "" "bandwidth_down does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1968 msgid "" "bandwidth_up does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1012 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1055 msgid "" "config device takes the same options, with name set to a netdev. nat " "defaults to 1 for interfaces and 0 for devices." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "device %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "device: %s, ingress: %s, egress: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:289 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:317 msgid "" "disabled is set to \"%s\" — config_get_bool does not recognise that, so the " "section stays enabled" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2129 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +msgid "dump did not answer." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2332 msgid "e.g. %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1171 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 msgid "fnmatch() pattern supporting * and ? as wildcard characters" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1613 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1816 msgid "get_stats did not answer." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 msgid "inactive" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "ingress %s, egress %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:282 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:310 msgid "ingress and egress are both 0 — nothing is shaped" msgstr "ຂາເຂົ້າ ແລະ ຂາອອກ ເປັນ 0 ທັງສອງ — ຈະບໍ່ມີການຈັດສັນທຣາຟິກ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "interface %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1155 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1199 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1235 msgid "match" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:274 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:292 +msgid "" +"mode \"%s\" is not a CAKE diffserv mode — tc refuses the qdisc, so nothing " +"is shaped although qosify reports the section active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:291 +msgid "" +"name \"%s\" is dropped by qosify — it takes at most %d characters and no " +"quote" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:290 msgid "" "name is not set — qosify.init sends an empty device name and this section is " "never applied" msgstr "ບໍ່ໄດ້ຕັ້ງຊື່ — qosify.init ສົ່ງຊື່ອຸປະກອນທີ່ວ່າງເປົ່າ ແລະ ສ່ວນນີ້ຈະບໍ່ຖືກນຳໃຊ້" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:278 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:306 msgid "" "nat is not sent: qosify only emits nat/nonat inside the host_isolate branch. " "CAKE does accept flows plus nat — put nat in options to apply it" @@ -1268,7 +1406,7 @@ msgstr "" "ບໍ່ໄດ້ສົ່ງ nat: qosify ຈະສົ່ງ nat/nonat ສະເພາະພາຍໃນກຸ່ມ host_isolate ເທົ່ານັ້ນ. CAKE " "ຮອງຮັບ flows ບວກກັບ nat — ໃຫ້ໃສ່ nat ໃນຕົວເລືອກເພື່ອເປີດໃຊ້ງານ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:279 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:307 msgid "" "nat only reaches %s — put it in options, or in both ingress_options and " "egress_options" @@ -1282,101 +1420,130 @@ msgid "" "on" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "netifd interface to enable QoS on. Required." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1313 +msgid "never" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "no" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:284 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:312 msgid "no bandwidth_down or bandwidth — ingress CAKE runs unlimited" msgstr "ບໍ່ມີ bandwidth_down ຫຼື bandwidth — CAKE ຂາເຂົ້າຈະເຮັດວຽກແບບບໍ່ຈຳກັດ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:283 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:311 msgid "no bandwidth_up or bandwidth — egress CAKE runs unlimited" msgstr "ບໍ່ມີ bandwidth_up ຫຼື bandwidth — CAKE ຂາອອກຈະເຮັດວຽກແບບບໍ່ຈຳກັດ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "none" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:281 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:309 msgid "overhead and overhead_encap are ignored unless overhead_type is manual" msgstr "" "overhead ແລະ overhead_encap ຈະຖືກລະເລີຍ ນອກຈາກວ່າ overhead_type ຈະເປັນ manual" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:595 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:299 +msgid "overhead_encap \"%s\" is not atm, noatm or ptm — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:296 +msgid "" +"overhead_type \"%s\" is not one qosify.init knows, so no overhead is set" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:302 +msgid "overhead_vlan \"%s\" is not 0, 1 or 2 — qosify.init adds no ether-vlan" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:636 #: applications/luci-app-qosify/root/usr/share/luci/menu.d/luci-app-qosify.json:3 msgid "qosify" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:847 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:890 msgid "" "qosify did not appear on ubus, so its config was not applied — press Reload" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:833 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1729 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:876 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1932 msgid "qosify did not come up — check the system log" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1610 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1672 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1813 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1875 msgid "qosify is not running. Start from the Overview tab." msgstr "qosify ບໍ່ເຮັດວຽກ. ໃຫ້ເລີ່ມຈາກແທັບ ພາບລວມ." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1735 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1887 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2090 msgid "qosify is still running — leaving the qdiscs alone" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1253 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1361 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1362 +msgid "qosify package template" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1399 msgid "qosify-status" msgstr "ສະຖານະ qosify" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1885 msgid "qosify-status returned no output." msgstr "qosify-status ບໍ່ມີຂໍ້ມູນອອກມາ." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:918 msgid "" "rpcd is not answering for qosify — check the ACL in /usr/share/rpcd/acl.d " "and restart rpcd" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:832 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1609 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1671 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1728 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1734 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1886 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1812 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1874 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1931 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1937 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2089 msgid "rpcd is not answering for qosify, so the service state is unknown." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:955 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:998 msgid "section name" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:953 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:996 msgid "section type" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1529 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1533 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1731 msgid "share" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1541 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1256 +msgid "timeout must be a whole number of seconds above 0." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1739 msgid "total" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 msgid "value" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "yes" msgstr "" diff --git a/luci-app-qosify/po/lt/qosify.po b/luci-app-qosify/po/lt/qosify.po index c09c9db00..2c6a49563 100644 --- a/luci-app-qosify/po/lt/qosify.po +++ b/luci-app-qosify/po/lt/qosify.po @@ -11,167 +11,220 @@ msgstr "" "PO-Revision-Date: 2026-08-27 04:49+0000\n" "X-Generator: Weblate 2026.9.dev0\n" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1255 +msgid "\"%s\" is not a value qosify accepts for %s." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:483 +msgid "" +"%d class and alias sections — qosify has %d class slots, so %s and the rules " +"using them are dropped" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "%d interface" msgid_plural "%d interfaces" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:986 msgid "%d rule" msgid_plural "%d rules" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:942 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:985 msgid "%d section" msgid_plural "%d sections" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:294 +msgid "" +"%s \"%s\" is not a tc rate — tc refuses the qdisc, so nothing is shaped " +"although qosify reports the section active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:298 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:301 +msgid "%s \"%s\" is not a whole number — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 msgid "%s (current)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 msgid "%s (from bandwidth)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2085 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2288 msgid "" "%s and %s are replaced with the templates shipped by the qosify package, and " "shaping is left disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1809 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2012 msgid "" "%s came back empty although it is %d bytes on disk — refusing to overwrite it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2346 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2549 msgid "%s changed on disk — your unsaved edits are still in the editor." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2249 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2452 msgid "" "%s could not be read — the editor is left empty and will not be saved over " "it." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1833 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2036 msgid "" "%s has changed since this editor was loaded. Saving now discards those " "changes." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1864 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2067 msgid "" "%s is %d bytes on disk but was never loaded into the editor — refusing to " "truncate it. Reload the page first." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:392 msgid "%s is a list in this section — edit %s directly" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1656 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1859 msgid "" "%s is not in the defaults list — qosify does not load it, so the Rules tab " "has no effect" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:286 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:314 msgid "" "%s is set to \"%s\" — qosify converts it with atoi(), so anything but a non-" "zero number means off" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:750 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:793 msgid "%s quick settings" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2069 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2272 msgid "%s uploaded, qosify reloaded." msgstr "%s įkelta, „qosify“ perleista." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2103 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2306 msgid "%s was not written: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2106 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2309 msgid "%s was reset but %s was not written: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1945 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2148 msgid "%s, applied (QoS disabled)." msgstr "%s, pritaikyta („QoS“ išjungtas/išgalintas)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1950 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 msgid "" "%s, applied — qosify did not answer on ubus, so shaping could not be checked." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1947 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 msgid "%s, applied." msgstr "%s, pritaikyta." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:459 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:468 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:500 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:509 msgid "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify ignores it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:456 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:497 msgid "" "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify rejects the whole " "config and interface changes are not applied" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:465 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:506 msgid "" "%s: %s \"%s\" is not a codepoint or 0-63 — qosify drops this class and the " "rules using it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:448 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:488 +msgid "" +"%s: %s \"%s\" is not a whole number — qosify.init passes it through atoll(), " +"which keeps only the leading digits" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:486 msgid "" "%s: %s cannot be checked — write it as one plain or fully quoted value, with " "no backslash" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:451 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:492 msgid "" "%s: %s contains shell metacharacters — qosify runs the tc command with sh -c " "as root, so they would break it or be executed" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "(alias)" msgstr "(pseudonimai)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1304 +msgid "(over file)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 msgid "(this qosify build has no NQB)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2185 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2388 msgid "A config defaults section already exists." msgstr "Numatytųjų konfigūracijos reikšmių skyrius jau egzistuoja." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2183 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2386 msgid "A section name may only contain letters, digits and underscores." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:856 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Action" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:899 msgid "Active" msgstr "Aktyvus/-i" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:957 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1162 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1000 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1206 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1240 msgid "Add" msgstr "Pridėti" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1262 +msgid "Add failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1242 +msgid "" +"Added to the running qosify at once and not saved: an entry expires after " +"its timeout (the defaults timeout when left empty) and a qosify restart " +"drops it. One on a match from the rules file overrides it until then." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +msgid "" +"Adds a line to the editor below; Save & Apply writes it to the rules file, " +"so it is kept." +msgstr "" + #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:85 msgid "Adds atm, noatm or ptm when overhead_type is manual" msgstr "" @@ -188,32 +241,32 @@ msgstr "" msgid "Adds overhead when overhead_type is manual" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:608 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:649 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:780 msgid "Advanced" msgstr "Pažangus" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "An empty %s stops all shaping. Continue?" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:726 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:769 msgid "Automatic download rate" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:936 msgid "Autostart" msgstr "Automatinis paleidimas" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:967 msgid "Autostart state unknown — rpcd did not answer" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 msgid "Available" msgstr "Pasiekiamas/-a/-i/-os" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1196 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1334 msgid "Backup" msgstr "" @@ -223,12 +276,12 @@ msgid "" "set" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:716 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:759 msgid "Basic" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:224 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2029 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:240 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2232 msgid "Binary content rejected" msgstr "Dvejetainės turinys atmestas" @@ -240,7 +293,7 @@ msgstr "" msgid "CAKE egress options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "CAKE egress options, space separated." msgstr "" @@ -248,7 +301,7 @@ msgstr "" msgid "CAKE ingress options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "CAKE ingress options, space separated." msgstr "" @@ -262,104 +315,108 @@ msgid "" "overhead_encap" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "CAKE overhead keyword. Use none if unsure." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:564 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 msgid "Cancel" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1356 msgid "Check Devices" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1330 msgid "Choose file…" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1114 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1158 msgid "Classes" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1940 msgid "Cleanup exited with code %d" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1190 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear" msgstr "Išvalyti" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2072 msgid "Clear configuration" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear editor" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to disable autostart" msgstr "Spustelėkite, jei norite išjungti/išgalinti automatinį paleidimą" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to enable autostart" msgstr "Spustelėkite, jei norite įjungti/įgalinti automatinį paleidimą" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 msgid "Common CAKE options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:604 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:645 msgid "Config" msgstr "Konfigūracija" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared, qosify stopped." msgstr "Konfigūracija išvalyta, „qosify“ sustabdytas." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1915 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2118 msgid "Config saved" msgstr "Konfigūracija išsaugota" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2042 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2050 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2253 msgid "Config: %s" msgstr "Konfigūracija: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:566 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 msgid "Continue" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1391 msgid "Could not read %s: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:648 msgid "Counters" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1627 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1567 +msgid "Counters reset." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1830 msgid "DNS Entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d of %d)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "" "DSCP codepoints: CS0–CS7, AF11–AF43, EF, VA, NQB, LE, DF (NQB needs qosify " "from June 2026; 24.10 and 25.12 do not have it). A raw value from 0 to 63 is " @@ -391,7 +448,7 @@ msgstr "" msgid "DSCP value for priority-marked packets" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "DSCP values" msgstr "" @@ -407,12 +464,12 @@ msgstr "" msgid "Default timeout for dynamically added entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1358 msgid "Defaults" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 msgid "" "Defaults qosify applies when a key is absent — interface: mode diffserv4, " "ingress 1, egress 1, nat 1, host_isolate 1, autorate_ingress 0. device: " @@ -427,21 +484,25 @@ msgstr "" "„dscp_prio/dscp_bulk/dscp_icmp unset“, „bulk_trigger_pps/" "bulk_trigger_timeout/prio_max_avg_pkt_len 0“ (išjungta/išgalinta)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Description" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Device" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1914 msgid "Device check done." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1714 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1917 msgid "Device check failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:859 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Disabled" msgstr "Išjungtas/Išgalintas" @@ -449,48 +510,52 @@ msgstr "Išjungtas/Išgalintas" msgid "Downlink bandwidth (same format as tc)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Downlink bandwidth, same format as tc. Set just below line speed." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1247 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1393 msgid "Download" msgstr "Atsisiųsti" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Download bandwidth" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:767 msgid "Download shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1197 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1335 msgid "Download the current files from the router." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1241 +msgid "Dynamic Entries" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "" "Each line has two whitespace separated fields, match and dscp. dscp can be a " "raw value, a codepoint like CS0, or a class name. DNS entries are compared " "in the order in which they are specified, using the first matching entry." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "Egress CAKE options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2223 msgid "Empty file" msgstr "Tuščias failas" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 msgid "" "Empty the config editor? Nothing is written until you click Save & Apply." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "" "Empty the rules editor? Nothing is written until you click Save & Apply." msgstr "" @@ -515,96 +580,116 @@ msgstr "" msgid "Enable ingress shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Enabled" msgstr "Įjungtas/Įgalintas" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:858 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 msgid "Enabled — Not Running" msgstr "Įjungtas/Įgalintas – nevykdomas" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:857 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 msgid "Enabled — Not Shaping (check config)" msgstr "Įjungtas/Įgalintas – neformuojamas (patikrinkite konfigūraciją)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Encapsulation overhead" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2182 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2385 msgid "Enter a section name." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2156 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2359 msgid "Enter a single IPv4 address (qosify does not accept CIDR)." msgstr "Įveskite vieną IPv4 adresą („qosify“ nepriima „CIDR“)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2159 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2362 msgid "" "Enter a single IPv6 address (qosify does not accept CIDR or a %zone suffix)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2141 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2344 msgid "Enter a value." msgstr "Įveskite reikšmę." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1848 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1961 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1261 +msgid "Entry added." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1269 +msgid "Entry removed." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2051 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2164 msgid "Error: %s" msgstr "Klaida: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1845 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2048 msgid "Error: No valid config stanzas found." msgstr "Klaida: nerasta tinkamos konfigūracijos „posma“." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1763 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1965 msgid "" "Error: invalid characters in bandwidth or options fields. Use alphanumeric, " "spaces, hyphens, dots, colons only." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1798 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2000 msgid "Error: name must be a device or interface name" msgstr "" "Klaida: pavadinimas turi būti įrenginio arba sąsajos ir/arba sietuvo " "pavadinimas" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1769 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1971 msgid "Error: overhead must be a whole number of bytes" msgstr "Klaida: pridėtinė suma turi būti sveikasis baitų skaičius" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1970 msgid "Error: overhead_mpu must be a whole number of bytes" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2070 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2001 +msgid "Error: qosify drops a name longer than %d characters" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2273 msgid "Errors:" msgstr "Klaidos:" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 +msgid "" +"Every shaped section is looked up again, one whose device now exists is " +"started and one whose device has gone is stopped. Nothing is reported back " +"by the call — the result shows in the Service table on the Overview tab." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 msgid "File" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1832 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 msgid "File changed on disk" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2224 msgid "File too large (max 64KB)" msgstr "Failas per didelis (maks. 64 KB)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:667 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 msgid "Files" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Found (empty or invalid)" msgstr "Rasta (tuščia arba negalima)" @@ -612,37 +697,33 @@ msgstr "Rasta (tuščia arba negalima)" msgid "Grant access to LuCI app qosify" msgstr "Suteikti prieigą prie „LuCI“ programėles – „qosify“" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:728 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:771 msgid "Host isolation" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1169 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1216 msgid "IPv4 address, e.g. 1.1.1.1" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1170 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 msgid "IPv6 address, e.g. ff01::1" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "Ingress CAKE options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Interface" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:741 -msgid "Invalid CAKE options can stop qosify starting." -msgstr "" - -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1173 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1220 msgid "Like dns:... but only matches cname entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:228 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:244 msgid "" "Line %d is longer than 1023 characters — the rule loader reads fixed-size " "lines and would split it, comment included" @@ -652,28 +733,29 @@ msgstr "" msgid "List of files with port/IP/host mappings" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 msgid "Loading..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1212 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1350 msgid "Maintenance" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Manual overhead" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "Mapping file syntax" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1692 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1895 msgid "Mapping files reloaded." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:434 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:462 msgid "" "Match not loaded by qosify on line %s — ports 1-65534, one IPv4/IPv6 address " "(no CIDR or %%zone), or dns:, dns_c:" @@ -683,86 +765,95 @@ msgstr "" msgid "Maximum average packet length for marking a flow as priority" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Minimum packet unit (MPU)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Missing" msgstr "Trūksta(mos)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Modified" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:433 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:461 msgid "" "More than two fields on line %s — qosify reads the rest of the line as the " "DSCP value and skips it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:770 msgid "NAT awareness" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Netdev to enable QoS on. Required." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No CAKE tin statistics." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1628 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1831 msgid "No DNS entries." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:432 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:460 msgid "No DSCP target on line %s — qosify skips single-field lines" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1107 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +msgid "No DSCP traffic yet." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1151 msgid "No classes defined in %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2142 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1257 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2345 msgid "No classes defined. Add classes in the Config tab first." msgstr "" "Nėra apibrėžtų klasių. Pirmiausia pridėkite klases skirtuke – " "„Konfigūracija“." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1192 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1294 +msgid "No dynamic entries." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1328 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1329 msgid "No file selected" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2209 msgid "No files selected." msgstr "Nėra pasirinktų failų." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No output." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 msgid "No per-class counters." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2357 msgid "No spaces or # allowed in patterns or addresses." msgstr "Neleidžiami tarpai arba „#“ šablonuose ar adresuose." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2030 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2233 msgid "No valid UCI config stanzas" msgstr "Nėra tinkamos „UCI“ konfigūracijos „posmos“" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:913 msgid "Not Running" msgstr "Nevykdomas/-a" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1973 msgid "Note: bandwidth not set — CAKE will run unlimited on that direction." msgstr "" "Pastaba: duomenų siuntimo ir perdavimo srauto pralaidumas nenustatytas – " @@ -772,264 +863,279 @@ msgstr "" msgid "Number of packets per second to trigger bulk flow detection" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1161 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1174 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1221 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1238 msgid "Only override the DSCP value if it is zero" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:704 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:747 msgid "" "Only sent with host isolation on — add nat to common CAKE options to force it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1017 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1060 msgid "Options" msgstr "Parinktys" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:730 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:773 msgid "Overhead" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "Overhead preset" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:603 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:644 msgid "Overview" msgstr "Apžiūra" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1834 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2037 msgid "Overwrite" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2007 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2210 msgid "Overwrite config files" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1172 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 msgid "" "POSIX.2 extended regular expression for matching hostnames. Only works if " "dns lookups are passed to qosify via the add_dns_host ubus call." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2353 msgid "Port must be 1-65534 (qosify rejects 65535)." msgstr "Prievadas turi būti diapazone nuo 1 iki 65534 („qosify“ atmeta 65535)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2149 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2349 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2352 msgid "Port must be a number or a range (4500, 5060-5061)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "QoS Enabled" msgstr "„QoS“ įjungtas/įgalintas" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:721 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 msgid "Queueing mode" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1163 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1209 msgid "Quick Add" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1016 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1059 msgid "Quick Add: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2356 msgid "Range start must not exceed end." msgstr "Diapazono pradžia negali viršyti pabaigos." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 msgid "Re-check devices" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 msgid "Re-checking devices..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:811 msgid "Re-read the mapping files only" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 msgid "Re-reading the mapping files..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 -msgid "" -"Re-runs the daemon's own device pass: every shaped section is looked up " -"again, one whose device now exists is started and one whose device has gone " -"is stopped. Nothing is reported back by the call — the result shows in the " -"Service table on the Overview tab." +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1351 +msgid "Re-runs the daemon's own device pass." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2024 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2227 msgid "Read error" msgstr "Nuskaitymo klaida" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Reading and validating files..." msgstr "Nuskaitomi ir tikrinami failai..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1681 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1884 msgid "Reading tc output..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1019 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1062 msgid "Reference" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload" msgstr "Perleisti" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload Rules" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1695 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1898 msgid "Reload failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1306 +msgid "Remove" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1270 +msgid "Remove failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 +msgid "Replaced with" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "Requires write access." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2086 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1365 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2289 msgid "Reset" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2120 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1554 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "Reset counters" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2323 msgid "Reset failed: %s" msgstr "Grąžinti į pradinę padėti ar būsena nepavyko: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2084 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2287 msgid "Reset to defaults" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2116 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2319 msgid "Reset to defaults, applied." msgstr "Grąžinti į pradinės padėties ar būsenos numatytuosius, pritaikyta." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Resetting" msgstr "Grąžinamą į pradinę padėti ar būseną" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Restart" msgstr "Paleisti iš naujo" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1203 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1341 msgid "Restore" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 -msgid "Restore qosify defaults" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1359 +msgid "Restore qosify defaults. Shaping is left disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Restoring defaults..." msgstr "Paleidžiami iš naujo numatytieji..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:646 msgid "Rules" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1976 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2179 msgid "Rules saved" msgstr "Taisyklės išsaugotos" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2053 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2056 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2256 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2259 msgid "Rules: %s" msgstr "Taisyklės: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:868 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:911 msgid "Running & Shaping" msgstr "Vykdomas/-a ir formuojamas/-a" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:912 msgid "Running — Not Shaping" msgstr "Vykdomas/-a – neformuojamas/-a" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:867 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:910 msgid "Running — Shaping Unknown" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1147 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:796 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 msgid "Save & Apply" msgstr "Išsaugoti ir pritaikyti" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1825 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1897 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1924 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1985 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2028 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2100 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2127 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2188 msgid "Save failed: %s" msgstr "Išsaugoti nepavyko: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Saving" msgstr "Išsaugojamas" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 msgid "Saving settings and applying..." msgstr "Išsaugojami nustatymai ir pritaikomi..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2186 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2389 msgid "Section %s already exists." msgstr "Skyrius %s jau egzistuoja." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1011 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1054 msgid "" "Section name is the class name that rules and dscp_* values refer to. " "qosify.init reads config alias the same way as config class." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Sending %s to qosify..." msgstr "Siunčiama %s į – „qosify“..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Sent to CAKE as atm, noatm or ptm." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "Sent to CAKE as ether-vlan, once per tag." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Sent to CAKE as mpu, in bytes." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Sent to CAKE as overhead, in bytes." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:663 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:706 msgid "Service" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1745 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1948 msgid "Service action failed: %s" msgstr "Tarnybos veiksmas nepavyko: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1817 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 msgid "Settings saved" msgstr "Nustatymas išsaugotas" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:723 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:937 msgid "Shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Size" msgstr "" @@ -1037,44 +1143,48 @@ msgstr "" msgid "Skip this section" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Start" msgstr "Paleisti" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:606 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:891 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:647 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:934 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Status" msgstr "Būklė/Būsena" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:855 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:898 msgid "Status Unknown" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:809 msgid "Stop" msgstr "Stabdyti" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1167 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 msgid "TCP single port, or range from to " msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1680 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1883 msgid "The detailed tc output needs write access to this page." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:590 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1309 +msgid "The first %d entries are shown." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:631 msgid "" "The qosify UCI configuration could not be loaded — class and interface lists " "may be incomplete." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1342 msgid "" "The selected files replace the ones on the router and qosify is reloaded." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2008 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2211 msgid "" "The selected files replace the ones on the router and qosify is reloaded. " "Download a backup from this tab first if you need one." @@ -1084,33 +1194,37 @@ msgstr "" msgid "Time below bulk_trigger_pps threshold until a bulk flow mark is removed" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 msgid "Traffic by CAKE Tin" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1401 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1548 msgid "Traffic by Class" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:596 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1549 +msgid "Traffic by DSCP" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:637 msgid "Traffic shaping and DSCP classification via qosify" msgstr "Srauto formavimas ir „DSCP“ klasifikavimas per – „qosify“" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1168 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 msgid "UDP single port, or range from to " msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:864 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:866 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:907 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:909 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:968 msgid "Unknown" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 msgid "Unknown class/DSCP target: %s" msgstr "Nežinoma klasė/„DSCP“ taikomasis: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "Unticked sets disabled 1 and qosify skips this section." msgstr "" @@ -1118,159 +1232,183 @@ msgstr "" msgid "Uplink bandwidth (same format as tc)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Uplink bandwidth, same format as tc. Set just below line speed." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 msgid "Upload" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1348 msgid "Upload & Apply" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2009 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2212 msgid "Upload and apply" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Upload bandwidth" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2061 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2264 msgid "Upload error: %s" msgstr "Įkėlimo klaida: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2078 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2281 msgid "Upload failed: %s" msgstr "Įkėlimas nepavyko: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 msgid "Upload shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Uploading" msgstr "Įkeliama" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:892 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:935 msgid "Uptime" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "VLAN tags" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Valid" msgstr "Tinkamas/-a" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1951 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 msgid "Warning: %s but qosify is not shaping traffic — check the Status tab." msgstr "" "Įspėjimas: %s, bet „qosify“ neformuoja srauto – patikrinkite skirtuką – " "„Būklė/Būsena“." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Working" msgstr "Veikia" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "Write empty file" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 msgid "Writing config and reloading qosify..." msgstr "Rašoma konfigūracija ir perleidžiama „qosify“..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Writing rules and reloading qosify..." msgstr "Rašomos taisyklės ir perleidžiama „qosify“..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:633 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:675 msgid "" "You have read-only access to this page, so editing and service control are " "disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "" +"Zero qosify's own counters (get_stats)? The CAKE tin counters belong to tc " +"and are kept." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 msgid "active" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1969 msgid "" "bandwidth_down does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1968 msgid "" "bandwidth_up does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1012 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1055 msgid "" "config device takes the same options, with name set to a netdev. nat " "defaults to 1 for interfaces and 0 for devices." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "device %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "device: %s, ingress: %s, egress: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:289 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:317 msgid "" "disabled is set to \"%s\" — config_get_bool does not recognise that, so the " "section stays enabled" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2129 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +msgid "dump did not answer." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2332 msgid "e.g. %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1171 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 msgid "fnmatch() pattern supporting * and ? as wildcard characters" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1613 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1816 msgid "get_stats did not answer." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 msgid "inactive" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "ingress %s, egress %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:282 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:310 msgid "ingress and egress are both 0 — nothing is shaped" msgstr "Įėjimas ir išėjimas abu lygūs 0-iui – niekas nėra suformuota" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "interface %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1155 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1199 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1235 msgid "match" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:274 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:292 +msgid "" +"mode \"%s\" is not a CAKE diffserv mode — tc refuses the qdisc, so nothing " +"is shaped although qosify reports the section active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:291 +msgid "" +"name \"%s\" is dropped by qosify — it takes at most %d characters and no " +"quote" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:290 msgid "" "name is not set — qosify.init sends an empty device name and this section is " "never applied" @@ -1278,7 +1416,7 @@ msgstr "" "pavadinimas nėra nustatytas — „qosify.init“ siunčia tuščią įrenginio " "pavadinimą ir šis skyrius niekada nėra pritaikomas" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:278 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:306 msgid "" "nat is not sent: qosify only emits nat/nonat inside the host_isolate branch. " "CAKE does accept flows plus nat — put nat in options to apply it" @@ -1287,7 +1425,7 @@ msgstr "" "viduje. „CAKE“ priima srautus ir „nat“ – įveskite/pridėkite „nat“ " "parinktyse, kad jį pritaikytumėte" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:279 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:307 msgid "" "nat only reaches %s — put it in options, or in both ingress_options and " "egress_options" @@ -1301,104 +1439,133 @@ msgid "" "on" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "netifd interface to enable QoS on. Required." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1313 +msgid "never" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "no" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:284 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:312 msgid "no bandwidth_down or bandwidth — ingress CAKE runs unlimited" msgstr "" "nėra „bandwidth_down“ ar „bandwidth“ — įeinantis „CAKE“ veikia neribotai" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:283 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:311 msgid "no bandwidth_up or bandwidth — egress CAKE runs unlimited" msgstr "" "nėra „bandwidth_down“ ar „bandwidth“ — išeinantis „CAKE“ veikia neribotai" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "none" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:281 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:309 msgid "overhead and overhead_encap are ignored unless overhead_type is manual" msgstr "" "„overhead“ ir „overhead_encap“ yra ignoruojami, nebent „overhead_type“ yra " "rankinis" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:595 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:299 +msgid "overhead_encap \"%s\" is not atm, noatm or ptm — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:296 +msgid "" +"overhead_type \"%s\" is not one qosify.init knows, so no overhead is set" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:302 +msgid "overhead_vlan \"%s\" is not 0, 1 or 2 — qosify.init adds no ether-vlan" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:636 #: applications/luci-app-qosify/root/usr/share/luci/menu.d/luci-app-qosify.json:3 msgid "qosify" msgstr "„qosify“" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:847 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:890 msgid "" "qosify did not appear on ubus, so its config was not applied — press Reload" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:833 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1729 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:876 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1932 msgid "qosify did not come up — check the system log" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1610 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1672 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1813 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1875 msgid "qosify is not running. Start from the Overview tab." msgstr "„qosify“ neveikia. Paleiskite iš skirtuko – „Apžiūra“." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1735 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1887 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2090 msgid "qosify is still running — leaving the qdiscs alone" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1253 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1361 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1362 +msgid "qosify package template" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1399 msgid "qosify-status" msgstr "„qosify-status“" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1885 msgid "qosify-status returned no output." msgstr "„qosify-status“ negrąžino jokios išvesties." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:918 msgid "" "rpcd is not answering for qosify — check the ACL in /usr/share/rpcd/acl.d " "and restart rpcd" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:832 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1609 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1671 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1728 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1734 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1886 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1812 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1874 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1931 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1937 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2089 msgid "rpcd is not answering for qosify, so the service state is unknown." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:955 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:998 msgid "section name" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:953 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:996 msgid "section type" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1529 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1533 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1731 msgid "share" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1541 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1256 +msgid "timeout must be a whole number of seconds above 0." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1739 msgid "total" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 msgid "value" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "yes" msgstr "" diff --git a/luci-app-qosify/po/pl/qosify.po b/luci-app-qosify/po/pl/qosify.po index f17cabc26..71851d968 100644 --- a/luci-app-qosify/po/pl/qosify.po +++ b/luci-app-qosify/po/pl/qosify.po @@ -3,44 +3,70 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Language: pl\n" "Content-Transfer-Encoding: 8bit\n" -"Last-Translator: Matthaiks \n" +"Last-Translator: Matthaiks \n" "Language-Team: Polish \n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" -"PO-Revision-Date: 2026-09-27 20:14+0000\n" -"X-Generator: Weblate 2026.10.dev0\n" +"PO-Revision-Date: 2026-10-25 04:14+0000\n" +"X-Generator: Weblate 2026.11.dev0\n" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1255 +msgid "\"%s\" is not a value qosify accepts for %s." +msgstr "„%s” nie jest wartością akceptowaną przez qosify dla %s." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:483 +msgid "" +"%d class and alias sections — qosify has %d class slots, so %s and the rules " +"using them are dropped" +msgstr "" +"%d sekcji klas i aliasów — qosify ma %d slotów klas, więc %s oraz reguły z " +"nich korzystające zostają pominięte" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "%d interface" msgid_plural "%d interfaces" msgstr[0] "%d interfejs" msgstr[1] "%d interfejsy" msgstr[2] "%d interfejsów" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:986 msgid "%d rule" msgid_plural "%d rules" msgstr[0] "%d reguła" msgstr[1] "%d reguły" msgstr[2] "%d reguł" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:942 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:985 msgid "%d section" msgid_plural "%d sections" msgstr[0] "%d sekcja" msgstr[1] "%d sekcje" msgstr[2] "%d sekcji" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:294 +msgid "" +"%s \"%s\" is not a tc rate — tc refuses the qdisc, so nothing is shaped " +"although qosify reports the section active" +msgstr "" +"%s „%s” nie jest wartością typu „tc rate” — narzędzie tc odrzuca " +"konfigurację qdisc, więc ruch nie jest kształtowany, mimo że qosify zgłasza " +"daną sekcję jako aktywną" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:298 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:301 +msgid "%s \"%s\" is not a whole number — tc refuses the qdisc" +msgstr "%s „%s” nie jest liczbą całkowitą — tc odrzuca qdisc" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 msgid "%s (current)" msgstr "%s (bieżący)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 msgid "%s (from bandwidth)" msgstr "%s (z przepustowości)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2085 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2288 msgid "" "%s and %s are replaced with the templates shipped by the qosify package, and " "shaping is left disabled." @@ -48,20 +74,20 @@ msgstr "" "%s i %s są zastępowane szablonami dostarczanymi w pakiecie qosify, a " "kształtowanie ruchu pozostaje wyłączone." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1809 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2012 msgid "" "%s came back empty although it is %d bytes on disk — refusing to overwrite it" msgstr "" "%s zwróciło pusty wynik, mimo że na dysku zajmuje %d bajtów — odmowa " "nadpisania" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2346 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2549 msgid "%s changed on disk — your unsaved edits are still in the editor." msgstr "" "%s uległo zmianie na dysku — twoje niezapisane zmiany nadal znajdują się w " "edytorze." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2249 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2452 msgid "" "%s could not be read — the editor is left empty and will not be saved over " "it." @@ -69,7 +95,7 @@ msgstr "" "%s nie udało się odczytać — edytor pozostaje pusty i nie zostanie zapisany w " "jego miejsce." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1833 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2036 msgid "" "%s has changed since this editor was loaded. Saving now discards those " "changes." @@ -77,7 +103,7 @@ msgstr "" "%s uległo zmianie od momentu załadowania tego edytora. Zapisanie spowoduje " "utratę tych zmian." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1864 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2067 msgid "" "%s is %d bytes on disk but was never loaded into the editor — refusing to " "truncate it. Reload the page first." @@ -85,11 +111,11 @@ msgstr "" "%s zajmuje na dysku %d bajtów, ale nie został wczytany do edytora – odmowa " "skrócenia pliku. Najpierw odśwież stronę." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:392 msgid "%s is a list in this section — edit %s directly" msgstr "%s to lista w tej sekcji — edytuj %s bezpośrednio" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1656 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1859 msgid "" "%s is not in the defaults list — qosify does not load it, so the Rules tab " "has no effect" @@ -97,7 +123,7 @@ msgstr "" "%s nie znajduje się na liście domyślnej — qosify go nie wczytuje, więc karta " "„Reguły” nie przynosi żadnego efektu" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:286 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:314 msgid "" "%s is set to \"%s\" — qosify converts it with atoi(), so anything but a non-" "zero number means off" @@ -105,45 +131,45 @@ msgstr "" "%s ustawiono na „%s” — qosify przetwarza go za pomocą funkcji atoi(), więc " "każda wartość inna niż liczba niezerowa oznacza wyłączenie" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:750 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:793 msgid "%s quick settings" msgstr "Szybkie ustawienia %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2069 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2272 msgid "%s uploaded, qosify reloaded." msgstr "%s przesłano, qosify załadowano ponownie." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2103 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2306 msgid "%s was not written: %s" msgstr "Nie zapisano %s: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2106 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2309 msgid "%s was reset but %s was not written: %s" msgstr "Zresetowano %s, ale nie zapisano %s: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1945 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2148 msgid "%s, applied (QoS disabled)." msgstr "%s, zastosowano (QoS wyłączone)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1950 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 msgid "" "%s, applied — qosify did not answer on ubus, so shaping could not be checked." msgstr "" "%s, zastosowano — qosify nie odpowiedziało przez ubus, więc nie można było " "zweryfikować kształtowania ruchu." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1947 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 msgid "%s, applied." msgstr "%s, zastosowano." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:459 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:468 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:500 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:509 msgid "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify ignores it" msgstr "" "%s: %s „%s” nie jest klasą, punktem kodowym ani wartością z zakresu 0–63 — " "qosify to ignoruje" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:456 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:497 msgid "" "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify rejects the whole " "config and interface changes are not applied" @@ -152,7 +178,7 @@ msgstr "" "qosify odrzuca całą konfigurację, a zmiany dotyczące interfejsu nie zostają " "wprowadzone" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:465 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:506 msgid "" "%s: %s \"%s\" is not a codepoint or 0-63 — qosify drops this class and the " "rules using it" @@ -160,7 +186,15 @@ msgstr "" "%s: %s „%s” nie jest punktem kodowym ani wartością z zakresu 0‐63 — qosify " "odrzuca tę klasę oraz reguły, które z niej korzystają" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:448 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:488 +msgid "" +"%s: %s \"%s\" is not a whole number — qosify.init passes it through atoll(), " +"which keeps only the leading digits" +msgstr "" +"%s: %s „%s” nie jest liczbą całkowitą — qosify.init przekazuje tę wartość do " +"funkcji atoll(), która zachowuje tylko początkowe cyfry" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:486 msgid "" "%s: %s cannot be checked — write it as one plain or fully quoted value, with " "no backslash" @@ -168,7 +202,7 @@ msgstr "" "%s: nie można sprawdzić %s — zapisz to jako pojedynczą, zwykłą lub w pełni " "ujętą w cudzysłów wartość, bez znaku odwrotnego ukośnika" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:451 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:492 msgid "" "%s: %s contains shell metacharacters — qosify runs the tc command with sh -c " "as root, so they would break it or be executed" @@ -177,31 +211,64 @@ msgstr "" "sh -c z uprawnieniami roota, więc mogłyby one zakłócić działanie polecenia " "lub zostać wykonane" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "(alias)" msgstr "(alias)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1304 +msgid "(over file)" +msgstr "(nad plikiem)" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 msgid "(this qosify build has no NQB)" msgstr "(ta kompilacja qosify nie zawiera NQB)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2185 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2388 msgid "A config defaults section already exists." msgstr "Sekcja ustawień domyślnych już istnieje." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2183 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2386 msgid "A section name may only contain letters, digits and underscores." msgstr "Nazwa sekcji może zawierać tylko litery, cyfry i znaki podkreślenia." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:856 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Action" +msgstr "Akcja" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:899 msgid "Active" msgstr "Aktywna" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:957 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1162 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1000 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1206 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1240 msgid "Add" msgstr "Dodaj" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1262 +msgid "Add failed: %s" +msgstr "Dodawanie nie powiodło się: %s" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1242 +msgid "" +"Added to the running qosify at once and not saved: an entry expires after " +"its timeout (the defaults timeout when left empty) and a qosify restart " +"drops it. One on a match from the rules file overrides it until then." +msgstr "" +"Wpis dodany do działającego procesu qosify nie jest zapisywany na stałe: " +"wygasa on po upływie określonego czasu (jeśli pole pozostanie puste, " +"stosowany jest czas domyślny), a restart qosify powoduje jego usunięcie. " +"Wpis wynikający z dopasowania do reguły zawartej w pliku konfiguracyjnym ma " +"pierwszeństwo przed takim wpisem tymczasowym." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +msgid "" +"Adds a line to the editor below; Save & Apply writes it to the rules file, " +"so it is kept." +msgstr "" +"Dodaje wiersz w edytorze poniżej; opcja „Zapisz i zastosuj” zapisuje go w " +"pliku reguł, dzięki czemu zostaje on zachowany." + #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:85 msgid "Adds atm, noatm or ptm when overhead_type is manual" msgstr "Dodaje atm, noatm lub ptm, gdy overhead_type ma wartość manual" @@ -218,34 +285,34 @@ msgstr "Dodaje MPU " msgid "Adds overhead when overhead_type is manual" msgstr "Dodaje narzut , gdy overhead_type ma wartość manual" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:608 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:649 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:780 msgid "Advanced" msgstr "Zaawansowane" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "An empty %s stops all shaping. Continue?" msgstr "" "Puste pole %s powoduje zatrzymanie wszelkich działań związanych z " "kształtowaniem ruchu. Kontynuować?" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:726 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:769 msgid "Automatic download rate" msgstr "Automatyczna prędkość pobierania" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:936 msgid "Autostart" msgstr "Autostart" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:967 msgid "Autostart state unknown — rpcd did not answer" msgstr "Stan autostartu nieznany — rpcd nie odpowiedział" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 msgid "Available" msgstr "Dostępne" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1196 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1334 msgid "Backup" msgstr "Kopia zapasowa" @@ -257,12 +324,12 @@ msgstr "" "Przepustowość dla obu kierunków, gdy nie określono bandwidth_up ani " "bandwidth_down" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:716 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:759 msgid "Basic" msgstr "Podstawowe" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:224 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2029 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:240 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2232 msgid "Binary content rejected" msgstr "Zawartość binarna odrzucona" @@ -274,7 +341,7 @@ msgstr "Tryb diffserv CAKE" msgid "CAKE egress options" msgstr "Opcje wyjścia CAKE" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "CAKE egress options, space separated." msgstr "Opcje wyjścia CAKE, rozdzielone spacjami." @@ -282,7 +349,7 @@ msgstr "Opcje wyjścia CAKE, rozdzielone spacjami." msgid "CAKE ingress options" msgstr "Opcje wejścia CAKE" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "CAKE ingress options, space separated." msgstr "Opcje wejścia CAKE, oddzielone spacją." @@ -298,104 +365,108 @@ msgstr "" "Do opcji dodano słowo kluczowe CAKE overhead; manual używa overhead i " "overhead_encap" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "CAKE overhead keyword. Use none if unsure." msgstr "Słowo kluczowe CAKE overhead. Jeśli nie masz pewności, użyj none." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:564 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 msgid "Cancel" msgstr "Anuluj" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1356 msgid "Check Devices" msgstr "Sprawdź urządzenia" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1330 msgid "Choose file…" msgstr "Wybierz plik…" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1114 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1158 msgid "Classes" msgstr "Klasy" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1940 msgid "Cleanup exited with code %d" msgstr "Proces czyszczenia zakończył się kodem %d" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1190 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear" msgstr "Wyczyść" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2072 msgid "Clear configuration" msgstr "Wyczyść konfigurację" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear editor" msgstr "Wyczyść edytor" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to disable autostart" msgstr "Kliknij, aby wyłączyć autostart" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to enable autostart" msgstr "Kliknij, aby włączyć autostart" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 msgid "Common CAKE options" msgstr "Typowe opcje CAKE" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:604 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:645 msgid "Config" msgstr "Konfiguracja" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared, qosify stopped." msgstr "Konfiguracja wyczyszczona, qosify zatrzymany." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared." msgstr "Konfiguracja wyczyszczona." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1915 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2118 msgid "Config saved" msgstr "Konfiguracja zapisana" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2042 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2050 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2253 msgid "Config: %s" msgstr "Konfiguracja: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:566 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 msgid "Continue" msgstr "Kontynuuj" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1391 msgid "Could not read %s: %s" msgstr "Nie można odczytać %s: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:648 msgid "Counters" msgstr "Liczniki" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1627 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1567 +msgid "Counters reset." +msgstr "Czyszczenie liczników." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1830 msgid "DNS Entries" msgstr "Wpisy DNS" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d of %d)" msgstr "Wpisy DNS (%d z %d)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d)" msgstr "Wpisy DNS (%d)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "" "DSCP codepoints: CS0–CS7, AF11–AF43, EF, VA, NQB, LE, DF (NQB needs qosify " "from June 2026; 24.10 and 25.12 do not have it). A raw value from 0 to 63 is " @@ -434,7 +505,7 @@ msgstr "" msgid "DSCP value for priority-marked packets" msgstr "Wartość DSCP dla pakietów oznaczonych priorytetem" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "DSCP values" msgstr "Wartości DSCP" @@ -450,12 +521,12 @@ msgstr "Domyślna wartość DSCP dla pakietów UDP" msgid "Default timeout for dynamically added entries" msgstr "Domyślny limit czasu dla wpisów dodanych dynamicznie" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1358 msgid "Defaults" msgstr "Domyślne" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 msgid "" "Defaults qosify applies when a key is absent — interface: mode diffserv4, " "ingress 1, egress 1, nat 1, host_isolate 1, autorate_ingress 0. device: " @@ -469,21 +540,25 @@ msgstr "" "3600, dscp_default_tcp/udp CS0, dscp_prio/dscp_bulk/dscp_icmp unset, " "bulk_trigger_pps/bulk_trigger_timeout/prio_max_avg_pkt_len 0 (wyłączone)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Description" +msgstr "Opis" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Device" msgstr "Urządzenie" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1914 msgid "Device check done." msgstr "Sprawdzenie urządzenia zakończone." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1714 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1917 msgid "Device check failed: %s" msgstr "Sprawdzenie urządzenia nie powiodło się: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:859 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Disabled" msgstr "Wyłączone" @@ -491,30 +566,34 @@ msgstr "Wyłączone" msgid "Downlink bandwidth (same format as tc)" msgstr "Przepustowość łącza przychodzącego (w tym samym formacie co w tc)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Downlink bandwidth, same format as tc. Set just below line speed." msgstr "" "Przepustowość łącza przychodzącego, ten sam format co tc. Ustawiono tuż " "poniżej prędkości łącza." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1247 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1393 msgid "Download" msgstr "Pobierz" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Download bandwidth" msgstr "Przepustowość pobierania" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:767 msgid "Download shaping" msgstr "Kształtowanie pobierania" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1197 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1335 msgid "Download the current files from the router." msgstr "Pobierz bieżące pliki z routera." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1241 +msgid "Dynamic Entries" +msgstr "Wpisy dynamiczne" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "" "Each line has two whitespace separated fields, match and dscp. dscp can be a " "raw value, a codepoint like CS0, or a class name. DNS entries are compared " @@ -525,22 +604,22 @@ msgstr "" "(np. CS0) lub nazwy klasy. Wpisy są porównywane w kolejności ich " "zdefiniowania, a system wykorzystuje pierwszy pasujący wpis." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "Egress CAKE options" msgstr "Opcje wyjścia CAKE" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2223 msgid "Empty file" msgstr "Pusty plik" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 msgid "" "Empty the config editor? Nothing is written until you click Save & Apply." msgstr "" "Opróżnić edytor konfiguracji? Żadne zmiany nie zostaną zapisane, dopóki nie " "klikniesz „Zapisz i zastosuj”." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "" "Empty the rules editor? Nothing is written until you click Save & Apply." msgstr "" @@ -568,56 +647,64 @@ msgstr "Włącz kształtowanie ruchu wychodzącego" msgid "Enable ingress shaping" msgstr "Włącz kształtowanie ruchu przychodzącego" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Enabled" msgstr "Włączone" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:858 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 msgid "Enabled — Not Running" msgstr "Włączone — nieuruchomione" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:857 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 msgid "Enabled — Not Shaping (check config)" msgstr "Włączone — brak kształtowania (sprawdź konfigurację)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Encapsulation overhead" msgstr "Narzut enkapsulacji" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2182 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2385 msgid "Enter a section name." msgstr "Wpisz nazwę sekcji." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2156 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2359 msgid "Enter a single IPv4 address (qosify does not accept CIDR)." msgstr "Wpisz pojedynczy adres IPv4 (qosify nie akceptuje CIDR)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2159 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2362 msgid "" "Enter a single IPv6 address (qosify does not accept CIDR or a %zone suffix)." msgstr "" "Wpisz pojedynczy adres IPv6 (qosify nie akceptuje zapisu CIDR ani przyrostka " "%zone)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2141 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2344 msgid "Enter a value." msgstr "Wpisz wartość." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Entries" msgstr "Wpisy" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1848 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1961 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1261 +msgid "Entry added." +msgstr "Wpis dodany." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1269 +msgid "Entry removed." +msgstr "Wpis usunięty." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2051 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2164 msgid "Error: %s" msgstr "Błąd: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1845 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2048 msgid "Error: No valid config stanzas found." msgstr "Błąd: nie znaleziono prawidłowych sekcji konfiguracji." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1763 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1965 msgid "" "Error: invalid characters in bandwidth or options fields. Use alphanumeric, " "spaces, hyphens, dots, colons only." @@ -625,41 +712,58 @@ msgstr "" "Błąd: niedozwolone znaki w polach przepustowości lub opcji. Należy używać " "wyłącznie znaków alfanumerycznych, spacji, myślników, kropek i dwukropków." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1798 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2000 msgid "Error: name must be a device or interface name" msgstr "Błąd: nazwa musi być nazwą urządzenia lub interfejsu" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1769 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1971 msgid "Error: overhead must be a whole number of bytes" msgstr "Błąd: narzut musi być liczbą całkowitą bajtów" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1970 msgid "Error: overhead_mpu must be a whole number of bytes" msgstr "Błąd: overhead_mpu musi być liczbą całkowitą określającą liczbę bajtów" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2070 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2001 +msgid "Error: qosify drops a name longer than %d characters" +msgstr "Błąd: qosify odrzuca nazwę dłuższą niż %d znaków" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2273 msgid "Errors:" msgstr "Błędy:" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 +msgid "" +"Every shaped section is looked up again, one whose device now exists is " +"started and one whose device has gone is stopped. Nothing is reported back " +"by the call — the result shows in the Service table on the Overview tab." +msgstr "" +"Każda sekcja o określonym kształcie jest ponownie sprawdzana: jeśli " +"przypisane do niej urządzenie istnieje, sekcja jest uruchamiana, a jeśli " +"urządzenie przestało istnieć – zatrzymywana. Wywołanie to nie zwraca żadnego " +"komunikatu zwrotnego – wynik jest widoczny w tabeli Usługa na karcie " +"Przegląd." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 msgid "File" msgstr "Plik" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1832 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 msgid "File changed on disk" msgstr "Plik zmieniono na dysku" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2224 msgid "File too large (max 64KB)" msgstr "Plik jest za duży (maks. 64 KB)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:667 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 msgid "Files" msgstr "Pliki" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Found (empty or invalid)" msgstr "Znaleziono (puste lub nieprawidłowe)" @@ -667,37 +771,33 @@ msgstr "Znaleziono (puste lub nieprawidłowe)" msgid "Grant access to LuCI app qosify" msgstr "Udziel dostępu do aplikacji LuCI qosify" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:728 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:771 msgid "Host isolation" msgstr "Izolacja hosta" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1169 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1216 msgid "IPv4 address, e.g. 1.1.1.1" msgstr "Adres IPv4, np. 1.1.1.1" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1170 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 msgid "IPv6 address, e.g. ff01::1" msgstr "Adres IPv6, np. ff01::1" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "Ingress CAKE options" msgstr "Opcje wejścia CAKE" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Interface" msgstr "Interfejs" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:741 -msgid "Invalid CAKE options can stop qosify starting." -msgstr "Nieprawidłowe opcje CAKE mogą uniemożliwić uruchomienie qosify." - -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1173 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1220 msgid "Like dns:... but only matches cname entries" msgstr "Jak DNS:..., ale dopasowuje tylko wpisy CNAME" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:228 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:244 msgid "" "Line %d is longer than 1023 characters — the rule loader reads fixed-size " "lines and would split it, comment included" @@ -709,28 +809,29 @@ msgstr "" msgid "List of files with port/IP/host mappings" msgstr "Lista plików z mapowaniami portów, adresów IP i hostów" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 msgid "Loading..." msgstr "Ładowanie..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1212 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1350 msgid "Maintenance" msgstr "Konserwacja" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Manual overhead" msgstr "Narzut ręczny" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "Mapping file syntax" msgstr "Składnia pliku mapowania" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1692 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1895 msgid "Mapping files reloaded." msgstr "Pliki mapowania zostały ponownie załadowany." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:434 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:462 msgid "" "Match not loaded by qosify on line %s — ports 1-65534, one IPv4/IPv6 address " "(no CIDR or %%zone), or dns:, dns_c:" @@ -744,21 +845,21 @@ msgstr "" "Maksymalna średnia długość pakietu dla oznaczenia przepływu jako " "priorytetowego" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Minimum packet unit (MPU)" msgstr "Minimalna jednostka pakietu (MPU)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Missing" msgstr "Brak" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Modified" msgstr "Zmodyfikowano" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:433 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:461 msgid "" "More than two fields on line %s — qosify reads the rest of the line as the " "DSCP value and skips it" @@ -766,67 +867,76 @@ msgstr "" "Więcej niż dwa pola w wierszu %s — qosify traktuje resztę wiersza jako " "wartość DSCP i ją pomija" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:770 msgid "NAT awareness" msgstr "Obsługa NAT" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Netdev to enable QoS on. Required." msgstr "Netdev do włączenia QoS. Wymagane." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No CAKE tin statistics." msgstr "Brak statystyk puszek CAKE." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1628 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1831 msgid "No DNS entries." msgstr "Brak wpisów DNS." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:432 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:460 msgid "No DSCP target on line %s — qosify skips single-field lines" msgstr "" "Brak docelowej wartości DSCP w wierszu %s — qosify pomija wiersze z " "pojedynczym polem" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1107 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +msgid "No DSCP traffic yet." +msgstr "Brak jeszcze ruchu DSCP." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1151 msgid "No classes defined in %s" msgstr "Nie określono żadnych klas w %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2142 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1257 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2345 msgid "No classes defined. Add classes in the Config tab first." msgstr "" "Brak zdefiniowanych klas. Najpierw dodaj klasy na karcie „Konfiguracja”." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1192 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1294 +msgid "No dynamic entries." +msgstr "Brak wpisów dynamicznych." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1328 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1329 msgid "No file selected" msgstr "Nie wybrano pliku" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2209 msgid "No files selected." msgstr "Nie wybrano plików." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No output." msgstr "Brak danych wyjściowych." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 msgid "No per-class counters." msgstr "Brak liczników dla poszczególnych klas." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2357 msgid "No spaces or # allowed in patterns or addresses." msgstr "We wzorcach i adresach nie można używać spacji ani znaków #." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2030 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2233 msgid "No valid UCI config stanzas" msgstr "Brak prawidłowych stanów konfiguracji UCI" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:913 msgid "Not Running" msgstr "Nieuruchomione" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1973 msgid "Note: bandwidth not set — CAKE will run unlimited on that direction." msgstr "" "Uwaga: przepustowość nie została ustawiona — CAKE będzie działać " @@ -836,43 +946,44 @@ msgstr "" msgid "Number of packets per second to trigger bulk flow detection" msgstr "Liczba pakietów na sekundę wyzwalająca wykrywanie przepływów masowych" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1161 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1174 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1221 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1238 msgid "Only override the DSCP value if it is zero" msgstr "Nadpisuj wartość DSCP tylko wtedy, gdy wynosi ona zero" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:704 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:747 msgid "" "Only sent with host isolation on — add nat to common CAKE options to force it" msgstr "" "Wysyłane tylko przy włączonej izolacji hosta — dodaj nat do typowych opcji " "CAKE, aby to wymusić" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1017 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1060 msgid "Options" msgstr "Opcje" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:730 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:773 msgid "Overhead" msgstr "Narzut" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "Overhead preset" msgstr "Ustawienie wstępne narzutu" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:603 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:644 msgid "Overview" msgstr "Przegląd" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1834 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2037 msgid "Overwrite" msgstr "Nadpisz" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2007 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2210 msgid "Overwrite config files" msgstr "Nadpisz pliki konfiguracyjne" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1172 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 msgid "" "POSIX.2 extended regular expression for matching hostnames. Only works if " "dns lookups are passed to qosify via the add_dns_host ubus call." @@ -881,185 +992,196 @@ msgstr "" "hostów. Działa tylko wtedy, gdy wyniki wyszukiwania DNS są przekazywane do " "qosify za pośrednictwem wywołania ubus `add_dns_host`." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2353 msgid "Port must be 1-65534 (qosify rejects 65535)." msgstr "Port musi być 1-65534 (qosify odrzuca port 65535)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2149 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2349 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2352 msgid "Port must be a number or a range (4500, 5060-5061)." msgstr "Port musi być liczbą lub zakresem (4500, 5060-5061)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "QoS Enabled" msgstr "QoS włączono" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:721 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 msgid "Queueing mode" msgstr "Tryb kolejkowania" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1163 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1209 msgid "Quick Add" msgstr "Szybkie dodawanie" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1016 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1059 msgid "Quick Add: %s" msgstr "Szybkie dodawanie: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2356 msgid "Range start must not exceed end." msgstr "Początek zakresu nie może przekraczać końca." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 msgid "Re-check devices" msgstr "Sprawdź ponownie urządzenia" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 msgid "Re-checking devices..." msgstr "Ponowne sprawdzanie urządzeń..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:811 msgid "Re-read the mapping files only" msgstr "Ponownie odczytaj tylko pliki mapowania" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 msgid "Re-reading the mapping files..." msgstr "Ponowne odczytanie plików mapowania..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 -msgid "" -"Re-runs the daemon's own device pass: every shaped section is looked up " -"again, one whose device now exists is started and one whose device has gone " -"is stopped. Nothing is reported back by the call — the result shows in the " -"Service table on the Overview tab." -msgstr "" -"Ponownie uruchamia własny przebieg urządzenia demona: każda sekcja o " -"określonym kształcie jest ponownie wyszukiwana, uruchamiana jest sekcja, " -"której urządzenie istnieje, a sekcja, której urządzenie zniknęło, jest " -"zatrzymywana. Wywołanie nie zwraca żadnych informacji — wynik jest " -"wyświetlany w tabeli Usługa na karcie Przegląd." +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1351 +msgid "Re-runs the daemon's own device pass." +msgstr "Ponownie uruchamia proces sprawdzania urządzeń przez samego demona." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2024 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2227 msgid "Read error" msgstr "Błąd odczytu" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Reading and validating files..." msgstr "Odczytywanie i sprawdzanie poprawności plików..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1681 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1884 msgid "Reading tc output..." msgstr "Odczytywanie danych wyjściowych tc..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1019 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1062 msgid "Reference" msgstr "Odniesienie" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload" msgstr "Przeładuj" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload Rules" msgstr "Przeładuj reguły" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1695 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1898 msgid "Reload failed: %s" msgstr "Przeładowanie nie powiodło się: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1306 +msgid "Remove" +msgstr "Usuń" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1270 +msgid "Remove failed: %s" +msgstr "Usunięcie nie powiodło się: %s" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 +msgid "Replaced with" +msgstr "Zastąpiono przez" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "Requires write access." msgstr "Wymaga uprawnień do zapisu." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2086 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1365 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2289 msgid "Reset" msgstr "Resetuj" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2120 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1554 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "Reset counters" +msgstr "Wyczyść liczniki" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2323 msgid "Reset failed: %s" msgstr "Resetowanie nie powiodło się: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2084 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2287 msgid "Reset to defaults" msgstr "Resetuj do ustawień domyślnych" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2116 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2319 msgid "Reset to defaults, applied." msgstr "Przywróć ustawienia domyślne i zastosuj." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Resetting" msgstr "Resetowanie" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Restart" msgstr "Restartuj" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1203 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1341 msgid "Restore" msgstr "Przywróć" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 -msgid "Restore qosify defaults" -msgstr "Przywróć domyślne ustawienia qosify" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1359 +msgid "Restore qosify defaults. Shaping is left disabled." +msgstr "" +"Przywróć ustawienia domyślne qosify. Funkcja kształtowania ruchu pozostaje " +"wyłączona." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Restoring defaults..." msgstr "Przywracanie ustawień domyślnych..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:646 msgid "Rules" msgstr "Reguły" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1976 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2179 msgid "Rules saved" msgstr "Zasady zapisane" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2053 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2056 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2256 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2259 msgid "Rules: %s" msgstr "Zasady: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:868 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:911 msgid "Running & Shaping" msgstr "Uruchomione i kształtuje" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:912 msgid "Running — Not Shaping" msgstr "Uruchomione — nie kształtuje" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:867 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:910 msgid "Running — Shaping Unknown" msgstr "Uruchomione — kształtowanie nieznanego" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1147 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:796 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 msgid "Save & Apply" msgstr "Zapisz i zastosuj" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1825 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1897 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1924 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1985 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2028 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2100 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2127 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2188 msgid "Save failed: %s" msgstr "Zapisywanie nie powiodło się: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Saving" msgstr "Zapisywanie" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 msgid "Saving settings and applying..." msgstr "Zapisywanie ustawień i stosowanie..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2186 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2389 msgid "Section %s already exists." msgstr "Sekcja %s już istnieje." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1011 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1054 msgid "" "Section name is the class name that rules and dscp_* values refer to. " "qosify.init reads config alias the same way as config class." @@ -1068,45 +1190,45 @@ msgstr "" "dscp_*. qosify.init traktuje alias konfiguracji tak samo jak klasę " "konfiguracji." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Sending %s to qosify..." msgstr "Wysyłanie %s do qosify..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Sent to CAKE as atm, noatm or ptm." msgstr "Wysłano do CAKE jako atm, noatm lub ptm." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "Sent to CAKE as ether-vlan, once per tag." msgstr "Wysłano do CAKE jako ether-vlan, raz na znacznik." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Sent to CAKE as mpu, in bytes." msgstr "Wysłano do CAKE jako mpu, w bajtach." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Sent to CAKE as overhead, in bytes." msgstr "Wysłane do CAKE jako narzut, w bajtach." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:663 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:706 msgid "Service" msgstr "Usługa" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1745 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1948 msgid "Service action failed: %s" msgstr "Nieudana czynność usługi: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1817 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 msgid "Settings saved" msgstr "Ustawienia zapisano" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:723 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:937 msgid "Shaping" msgstr "Kształtowanie" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Size" msgstr "Rozmiar" @@ -1114,35 +1236,39 @@ msgstr "Rozmiar" msgid "Skip this section" msgstr "Pomiń tę sekcję" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Start" msgstr "Uruchom" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:606 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:891 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:647 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:934 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Status" msgstr "Status" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:855 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:898 msgid "Status Unknown" msgstr "Status nieznany" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:809 msgid "Stop" msgstr "Zatrzymaj" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1167 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 msgid "TCP single port, or range from to " msgstr "Pojedynczy port TCP lub zakres od do " -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1680 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1883 msgid "The detailed tc output needs write access to this page." msgstr "" "Szczegółowe dane wyjściowe polecenia tc wymagają uprawnień do zapisu na tej " "stronie." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:590 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1309 +msgid "The first %d entries are shown." +msgstr "Wyświetlono pierwsze %d pozycji." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:631 msgid "" "The qosify UCI configuration could not be loaded — class and interface lists " "may be incomplete." @@ -1150,14 +1276,14 @@ msgstr "" "Nie udało się wczytać konfiguracji UCI dla qosify — listy klas i interfejsów " "mogą być niekompletne." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1342 msgid "" "The selected files replace the ones on the router and qosify is reloaded." msgstr "" "Wybrane pliki zastępują te znajdujące się w routerze, a qosify jest ponownie " "ładowane." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2008 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2211 msgid "" "The selected files replace the ones on the router and qosify is reloaded. " "Download a backup from this tab first if you need one." @@ -1172,33 +1298,37 @@ msgstr "" "Czas utrzymywania się poniżej progu bulk_trigger_pps do momentu usunięcia " "znacznika przepływu masowego" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 msgid "Traffic by CAKE Tin" msgstr "Ruch wg puszki CAKE" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1401 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1548 msgid "Traffic by Class" msgstr "Ruch wg klasy" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:596 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1549 +msgid "Traffic by DSCP" +msgstr "Ruch według DSCP" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:637 msgid "Traffic shaping and DSCP classification via qosify" msgstr "Kształtowanie ruchu i klasyfikacja DSCP za pomocą qosify" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1168 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 msgid "UDP single port, or range from to " msgstr "Pojedynczy port UDP lub zakres od do " -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:864 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:866 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:907 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:909 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:968 msgid "Unknown" msgstr "Nieznany" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 msgid "Unknown class/DSCP target: %s" msgstr "Nieznana klasa/cel DSCP: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "Unticked sets disabled 1 and qosify skips this section." msgstr "" "Odznaczenie zestawów powoduje wyłączenie opcji „1”, a mechanizm QoS pomija " @@ -1208,80 +1338,80 @@ msgstr "" msgid "Uplink bandwidth (same format as tc)" msgstr "Przepustowość łącza wychodzącego (w tym samym formacie co w tc)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Uplink bandwidth, same format as tc. Set just below line speed." msgstr "" "Przepustowość łącza wychodzącego, ten sam format co tc. Ustawiono tuż " "poniżej prędkości łącza." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 msgid "Upload" msgstr "Wysyłanie" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1348 msgid "Upload & Apply" msgstr "Wyślij i zastosuj" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2009 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2212 msgid "Upload and apply" msgstr "Wyślij i zastosuj" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Upload bandwidth" msgstr "Przepustowość wysyłania" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2061 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2264 msgid "Upload error: %s" msgstr "Błąd przesyłania: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2078 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2281 msgid "Upload failed: %s" msgstr "Nie udało się przesłać: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 msgid "Upload shaping" msgstr "Kształtowanie wysyłania" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Uploading" msgstr "Przesyłanie" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:892 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:935 msgid "Uptime" msgstr "Czas pracy" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "VLAN tags" msgstr "Znaczniki VLAN" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Valid" msgstr "Prawidłowe" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1951 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 msgid "Warning: %s but qosify is not shaping traffic — check the Status tab." msgstr "" "Ostrzeżenie: %s, ale qosify nie kształtuje ruchu — sprawdź kartę „Status”." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Working" msgstr "Pracuje" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "Write empty file" msgstr "Utwórz pusty plik" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 msgid "Writing config and reloading qosify..." msgstr "Zapisywanie konfiguracji i przeładowanie qosify..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Writing rules and reloading qosify..." msgstr "Zapisywanie zasad i przeładowanie qosify..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:633 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:675 msgid "" "You have read-only access to this page, so editing and service control are " "disabled." @@ -1289,11 +1419,19 @@ msgstr "" "Masz dostęp do tej strony tylko do odczytu, więc edycja oraz sterowanie " "usługą są wyłączone." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "" +"Zero qosify's own counters (get_stats)? The CAKE tin counters belong to tc " +"and are kept." +msgstr "" +"Czy wyzerować własne liczniki qosify (get_stats)? Liczniki tin w CAKE należą " +"do tc i zostają zachowane." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 msgid "active" msgstr "aktywne" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1969 msgid "" "bandwidth_down does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" @@ -1301,7 +1439,7 @@ msgstr "" "bandwidth_down nie wygląda na parametr szybkości tc (100mbit, 12MBps, " "unlimited) — mimo to przekazuję go dalej" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1968 msgid "" "bandwidth_up does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" @@ -1309,7 +1447,7 @@ msgstr "" "bandwidth_up nie wygląda na parametr szybkości tc (100mbit, 12MBps, " "unlimited) — mimo to przekazuję go dalej" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1012 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1055 msgid "" "config device takes the same options, with name set to a netdev. nat " "defaults to 1 for interfaces and 0 for devices." @@ -1317,15 +1455,15 @@ msgstr "" "konfiguracja urządzenia przyjmuje te same opcje, przy czym jako nazwę należy " "podać netdev. Domyślną wartością nat jest 1 dla interfejsów i 0 dla urządzeń." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "device %s" msgstr "urządzenie %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "device: %s, ingress: %s, egress: %s" msgstr "urządzenie: %s, ruch przychodzący: %s, ruch wychodzący: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:289 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:317 msgid "" "disabled is set to \"%s\" — config_get_bool does not recognise that, so the " "section stays enabled" @@ -1333,45 +1471,68 @@ msgstr "" "disabled ma wartość „%s” — funkcja config_get_bool tego nie rozpoznaje, więc " "sekcja pozostaje włączona" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2129 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +msgid "dump did not answer." +msgstr "zrzut nie odpowiedział." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2332 msgid "e.g. %s" msgstr "np. %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1171 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 msgid "fnmatch() pattern supporting * and ? as wildcard characters" msgstr "Wzorzec fnmatch() obsługujący znaki wieloznaczne * oraz ?" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1613 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1816 msgid "get_stats did not answer." msgstr "get_stats nie odpowiedziało." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 msgid "inactive" msgstr "nieaktywne" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "ingress %s, egress %s" msgstr "ruch przychodzący %s, ruch wychodzący %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:282 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:310 msgid "ingress and egress are both 0 — nothing is shaped" msgstr "wejście i wyjście są równe 0 — nic nie jest kształtowane" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "interface %s" msgstr "interfejs %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1155 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1199 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1235 msgid "match" msgstr "dopasuj" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:274 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:292 +msgid "" +"mode \"%s\" is not a CAKE diffserv mode — tc refuses the qdisc, so nothing " +"is shaped although qosify reports the section active" +msgstr "" +"tryb „%s” nie jest trybem diffserv CAKE — tc odrzuca konfigurację qdisc, " +"więc ruch nie jest kształtowany, mimo że qosify wskazuje, iż sekcja jest " +"aktywna" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:291 +msgid "" +"name \"%s\" is dropped by qosify — it takes at most %d characters and no " +"quote" +msgstr "" +"nazwa „%s” została odrzucona przez qosify — może ona zawierać co najwyżej %d " +"znaków i nie może zawierać cudzysłowów" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:290 msgid "" "name is not set — qosify.init sends an empty device name and this section is " "never applied" @@ -1379,7 +1540,7 @@ msgstr "" "nazwa nie jest ustawiona — qosify.init wysyła pustą nazwę urządzenia, a ta " "sekcja nigdy nie jest stosowana" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:278 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:306 msgid "" "nat is not sent: qosify only emits nat/nonat inside the host_isolate branch. " "CAKE does accept flows plus nat — put nat in options to apply it" @@ -1387,7 +1548,7 @@ msgstr "" "nat nie jest wysyłany: qosify emituje nat/nonat tylko w gałęzi host_isolate. " "CAKE akceptuje przepływy i nat — umieść nat w opcjach, aby go zastosować" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:279 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:307 msgid "" "nat only reaches %s — put it in options, or in both ingress_options and " "egress_options" @@ -1403,67 +1564,95 @@ msgstr "" "Interfejs netifd (interfejs konfiguracyjny) lub netdev (urządzenie " "konfiguracyjne) w celu włączenia QoS" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "netifd interface to enable QoS on. Required." msgstr "Interfejs netifd, na którym należy włączyć QoS. Wymagane." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1313 +msgid "never" +msgstr "nigdy" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "no" msgstr "nie" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:284 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:312 msgid "no bandwidth_down or bandwidth — ingress CAKE runs unlimited" msgstr "brak bandwidth_down lub bandwidth — CAKE działa bez ograniczeń" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:283 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:311 msgid "no bandwidth_up or bandwidth — egress CAKE runs unlimited" msgstr "brak bandwidth_up lub bandwidth — wyjście CAKE działa bez ograniczeń" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "none" msgstr "brak" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:281 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:309 msgid "overhead and overhead_encap are ignored unless overhead_type is manual" msgstr "" "overhead i overhead_encap są ignorowane, chyba że overhead_type jest manualny" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:595 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:299 +msgid "overhead_encap \"%s\" is not atm, noatm or ptm — tc refuses the qdisc" +msgstr "" +"overhead_encap „%s” nie jest wartością atm, noatm ani ptm — tc odrzuca qdisc" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:296 +msgid "" +"overhead_type \"%s\" is not one qosify.init knows, so no overhead is set" +msgstr "" +"overhead_type „%s” nie jest rozpoznawany przez qosify.init, dlatego żaden " +"narzut nie został ustawiony" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:302 +msgid "overhead_vlan \"%s\" is not 0, 1 or 2 — qosify.init adds no ether-vlan" +msgstr "" +"overhead_vlan „%s” nie wynosi 0, 1 ani 2 — qosify.init nie dodaje żadnego " +"ether-vlan" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:636 #: applications/luci-app-qosify/root/usr/share/luci/menu.d/luci-app-qosify.json:3 msgid "qosify" msgstr "qosify" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:847 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:890 msgid "" "qosify did not appear on ubus, so its config was not applied — press Reload" msgstr "" "qosify nie pojawiło się w ubus, więc jego konfiguracja nie została " "zastosowana — naciśnij Przeładuj" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:833 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1729 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:876 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1932 msgid "qosify did not come up — check the system log" msgstr "qosify nie uruchomiło się – sprawdź dziennik systemowy" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1610 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1672 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1813 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1875 msgid "qosify is not running. Start from the Overview tab." msgstr "qosify jest nieuruchomione. Rozpocznij od karty „Przegląd”." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1735 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1887 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2090 msgid "qosify is still running — leaving the qdiscs alone" msgstr "qosify nadal działa — qdiscs pozostają nienaruszone" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1253 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1361 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1362 +msgid "qosify package template" +msgstr "Szablon pakietu qosify" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1399 msgid "qosify-status" msgstr "qosify-status" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1885 msgid "qosify-status returned no output." msgstr "qosify-status nie zwrócił żadnego wyniku." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:918 msgid "" "rpcd is not answering for qosify — check the ACL in /usr/share/rpcd/acl.d " "and restart rpcd" @@ -1471,40 +1660,66 @@ msgstr "" "rpcd nie odpowiada na żądania qosify — sprawdź listę ACL w /usr/share/rpcd/" "acl.d i zrestartuj rpcd" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:832 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1609 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1671 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1728 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1734 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1886 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1812 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1874 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1931 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1937 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2089 msgid "rpcd is not answering for qosify, so the service state is unknown." msgstr "rpcd nie odpowiada qosify, więc stan usługi jest nieznany." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:955 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:998 msgid "section name" msgstr "nazwa sekcji" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:953 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:996 msgid "section type" msgstr "typ sekcji" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1529 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1533 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1731 msgid "share" msgstr "udział" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1541 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1256 +msgid "timeout must be a whole number of seconds above 0." +msgstr "" +"Wartość timeout musi być liczbą całkowitą większą od 0 (określającą liczbę " +"sekund)." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1739 msgid "total" msgstr "łącznie" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 msgid "value" msgstr "wartość" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "yes" msgstr "tak" +#~ msgid "Invalid CAKE options can stop qosify starting." +#~ msgstr "Nieprawidłowe opcje CAKE mogą uniemożliwić uruchomienie qosify." + +#~ msgid "" +#~ "Re-runs the daemon's own device pass: every shaped section is looked up " +#~ "again, one whose device now exists is started and one whose device has " +#~ "gone is stopped. Nothing is reported back by the call — the result shows " +#~ "in the Service table on the Overview tab." +#~ msgstr "" +#~ "Ponownie uruchamia własny przebieg urządzenia demona: każda sekcja o " +#~ "określonym kształcie jest ponownie wyszukiwana, uruchamiana jest sekcja, " +#~ "której urządzenie istnieje, a sekcja, której urządzenie zniknęło, jest " +#~ "zatrzymywana. Wywołanie nie zwraca żadnych informacji — wynik jest " +#~ "wyświetlany w tabeli Usługa na karcie Przegląd." + +#~ msgid "Restore qosify defaults" +#~ msgstr "Przywróć domyślne ustawienia qosify" + #~ msgid "%s contains a quote — qosify rejects the whole value" #~ msgstr "%s zawiera cudzysłów — qosify odrzuca całą wartość" diff --git a/luci-app-qosify/po/pt/qosify.po b/luci-app-qosify/po/pt/qosify.po index 8ab77c011..18333a1c9 100644 --- a/luci-app-qosify/po/pt/qosify.po +++ b/luci-app-qosify/po/pt/qosify.po @@ -10,164 +10,217 @@ msgstr "" "PO-Revision-Date: 2026-09-29 12:10+0000\n" "X-Generator: Weblate 2026.10.dev0\n" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1255 +msgid "\"%s\" is not a value qosify accepts for %s." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:483 +msgid "" +"%d class and alias sections — qosify has %d class slots, so %s and the rules " +"using them are dropped" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "%d interface" msgid_plural "%d interfaces" msgstr[0] "" msgstr[1] "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:986 msgid "%d rule" msgid_plural "%d rules" msgstr[0] "" msgstr[1] "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:942 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:985 msgid "%d section" msgid_plural "%d sections" msgstr[0] "" msgstr[1] "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:294 +msgid "" +"%s \"%s\" is not a tc rate — tc refuses the qdisc, so nothing is shaped " +"although qosify reports the section active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:298 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:301 +msgid "%s \"%s\" is not a whole number — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 msgid "%s (current)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 msgid "%s (from bandwidth)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2085 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2288 msgid "" "%s and %s are replaced with the templates shipped by the qosify package, and " "shaping is left disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1809 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2012 msgid "" "%s came back empty although it is %d bytes on disk — refusing to overwrite it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2346 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2549 msgid "%s changed on disk — your unsaved edits are still in the editor." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2249 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2452 msgid "" "%s could not be read — the editor is left empty and will not be saved over " "it." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1833 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2036 msgid "" "%s has changed since this editor was loaded. Saving now discards those " "changes." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1864 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2067 msgid "" "%s is %d bytes on disk but was never loaded into the editor — refusing to " "truncate it. Reload the page first." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:392 msgid "%s is a list in this section — edit %s directly" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1656 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1859 msgid "" "%s is not in the defaults list — qosify does not load it, so the Rules tab " "has no effect" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:286 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:314 msgid "" "%s is set to \"%s\" — qosify converts it with atoi(), so anything but a non-" "zero number means off" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:750 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:793 msgid "%s quick settings" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2069 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2272 msgid "%s uploaded, qosify reloaded." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2103 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2306 msgid "%s was not written: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2106 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2309 msgid "%s was reset but %s was not written: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1945 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2148 msgid "%s, applied (QoS disabled)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1950 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 msgid "" "%s, applied — qosify did not answer on ubus, so shaping could not be checked." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1947 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 msgid "%s, applied." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:459 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:468 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:500 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:509 msgid "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify ignores it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:456 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:497 msgid "" "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify rejects the whole " "config and interface changes are not applied" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:465 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:506 msgid "" "%s: %s \"%s\" is not a codepoint or 0-63 — qosify drops this class and the " "rules using it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:448 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:488 +msgid "" +"%s: %s \"%s\" is not a whole number — qosify.init passes it through atoll(), " +"which keeps only the leading digits" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:486 msgid "" "%s: %s cannot be checked — write it as one plain or fully quoted value, with " "no backslash" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:451 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:492 msgid "" "%s: %s contains shell metacharacters — qosify runs the tc command with sh -c " "as root, so they would break it or be executed" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "(alias)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1304 +msgid "(over file)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 msgid "(this qosify build has no NQB)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2185 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2388 msgid "A config defaults section already exists." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2183 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2386 msgid "A section name may only contain letters, digits and underscores." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:856 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Action" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:899 msgid "Active" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:957 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1162 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1000 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1206 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1240 msgid "Add" msgstr "" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1262 +msgid "Add failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1242 +msgid "" +"Added to the running qosify at once and not saved: an entry expires after " +"its timeout (the defaults timeout when left empty) and a qosify restart " +"drops it. One on a match from the rules file overrides it until then." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +msgid "" +"Adds a line to the editor below; Save & Apply writes it to the rules file, " +"so it is kept." +msgstr "" + #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:85 msgid "Adds atm, noatm or ptm when overhead_type is manual" msgstr "" @@ -184,32 +237,32 @@ msgstr "" msgid "Adds overhead when overhead_type is manual" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:608 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:649 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:780 msgid "Advanced" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "An empty %s stops all shaping. Continue?" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:726 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:769 msgid "Automatic download rate" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:936 msgid "Autostart" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:967 msgid "Autostart state unknown — rpcd did not answer" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 msgid "Available" msgstr "Disponível" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1196 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1334 msgid "Backup" msgstr "" @@ -219,12 +272,12 @@ msgid "" "set" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:716 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:759 msgid "Basic" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:224 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2029 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:240 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2232 msgid "Binary content rejected" msgstr "" @@ -236,7 +289,7 @@ msgstr "" msgid "CAKE egress options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "CAKE egress options, space separated." msgstr "" @@ -244,7 +297,7 @@ msgstr "" msgid "CAKE ingress options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "CAKE ingress options, space separated." msgstr "" @@ -258,104 +311,108 @@ msgid "" "overhead_encap" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "CAKE overhead keyword. Use none if unsure." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:564 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 msgid "Cancel" msgstr "Cancelar" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1356 msgid "Check Devices" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1330 msgid "Choose file…" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1114 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1158 msgid "Classes" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1940 msgid "Cleanup exited with code %d" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1190 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2072 msgid "Clear configuration" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear editor" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to disable autostart" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to enable autostart" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 msgid "Common CAKE options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:604 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:645 msgid "Config" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared, qosify stopped." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1915 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2118 msgid "Config saved" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2042 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2050 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2253 msgid "Config: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:566 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 msgid "Continue" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1391 msgid "Could not read %s: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:648 msgid "Counters" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1627 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1567 +msgid "Counters reset." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1830 msgid "DNS Entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d of %d)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "" "DSCP codepoints: CS0–CS7, AF11–AF43, EF, VA, NQB, LE, DF (NQB needs qosify " "from June 2026; 24.10 and 25.12 do not have it). A raw value from 0 to 63 is " @@ -387,7 +444,7 @@ msgstr "" msgid "DSCP value for priority-marked packets" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "DSCP values" msgstr "" @@ -403,12 +460,12 @@ msgstr "" msgid "Default timeout for dynamically added entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1358 msgid "Defaults" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 msgid "" "Defaults qosify applies when a key is absent — interface: mode diffserv4, " "ingress 1, egress 1, nat 1, host_isolate 1, autorate_ingress 0. device: " @@ -417,21 +474,25 @@ msgid "" "prio_max_avg_pkt_len 0 (disabled)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Description" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Device" msgstr "Dispositivo" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1914 msgid "Device check done." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1714 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1917 msgid "Device check failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:859 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Disabled" msgstr "Desativado" @@ -439,48 +500,52 @@ msgstr "Desativado" msgid "Downlink bandwidth (same format as tc)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Downlink bandwidth, same format as tc. Set just below line speed." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1247 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1393 msgid "Download" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Download bandwidth" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:767 msgid "Download shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1197 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1335 msgid "Download the current files from the router." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1241 +msgid "Dynamic Entries" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "" "Each line has two whitespace separated fields, match and dscp. dscp can be a " "raw value, a codepoint like CS0, or a class name. DNS entries are compared " "in the order in which they are specified, using the first matching entry." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "Egress CAKE options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2223 msgid "Empty file" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 msgid "" "Empty the config editor? Nothing is written until you click Save & Apply." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "" "Empty the rules editor? Nothing is written until you click Save & Apply." msgstr "" @@ -505,94 +570,114 @@ msgstr "" msgid "Enable ingress shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Enabled" msgstr "Ativado" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:858 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 msgid "Enabled — Not Running" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:857 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 msgid "Enabled — Not Shaping (check config)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Encapsulation overhead" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2182 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2385 msgid "Enter a section name." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2156 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2359 msgid "Enter a single IPv4 address (qosify does not accept CIDR)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2159 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2362 msgid "" "Enter a single IPv6 address (qosify does not accept CIDR or a %zone suffix)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2141 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2344 msgid "Enter a value." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1848 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1961 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1261 +msgid "Entry added." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1269 +msgid "Entry removed." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2051 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2164 msgid "Error: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1845 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2048 msgid "Error: No valid config stanzas found." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1763 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1965 msgid "" "Error: invalid characters in bandwidth or options fields. Use alphanumeric, " "spaces, hyphens, dots, colons only." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1798 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2000 msgid "Error: name must be a device or interface name" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1769 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1971 msgid "Error: overhead must be a whole number of bytes" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1970 msgid "Error: overhead_mpu must be a whole number of bytes" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2070 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2001 +msgid "Error: qosify drops a name longer than %d characters" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2273 msgid "Errors:" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 +msgid "" +"Every shaped section is looked up again, one whose device now exists is " +"started and one whose device has gone is stopped. Nothing is reported back " +"by the call — the result shows in the Service table on the Overview tab." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 msgid "File" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1832 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 msgid "File changed on disk" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2224 msgid "File too large (max 64KB)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:667 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 msgid "Files" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Found (empty or invalid)" msgstr "" @@ -600,37 +685,33 @@ msgstr "" msgid "Grant access to LuCI app qosify" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:728 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:771 msgid "Host isolation" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1169 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1216 msgid "IPv4 address, e.g. 1.1.1.1" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1170 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 msgid "IPv6 address, e.g. ff01::1" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "Ingress CAKE options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Interface" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:741 -msgid "Invalid CAKE options can stop qosify starting." -msgstr "" - -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1173 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1220 msgid "Like dns:... but only matches cname entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:228 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:244 msgid "" "Line %d is longer than 1023 characters — the rule loader reads fixed-size " "lines and would split it, comment included" @@ -640,28 +721,29 @@ msgstr "" msgid "List of files with port/IP/host mappings" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 msgid "Loading..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1212 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1350 msgid "Maintenance" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Manual overhead" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "Mapping file syntax" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1692 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1895 msgid "Mapping files reloaded." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:434 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:462 msgid "" "Match not loaded by qosify on line %s — ports 1-65534, one IPv4/IPv6 address " "(no CIDR or %%zone), or dns:, dns_c:" @@ -671,84 +753,93 @@ msgstr "" msgid "Maximum average packet length for marking a flow as priority" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Minimum packet unit (MPU)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Missing" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Modified" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:433 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:461 msgid "" "More than two fields on line %s — qosify reads the rest of the line as the " "DSCP value and skips it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:770 msgid "NAT awareness" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Netdev to enable QoS on. Required." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No CAKE tin statistics." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1628 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1831 msgid "No DNS entries." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:432 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:460 msgid "No DSCP target on line %s — qosify skips single-field lines" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1107 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +msgid "No DSCP traffic yet." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1151 msgid "No classes defined in %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2142 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1257 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2345 msgid "No classes defined. Add classes in the Config tab first." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1192 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1294 +msgid "No dynamic entries." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1328 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1329 msgid "No file selected" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2209 msgid "No files selected." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No output." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 msgid "No per-class counters." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2357 msgid "No spaces or # allowed in patterns or addresses." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2030 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2233 msgid "No valid UCI config stanzas" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:913 msgid "Not Running" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1973 msgid "Note: bandwidth not set — CAKE will run unlimited on that direction." msgstr "" @@ -756,264 +847,279 @@ msgstr "" msgid "Number of packets per second to trigger bulk flow detection" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1161 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1174 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1221 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1238 msgid "Only override the DSCP value if it is zero" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:704 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:747 msgid "" "Only sent with host isolation on — add nat to common CAKE options to force it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1017 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1060 msgid "Options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:730 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:773 msgid "Overhead" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "Overhead preset" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:603 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:644 msgid "Overview" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1834 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2037 msgid "Overwrite" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2007 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2210 msgid "Overwrite config files" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1172 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 msgid "" "POSIX.2 extended regular expression for matching hostnames. Only works if " "dns lookups are passed to qosify via the add_dns_host ubus call." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2353 msgid "Port must be 1-65534 (qosify rejects 65535)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2149 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2349 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2352 msgid "Port must be a number or a range (4500, 5060-5061)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "QoS Enabled" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:721 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 msgid "Queueing mode" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1163 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1209 msgid "Quick Add" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1016 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1059 msgid "Quick Add: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2356 msgid "Range start must not exceed end." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 msgid "Re-check devices" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 msgid "Re-checking devices..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:811 msgid "Re-read the mapping files only" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 msgid "Re-reading the mapping files..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 -msgid "" -"Re-runs the daemon's own device pass: every shaped section is looked up " -"again, one whose device now exists is started and one whose device has gone " -"is stopped. Nothing is reported back by the call — the result shows in the " -"Service table on the Overview tab." +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1351 +msgid "Re-runs the daemon's own device pass." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2024 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2227 msgid "Read error" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Reading and validating files..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1681 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1884 msgid "Reading tc output..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1019 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1062 msgid "Reference" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload Rules" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1695 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1898 msgid "Reload failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1306 +msgid "Remove" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1270 +msgid "Remove failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 +msgid "Replaced with" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "Requires write access." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2086 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1365 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2289 msgid "Reset" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2120 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1554 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "Reset counters" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2323 msgid "Reset failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2084 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2287 msgid "Reset to defaults" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2116 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2319 msgid "Reset to defaults, applied." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Resetting" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Restart" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1203 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1341 msgid "Restore" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 -msgid "Restore qosify defaults" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1359 +msgid "Restore qosify defaults. Shaping is left disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Restoring defaults..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:646 msgid "Rules" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1976 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2179 msgid "Rules saved" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2053 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2056 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2256 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2259 msgid "Rules: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:868 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:911 msgid "Running & Shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:912 msgid "Running — Not Shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:867 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:910 msgid "Running — Shaping Unknown" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1147 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:796 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 msgid "Save & Apply" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1825 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1897 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1924 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1985 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2028 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2100 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2127 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2188 msgid "Save failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Saving" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 msgid "Saving settings and applying..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2186 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2389 msgid "Section %s already exists." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1011 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1054 msgid "" "Section name is the class name that rules and dscp_* values refer to. " "qosify.init reads config alias the same way as config class." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Sending %s to qosify..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Sent to CAKE as atm, noatm or ptm." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "Sent to CAKE as ether-vlan, once per tag." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Sent to CAKE as mpu, in bytes." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Sent to CAKE as overhead, in bytes." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:663 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:706 msgid "Service" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1745 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1948 msgid "Service action failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1817 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 msgid "Settings saved" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:723 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:937 msgid "Shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Size" msgstr "Tamanho" @@ -1021,44 +1127,48 @@ msgstr "Tamanho" msgid "Skip this section" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Start" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:606 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:891 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:647 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:934 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Status" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:855 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:898 msgid "Status Unknown" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:809 msgid "Stop" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1167 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 msgid "TCP single port, or range from to " msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1680 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1883 msgid "The detailed tc output needs write access to this page." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:590 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1309 +msgid "The first %d entries are shown." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:631 msgid "" "The qosify UCI configuration could not be loaded — class and interface lists " "may be incomplete." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1342 msgid "" "The selected files replace the ones on the router and qosify is reloaded." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2008 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2211 msgid "" "The selected files replace the ones on the router and qosify is reloaded. " "Download a backup from this tab first if you need one." @@ -1068,33 +1178,37 @@ msgstr "" msgid "Time below bulk_trigger_pps threshold until a bulk flow mark is removed" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 msgid "Traffic by CAKE Tin" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1401 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1548 msgid "Traffic by Class" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:596 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1549 +msgid "Traffic by DSCP" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:637 msgid "Traffic shaping and DSCP classification via qosify" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1168 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 msgid "UDP single port, or range from to " msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:864 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:866 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:907 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:909 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:968 msgid "Unknown" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 msgid "Unknown class/DSCP target: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "Unticked sets disabled 1 and qosify skips this section." msgstr "" @@ -1102,169 +1216,193 @@ msgstr "" msgid "Uplink bandwidth (same format as tc)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Uplink bandwidth, same format as tc. Set just below line speed." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 msgid "Upload" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1348 msgid "Upload & Apply" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2009 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2212 msgid "Upload and apply" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Upload bandwidth" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2061 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2264 msgid "Upload error: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2078 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2281 msgid "Upload failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 msgid "Upload shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Uploading" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:892 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:935 msgid "Uptime" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "VLAN tags" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Valid" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1951 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 msgid "Warning: %s but qosify is not shaping traffic — check the Status tab." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Working" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "Write empty file" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 msgid "Writing config and reloading qosify..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Writing rules and reloading qosify..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:633 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:675 msgid "" "You have read-only access to this page, so editing and service control are " "disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "" +"Zero qosify's own counters (get_stats)? The CAKE tin counters belong to tc " +"and are kept." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 msgid "active" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1969 msgid "" "bandwidth_down does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1968 msgid "" "bandwidth_up does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1012 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1055 msgid "" "config device takes the same options, with name set to a netdev. nat " "defaults to 1 for interfaces and 0 for devices." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "device %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "device: %s, ingress: %s, egress: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:289 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:317 msgid "" "disabled is set to \"%s\" — config_get_bool does not recognise that, so the " "section stays enabled" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2129 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +msgid "dump did not answer." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2332 msgid "e.g. %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1171 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 msgid "fnmatch() pattern supporting * and ? as wildcard characters" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1613 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1816 msgid "get_stats did not answer." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 msgid "inactive" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "ingress %s, egress %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:282 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:310 msgid "ingress and egress are both 0 — nothing is shaped" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "interface %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1155 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1199 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1235 msgid "match" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:274 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:292 +msgid "" +"mode \"%s\" is not a CAKE diffserv mode — tc refuses the qdisc, so nothing " +"is shaped although qosify reports the section active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:291 +msgid "" +"name \"%s\" is dropped by qosify — it takes at most %d characters and no " +"quote" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:290 msgid "" "name is not set — qosify.init sends an empty device name and this section is " "never applied" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:278 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:306 msgid "" "nat is not sent: qosify only emits nat/nonat inside the host_isolate branch. " "CAKE does accept flows plus nat — put nat in options to apply it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:279 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:307 msgid "" "nat only reaches %s — put it in options, or in both ingress_options and " "egress_options" @@ -1276,99 +1414,128 @@ msgid "" "on" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "netifd interface to enable QoS on. Required." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1313 +msgid "never" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "no" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:284 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:312 msgid "no bandwidth_down or bandwidth — ingress CAKE runs unlimited" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:283 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:311 msgid "no bandwidth_up or bandwidth — egress CAKE runs unlimited" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "none" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:281 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:309 msgid "overhead and overhead_encap are ignored unless overhead_type is manual" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:595 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:299 +msgid "overhead_encap \"%s\" is not atm, noatm or ptm — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:296 +msgid "" +"overhead_type \"%s\" is not one qosify.init knows, so no overhead is set" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:302 +msgid "overhead_vlan \"%s\" is not 0, 1 or 2 — qosify.init adds no ether-vlan" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:636 #: applications/luci-app-qosify/root/usr/share/luci/menu.d/luci-app-qosify.json:3 msgid "qosify" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:847 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:890 msgid "" "qosify did not appear on ubus, so its config was not applied — press Reload" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:833 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1729 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:876 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1932 msgid "qosify did not come up — check the system log" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1610 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1672 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1813 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1875 msgid "qosify is not running. Start from the Overview tab." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1735 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1887 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2090 msgid "qosify is still running — leaving the qdiscs alone" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1253 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1361 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1362 +msgid "qosify package template" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1399 msgid "qosify-status" msgstr "qosify-status" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1885 msgid "qosify-status returned no output." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:918 msgid "" "rpcd is not answering for qosify — check the ACL in /usr/share/rpcd/acl.d " "and restart rpcd" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:832 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1609 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1671 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1728 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1734 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1886 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1812 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1874 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1931 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1937 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2089 msgid "rpcd is not answering for qosify, so the service state is unknown." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:955 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:998 msgid "section name" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:953 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:996 msgid "section type" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1529 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1533 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1731 msgid "share" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1541 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1256 +msgid "timeout must be a whole number of seconds above 0." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1739 msgid "total" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 msgid "value" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "yes" msgstr "" diff --git a/luci-app-qosify/po/pt_BR/qosify.po b/luci-app-qosify/po/pt_BR/qosify.po index fcde41a52..056f83b96 100644 --- a/luci-app-qosify/po/pt_BR/qosify.po +++ b/luci-app-qosify/po/pt_BR/qosify.po @@ -3,172 +3,224 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Language: pt_BR\n" "Content-Transfer-Encoding: 8bit\n" -"Last-Translator: Janderson Vieira Santos " -"\n" +"Last-Translator: LucasMZ \n" "Language-Team: Portuguese (Brazil) \n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"PO-Revision-Date: 2026-10-18 16:40+0000\n" +"PO-Revision-Date: 2026-11-01 06:11+0000\n" "X-Generator: Weblate 2026.11.dev0\n" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1255 +msgid "\"%s\" is not a value qosify accepts for %s." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:483 +msgid "" +"%d class and alias sections — qosify has %d class slots, so %s and the rules " +"using them are dropped" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "%d interface" msgid_plural "%d interfaces" msgstr[0] "" msgstr[1] "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:986 msgid "%d rule" msgid_plural "%d rules" msgstr[0] "" msgstr[1] "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:942 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:985 msgid "%d section" msgid_plural "%d sections" msgstr[0] "" msgstr[1] "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:294 +msgid "" +"%s \"%s\" is not a tc rate — tc refuses the qdisc, so nothing is shaped " +"although qosify reports the section active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:298 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:301 +msgid "%s \"%s\" is not a whole number — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 msgid "%s (current)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 msgid "%s (from bandwidth)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2085 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2288 msgid "" "%s and %s are replaced with the templates shipped by the qosify package, and " "shaping is left disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1809 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2012 msgid "" "%s came back empty although it is %d bytes on disk — refusing to overwrite it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2346 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2549 msgid "%s changed on disk — your unsaved edits are still in the editor." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2249 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2452 msgid "" "%s could not be read — the editor is left empty and will not be saved over " "it." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1833 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2036 msgid "" "%s has changed since this editor was loaded. Saving now discards those " "changes." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1864 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2067 msgid "" "%s is %d bytes on disk but was never loaded into the editor — refusing to " "truncate it. Reload the page first." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:392 msgid "%s is a list in this section — edit %s directly" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1656 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1859 msgid "" "%s is not in the defaults list — qosify does not load it, so the Rules tab " "has no effect" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:286 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:314 msgid "" "%s is set to \"%s\" — qosify converts it with atoi(), so anything but a non-" "zero number means off" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:750 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:793 msgid "%s quick settings" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2069 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2272 msgid "%s uploaded, qosify reloaded." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2103 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2306 msgid "%s was not written: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2106 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2309 msgid "%s was reset but %s was not written: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1945 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2148 msgid "%s, applied (QoS disabled)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1950 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 msgid "" "%s, applied — qosify did not answer on ubus, so shaping could not be checked." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1947 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 msgid "%s, applied." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:459 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:468 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:500 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:509 msgid "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify ignores it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:456 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:497 msgid "" "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify rejects the whole " "config and interface changes are not applied" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:465 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:506 msgid "" "%s: %s \"%s\" is not a codepoint or 0-63 — qosify drops this class and the " "rules using it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:448 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:488 +msgid "" +"%s: %s \"%s\" is not a whole number — qosify.init passes it through atoll(), " +"which keeps only the leading digits" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:486 msgid "" "%s: %s cannot be checked — write it as one plain or fully quoted value, with " "no backslash" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:451 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:492 msgid "" "%s: %s contains shell metacharacters — qosify runs the tc command with sh -c " "as root, so they would break it or be executed" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "(alias)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1304 +msgid "(over file)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 msgid "(this qosify build has no NQB)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2185 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2388 msgid "A config defaults section already exists." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2183 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2386 msgid "A section name may only contain letters, digits and underscores." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:856 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Action" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:899 msgid "Active" msgstr "Ativo" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:957 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1162 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1000 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1206 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1240 msgid "Add" msgstr "Adicionar" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1262 +msgid "Add failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1242 +msgid "" +"Added to the running qosify at once and not saved: an entry expires after " +"its timeout (the defaults timeout when left empty) and a qosify restart " +"drops it. One on a match from the rules file overrides it until then." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +msgid "" +"Adds a line to the editor below; Save & Apply writes it to the rules file, " +"so it is kept." +msgstr "" + #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:85 msgid "Adds atm, noatm or ptm when overhead_type is manual" msgstr "" @@ -185,32 +237,32 @@ msgstr "" msgid "Adds overhead when overhead_type is manual" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:608 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:649 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:780 msgid "Advanced" msgstr "Avançada" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "An empty %s stops all shaping. Continue?" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:726 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:769 msgid "Automatic download rate" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:936 msgid "Autostart" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:967 msgid "Autostart state unknown — rpcd did not answer" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 msgid "Available" msgstr "Disponível" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1196 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1334 msgid "Backup" msgstr "Backup" @@ -220,12 +272,12 @@ msgid "" "set" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:716 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:759 msgid "Basic" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:224 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2029 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:240 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2232 msgid "Binary content rejected" msgstr "" @@ -237,7 +289,7 @@ msgstr "" msgid "CAKE egress options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "CAKE egress options, space separated." msgstr "" @@ -245,7 +297,7 @@ msgstr "" msgid "CAKE ingress options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "CAKE ingress options, space separated." msgstr "" @@ -259,104 +311,108 @@ msgid "" "overhead_encap" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "CAKE overhead keyword. Use none if unsure." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:564 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 msgid "Cancel" msgstr "Cancelar" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1356 msgid "Check Devices" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1330 msgid "Choose file…" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1114 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1158 msgid "Classes" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1940 msgid "Cleanup exited with code %d" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1190 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear" msgstr "Limpar" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2072 msgid "Clear configuration" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear editor" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to disable autostart" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to enable autostart" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 msgid "Common CAKE options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:604 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:645 msgid "Config" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared, qosify stopped." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1915 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2118 msgid "Config saved" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2042 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2050 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2253 msgid "Config: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:566 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 msgid "Continue" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1391 msgid "Could not read %s: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:648 msgid "Counters" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1627 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1567 +msgid "Counters reset." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1830 msgid "DNS Entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d of %d)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "" "DSCP codepoints: CS0–CS7, AF11–AF43, EF, VA, NQB, LE, DF (NQB needs qosify " "from June 2026; 24.10 and 25.12 do not have it). A raw value from 0 to 63 is " @@ -388,7 +444,7 @@ msgstr "" msgid "DSCP value for priority-marked packets" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "DSCP values" msgstr "" @@ -404,12 +460,12 @@ msgstr "" msgid "Default timeout for dynamically added entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1358 msgid "Defaults" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 msgid "" "Defaults qosify applies when a key is absent — interface: mode diffserv4, " "ingress 1, egress 1, nat 1, host_isolate 1, autorate_ingress 0. device: " @@ -418,21 +474,25 @@ msgid "" "prio_max_avg_pkt_len 0 (disabled)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Description" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Device" msgstr "Dispositivo" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1914 msgid "Device check done." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1714 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1917 msgid "Device check failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:859 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Disabled" msgstr "Desativado" @@ -440,48 +500,52 @@ msgstr "Desativado" msgid "Downlink bandwidth (same format as tc)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Downlink bandwidth, same format as tc. Set just below line speed." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1247 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1393 msgid "Download" msgstr "Baixar" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Download bandwidth" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:767 msgid "Download shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1197 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1335 msgid "Download the current files from the router." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1241 +msgid "Dynamic Entries" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "" "Each line has two whitespace separated fields, match and dscp. dscp can be a " "raw value, a codepoint like CS0, or a class name. DNS entries are compared " "in the order in which they are specified, using the first matching entry." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "Egress CAKE options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2223 msgid "Empty file" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 msgid "" "Empty the config editor? Nothing is written until you click Save & Apply." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "" "Empty the rules editor? Nothing is written until you click Save & Apply." msgstr "" @@ -506,94 +570,114 @@ msgstr "" msgid "Enable ingress shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Enabled" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:858 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 msgid "Enabled — Not Running" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:857 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 msgid "Enabled — Not Shaping (check config)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Encapsulation overhead" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2182 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2385 msgid "Enter a section name." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2156 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2359 msgid "Enter a single IPv4 address (qosify does not accept CIDR)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2159 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2362 msgid "" "Enter a single IPv6 address (qosify does not accept CIDR or a %zone suffix)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2141 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2344 msgid "Enter a value." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1848 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1961 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1261 +msgid "Entry added." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1269 +msgid "Entry removed." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2051 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2164 msgid "Error: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1845 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2048 msgid "Error: No valid config stanzas found." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1763 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1965 msgid "" "Error: invalid characters in bandwidth or options fields. Use alphanumeric, " "spaces, hyphens, dots, colons only." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1798 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2000 msgid "Error: name must be a device or interface name" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1769 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1971 msgid "Error: overhead must be a whole number of bytes" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1970 msgid "Error: overhead_mpu must be a whole number of bytes" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2070 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2001 +msgid "Error: qosify drops a name longer than %d characters" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2273 msgid "Errors:" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 +msgid "" +"Every shaped section is looked up again, one whose device now exists is " +"started and one whose device has gone is stopped. Nothing is reported back " +"by the call — the result shows in the Service table on the Overview tab." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 msgid "File" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1832 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 msgid "File changed on disk" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2224 msgid "File too large (max 64KB)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:667 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 msgid "Files" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Found (empty or invalid)" msgstr "" @@ -601,37 +685,33 @@ msgstr "" msgid "Grant access to LuCI app qosify" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:728 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:771 msgid "Host isolation" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1169 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1216 msgid "IPv4 address, e.g. 1.1.1.1" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1170 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 msgid "IPv6 address, e.g. ff01::1" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "Ingress CAKE options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Interface" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:741 -msgid "Invalid CAKE options can stop qosify starting." -msgstr "" - -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1173 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1220 msgid "Like dns:... but only matches cname entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:228 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:244 msgid "" "Line %d is longer than 1023 characters — the rule loader reads fixed-size " "lines and would split it, comment included" @@ -641,28 +721,29 @@ msgstr "" msgid "List of files with port/IP/host mappings" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 msgid "Loading..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1212 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1350 msgid "Maintenance" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Manual overhead" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "Mapping file syntax" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1692 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1895 msgid "Mapping files reloaded." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:434 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:462 msgid "" "Match not loaded by qosify on line %s — ports 1-65534, one IPv4/IPv6 address " "(no CIDR or %%zone), or dns:, dns_c:" @@ -672,84 +753,93 @@ msgstr "" msgid "Maximum average packet length for marking a flow as priority" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Minimum packet unit (MPU)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Missing" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Modified" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:433 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:461 msgid "" "More than two fields on line %s — qosify reads the rest of the line as the " "DSCP value and skips it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:770 msgid "NAT awareness" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Netdev to enable QoS on. Required." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No CAKE tin statistics." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1628 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1831 msgid "No DNS entries." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:432 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:460 msgid "No DSCP target on line %s — qosify skips single-field lines" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1107 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +msgid "No DSCP traffic yet." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1151 msgid "No classes defined in %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2142 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1257 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2345 msgid "No classes defined. Add classes in the Config tab first." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1192 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1294 +msgid "No dynamic entries." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1328 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1329 msgid "No file selected" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2209 msgid "No files selected." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No output." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 msgid "No per-class counters." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2357 msgid "No spaces or # allowed in patterns or addresses." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2030 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2233 msgid "No valid UCI config stanzas" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:913 msgid "Not Running" msgstr "Não está em execução" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1973 msgid "Note: bandwidth not set — CAKE will run unlimited on that direction." msgstr "" @@ -757,264 +847,279 @@ msgstr "" msgid "Number of packets per second to trigger bulk flow detection" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1161 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1174 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1221 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1238 msgid "Only override the DSCP value if it is zero" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:704 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:747 msgid "" "Only sent with host isolation on — add nat to common CAKE options to force it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1017 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1060 msgid "Options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:730 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:773 msgid "Overhead" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "Overhead preset" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:603 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:644 msgid "Overview" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1834 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2037 msgid "Overwrite" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2007 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2210 msgid "Overwrite config files" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1172 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 msgid "" "POSIX.2 extended regular expression for matching hostnames. Only works if " "dns lookups are passed to qosify via the add_dns_host ubus call." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2353 msgid "Port must be 1-65534 (qosify rejects 65535)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2149 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2349 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2352 msgid "Port must be a number or a range (4500, 5060-5061)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "QoS Enabled" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:721 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 msgid "Queueing mode" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1163 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1209 msgid "Quick Add" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1016 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1059 msgid "Quick Add: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2356 msgid "Range start must not exceed end." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 msgid "Re-check devices" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 msgid "Re-checking devices..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:811 msgid "Re-read the mapping files only" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 msgid "Re-reading the mapping files..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 -msgid "" -"Re-runs the daemon's own device pass: every shaped section is looked up " -"again, one whose device now exists is started and one whose device has gone " -"is stopped. Nothing is reported back by the call — the result shows in the " -"Service table on the Overview tab." +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1351 +msgid "Re-runs the daemon's own device pass." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2024 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2227 msgid "Read error" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Reading and validating files..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1681 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1884 msgid "Reading tc output..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1019 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1062 msgid "Reference" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload Rules" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1695 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1898 msgid "Reload failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1306 +msgid "Remove" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1270 +msgid "Remove failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 +msgid "Replaced with" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "Requires write access." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2086 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1365 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2289 msgid "Reset" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2120 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1554 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "Reset counters" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2323 msgid "Reset failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2084 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2287 msgid "Reset to defaults" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2116 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2319 msgid "Reset to defaults, applied." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Resetting" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Restart" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1203 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1341 msgid "Restore" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 -msgid "Restore qosify defaults" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1359 +msgid "Restore qosify defaults. Shaping is left disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Restoring defaults..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:646 msgid "Rules" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1976 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2179 msgid "Rules saved" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2053 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2056 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2256 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2259 msgid "Rules: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:868 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:911 msgid "Running & Shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:912 msgid "Running — Not Shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:867 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:910 msgid "Running — Shaping Unknown" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1147 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:796 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 msgid "Save & Apply" msgstr "Salvar & Aplicar" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1825 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1897 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1924 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1985 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2028 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2100 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2127 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2188 msgid "Save failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Saving" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 msgid "Saving settings and applying..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2186 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2389 msgid "Section %s already exists." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1011 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1054 msgid "" "Section name is the class name that rules and dscp_* values refer to. " "qosify.init reads config alias the same way as config class." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Sending %s to qosify..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Sent to CAKE as atm, noatm or ptm." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "Sent to CAKE as ether-vlan, once per tag." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Sent to CAKE as mpu, in bytes." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Sent to CAKE as overhead, in bytes." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:663 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:706 msgid "Service" msgstr "Serviço" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1745 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1948 msgid "Service action failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1817 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 msgid "Settings saved" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:723 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:937 msgid "Shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Size" msgstr "Tamanho" @@ -1022,44 +1127,48 @@ msgstr "Tamanho" msgid "Skip this section" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Start" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:606 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:891 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:647 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:934 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Status" -msgstr "Status" +msgstr "Estado" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:855 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:898 msgid "Status Unknown" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:809 msgid "Stop" msgstr "Parar" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1167 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 msgid "TCP single port, or range from to " msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1680 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1883 msgid "The detailed tc output needs write access to this page." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:590 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1309 +msgid "The first %d entries are shown." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:631 msgid "" "The qosify UCI configuration could not be loaded — class and interface lists " "may be incomplete." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1342 msgid "" "The selected files replace the ones on the router and qosify is reloaded." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2008 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2211 msgid "" "The selected files replace the ones on the router and qosify is reloaded. " "Download a backup from this tab first if you need one." @@ -1069,33 +1178,37 @@ msgstr "" msgid "Time below bulk_trigger_pps threshold until a bulk flow mark is removed" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 msgid "Traffic by CAKE Tin" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1401 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1548 msgid "Traffic by Class" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:596 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1549 +msgid "Traffic by DSCP" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:637 msgid "Traffic shaping and DSCP classification via qosify" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1168 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 msgid "UDP single port, or range from to " msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:864 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:866 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:907 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:909 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:968 msgid "Unknown" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 msgid "Unknown class/DSCP target: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "Unticked sets disabled 1 and qosify skips this section." msgstr "" @@ -1103,169 +1216,193 @@ msgstr "" msgid "Uplink bandwidth (same format as tc)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Uplink bandwidth, same format as tc. Set just below line speed." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 msgid "Upload" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1348 msgid "Upload & Apply" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2009 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2212 msgid "Upload and apply" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Upload bandwidth" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2061 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2264 msgid "Upload error: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2078 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2281 msgid "Upload failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 msgid "Upload shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Uploading" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:892 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:935 msgid "Uptime" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "VLAN tags" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Valid" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1951 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 msgid "Warning: %s but qosify is not shaping traffic — check the Status tab." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Working" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "Write empty file" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 msgid "Writing config and reloading qosify..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Writing rules and reloading qosify..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:633 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:675 msgid "" "You have read-only access to this page, so editing and service control are " "disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "" +"Zero qosify's own counters (get_stats)? The CAKE tin counters belong to tc " +"and are kept." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 msgid "active" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1969 msgid "" "bandwidth_down does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1968 msgid "" "bandwidth_up does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1012 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1055 msgid "" "config device takes the same options, with name set to a netdev. nat " "defaults to 1 for interfaces and 0 for devices." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "device %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "device: %s, ingress: %s, egress: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:289 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:317 msgid "" "disabled is set to \"%s\" — config_get_bool does not recognise that, so the " "section stays enabled" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2129 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +msgid "dump did not answer." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2332 msgid "e.g. %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1171 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 msgid "fnmatch() pattern supporting * and ? as wildcard characters" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1613 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1816 msgid "get_stats did not answer." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 msgid "inactive" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "ingress %s, egress %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:282 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:310 msgid "ingress and egress are both 0 — nothing is shaped" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "interface %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1155 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1199 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1235 msgid "match" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:274 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:292 +msgid "" +"mode \"%s\" is not a CAKE diffserv mode — tc refuses the qdisc, so nothing " +"is shaped although qosify reports the section active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:291 +msgid "" +"name \"%s\" is dropped by qosify — it takes at most %d characters and no " +"quote" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:290 msgid "" "name is not set — qosify.init sends an empty device name and this section is " "never applied" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:278 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:306 msgid "" "nat is not sent: qosify only emits nat/nonat inside the host_isolate branch. " "CAKE does accept flows plus nat — put nat in options to apply it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:279 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:307 msgid "" "nat only reaches %s — put it in options, or in both ingress_options and " "egress_options" @@ -1277,99 +1414,128 @@ msgid "" "on" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "netifd interface to enable QoS on. Required." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1313 +msgid "never" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "no" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:284 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:312 msgid "no bandwidth_down or bandwidth — ingress CAKE runs unlimited" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:283 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:311 msgid "no bandwidth_up or bandwidth — egress CAKE runs unlimited" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "none" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:281 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:309 msgid "overhead and overhead_encap are ignored unless overhead_type is manual" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:595 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:299 +msgid "overhead_encap \"%s\" is not atm, noatm or ptm — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:296 +msgid "" +"overhead_type \"%s\" is not one qosify.init knows, so no overhead is set" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:302 +msgid "overhead_vlan \"%s\" is not 0, 1 or 2 — qosify.init adds no ether-vlan" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:636 #: applications/luci-app-qosify/root/usr/share/luci/menu.d/luci-app-qosify.json:3 msgid "qosify" msgstr "qosify" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:847 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:890 msgid "" "qosify did not appear on ubus, so its config was not applied — press Reload" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:833 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1729 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:876 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1932 msgid "qosify did not come up — check the system log" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1610 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1672 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1813 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1875 msgid "qosify is not running. Start from the Overview tab." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1735 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1887 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2090 msgid "qosify is still running — leaving the qdiscs alone" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1253 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1361 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1362 +msgid "qosify package template" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1399 msgid "qosify-status" msgstr "qosify-status" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1885 msgid "qosify-status returned no output." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:918 msgid "" "rpcd is not answering for qosify — check the ACL in /usr/share/rpcd/acl.d " "and restart rpcd" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:832 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1609 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1671 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1728 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1734 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1886 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1812 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1874 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1931 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1937 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2089 msgid "rpcd is not answering for qosify, so the service state is unknown." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:955 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:998 msgid "section name" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:953 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:996 msgid "section type" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1529 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1533 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1731 msgid "share" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1541 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1256 +msgid "timeout must be a whole number of seconds above 0." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1739 msgid "total" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 msgid "value" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "yes" msgstr "" diff --git a/luci-app-qosify/po/ro/qosify.po b/luci-app-qosify/po/ro/qosify.po new file mode 100644 index 000000000..4517ed353 --- /dev/null +++ b/luci-app-qosify/po/ro/qosify.po @@ -0,0 +1,1563 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: ro\n" +"Content-Transfer-Encoding: 8bit\n" +"Last-Translator: Martin Olmer \n" +"Language-Team: Romanian \n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" +"PO-Revision-Date: 2026-11-04 21:42+0000\n" +"X-Generator: Weblate 2026.11.1.dev0\n" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1302 +msgid "\"%s\" is not a value qosify accepts for %s." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:521 +msgid "" +"%d class and alias sections — qosify has %d class slots, so %s and the rules " +"using them are dropped" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:970 +msgid "%d interface" +msgid_plural "%d interfaces" +msgstr[0] "" +msgstr[1] "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1031 +msgid "%d rule" +msgid_plural "%d rules" +msgstr[0] "" +msgstr[1] "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1030 +msgid "%d section" +msgid_plural "%d sections" +msgstr[0] "" +msgstr[1] "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:326 +msgid "" +"%s \"%s\" is not a tc rate — tc refuses the qdisc, so nothing is shaped " +"although qosify reports the section active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:330 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:333 +msgid "%s \"%s\" is not a whole number — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:769 +msgid "%s (current)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:787 +msgid "%s (from bandwidth)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2339 +msgid "" +"%s and %s are replaced with the templates shipped by the qosify package, and " +"shaping is left disabled." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2063 +msgid "" +"%s came back empty although it is %d bytes on disk — refusing to overwrite it" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2600 +msgid "%s changed on disk — your unsaved edits are still in the editor." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2503 +msgid "" +"%s could not be read — the editor is left empty and will not be saved over " +"it." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2087 +msgid "" +"%s has changed since this editor was loaded. Saving now discards those " +"changes." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2118 +msgid "" +"%s is %d bytes on disk but was never loaded into the editor — refusing to " +"truncate it. Reload the page first." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:426 +msgid "%s is a list in this section — edit %s directly" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1908 +msgid "" +"%s is not in the defaults list — qosify does not load it, so the Rules tab " +"has no effect" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:432 +msgid "%s is not one plain statement in this section — edit %s directly" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:347 +msgid "" +"%s is set to \"%s\" — qosify converts it with atoi(), so anything but a non-" +"zero number means off" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:837 +msgid "%s quick settings" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2323 +msgid "%s uploaded, qosify reloaded." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2357 +msgid "%s was not written: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2360 +msgid "%s was reset but %s was not written: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 +msgid "%s, applied (QoS disabled)." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2204 +msgid "" +"%s, applied — qosify did not answer on ubus, so shaping could not be checked." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2201 +msgid "%s, applied." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:538 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:547 +msgid "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify ignores it" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:535 +msgid "" +"%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify rejects the whole " +"config and interface changes are not applied" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:544 +msgid "" +"%s: %s \"%s\" is not a codepoint or 0-63 — qosify drops this class and the " +"rules using it" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:526 +msgid "" +"%s: %s \"%s\" is not a whole number — qosify.init passes it through atoll(), " +"which keeps only the leading digits" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:524 +msgid "" +"%s: %s cannot be checked — write it as one plain or fully quoted value, with " +"no backslash" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:530 +msgid "" +"%s: %s contains shell metacharacters — qosify runs the tc command with sh -c " +"as root, so they would break it or be executed" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1907 +msgid "%s: multiqueue is set, but %s has one queue, so qosify uses plain cake" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1199 +msgid "(alias)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1351 +msgid "(over file)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:501 +msgid "(this qosify build has no NQB)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2439 +msgid "A config defaults section already exists." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2437 +msgid "A section name may only contain letters, digits and underscores." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1399 +msgid "Action" +msgstr "Acţiune" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 +msgid "Active" +msgstr "Activ" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1045 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1253 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1287 +msgid "Add" +msgstr "Adăugați" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1309 +msgid "Add failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1289 +msgid "" +"Added to the running qosify at once and not saved: an entry expires after " +"its timeout (the defaults timeout when left empty) and a qosify restart " +"drops it. One on a match from the rules file overrides it until then." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1257 +msgid "" +"Adds a line to the editor below; Save & Apply writes it to the rules file, " +"so it is kept." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:86 +msgid "Adds atm, noatm or ptm when overhead_type is manual" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:88 +msgid "Adds ether-vlan once per level (1 or 2)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:87 +msgid "Adds mpu " +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:85 +msgid "Adds overhead when overhead_type is manual" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:693 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:824 +msgid "Advanced" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2124 +msgid "An empty %s stops all shaping. Continue?" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:813 +msgid "Automatic download rate" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 +msgid "Autostart" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1012 +msgid "Autostart state unknown — rpcd did not answer" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:971 +msgid "Available" +msgstr "Disponibile" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1381 +msgid "Backup" +msgstr "Backup" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:76 +msgid "" +"Bandwidth for both directions, where bandwidth_up or bandwidth_down is not " +"set" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:803 +msgid "Basic" +msgstr "De bază" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:272 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2283 +msgid "Binary content rejected" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:79 +msgid "CAKE diffserv mode" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:90 +msgid "CAKE egress options" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:826 +msgid "CAKE egress options, space separated." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:89 +msgid "CAKE ingress options" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:825 +msgid "CAKE ingress options, space separated." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:91 +msgid "CAKE options for ingress + egress" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:84 +msgid "" +"CAKE overhead keyword added to options; manual uses overhead and " +"overhead_encap" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:818 +msgid "CAKE overhead keyword. Use none if unsure." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:648 +msgid "Cancel" +msgstr "Anulare" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1403 +msgid "Check Devices" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1377 +msgid "Choose file…" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +msgid "Classes" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1989 +msgid "Cleanup exited with code %d" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1237 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2244 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2250 +msgid "Clear" +msgstr "Curățare" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2123 +msgid "Clear configuration" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2244 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2250 +msgid "Clear editor" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1017 +msgid "Click to disable autostart" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1017 +msgid "Click to enable autostart" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:827 +msgid "Common CAKE options" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:689 +msgid "Config" +msgstr "Configurare" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2148 +msgid "Config cleared, qosify stopped." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2148 +msgid "Config cleared." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2169 +msgid "Config saved" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2296 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2304 +msgid "Config: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:650 +msgid "Continue" +msgstr "Continuare" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1438 +msgid "Could not read %s: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:692 +msgid "Counters" +msgstr "Contoare" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1614 +msgid "Counters reset." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1599 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1877 +msgid "DNS Entries" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1557 +msgid "DNS Entries (%d of %d)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1557 +msgid "DNS Entries (%d)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1110 +msgid "" +"DSCP codepoints: CS0–CS7, AF11–AF43, EF, VA, NQB, LE, DF (NQB needs qosify " +"from June 2026; 24.10 and 25.12 do not have it). A raw value from 0 to 63 is " +"accepted too, and any dscp_* value may also name a class. Prefix with + to " +"override only when the DSCP field is zero (as described from qosify c698349; " +"24.10 and 25.12 do not honour it)." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:63 +msgid "DSCP value for ICMP packets" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:65 +msgid "DSCP value for bulk-marked packets" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:71 +msgid "DSCP value for egress" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:70 +msgid "DSCP value for ingress" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:69 +msgid "DSCP value for ingress and egress, where they are not set" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:64 +msgid "DSCP value for priority-marked packets" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1110 +msgid "DSCP values" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:61 +msgid "Default DSCP value for TCP packets" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:62 +msgid "Default DSCP value for UDP packets" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:60 +msgid "Default timeout for dynamically added entries" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1111 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1405 +msgid "Defaults" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1111 +msgid "" +"Defaults qosify applies when a key is absent — interface: mode diffserv4, " +"ingress 1, egress 1, nat 1, host_isolate 1, autorate_ingress 0, multiqueue " +"0. device: identical except nat 0. defaults: timeout 3600, dscp_default_tcp/" +"udp CS0, dscp_prio/dscp_bulk/dscp_icmp unset, bulk_trigger_pps/" +"bulk_trigger_timeout/prio_max_avg_pkt_len 0 (disabled)." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1399 +msgid "Description" +msgstr "Descriere" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:805 +msgid "Device" +msgstr "Dispozitiv" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1963 +msgid "Device check done." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1966 +msgid "Device check failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:947 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:969 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1018 +msgid "Disabled" +msgstr "Dezactivat" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:75 +msgid "Downlink bandwidth (same format as tc)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 +msgid "Downlink bandwidth, same format as tc. Set just below line speed." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1383 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1440 +msgid "Download" +msgstr "Descărcare" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 +msgid "Download bandwidth" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:811 +msgid "Download shaping" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1382 +msgid "Download the current files from the router." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1288 +msgid "Dynamic Entries" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1260 +msgid "" +"Each line has two whitespace separated fields, match and dscp. dscp can be a " +"raw value, a codepoint like CS0, or a class name. DNS entries are compared " +"in the order in which they are specified, using the first matching entry." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:826 +msgid "Egress CAKE options" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2274 +msgid "Empty file" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2244 +msgid "" +"Empty the config editor? Nothing is written until you click Save & Apply." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2250 +msgid "" +"Empty the rules editor? Nothing is written until you click Save & Apply." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:80 +msgid "Enable CAKE NAT host detection via conntrack" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:82 +msgid "Enable CAKE automatic rate estimation for ingress" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:81 +msgid "Enable CAKE host isolation" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:78 +msgid "Enable egress shaping" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:77 +msgid "Enable ingress shaping" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:969 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1018 +msgid "Enabled" +msgstr "Activat" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:946 +msgid "Enabled — Not Running" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 +msgid "Enabled — Not Shaping (check config)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:798 +msgid "Encapsulation overhead" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2436 +msgid "Enter a section name." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2410 +msgid "Enter a single IPv4 address (qosify does not accept CIDR)." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2413 +msgid "" +"Enter a single IPv6 address (qosify does not accept CIDR or a %zone suffix)." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2395 +msgid "Enter a value." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1029 +msgid "Entries" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1308 +msgid "Entry added." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1316 +msgid "Entry removed." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2102 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2215 +msgid "Error: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2099 +msgid "Error: No valid config stanzas found." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2014 +msgid "" +"Error: invalid characters in bandwidth or options fields. Use alphanumeric, " +"spaces, hyphens, dots, colons only." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2051 +msgid "Error: name must be a device or interface name" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 +msgid "Error: overhead must be a whole number of bytes" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2019 +msgid "Error: overhead_mpu must be a whole number of bytes" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2052 +msgid "Error: qosify drops a name longer than %d characters" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2324 +msgid "Errors:" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1400 +msgid "" +"Every shaped section is looked up again, one whose device now exists is " +"started and one whose device has gone is stopped. Nothing is reported back " +"by the call — the result shows in the Service table on the Overview tab." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1029 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1383 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1390 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1407 +msgid "File" +msgstr "Fișier" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2086 +msgid "File changed on disk" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2275 +msgid "File too large (max 64KB)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 +msgid "Files" +msgstr "Fişiere" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1026 +msgid "Found (empty or invalid)" +msgstr "" + +#: applications/luci-app-qosify/root/usr/share/rpcd/acl.d/luci-app-qosify.json:3 +msgid "Grant access to LuCI app qosify" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:815 +msgid "Host isolation" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1247 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1263 +msgid "IPv4 address, e.g. 1.1.1.1" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1247 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1264 +msgid "IPv6 address, e.g. ff01::1" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:825 +msgid "Ingress CAKE options" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:805 +msgid "Interface" +msgstr "Interfață" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1267 +msgid "Like dns:... but only matches cname entries" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:276 +msgid "" +"Line %d is longer than 1023 characters — the rule loader reads fixed-size " +"lines and would split it, comment included" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:59 +msgid "List of files with port/IP/host mappings" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1292 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1597 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1599 +msgid "Loading..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1397 +msgid "Maintenance" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:797 +msgid "Manual overhead" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1260 +msgid "Mapping file syntax" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1944 +msgid "Mapping files reloaded." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:500 +msgid "" +"Match not loaded by qosify on line %s — ports 1-%d, one IPv4/IPv6 address " +"(no CIDR or %%zone), or dns:, dns_c:, dns_q:" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:66 +msgid "Maximum average packet length for marking a flow as priority" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:821 +msgid "Minimum packet unit (MPU)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:971 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1026 +msgid "Missing" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1029 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1383 +msgid "Modified" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:499 +msgid "" +"More than two fields on line %s — qosify reads the rest of the line as the " +"DSCP value and skips it" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:816 +msgid "Multiqueue CAKE" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:814 +msgid "NAT awareness" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:805 +msgid "Netdev to enable QoS on. Required." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1834 +msgid "No CAKE tin statistics." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1878 +msgid "No DNS entries." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:498 +msgid "No DSCP target on line %s — qosify skips single-field lines" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1818 +msgid "No DSCP traffic yet." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1197 +msgid "No classes defined in %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1304 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2396 +msgid "No classes defined. Add classes in the Config tab first." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1341 +msgid "No dynamic entries." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1375 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1376 +msgid "No file selected" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2260 +msgid "No files selected." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1834 +msgid "No output." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1814 +msgid "No per-class counters." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2408 +msgid "No spaces or # allowed in patterns or addresses." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2284 +msgid "No valid UCI config stanzas" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:958 +msgid "Not Running" +msgstr "Nu funcționează" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2022 +msgid "Note: bandwidth not set — CAKE will run unlimited on that direction." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:67 +msgid "Number of packets per second to trigger bulk flow detection" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1252 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1268 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1285 +msgid "Only override the DSCP value if it is zero" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:791 +msgid "" +"Only sent with host isolation on — add nat to common CAKE options to force it" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1106 +msgid "Options" +msgstr "Opțiuni" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:817 +msgid "Overhead" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:818 +msgid "Overhead preset" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:688 +msgid "Overview" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2088 +msgid "Overwrite" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2261 +msgid "Overwrite config files" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1266 +msgid "" +"POSIX.2 extended regular expression for matching hostnames. Only works if " +"dns lookups are passed to qosify via the add_dns_host ubus call." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2404 +msgid "Port must be 1-%d." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2400 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2403 +msgid "Port must be a number or a range (4500, 5060-5061)." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:804 +msgid "QoS Enabled" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 +msgid "Queueing mode" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1256 +msgid "Quick Add" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1105 +msgid "Quick Add: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2407 +msgid "Range start must not exceed end." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1400 +msgid "Re-check devices" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1959 +msgid "Re-checking devices..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:855 +msgid "Re-read the mapping files only" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1942 +msgid "Re-reading the mapping files..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1398 +msgid "Re-runs the daemon's own device pass." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2278 +msgid "Read error" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2289 +msgid "Reading and validating files..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1933 +msgid "Reading tc output..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1108 +msgid "Reference" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:852 +msgid "Reload" +msgstr "Reîncărcare" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:852 +msgid "Reload Rules" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1947 +msgid "Reload failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 +msgid "Remove" +msgstr "Eliminați" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1317 +msgid "Remove failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1407 +msgid "Replaced with" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1834 +msgid "Requires write access." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1412 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2340 +msgid "Reset" +msgstr "Resetați" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1601 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1610 +msgid "Reset counters" +msgstr "Resetați contoarele" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1615 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2374 +msgid "Reset failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2338 +msgid "Reset to defaults" +msgstr "Resetați la valorile implicite" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2370 +msgid "Reset to defaults, applied." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2349 +msgid "Resetting" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:851 +msgid "Restart" +msgstr "Reporniți" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1388 +msgid "Restore" +msgstr "Restaurează" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1406 +msgid "Restore qosify defaults. Shaping is left disabled." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2349 +msgid "Restoring defaults..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:690 +msgid "Rules" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2230 +msgid "Rules saved" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2307 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2310 +msgid "Rules: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:956 +msgid "Running & Shaping" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:957 +msgid "Running — Not Shaping" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:955 +msgid "Running — Shaping Unknown" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:840 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1238 +msgid "Save & Apply" +msgstr "Salvați și aplicați" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2079 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2151 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2178 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2239 +msgid "Save failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2057 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2160 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2226 +msgid "Saving" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2057 +msgid "Saving settings and applying..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2440 +msgid "Section %s already exists." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1100 +msgid "" +"Section name is the class name that rules and dscp_* values refer to. qosify." +"init reads config alias the same way as config class." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1976 +msgid "Sending %s to qosify..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:798 +msgid "Sent to CAKE as atm, noatm or ptm." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:822 +msgid "Sent to CAKE as ether-vlan, once per tag." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:821 +msgid "Sent to CAKE as mpu, in bytes." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:797 +msgid "Sent to CAKE as overhead, in bytes." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:750 +msgid "Service" +msgstr "Serviciul" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1997 +msgid "Service action failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2071 +msgid "Settings saved" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:810 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:982 +msgid "Shaping" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1029 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1383 +msgid "Size" +msgstr "Dimensiune" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:73 +msgid "Skip this section" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:851 +msgid "Start" +msgstr "Porniți" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:691 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:979 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1029 +msgid "Status" +msgstr "Status" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 +msgid "Status Unknown" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:853 +msgid "Stop" +msgstr "Oprire" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1261 +msgid "TCP single port, or range from to " +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1932 +msgid "The detailed tc output needs write access to this page." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1356 +msgid "The first %d entries are shown." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:675 +msgid "" +"The qosify UCI configuration could not be loaded — class and interface lists " +"may be incomplete." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1389 +msgid "" +"The selected files replace the ones on the router and qosify is reloaded." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2262 +msgid "" +"The selected files replace the ones on the router and qosify is reloaded. " +"Download a backup from this tab first if you need one." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:68 +msgid "Time below bulk_trigger_pps threshold until a bulk flow mark is removed" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1597 +msgid "Traffic by CAKE Tin" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1595 +msgid "Traffic by Class" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1596 +msgid "Traffic by DSCP" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:681 +msgid "Traffic shaping and DSCP classification via qosify" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1262 +msgid "UDP single port, or range from to " +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:952 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:954 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1013 +msgid "Unknown" +msgstr "Necunoscut" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:501 +msgid "Unknown class/DSCP target: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:804 +msgid "Unticked sets disabled 1 and qosify skips this section." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:74 +msgid "Uplink bandwidth (same format as tc)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:806 +msgid "Uplink bandwidth, same format as tc. Set just below line speed." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1390 +msgid "Upload" +msgstr "Încărcați" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1395 +msgid "Upload & Apply" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2263 +msgid "Upload and apply" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:806 +msgid "Upload bandwidth" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2315 +msgid "Upload error: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2332 +msgid "Upload failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:812 +msgid "Upload shaping" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2289 +msgid "Uploading" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:980 +msgid "Uptime" +msgstr "Timp de funcționare" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:83 +msgid "Use cake_mq instead of cake on devices with more than one queue" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:822 +msgid "VLAN tags" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1026 +msgid "Valid" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2205 +msgid "Warning: %s but qosify is not shaping traffic — check the Status tab." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1942 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1959 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1976 +msgid "Working" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2124 +msgid "Write empty file" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2160 +msgid "Writing config and reloading qosify..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2226 +msgid "Writing rules and reloading qosify..." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +msgid "" +"You have read-only access to this page, so editing and service control are " +"disabled." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1610 +msgid "" +"Zero qosify's own counters (get_stats)? The CAKE tin counters belong to tc " +"and are kept." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:989 +msgid "active" +msgstr "activ" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2018 +msgid "" +"bandwidth_down does not look like a tc rate (100mbit, 12MBps, unlimited) — " +"passing it through anyway" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2017 +msgid "" +"bandwidth_up does not look like a tc rate (100mbit, 12MBps, unlimited) — " +"passing it through anyway" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1101 +msgid "" +"config device takes the same options, with name set to a netdev. nat " +"defaults to 1 for interfaces and 0 for devices." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:988 +msgid "device %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:990 +msgid "device: %s, ingress: %s, egress: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:350 +msgid "" +"disabled is set to \"%s\" — config_get_bool does not recognise that, so the " +"section stays enabled" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1337 +msgid "dump did not answer." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:787 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:805 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:825 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:826 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:827 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1251 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1283 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2383 +msgid "e.g. %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1265 +msgid "fnmatch() pattern supporting * and ? as wildcard characters" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1863 +msgid "get_stats did not answer." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:989 +msgid "inactive" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1199 +msgid "ingress %s, egress %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:343 +msgid "ingress and egress are both 0 — nothing is shaped" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:988 +msgid "interface %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1246 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1282 +msgid "match" +msgstr "potrivire" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:324 +msgid "" +"mode \"%s\" is not a CAKE diffserv mode — tc refuses the qdisc, so nothing " +"is shaped although qosify reports the section active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:335 +msgid "multiqueue is set, but this qosify.init does not pass it to qosify" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:323 +msgid "" +"name \"%s\" is dropped by qosify — it takes at most %d characters and no " +"quote" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:322 +msgid "" +"name is not set — qosify.init sends an empty device name and this section is " +"never applied" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:339 +msgid "" +"nat is not sent: qosify only emits nat/nonat inside the host_isolate branch. " +"CAKE does accept flows plus nat — put nat in options to apply it" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:340 +msgid "" +"nat only reaches %s — put it in options, or in both ingress_options and " +"egress_options" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:72 +msgid "" +"netifd interface (config interface) or netdev (config device) to enable QoS " +"on" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:805 +msgid "netifd interface to enable QoS on. Required." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 +msgid "never" +msgstr "niciodată" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:990 +msgid "no" +msgstr "nu" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:345 +msgid "no bandwidth_down or bandwidth — ingress CAKE runs unlimited" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:344 +msgid "no bandwidth_up or bandwidth — egress CAKE runs unlimited" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:970 +msgid "none" +msgstr "niciuna" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:342 +msgid "overhead and overhead_encap are ignored unless overhead_type is manual" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:331 +msgid "overhead_encap \"%s\" is not atm, noatm or ptm — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:328 +msgid "" +"overhead_type \"%s\" is not one qosify.init knows, so no overhead is set" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:334 +msgid "overhead_vlan \"%s\" is not 0, 1 or 2 — qosify.init adds no ether-vlan" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:680 +#: applications/luci-app-qosify/root/usr/share/luci/menu.d/luci-app-qosify.json:3 +msgid "qosify" +msgstr "qosify" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:935 +msgid "" +"qosify did not appear on ubus, so its config was not applied — press Reload" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:920 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1981 +msgid "qosify did not come up — check the system log" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1337 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1860 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1924 +msgid "qosify is not running. Start from the Overview tab." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1987 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2141 +msgid "qosify is still running — leaving the qdiscs alone" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1408 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1409 +msgid "qosify package template" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1446 +msgid "qosify-status" +msgstr "qosify-status" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1934 +msgid "qosify-status returned no output." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:963 +msgid "" +"rpcd is not answering for qosify — check the ACL in /usr/share/rpcd/acl.d " +"and restart rpcd" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:919 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1337 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1859 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1923 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1980 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1986 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2140 +msgid "rpcd is not answering for qosify, so the service state is unknown." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1043 +msgid "section name" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1041 +msgid "section type" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1774 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1778 +msgid "share" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1303 +msgid "timeout must be a whole number of seconds above 0." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1786 +msgid "total" +msgstr "total" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1251 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1283 +msgid "value" +msgstr "valoare" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:990 +msgid "yes" +msgstr "da" diff --git a/luci-app-qosify/po/ru/qosify.po b/luci-app-qosify/po/ru/qosify.po index 5e657fbee..4640fa614 100644 --- a/luci-app-qosify/po/ru/qosify.po +++ b/luci-app-qosify/po/ru/qosify.po @@ -3,44 +3,70 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Language: ru\n" "Content-Transfer-Encoding: 8bit\n" -"Last-Translator: Hannu Nyman \n" +"Last-Translator: SnIPeRSnIPeR " +"\n" "Language-Team: Russian \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" -"PO-Revision-Date: 2026-10-18 16:40+0000\n" +"PO-Revision-Date: 2026-10-25 04:14+0000\n" "X-Generator: Weblate 2026.11.dev0\n" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1255 +msgid "\"%s\" is not a value qosify accepts for %s." +msgstr "\"%s\" не является значением, которое qosify принимает для %s." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:483 +msgid "" +"%d class and alias sections — qosify has %d class slots, so %s and the rules " +"using them are dropped" +msgstr "" +"Разделов class и alias — %d; у qosify %d слотов классов, поэтому %s и " +"использующие их правила отбрасываются" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "%d interface" msgid_plural "%d interfaces" msgstr[0] "%d интерфейс" msgstr[1] "%d интерфейса" msgstr[2] "%d интерфейсов" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:986 msgid "%d rule" msgid_plural "%d rules" msgstr[0] "%d правило" msgstr[1] "%d правила" msgstr[2] "%d правил" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:942 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:985 msgid "%d section" msgid_plural "%d sections" msgstr[0] "секция" msgstr[1] "секции" msgstr[2] "секций" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:294 +msgid "" +"%s \"%s\" is not a tc rate — tc refuses the qdisc, so nothing is shaped " +"although qosify reports the section active" +msgstr "" +"%s \"%s\" не является скоростью tc — tc отклоняет qdisc, поэтому ничего не " +"шейпится, хотя qosify считает раздел активным" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:298 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:301 +msgid "%s \"%s\" is not a whole number — tc refuses the qdisc" +msgstr "%s \"%s\" не является целым числом — tc отклоняет qdisc" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 msgid "%s (current)" msgstr "%s (текущий)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 msgid "%s (from bandwidth)" msgstr "%s (из полосы пропускания)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2085 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2288 msgid "" "%s and %s are replaced with the templates shipped by the qosify package, and " "shaping is left disabled." @@ -48,16 +74,16 @@ msgstr "" "%s и %s заменяются шаблонами, поставляемыми пакетом qosify, а шейпинг " "остаётся отключённым." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1809 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2012 msgid "" "%s came back empty although it is %d bytes on disk — refusing to overwrite it" msgstr "%s вернулся пустым, хотя на диске %d байт — отказываюсь перезаписывать" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2346 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2549 msgid "%s changed on disk — your unsaved edits are still in the editor." msgstr "%s изменён на диске — ваши несохранённые правки остаются в редакторе." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2249 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2452 msgid "" "%s could not be read — the editor is left empty and will not be saved over " "it." @@ -65,7 +91,7 @@ msgstr "" "%s не удалось прочитать — редактор оставлен пустым, и сохранение поверх него " "выполнено не будет." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1833 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2036 msgid "" "%s has changed since this editor was loaded. Saving now discards those " "changes." @@ -73,7 +99,7 @@ msgstr "" "%s изменён с момента загрузки этого редактора. Сохранение сейчас отбросит " "эти изменения." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1864 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2067 msgid "" "%s is %d bytes on disk but was never loaded into the editor — refusing to " "truncate it. Reload the page first." @@ -81,19 +107,19 @@ msgstr "" "%s занимает %d байт на диске, но не был загружен в редактор — отказываюсь " "его усекать. Сначала перезагрузите страницу." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:392 msgid "%s is a list in this section — edit %s directly" msgstr "%s является списком в этой секции — редактируйте %s напрямую" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1656 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1859 msgid "" "%s is not in the defaults list — qosify does not load it, so the Rules tab " "has no effect" msgstr "" -"%s отсутствует в списке defaults — qosify его не загружает, поэтому вкладка «" -"Правила» не действует" +"%s отсутствует в списке defaults — qosify его не загружает, поэтому вкладка " +"«Правила» не действует" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:286 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:314 msgid "" "%s is set to \"%s\" — qosify converts it with atoi(), so anything but a non-" "zero number means off" @@ -101,45 +127,45 @@ msgstr "" "%s установлено в \\\"%s\\\" — qosify преобразует его через atoi(), поэтому " "всё, кроме ненулевого числа, означает «выключено»" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:750 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:793 msgid "%s quick settings" msgstr "%s быстрые настройки" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2069 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2272 msgid "%s uploaded, qosify reloaded." msgstr "%s загружен, qosify перезапущен." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2103 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2306 msgid "%s was not written: %s" msgstr "%s не был записан: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2106 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2309 msgid "%s was reset but %s was not written: %s" msgstr "%s был сброшен, но %s не был записан: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1945 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2148 msgid "%s, applied (QoS disabled)." msgstr "%s применено (QoS отключён)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1950 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 msgid "" "%s, applied — qosify did not answer on ubus, so shaping could not be checked." msgstr "" "%s, применено — qosify не ответил через ubus, поэтому шейпинг не удалось " "проверить." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1947 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 msgid "%s, applied." msgstr "%s применено." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:459 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:468 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:500 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:509 msgid "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify ignores it" msgstr "" "%s: %s \"%s\" не является классом, кодовой точкой или значением 0–63 — " "qosify игнорирует это" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:456 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:497 msgid "" "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify rejects the whole " "config and interface changes are not applied" @@ -147,7 +173,7 @@ msgstr "" "%s: %s \"%s\" не является классом, кодовой точкой или значением 0–63 — " "qosify отклоняет всю конфигурацию, изменения интерфейса не применяются" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:465 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:506 msgid "" "%s: %s \"%s\" is not a codepoint or 0-63 — qosify drops this class and the " "rules using it" @@ -155,7 +181,15 @@ msgstr "" "%s: %s \"%s\" не является кодовой точкой или значением 0–63 — qosify " "отбрасывает этот класс и правила, которые его используют" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:448 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:488 +msgid "" +"%s: %s \"%s\" is not a whole number — qosify.init passes it through atoll(), " +"which keeps only the leading digits" +msgstr "" +"%s: %s \"%s\" не является целым числом — qosify.init передаёт его через atoll" +"(), который сохраняет только ведущие цифры" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:486 msgid "" "%s: %s cannot be checked — write it as one plain or fully quoted value, with " "no backslash" @@ -163,39 +197,70 @@ msgstr "" "%s: %s невозможно проверить — запишите его как одно простое или полностью " "заключённое в кавычки значение, без обратной косой черты" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:451 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:492 msgid "" "%s: %s contains shell metacharacters — qosify runs the tc command with sh -c " "as root, so they would break it or be executed" msgstr "" -"%s: %s содержит метасимволы оболочки — qosify запускает команду tc через sh -" -"c от имени root, поэтому они либо сломают её, либо будут выполнены" +"%s: %s содержит метасимволы оболочки — qosify запускает команду tc через sh " +"-c от имени root, поэтому они либо сломают её, либо будут выполнены" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "(alias)" msgstr "(псевдоним)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1304 +msgid "(over file)" +msgstr "(переопределено файлом)" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 msgid "(this qosify build has no NQB)" msgstr "(в этой сборке qosify нет NQB)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2185 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2388 msgid "A config defaults section already exists." msgstr "Секция defaults конфигурации уже существует." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2183 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2386 msgid "A section name may only contain letters, digits and underscores." msgstr "Имя секции может содержать только буквы, цифры и знаки подчёркивания." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:856 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Action" +msgstr "Действие" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:899 msgid "Active" msgstr "Активно" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:957 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1162 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1000 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1206 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1240 msgid "Add" msgstr "Добавить" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1262 +msgid "Add failed: %s" +msgstr "Не удалось добавить: %s" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1242 +msgid "" +"Added to the running qosify at once and not saved: an entry expires after " +"its timeout (the defaults timeout when left empty) and a qosify restart " +"drops it. One on a match from the rules file overrides it until then." +msgstr "" +"Добавляется в работающий qosify сразу и не сохраняется: запись истекает по " +"своему тайм-ауту (при пустом поле используется тайм-аут по умолчанию), а " +"перезапуск qosify удаляет её. До этого её переопределяет запись по " +"совпадению из файла правил." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +msgid "" +"Adds a line to the editor below; Save & Apply writes it to the rules file, " +"so it is kept." +msgstr "" +"«Сохранить и применить» записывает её в файл правил, поэтому она сохраняется." + #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:85 msgid "Adds atm, noatm or ptm when overhead_type is manual" msgstr "Добавляет atm, noatm или ptm, когда overhead_type = manual" @@ -212,32 +277,32 @@ msgstr "Добавляет mpu " msgid "Adds overhead when overhead_type is manual" msgstr "Добавляет overhead , когда overhead_type = manual" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:608 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:649 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:780 msgid "Advanced" msgstr "Дополнительно" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "An empty %s stops all shaping. Continue?" msgstr "Пустой %s останавливает весь шейпинг. Продолжить?" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:726 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:769 msgid "Automatic download rate" msgstr "Автоматическая скорость загрузки" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:936 msgid "Autostart" msgstr "Автозапуск" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:967 msgid "Autostart state unknown — rpcd did not answer" msgstr "Состояние автозапуска неизвестно — rpcd не ответил" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 msgid "Available" msgstr "Доступно" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1196 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1334 msgid "Backup" msgstr "Резервная копия" @@ -249,12 +314,12 @@ msgstr "" "Полоса пропускания для обоих направлений, если bandwidth_up или " "bandwidth_down не заданы" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:716 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:759 msgid "Basic" msgstr "Основные" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:224 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2029 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:240 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2232 msgid "Binary content rejected" msgstr "Двоичное содержимое отклонено" @@ -266,7 +331,7 @@ msgstr "Режим diffserv CAKE" msgid "CAKE egress options" msgstr "Параметры CAKE для исходящего трафика" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "CAKE egress options, space separated." msgstr "Параметры CAKE для исходящего трафика, разделённые пробелами." @@ -274,7 +339,7 @@ msgstr "Параметры CAKE для исходящего трафика, ра msgid "CAKE ingress options" msgstr "Параметры CAKE для входящего трафика" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "CAKE ingress options, space separated." msgstr "Параметры CAKE для входящего трафика, разделённые пробелами." @@ -290,104 +355,108 @@ msgstr "" "Ключевое слово overhead CAKE, добавляемое к параметрам; manual использует " "overhead и overhead_encap" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "CAKE overhead keyword. Use none if unsure." msgstr "Ключевое слово overhead CAKE. Если не уверены, используйте none." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:564 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 msgid "Cancel" msgstr "Отмена" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1356 msgid "Check Devices" msgstr "Проверить устройства" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1330 msgid "Choose file…" msgstr "Выбрать файл…" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1114 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1158 msgid "Classes" msgstr "Классы" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1940 msgid "Cleanup exited with code %d" msgstr "Очистка завершилась с кодом %d" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1190 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear" msgstr "Очистить" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2072 msgid "Clear configuration" msgstr "Очистить конфигурацию" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear editor" msgstr "Очистить редактор" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to disable autostart" msgstr "Нажмите, чтобы отключить автозапуск" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to enable autostart" msgstr "Нажмите, чтобы включить автозапуск" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 msgid "Common CAKE options" msgstr "Общие параметры CAKE" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:604 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:645 msgid "Config" msgstr "Конфигурация" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared, qosify stopped." msgstr "Конфигурация очищена, qosify остановлен." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared." msgstr "Конфигурация очищена." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1915 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2118 msgid "Config saved" msgstr "Конфигурация сохранена" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2042 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2050 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2253 msgid "Config: %s" msgstr "Конфигурация: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:566 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 msgid "Continue" msgstr "Продолжить" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1391 msgid "Could not read %s: %s" msgstr "Не удалось прочитать %s: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:648 msgid "Counters" msgstr "Счётчики" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1627 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1567 +msgid "Counters reset." +msgstr "Счётчики сброшены." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1830 msgid "DNS Entries" msgstr "Записи DNS" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d of %d)" msgstr "Записи DNS (%d из %d)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d)" msgstr "Записи DNS (%d)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "" "DSCP codepoints: CS0–CS7, AF11–AF43, EF, VA, NQB, LE, DF (NQB needs qosify " "from June 2026; 24.10 and 25.12 do not have it). A raw value from 0 to 63 is " @@ -423,7 +492,7 @@ msgstr "Значение DSCP для входящего и исходящего msgid "DSCP value for priority-marked packets" msgstr "Значение DSCP для пакетов, помеченных как приоритетные" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "DSCP values" msgstr "Значения DSCP" @@ -439,12 +508,12 @@ msgstr "Значение DSCP по умолчанию для пакетов UDP" msgid "Default timeout for dynamically added entries" msgstr "Тайм-аут по умолчанию для динамически добавляемых записей" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1358 msgid "Defaults" msgstr "Значения по умолчанию" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 msgid "" "Defaults qosify applies when a key is absent — interface: mode diffserv4, " "ingress 1, egress 1, nat 1, host_isolate 1, autorate_ingress 0. device: " @@ -458,21 +527,25 @@ msgstr "" "dscp_default_tcp/udp CS0, dscp_prio/dscp_bulk/dscp_icmp не заданы, " "bulk_trigger_pps/bulk_trigger_timeout/prio_max_avg_pkt_len 0 (отключено)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Description" +msgstr "Описание" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Device" msgstr "Устройство" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1914 msgid "Device check done." msgstr "Проверка устройств завершена." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1714 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1917 msgid "Device check failed: %s" msgstr "Проверка устройств не удалась: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:859 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Disabled" msgstr "Отключено" @@ -480,30 +553,34 @@ msgstr "Отключено" msgid "Downlink bandwidth (same format as tc)" msgstr "Полоса пропускания нисходящего канала (тот же формат, что и в tc)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Downlink bandwidth, same format as tc. Set just below line speed." msgstr "" "Полоса пропускания нисходящего канала, тот же формат, что и в tc. Установите " "чуть ниже скорости линии." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1247 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1393 msgid "Download" msgstr "Скачать" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Download bandwidth" msgstr "Скорость загрузки" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:767 msgid "Download shaping" msgstr "Шейпинг загрузки" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1197 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1335 msgid "Download the current files from the router." msgstr "Скачать текущие файлы с маршрутизатора." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1241 +msgid "Dynamic Entries" +msgstr "Динамические записи" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "" "Each line has two whitespace separated fields, match and dscp. dscp can be a " "raw value, a codepoint like CS0, or a class name. DNS entries are compared " @@ -514,27 +591,27 @@ msgstr "" "класса. Записи DNS сравниваются в порядке указания, используется первая " "подходящая запись." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "Egress CAKE options" msgstr "Параметры CAKE для исходящего трафика" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2223 msgid "Empty file" msgstr "Пустой файл" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 msgid "" "Empty the config editor? Nothing is written until you click Save & Apply." msgstr "" -"Очистить редактор конфигурации? Ничего не записывается, пока вы не нажмёте «" -"Сохранить и применить»." +"Очистить редактор конфигурации? Ничего не записывается, пока вы не нажмёте " +"«Сохранить и применить»." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "" "Empty the rules editor? Nothing is written until you click Save & Apply." msgstr "" -"Очистить редактор правил? Ничего не записывается, пока вы не нажмёте «" -"Сохранить и применить»." +"Очистить редактор правил? Ничего не записывается, пока вы не нажмёте " +"«Сохранить и применить»." #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:80 msgid "Enable CAKE NAT host detection via conntrack" @@ -556,54 +633,62 @@ msgstr "Включить шейпинг исходящего трафика" msgid "Enable ingress shaping" msgstr "Включить шейпинг входящего трафика" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Enabled" msgstr "Включено" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:858 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 msgid "Enabled — Not Running" msgstr "Включено — не запущено" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:857 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 msgid "Enabled — Not Shaping (check config)" msgstr "Включено — шейпинг не выполняется (проверьте конфигурацию)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Encapsulation overhead" msgstr "Накладные расходы инкапсуляции" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2182 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2385 msgid "Enter a section name." msgstr "Введите имя секции." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2156 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2359 msgid "Enter a single IPv4 address (qosify does not accept CIDR)." msgstr "Введите один IPv4-адрес (qosify не принимает CIDR)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2159 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2362 msgid "" "Enter a single IPv6 address (qosify does not accept CIDR or a %zone suffix)." msgstr "Введите один IPv6-адрес (qosify не принимает CIDR или суффикс %zone)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2141 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2344 msgid "Enter a value." msgstr "Введите значение." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Entries" msgstr "Записи" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1848 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1961 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1261 +msgid "Entry added." +msgstr "Запись добавлена." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1269 +msgid "Entry removed." +msgstr "Запись удалена." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2051 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2164 msgid "Error: %s" msgstr "Ошибка: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1845 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2048 msgid "Error: No valid config stanzas found." msgstr "Ошибка: не найдено допустимых секций конфигурации." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1763 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1965 msgid "" "Error: invalid characters in bandwidth or options fields. Use alphanumeric, " "spaces, hyphens, dots, colons only." @@ -611,41 +696,57 @@ msgstr "" "Ошибка: недопустимые символы в полях bandwidth или options. Используйте " "только буквы, цифры, пробелы, дефисы, точки и двоеточия." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1798 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2000 msgid "Error: name must be a device or interface name" msgstr "Ошибка: имя должно быть именем устройства или интерфейса" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1769 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1971 msgid "Error: overhead must be a whole number of bytes" msgstr "Ошибка: overhead должен быть целым числом байт" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1970 msgid "Error: overhead_mpu must be a whole number of bytes" msgstr "Ошибка: overhead_mpu должно быть целым числом байтов" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2070 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2001 +msgid "Error: qosify drops a name longer than %d characters" +msgstr "Ошибка: qosify отбрасывает имя длиннее %d символов" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2273 msgid "Errors:" msgstr "Ошибки:" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 +msgid "" +"Every shaped section is looked up again, one whose device now exists is " +"started and one whose device has gone is stopped. Nothing is reported back " +"by the call — the result shows in the Service table on the Overview tab." +msgstr "" +"Каждый шейпингуемый раздел проверяется заново: раздел, устройство которого " +"теперь существует, запускается, а раздел, устройство которого исчезло, " +"останавливается. Вызов ничего не возвращает — результат отображается в " +"таблице «Сервис» на вкладке «Обзор»." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 msgid "File" msgstr "Файл" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1832 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 msgid "File changed on disk" msgstr "Файл изменён на диске" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2224 msgid "File too large (max 64KB)" msgstr "Файл слишком большой (макс. 64 КБ)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:667 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 msgid "Files" msgstr "Файлы" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Found (empty or invalid)" msgstr "Найден (пустой или некорректный)" @@ -653,37 +754,33 @@ msgstr "Найден (пустой или некорректный)" msgid "Grant access to LuCI app qosify" msgstr "Предоставить доступ к LuCI-приложению Qosify" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:728 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:771 msgid "Host isolation" msgstr "Изоляция хостов" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1169 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1216 msgid "IPv4 address, e.g. 1.1.1.1" msgstr "IPv4-адрес, например 1.1.1.1" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1170 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 msgid "IPv6 address, e.g. ff01::1" msgstr "IPv6-адрес, например ff01::1" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "Ingress CAKE options" msgstr "Параметры CAKE для входящего трафика" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Interface" msgstr "Интерфейс" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:741 -msgid "Invalid CAKE options can stop qosify starting." -msgstr "Некорректные параметры CAKE могут помешать запуску qosify." - -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1173 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1220 msgid "Like dns:... but only matches cname entries" msgstr "Как dns:..., но совпадает только с записями cname" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:228 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:244 msgid "" "Line %d is longer than 1023 characters — the rule loader reads fixed-size " "lines and would split it, comment included" @@ -695,28 +792,29 @@ msgstr "" msgid "List of files with port/IP/host mappings" msgstr "Список файлов с сопоставлениями порт/IP/хост" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 msgid "Loading..." msgstr "Загрузка..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1212 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1350 msgid "Maintenance" msgstr "Обслуживание" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Manual overhead" msgstr "Overhead вручную" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "Mapping file syntax" msgstr "Синтаксис файла сопоставлений" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1692 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1895 msgid "Mapping files reloaded." msgstr "Файлы сопоставлений перезагружены." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:434 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:462 msgid "" "Match not loaded by qosify on line %s — ports 1-65534, one IPv4/IPv6 address " "(no CIDR or %%zone), or dns:, dns_c:" @@ -728,21 +826,21 @@ msgstr "" msgid "Maximum average packet length for marking a flow as priority" msgstr "Максимальная средняя длина пакета для пометки потока как приоритетного" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Minimum packet unit (MPU)" msgstr "Минимальная единица пакета (MPU)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Missing" msgstr "Отсутствует" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Modified" msgstr "Изменён" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:433 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:461 msgid "" "More than two fields on line %s — qosify reads the rest of the line as the " "DSCP value and skips it" @@ -750,65 +848,74 @@ msgstr "" "Больше двух полей в строке %s — qosify читает остаток строки как значение " "DSCP и пропускает её" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:770 msgid "NAT awareness" msgstr "Учёт NAT" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Netdev to enable QoS on. Required." msgstr "Netdev, на котором включить QoS. Обязательно." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No CAKE tin statistics." msgstr "Нет статистики tin CAKE." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1628 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1831 msgid "No DNS entries." msgstr "Нет записей DNS." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:432 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:460 msgid "No DSCP target on line %s — qosify skips single-field lines" msgstr "Нет цели DSCP в строке %s — qosify пропускает строки с одним полем" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1107 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +msgid "No DSCP traffic yet." +msgstr "Трафика DSCP пока нет." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1151 msgid "No classes defined in %s" msgstr "В %s не определены классы" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2142 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1257 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2345 msgid "No classes defined. Add classes in the Config tab first." msgstr "" "Классы не определены. Сначала добавьте классы на вкладке «Конфигурация»." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1192 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1294 +msgid "No dynamic entries." +msgstr "Нет динамических записей." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1328 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1329 msgid "No file selected" msgstr "Файл не выбран" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2209 msgid "No files selected." msgstr "Файлы не выбраны." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No output." msgstr "Нет вывода." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 msgid "No per-class counters." msgstr "Нет счётчиков по классам." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2357 msgid "No spaces or # allowed in patterns or addresses." msgstr "В шаблонах или адресах не допускаются пробелы и символ #." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2030 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2233 msgid "No valid UCI config stanzas" msgstr "Нет допустимых секций конфигурации UCI" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:913 msgid "Not Running" msgstr "Не запущено" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1973 msgid "Note: bandwidth not set — CAKE will run unlimited on that direction." msgstr "" "Примечание: полоса пропускания не задана — CAKE будет работать без " @@ -818,43 +925,44 @@ msgstr "" msgid "Number of packets per second to trigger bulk flow detection" msgstr "Число пакетов в секунду для запуска обнаружения bulk-потока" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1161 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1174 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1221 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1238 msgid "Only override the DSCP value if it is zero" msgstr "Переопределять значение DSCP только если оно равно нулю" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:704 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:747 msgid "" "Only sent with host isolation on — add nat to common CAKE options to force it" msgstr "" "Отправляется только при включённой изоляции хостов — добавьте nat в общие " "параметры CAKE, чтобы принудительно включить" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1017 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1060 msgid "Options" msgstr "Параметры" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:730 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:773 msgid "Overhead" msgstr "Overhead" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "Overhead preset" msgstr "Предустановка overhead" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:603 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:644 msgid "Overview" msgstr "Обзор" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1834 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2037 msgid "Overwrite" msgstr "Перезаписать" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2007 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2210 msgid "Overwrite config files" msgstr "Перезаписать файлы конфигурации" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1172 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 msgid "" "POSIX.2 extended regular expression for matching hostnames. Only works if " "dns lookups are passed to qosify via the add_dns_host ubus call." @@ -863,180 +971,195 @@ msgstr "" "Работает только если DNS-запросы передаются в qosify через ubus-вызов " "add_dns_host." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2353 msgid "Port must be 1-65534 (qosify rejects 65535)." msgstr "Порт должен быть в диапазоне 1–65534 (qosify отклоняет 65535)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2149 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2349 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2352 msgid "Port must be a number or a range (4500, 5060-5061)." msgstr "Порт должен быть числом или диапазоном (4500, 5060-5061)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "QoS Enabled" msgstr "QoS включён" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:721 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 msgid "Queueing mode" msgstr "Режим очередей" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1163 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1209 msgid "Quick Add" msgstr "Быстрое добавление" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1016 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1059 msgid "Quick Add: %s" msgstr "Быстрое добавление: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2356 msgid "Range start must not exceed end." msgstr "Начало диапазона не должно превышать конец." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 msgid "Re-check devices" msgstr "Перепроверить устройства" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 msgid "Re-checking devices..." msgstr "Перепроверка устройств..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:811 msgid "Re-read the mapping files only" msgstr "Перечитать только файлы сопоставлений" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 msgid "Re-reading the mapping files..." msgstr "Перечитывание файлов сопоставлений..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 -msgid "" -"Re-runs the daemon's own device pass: every shaped section is looked up " -"again, one whose device now exists is started and one whose device has gone " -"is stopped. Nothing is reported back by the call — the result shows in the " -"Service table on the Overview tab." -msgstr "" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1351 +msgid "Re-runs the daemon's own device pass." +msgstr "Повторно запускает собственный проход демона по устройствам." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2024 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2227 msgid "Read error" msgstr "Ошибка чтения" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Reading and validating files..." msgstr "Чтение и проверка файлов..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1681 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1884 msgid "Reading tc output..." msgstr "Чтение вывода tc..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1019 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1062 msgid "Reference" msgstr "Справка" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload" msgstr "Перезагрузить" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload Rules" msgstr "Перезагрузить правила" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1695 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1898 msgid "Reload failed: %s" msgstr "Перезагрузка не удалась: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1306 +msgid "Remove" +msgstr "Удалить" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1270 +msgid "Remove failed: %s" +msgstr "Не удалось удалить: %s" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 +msgid "Replaced with" +msgstr "Заменено на" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "Requires write access." msgstr "Требуется доступ на запись." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2086 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1365 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2289 msgid "Reset" msgstr "Сброс" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2120 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1554 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "Reset counters" +msgstr "Сбросить счётчики" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2323 msgid "Reset failed: %s" msgstr "Ошибка сброса: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2084 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2287 msgid "Reset to defaults" msgstr "Сбросить к значениям по умолчанию" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2116 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2319 msgid "Reset to defaults, applied." msgstr "Сброс к значениям по умолчанию выполнен." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Resetting" msgstr "Сброс" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Restart" msgstr "Перезапустить" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1203 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1341 msgid "Restore" msgstr "Восстановить" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 -msgid "Restore qosify defaults" -msgstr "Восстановить настройки по умолчанию" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1359 +msgid "Restore qosify defaults. Shaping is left disabled." +msgstr "" +"Восстановить настройки qosify по умолчанию. Шейпинг остаётся отключённым." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Restoring defaults..." msgstr "Восстановление значений по умолчанию..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:646 msgid "Rules" msgstr "Правила" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1976 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2179 msgid "Rules saved" msgstr "Правила сохранены" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2053 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2056 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2256 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2259 msgid "Rules: %s" msgstr "Правила: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:868 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:911 msgid "Running & Shaping" msgstr "Работает и выполняет шейпинг" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:912 msgid "Running — Not Shaping" msgstr "Работает — шейпинг не выполняется" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:867 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:910 msgid "Running — Shaping Unknown" msgstr "Работает — шейпинг неизвестен" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1147 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:796 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 msgid "Save & Apply" msgstr "Сохранить и применить" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1825 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1897 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1924 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1985 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2028 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2100 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2127 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2188 msgid "Save failed: %s" msgstr "Ошибка сохранения: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Saving" msgstr "Сохранение" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 msgid "Saving settings and applying..." msgstr "Сохранение настроек и применение..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2186 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2389 msgid "Section %s already exists." msgstr "Секция %s уже существует." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1011 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1054 msgid "" "Section name is the class name that rules and dscp_* values refer to. " "qosify.init reads config alias the same way as config class." @@ -1044,45 +1167,45 @@ msgstr "" "Имя секции — это имя класса, на которое ссылаются правила и значения dscp_*. " "qosify.init читает config alias так же, как config class." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Sending %s to qosify..." msgstr "Отправка %s в qosify..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Sent to CAKE as atm, noatm or ptm." msgstr "Передаётся в CAKE как atm, noatm или ptm." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "Sent to CAKE as ether-vlan, once per tag." msgstr "Передаётся в CAKE как ether-vlan, по одному разу на тег." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Sent to CAKE as mpu, in bytes." msgstr "Передаётся в CAKE как mpu, в байтах." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Sent to CAKE as overhead, in bytes." msgstr "Передаётся в CAKE как overhead, в байтах." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:663 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:706 msgid "Service" msgstr "Служба" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1745 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1948 msgid "Service action failed: %s" msgstr "Действие со службой не удалось: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1817 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 msgid "Settings saved" msgstr "Настройки сохранены" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:723 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:937 msgid "Shaping" msgstr "Шейпинг" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Size" msgstr "Размер" @@ -1090,33 +1213,37 @@ msgstr "Размер" msgid "Skip this section" msgstr "Пропустить эту секцию" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Start" msgstr "Запустить" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:606 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:891 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:647 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:934 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Status" msgstr "Статус" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:855 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:898 msgid "Status Unknown" msgstr "Состояние неизвестно" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:809 msgid "Stop" msgstr "Остановить" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1167 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 msgid "TCP single port, or range from to " msgstr "Один порт TCP или диапазон от до " -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1680 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1883 msgid "The detailed tc output needs write access to this page." msgstr "Подробный вывод tc требует доступа на запись к этой странице." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:590 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1309 +msgid "The first %d entries are shown." +msgstr "Показаны первые %d записей." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:631 msgid "" "The qosify UCI configuration could not be loaded — class and interface lists " "may be incomplete." @@ -1124,13 +1251,13 @@ msgstr "" "Не удалось загрузить конфигурацию UCI qosify — списки классов и интерфейсов " "могут быть неполными." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1342 msgid "" "The selected files replace the ones on the router and qosify is reloaded." msgstr "" "Выбранные файлы заменяют файлы на маршрутизаторе, и qosify перезагружается." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2008 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2211 msgid "" "The selected files replace the ones on the router and qosify is reloaded. " "Download a backup from this tab first if you need one." @@ -1142,115 +1269,120 @@ msgstr "" msgid "Time below bulk_trigger_pps threshold until a bulk flow mark is removed" msgstr "Время ниже порога bulk_trigger_pps до снятия метки bulk-потока" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 msgid "Traffic by CAKE Tin" msgstr "Трафик по tin CAKE" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1401 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1548 msgid "Traffic by Class" msgstr "Трафик по классам" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:596 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1549 +msgid "Traffic by DSCP" +msgstr "Трафик по DSCP" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:637 msgid "Traffic shaping and DSCP classification via qosify" msgstr "Шейпинг трафика и классификация DSCP с помощью qosify" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1168 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 msgid "UDP single port, or range from to " msgstr "Один порт UDP или диапазон от до " -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:864 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:866 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:907 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:909 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:968 msgid "Unknown" msgstr "Неизвестно" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 msgid "Unknown class/DSCP target: %s" msgstr "Неизвестный класс/цель DSCP: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "Unticked sets disabled 1 and qosify skips this section." -msgstr "Снятый флажок устанавливает disabled 1, и qosify пропускает эту секцию." +msgstr "" +"Снятый флажок устанавливает disabled 1, и qosify пропускает эту секцию." #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:74 msgid "Uplink bandwidth (same format as tc)" msgstr "Полоса пропускания восходящего канала (тот же формат, что и в tc)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Uplink bandwidth, same format as tc. Set just below line speed." msgstr "" "Полоса пропускания восходящего канала, тот же формат, что и в tc. Установите " "чуть ниже скорости линии." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 msgid "Upload" msgstr "Загрузить" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1348 msgid "Upload & Apply" msgstr "Загрузить и применить" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2009 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2212 msgid "Upload and apply" msgstr "Загрузить и применить" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Upload bandwidth" msgstr "Скорость отдачи" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2061 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2264 msgid "Upload error: %s" msgstr "Ошибка загрузки: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2078 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2281 msgid "Upload failed: %s" msgstr "Загрузка не удалась: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 msgid "Upload shaping" msgstr "Шейпинг отдачи" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Uploading" msgstr "Загрузка" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:892 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:935 msgid "Uptime" msgstr "Время работы" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "VLAN tags" msgstr "Теги VLAN" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Valid" msgstr "Действителен" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1951 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 msgid "Warning: %s but qosify is not shaping traffic — check the Status tab." msgstr "" "Предупреждение: %s, но qosify не выполняет шейпинг трафика — проверьте " "вкладку «Состояние»." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Working" msgstr "Работает" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "Write empty file" msgstr "Записать пустой файл" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 msgid "Writing config and reloading qosify..." msgstr "Запись конфигурации и перезагрузка qosify..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Writing rules and reloading qosify..." msgstr "Запись правил и перезагрузка qosify..." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:633 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:675 msgid "" "You have read-only access to this page, so editing and service control are " "disabled." @@ -1258,11 +1390,19 @@ msgstr "" "У вас доступ к этой странице только для чтения, поэтому редактирование и " "управление службой отключены." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "" +"Zero qosify's own counters (get_stats)? The CAKE tin counters belong to tc " +"and are kept." +msgstr "" +"Обнулить собственные счётчики qosify (get_stats)? Счётчики CAKE tin " +"принадлежат tc и сохраняются." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 msgid "active" msgstr "активен" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1969 msgid "" "bandwidth_down does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" @@ -1270,7 +1410,7 @@ msgstr "" "bandwidth_down не похоже на скорость tc (100mbit, 12MBps, unlimited) — всё " "равно передаю как есть" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1968 msgid "" "bandwidth_up does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" @@ -1278,7 +1418,7 @@ msgstr "" "bandwidth_up не похоже на скорость tc (100mbit, 12MBps, unlimited) — всё " "равно передаю как есть" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1012 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1055 msgid "" "config device takes the same options, with name set to a netdev. nat " "defaults to 1 for interfaces and 0 for devices." @@ -1286,15 +1426,15 @@ msgstr "" "config device принимает те же параметры, но name задаётся как netdev. nat по " "умолчанию равен 1 для интерфейсов и 0 для устройств." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "device %s" msgstr "устройство %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "device: %s, ingress: %s, egress: %s" msgstr "устройство: %s, входящий: %s, исходящий: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:289 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:317 msgid "" "disabled is set to \"%s\" — config_get_bool does not recognise that, so the " "section stays enabled" @@ -1302,45 +1442,67 @@ msgstr "" "disabled установлено в \"%s\" — config_get_bool не распознаёт это, поэтому " "секция остаётся включённой" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2129 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +msgid "dump did not answer." +msgstr "dump не ответил." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2332 msgid "e.g. %s" msgstr "например, %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1171 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 msgid "fnmatch() pattern supporting * and ? as wildcard characters" msgstr "Шаблон fnmatch() с поддержкой * и ? как подстановочных символов" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1613 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1816 msgid "get_stats did not answer." msgstr "get_stats не ответил." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 msgid "inactive" msgstr "неактивен" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "ingress %s, egress %s" msgstr "входящий %s, исходящий %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:282 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:310 msgid "ingress and egress are both 0 — nothing is shaped" msgstr "ingress и egress равны 0 — шейпинг не выполняется" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "interface %s" msgstr "интерфейс %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1155 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1199 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1235 msgid "match" msgstr "match" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:274 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:292 +msgid "" +"mode \"%s\" is not a CAKE diffserv mode — tc refuses the qdisc, so nothing " +"is shaped although qosify reports the section active" +msgstr "" +"режим \"%s\" не является режимом diffserv CAKE — tc отклоняет qdisc, поэтому " +"ничего не шейпится, хотя qosify считает раздел активным" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:291 +msgid "" +"name \"%s\" is dropped by qosify — it takes at most %d characters and no " +"quote" +msgstr "" +"имя \"%s\" отбрасывается qosify — допускается не более %d символов и без " +"кавычек" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:290 msgid "" "name is not set — qosify.init sends an empty device name and this section is " "never applied" @@ -1348,7 +1510,7 @@ msgstr "" "name не задан — qosify.init отправляет пустое имя устройства, и эта секция " "никогда не применяется" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:278 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:306 msgid "" "nat is not sent: qosify only emits nat/nonat inside the host_isolate branch. " "CAKE does accept flows plus nat — put nat in options to apply it" @@ -1357,7 +1519,7 @@ msgstr "" "host_isolate. CAKE принимает flows вместе с nat — добавьте nat в параметры " "(options), чтобы применить его" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:279 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:307 msgid "" "nat only reaches %s — put it in options, or in both ingress_options and " "egress_options" @@ -1373,70 +1535,98 @@ msgstr "" "Интерфейс netifd (config interface) или netdev (config device), на котором " "включить QoS" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "netifd interface to enable QoS on. Required." msgstr "Интерфейс netifd, на котором включить QoS. Обязательно." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1313 +msgid "never" +msgstr "никогда" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "no" msgstr "нет" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:284 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:312 msgid "no bandwidth_down or bandwidth — ingress CAKE runs unlimited" msgstr "" "не задан bandwidth_down или bandwidth — входящий CAKE работает без " "ограничений" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:283 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:311 msgid "no bandwidth_up or bandwidth — egress CAKE runs unlimited" msgstr "" "не задан bandwidth_up или bandwidth — исходящий CAKE работает без ограничений" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "none" msgstr "нет" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:281 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:309 msgid "overhead and overhead_encap are ignored unless overhead_type is manual" msgstr "" "overhead и overhead_encap игнорируются, пока overhead_type не равен manual" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:595 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:299 +msgid "overhead_encap \"%s\" is not atm, noatm or ptm — tc refuses the qdisc" +msgstr "" +"overhead_encap \"%s\" не является atm, noatm или ptm — tc отклоняет qdisc" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:296 +msgid "" +"overhead_type \"%s\" is not one qosify.init knows, so no overhead is set" +msgstr "" +"overhead_type \\\"%s\\\" не относится к известным qosify.init, поэтому " +"overhead не задаётся" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:302 +msgid "overhead_vlan \"%s\" is not 0, 1 or 2 — qosify.init adds no ether-vlan" +msgstr "" +"overhead_vlan \"%s\" не равен 0, 1 или 2 — qosify.init не добавляет ether-" +"vlan" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:636 #: applications/luci-app-qosify/root/usr/share/luci/menu.d/luci-app-qosify.json:3 msgid "qosify" msgstr "qosify" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:847 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:890 msgid "" "qosify did not appear on ubus, so its config was not applied — press Reload" msgstr "" "qosify не появился в ubus, поэтому его конфигурация не была применена — " "нажмите «Перезагрузить»" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:833 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1729 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:876 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1932 msgid "qosify did not come up — check the system log" msgstr "qosify не запустился — проверьте системный журнал" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1610 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1672 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1813 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1875 msgid "qosify is not running. Start from the Overview tab." msgstr "Qosify не запущен. Запустите его на вкладке «Обзор»." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1735 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1887 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2090 msgid "qosify is still running — leaving the qdiscs alone" msgstr "qosify всё ещё работает — не трогаю qdisc" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1253 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1361 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1362 +msgid "qosify package template" +msgstr "шаблон пакета qosify" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1399 msgid "qosify-status" msgstr "qosify-status" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1885 msgid "qosify-status returned no output." msgstr "qosify-status не вернул никаких данных." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:918 msgid "" "rpcd is not answering for qosify — check the ACL in /usr/share/rpcd/acl.d " "and restart rpcd" @@ -1444,40 +1634,63 @@ msgstr "" "rpcd не отвечает за qosify — проверьте ACL в /usr/share/rpcd/acl.d и " "перезапустите rpcd" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:832 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1609 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1671 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1728 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1734 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1886 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1812 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1874 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1931 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1937 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2089 msgid "rpcd is not answering for qosify, so the service state is unknown." msgstr "rpcd не отвечает за qosify, поэтому состояние службы неизвестно." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:955 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:998 msgid "section name" msgstr "имя секции" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:953 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:996 msgid "section type" msgstr "тип секции" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1529 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1533 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1731 msgid "share" msgstr "доля" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1541 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1256 +msgid "timeout must be a whole number of seconds above 0." +msgstr "тайм-аут должен быть целым числом секунд больше 0." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1739 msgid "total" msgstr "всего" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 msgid "value" msgstr "значение" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "yes" msgstr "да" +#~ msgid "Invalid CAKE options can stop qosify starting." +#~ msgstr "Некорректные параметры CAKE могут помешать запуску qosify." + +#~ msgid "" +#~ "Re-runs the daemon's own device pass: every shaped section is looked up " +#~ "again, one whose device now exists is started and one whose device has " +#~ "gone is stopped. Nothing is reported back by the call — the result shows " +#~ "in the Service table on the Overview tab." +#~ msgstr "" +#~ "Повторно выполняет проход демона по устройствам: все секции шейпинга " +#~ "проверяются заново — секция с существующим устройством запускается, а с " +#~ "исчезнувшим — останавливается. Отдельного сообщения о результате не " +#~ "появляется — смотрите таблицу служб на вкладке «Обзор»." + +#~ msgid "Restore qosify defaults" +#~ msgstr "Восстановить настройки по умолчанию" + #~ msgid "%s contains a quote — qosify rejects the whole value" #~ msgstr "%s содержит кавычку — qosify отклоняет всё значение" diff --git a/luci-app-qosify/po/sv/qosify.po b/luci-app-qosify/po/sv/qosify.po index 2ae22e8d3..201fcc89e 100644 --- a/luci-app-qosify/po/sv/qosify.po +++ b/luci-app-qosify/po/sv/qosify.po @@ -3,412 +3,504 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Language: sv\n" "Content-Transfer-Encoding: 8bit\n" -"Last-Translator: Daniel Nylander \n" +"Last-Translator: Daniel Nylander " +"\n" "Language-Team: Swedish \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"PO-Revision-Date: 2026-09-10 20:09+0000\n" -"X-Generator: Weblate 2026.9.1\n" +"PO-Revision-Date: 2026-10-23 06:37+0000\n" +"X-Generator: Weblate 2026.11.dev0\n" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1255 +msgid "\"%s\" is not a value qosify accepts for %s." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:483 +msgid "" +"%d class and alias sections — qosify has %d class slots, so %s and the rules " +"using them are dropped" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "%d interface" msgid_plural "%d interfaces" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d gränssnitt" +msgstr[1] "%d gränssnitt" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:986 msgid "%d rule" msgid_plural "%d rules" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d regel" +msgstr[1] "%d regler" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:942 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:985 msgid "%d section" msgid_plural "%d sections" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d avsnitt" +msgstr[1] "%d avsnitt" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:294 +msgid "" +"%s \"%s\" is not a tc rate — tc refuses the qdisc, so nothing is shaped " +"although qosify reports the section active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:298 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:301 +msgid "%s \"%s\" is not a whole number — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 msgid "%s (current)" -msgstr "" +msgstr "%s (aktuell)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 msgid "%s (from bandwidth)" -msgstr "" +msgstr "%s (från bandbredd)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2085 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2288 msgid "" "%s and %s are replaced with the templates shipped by the qosify package, and " "shaping is left disabled." msgstr "" +"%s och %s ersätts med mallarna som följer med qosify-paketet och " +"trafikformning förblir inaktiverad." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1809 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2012 msgid "" "%s came back empty although it is %d bytes on disk — refusing to overwrite it" -msgstr "" +msgstr "%s blev tom trots att den är %d byte på disken. Den skrivs inte över" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2346 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2549 msgid "%s changed on disk — your unsaved edits are still in the editor." msgstr "" +"%s har ändrats på disken. Dina osparade ändringar finns fortfarande i " +"redigeraren." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2249 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2452 msgid "" "%s could not be read — the editor is left empty and will not be saved over " "it." msgstr "" +"%s kunde inte läsas. Redigeraren lämnas tom och filen skrivs inte över." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1833 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2036 msgid "" "%s has changed since this editor was loaded. Saving now discards those " "changes." msgstr "" +"%s har ändrats sedan redigeraren lästes in. Om du sparar nu förkastas " +"ändringarna." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1864 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2067 msgid "" "%s is %d bytes on disk but was never loaded into the editor — refusing to " "truncate it. Reload the page first." msgstr "" +"%s är %d byte på disken men har aldrig lästs in i redigeraren. Den trunkeras " +"inte. Läs om sidan först." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:392 msgid "%s is a list in this section — edit %s directly" -msgstr "" +msgstr "%s är en lista i det här avsnittet. Redigera %s direkt" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1656 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1859 msgid "" "%s is not in the defaults list — qosify does not load it, so the Rules tab " "has no effect" msgstr "" +"%s finns inte i listan med standardvärden. qosify läser inte in den, så " +"fliken Regler har ingen effekt" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:286 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:314 msgid "" "%s is set to \"%s\" — qosify converts it with atoi(), so anything but a non-" "zero number means off" msgstr "" +"%s är satt till ”%s”. qosify konverterar det med atoi(), så allt annat än " +"ett tal som inte är noll innebär av" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:750 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:793 msgid "%s quick settings" -msgstr "" +msgstr "Snabbinställningar för %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2069 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2272 msgid "%s uploaded, qosify reloaded." msgstr "%s har laddats upp, qosify har lästs in igen." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2103 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2306 msgid "%s was not written: %s" -msgstr "" +msgstr "%s kunde inte skrivas: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2106 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2309 msgid "%s was reset but %s was not written: %s" -msgstr "" +msgstr "%s återställdes men %s kunde inte skrivas: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1945 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2148 msgid "%s, applied (QoS disabled)." msgstr "%s har tillämpats (QoS inaktiverat)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1950 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 msgid "" "%s, applied — qosify did not answer on ubus, so shaping could not be checked." msgstr "" +"%s har tillämpats. qosify svarade inte på ubus, så trafikformningen kunde " +"inte kontrolleras." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1947 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 msgid "%s, applied." msgstr "%s har tillämpats." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:459 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:468 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:500 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:509 msgid "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify ignores it" msgstr "" +"%s: %s ”%s” är ingen klass, kodpunkt eller ett tal från 0 till 63. qosify " +"ignorerar den" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:456 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:497 msgid "" "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify rejects the whole " "config and interface changes are not applied" msgstr "" +"%s: %s ”%s” är ingen klass, kodpunkt eller ett tal från 0 till 63. qosify " +"avvisar hela konfigurationen och gränssnittsändringar tillämpas inte" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:465 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:506 msgid "" "%s: %s \"%s\" is not a codepoint or 0-63 — qosify drops this class and the " "rules using it" msgstr "" +"%s: %s ”%s” är ingen kodpunkt eller ett tal från 0 till 63. qosify tar bort " +"klassen och reglerna som använder den" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:448 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:488 +msgid "" +"%s: %s \"%s\" is not a whole number — qosify.init passes it through atoll(), " +"which keeps only the leading digits" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:486 msgid "" "%s: %s cannot be checked — write it as one plain or fully quoted value, with " "no backslash" msgstr "" +"%s: %s kan inte kontrolleras. Skriv det som ett vanligt eller helt citerat " +"värde utan omvänt snedstreck" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:451 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:492 msgid "" "%s: %s contains shell metacharacters — qosify runs the tc command with sh -c " "as root, so they would break it or be executed" msgstr "" +"%s: %s innehåller skalmetatecken. qosify kör tc-kommandot med sh -c som " +"root, så de kan förstöra kommandot eller köras" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "(alias)" msgstr "(alias)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 -msgid "(this qosify build has no NQB)" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1304 +msgid "(over file)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2185 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 +msgid "(this qosify build has no NQB)" +msgstr "(den här versionen av qosify saknar NQB)" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2388 msgid "A config defaults section already exists." msgstr "Ett konfigurationsavsnitt med standardvärden finns redan." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2183 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2386 msgid "A section name may only contain letters, digits and underscores." msgstr "" +"Ett avsnittsnamn får bara innehålla bokstäver, siffror och understreck." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:856 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Action" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:899 msgid "Active" msgstr "Aktiv" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:957 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1162 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1000 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1206 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1240 msgid "Add" msgstr "Lägg till" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1262 +msgid "Add failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1242 +msgid "" +"Added to the running qosify at once and not saved: an entry expires after " +"its timeout (the defaults timeout when left empty) and a qosify restart " +"drops it. One on a match from the rules file overrides it until then." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +msgid "" +"Adds a line to the editor below; Save & Apply writes it to the rules file, " +"so it is kept." +msgstr "" + #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:85 msgid "Adds atm, noatm or ptm when overhead_type is manual" -msgstr "" +msgstr "Lägger till atm, noatm eller ptm när overhead_type är manual" #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:87 msgid "Adds ether-vlan once per level (1 or 2)" -msgstr "" +msgstr "Lägger till ether-vlan en gång per nivå, 1 eller 2" #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:86 msgid "Adds mpu " -msgstr "" +msgstr "Lägger till mpu " #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:84 msgid "Adds overhead when overhead_type is manual" -msgstr "" +msgstr "Lägger till overhead när overhead_type är manual" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:608 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:649 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:780 msgid "Advanced" msgstr "Avancerat" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "An empty %s stops all shaping. Continue?" -msgstr "" +msgstr "Ett tomt %s stoppar all trafikformning. Fortsätt?" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:726 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:769 msgid "Automatic download rate" -msgstr "" +msgstr "Automatisk hämtningshastighet" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:936 msgid "Autostart" msgstr "Starta automatiskt" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:967 msgid "Autostart state unknown — rpcd did not answer" -msgstr "" +msgstr "Status för automatisk start är okänd. rpcd svarade inte" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 msgid "Available" msgstr "Tillgänglig" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1196 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1334 msgid "Backup" -msgstr "" +msgstr "Säkerhetskopia" #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:76 msgid "" "Bandwidth for both directions, where bandwidth_up or bandwidth_down is not " "set" msgstr "" +"Bandbredd för båda riktningarna om bandwidth_up eller bandwidth_down inte " +"har angetts" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:716 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:759 msgid "Basic" -msgstr "" +msgstr "Grundläggande" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:224 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2029 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:240 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2232 msgid "Binary content rejected" msgstr "Binärt innehåll avvisades" #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:79 msgid "CAKE diffserv mode" -msgstr "" +msgstr "CAKE-diffservläge" #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:89 msgid "CAKE egress options" -msgstr "" +msgstr "CAKE-flaggor för utgående trafik" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "CAKE egress options, space separated." -msgstr "" +msgstr "CAKE-flaggor för utgående trafik, separerade med mellanslag." #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:88 msgid "CAKE ingress options" -msgstr "" +msgstr "CAKE-flaggor för ingående trafik" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "CAKE ingress options, space separated." -msgstr "" +msgstr "CAKE-flaggor för ingående trafik, separerade med mellanslag." #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:90 msgid "CAKE options for ingress + egress" -msgstr "" +msgstr "CAKE-flaggor för ingående och utgående trafik" #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:83 msgid "" "CAKE overhead keyword added to options; manual uses overhead and " "overhead_encap" msgstr "" +"Nyckelordet overhead för CAKE läggs till i flaggorna. manual använder " +"overhead och overhead_encap" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "CAKE overhead keyword. Use none if unsure." -msgstr "" +msgstr "Nyckelordet overhead för CAKE. Använd none om du är osäker." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:564 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 msgid "Cancel" -msgstr "" +msgstr "Avbryt" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1356 msgid "Check Devices" -msgstr "" +msgstr "Kontrollera enheter" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1330 msgid "Choose file…" -msgstr "" +msgstr "Välj fil…" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1114 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1158 msgid "Classes" -msgstr "" +msgstr "Klasser" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1940 msgid "Cleanup exited with code %d" -msgstr "" +msgstr "Rensningen avslutades med koden %d" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1190 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear" msgstr "Rensa" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2072 msgid "Clear configuration" -msgstr "" +msgstr "Rensa konfiguration" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear editor" -msgstr "" +msgstr "Rensa redigeraren" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to disable autostart" msgstr "Klicka för att inaktivera automatisk start" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to enable autostart" msgstr "Klicka för att aktivera automatisk start" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 msgid "Common CAKE options" -msgstr "" +msgstr "Vanliga CAKE-flaggor" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:604 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:645 msgid "Config" msgstr "Konfiguration" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared, qosify stopped." msgstr "Konfigurationen rensades, qosify stoppades." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared." -msgstr "" +msgstr "Konfigurationen har rensats." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1915 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2118 msgid "Config saved" msgstr "Konfigurationen har sparats" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2042 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2050 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2253 msgid "Config: %s" msgstr "Konfiguration: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:566 -msgid "Continue" -msgstr "" - -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 -msgid "Could not read %s: %s" -msgstr "" - #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 +msgid "Continue" +msgstr "Fortsätt" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1391 +msgid "Could not read %s: %s" +msgstr "Kunde inte läsa %s: %s" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:648 msgid "Counters" +msgstr "Räknare" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1567 +msgid "Counters reset." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1627 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1830 msgid "DNS Entries" -msgstr "" +msgstr "DNS-poster" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d of %d)" -msgstr "" +msgstr "DNS-poster, %d av %d" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d)" -msgstr "" +msgstr "DNS-poster, %d" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "" "DSCP codepoints: CS0–CS7, AF11–AF43, EF, VA, NQB, LE, DF (NQB needs qosify " "from June 2026; 24.10 and 25.12 do not have it). A raw value from 0 to 63 is " "accepted too, and any dscp_* value may also name a class. Prefix with + to " "override only when the DSCP field is zero." msgstr "" +"DSCP-kodpunkter: CS0–CS7, AF11–AF43, EF, VA, NQB, LE och DF. NQB kräver " +"qosify från juni 2026. Versionerna 24.10 och 25.12 saknar det. Även ett " +"råvärde från 0 till 63 accepteras och alla dscp_*-värden kan ange en klass. " +"Prefixet + åsidosätter endast när DSCP-fältet är noll." #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:63 msgid "DSCP value for ICMP packets" -msgstr "" +msgstr "DSCP-värde för ICMP-paket" #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:65 msgid "DSCP value for bulk-marked packets" -msgstr "" +msgstr "DSCP-värde för paket med bulkmarkering" #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:71 msgid "DSCP value for egress" -msgstr "" +msgstr "DSCP-värde för utgående trafik" #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:70 msgid "DSCP value for ingress" -msgstr "" +msgstr "DSCP-värde för ingående trafik" #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:69 msgid "DSCP value for ingress and egress, where they are not set" -msgstr "" +msgstr "DSCP-värde för ingående och utgående trafik när de inte har angetts" #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:64 msgid "DSCP value for priority-marked packets" -msgstr "" +msgstr "DSCP-värde för prioritetsmarkerade paket" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "DSCP values" -msgstr "" +msgstr "DSCP-värden" #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:61 msgid "Default DSCP value for TCP packets" -msgstr "" +msgstr "Standardvärde för DSCP för TCP-paket" #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:62 msgid "Default DSCP value for UDP packets" -msgstr "" +msgstr "Standardvärde för DSCP för UDP-paket" #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:60 msgid "Default timeout for dynamically added entries" -msgstr "" +msgstr "Standardtidsgräns för dynamiskt tillagda poster" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1358 msgid "Defaults" -msgstr "" +msgstr "Standardvärden" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 msgid "" "Defaults qosify applies when a key is absent — interface: mode diffserv4, " "ingress 1, egress 1, nat 1, host_isolate 1, autorate_ingress 0. device: " @@ -422,182 +514,220 @@ msgstr "" "dscp_prio/dscp_bulk/dscp_icmp inte satta, bulk_trigger_pps/" "bulk_trigger_timeout/prio_max_avg_pkt_len 0 (inaktiverat)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Description" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Device" -msgstr "" +msgstr "Enhet" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1914 msgid "Device check done." -msgstr "" +msgstr "Enhetskontrollen är klar." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1714 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1917 msgid "Device check failed: %s" -msgstr "" +msgstr "Enhetskontrollen misslyckades: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:859 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Disabled" msgstr "Inaktiverad" #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:75 msgid "Downlink bandwidth (same format as tc)" -msgstr "" +msgstr "Nedlänksbandbredd, samma format som tc" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Downlink bandwidth, same format as tc. Set just below line speed." msgstr "" +"Nedlänksbandbredd, samma format som tc. Ange strax under linjehastigheten." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1247 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1393 msgid "Download" msgstr "Hämta" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Download bandwidth" -msgstr "" +msgstr "Hämtningsbandbredd" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:767 msgid "Download shaping" -msgstr "" +msgstr "Trafikformning för hämtningar" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1197 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1335 msgid "Download the current files from the router." +msgstr "Hämta de aktuella filerna från routern." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1241 +msgid "Dynamic Entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "" "Each line has two whitespace separated fields, match and dscp. dscp can be a " "raw value, a codepoint like CS0, or a class name. DNS entries are compared " "in the order in which they are specified, using the first matching entry." msgstr "" +"Varje rad har två fält separerade med blanktecken, match och dscp. dscp kan " +"vara ett råvärde, en kodpunkt som CS0 eller ett klassnamn. DNS-poster " +"jämförs i den ordning de har angetts och den första matchande posten används." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "Egress CAKE options" -msgstr "" +msgstr "CAKE-flaggor för utgående trafik" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2223 msgid "Empty file" msgstr "Tom fil" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 msgid "" "Empty the config editor? Nothing is written until you click Save & Apply." msgstr "" +"Töm konfigurationsredigeraren? Inget skrivs förrän du väljer Spara och " +"tillämpa." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "" "Empty the rules editor? Nothing is written until you click Save & Apply." msgstr "" +"Töm regelredigeraren? Inget skrivs förrän du väljer Spara och tillämpa." #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:80 msgid "Enable CAKE NAT host detection via conntrack" -msgstr "" +msgstr "Aktivera CAKE-värddetektering för NAT via conntrack" #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:82 msgid "Enable CAKE automatic rate estimation for ingress" -msgstr "" +msgstr "Aktivera automatisk CAKE-uppskattning av hastighet för ingående trafik" #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:81 msgid "Enable CAKE host isolation" -msgstr "" +msgstr "Aktivera CAKE-värdisolering" #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:78 msgid "Enable egress shaping" -msgstr "" +msgstr "Aktivera trafikformning för utgående trafik" #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:77 msgid "Enable ingress shaping" -msgstr "" +msgstr "Aktivera trafikformning för ingående trafik" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Enabled" msgstr "Aktiverad" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:858 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 msgid "Enabled — Not Running" msgstr "Aktiverad – körs inte" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:857 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 msgid "Enabled — Not Shaping (check config)" msgstr "Aktiverad – trafikstyr inte (kontrollera konfigurationen)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Encapsulation overhead" -msgstr "" +msgstr "Inkapslingsöverhead" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2182 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2385 msgid "Enter a section name." -msgstr "" +msgstr "Ange ett avsnittsnamn." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2156 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2359 msgid "Enter a single IPv4 address (qosify does not accept CIDR)." msgstr "Ange en enskild IPv4-adress (qosify accepterar inte CIDR)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2159 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2362 msgid "" "Enter a single IPv6 address (qosify does not accept CIDR or a %zone suffix)." msgstr "" +"Ange en enda IPv6-adress. qosify godtar inte CIDR eller suffixet %zone." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2141 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2344 msgid "Enter a value." msgstr "Ange ett värde." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Entries" +msgstr "Poster" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1261 +msgid "Entry added." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1848 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1961 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1269 +msgid "Entry removed." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2051 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2164 msgid "Error: %s" msgstr "Fel: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1845 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2048 msgid "Error: No valid config stanzas found." msgstr "Fel: Inga giltiga konfigurationsblock hittades." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1763 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1965 msgid "" "Error: invalid characters in bandwidth or options fields. Use alphanumeric, " "spaces, hyphens, dots, colons only." msgstr "" +"Fel: ogiltiga tecken i fälten för bandbredd eller flaggor. Använd endast " +"alfanumeriska tecken, blanktecken, bindestreck, punkter och kolon." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1798 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2000 msgid "Error: name must be a device or interface name" msgstr "Fel: name måste vara ett enhets- eller gränssnittsnamn" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1769 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1971 msgid "Error: overhead must be a whole number of bytes" msgstr "Fel: overhead måste vara ett helt antal byte" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1970 msgid "Error: overhead_mpu must be a whole number of bytes" +msgstr "Fel: overhead_mpu måste vara ett helt antal byte" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2001 +msgid "Error: qosify drops a name longer than %d characters" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2070 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2273 msgid "Errors:" msgstr "Fel:" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 +msgid "" +"Every shaped section is looked up again, one whose device now exists is " +"started and one whose device has gone is stopped. Nothing is reported back " +"by the call — the result shows in the Service table on the Overview tab." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 msgid "File" -msgstr "" +msgstr "Fil" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1832 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 msgid "File changed on disk" -msgstr "" +msgstr "Filen har ändrats på disken" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2224 msgid "File too large (max 64KB)" msgstr "Filen är för stor (högst 64 kB)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:667 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 msgid "Files" -msgstr "" +msgstr "Filer" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Found (empty or invalid)" msgstr "Hittades (tom eller ogiltig)" @@ -605,661 +735,747 @@ msgstr "Hittades (tom eller ogiltig)" msgid "Grant access to LuCI app qosify" msgstr "Ge åtkomst till LuCI-appen qosify" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:728 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:771 msgid "Host isolation" -msgstr "" +msgstr "Värdisolering" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1169 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1216 msgid "IPv4 address, e.g. 1.1.1.1" -msgstr "" +msgstr "IPv4-adress, till exempel 1.1.1.1" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1170 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 msgid "IPv6 address, e.g. ff01::1" -msgstr "" +msgstr "IPv6-adress, till exempel ff01::1" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "Ingress CAKE options" -msgstr "" +msgstr "CAKE-flaggor för ingående trafik" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Interface" -msgstr "" +msgstr "Gränssnitt" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:741 -msgid "Invalid CAKE options can stop qosify starting." -msgstr "" - -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1173 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1220 msgid "Like dns:... but only matches cname entries" -msgstr "" +msgstr "Som dns:... men matchar bara cname-poster" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:228 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:244 msgid "" "Line %d is longer than 1023 characters — the rule loader reads fixed-size " "lines and would split it, comment included" msgstr "" +"Rad %d är längre än 1 023 tecken. Regelinläsaren läser rader med fast " +"storlek och skulle dela den, även kommentaren" #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:59 msgid "List of files with port/IP/host mappings" -msgstr "" +msgstr "Lista med filer som innehåller mappningar för port, IP och värd" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 msgid "Loading..." -msgstr "" +msgstr "Läser in…" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1212 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1350 msgid "Maintenance" -msgstr "" +msgstr "Underhåll" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Manual overhead" -msgstr "" +msgstr "Manuell overhead" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "Mapping file syntax" -msgstr "" +msgstr "Syntax för mappningsfil" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1692 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1895 msgid "Mapping files reloaded." -msgstr "" +msgstr "Mappningsfilerna har lästs in igen." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:434 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:462 msgid "" "Match not loaded by qosify on line %s — ports 1-65534, one IPv4/IPv6 address " "(no CIDR or %%zone), or dns:, dns_c:" msgstr "" +"Matchning på rad %s läses inte in av qosify. Portar 1 till 65534, en IPv4- " +"eller IPv6-adress utan CIDR eller %%zone, eller dns:, dns_c:" #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:66 msgid "Maximum average packet length for marking a flow as priority" msgstr "" +"Maximal genomsnittlig paketlängd för att märka ett flöde som prioriterat" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Minimum packet unit (MPU)" -msgstr "" +msgstr "Minsta paketenhet, MPU" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Missing" msgstr "Saknas" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Modified" -msgstr "" +msgstr "Ändrad" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:433 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:461 msgid "" "More than two fields on line %s — qosify reads the rest of the line as the " "DSCP value and skips it" msgstr "" +"När rad %s har fler än två fält läser qosify resten av raden som DSCP-värde " +"och hoppar över den" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:770 msgid "NAT awareness" -msgstr "" +msgstr "NAT-kännedom" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Netdev to enable QoS on. Required." -msgstr "" +msgstr "Nätverksenhet som QoS ska aktiveras på. Krävs." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No CAKE tin statistics." -msgstr "" +msgstr "Ingen statistik för CAKE-tin." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1628 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1831 msgid "No DNS entries." -msgstr "" +msgstr "Inga DNS-poster." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:432 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:460 msgid "No DSCP target on line %s — qosify skips single-field lines" +msgstr "Inget DSCP-mål på rad %s. qosify hoppar över rader med ett enda fält" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +msgid "No DSCP traffic yet." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1107 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1151 msgid "No classes defined in %s" -msgstr "" +msgstr "Inga klasser har definierats i %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2142 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1257 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2345 msgid "No classes defined. Add classes in the Config tab first." msgstr "" "Inga klasser definierade. Lägg först till klasser på fliken Konfiguration." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1192 -msgid "No file selected" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1294 +msgid "No dynamic entries." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1328 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1329 +msgid "No file selected" +msgstr "Ingen fil har valts" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2209 msgid "No files selected." msgstr "Inga filer valda." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No output." -msgstr "" +msgstr "Inga utdata." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 msgid "No per-class counters." -msgstr "" +msgstr "Inga räknare per klass." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2357 msgid "No spaces or # allowed in patterns or addresses." msgstr "Blanksteg och # är inte tillåtna i mönster eller adresser." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2030 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2233 msgid "No valid UCI config stanzas" msgstr "Inga giltiga UCI-konfigurationsblock" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:913 msgid "Not Running" msgstr "Körs inte" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1973 msgid "Note: bandwidth not set — CAKE will run unlimited on that direction." msgstr "" "Obs: bandbredd är inte angiven – CAKE körs obegränsat i den riktningen." #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:67 msgid "Number of packets per second to trigger bulk flow detection" -msgstr "" +msgstr "Antal paket per sekund som aktiverar identifiering av bulkflöde" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1161 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1174 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1221 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1238 msgid "Only override the DSCP value if it is zero" -msgstr "" +msgstr "Åsidosätt DSCP-värdet endast om det är noll" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:704 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:747 msgid "" "Only sent with host isolation on — add nat to common CAKE options to force it" msgstr "" +"Skickas endast när värdisolering är aktiverad. Lägg till nat i vanliga CAKE-" +"flaggor om du vill tvinga det" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1017 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1060 msgid "Options" msgstr "Alternativ" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:730 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:773 msgid "Overhead" -msgstr "" +msgstr "Overhead" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "Overhead preset" -msgstr "" +msgstr "Förinställd overhead" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:603 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:644 msgid "Overview" msgstr "Överblick" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1834 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2037 msgid "Overwrite" -msgstr "" +msgstr "Skriv över" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2007 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2210 msgid "Overwrite config files" -msgstr "" +msgstr "Skriv över konfigurationsfiler" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1172 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 msgid "" "POSIX.2 extended regular expression for matching hostnames. Only works if " "dns lookups are passed to qosify via the add_dns_host ubus call." msgstr "" +"POSIX.2-utökat reguljärt uttryck för matchning av värdnamn. Fungerar endast " +"om DNS-uppslag skickas till qosify via ubus-anropet add_dns_host." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2353 msgid "Port must be 1-65534 (qosify rejects 65535)." msgstr "Porten måste vara 1–65534 (qosify avvisar 65535)." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2149 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2349 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2352 msgid "Port must be a number or a range (4500, 5060-5061)." -msgstr "" +msgstr "Porten måste vara ett tal eller ett intervall, 4500 eller 5060-5061." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "QoS Enabled" msgstr "QoS aktiverat" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:721 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 msgid "Queueing mode" -msgstr "" +msgstr "Köläge" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1163 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1209 msgid "Quick Add" -msgstr "" +msgstr "Snabbtillägg" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1016 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1059 msgid "Quick Add: %s" -msgstr "" +msgstr "Snabbtillägg: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2356 msgid "Range start must not exceed end." msgstr "Intervallets början får inte överstiga slutet." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 msgid "Re-check devices" -msgstr "" +msgstr "Kontrollera enheter igen" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 msgid "Re-checking devices..." -msgstr "" +msgstr "Kontrollerar enheter igen…" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:811 msgid "Re-read the mapping files only" -msgstr "" +msgstr "Läs endast om mappningsfilerna" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 msgid "Re-reading the mapping files..." +msgstr "Läser om mappningsfilerna…" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1351 +msgid "Re-runs the daemon's own device pass." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 -msgid "" -"Re-runs the daemon's own device pass: every shaped section is looked up " -"again, one whose device now exists is started and one whose device has gone " -"is stopped. Nothing is reported back by the call — the result shows in the " -"Service table on the Overview tab." -msgstr "" - -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2024 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2227 msgid "Read error" msgstr "Läsfel" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Reading and validating files..." msgstr "Läser och validerar filer …" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1681 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1884 msgid "Reading tc output..." -msgstr "" +msgstr "Läser tc-utdata…" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1019 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1062 msgid "Reference" -msgstr "" +msgstr "Referens" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload" msgstr "Ladda om" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload Rules" -msgstr "" +msgstr "Läs in regler igen" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1695 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1898 msgid "Reload failed: %s" +msgstr "Kunde inte läsa in igen: %s" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1306 +msgid "Remove" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1270 +msgid "Remove failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 +msgid "Replaced with" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "Requires write access." -msgstr "" +msgstr "Kräver skrivåtkomst." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2086 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1365 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2289 msgid "Reset" +msgstr "Återställ" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1554 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "Reset counters" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2120 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2323 msgid "Reset failed: %s" msgstr "Återställningen misslyckades: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2084 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2287 msgid "Reset to defaults" -msgstr "" +msgstr "Återställ till standardvärden" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2116 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2319 msgid "Reset to defaults, applied." msgstr "Återställd till standardvärden, tillämpad." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Resetting" msgstr "Återställer" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Restart" msgstr "Starta om" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1203 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1341 msgid "Restore" +msgstr "Återställ" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1359 +msgid "Restore qosify defaults. Shaping is left disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 -msgid "Restore qosify defaults" -msgstr "" - -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Restoring defaults..." msgstr "Återställer standardvärden …" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:646 msgid "Rules" -msgstr "" +msgstr "Regler" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1976 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2179 msgid "Rules saved" msgstr "Reglerna har sparats" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2053 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2056 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2256 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2259 msgid "Rules: %s" msgstr "Regler: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:868 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:911 msgid "Running & Shaping" msgstr "Kör och trafikstyr" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:912 msgid "Running — Not Shaping" msgstr "Kör – trafikstyr inte" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:867 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:910 msgid "Running — Shaping Unknown" -msgstr "" +msgstr "Kör, trafikformning okänd" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1147 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:796 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 msgid "Save & Apply" msgstr "Spara och tillämpa" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1825 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1897 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1924 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1985 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2028 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2100 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2127 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2188 msgid "Save failed: %s" msgstr "Det gick inte att spara: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Saving" msgstr "Sparar" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 msgid "Saving settings and applying..." msgstr "Sparar inställningarna och tillämpar …" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2186 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2389 msgid "Section %s already exists." msgstr "Avsnittet %s finns redan." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1011 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1054 msgid "" "Section name is the class name that rules and dscp_* values refer to. " "qosify.init reads config alias the same way as config class." msgstr "" +"Avsnittsnamnet är klassnamnet som regler och dscp_*-värden refererar till. " +"qosify.init läser config alias på samma sätt som config class." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Sending %s to qosify..." msgstr "Skickar %s till qosify …" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Sent to CAKE as atm, noatm or ptm." -msgstr "" +msgstr "Skickas till CAKE som atm, noatm eller ptm." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "Sent to CAKE as ether-vlan, once per tag." -msgstr "" +msgstr "Skickas till CAKE som ether-vlan, en gång per tagg." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Sent to CAKE as mpu, in bytes." -msgstr "" +msgstr "Skickas till CAKE som mpu, i byte." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Sent to CAKE as overhead, in bytes." -msgstr "" +msgstr "Skickas till CAKE som overhead, i byte." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:663 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:706 msgid "Service" -msgstr "" +msgstr "Tjänst" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1745 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1948 msgid "Service action failed: %s" msgstr "Tjänståtgärden misslyckades: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1817 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 msgid "Settings saved" msgstr "Inställningarna har sparats" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:723 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:937 msgid "Shaping" -msgstr "" +msgstr "Trafikformning" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Size" -msgstr "" +msgstr "Storlek" #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:73 msgid "Skip this section" -msgstr "" +msgstr "Hoppa över det här avsnittet" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Start" msgstr "Starta" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:606 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:891 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:647 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:934 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Status" msgstr "Status" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:855 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:898 msgid "Status Unknown" -msgstr "" +msgstr "Okänd status" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:809 msgid "Stop" msgstr "Stoppa" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1167 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 msgid "TCP single port, or range from to " -msgstr "" +msgstr "En enskild TCP-port eller ett intervall från till " -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1680 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1883 msgid "The detailed tc output needs write access to this page." msgstr "" +"Den detaljerade tc-utmatningen kräver skrivbehörighet till den här sidan." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:590 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1309 +msgid "The first %d entries are shown." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:631 msgid "" "The qosify UCI configuration could not be loaded — class and interface lists " "may be incomplete." msgstr "" +"Det gick inte att läsa in QoSifys UCI-konfiguration. Listorna över klasser " +"och gränssnitt kan vara ofullständiga." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1342 msgid "" "The selected files replace the ones on the router and qosify is reloaded." -msgstr "" +msgstr "De valda filerna ersätter dem på routern och QoSify läses in på nytt." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2008 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2211 msgid "" "The selected files replace the ones on the router and qosify is reloaded. " "Download a backup from this tab first if you need one." msgstr "" +"De valda filerna ersätter dem på routern och QoSify läses in på nytt. Hämta " +"först en säkerhetskopia från den här fliken om du behöver en." #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:68 msgid "Time below bulk_trigger_pps threshold until a bulk flow mark is removed" msgstr "" +"Tid under gränsvärdet bulk_trigger_pps innan märkningen av ett massflöde tas " +"bort" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 msgid "Traffic by CAKE Tin" -msgstr "" +msgstr "Trafik per CAKE-klass" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1401 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1548 msgid "Traffic by Class" +msgstr "Trafik per klass" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1549 +msgid "Traffic by DSCP" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:596 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:637 msgid "Traffic shaping and DSCP classification via qosify" msgstr "Trafikstyrning och DSCP-klassificering via qosify" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1168 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 msgid "UDP single port, or range from to " -msgstr "" +msgstr "En enskild UDP-port eller ett intervall från till " -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:864 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:866 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:907 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:909 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:968 msgid "Unknown" -msgstr "" +msgstr "Okänd" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 msgid "Unknown class/DSCP target: %s" msgstr "Okänd klass/DSCP-mål: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "Unticked sets disabled 1 and qosify skips this section." msgstr "" +"Avmarkering sätter disabled till 1 och QoSify hoppar över det här avsnittet." #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:74 msgid "Uplink bandwidth (same format as tc)" -msgstr "" +msgstr "Uppströmshastighet (samma format som tc)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Uplink bandwidth, same format as tc. Set just below line speed." msgstr "" +"Uppströmshastighet, samma format som tc. Ange ett värde strax under " +"linjehastigheten." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 msgid "Upload" -msgstr "" +msgstr "Ladda upp" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1348 msgid "Upload & Apply" -msgstr "" +msgstr "Ladda upp och tillämpa" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2009 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2212 msgid "Upload and apply" -msgstr "" +msgstr "Ladda upp och tillämpa" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Upload bandwidth" -msgstr "" +msgstr "Uppladdningshastighet" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2061 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2264 msgid "Upload error: %s" msgstr "Uppladdningsfel: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2078 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2281 msgid "Upload failed: %s" msgstr "Uppladdningen misslyckades: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 msgid "Upload shaping" -msgstr "" +msgstr "Formning av uppladdningstrafik" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Uploading" msgstr "Laddar upp" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:892 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:935 msgid "Uptime" -msgstr "" +msgstr "Drifttid" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "VLAN tags" -msgstr "" +msgstr "VLAN-taggar" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Valid" msgstr "Giltig" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1951 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 msgid "Warning: %s but qosify is not shaping traffic — check the Status tab." msgstr "Varning: %s men qosify trafikstyr inte – kontrollera fliken Status." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Working" msgstr "Arbetar" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "Write empty file" -msgstr "" +msgstr "Skriv tom fil" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 msgid "Writing config and reloading qosify..." msgstr "Skriver konfigurationen och läser in qosify igen …" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Writing rules and reloading qosify..." msgstr "Skriver reglerna och läser in qosify igen …" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:633 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:675 msgid "" "You have read-only access to this page, so editing and service control are " "disabled." msgstr "" +"Du har skrivskyddad åtkomst till den här sidan, så redigering och " +"tjänstekontroll är inaktiverade." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 -msgid "active" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "" +"Zero qosify's own counters (get_stats)? The CAKE tin counters belong to tc " +"and are kept." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 +msgid "active" +msgstr "aktiv" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1969 msgid "" "bandwidth_down does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" msgstr "" +"bandwidth_down verkar inte vara en tc-hastighet (100mbit, 12MBps, unlimited) " +"men skickas vidare ändå" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1968 msgid "" "bandwidth_up does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" msgstr "" +"bandwidth_up verkar inte vara en tc-hastighet (100mbit, 12MBps, unlimited) " +"men skickas vidare ändå" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1012 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1055 msgid "" "config device takes the same options, with name set to a netdev. nat " "defaults to 1 for interfaces and 0 for devices." msgstr "" +"config device använder samma flaggor, med name angivet som en nätverksenhet. " +"nat är som standard 1 för gränssnitt och 0 för enheter." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "device %s" -msgstr "" +msgstr "enhet %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "device: %s, ingress: %s, egress: %s" -msgstr "" +msgstr "enhet: %s, ingående: %s, utgående: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:289 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:317 msgid "" "disabled is set to \"%s\" — config_get_bool does not recognise that, so the " "section stays enabled" msgstr "" +"disabled är satt till \"%s\". config_get_bool känner inte igen det, så " +"avsnittet förblir aktiverat" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2129 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +msgid "dump did not answer." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2332 msgid "e.g. %s" -msgstr "" +msgstr "t.ex. %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1171 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 msgid "fnmatch() pattern supporting * and ? as wildcard characters" -msgstr "" +msgstr "Mönster för fnmatch() med stöd för * och ? som jokertecken" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1613 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1816 msgid "get_stats did not answer." -msgstr "" +msgstr "get_stats svarade inte." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 msgid "inactive" -msgstr "" +msgstr "inaktiv" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "ingress %s, egress %s" -msgstr "" +msgstr "ingående %s, utgående %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:282 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:310 msgid "ingress and egress are both 0 — nothing is shaped" msgstr "ingress och egress är båda 0 – ingen trafik styrs" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "interface %s" -msgstr "" +msgstr "gränssnitt %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1155 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1199 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1235 msgid "match" +msgstr "matchning" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:292 +msgid "" +"mode \"%s\" is not a CAKE diffserv mode — tc refuses the qdisc, so nothing " +"is shaped although qosify reports the section active" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:274 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:291 +msgid "" +"name \"%s\" is dropped by qosify — it takes at most %d characters and no " +"quote" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:290 msgid "" "name is not set — qosify.init sends an empty device name and this section is " "never applied" @@ -1267,7 +1483,7 @@ msgstr "" "name är inte angivet – qosify.init skickar ett tomt enhetsnamn och avsnittet " "tillämpas aldrig" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:278 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:306 msgid "" "nat is not sent: qosify only emits nat/nonat inside the host_isolate branch. " "CAKE does accept flows plus nat — put nat in options to apply it" @@ -1275,7 +1491,7 @@ msgstr "" "nat skickas inte: qosify skickar endast nat/nonat inom grenen host_isolate. " "CAKE accepterar flows plus nat – lägg nat i options för att tillämpa det" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:279 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:307 msgid "" "nat only reaches %s — put it in options, or in both ingress_options and " "egress_options" @@ -1288,103 +1504,155 @@ msgid "" "netifd interface (config interface) or netdev (config device) to enable QoS " "on" msgstr "" +"netifd-gränssnitt (config interface) eller nätverksenhet (config device) som " +"QoS ska aktiveras för" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "netifd interface to enable QoS on. Required." +msgstr "netifd-gränssnitt som QoS ska aktiveras för. Krävs." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1313 +msgid "never" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "no" -msgstr "" +msgstr "nej" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:284 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:312 msgid "no bandwidth_down or bandwidth — ingress CAKE runs unlimited" msgstr "ingen bandwidth_down eller bandwidth – ingående CAKE körs obegränsat" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:283 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:311 msgid "no bandwidth_up or bandwidth — egress CAKE runs unlimited" msgstr "ingen bandwidth_up eller bandwidth – utgående CAKE körs obegränsat" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "none" -msgstr "" +msgstr "ingen" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:281 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:309 msgid "overhead and overhead_encap are ignored unless overhead_type is manual" msgstr "overhead och overhead_encap ignoreras om inte overhead_type är manual" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:595 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:299 +msgid "overhead_encap \"%s\" is not atm, noatm or ptm — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:296 +msgid "" +"overhead_type \"%s\" is not one qosify.init knows, so no overhead is set" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:302 +msgid "overhead_vlan \"%s\" is not 0, 1 or 2 — qosify.init adds no ether-vlan" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:636 #: applications/luci-app-qosify/root/usr/share/luci/menu.d/luci-app-qosify.json:3 msgid "qosify" msgstr "qosify" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:847 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:890 msgid "" "qosify did not appear on ubus, so its config was not applied — press Reload" msgstr "" +"QoSify visades inte i ubus, så dess konfiguration tillämpades inte. Tryck på " +"Läs in igen" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:833 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1729 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:876 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1932 msgid "qosify did not come up — check the system log" -msgstr "" +msgstr "QoSify startade inte. Kontrollera systemloggen" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1610 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1672 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1813 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1875 msgid "qosify is not running. Start from the Overview tab." msgstr "qosify körs inte. Starta från fliken Översikt." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1735 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1887 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2090 msgid "qosify is still running — leaving the qdiscs alone" +msgstr "QoSify kör fortfarande. Qdisc:erna lämnas orörda" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1361 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1362 +msgid "qosify package template" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1253 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1399 msgid "qosify-status" msgstr "qosify-status" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1885 msgid "qosify-status returned no output." msgstr "qosify-status returnerade ingen utdata." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:918 msgid "" "rpcd is not answering for qosify — check the ACL in /usr/share/rpcd/acl.d " "and restart rpcd" msgstr "" +"rpcd svarar inte för QoSify. Kontrollera ACL i /usr/share/rpcd/acl.d och " +"starta om rpcd" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:832 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1609 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1671 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1728 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1734 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1886 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1812 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1874 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1931 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1937 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2089 msgid "rpcd is not answering for qosify, so the service state is unknown." -msgstr "" +msgstr "rpcd svarar inte för QoSify, så tjänstens status är okänd." -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:955 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:998 msgid "section name" -msgstr "" +msgstr "avsnittsnamn" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:953 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:996 msgid "section type" -msgstr "" +msgstr "avsnittstyp" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1529 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1533 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1731 msgid "share" +msgstr "andel" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1256 +msgid "timeout must be a whole number of seconds above 0." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1541 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1739 msgid "total" -msgstr "" +msgstr "totalt" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 msgid "value" -msgstr "" +msgstr "värde" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "yes" -msgstr "" +msgstr "ja" + +#~ msgid "Invalid CAKE options can stop qosify starting." +#~ msgstr "Ogiltiga CAKE-flaggor kan hindra QoSify från att starta." + +#~ msgid "" +#~ "Re-runs the daemon's own device pass: every shaped section is looked up " +#~ "again, one whose device now exists is started and one whose device has " +#~ "gone is stopped. Nothing is reported back by the call — the result shows " +#~ "in the Service table on the Overview tab." +#~ msgstr "" +#~ "Kör tjänstens egen enhetsgenomgång igen: varje avsnitt med trafikformning " +#~ "slås upp på nytt. Avsnitt vars enhet nu finns startas och avsnitt vars " +#~ "enhet har försvunnit stoppas. Anropet rapporterar inget tillbaka. " +#~ "Resultatet visas i tabellen Tjänst på fliken Översikt." + +#~ msgid "Restore qosify defaults" +#~ msgstr "Återställ QoSifys standardvärden" #~ msgid "%s contains a quote — qosify rejects the whole value" #~ msgstr "%s innehåller ett citattecken – qosify avvisar hela värdet" diff --git a/luci-app-qosify/po/ta/qosify.po b/luci-app-qosify/po/ta/qosify.po index 194458096..1e3a15921 100644 --- a/luci-app-qosify/po/ta/qosify.po +++ b/luci-app-qosify/po/ta/qosify.po @@ -10,164 +10,217 @@ msgstr "" "PO-Revision-Date: 2026-10-13 13:20+0000\n" "X-Generator: Weblate 2026.11.dev0\n" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1255 +msgid "\"%s\" is not a value qosify accepts for %s." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:483 +msgid "" +"%d class and alias sections — qosify has %d class slots, so %s and the rules " +"using them are dropped" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "%d interface" msgid_plural "%d interfaces" msgstr[0] "" msgstr[1] "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:986 msgid "%d rule" msgid_plural "%d rules" msgstr[0] "" msgstr[1] "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:942 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:985 msgid "%d section" msgid_plural "%d sections" msgstr[0] "" msgstr[1] "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:294 +msgid "" +"%s \"%s\" is not a tc rate — tc refuses the qdisc, so nothing is shaped " +"although qosify reports the section active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:298 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:301 +msgid "%s \"%s\" is not a whole number — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 msgid "%s (current)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 msgid "%s (from bandwidth)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2085 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2288 msgid "" "%s and %s are replaced with the templates shipped by the qosify package, and " "shaping is left disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1809 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2012 msgid "" "%s came back empty although it is %d bytes on disk — refusing to overwrite it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2346 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2549 msgid "%s changed on disk — your unsaved edits are still in the editor." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2249 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2452 msgid "" "%s could not be read — the editor is left empty and will not be saved over " "it." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1833 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2036 msgid "" "%s has changed since this editor was loaded. Saving now discards those " "changes." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1864 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2067 msgid "" "%s is %d bytes on disk but was never loaded into the editor — refusing to " "truncate it. Reload the page first." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:392 msgid "%s is a list in this section — edit %s directly" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1656 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1859 msgid "" "%s is not in the defaults list — qosify does not load it, so the Rules tab " "has no effect" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:286 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:314 msgid "" "%s is set to \"%s\" — qosify converts it with atoi(), so anything but a non-" "zero number means off" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:750 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:793 msgid "%s quick settings" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2069 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2272 msgid "%s uploaded, qosify reloaded." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2103 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2306 msgid "%s was not written: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2106 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2309 msgid "%s was reset but %s was not written: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1945 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2148 msgid "%s, applied (QoS disabled)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1950 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 msgid "" "%s, applied — qosify did not answer on ubus, so shaping could not be checked." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1947 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 msgid "%s, applied." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:459 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:468 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:500 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:509 msgid "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify ignores it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:456 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:497 msgid "" "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify rejects the whole " "config and interface changes are not applied" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:465 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:506 msgid "" "%s: %s \"%s\" is not a codepoint or 0-63 — qosify drops this class and the " "rules using it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:448 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:488 +msgid "" +"%s: %s \"%s\" is not a whole number — qosify.init passes it through atoll(), " +"which keeps only the leading digits" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:486 msgid "" "%s: %s cannot be checked — write it as one plain or fully quoted value, with " "no backslash" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:451 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:492 msgid "" "%s: %s contains shell metacharacters — qosify runs the tc command with sh -c " "as root, so they would break it or be executed" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "(alias)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1304 +msgid "(over file)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 msgid "(this qosify build has no NQB)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2185 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2388 msgid "A config defaults section already exists." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2183 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2386 msgid "A section name may only contain letters, digits and underscores." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:856 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Action" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:899 msgid "Active" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:957 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1162 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1000 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1206 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1240 msgid "Add" msgstr "" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1262 +msgid "Add failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1242 +msgid "" +"Added to the running qosify at once and not saved: an entry expires after " +"its timeout (the defaults timeout when left empty) and a qosify restart " +"drops it. One on a match from the rules file overrides it until then." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +msgid "" +"Adds a line to the editor below; Save & Apply writes it to the rules file, " +"so it is kept." +msgstr "" + #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:85 msgid "Adds atm, noatm or ptm when overhead_type is manual" msgstr "" @@ -184,32 +237,32 @@ msgstr "" msgid "Adds overhead when overhead_type is manual" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:608 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:649 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:780 msgid "Advanced" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "An empty %s stops all shaping. Continue?" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:726 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:769 msgid "Automatic download rate" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:936 msgid "Autostart" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:967 msgid "Autostart state unknown — rpcd did not answer" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 msgid "Available" msgstr "கிடைக்கிறது" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1196 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1334 msgid "Backup" msgstr "காப்புப்பிரதி" @@ -219,12 +272,12 @@ msgid "" "set" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:716 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:759 msgid "Basic" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:224 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2029 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:240 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2232 msgid "Binary content rejected" msgstr "" @@ -236,7 +289,7 @@ msgstr "" msgid "CAKE egress options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "CAKE egress options, space separated." msgstr "" @@ -244,7 +297,7 @@ msgstr "" msgid "CAKE ingress options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "CAKE ingress options, space separated." msgstr "" @@ -258,104 +311,108 @@ msgid "" "overhead_encap" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "CAKE overhead keyword. Use none if unsure." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:564 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 msgid "Cancel" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1356 msgid "Check Devices" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1330 msgid "Choose file…" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1114 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1158 msgid "Classes" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1940 msgid "Cleanup exited with code %d" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1190 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2072 msgid "Clear configuration" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear editor" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to disable autostart" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to enable autostart" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 msgid "Common CAKE options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:604 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:645 msgid "Config" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared, qosify stopped." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1915 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2118 msgid "Config saved" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2042 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2050 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2253 msgid "Config: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:566 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 msgid "Continue" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1391 msgid "Could not read %s: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:648 msgid "Counters" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1627 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1567 +msgid "Counters reset." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1830 msgid "DNS Entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d of %d)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "" "DSCP codepoints: CS0–CS7, AF11–AF43, EF, VA, NQB, LE, DF (NQB needs qosify " "from June 2026; 24.10 and 25.12 do not have it). A raw value from 0 to 63 is " @@ -387,7 +444,7 @@ msgstr "" msgid "DSCP value for priority-marked packets" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "DSCP values" msgstr "" @@ -403,12 +460,12 @@ msgstr "" msgid "Default timeout for dynamically added entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1358 msgid "Defaults" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 msgid "" "Defaults qosify applies when a key is absent — interface: mode diffserv4, " "ingress 1, egress 1, nat 1, host_isolate 1, autorate_ingress 0. device: " @@ -417,21 +474,25 @@ msgid "" "prio_max_avg_pkt_len 0 (disabled)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Description" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Device" msgstr "சாதனம்" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1914 msgid "Device check done." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1714 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1917 msgid "Device check failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:859 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Disabled" msgstr "" @@ -439,48 +500,52 @@ msgstr "" msgid "Downlink bandwidth (same format as tc)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Downlink bandwidth, same format as tc. Set just below line speed." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1247 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1393 msgid "Download" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Download bandwidth" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:767 msgid "Download shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1197 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1335 msgid "Download the current files from the router." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1241 +msgid "Dynamic Entries" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "" "Each line has two whitespace separated fields, match and dscp. dscp can be a " "raw value, a codepoint like CS0, or a class name. DNS entries are compared " "in the order in which they are specified, using the first matching entry." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "Egress CAKE options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2223 msgid "Empty file" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 msgid "" "Empty the config editor? Nothing is written until you click Save & Apply." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "" "Empty the rules editor? Nothing is written until you click Save & Apply." msgstr "" @@ -505,94 +570,114 @@ msgstr "" msgid "Enable ingress shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Enabled" msgstr "இயக்கப்பட்டது" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:858 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 msgid "Enabled — Not Running" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:857 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 msgid "Enabled — Not Shaping (check config)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Encapsulation overhead" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2182 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2385 msgid "Enter a section name." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2156 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2359 msgid "Enter a single IPv4 address (qosify does not accept CIDR)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2159 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2362 msgid "" "Enter a single IPv6 address (qosify does not accept CIDR or a %zone suffix)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2141 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2344 msgid "Enter a value." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1848 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1961 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1261 +msgid "Entry added." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1269 +msgid "Entry removed." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2051 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2164 msgid "Error: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1845 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2048 msgid "Error: No valid config stanzas found." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1763 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1965 msgid "" "Error: invalid characters in bandwidth or options fields. Use alphanumeric, " "spaces, hyphens, dots, colons only." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1798 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2000 msgid "Error: name must be a device or interface name" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1769 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1971 msgid "Error: overhead must be a whole number of bytes" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1970 msgid "Error: overhead_mpu must be a whole number of bytes" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2070 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2001 +msgid "Error: qosify drops a name longer than %d characters" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2273 msgid "Errors:" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 +msgid "" +"Every shaped section is looked up again, one whose device now exists is " +"started and one whose device has gone is stopped. Nothing is reported back " +"by the call — the result shows in the Service table on the Overview tab." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 msgid "File" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1832 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 msgid "File changed on disk" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2224 msgid "File too large (max 64KB)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:667 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 msgid "Files" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Found (empty or invalid)" msgstr "" @@ -600,37 +685,33 @@ msgstr "" msgid "Grant access to LuCI app qosify" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:728 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:771 msgid "Host isolation" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1169 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1216 msgid "IPv4 address, e.g. 1.1.1.1" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1170 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 msgid "IPv6 address, e.g. ff01::1" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "Ingress CAKE options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Interface" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:741 -msgid "Invalid CAKE options can stop qosify starting." -msgstr "" - -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1173 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1220 msgid "Like dns:... but only matches cname entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:228 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:244 msgid "" "Line %d is longer than 1023 characters — the rule loader reads fixed-size " "lines and would split it, comment included" @@ -640,28 +721,29 @@ msgstr "" msgid "List of files with port/IP/host mappings" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 msgid "Loading..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1212 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1350 msgid "Maintenance" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Manual overhead" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "Mapping file syntax" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1692 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1895 msgid "Mapping files reloaded." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:434 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:462 msgid "" "Match not loaded by qosify on line %s — ports 1-65534, one IPv4/IPv6 address " "(no CIDR or %%zone), or dns:, dns_c:" @@ -671,84 +753,93 @@ msgstr "" msgid "Maximum average packet length for marking a flow as priority" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Minimum packet unit (MPU)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Missing" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Modified" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:433 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:461 msgid "" "More than two fields on line %s — qosify reads the rest of the line as the " "DSCP value and skips it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:770 msgid "NAT awareness" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Netdev to enable QoS on. Required." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No CAKE tin statistics." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1628 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1831 msgid "No DNS entries." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:432 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:460 msgid "No DSCP target on line %s — qosify skips single-field lines" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1107 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +msgid "No DSCP traffic yet." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1151 msgid "No classes defined in %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2142 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1257 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2345 msgid "No classes defined. Add classes in the Config tab first." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1192 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1294 +msgid "No dynamic entries." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1328 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1329 msgid "No file selected" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2209 msgid "No files selected." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No output." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 msgid "No per-class counters." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2357 msgid "No spaces or # allowed in patterns or addresses." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2030 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2233 msgid "No valid UCI config stanzas" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:913 msgid "Not Running" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1973 msgid "Note: bandwidth not set — CAKE will run unlimited on that direction." msgstr "" @@ -756,264 +847,279 @@ msgstr "" msgid "Number of packets per second to trigger bulk flow detection" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1161 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1174 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1221 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1238 msgid "Only override the DSCP value if it is zero" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:704 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:747 msgid "" "Only sent with host isolation on — add nat to common CAKE options to force it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1017 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1060 msgid "Options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:730 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:773 msgid "Overhead" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "Overhead preset" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:603 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:644 msgid "Overview" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1834 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2037 msgid "Overwrite" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2007 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2210 msgid "Overwrite config files" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1172 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 msgid "" "POSIX.2 extended regular expression for matching hostnames. Only works if " "dns lookups are passed to qosify via the add_dns_host ubus call." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2353 msgid "Port must be 1-65534 (qosify rejects 65535)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2149 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2349 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2352 msgid "Port must be a number or a range (4500, 5060-5061)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "QoS Enabled" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:721 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 msgid "Queueing mode" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1163 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1209 msgid "Quick Add" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1016 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1059 msgid "Quick Add: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2356 msgid "Range start must not exceed end." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 msgid "Re-check devices" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 msgid "Re-checking devices..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:811 msgid "Re-read the mapping files only" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 msgid "Re-reading the mapping files..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 -msgid "" -"Re-runs the daemon's own device pass: every shaped section is looked up " -"again, one whose device now exists is started and one whose device has gone " -"is stopped. Nothing is reported back by the call — the result shows in the " -"Service table on the Overview tab." +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1351 +msgid "Re-runs the daemon's own device pass." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2024 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2227 msgid "Read error" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Reading and validating files..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1681 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1884 msgid "Reading tc output..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1019 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1062 msgid "Reference" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload Rules" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1695 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1898 msgid "Reload failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1306 +msgid "Remove" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1270 +msgid "Remove failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 +msgid "Replaced with" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "Requires write access." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2086 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1365 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2289 msgid "Reset" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2120 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1554 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "Reset counters" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2323 msgid "Reset failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2084 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2287 msgid "Reset to defaults" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2116 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2319 msgid "Reset to defaults, applied." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Resetting" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Restart" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1203 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1341 msgid "Restore" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 -msgid "Restore qosify defaults" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1359 +msgid "Restore qosify defaults. Shaping is left disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Restoring defaults..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:646 msgid "Rules" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1976 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2179 msgid "Rules saved" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2053 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2056 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2256 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2259 msgid "Rules: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:868 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:911 msgid "Running & Shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:912 msgid "Running — Not Shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:867 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:910 msgid "Running — Shaping Unknown" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1147 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:796 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 msgid "Save & Apply" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1825 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1897 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1924 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1985 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2028 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2100 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2127 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2188 msgid "Save failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Saving" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 msgid "Saving settings and applying..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2186 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2389 msgid "Section %s already exists." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1011 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1054 msgid "" "Section name is the class name that rules and dscp_* values refer to. " "qosify.init reads config alias the same way as config class." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Sending %s to qosify..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Sent to CAKE as atm, noatm or ptm." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "Sent to CAKE as ether-vlan, once per tag." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Sent to CAKE as mpu, in bytes." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Sent to CAKE as overhead, in bytes." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:663 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:706 msgid "Service" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1745 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1948 msgid "Service action failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1817 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 msgid "Settings saved" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:723 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:937 msgid "Shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Size" msgstr "" @@ -1021,44 +1127,48 @@ msgstr "" msgid "Skip this section" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Start" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:606 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:891 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:647 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:934 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Status" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:855 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:898 msgid "Status Unknown" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:809 msgid "Stop" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1167 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 msgid "TCP single port, or range from to " msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1680 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1883 msgid "The detailed tc output needs write access to this page." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:590 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1309 +msgid "The first %d entries are shown." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:631 msgid "" "The qosify UCI configuration could not be loaded — class and interface lists " "may be incomplete." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1342 msgid "" "The selected files replace the ones on the router and qosify is reloaded." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2008 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2211 msgid "" "The selected files replace the ones on the router and qosify is reloaded. " "Download a backup from this tab first if you need one." @@ -1068,33 +1178,37 @@ msgstr "" msgid "Time below bulk_trigger_pps threshold until a bulk flow mark is removed" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 msgid "Traffic by CAKE Tin" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1401 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1548 msgid "Traffic by Class" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:596 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1549 +msgid "Traffic by DSCP" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:637 msgid "Traffic shaping and DSCP classification via qosify" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1168 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 msgid "UDP single port, or range from to " msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:864 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:866 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:907 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:909 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:968 msgid "Unknown" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 msgid "Unknown class/DSCP target: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "Unticked sets disabled 1 and qosify skips this section." msgstr "" @@ -1102,169 +1216,193 @@ msgstr "" msgid "Uplink bandwidth (same format as tc)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Uplink bandwidth, same format as tc. Set just below line speed." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 msgid "Upload" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1348 msgid "Upload & Apply" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2009 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2212 msgid "Upload and apply" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Upload bandwidth" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2061 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2264 msgid "Upload error: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2078 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2281 msgid "Upload failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 msgid "Upload shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Uploading" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:892 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:935 msgid "Uptime" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "VLAN tags" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Valid" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1951 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 msgid "Warning: %s but qosify is not shaping traffic — check the Status tab." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Working" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "Write empty file" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 msgid "Writing config and reloading qosify..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Writing rules and reloading qosify..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:633 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:675 msgid "" "You have read-only access to this page, so editing and service control are " "disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "" +"Zero qosify's own counters (get_stats)? The CAKE tin counters belong to tc " +"and are kept." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 msgid "active" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1969 msgid "" "bandwidth_down does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1968 msgid "" "bandwidth_up does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1012 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1055 msgid "" "config device takes the same options, with name set to a netdev. nat " "defaults to 1 for interfaces and 0 for devices." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "device %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "device: %s, ingress: %s, egress: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:289 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:317 msgid "" "disabled is set to \"%s\" — config_get_bool does not recognise that, so the " "section stays enabled" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2129 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +msgid "dump did not answer." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2332 msgid "e.g. %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1171 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 msgid "fnmatch() pattern supporting * and ? as wildcard characters" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1613 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1816 msgid "get_stats did not answer." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 msgid "inactive" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "ingress %s, egress %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:282 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:310 msgid "ingress and egress are both 0 — nothing is shaped" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "interface %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1155 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1199 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1235 msgid "match" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:274 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:292 +msgid "" +"mode \"%s\" is not a CAKE diffserv mode — tc refuses the qdisc, so nothing " +"is shaped although qosify reports the section active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:291 +msgid "" +"name \"%s\" is dropped by qosify — it takes at most %d characters and no " +"quote" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:290 msgid "" "name is not set — qosify.init sends an empty device name and this section is " "never applied" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:278 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:306 msgid "" "nat is not sent: qosify only emits nat/nonat inside the host_isolate branch. " "CAKE does accept flows plus nat — put nat in options to apply it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:279 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:307 msgid "" "nat only reaches %s — put it in options, or in both ingress_options and " "egress_options" @@ -1276,100 +1414,129 @@ msgid "" "on" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "netifd interface to enable QoS on. Required." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1313 +msgid "never" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "no" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:284 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:312 msgid "no bandwidth_down or bandwidth — ingress CAKE runs unlimited" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:283 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:311 msgid "no bandwidth_up or bandwidth — egress CAKE runs unlimited" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "none" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:281 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:309 msgid "overhead and overhead_encap are ignored unless overhead_type is manual" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:595 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:299 +msgid "overhead_encap \"%s\" is not atm, noatm or ptm — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:296 +msgid "" +"overhead_type \"%s\" is not one qosify.init knows, so no overhead is set" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:302 +msgid "overhead_vlan \"%s\" is not 0, 1 or 2 — qosify.init adds no ether-vlan" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:636 #: applications/luci-app-qosify/root/usr/share/luci/menu.d/luci-app-qosify.json:3 msgid "qosify" msgstr "qosify" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:847 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:890 msgid "" "qosify did not appear on ubus, so its config was not applied — press Reload" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:833 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1729 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:876 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1932 msgid "qosify did not come up — check the system log" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1610 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1672 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1813 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1875 msgid "qosify is not running. Start from the Overview tab." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1735 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1887 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2090 msgid "qosify is still running — leaving the qdiscs alone" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1253 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1361 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1362 +msgid "qosify package template" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1399 msgid "qosify-status" msgstr "qosify-status" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1885 msgid "qosify-status returned no output." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:918 msgid "" "rpcd is not answering for qosify — check the ACL in /usr/share/rpcd/acl.d " "and restart rpcd" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:832 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1609 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1671 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1728 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1734 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1886 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1812 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1874 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1931 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1937 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2089 msgid "rpcd is not answering for qosify, so the service state is unknown." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:955 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:998 msgid "section name" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:953 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:996 msgid "section type" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1529 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1533 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1731 msgid "share" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1541 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1256 +msgid "timeout must be a whole number of seconds above 0." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1739 msgid "total" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 msgid "value" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "yes" msgstr "" diff --git a/luci-app-qosify/po/templates/qosify.pot b/luci-app-qosify/po/templates/qosify.pot index 2f5c3d68e..0875d70ef 100644 --- a/luci-app-qosify/po/templates/qosify.pot +++ b/luci-app-qosify/po/templates/qosify.pot @@ -1,605 +1,697 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1318 +msgid "\"%s\" is not a value qosify accepts for %s." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:531 +msgid "" +"%d class and alias sections — qosify has %d class slots, so %s and the rules " +"using them are dropped" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:986 msgid "%d interface" msgid_plural "%d interfaces" msgstr[0] "" msgstr[1] "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1047 msgid "%d rule" msgid_plural "%d rules" msgstr[0] "" msgstr[1] "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:942 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1046 msgid "%d section" msgid_plural "%d sections" msgstr[0] "" msgstr[1] "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:331 +msgid "" +"%s \"%s\" is not a tc rate — tc refuses the qdisc, so nothing is shaped " +"although qosify reports the section active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:335 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:338 +msgid "%s \"%s\" is not a whole number — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:785 msgid "%s (current)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:803 msgid "%s (from bandwidth)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2094 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2520 msgid "" "%s and %s are replaced with the templates shipped by the qosify package, and " "shaping is left disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1818 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2239 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2263 msgid "" "%s came back empty although it is %d bytes on disk — refusing to overwrite it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2355 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2783 msgid "%s changed on disk — your unsaved edits are still in the editor." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2258 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2684 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2685 msgid "" "%s could not be read — the editor is left empty and will not be saved over " "it." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1842 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2268 msgid "" "%s has changed since this editor was loaded. Saving now discards those " "changes." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1873 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2299 msgid "" "%s is %d bytes on disk but was never loaded into the editor — refusing to " "truncate it. Reload the page first." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:431 msgid "%s is a list in this section — edit %s directly" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1665 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2085 msgid "" "%s is not in the defaults list — qosify does not load it, so the Rules tab " "has no effect" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:286 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:437 +msgid "%s is not one plain statement in this section — edit %s directly" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:352 msgid "" "%s is set to \"%s\" — qosify converts it with atoi(), so anything but a non-" "zero number means off" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:750 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:853 msgid "%s quick settings" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2078 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2504 msgid "%s uploaded, qosify reloaded." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2112 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2538 msgid "%s was not written: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2115 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2541 msgid "%s was reset but %s was not written: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1954 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2380 msgid "%s, applied (QoS disabled)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1959 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2385 msgid "" "%s, applied — qosify did not answer on ubus, so shaping could not be checked." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1956 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2382 msgid "%s, applied." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:459 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:468 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:548 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:557 msgid "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify ignores it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:456 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:545 msgid "" "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify rejects the whole " "config and interface changes are not applied" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:465 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:554 msgid "" "%s: %s \"%s\" is not a codepoint or 0-63 — qosify drops this class and the " "rules using it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:448 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:536 +msgid "" +"%s: %s \"%s\" is not a whole number — qosify.init passes it through atoll(), " +"which keeps only the leading digits" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:534 msgid "" "%s: %s cannot be checked — write it as one plain or fully quoted value, with " "no backslash" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:451 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:540 msgid "" -"%s: %s contains shell metacharacters — qosify runs the tc command with sh -c " -"as root, so they would break it or be executed" +"%s: %s may only contain letters, digits, spaces, dots, underscores and " +"hyphens — qosify 143d71d (snapshots) drops it otherwise, and 24.10 and 25.12 " +"paste it into a tc command run with sh -c as root" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 -msgid "(alias)" -msgstr "" - -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 -msgid "(this qosify build has no NQB)" -msgstr "" - -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2194 -msgid "A config defaults section already exists." -msgstr "" - -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2192 -msgid "A section name may only contain letters, digits and underscores." +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2084 +msgid "%s: multiqueue is set, but %s has one queue, so qosify uses plain cake" msgstr "" #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 +msgid "(alias)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1367 +msgid "(over file)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:507 +msgid "(this qosify build has no NQB)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2620 +msgid "A config defaults section already exists." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2618 +msgid "A section name may only contain letters, digits and underscores." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1415 msgid "Action" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:856 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:960 msgid "Active" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:957 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1162 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1061 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1269 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1303 msgid "Add" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:85 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1325 +msgid "Add failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1305 +msgid "" +"Added to the running qosify at once and not saved: an entry expires after " +"its timeout (the defaults timeout when left empty) and a qosify restart " +"drops it. One on a match from the rules file overrides it until then." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1273 +msgid "" +"Adds a line to the editor below; Save & Apply writes it to the rules file, " +"so it is kept." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:89 msgid "Adds atm, noatm or ptm when overhead_type is manual" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:87 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:91 msgid "Adds ether-vlan once per level (1 or 2)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:86 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:90 msgid "Adds mpu " msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:84 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:88 msgid "Adds overhead when overhead_type is manual" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:608 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:709 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:840 msgid "Advanced" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1879 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2305 msgid "An empty %s stops all shaping. Continue?" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:726 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:829 msgid "Automatic download rate" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:997 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/status/include/75_qosify.js:83 msgid "Autostart" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1028 msgid "Autostart state unknown — rpcd did not answer" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:987 msgid "Available" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1197 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1397 msgid "Backup" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:76 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:79 msgid "" "Bandwidth for both directions, where bandwidth_up or bandwidth_down is not " "set" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:716 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:819 msgid "Basic" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:224 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2038 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:277 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2464 msgid "Binary content rejected" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:79 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1631 +msgid "Bytes" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:82 msgid "CAKE diffserv mode" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:89 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:93 msgid "CAKE egress options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:842 msgid "CAKE egress options, space separated." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:88 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:92 msgid "CAKE ingress options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:841 msgid "CAKE ingress options, space separated." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:90 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:94 msgid "CAKE options for ingress + egress" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:83 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:87 msgid "" "CAKE overhead keyword added to options; manual uses overhead and " "overhead_encap" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:834 msgid "CAKE overhead keyword. Use none if unsure." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:564 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:664 msgid "Cancel" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1419 msgid "Check Devices" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1393 msgid "Choose file…" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1114 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1220 msgid "Classes" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1746 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2166 msgid "Cleanup exited with code %d" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1999 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2005 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1253 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2425 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2431 msgid "Clear" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1878 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2304 msgid "Clear configuration" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1999 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2005 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2425 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2431 msgid "Clear editor" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1033 msgid "Click to disable autostart" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1033 msgid "Click to enable autostart" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:843 msgid "Common CAKE options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:604 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:705 msgid "Config" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1903 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2329 msgid "Config cleared, qosify stopped." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1903 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2329 msgid "Config cleared." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2350 msgid "Config saved" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2051 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2059 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2477 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2485 msgid "Config: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:566 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:666 msgid "Continue" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1254 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1454 msgid "Could not read %s: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:708 msgid "Counters" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1413 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1659 +msgid "Counters reset." +msgstr "" + #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1636 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2054 msgid "DNS Entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1373 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1589 msgid "DNS Entries (%d of %d)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1373 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1589 msgid "DNS Entries (%d)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1126 msgid "" "DSCP codepoints: CS0–CS7, AF11–AF43, EF, VA, NQB, LE, DF (NQB needs qosify " "from June 2026; 24.10 and 25.12 do not have it). A raw value from 0 to 63 is " "accepted too, and any dscp_* value may also name a class. Prefix with + to " -"override only when the DSCP field is zero." +"override only when the DSCP field is zero (as described from qosify c698349; " +"24.10 and 25.12 do not honour it)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:63 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:66 msgid "DSCP value for ICMP packets" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:65 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:68 msgid "DSCP value for bulk-marked packets" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:71 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:74 msgid "DSCP value for egress" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:70 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:73 msgid "DSCP value for ingress" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:69 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:72 msgid "DSCP value for ingress and egress, where they are not set" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:64 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:67 msgid "DSCP value for priority-marked packets" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1126 msgid "DSCP values" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:61 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:64 msgid "Default DSCP value for TCP packets" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:62 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:65 msgid "Default DSCP value for UDP packets" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:60 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:63 msgid "Default timeout for dynamically added entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1221 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1127 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1421 msgid "Defaults" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1127 msgid "" "Defaults qosify applies when a key is absent — interface: mode diffserv4, " -"ingress 1, egress 1, nat 1, host_isolate 1, autorate_ingress 0. device: " -"identical except nat 0. defaults: timeout 3600, dscp_default_tcp/udp CS0, " -"dscp_prio/dscp_bulk/dscp_icmp unset, bulk_trigger_pps/bulk_trigger_timeout/" -"prio_max_avg_pkt_len 0 (disabled)." +"ingress 1, egress 1, nat 1, host_isolate 1, autorate_ingress 0, multiqueue " +"0. device: identical except nat 0. defaults: timeout 3600, dscp_default_tcp/" +"udp CS0, dscp_prio/dscp_bulk/dscp_icmp unset, bulk_trigger_pps/" +"bulk_trigger_timeout/prio_max_avg_pkt_len 0 (disabled)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1415 msgid "Description" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:821 msgid "Device" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2140 msgid "Device check done." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1723 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2143 msgid "Device check failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:859 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:963 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:985 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1034 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/status/include/75_qosify.js:83 msgid "Disabled" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:75 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:78 msgid "Downlink bandwidth (same format as tc)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:823 msgid "Downlink bandwidth, same format as tc. Set just below line speed." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1199 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1256 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1399 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1456 msgid "Download" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1991 +msgid "Download (ingress)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:823 msgid "Download bandwidth" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:827 msgid "Download shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1398 msgid "Download the current files from the router." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1304 +msgid "Dynamic Entries" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1276 msgid "" "Each line has two whitespace separated fields, match and dscp. dscp can be a " "raw value, a codepoint like CS0, or a class name. DNS entries are compared " "in the order in which they are specified, using the first matching entry." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:842 msgid "Egress CAKE options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2029 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2455 msgid "Empty file" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1999 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2425 msgid "" "Empty the config editor? Nothing is written until you click Save & Apply." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2005 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2431 msgid "" "Empty the rules editor? Nothing is written until you click Save & Apply." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:80 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:83 msgid "Enable CAKE NAT host detection via conntrack" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:82 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:85 msgid "Enable CAKE automatic rate estimation for ingress" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:81 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:84 msgid "Enable CAKE host isolation" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:78 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:81 msgid "Enable egress shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:77 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:80 msgid "Enable ingress shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:985 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1034 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/status/include/75_qosify.js:83 msgid "Enabled" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:858 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:962 msgid "Enabled — Not Running" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:857 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:961 msgid "Enabled — Not Shaping (check config)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:814 msgid "Encapsulation overhead" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2191 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2617 msgid "Enter a section name." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2165 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2591 msgid "Enter a single IPv4 address (qosify does not accept CIDR)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2168 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2594 msgid "" "Enter a single IPv6 address (qosify does not accept CIDR or a %zone suffix)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2576 msgid "Enter a value." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1045 msgid "Entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1857 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1970 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1324 +msgid "Entry added." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1332 +msgid "Entry removed." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2283 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2396 msgid "Error: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1854 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2280 msgid "Error: No valid config stanzas found." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1772 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2190 msgid "" -"Error: invalid characters in bandwidth or options fields. Use alphanumeric, " -"spaces, hyphens, dots, colons only." +"Error: invalid characters in bandwidth or options fields. Use letters, " +"digits, spaces, dots, underscores and hyphens only." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1807 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2227 msgid "Error: name must be a device or interface name" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1778 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2196 msgid "Error: overhead must be a whole number of bytes" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1777 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2195 msgid "Error: overhead_mpu must be a whole number of bytes" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2079 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2228 +msgid "Error: qosify drops a name longer than %d characters" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2505 msgid "Errors:" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1216 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1416 msgid "" "Every shaped section is looked up again, one whose device now exists is " "started and one whose device has gone is stopped. Nothing is reported back " "by the call — the result shows in the Service table on the Overview tab." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1199 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1206 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1223 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1045 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1399 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1406 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1423 msgid "File" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1841 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2267 msgid "File changed on disk" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2030 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2456 msgid "File too large (max 64KB)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:667 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:770 msgid "Files" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1042 msgid "Found (empty or invalid)" msgstr "" @@ -607,776 +699,914 @@ msgstr "" msgid "Grant access to LuCI app qosify" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:728 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:831 msgid "Host isolation" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1169 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1263 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1279 msgid "IPv4 address, e.g. 1.1.1.1" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1170 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1263 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1280 msgid "IPv6 address, e.g. ff01::1" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:841 msgid "Ingress CAKE options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:821 msgid "Interface" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1173 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1283 msgid "Like dns:... but only matches cname entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:228 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:281 msgid "" "Line %d is longer than 1023 characters — the rule loader reads fixed-size " "lines and would split it, comment included" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:59 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:62 msgid "List of files with port/IP/host mappings" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1411 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1413 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1308 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1632 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1636 msgid "Loading..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1413 msgid "Maintenance" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:813 msgid "Manual overhead" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1276 msgid "Mapping file syntax" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1701 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2121 msgid "Mapping files reloaded." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:434 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:506 msgid "" -"Match not loaded by qosify on line %s — ports 1-65534, one IPv4/IPv6 address " -"(no CIDR or %%zone), or dns:, dns_c:" +"Match not loaded by qosify on line %s — ports 1-%d, one IPv4/IPv6 address " +"(no CIDR or %%zone), or dns:, dns_c:, dns_q:" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:66 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:69 msgid "Maximum average packet length for marking a flow as priority" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1629 +msgid "Measure" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:837 msgid "Minimum packet unit (MPU)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:987 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1042 msgid "Missing" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1199 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1045 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1399 msgid "Modified" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:433 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:505 msgid "" "More than two fields on line %s — qosify reads the rest of the line as the " "DSCP value and skips it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:832 +msgid "Multiqueue CAKE" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:830 msgid "NAT awareness" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:821 msgid "Netdev to enable QoS on. Required." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1594 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1952 msgid "No CAKE tin statistics." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1637 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2055 msgid "No DNS entries." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:432 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:504 msgid "No DSCP target on line %s — qosify skips single-field lines" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1107 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1935 +msgid "No DSCP traffic yet." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1881 +msgid "No class traffic yet." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "No classes defined in %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2151 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1320 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2577 msgid "No classes defined. Add classes in the Config tab first." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1192 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1357 +msgid "No dynamic entries." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1391 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1392 msgid "No file selected" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2015 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2441 msgid "No files selected." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1594 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1952 msgid "No output." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1577 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1872 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "No per-class counters." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2163 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2589 msgid "No spaces or # allowed in patterns or addresses." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2039 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2465 msgid "No valid UCI config stanzas" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:974 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/status/include/75_qosify.js:81 msgid "Not Running" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1780 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2198 msgid "Note: bandwidth not set — CAKE will run unlimited on that direction." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:67 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:70 msgid "Number of packets per second to trigger bulk flow detection" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1161 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1174 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1268 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1284 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1301 msgid "Only override the DSCP value if it is zero" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:704 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "" "Only sent with host isolation on — add nat to common CAKE options to force it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1017 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1122 msgid "Options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:730 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:833 msgid "Overhead" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:834 msgid "Overhead preset" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:603 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:704 msgid "Overview" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1843 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2269 msgid "Overwrite" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2016 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2442 msgid "Overwrite config files" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1172 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1282 msgid "" "POSIX.2 extended regular expression for matching hostnames. Only works if " "dns lookups are passed to qosify via the add_dns_host ubus call." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2159 -msgid "Port must be 1-65534 (qosify rejects 65535)." +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1631 +msgid "Packets" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2155 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2158 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2585 +msgid "Port must be 1-%d." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2581 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2584 msgid "Port must be a number or a range (4500, 5060-5061)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:820 msgid "QoS Enabled" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:721 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:824 msgid "Queueing mode" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1163 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1272 msgid "Quick Add" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1016 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1121 msgid "Quick Add: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2162 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2588 msgid "Range start must not exceed end." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1216 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1416 msgid "Re-check devices" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1716 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2136 msgid "Re-checking devices..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:871 msgid "Re-read the mapping files only" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1699 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2119 msgid "Re-reading the mapping files..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1414 msgid "Re-runs the daemon's own device pass." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2033 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2459 msgid "Read error" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2044 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2470 msgid "Reading and validating files..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2110 msgid "Reading tc output..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1019 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1124 msgid "Reference" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:868 msgid "Reload" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:868 msgid "Reload Rules" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1704 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2124 msgid "Reload failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1223 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1369 +msgid "Remove" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1333 +msgid "Remove failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1423 msgid "Replaced with" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1594 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1952 msgid "Requires write access." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1228 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1428 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2521 msgid "Reset" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2129 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1639 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1655 +msgid "Reset counters" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1660 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2555 msgid "Reset failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2093 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2519 msgid "Reset to defaults" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2125 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2551 msgid "Reset to defaults, applied." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2104 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2530 msgid "Resetting" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:867 msgid "Restart" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 msgid "Restore" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1222 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1422 msgid "Restore qosify defaults. Shaping is left disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2104 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2530 msgid "Restoring defaults..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:706 msgid "Rules" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1985 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2411 msgid "Rules saved" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2062 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2065 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2488 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2491 msgid "Rules: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:868 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/status/include/75_qosify.js:80 msgid "Running & Shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/status/include/75_qosify.js:81 msgid "Running — Not Shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:867 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:971 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/status/include/75_qosify.js:80 msgid "Running — Shaping Unknown" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1147 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:856 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1254 msgid "Save & Apply" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1834 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1933 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1994 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2255 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2332 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2359 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2420 msgid "Save failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1812 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1915 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1981 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2233 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2341 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2407 msgid "Saving" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1812 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2233 msgid "Saving settings and applying..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2195 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2621 msgid "Section %s already exists." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1011 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1116 msgid "" -"Section name is the class name that rules and dscp_* values refer to. " -"qosify.init reads config alias the same way as config class." +"Section name is the class name that rules and dscp_* values refer to. qosify." +"init reads config alias the same way as config class." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1733 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 msgid "Sending %s to qosify..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:814 msgid "Sent to CAKE as atm, noatm or ptm." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:838 msgid "Sent to CAKE as ether-vlan, once per tag." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:837 msgid "Sent to CAKE as mpu, in bytes." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:813 msgid "Sent to CAKE as overhead, in bytes." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:663 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 msgid "Service" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1754 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2174 msgid "Service action failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1826 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2247 msgid "Settings saved" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:723 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:826 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:998 msgid "Shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1199 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1045 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1399 msgid "Size" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:73 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:76 msgid "Skip this section" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:867 msgid "Start" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:606 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:891 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:707 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:995 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1045 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/status/include/75_qosify.js:80 msgid "Status" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:855 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:959 msgid "Status Unknown" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:869 msgid "Stop" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1167 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1277 msgid "TCP single port, or range from to " msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1689 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 msgid "The detailed tc output needs write access to this page." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:590 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1372 +msgid "The first %d entries are shown." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:691 msgid "" "The qosify UCI configuration could not be loaded — class and interface lists " "may be incomplete." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1405 msgid "" "The selected files replace the ones on the router and qosify is reloaded." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2017 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2443 msgid "" "The selected files replace the ones on the router and qosify is reloaded. " "Download a backup from this tab first if you need one." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:68 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:71 msgid "Time below bulk_trigger_pps threshold until a bulk flow mark is removed" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1411 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1632 msgid "Traffic by CAKE Tin" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1410 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1633 msgid "Traffic by Class" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:596 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1637 +msgid "Traffic by DSCP" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:697 msgid "Traffic shaping and DSCP classification via qosify" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1168 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1278 msgid "UDP single port, or range from to " msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:864 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:866 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:968 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:970 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1029 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/status/include/75_qosify.js:26 msgid "Unknown" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:507 msgid "Unknown class/DSCP target: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:820 msgid "Unticked sets disabled 1 and qosify skips this section." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:74 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:77 msgid "Uplink bandwidth (same format as tc)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:822 msgid "Uplink bandwidth, same format as tc. Set just below line speed." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1206 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1406 msgid "Upload" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1211 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1411 msgid "Upload & Apply" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2018 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1991 +msgid "Upload (egress)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2444 msgid "Upload and apply" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:822 msgid "Upload bandwidth" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2070 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2496 msgid "Upload error: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2087 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2513 msgid "Upload failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:828 msgid "Upload shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2044 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2470 msgid "Uploading" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:892 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/status/include/75_qosify.js:82 msgid "Uptime" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:86 +msgid "Use cake_mq instead of cake on devices with more than one queue" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:838 msgid "VLAN tags" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1042 msgid "Valid" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1960 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2386 msgid "Warning: %s but qosify is not shaping traffic — check the Status tab." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1699 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1716 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1733 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2119 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2136 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 msgid "Working" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1879 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2305 msgid "Write empty file" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1915 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2341 msgid "Writing config and reloading qosify..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1981 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2407 msgid "Writing rules and reloading qosify..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:633 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 msgid "" "You have read-only access to this page, so editing and service control are " "disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1655 +msgid "" +"Zero qosify's own counters (get_stats)? The CAKE tin counters belong to tc " +"and are kept." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1005 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/status/include/75_qosify.js:75 msgid "active" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1776 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2194 msgid "" -"bandwidth_down does not look like a tc rate (100mbit, 12MBps, unlimited) — " -"passing it through anyway" +"bandwidth_down does not look like a tc rate (100mbit, 12MBps; leave empty " +"for unlimited) — passing it through anyway" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1775 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 msgid "" -"bandwidth_up does not look like a tc rate (100mbit, 12MBps, unlimited) — " -"passing it through anyway" +"bandwidth_up does not look like a tc rate (100mbit, 12MBps; leave empty for " +"unlimited) — passing it through anyway" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1012 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1117 msgid "" "config device takes the same options, with name set to a netdev. nat " "defaults to 1 for interfaces and 0 for devices." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1004 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/status/include/75_qosify.js:75 msgid "device %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/status/include/75_qosify.js:76 msgid "device: %s, ingress: %s, egress: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:289 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:355 msgid "" "disabled is set to \"%s\" — config_get_bool does not recognise that, so the " "section stays enabled" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2138 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 +msgid "dump did not answer." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:803 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:821 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:841 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:842 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:843 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1267 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1299 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2564 msgid "e.g. %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1171 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1281 msgid "fnmatch() pattern supporting * and ? as wildcard characters" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1622 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2039 msgid "get_stats did not answer." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1005 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/status/include/75_qosify.js:75 msgid "inactive" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 msgid "ingress %s, egress %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:282 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:348 msgid "ingress and egress are both 0 — nothing is shaped" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1004 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/status/include/75_qosify.js:75 msgid "interface %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1155 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1262 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1298 msgid "match" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:274 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:329 +msgid "" +"mode \"%s\" is not a CAKE diffserv mode — tc refuses the qdisc, so nothing " +"is shaped although qosify reports the section active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:340 +msgid "multiqueue is set, but this qosify.init does not pass it to qosify" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:328 +msgid "" +"name \"%s\" is dropped by qosify — it takes at most %d characters and no " +"quote" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:327 msgid "" "name is not set — qosify.init sends an empty device name and this section is " "never applied" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:278 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:344 msgid "" "nat is not sent: qosify only emits nat/nonat inside the host_isolate branch. " "CAKE does accept flows plus nat — put nat in options to apply it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:279 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:345 msgid "" "nat only reaches %s — put it in options, or in both ingress_options and " "egress_options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:72 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:75 msgid "" "netifd interface (config interface) or netdev (config device) to enable QoS " "on" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:821 msgid "netifd interface to enable QoS on. Required." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1376 +msgid "never" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/status/include/75_qosify.js:36 msgid "no" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:284 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:350 msgid "no bandwidth_down or bandwidth — ingress CAKE runs unlimited" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:283 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:349 msgid "no bandwidth_up or bandwidth — egress CAKE runs unlimited" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:986 msgid "none" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:281 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:347 msgid "overhead and overhead_encap are ignored unless overhead_type is manual" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:595 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:336 +msgid "overhead_encap \"%s\" is not atm, noatm or ptm — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:333 +msgid "" +"overhead_type \"%s\" is not one qosify.init knows, so no overhead is set" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:339 +msgid "overhead_vlan \"%s\" is not 0, 1 or 2 — qosify.init adds no ether-vlan" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:696 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/status/include/75_qosify.js:39 #: applications/luci-app-qosify/root/usr/share/luci/menu.d/luci-app-qosify.json:3 msgid "qosify" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:847 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:951 msgid "" "qosify did not appear on ubus, so its config was not applied — press Reload" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:833 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:936 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2158 msgid "qosify did not come up — check the system log" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1619 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1681 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2036 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2101 msgid "qosify is not running. Start from the Overview tab." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1744 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1896 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2164 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2322 msgid "qosify is still running — leaving the qdiscs alone" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1224 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1225 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1424 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1425 msgid "qosify package template" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1262 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1634 +msgid "qosify reports packets only per class." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1462 msgid "qosify-status" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1691 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2111 msgid "qosify-status returned no output." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:979 msgid "" "rpcd is not answering for qosify — check the ACL in /usr/share/rpcd/acl.d " "and restart rpcd" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:832 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1618 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1680 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1737 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1743 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1895 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:935 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2100 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2157 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2163 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2321 msgid "rpcd is not answering for qosify, so the service state is unknown." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:955 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1059 msgid "section name" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:953 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1057 msgid "section type" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1538 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1542 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1828 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1832 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1888 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1977 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1992 msgid "share" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1319 +msgid "timeout must be a whole number of seconds above 0." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1840 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1903 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1989 msgid "total" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/status/include/75_qosify.js:36 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1267 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1299 msgid "value" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/status/include/75_qosify.js:36 msgid "yes" msgstr "" diff --git a/luci-app-qosify/po/tr/qosify.po b/luci-app-qosify/po/tr/qosify.po index db4a6da89..e06f5eb73 100644 --- a/luci-app-qosify/po/tr/qosify.po +++ b/luci-app-qosify/po/tr/qosify.po @@ -10,164 +10,217 @@ msgstr "" "PO-Revision-Date: 2026-08-31 20:56+0000\n" "X-Generator: Weblate 2026.9.dev0\n" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1255 +msgid "\"%s\" is not a value qosify accepts for %s." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:483 +msgid "" +"%d class and alias sections — qosify has %d class slots, so %s and the rules " +"using them are dropped" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "%d interface" msgid_plural "%d interfaces" msgstr[0] "" msgstr[1] "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:986 msgid "%d rule" msgid_plural "%d rules" msgstr[0] "" msgstr[1] "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:942 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:985 msgid "%d section" msgid_plural "%d sections" msgstr[0] "" msgstr[1] "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:294 +msgid "" +"%s \"%s\" is not a tc rate — tc refuses the qdisc, so nothing is shaped " +"although qosify reports the section active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:298 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:301 +msgid "%s \"%s\" is not a whole number — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 msgid "%s (current)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 msgid "%s (from bandwidth)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2085 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2288 msgid "" "%s and %s are replaced with the templates shipped by the qosify package, and " "shaping is left disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1809 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2012 msgid "" "%s came back empty although it is %d bytes on disk — refusing to overwrite it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2346 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2549 msgid "%s changed on disk — your unsaved edits are still in the editor." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2249 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2452 msgid "" "%s could not be read — the editor is left empty and will not be saved over " "it." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1833 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2036 msgid "" "%s has changed since this editor was loaded. Saving now discards those " "changes." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1864 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2067 msgid "" "%s is %d bytes on disk but was never loaded into the editor — refusing to " "truncate it. Reload the page first." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:392 msgid "%s is a list in this section — edit %s directly" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1656 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1859 msgid "" "%s is not in the defaults list — qosify does not load it, so the Rules tab " "has no effect" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:286 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:314 msgid "" "%s is set to \"%s\" — qosify converts it with atoi(), so anything but a non-" "zero number means off" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:750 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:793 msgid "%s quick settings" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2069 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2272 msgid "%s uploaded, qosify reloaded." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2103 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2306 msgid "%s was not written: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2106 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2309 msgid "%s was reset but %s was not written: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1945 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2148 msgid "%s, applied (QoS disabled)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1950 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 msgid "" "%s, applied — qosify did not answer on ubus, so shaping could not be checked." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1947 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 msgid "%s, applied." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:459 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:468 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:500 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:509 msgid "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify ignores it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:456 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:497 msgid "" "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify rejects the whole " "config and interface changes are not applied" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:465 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:506 msgid "" "%s: %s \"%s\" is not a codepoint or 0-63 — qosify drops this class and the " "rules using it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:448 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:488 +msgid "" +"%s: %s \"%s\" is not a whole number — qosify.init passes it through atoll(), " +"which keeps only the leading digits" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:486 msgid "" "%s: %s cannot be checked — write it as one plain or fully quoted value, with " "no backslash" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:451 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:492 msgid "" "%s: %s contains shell metacharacters — qosify runs the tc command with sh -c " "as root, so they would break it or be executed" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "(alias)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1304 +msgid "(over file)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 msgid "(this qosify build has no NQB)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2185 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2388 msgid "A config defaults section already exists." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2183 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2386 msgid "A section name may only contain letters, digits and underscores." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:856 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Action" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:899 msgid "Active" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:957 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1162 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1000 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1206 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1240 msgid "Add" msgstr "" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1262 +msgid "Add failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1242 +msgid "" +"Added to the running qosify at once and not saved: an entry expires after " +"its timeout (the defaults timeout when left empty) and a qosify restart " +"drops it. One on a match from the rules file overrides it until then." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +msgid "" +"Adds a line to the editor below; Save & Apply writes it to the rules file, " +"so it is kept." +msgstr "" + #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:85 msgid "Adds atm, noatm or ptm when overhead_type is manual" msgstr "" @@ -184,32 +237,32 @@ msgstr "" msgid "Adds overhead when overhead_type is manual" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:608 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:649 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:780 msgid "Advanced" msgstr "Gelişmiş" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "An empty %s stops all shaping. Continue?" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:726 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:769 msgid "Automatic download rate" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:936 msgid "Autostart" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:967 msgid "Autostart state unknown — rpcd did not answer" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 msgid "Available" msgstr "Kullanılabilir" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1196 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1334 msgid "Backup" msgstr "" @@ -219,12 +272,12 @@ msgid "" "set" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:716 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:759 msgid "Basic" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:224 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2029 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:240 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2232 msgid "Binary content rejected" msgstr "" @@ -236,7 +289,7 @@ msgstr "" msgid "CAKE egress options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "CAKE egress options, space separated." msgstr "" @@ -244,7 +297,7 @@ msgstr "" msgid "CAKE ingress options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "CAKE ingress options, space separated." msgstr "" @@ -258,104 +311,108 @@ msgid "" "overhead_encap" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "CAKE overhead keyword. Use none if unsure." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:564 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 msgid "Cancel" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1356 msgid "Check Devices" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1330 msgid "Choose file…" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1114 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1158 msgid "Classes" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1940 msgid "Cleanup exited with code %d" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1190 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear" msgstr "Temizle" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2072 msgid "Clear configuration" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear editor" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to disable autostart" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to enable autostart" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 msgid "Common CAKE options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:604 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:645 msgid "Config" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared, qosify stopped." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1915 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2118 msgid "Config saved" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2042 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2050 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2253 msgid "Config: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:566 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 msgid "Continue" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1391 msgid "Could not read %s: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:648 msgid "Counters" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1627 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1567 +msgid "Counters reset." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1830 msgid "DNS Entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d of %d)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "" "DSCP codepoints: CS0–CS7, AF11–AF43, EF, VA, NQB, LE, DF (NQB needs qosify " "from June 2026; 24.10 and 25.12 do not have it). A raw value from 0 to 63 is " @@ -387,7 +444,7 @@ msgstr "" msgid "DSCP value for priority-marked packets" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "DSCP values" msgstr "" @@ -403,12 +460,12 @@ msgstr "" msgid "Default timeout for dynamically added entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1358 msgid "Defaults" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 msgid "" "Defaults qosify applies when a key is absent — interface: mode diffserv4, " "ingress 1, egress 1, nat 1, host_isolate 1, autorate_ingress 0. device: " @@ -417,21 +474,25 @@ msgid "" "prio_max_avg_pkt_len 0 (disabled)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Description" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Device" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1914 msgid "Device check done." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1714 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1917 msgid "Device check failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:859 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Disabled" msgstr "Devre dışı" @@ -439,48 +500,52 @@ msgstr "Devre dışı" msgid "Downlink bandwidth (same format as tc)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Downlink bandwidth, same format as tc. Set just below line speed." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1247 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1393 msgid "Download" msgstr "İndir" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Download bandwidth" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:767 msgid "Download shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1197 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1335 msgid "Download the current files from the router." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1241 +msgid "Dynamic Entries" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "" "Each line has two whitespace separated fields, match and dscp. dscp can be a " "raw value, a codepoint like CS0, or a class name. DNS entries are compared " "in the order in which they are specified, using the first matching entry." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "Egress CAKE options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2223 msgid "Empty file" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 msgid "" "Empty the config editor? Nothing is written until you click Save & Apply." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "" "Empty the rules editor? Nothing is written until you click Save & Apply." msgstr "" @@ -505,94 +570,114 @@ msgstr "" msgid "Enable ingress shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Enabled" msgstr "Etkinleştirildi" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:858 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 msgid "Enabled — Not Running" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:857 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 msgid "Enabled — Not Shaping (check config)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Encapsulation overhead" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2182 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2385 msgid "Enter a section name." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2156 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2359 msgid "Enter a single IPv4 address (qosify does not accept CIDR)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2159 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2362 msgid "" "Enter a single IPv6 address (qosify does not accept CIDR or a %zone suffix)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2141 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2344 msgid "Enter a value." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1848 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1961 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1261 +msgid "Entry added." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1269 +msgid "Entry removed." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2051 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2164 msgid "Error: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1845 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2048 msgid "Error: No valid config stanzas found." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1763 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1965 msgid "" "Error: invalid characters in bandwidth or options fields. Use alphanumeric, " "spaces, hyphens, dots, colons only." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1798 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2000 msgid "Error: name must be a device or interface name" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1769 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1971 msgid "Error: overhead must be a whole number of bytes" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1970 msgid "Error: overhead_mpu must be a whole number of bytes" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2070 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2001 +msgid "Error: qosify drops a name longer than %d characters" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2273 msgid "Errors:" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 +msgid "" +"Every shaped section is looked up again, one whose device now exists is " +"started and one whose device has gone is stopped. Nothing is reported back " +"by the call — the result shows in the Service table on the Overview tab." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 msgid "File" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1832 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 msgid "File changed on disk" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2224 msgid "File too large (max 64KB)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:667 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 msgid "Files" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Found (empty or invalid)" msgstr "" @@ -600,37 +685,33 @@ msgstr "" msgid "Grant access to LuCI app qosify" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:728 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:771 msgid "Host isolation" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1169 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1216 msgid "IPv4 address, e.g. 1.1.1.1" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1170 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 msgid "IPv6 address, e.g. ff01::1" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "Ingress CAKE options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Interface" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:741 -msgid "Invalid CAKE options can stop qosify starting." -msgstr "" - -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1173 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1220 msgid "Like dns:... but only matches cname entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:228 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:244 msgid "" "Line %d is longer than 1023 characters — the rule loader reads fixed-size " "lines and would split it, comment included" @@ -640,28 +721,29 @@ msgstr "" msgid "List of files with port/IP/host mappings" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 msgid "Loading..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1212 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1350 msgid "Maintenance" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Manual overhead" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "Mapping file syntax" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1692 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1895 msgid "Mapping files reloaded." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:434 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:462 msgid "" "Match not loaded by qosify on line %s — ports 1-65534, one IPv4/IPv6 address " "(no CIDR or %%zone), or dns:, dns_c:" @@ -671,84 +753,93 @@ msgstr "" msgid "Maximum average packet length for marking a flow as priority" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Minimum packet unit (MPU)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Missing" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Modified" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:433 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:461 msgid "" "More than two fields on line %s — qosify reads the rest of the line as the " "DSCP value and skips it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:770 msgid "NAT awareness" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Netdev to enable QoS on. Required." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No CAKE tin statistics." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1628 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1831 msgid "No DNS entries." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:432 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:460 msgid "No DSCP target on line %s — qosify skips single-field lines" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1107 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +msgid "No DSCP traffic yet." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1151 msgid "No classes defined in %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2142 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1257 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2345 msgid "No classes defined. Add classes in the Config tab first." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1192 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1294 +msgid "No dynamic entries." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1328 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1329 msgid "No file selected" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2209 msgid "No files selected." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No output." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 msgid "No per-class counters." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2357 msgid "No spaces or # allowed in patterns or addresses." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2030 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2233 msgid "No valid UCI config stanzas" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:913 msgid "Not Running" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1973 msgid "Note: bandwidth not set — CAKE will run unlimited on that direction." msgstr "" @@ -756,264 +847,279 @@ msgstr "" msgid "Number of packets per second to trigger bulk flow detection" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1161 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1174 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1221 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1238 msgid "Only override the DSCP value if it is zero" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:704 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:747 msgid "" "Only sent with host isolation on — add nat to common CAKE options to force it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1017 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1060 msgid "Options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:730 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:773 msgid "Overhead" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "Overhead preset" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:603 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:644 msgid "Overview" msgstr "Genel bakış" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1834 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2037 msgid "Overwrite" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2007 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2210 msgid "Overwrite config files" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1172 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 msgid "" "POSIX.2 extended regular expression for matching hostnames. Only works if " "dns lookups are passed to qosify via the add_dns_host ubus call." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2353 msgid "Port must be 1-65534 (qosify rejects 65535)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2149 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2349 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2352 msgid "Port must be a number or a range (4500, 5060-5061)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "QoS Enabled" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:721 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 msgid "Queueing mode" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1163 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1209 msgid "Quick Add" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1016 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1059 msgid "Quick Add: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2356 msgid "Range start must not exceed end." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 msgid "Re-check devices" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 msgid "Re-checking devices..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:811 msgid "Re-read the mapping files only" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 msgid "Re-reading the mapping files..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 -msgid "" -"Re-runs the daemon's own device pass: every shaped section is looked up " -"again, one whose device now exists is started and one whose device has gone " -"is stopped. Nothing is reported back by the call — the result shows in the " -"Service table on the Overview tab." +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1351 +msgid "Re-runs the daemon's own device pass." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2024 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2227 msgid "Read error" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Reading and validating files..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1681 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1884 msgid "Reading tc output..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1019 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1062 msgid "Reference" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload Rules" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1695 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1898 msgid "Reload failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1306 +msgid "Remove" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1270 +msgid "Remove failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 +msgid "Replaced with" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "Requires write access." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2086 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1365 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2289 msgid "Reset" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2120 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1554 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "Reset counters" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2323 msgid "Reset failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2084 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2287 msgid "Reset to defaults" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2116 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2319 msgid "Reset to defaults, applied." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Resetting" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Restart" msgstr "Yeniden Başlat" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1203 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1341 msgid "Restore" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 -msgid "Restore qosify defaults" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1359 +msgid "Restore qosify defaults. Shaping is left disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Restoring defaults..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:646 msgid "Rules" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1976 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2179 msgid "Rules saved" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2053 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2056 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2256 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2259 msgid "Rules: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:868 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:911 msgid "Running & Shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:912 msgid "Running — Not Shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:867 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:910 msgid "Running — Shaping Unknown" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1147 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:796 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 msgid "Save & Apply" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1825 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1897 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1924 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1985 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2028 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2100 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2127 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2188 msgid "Save failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Saving" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 msgid "Saving settings and applying..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2186 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2389 msgid "Section %s already exists." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1011 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1054 msgid "" "Section name is the class name that rules and dscp_* values refer to. " "qosify.init reads config alias the same way as config class." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Sending %s to qosify..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Sent to CAKE as atm, noatm or ptm." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "Sent to CAKE as ether-vlan, once per tag." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Sent to CAKE as mpu, in bytes." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Sent to CAKE as overhead, in bytes." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:663 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:706 msgid "Service" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1745 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1948 msgid "Service action failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1817 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 msgid "Settings saved" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:723 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:937 msgid "Shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Size" msgstr "" @@ -1021,44 +1127,48 @@ msgstr "" msgid "Skip this section" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Start" msgstr "Başlat" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:606 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:891 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:647 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:934 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Status" msgstr "Durum" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:855 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:898 msgid "Status Unknown" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:809 msgid "Stop" msgstr "Durdur" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1167 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 msgid "TCP single port, or range from to " msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1680 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1883 msgid "The detailed tc output needs write access to this page." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:590 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1309 +msgid "The first %d entries are shown." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:631 msgid "" "The qosify UCI configuration could not be loaded — class and interface lists " "may be incomplete." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1342 msgid "" "The selected files replace the ones on the router and qosify is reloaded." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2008 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2211 msgid "" "The selected files replace the ones on the router and qosify is reloaded. " "Download a backup from this tab first if you need one." @@ -1068,33 +1178,37 @@ msgstr "" msgid "Time below bulk_trigger_pps threshold until a bulk flow mark is removed" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 msgid "Traffic by CAKE Tin" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1401 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1548 msgid "Traffic by Class" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:596 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1549 +msgid "Traffic by DSCP" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:637 msgid "Traffic shaping and DSCP classification via qosify" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1168 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 msgid "UDP single port, or range from to " msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:864 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:866 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:907 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:909 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:968 msgid "Unknown" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 msgid "Unknown class/DSCP target: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "Unticked sets disabled 1 and qosify skips this section." msgstr "" @@ -1102,169 +1216,193 @@ msgstr "" msgid "Uplink bandwidth (same format as tc)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Uplink bandwidth, same format as tc. Set just below line speed." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 msgid "Upload" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1348 msgid "Upload & Apply" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2009 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2212 msgid "Upload and apply" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Upload bandwidth" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2061 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2264 msgid "Upload error: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2078 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2281 msgid "Upload failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 msgid "Upload shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Uploading" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:892 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:935 msgid "Uptime" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "VLAN tags" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Valid" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1951 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 msgid "Warning: %s but qosify is not shaping traffic — check the Status tab." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Working" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "Write empty file" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 msgid "Writing config and reloading qosify..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Writing rules and reloading qosify..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:633 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:675 msgid "" "You have read-only access to this page, so editing and service control are " "disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "" +"Zero qosify's own counters (get_stats)? The CAKE tin counters belong to tc " +"and are kept." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 msgid "active" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1969 msgid "" "bandwidth_down does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1968 msgid "" "bandwidth_up does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1012 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1055 msgid "" "config device takes the same options, with name set to a netdev. nat " "defaults to 1 for interfaces and 0 for devices." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "device %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "device: %s, ingress: %s, egress: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:289 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:317 msgid "" "disabled is set to \"%s\" — config_get_bool does not recognise that, so the " "section stays enabled" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2129 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +msgid "dump did not answer." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2332 msgid "e.g. %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1171 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 msgid "fnmatch() pattern supporting * and ? as wildcard characters" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1613 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1816 msgid "get_stats did not answer." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 msgid "inactive" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "ingress %s, egress %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:282 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:310 msgid "ingress and egress are both 0 — nothing is shaped" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "interface %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1155 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1199 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1235 msgid "match" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:274 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:292 +msgid "" +"mode \"%s\" is not a CAKE diffserv mode — tc refuses the qdisc, so nothing " +"is shaped although qosify reports the section active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:291 +msgid "" +"name \"%s\" is dropped by qosify — it takes at most %d characters and no " +"quote" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:290 msgid "" "name is not set — qosify.init sends an empty device name and this section is " "never applied" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:278 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:306 msgid "" "nat is not sent: qosify only emits nat/nonat inside the host_isolate branch. " "CAKE does accept flows plus nat — put nat in options to apply it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:279 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:307 msgid "" "nat only reaches %s — put it in options, or in both ingress_options and " "egress_options" @@ -1276,100 +1414,129 @@ msgid "" "on" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "netifd interface to enable QoS on. Required." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1313 +msgid "never" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "no" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:284 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:312 msgid "no bandwidth_down or bandwidth — ingress CAKE runs unlimited" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:283 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:311 msgid "no bandwidth_up or bandwidth — egress CAKE runs unlimited" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "none" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:281 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:309 msgid "overhead and overhead_encap are ignored unless overhead_type is manual" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:595 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:299 +msgid "overhead_encap \"%s\" is not atm, noatm or ptm — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:296 +msgid "" +"overhead_type \"%s\" is not one qosify.init knows, so no overhead is set" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:302 +msgid "overhead_vlan \"%s\" is not 0, 1 or 2 — qosify.init adds no ether-vlan" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:636 #: applications/luci-app-qosify/root/usr/share/luci/menu.d/luci-app-qosify.json:3 msgid "qosify" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:847 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:890 msgid "" "qosify did not appear on ubus, so its config was not applied — press Reload" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:833 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1729 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:876 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1932 msgid "qosify did not come up — check the system log" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1610 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1672 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1813 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1875 msgid "qosify is not running. Start from the Overview tab." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1735 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1887 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2090 msgid "qosify is still running — leaving the qdiscs alone" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1253 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1361 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1362 +msgid "qosify package template" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1399 msgid "qosify-status" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1885 msgid "qosify-status returned no output." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:918 msgid "" "rpcd is not answering for qosify — check the ACL in /usr/share/rpcd/acl.d " "and restart rpcd" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:832 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1609 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1671 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1728 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1734 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1886 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1812 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1874 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1931 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1937 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2089 msgid "rpcd is not answering for qosify, so the service state is unknown." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:955 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:998 msgid "section name" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:953 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:996 msgid "section type" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1529 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1533 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1731 msgid "share" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1541 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1256 +msgid "timeout must be a whole number of seconds above 0." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1739 msgid "total" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 msgid "value" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "yes" msgstr "" diff --git a/luci-app-qosify/po/uk/qosify.po b/luci-app-qosify/po/uk/qosify.po index dffadd21c..a29df6d2b 100644 --- a/luci-app-qosify/po/uk/qosify.po +++ b/luci-app-qosify/po/uk/qosify.po @@ -11,167 +11,220 @@ msgstr "" "PO-Revision-Date: 2026-10-04 08:24+0000\n" "X-Generator: Weblate 2026.10.1.dev0\n" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1255 +msgid "\"%s\" is not a value qosify accepts for %s." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:483 +msgid "" +"%d class and alias sections — qosify has %d class slots, so %s and the rules " +"using them are dropped" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "%d interface" msgid_plural "%d interfaces" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:986 msgid "%d rule" msgid_plural "%d rules" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:942 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:985 msgid "%d section" msgid_plural "%d sections" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:294 +msgid "" +"%s \"%s\" is not a tc rate — tc refuses the qdisc, so nothing is shaped " +"although qosify reports the section active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:298 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:301 +msgid "%s \"%s\" is not a whole number — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 msgid "%s (current)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 msgid "%s (from bandwidth)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2085 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2288 msgid "" "%s and %s are replaced with the templates shipped by the qosify package, and " "shaping is left disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1809 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2012 msgid "" "%s came back empty although it is %d bytes on disk — refusing to overwrite it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2346 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2549 msgid "%s changed on disk — your unsaved edits are still in the editor." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2249 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2452 msgid "" "%s could not be read — the editor is left empty and will not be saved over " "it." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1833 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2036 msgid "" "%s has changed since this editor was loaded. Saving now discards those " "changes." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1864 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2067 msgid "" "%s is %d bytes on disk but was never loaded into the editor — refusing to " "truncate it. Reload the page first." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:392 msgid "%s is a list in this section — edit %s directly" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1656 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1859 msgid "" "%s is not in the defaults list — qosify does not load it, so the Rules tab " "has no effect" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:286 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:314 msgid "" "%s is set to \"%s\" — qosify converts it with atoi(), so anything but a non-" "zero number means off" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:750 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:793 msgid "%s quick settings" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2069 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2272 msgid "%s uploaded, qosify reloaded." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2103 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2306 msgid "%s was not written: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2106 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2309 msgid "%s was reset but %s was not written: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1945 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2148 msgid "%s, applied (QoS disabled)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1950 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 msgid "" "%s, applied — qosify did not answer on ubus, so shaping could not be checked." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1947 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 msgid "%s, applied." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:459 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:468 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:500 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:509 msgid "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify ignores it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:456 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:497 msgid "" "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify rejects the whole " "config and interface changes are not applied" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:465 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:506 msgid "" "%s: %s \"%s\" is not a codepoint or 0-63 — qosify drops this class and the " "rules using it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:448 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:488 +msgid "" +"%s: %s \"%s\" is not a whole number — qosify.init passes it through atoll(), " +"which keeps only the leading digits" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:486 msgid "" "%s: %s cannot be checked — write it as one plain or fully quoted value, with " "no backslash" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:451 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:492 msgid "" "%s: %s contains shell metacharacters — qosify runs the tc command with sh -c " "as root, so they would break it or be executed" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "(alias)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1304 +msgid "(over file)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 msgid "(this qosify build has no NQB)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2185 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2388 msgid "A config defaults section already exists." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2183 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2386 msgid "A section name may only contain letters, digits and underscores." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:856 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Action" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:899 msgid "Active" msgstr "Активний" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:957 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1162 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1000 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1206 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1240 msgid "Add" msgstr "Додати" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1262 +msgid "Add failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1242 +msgid "" +"Added to the running qosify at once and not saved: an entry expires after " +"its timeout (the defaults timeout when left empty) and a qosify restart " +"drops it. One on a match from the rules file overrides it until then." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +msgid "" +"Adds a line to the editor below; Save & Apply writes it to the rules file, " +"so it is kept." +msgstr "" + #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:85 msgid "Adds atm, noatm or ptm when overhead_type is manual" msgstr "" @@ -188,32 +241,32 @@ msgstr "" msgid "Adds overhead when overhead_type is manual" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:608 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:649 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:780 msgid "Advanced" msgstr "Розширені" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "An empty %s stops all shaping. Continue?" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:726 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:769 msgid "Automatic download rate" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:936 msgid "Autostart" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:967 msgid "Autostart state unknown — rpcd did not answer" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 msgid "Available" msgstr "Доступно" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1196 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1334 msgid "Backup" msgstr "Резервна копія" @@ -223,12 +276,12 @@ msgid "" "set" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:716 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:759 msgid "Basic" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:224 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2029 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:240 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2232 msgid "Binary content rejected" msgstr "" @@ -240,7 +293,7 @@ msgstr "" msgid "CAKE egress options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "CAKE egress options, space separated." msgstr "" @@ -248,7 +301,7 @@ msgstr "" msgid "CAKE ingress options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "CAKE ingress options, space separated." msgstr "" @@ -262,104 +315,108 @@ msgid "" "overhead_encap" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "CAKE overhead keyword. Use none if unsure." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:564 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 msgid "Cancel" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1356 msgid "Check Devices" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1330 msgid "Choose file…" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1114 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1158 msgid "Classes" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1940 msgid "Cleanup exited with code %d" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1190 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear" msgstr "Очистити" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2072 msgid "Clear configuration" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear editor" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to disable autostart" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to enable autostart" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 msgid "Common CAKE options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:604 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:645 msgid "Config" msgstr "Конфігурація" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared, qosify stopped." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1915 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2118 msgid "Config saved" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2042 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2050 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2253 msgid "Config: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:566 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 msgid "Continue" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1391 msgid "Could not read %s: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:648 msgid "Counters" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1627 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1567 +msgid "Counters reset." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1830 msgid "DNS Entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d of %d)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "" "DSCP codepoints: CS0–CS7, AF11–AF43, EF, VA, NQB, LE, DF (NQB needs qosify " "from June 2026; 24.10 and 25.12 do not have it). A raw value from 0 to 63 is " @@ -391,7 +448,7 @@ msgstr "" msgid "DSCP value for priority-marked packets" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "DSCP values" msgstr "" @@ -407,12 +464,12 @@ msgstr "" msgid "Default timeout for dynamically added entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1358 msgid "Defaults" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 msgid "" "Defaults qosify applies when a key is absent — interface: mode diffserv4, " "ingress 1, egress 1, nat 1, host_isolate 1, autorate_ingress 0. device: " @@ -421,21 +478,25 @@ msgid "" "prio_max_avg_pkt_len 0 (disabled)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Description" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Device" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1914 msgid "Device check done." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1714 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1917 msgid "Device check failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:859 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Disabled" msgstr "Вимкнено" @@ -443,48 +504,52 @@ msgstr "Вимкнено" msgid "Downlink bandwidth (same format as tc)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Downlink bandwidth, same format as tc. Set just below line speed." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1247 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1393 msgid "Download" msgstr "Завантажити" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Download bandwidth" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:767 msgid "Download shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1197 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1335 msgid "Download the current files from the router." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1241 +msgid "Dynamic Entries" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "" "Each line has two whitespace separated fields, match and dscp. dscp can be a " "raw value, a codepoint like CS0, or a class name. DNS entries are compared " "in the order in which they are specified, using the first matching entry." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "Egress CAKE options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2223 msgid "Empty file" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 msgid "" "Empty the config editor? Nothing is written until you click Save & Apply." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "" "Empty the rules editor? Nothing is written until you click Save & Apply." msgstr "" @@ -509,94 +574,114 @@ msgstr "" msgid "Enable ingress shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Enabled" msgstr "Увімкнено" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:858 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 msgid "Enabled — Not Running" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:857 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 msgid "Enabled — Not Shaping (check config)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Encapsulation overhead" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2182 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2385 msgid "Enter a section name." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2156 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2359 msgid "Enter a single IPv4 address (qosify does not accept CIDR)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2159 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2362 msgid "" "Enter a single IPv6 address (qosify does not accept CIDR or a %zone suffix)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2141 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2344 msgid "Enter a value." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1848 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1961 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1261 +msgid "Entry added." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1269 +msgid "Entry removed." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2051 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2164 msgid "Error: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1845 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2048 msgid "Error: No valid config stanzas found." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1763 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1965 msgid "" "Error: invalid characters in bandwidth or options fields. Use alphanumeric, " "spaces, hyphens, dots, colons only." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1798 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2000 msgid "Error: name must be a device or interface name" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1769 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1971 msgid "Error: overhead must be a whole number of bytes" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1970 msgid "Error: overhead_mpu must be a whole number of bytes" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2070 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2001 +msgid "Error: qosify drops a name longer than %d characters" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2273 msgid "Errors:" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 +msgid "" +"Every shaped section is looked up again, one whose device now exists is " +"started and one whose device has gone is stopped. Nothing is reported back " +"by the call — the result shows in the Service table on the Overview tab." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 msgid "File" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1832 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 msgid "File changed on disk" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2224 msgid "File too large (max 64KB)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:667 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 msgid "Files" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Found (empty or invalid)" msgstr "" @@ -604,37 +689,33 @@ msgstr "" msgid "Grant access to LuCI app qosify" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:728 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:771 msgid "Host isolation" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1169 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1216 msgid "IPv4 address, e.g. 1.1.1.1" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1170 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 msgid "IPv6 address, e.g. ff01::1" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "Ingress CAKE options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Interface" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:741 -msgid "Invalid CAKE options can stop qosify starting." -msgstr "" - -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1173 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1220 msgid "Like dns:... but only matches cname entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:228 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:244 msgid "" "Line %d is longer than 1023 characters — the rule loader reads fixed-size " "lines and would split it, comment included" @@ -644,28 +725,29 @@ msgstr "" msgid "List of files with port/IP/host mappings" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 msgid "Loading..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1212 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1350 msgid "Maintenance" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Manual overhead" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "Mapping file syntax" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1692 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1895 msgid "Mapping files reloaded." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:434 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:462 msgid "" "Match not loaded by qosify on line %s — ports 1-65534, one IPv4/IPv6 address " "(no CIDR or %%zone), or dns:, dns_c:" @@ -675,84 +757,93 @@ msgstr "" msgid "Maximum average packet length for marking a flow as priority" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Minimum packet unit (MPU)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Missing" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Modified" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:433 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:461 msgid "" "More than two fields on line %s — qosify reads the rest of the line as the " "DSCP value and skips it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:770 msgid "NAT awareness" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Netdev to enable QoS on. Required." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No CAKE tin statistics." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1628 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1831 msgid "No DNS entries." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:432 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:460 msgid "No DSCP target on line %s — qosify skips single-field lines" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1107 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +msgid "No DSCP traffic yet." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1151 msgid "No classes defined in %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2142 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1257 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2345 msgid "No classes defined. Add classes in the Config tab first." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1192 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1294 +msgid "No dynamic entries." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1328 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1329 msgid "No file selected" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2209 msgid "No files selected." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No output." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 msgid "No per-class counters." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2357 msgid "No spaces or # allowed in patterns or addresses." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2030 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2233 msgid "No valid UCI config stanzas" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:913 msgid "Not Running" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1973 msgid "Note: bandwidth not set — CAKE will run unlimited on that direction." msgstr "" @@ -760,264 +851,279 @@ msgstr "" msgid "Number of packets per second to trigger bulk flow detection" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1161 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1174 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1221 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1238 msgid "Only override the DSCP value if it is zero" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:704 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:747 msgid "" "Only sent with host isolation on — add nat to common CAKE options to force it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1017 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1060 msgid "Options" msgstr "Опції" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:730 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:773 msgid "Overhead" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "Overhead preset" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:603 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:644 msgid "Overview" msgstr "Огляд" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1834 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2037 msgid "Overwrite" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2007 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2210 msgid "Overwrite config files" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1172 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 msgid "" "POSIX.2 extended regular expression for matching hostnames. Only works if " "dns lookups are passed to qosify via the add_dns_host ubus call." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2353 msgid "Port must be 1-65534 (qosify rejects 65535)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2149 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2349 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2352 msgid "Port must be a number or a range (4500, 5060-5061)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "QoS Enabled" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:721 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 msgid "Queueing mode" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1163 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1209 msgid "Quick Add" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1016 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1059 msgid "Quick Add: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2356 msgid "Range start must not exceed end." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 msgid "Re-check devices" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 msgid "Re-checking devices..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:811 msgid "Re-read the mapping files only" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 msgid "Re-reading the mapping files..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 -msgid "" -"Re-runs the daemon's own device pass: every shaped section is looked up " -"again, one whose device now exists is started and one whose device has gone " -"is stopped. Nothing is reported back by the call — the result shows in the " -"Service table on the Overview tab." +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1351 +msgid "Re-runs the daemon's own device pass." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2024 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2227 msgid "Read error" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Reading and validating files..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1681 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1884 msgid "Reading tc output..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1019 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1062 msgid "Reference" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload" msgstr "Перезавантажити" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload Rules" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1695 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1898 msgid "Reload failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1306 +msgid "Remove" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1270 +msgid "Remove failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 +msgid "Replaced with" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "Requires write access." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2086 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1365 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2289 msgid "Reset" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2120 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1554 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "Reset counters" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2323 msgid "Reset failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2084 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2287 msgid "Reset to defaults" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2116 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2319 msgid "Reset to defaults, applied." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Resetting" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Restart" msgstr "Перезапустити" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1203 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1341 msgid "Restore" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 -msgid "Restore qosify defaults" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1359 +msgid "Restore qosify defaults. Shaping is left disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Restoring defaults..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:646 msgid "Rules" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1976 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2179 msgid "Rules saved" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2053 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2056 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2256 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2259 msgid "Rules: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:868 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:911 msgid "Running & Shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:912 msgid "Running — Not Shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:867 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:910 msgid "Running — Shaping Unknown" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1147 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:796 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 msgid "Save & Apply" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1825 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1897 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1924 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1985 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2028 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2100 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2127 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2188 msgid "Save failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Saving" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 msgid "Saving settings and applying..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2186 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2389 msgid "Section %s already exists." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1011 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1054 msgid "" "Section name is the class name that rules and dscp_* values refer to. " "qosify.init reads config alias the same way as config class." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Sending %s to qosify..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Sent to CAKE as atm, noatm or ptm." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "Sent to CAKE as ether-vlan, once per tag." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Sent to CAKE as mpu, in bytes." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Sent to CAKE as overhead, in bytes." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:663 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:706 msgid "Service" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1745 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1948 msgid "Service action failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1817 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 msgid "Settings saved" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:723 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:937 msgid "Shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Size" msgstr "" @@ -1025,44 +1131,48 @@ msgstr "" msgid "Skip this section" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Start" msgstr "Почати" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:606 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:891 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:647 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:934 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Status" msgstr "Стан" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:855 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:898 msgid "Status Unknown" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:809 msgid "Stop" msgstr "Зупинити" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1167 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 msgid "TCP single port, or range from to " msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1680 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1883 msgid "The detailed tc output needs write access to this page." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:590 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1309 +msgid "The first %d entries are shown." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:631 msgid "" "The qosify UCI configuration could not be loaded — class and interface lists " "may be incomplete." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1342 msgid "" "The selected files replace the ones on the router and qosify is reloaded." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2008 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2211 msgid "" "The selected files replace the ones on the router and qosify is reloaded. " "Download a backup from this tab first if you need one." @@ -1072,33 +1182,37 @@ msgstr "" msgid "Time below bulk_trigger_pps threshold until a bulk flow mark is removed" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 msgid "Traffic by CAKE Tin" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1401 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1548 msgid "Traffic by Class" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:596 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1549 +msgid "Traffic by DSCP" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:637 msgid "Traffic shaping and DSCP classification via qosify" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1168 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 msgid "UDP single port, or range from to " msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:864 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:866 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:907 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:909 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:968 msgid "Unknown" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 msgid "Unknown class/DSCP target: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "Unticked sets disabled 1 and qosify skips this section." msgstr "" @@ -1106,169 +1220,193 @@ msgstr "" msgid "Uplink bandwidth (same format as tc)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Uplink bandwidth, same format as tc. Set just below line speed." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 msgid "Upload" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1348 msgid "Upload & Apply" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2009 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2212 msgid "Upload and apply" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Upload bandwidth" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2061 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2264 msgid "Upload error: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2078 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2281 msgid "Upload failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 msgid "Upload shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Uploading" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:892 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:935 msgid "Uptime" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "VLAN tags" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Valid" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1951 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 msgid "Warning: %s but qosify is not shaping traffic — check the Status tab." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Working" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "Write empty file" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 msgid "Writing config and reloading qosify..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Writing rules and reloading qosify..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:633 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:675 msgid "" "You have read-only access to this page, so editing and service control are " "disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "" +"Zero qosify's own counters (get_stats)? The CAKE tin counters belong to tc " +"and are kept." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 msgid "active" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1969 msgid "" "bandwidth_down does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1968 msgid "" "bandwidth_up does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1012 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1055 msgid "" "config device takes the same options, with name set to a netdev. nat " "defaults to 1 for interfaces and 0 for devices." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "device %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "device: %s, ingress: %s, egress: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:289 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:317 msgid "" "disabled is set to \"%s\" — config_get_bool does not recognise that, so the " "section stays enabled" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2129 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +msgid "dump did not answer." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2332 msgid "e.g. %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1171 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 msgid "fnmatch() pattern supporting * and ? as wildcard characters" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1613 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1816 msgid "get_stats did not answer." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 msgid "inactive" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "ingress %s, egress %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:282 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:310 msgid "ingress and egress are both 0 — nothing is shaped" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "interface %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1155 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1199 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1235 msgid "match" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:274 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:292 +msgid "" +"mode \"%s\" is not a CAKE diffserv mode — tc refuses the qdisc, so nothing " +"is shaped although qosify reports the section active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:291 +msgid "" +"name \"%s\" is dropped by qosify — it takes at most %d characters and no " +"quote" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:290 msgid "" "name is not set — qosify.init sends an empty device name and this section is " "never applied" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:278 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:306 msgid "" "nat is not sent: qosify only emits nat/nonat inside the host_isolate branch. " "CAKE does accept flows plus nat — put nat in options to apply it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:279 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:307 msgid "" "nat only reaches %s — put it in options, or in both ingress_options and " "egress_options" @@ -1280,100 +1418,129 @@ msgid "" "on" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "netifd interface to enable QoS on. Required." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1313 +msgid "never" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "no" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:284 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:312 msgid "no bandwidth_down or bandwidth — ingress CAKE runs unlimited" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:283 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:311 msgid "no bandwidth_up or bandwidth — egress CAKE runs unlimited" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "none" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:281 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:309 msgid "overhead and overhead_encap are ignored unless overhead_type is manual" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:595 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:299 +msgid "overhead_encap \"%s\" is not atm, noatm or ptm — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:296 +msgid "" +"overhead_type \"%s\" is not one qosify.init knows, so no overhead is set" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:302 +msgid "overhead_vlan \"%s\" is not 0, 1 or 2 — qosify.init adds no ether-vlan" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:636 #: applications/luci-app-qosify/root/usr/share/luci/menu.d/luci-app-qosify.json:3 msgid "qosify" msgstr "qosify" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:847 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:890 msgid "" "qosify did not appear on ubus, so its config was not applied — press Reload" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:833 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1729 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:876 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1932 msgid "qosify did not come up — check the system log" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1610 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1672 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1813 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1875 msgid "qosify is not running. Start from the Overview tab." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1735 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1887 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2090 msgid "qosify is still running — leaving the qdiscs alone" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1253 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1361 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1362 +msgid "qosify package template" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1399 msgid "qosify-status" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1885 msgid "qosify-status returned no output." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:918 msgid "" "rpcd is not answering for qosify — check the ACL in /usr/share/rpcd/acl.d " "and restart rpcd" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:832 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1609 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1671 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1728 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1734 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1886 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1812 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1874 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1931 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1937 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2089 msgid "rpcd is not answering for qosify, so the service state is unknown." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:955 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:998 msgid "section name" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:953 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:996 msgid "section type" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1529 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1533 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1731 msgid "share" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1541 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1256 +msgid "timeout must be a whole number of seconds above 0." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1739 msgid "total" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 msgid "value" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "yes" msgstr "" diff --git a/luci-app-qosify/po/zh_Hans/qosify.po b/luci-app-qosify/po/zh_Hans/qosify.po index 771b2786a..5f8a41a63 100644 --- a/luci-app-qosify/po/zh_Hans/qosify.po +++ b/luci-app-qosify/po/zh_Hans/qosify.po @@ -8,134 +8,166 @@ msgstr "" "Language-Team: Chinese (Simplified Han script) \n" "Plural-Forms: nplurals=1; plural=0;\n" -"PO-Revision-Date: 2026-09-29 12:10+0000\n" -"X-Generator: Weblate 2026.10.dev0\n" +"PO-Revision-Date: 2026-10-25 22:46+0000\n" +"X-Generator: Weblate 2026.11.dev0\n" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1255 +msgid "\"%s\" is not a value qosify accepts for %s." +msgstr "\"%s\" 不是一个 qosify 接受的 %s 的值。" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:483 +msgid "" +"%d class and alias sections — qosify has %d class slots, so %s and the rules " +"using them are dropped" +msgstr "%d 类和别称部分 —— qosify 有 %d 个类插槽,因此 %s 和使用它们的规则被丢弃" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "%d interface" msgid_plural "%d interfaces" msgstr[0] "%d 个接口" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:986 msgid "%d rule" msgid_plural "%d rules" msgstr[0] "%d 条规则" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:942 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:985 msgid "%d section" msgid_plural "%d sections" msgstr[0] "%d 个选中" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:294 +msgid "" +"%s \"%s\" is not a tc rate — tc refuses the qdisc, so nothing is shaped " +"although qosify reports the section active" +msgstr "" +"%s \"%s\" 不是流量控制(tc)速率 —— tc 拒绝 qdisc,因此虽然 qosify 报告该部分" +"活跃,但没有流量被整形" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:298 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:301 +msgid "%s \"%s\" is not a whole number — tc refuses the qdisc" +msgstr "%s \"%s\" 不是整数 —— tc 拒绝 qdisc" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 msgid "%s (current)" msgstr "%s (当前)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 msgid "%s (from bandwidth)" msgstr "%s (来自带宽)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2085 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2288 msgid "" "%s and %s are replaced with the templates shipped by the qosify package, and " "shaping is left disabled." msgstr "qosify 包内置的模板替换了 %s 和 %s,流量整形被禁用。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1809 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2012 msgid "" "%s came back empty although it is %d bytes on disk — refusing to overwrite it" msgstr "%s 在磁盘上大小为 %d 字节,但返回大小为空 — 拒绝覆盖它" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2346 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2549 msgid "%s changed on disk — your unsaved edits are still in the editor." msgstr "%s 在磁盘上已改变 — 未保存的编辑仍在编辑器中。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2249 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2452 msgid "" "%s could not be read — the editor is left empty and will not be saved over " "it." msgstr "%s 无法读取 — 编辑器无内容,不会覆盖保存。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1833 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2036 msgid "" "%s has changed since this editor was loaded. Saving now discards those " "changes." msgstr "%s 自该编辑器加载以来已更改。立刻保存会丢弃这些更改。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1864 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2067 msgid "" "%s is %d bytes on disk but was never loaded into the editor — refusing to " "truncate it. Reload the page first." msgstr "%s 在磁盘上大小为 %d 字节— 拒绝截断它。请先重新加载页面。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:392 msgid "%s is a list in this section — edit %s directly" msgstr "%s 是该部分的一个列表 — 直接编辑 %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1656 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1859 msgid "" "%s is not in the defaults list — qosify does not load it, so the Rules tab " "has no effect" msgstr "%s 不在默认列表中— qosify 不加载它,因此规则标签页无效果" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:286 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:314 msgid "" "%s is set to \"%s\" — qosify converts it with atoi(), so anything but a non-" "zero number means off" msgstr "%s 设为 \"%s\" — qosify 用 atoi() 转换它,因此仅非零数字表示开启" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:750 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:793 msgid "%s quick settings" msgstr "%s 快速设置" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2069 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2272 msgid "%s uploaded, qosify reloaded." msgstr "%s 已上传, qosify 已重载。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2103 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2306 msgid "%s was not written: %s" msgstr "%s 未被写入: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2106 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2309 msgid "%s was reset but %s was not written: %s" msgstr "%s 被重置 %s 未被写入: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1945 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2148 msgid "%s, applied (QoS disabled)." msgstr "%s, 已应用 (已禁用 QoS)。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1950 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 msgid "" "%s, applied — qosify did not answer on ubus, so shaping could not be checked." msgstr "%s, 已应用 — qosify 未响响应 ubus,因此无法检查流量整形。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1947 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 msgid "%s, applied." msgstr "%s, 已应用。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:459 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:468 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:500 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:509 msgid "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify ignores it" msgstr "%s: %s \"%s\" 不是类、代码点或 0-63 — qosify 忽略它" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:456 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:497 msgid "" "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify rejects the whole " "config and interface changes are not applied" -msgstr "%s: %s \"%s\" 不是类、代码点或 0-63 — qosify 拒绝整个配置,接口更改未应用" +msgstr "" +"%s: %s \"%s\" 不是类、代码点或 0-63 — qosify 拒绝整个配置,接口更改未应用" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:465 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:506 msgid "" "%s: %s \"%s\" is not a codepoint or 0-63 — qosify drops this class and the " "rules using it" msgstr "%s: %s \"%s\" 不是代码点或 0-63 — qosify 丢弃该类和使用它的规则" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:448 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:488 +msgid "" +"%s: %s \"%s\" is not a whole number — qosify.init passes it through atoll(), " +"which keeps only the leading digits" +msgstr "" +"%s: %s \"%s\" 不是整数 —— qosify.init 通过 atoll() 传递它,atoll() 仅保留开头" +"的数字" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:486 msgid "" "%s: %s cannot be checked — write it as one plain or fully quoted value, with " "no backslash" msgstr "%s: 无法检查 %s— 将其写成纯文本或前后带引号的值,没有反斜杠" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:451 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:492 msgid "" "%s: %s contains shell metacharacters — qosify runs the tc command with sh -c " "as root, so they would break it or be executed" @@ -143,31 +175,57 @@ msgstr "" "%s: %s 包含 shell 元字符— qosify 用 sh -c 以 root 用户身份运行 tc 命令,因此" "它们会破坏或执行该命令" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "(alias)" msgstr "(别名)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1304 +msgid "(over file)" +msgstr "(over file)" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 msgid "(this qosify build has no NQB)" msgstr "(这个 qosify 版本没有 NQB)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2185 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2388 msgid "A config defaults section already exists." msgstr "已存在一个配置默认部分。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2183 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2386 msgid "A section name may only contain letters, digits and underscores." msgstr "部分名称只能含字母、数字和下划线。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:856 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Action" +msgstr "操作" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:899 msgid "Active" msgstr "活动" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:957 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1162 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1000 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1206 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1240 msgid "Add" msgstr "添加" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1262 +msgid "Add failed: %s" +msgstr "添加失败:%s" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1242 +msgid "" +"Added to the running qosify at once and not saved: an entry expires after " +"its timeout (the defaults timeout when left empty) and a qosify restart " +"drops it. One on a match from the rules file overrides it until then." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +msgid "" +"Adds a line to the editor below; Save & Apply writes it to the rules file, " +"so it is kept." +msgstr "添加一行到下面的编辑器中;“保存并应用”会将它写入规则文件,它因而被保留。" + #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:85 msgid "Adds atm, noatm or ptm when overhead_type is manual" msgstr "overhead_type 为手动时添加 atm、noatm 或 ptm" @@ -184,32 +242,32 @@ msgstr "添加 mpu " msgid "Adds overhead when overhead_type is manual" msgstr "当 overhead_type 为手动时添加 overhead " -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:608 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:649 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:780 msgid "Advanced" msgstr "高级" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "An empty %s stops all shaping. Continue?" msgstr "一个空的 %s 停止所有整形。继续吗?" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:726 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:769 msgid "Automatic download rate" msgstr "自动下载速率" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:936 msgid "Autostart" msgstr "自启动" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:967 msgid "Autostart state unknown — rpcd did not answer" msgstr "自启动状态未知 — rpcd 未应答" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 msgid "Available" msgstr "可用" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1196 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1334 msgid "Backup" msgstr "备份" @@ -219,12 +277,12 @@ msgid "" "set" msgstr "双向带宽,bandwidth_up 或 bandwidth_down 均未设置" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:716 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:759 msgid "Basic" msgstr "基础" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:224 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2029 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:240 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2232 msgid "Binary content rejected" msgstr "拒绝了二进制内容" @@ -236,7 +294,7 @@ msgstr "CAKE diffserv 模式" msgid "CAKE egress options" msgstr "CAKE 出口选项" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "CAKE egress options, space separated." msgstr "CAKE 出口选项,空格隔开。" @@ -244,7 +302,7 @@ msgstr "CAKE 出口选项,空格隔开。" msgid "CAKE ingress options" msgstr "CAKE 入口选项" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "CAKE ingress options, space separated." msgstr "CAKE 入口选项,空格隔开。" @@ -258,104 +316,108 @@ msgid "" "overhead_encap" msgstr "已添加 CAKE overhead 关键词到选项;手动使用 overhead 和 overhead_encap" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "CAKE overhead keyword. Use none if unsure." msgstr "CAKE overhead 关键词。如不确定使用 none。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:564 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 msgid "Cancel" msgstr "取消" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1356 msgid "Check Devices" msgstr "检查设备" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1330 msgid "Choose file…" msgstr "选择文件…" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1114 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1158 msgid "Classes" msgstr "类" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1940 msgid "Cleanup exited with code %d" msgstr "清理已退出,代码 %d" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1190 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear" msgstr "清除" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2072 msgid "Clear configuration" msgstr "配置清理" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear editor" msgstr "清理编辑器" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to disable autostart" msgstr "单击以禁用自启动" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to enable autostart" msgstr "单击启用自启动" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 msgid "Common CAKE options" msgstr "常见 CAKE 选项" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:604 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:645 msgid "Config" msgstr "配置" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared, qosify stopped." msgstr "已清空配置,qosify 已停止。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared." msgstr "配置已清理。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1915 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2118 msgid "Config saved" msgstr "配置已保存" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2042 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2050 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2253 msgid "Config: %s" msgstr "配置:%s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:566 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 msgid "Continue" msgstr "继续" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1391 msgid "Could not read %s: %s" msgstr "无法读取 %s: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:648 msgid "Counters" msgstr "计数器" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1627 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1567 +msgid "Counters reset." +msgstr "计数器已重置." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1830 msgid "DNS Entries" msgstr "DNS 条目" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d of %d)" msgstr "DNS 条目 (%d,共 %d)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d)" msgstr "DNS 条目 (%d)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "" "DSCP codepoints: CS0–CS7, AF11–AF43, EF, VA, NQB, LE, DF (NQB needs qosify " "from June 2026; 24.10 and 25.12 do not have it). A raw value from 0 to 63 is " @@ -390,7 +452,7 @@ msgstr "未设置 DSCP 出口值和入口值" msgid "DSCP value for priority-marked packets" msgstr "优先级标记数据包的 DSCP 值" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "DSCP values" msgstr "DSCP 值" @@ -406,12 +468,12 @@ msgstr "UDP 包的默认 DSCP 值" msgid "Default timeout for dynamically added entries" msgstr "动态添加条目的默认超时" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1358 msgid "Defaults" msgstr "默认" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 msgid "" "Defaults qosify applies when a key is absent — interface: mode diffserv4, " "ingress 1, egress 1, nat 1, host_isolate 1, autorate_ingress 0. device: " @@ -424,21 +486,25 @@ msgstr "" "timeout 3600, dscp_default_tcp/udp CS0, dscp_prio/dscp_bulk/dscp_icmp unset, " "bulk_trigger_pps/bulk_trigger_timeout/prio_max_avg_pkt_len 0(禁用)。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Description" +msgstr "描述" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Device" msgstr "设备" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1914 msgid "Device check done." msgstr "设备检查已完成。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1714 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1917 msgid "Device check failed: %s" msgstr "设备检查失败:%s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:859 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Disabled" msgstr "已禁用" @@ -446,28 +512,32 @@ msgstr "已禁用" msgid "Downlink bandwidth (same format as tc)" msgstr "下行链路带宽(与 tc 格式相同)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Downlink bandwidth, same format as tc. Set just below line speed." msgstr "下行链路带宽,与 tc 格式相同。就在线路速度下方设置。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1247 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1393 msgid "Download" msgstr "下载" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Download bandwidth" msgstr "下载带宽" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:767 msgid "Download shaping" msgstr "下载整形" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1197 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1335 msgid "Download the current files from the router." msgstr "从路由器下载当前文件。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1241 +msgid "Dynamic Entries" +msgstr "动态条目" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "" "Each line has two whitespace separated fields, match and dscp. dscp can be a " "raw value, a codepoint like CS0, or a class name. DNS entries are compared " @@ -476,20 +546,20 @@ msgstr "" "每行包含两个以空格分隔的字段:match 和 dscp。dscp 可以是原始值、代码点(例如 " "CS0)或类名。DNS 条目按照指定的顺序进行比较,使用第一个匹配的条目。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "Egress CAKE options" msgstr "出口 CAKE 选项" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2223 msgid "Empty file" msgstr "空文件" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 msgid "" "Empty the config editor? Nothing is written until you click Save & Apply." msgstr "清空配置编辑器?单击保存并应用前不会写入任何东西。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "" "Empty the rules editor? Nothing is written until you click Save & Apply." msgstr "清空规则编辑器?单击保存并应用前不会写入任何东西。" @@ -514,94 +584,117 @@ msgstr "启用出口整形" msgid "Enable ingress shaping" msgstr "启用入口整形" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Enabled" msgstr "已启用" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:858 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 msgid "Enabled — Not Running" msgstr "已启用 — 未运行" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:857 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 msgid "Enabled — Not Shaping (check config)" msgstr "已启用 — 未在整形流量(检查配置)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Encapsulation overhead" msgstr "封装开销" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2182 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2385 msgid "Enter a section name." msgstr "输入部分名称。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2156 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2359 msgid "Enter a single IPv4 address (qosify does not accept CIDR)." msgstr "输入单个 IPv4 地址(qosify 不接受 CIDR)。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2159 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2362 msgid "" "Enter a single IPv6 address (qosify does not accept CIDR or a %zone suffix)." msgstr "输入单个 IPv6 地址(qosify 不接受 CIDR 或 %zone 后缀)。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2141 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2344 msgid "Enter a value." msgstr "输入一个值。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Entries" msgstr "条目" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1848 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1961 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1261 +msgid "Entry added." +msgstr "已添加条目。" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1269 +msgid "Entry removed." +msgstr "已删除条目。" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2051 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2164 msgid "Error: %s" msgstr "错误:%s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1845 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2048 msgid "Error: No valid config stanzas found." msgstr "错误:未找到哟小的配置段。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1763 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1965 msgid "" "Error: invalid characters in bandwidth or options fields. Use alphanumeric, " "spaces, hyphens, dots, colons only." -msgstr "错误:带宽或选项字段中的无效字符。仅使用字母数字、空格、连字符、点、冒号。" +msgstr "" +"错误:带宽或选项字段中的无效字符。仅使用字母数字、空格、连字符、点、冒号。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1798 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2000 msgid "Error: name must be a device or interface name" msgstr "错误:名称必须是设备或接口名" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1769 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1971 msgid "Error: overhead must be a whole number of bytes" msgstr "错误:开销必须是整数字节" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1970 msgid "Error: overhead_mpu must be a whole number of bytes" msgstr "错误:overhead_mpu 必须是整数字节" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2070 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2001 +msgid "Error: qosify drops a name longer than %d characters" +msgstr "错误:qosify 丢弃了一个超过 %d 个字符的名称" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2273 msgid "Errors:" msgstr "错误:" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 +msgid "" +"Every shaped section is looked up again, one whose device now exists is " +"started and one whose device has gone is stopped. Nothing is reported back " +"by the call — the result shows in the Service table on the Overview tab." +msgstr "" +"会再次查询每个已整形的部分,设备现在存在的部分将被启动,设备已消失的部分被停" +"止。调用不会回报任何信息—结果显示在“概况”标签页上的“服务”表格中。" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 msgid "File" msgstr "文件" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1832 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 msgid "File changed on disk" msgstr "文件在磁盘上已更改" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2224 msgid "File too large (max 64KB)" msgstr "文件太大(最大 64KB)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:667 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 msgid "Files" msgstr "文件" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Found (empty or invalid)" msgstr "已找到(空或无效)" @@ -609,157 +702,164 @@ msgstr "已找到(空或无效)" msgid "Grant access to LuCI app qosify" msgstr "授予对 LuCI 应用 qosify 的访问权" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:728 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:771 msgid "Host isolation" msgstr "主机隔离" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1169 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1216 msgid "IPv4 address, e.g. 1.1.1.1" msgstr "IPv4 地址,如 1.1.1.1" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1170 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 msgid "IPv6 address, e.g. ff01::1" msgstr "IPv6 地址,如 ff01::1" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "Ingress CAKE options" msgstr "入口 CAKE 选项" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Interface" msgstr "接口" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:741 -msgid "Invalid CAKE options can stop qosify starting." -msgstr "无效 CAKE 选项可能阻止 qosify 启动。" - -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1173 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1220 msgid "Like dns:... but only matches cname entries" msgstr "类似 dns:... 但只匹配 cname 条目" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:228 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:244 msgid "" "Line %d is longer than 1023 characters — the rule loader reads fixed-size " "lines and would split it, comment included" -msgstr "第 %d 行超过 1023 个字符 - 规则加载器读取固定大小的行数并分割它,包括注释" +msgstr "" +"第 %d 行超过 1023 个字符 - 规则加载器读取固定大小的行数并分割它,包括注释" #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:59 msgid "List of files with port/IP/host mappings" msgstr "含端口/IP/主机映射的文件的列表" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 msgid "Loading..." msgstr "加载中…" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1212 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1350 msgid "Maintenance" msgstr "维护" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Manual overhead" msgstr "手动开销" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "Mapping file syntax" msgstr "映射文件语法" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1692 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1895 msgid "Mapping files reloaded." msgstr "已重新加载映射文件。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:434 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:462 msgid "" "Match not loaded by qosify on line %s — ports 1-65534, one IPv4/IPv6 address " "(no CIDR or %%zone), or dns:, dns_c:" msgstr "" -"qosify 未在第 %s 行加载匹配 — 端口 1-65534,一个 IPv4/IPv6 地址(无 CIDR 或 " -"%%zone),或 dns:,dns_c:" +"qosify 未在第 %s 行加载匹配 — 端口 1-65534,一个 IPv4/IPv6 地址(无 CIDR 或 %" +"%zone),或 dns:,dns_c:" #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:66 msgid "Maximum average packet length for marking a flow as priority" msgstr "将数据流标记为优先的最大平均数据包长度" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Minimum packet unit (MPU)" msgstr "最小数据包单位(MPU)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Missing" msgstr "缺失" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Modified" msgstr "已修改" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:433 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:461 msgid "" "More than two fields on line %s — qosify reads the rest of the line as the " "DSCP value and skips it" msgstr "第 %s 行上有超过 2 个字段 — qosify 将剩余行读取为 DSCP 值并跳过它" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:770 msgid "NAT awareness" msgstr "NAT 感知" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Netdev to enable QoS on. Required." msgstr "启用 QoS 的 Netdev。必需。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No CAKE tin statistics." msgstr "无 CAKE tin 统计数字。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1628 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1831 msgid "No DNS entries." msgstr "无 DNS 条目。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:432 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:460 msgid "No DSCP target on line %s — qosify skips single-field lines" msgstr "第 %s 行上无 DSCP 目标 — qosify 跳过单字段行" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1107 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +msgid "No DSCP traffic yet." +msgstr "尚无 DSCP 流量。" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1151 msgid "No classes defined in %s" msgstr "%s 中未定义类" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2142 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1257 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2345 msgid "No classes defined. Add classes in the Config tab first." msgstr "未定义类。先在配置标签页中添加类。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1192 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1294 +msgid "No dynamic entries." +msgstr "无动态条目." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1328 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1329 msgid "No file selected" msgstr "未选中文件" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2209 msgid "No files selected." msgstr "未选中文件。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No output." msgstr "无输出。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 msgid "No per-class counters." -msgstr "无每个类计数器。" +msgstr "没有分类计数器。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2357 msgid "No spaces or # allowed in patterns or addresses." msgstr "模式或地址中不允许空格或 # 。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2030 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2233 msgid "No valid UCI config stanzas" msgstr "无有效的 UCI 配置段" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:913 msgid "Not Running" msgstr "未在运行" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1973 msgid "Note: bandwidth not set — CAKE will run unlimited on that direction." msgstr "注:未设置带宽 — CAKE 在那个方向上运行不受限。" @@ -767,41 +867,42 @@ msgstr "注:未设置带宽 — CAKE 在那个方向上运行不受限。" msgid "Number of packets per second to trigger bulk flow detection" msgstr "触发大流量检测的每秒数据包量" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1161 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1174 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1221 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1238 msgid "Only override the DSCP value if it is zero" msgstr "仅当 DSCP 值为零时覆盖该值" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:704 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:747 msgid "" "Only sent with host isolation on — add nat to common CAKE options to force it" msgstr "仅在开启主机隔离的情况下发送 — 添加常见 CAKE 选项来强制它" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1017 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1060 msgid "Options" msgstr "选项" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:730 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:773 msgid "Overhead" msgstr "开销" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "Overhead preset" msgstr "开销预设" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:603 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:644 msgid "Overview" msgstr "概览" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1834 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2037 msgid "Overwrite" msgstr "覆盖" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2007 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2210 msgid "Overwrite config files" msgstr "覆盖配置文件" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1172 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 msgid "" "POSIX.2 extended regular expression for matching hostnames. Only works if " "dns lookups are passed to qosify via the add_dns_host ubus call." @@ -809,180 +910,194 @@ msgstr "" "用于匹配主机名的 POSIX.2 扩展正则表达式。仅在通过 add_dns_host ubus 调用将 " "dns 查询传递到 qosify 时生效。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2353 msgid "Port must be 1-65534 (qosify rejects 65535)." msgstr "端口必须是 1-65534(qosify 拒绝 65535)。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2149 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2349 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2352 msgid "Port must be a number or a range (4500, 5060-5061)." msgstr "端口必须时一个数字或范围(4500、5060-5061)。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "QoS Enabled" msgstr "QoS 已启用" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:721 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 msgid "Queueing mode" msgstr "队列模式" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1163 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1209 msgid "Quick Add" msgstr "快速添加" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1016 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1059 msgid "Quick Add: %s" msgstr "快速添加:%s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2356 msgid "Range start must not exceed end." msgstr "范围开头不能超过结尾。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 msgid "Re-check devices" msgstr "重新检查设备" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 msgid "Re-checking devices..." msgstr "正在重新检查设备…" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:811 msgid "Re-read the mapping files only" msgstr "只重新读取映射文件" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 msgid "Re-reading the mapping files..." msgstr "正在重新读取映射文件…" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 -msgid "" -"Re-runs the daemon's own device pass: every shaped section is looked up " -"again, one whose device now exists is started and one whose device has gone " -"is stopped. Nothing is reported back by the call — the result shows in the " -"Service table on the Overview tab." -msgstr "" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1351 +msgid "Re-runs the daemon's own device pass." +msgstr "重新运行 daemon 程序自己的设备直通。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2024 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2227 msgid "Read error" msgstr "读取错误" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Reading and validating files..." msgstr "正在读取并验证文件…" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1681 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1884 msgid "Reading tc output..." msgstr "正在读取 tc 输出…" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1019 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1062 msgid "Reference" msgstr "参考" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload" msgstr "重新加载" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload Rules" msgstr "重新加载规则" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1695 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1898 msgid "Reload failed: %s" msgstr "重新加载失败:%s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1306 +msgid "Remove" +msgstr "删除" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1270 +msgid "Remove failed: %s" +msgstr "删除失败:%s" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 +msgid "Replaced with" +msgstr "已替换为" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "Requires write access." msgstr "需要写入权限。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2086 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1365 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2289 msgid "Reset" msgstr "重置" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2120 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1554 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "Reset counters" +msgstr "重置计数器" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2323 msgid "Reset failed: %s" msgstr "重置失败:%s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2084 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2287 msgid "Reset to defaults" msgstr "重置为默认" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2116 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2319 msgid "Reset to defaults, applied." msgstr "重置为默认值,已应用。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Resetting" msgstr "正在重置" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Restart" msgstr "重启" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1203 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1341 msgid "Restore" msgstr "恢复" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 -msgid "Restore qosify defaults" -msgstr "恢复 qosify 默认值" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1359 +msgid "Restore qosify defaults. Shaping is left disabled." +msgstr "恢复 qosify 默认值。流量整形将被禁用。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Restoring defaults..." msgstr "正在恢复默认值…" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:646 msgid "Rules" msgstr "规则" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1976 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2179 msgid "Rules saved" msgstr "规则已保存" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2053 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2056 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2256 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2259 msgid "Rules: %s" msgstr "规则:%s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:868 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:911 msgid "Running & Shaping" msgstr "正在运行和流量整形" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:912 msgid "Running — Not Shaping" msgstr "运行中 — 未在整形流量" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:867 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:910 msgid "Running — Shaping Unknown" msgstr "运行中 —— 整形未知" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1147 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:796 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 msgid "Save & Apply" msgstr "保存并应用" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1825 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1897 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1924 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1985 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2028 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2100 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2127 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2188 msgid "Save failed: %s" msgstr "保存失败:%s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Saving" msgstr "正在保存" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 msgid "Saving settings and applying..." msgstr "正在保存设置并应用…" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2186 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2389 msgid "Section %s already exists." msgstr "%s 部分已存在。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1011 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1054 msgid "" "Section name is the class name that rules and dscp_* values refer to. " "qosify.init reads config alias the same way as config class." @@ -990,45 +1105,45 @@ msgstr "" "部分名称是规则和 dscp_* 值引用的类名。qosify.init 读取配置别名的方式和配置类" "一样。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Sending %s to qosify..." msgstr "正在发送 %s 到 qosify…" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Sent to CAKE as atm, noatm or ptm." msgstr "作为 atm、noatm 或 ptm 发送到 CAKE。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "Sent to CAKE as ether-vlan, once per tag." msgstr "作为 ether-vlan 发送到 CAKE,每个标签一次。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Sent to CAKE as mpu, in bytes." msgstr "作为 mpu 发送到 CAKE,单位字节。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Sent to CAKE as overhead, in bytes." msgstr "作为开销发送到 CAKE,单位字节。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:663 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:706 msgid "Service" msgstr "服务" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1745 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1948 msgid "Service action failed: %s" msgstr "服务操作失败:%s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1817 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 msgid "Settings saved" msgstr "已保存设置" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:723 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:937 msgid "Shaping" msgstr "整形" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Size" msgstr "大小" @@ -1036,44 +1151,48 @@ msgstr "大小" msgid "Skip this section" msgstr "跳过此部分" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Start" msgstr "启动" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:606 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:891 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:647 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:934 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Status" msgstr "状态" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:855 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:898 msgid "Status Unknown" msgstr "状态未知" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:809 msgid "Stop" msgstr "停止" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1167 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 msgid "TCP single port, or range from to " msgstr "TCP 单端口,或从 到 的区间" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1680 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1883 msgid "The detailed tc output needs write access to this page." msgstr "详细的 tc 输出需要该页面的写入权限。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:590 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1309 +msgid "The first %d entries are shown." +msgstr "显示前 %d 个条目." + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:631 msgid "" "The qosify UCI configuration could not be loaded — class and interface lists " "may be incomplete." msgstr "无法加载 qosify UCI 配置 —— 类和接口列表可能不完整。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1342 msgid "" "The selected files replace the ones on the router and qosify is reloaded." msgstr "所选文件替换路由器上的文件,重新加载了 qosify。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2008 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2211 msgid "" "The selected files replace the ones on the router and qosify is reloaded. " "Download a backup from this tab first if you need one." @@ -1085,33 +1204,37 @@ msgstr "" msgid "Time below bulk_trigger_pps threshold until a bulk flow mark is removed" msgstr "低于 bulk_trigger_pps 阈值多少时间删除大流量记号" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 msgid "Traffic by CAKE Tin" msgstr "CAKE Tin 的流量" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1401 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1548 msgid "Traffic by Class" msgstr "按照类区分的流量" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:596 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1549 +msgid "Traffic by DSCP" +msgstr "DSCP 流量" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:637 msgid "Traffic shaping and DSCP classification via qosify" msgstr "通过 qosify 进行流量整形和 DSCP 分类" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1168 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 msgid "UDP single port, or range from to " msgstr "UDP 单端口,或从 到 的范围" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:864 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:866 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:907 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:909 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:968 msgid "Unknown" msgstr "未知" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 msgid "Unknown class/DSCP target: %s" msgstr "未知类/DSCP 目标:%s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "Unticked sets disabled 1 and qosify skips this section." msgstr "未勾选的集合禁用了 1,qosify 跳过此部分。" @@ -1119,163 +1242,192 @@ msgstr "未勾选的集合禁用了 1,qosify 跳过此部分。" msgid "Uplink bandwidth (same format as tc)" msgstr "上行链路带宽(和 tc 格式一样)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Uplink bandwidth, same format as tc. Set just below line speed." msgstr "上行链路带宽,和 tc 格式相同。就在线路速度下方设置。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 msgid "Upload" msgstr "上传" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1348 msgid "Upload & Apply" msgstr "上传并应用" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2009 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2212 msgid "Upload and apply" msgstr "上传并应用" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Upload bandwidth" msgstr "上传带宽" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2061 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2264 msgid "Upload error: %s" msgstr "上传错误:%s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2078 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2281 msgid "Upload failed: %s" msgstr "上传失败了:%s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 msgid "Upload shaping" msgstr "上传整形" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Uploading" msgstr "上传中" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:892 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:935 msgid "Uptime" msgstr "已运行时长" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "VLAN tags" msgstr "VLAN 标签" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Valid" msgstr "有效" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1951 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 msgid "Warning: %s but qosify is not shaping traffic — check the Status tab." msgstr "警告:%s 但 qosify 未在整形流量 — 检查状态标签页。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Working" msgstr "工作中" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "Write empty file" msgstr "写空文件" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 msgid "Writing config and reloading qosify..." msgstr "正在写入配置并重新加载 qosify…" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Writing rules and reloading qosify..." msgstr "正在写入规则并重新加载 qosify…" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:633 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:675 msgid "" "You have read-only access to this page, so editing and service control are " "disabled." msgstr "你只有该页面的只读权限,因此编辑和服务控制被禁用。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "" +"Zero qosify's own counters (get_stats)? The CAKE tin counters belong to tc " +"and are kept." +msgstr "将 qosify 自己的计数器(get_stats)清零? CAKE tin 计数器属于 tc,将被保留。" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 msgid "active" msgstr "活跃" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1969 msgid "" "bandwidth_down does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" -msgstr "bandwidth_down 看上去不像 tc 速率 (100mbit, 12MBps, unlimited) — 仍然传递它" +msgstr "" +"bandwidth_down 看上去不像 tc 速率 (100mbit, 12MBps, unlimited) — 仍然传递它" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1968 msgid "" "bandwidth_up does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" -msgstr "bandwidth_up 看上去不像 tc 速率 (100mbit, 12MBps, unlimited) — 仍然传递它" +msgstr "" +"bandwidth_up 看上去不像 tc 速率 (100mbit, 12MBps, unlimited) — 仍然传递它" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1012 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1055 msgid "" "config device takes the same options, with name set to a netdev. nat " "defaults to 1 for interfaces and 0 for devices." -msgstr "配置设备采用的选项相同,名称设为 netdev。接口 nat 值为 1,设备 nat 值为 0。" +msgstr "" +"配置设备采用的选项相同,名称设为 netdev。接口 nat 值为 1,设备 nat 值为 0。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "device %s" msgstr "%s 设备" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "device: %s, ingress: %s, egress: %s" msgstr "设备:%s,入口:%s,接口:%s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:289 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:317 msgid "" "disabled is set to \"%s\" — config_get_bool does not recognise that, so the " "section stays enabled" msgstr "disabled 设为 \"%s\" — config_get_bool 不识别这个,因此该部分保持启用" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2129 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +msgid "dump did not answer." +msgstr "转储未应答。" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2332 msgid "e.g. %s" msgstr "如 %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1171 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 msgid "fnmatch() pattern supporting * and ? as wildcard characters" msgstr "将 * 和 ? 作为通配符字符支持的 fnmatch() 模式" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1613 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1816 msgid "get_stats did not answer." msgstr "get_stats 未回应。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 msgid "inactive" msgstr "不活跃" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "ingress %s, egress %s" msgstr "入口 %s,出口 %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:282 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:310 msgid "ingress and egress are both 0 — nothing is shaped" msgstr "出入站均为 0 — 没有流量被整形" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "interface %s" msgstr "接口 %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1155 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1199 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1235 msgid "match" msgstr "匹配" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:274 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:292 +msgid "" +"mode \"%s\" is not a CAKE diffserv mode — tc refuses the qdisc, so nothing " +"is shaped although qosify reports the section active" +msgstr "" +"\"%s\" 模式不是 CAKE diffserv 模式—— tc 拒绝 qdisc,因此虽然 qosify 报告该部" +"分活跃但不存在整形" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:291 +msgid "" +"name \"%s\" is dropped by qosify — it takes at most %d characters and no " +"quote" +msgstr "qosify 丢弃了 \"%s\" 名称——字符长度最多为 %d,不能有引号" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:290 msgid "" "name is not set — qosify.init sends an empty device name and this section is " "never applied" msgstr "名称未设置 — qosify.init 发送空的设备名,此部分从未应用" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:278 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:306 msgid "" "nat is not sent: qosify only emits nat/nonat inside the host_isolate branch. " "CAKE does accept flows plus nat — put nat in options to apply it" @@ -1283,7 +1435,7 @@ msgstr "" "nat 未发送:qosify 只在 host_isolate 分支内发出 nat/nonat。CAKE 不接受流加 " "nat — 将 nat 放在 options 中来应用它" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:279 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:307 msgid "" "nat only reaches %s — put it in options, or in both ingress_options and " "egress_options" @@ -1297,64 +1449,87 @@ msgid "" "on" msgstr "启用 QoS 的 netifd 接口 (配置接口) or netdev (配置服务)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "netifd interface to enable QoS on. Required." msgstr "启用 QoS 的 netifd 接口。必需。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1313 +msgid "never" +msgstr "从不" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "no" msgstr "否" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:284 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:312 msgid "no bandwidth_down or bandwidth — ingress CAKE runs unlimited" msgstr "没有 bandwidth_down 或 bandwidth — 入站 CAKE 运行不受限" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:283 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:311 msgid "no bandwidth_up or bandwidth — egress CAKE runs unlimited" msgstr "没有 bandwidth_up 或 bandwidth — 出站 CAKE 运行不受限" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "none" msgstr "none" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:281 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:309 msgid "overhead and overhead_encap are ignored unless overhead_type is manual" msgstr "除非 overhead_type 为手动,否则忽略 overhead 和 overhead_encap" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:595 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:299 +msgid "overhead_encap \"%s\" is not atm, noatm or ptm — tc refuses the qdisc" +msgstr "overhead_encap 不是 atm、noatm 或 ptm——tc 拒绝 qdisc" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:296 +msgid "" +"overhead_type \"%s\" is not one qosify.init knows, so no overhead is set" +msgstr "overhead_type \"%s\" 不是 qosify.init 知道的类型,因此未设置开销" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:302 +msgid "overhead_vlan \"%s\" is not 0, 1 or 2 — qosify.init adds no ether-vlan" +msgstr "overhead_vlan \"%s\" 不是 0、1 或 2——qosify.init 没有添加 ether-vlan" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:636 #: applications/luci-app-qosify/root/usr/share/luci/menu.d/luci-app-qosify.json:3 msgid "qosify" msgstr "qosify" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:847 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:890 msgid "" "qosify did not appear on ubus, so its config was not applied — press Reload" msgstr "qosify 未出现在 ubus 上,因此未应用其配置 —— 按下重新加载" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:833 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1729 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:876 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1932 msgid "qosify did not come up — check the system log" msgstr "qosify 没有跑起来 —— 检查系统日志" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1610 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1672 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1813 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1875 msgid "qosify is not running. Start from the Overview tab." msgstr "qosify 未在运行。从概况标签页启动。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1735 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1887 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2090 msgid "qosify is still running — leaving the qdiscs alone" msgstr "qosify 仍在运行 —— 别动 qdiscs" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1253 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1361 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1362 +msgid "qosify package template" +msgstr "qosify 包模板" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1399 msgid "qosify-status" msgstr "qosify-status" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1885 msgid "qosify-status returned no output." msgstr "qosify-status 未返回输出。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:918 msgid "" "rpcd is not answering for qosify — check the ACL in /usr/share/rpcd/acl.d " "and restart rpcd" @@ -1362,40 +1537,52 @@ msgstr "" "rpcd 没有在被当成 qosify 使用 —— 检查 /usr/share/rpcd/acl.d 中的 ACL 并重启 " "rpcd" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:832 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1609 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1671 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1728 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1734 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1886 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1812 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1874 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1931 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1937 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2089 msgid "rpcd is not answering for qosify, so the service state is unknown." msgstr "rpcd 没有在被当作 qosify 使用,因此服务状态未知。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:955 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:998 msgid "section name" msgstr "部分名称" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:953 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:996 msgid "section type" msgstr "部分类型" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1529 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1533 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1731 msgid "share" msgstr "分享" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1541 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1256 +msgid "timeout must be a whole number of seconds above 0." +msgstr "超时时间必须是大于 0 的整数秒。" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1739 msgid "total" msgstr "总计" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 msgid "value" msgstr "值" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "yes" msgstr "是" +#~ msgid "Invalid CAKE options can stop qosify starting." +#~ msgstr "无效 CAKE 选项可能阻止 qosify 启动。" + +#~ msgid "Restore qosify defaults" +#~ msgstr "恢复 qosify 默认值" + #~ msgid "%s contains a quote — qosify rejects the whole value" #~ msgstr "%s 包含一个引号 — qosify 拒绝整个值" diff --git a/luci-app-qosify/po/zh_Hant/qosify.po b/luci-app-qosify/po/zh_Hant/qosify.po index d6ecf8e63..bd54769cf 100644 --- a/luci-app-qosify/po/zh_Hant/qosify.po +++ b/luci-app-qosify/po/zh_Hant/qosify.po @@ -7,164 +7,217 @@ msgstr "" "Language-Team: Chinese (Traditional Han script) \n" "Plural-Forms: nplurals=1; plural=0;\n" -"PO-Revision-Date: 2026-10-18 16:40+0000\n" +"PO-Revision-Date: 2026-10-27 05:52+0000\n" "X-Generator: Weblate 2026.11.dev0\n" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1255 +msgid "\"%s\" is not a value qosify accepts for %s." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:483 +msgid "" +"%d class and alias sections — qosify has %d class slots, so %s and the rules " +"using them are dropped" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "%d interface" msgid_plural "%d interfaces" msgstr[0] "%d 個介面" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:986 msgid "%d rule" msgid_plural "%d rules" msgstr[0] "%d 個規則" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:942 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:985 msgid "%d section" msgid_plural "%d sections" msgstr[0] "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:294 +msgid "" +"%s \"%s\" is not a tc rate — tc refuses the qdisc, so nothing is shaped " +"although qosify reports the section active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:298 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:301 +msgid "%s \"%s\" is not a whole number — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 msgid "%s (current)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 msgid "%s (from bandwidth)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2085 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2288 msgid "" "%s and %s are replaced with the templates shipped by the qosify package, and " "shaping is left disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1809 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2012 msgid "" "%s came back empty although it is %d bytes on disk — refusing to overwrite it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2346 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2549 msgid "%s changed on disk — your unsaved edits are still in the editor." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2249 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2452 msgid "" "%s could not be read — the editor is left empty and will not be saved over " "it." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1833 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2036 msgid "" "%s has changed since this editor was loaded. Saving now discards those " "changes." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1864 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2067 msgid "" "%s is %d bytes on disk but was never loaded into the editor — refusing to " "truncate it. Reload the page first." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:392 msgid "%s is a list in this section — edit %s directly" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1656 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1859 msgid "" "%s is not in the defaults list — qosify does not load it, so the Rules tab " "has no effect" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:286 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:314 msgid "" "%s is set to \"%s\" — qosify converts it with atoi(), so anything but a non-" "zero number means off" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:750 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:793 msgid "%s quick settings" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2069 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2272 msgid "%s uploaded, qosify reloaded." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2103 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2306 msgid "%s was not written: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2106 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2309 msgid "%s was reset but %s was not written: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1945 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2148 msgid "%s, applied (QoS disabled)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1950 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 msgid "" "%s, applied — qosify did not answer on ubus, so shaping could not be checked." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1947 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 msgid "%s, applied." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:459 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:468 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:500 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:509 msgid "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify ignores it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:456 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:497 msgid "" "%s: %s \"%s\" is not a class, codepoint or 0-63 — qosify rejects the whole " "config and interface changes are not applied" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:465 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:506 msgid "" "%s: %s \"%s\" is not a codepoint or 0-63 — qosify drops this class and the " "rules using it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:448 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:488 +msgid "" +"%s: %s \"%s\" is not a whole number — qosify.init passes it through atoll(), " +"which keeps only the leading digits" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:486 msgid "" "%s: %s cannot be checked — write it as one plain or fully quoted value, with " "no backslash" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:451 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:492 msgid "" "%s: %s contains shell metacharacters — qosify runs the tc command with sh -c " "as root, so they would break it or be executed" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "(alias)" msgstr "(別名)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1304 +msgid "(over file)" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 msgid "(this qosify build has no NQB)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2185 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2388 msgid "A config defaults section already exists." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2183 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2386 msgid "A section name may only contain letters, digits and underscores." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:856 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Action" +msgstr "動作" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:899 msgid "Active" msgstr "活動" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:957 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1162 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1000 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1206 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1240 msgid "Add" msgstr "新增" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1262 +msgid "Add failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1242 +msgid "" +"Added to the running qosify at once and not saved: an entry expires after " +"its timeout (the defaults timeout when left empty) and a qosify restart " +"drops it. One on a match from the rules file overrides it until then." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +msgid "" +"Adds a line to the editor below; Save & Apply writes it to the rules file, " +"so it is kept." +msgstr "" + #: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:85 msgid "Adds atm, noatm or ptm when overhead_type is manual" msgstr "" @@ -181,32 +234,32 @@ msgstr "" msgid "Adds overhead when overhead_type is manual" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:608 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:649 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:780 msgid "Advanced" msgstr "進階" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "An empty %s stops all shaping. Continue?" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:726 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:769 msgid "Automatic download rate" msgstr "自動下載速率" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:936 msgid "Autostart" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:967 msgid "Autostart state unknown — rpcd did not answer" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 msgid "Available" msgstr "可用" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1196 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1334 msgid "Backup" msgstr "備份" @@ -216,12 +269,12 @@ msgid "" "set" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:716 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:759 msgid "Basic" msgstr "基本" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:224 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2029 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:240 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2232 msgid "Binary content rejected" msgstr "" @@ -233,7 +286,7 @@ msgstr "" msgid "CAKE egress options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "CAKE egress options, space separated." msgstr "" @@ -241,7 +294,7 @@ msgstr "" msgid "CAKE ingress options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "CAKE ingress options, space separated." msgstr "" @@ -255,104 +308,108 @@ msgid "" "overhead_encap" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "CAKE overhead keyword. Use none if unsure." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:564 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 msgid "Cancel" msgstr "取消" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1356 msgid "Check Devices" msgstr "檢查裝置" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1330 msgid "Choose file…" msgstr "選擇檔案…" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1114 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1158 msgid "Classes" msgstr "類別" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1737 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1940 msgid "Cleanup exited with code %d" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1190 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear" msgstr "清除" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2072 msgid "Clear configuration" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "Clear editor" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to disable autostart" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:929 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:972 msgid "Click to enable autostart" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 msgid "Common CAKE options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:604 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:645 msgid "Config" msgstr "配置" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared, qosify stopped." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2097 msgid "Config cleared." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1915 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2118 msgid "Config saved" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2042 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2050 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2253 msgid "Config: %s" msgstr "配置: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:566 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 msgid "Continue" msgstr "繼續" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1391 msgid "Could not read %s: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:607 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:648 msgid "Counters" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1627 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1567 +msgid "Counters reset." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1830 msgid "DNS Entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d of %d)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1364 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1510 msgid "DNS Entries (%d)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "" "DSCP codepoints: CS0–CS7, AF11–AF43, EF, VA, NQB, LE, DF (NQB needs qosify " "from June 2026; 24.10 and 25.12 do not have it). A raw value from 0 to 63 is " @@ -384,7 +441,7 @@ msgstr "" msgid "DSCP value for priority-marked packets" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1064 msgid "DSCP values" msgstr "" @@ -400,12 +457,12 @@ msgstr "" msgid "Default timeout for dynamically added entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1358 msgid "Defaults" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1022 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1065 msgid "" "Defaults qosify applies when a key is absent — interface: mode diffserv4, " "ingress 1, egress 1, nat 1, host_isolate 1, autorate_ingress 0. device: " @@ -414,21 +471,25 @@ msgid "" "prio_max_avg_pkt_len 0 (disabled)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1352 +msgid "Description" +msgstr "描述" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Device" msgstr "裝置" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1914 msgid "Device check done." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1714 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1917 msgid "Device check failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:859 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Disabled" msgstr "已停用" @@ -436,48 +497,52 @@ msgstr "已停用" msgid "Downlink bandwidth (same format as tc)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Downlink bandwidth, same format as tc. Set just below line speed." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1247 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1393 msgid "Download" msgstr "下載" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:720 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:763 msgid "Download bandwidth" msgstr "下載頻寬" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:767 msgid "Download shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1197 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1335 msgid "Download the current files from the router." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1241 +msgid "Dynamic Entries" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "" "Each line has two whitespace separated fields, match and dscp. dscp can be a " "raw value, a codepoint like CS0, or a class name. DNS entries are compared " "in the order in which they are specified, using the first matching entry." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 msgid "Egress CAKE options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2223 msgid "Empty file" msgstr "空檔案" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1990 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2193 msgid "" "Empty the config editor? Nothing is written until you click Save & Apply." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1996 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2199 msgid "" "Empty the rules editor? Nothing is written until you click Save & Apply." msgstr "" @@ -502,94 +567,114 @@ msgstr "" msgid "Enable ingress shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:881 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:930 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:924 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:973 msgid "Enabled" msgstr "已啟用" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:858 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 msgid "Enabled — Not Running" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:857 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 msgid "Enabled — Not Shaping (check config)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Encapsulation overhead" msgstr "封裝開銷" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2182 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2385 msgid "Enter a section name." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2156 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2359 msgid "Enter a single IPv4 address (qosify does not accept CIDR)." msgstr "輸入單個 IPv4 位址 (qosify 不接受 CIDR)。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2159 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2362 msgid "" "Enter a single IPv6 address (qosify does not accept CIDR or a %zone suffix)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2141 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2344 msgid "Enter a value." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1848 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1961 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1261 +msgid "Entry added." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1269 +msgid "Entry removed." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2051 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2164 msgid "Error: %s" msgstr "錯誤: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1845 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2048 msgid "Error: No valid config stanzas found." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1763 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1965 msgid "" "Error: invalid characters in bandwidth or options fields. Use alphanumeric, " "spaces, hyphens, dots, colons only." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1798 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2000 msgid "Error: name must be a device or interface name" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1769 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1971 msgid "Error: overhead must be a whole number of bytes" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1970 msgid "Error: overhead_mpu must be a whole number of bytes" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2070 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2001 +msgid "Error: qosify drops a name longer than %d characters" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2273 msgid "Errors:" msgstr "錯誤:" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 +msgid "" +"Every shaped section is looked up again, one whose device now exists is " +"started and one whose device has gone is stopped. Nothing is reported back " +"by the call — the result shows in the Service table on the Overview tab." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 msgid "File" msgstr "檔案" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1832 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 msgid "File changed on disk" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2021 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2224 msgid "File too large (max 64KB)" msgstr "檔案過大 (最大 64KB)" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:667 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 msgid "Files" msgstr "檔案" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Found (empty or invalid)" msgstr "" @@ -597,37 +682,33 @@ msgstr "" msgid "Grant access to LuCI app qosify" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:728 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:771 msgid "Host isolation" msgstr "主機隔離" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1169 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1216 msgid "IPv4 address, e.g. 1.1.1.1" msgstr "IPv4 位址,例如 1.1.1.1" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1156 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1170 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1200 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1217 msgid "IPv6 address, e.g. ff01::1" msgstr "IPv6 位址,例如 ff01::1" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 msgid "Ingress CAKE options" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Interface" msgstr "介面" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:741 -msgid "Invalid CAKE options can stop qosify starting." -msgstr "" - -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1173 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1220 msgid "Like dns:... but only matches cname entries" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:228 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:244 msgid "" "Line %d is longer than 1023 characters — the rule loader reads fixed-size " "lines and would split it, comment included" @@ -637,28 +718,29 @@ msgstr "" msgid "List of files with port/IP/host mappings" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1404 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1245 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1552 msgid "Loading..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1212 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1350 msgid "Maintenance" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Manual overhead" msgstr "手動開銷" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1166 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 msgid "Mapping file syntax" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1692 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1895 msgid "Mapping files reloaded." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:434 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:462 msgid "" "Match not loaded by qosify on line %s — ports 1-65534, one IPv4/IPv6 address " "(no CIDR or %%zone), or dns:, dns_c:" @@ -668,84 +750,93 @@ msgstr "" msgid "Maximum average packet length for marking a flow as priority" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Minimum packet unit (MPU)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:883 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:926 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Missing" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Modified" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:433 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:461 msgid "" "More than two fields on line %s — qosify reads the rest of the line as the " "DSCP value and skips it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:770 msgid "NAT awareness" msgstr "NAT 意識" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "Netdev to enable QoS on. Required." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No CAKE tin statistics." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1628 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1831 msgid "No DNS entries." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:432 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:460 msgid "No DSCP target on line %s — qosify skips single-field lines" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1107 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +msgid "No DSCP traffic yet." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1151 msgid "No classes defined in %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2142 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1257 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2345 msgid "No classes defined. Add classes in the Config tab first." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1192 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1294 +msgid "No dynamic entries." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1328 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1329 msgid "No file selected" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2209 msgid "No files selected." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "No output." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 msgid "No per-class counters." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2357 msgid "No spaces or # allowed in patterns or addresses." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2030 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2233 msgid "No valid UCI config stanzas" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:913 msgid "Not Running" msgstr "未執行" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1771 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1973 msgid "Note: bandwidth not set — CAKE will run unlimited on that direction." msgstr "" @@ -753,264 +844,279 @@ msgstr "" msgid "Number of packets per second to trigger bulk flow detection" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1161 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1174 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1221 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1238 msgid "Only override the DSCP value if it is zero" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:704 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:747 msgid "" "Only sent with host isolation on — add nat to common CAKE options to force it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1017 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1060 msgid "Options" msgstr "選項" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:730 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:773 msgid "Overhead" msgstr "開銷" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:731 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:774 msgid "Overhead preset" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:603 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:644 msgid "Overview" msgstr "概覽" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1834 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2037 msgid "Overwrite" msgstr "覆寫" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2007 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2210 msgid "Overwrite config files" msgstr "覆寫配置檔案" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1172 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 msgid "" "POSIX.2 extended regular expression for matching hostnames. Only works if " "dns lookups are passed to qosify via the add_dns_host ubus call." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2150 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2353 msgid "Port must be 1-65534 (qosify rejects 65535)." msgstr "連接埠必須為 1-65534 (qosify 不接受 65535)。" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2146 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2149 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2349 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2352 msgid "Port must be a number or a range (4500, 5060-5061)." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "QoS Enabled" msgstr "QoS 已啟用" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:721 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 msgid "Queueing mode" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1163 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1209 msgid "Quick Add" msgstr "快速新增" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1016 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1059 msgid "Quick Add: %s" msgstr "快速新增: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2153 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2356 msgid "Range start must not exceed end." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1213 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1353 msgid "Re-check devices" msgstr "重新檢查裝置" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 msgid "Re-checking devices..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:811 msgid "Re-read the mapping files only" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 msgid "Re-reading the mapping files..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 -msgid "" -"Re-runs the daemon's own device pass: every shaped section is looked up " -"again, one whose device now exists is started and one whose device has gone " -"is stopped. Nothing is reported back by the call — the result shows in the " -"Service table on the Overview tab." +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1351 +msgid "Re-runs the daemon's own device pass." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2024 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2227 msgid "Read error" msgstr "讀取錯誤" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Reading and validating files..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1681 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1884 msgid "Reading tc output..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1019 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1062 msgid "Reference" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload" msgstr "重新載入" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:765 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:808 msgid "Reload Rules" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1695 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1898 msgid "Reload failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1585 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1306 +msgid "Remove" +msgstr "移除" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1270 +msgid "Remove failed: %s" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1360 +msgid "Replaced with" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1787 msgid "Requires write access." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1219 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2086 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1365 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2289 msgid "Reset" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2120 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1554 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "Reset counters" +msgstr "重設計數器" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1568 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2323 msgid "Reset failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2084 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2287 msgid "Reset to defaults" msgstr "重設為預設值" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2116 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2319 msgid "Reset to defaults, applied." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Resetting" msgstr "重設中" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Restart" msgstr "重新啟動" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1203 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1341 msgid "Restore" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 -msgid "Restore qosify defaults" +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1359 +msgid "Restore qosify defaults. Shaping is left disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2095 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2298 msgid "Restoring defaults..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:605 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:646 msgid "Rules" msgstr "規則" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1976 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2179 msgid "Rules saved" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2053 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2056 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2256 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2259 msgid "Rules: %s" msgstr "規則: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:868 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:911 msgid "Running & Shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:869 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:912 msgid "Running — Not Shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:867 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:910 msgid "Running — Shaping Unknown" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1147 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:796 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1191 msgid "Save & Apply" msgstr "儲存並套用" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1825 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1897 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1924 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1985 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2028 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2100 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2127 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2188 msgid "Save failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Saving" msgstr "儲存中" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1803 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2006 msgid "Saving settings and applying..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2186 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2389 msgid "Section %s already exists." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1011 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1054 msgid "" "Section name is the class name that rules and dscp_* values refer to. " "qosify.init reads config alias the same way as config class." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Sending %s to qosify..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:711 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:754 msgid "Sent to CAKE as atm, noatm or ptm." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "Sent to CAKE as ether-vlan, once per tag." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:734 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:777 msgid "Sent to CAKE as mpu, in bytes." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:710 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:753 msgid "Sent to CAKE as overhead, in bytes." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:663 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:706 msgid "Service" msgstr "服務" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1745 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1948 msgid "Service action failed: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1817 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2020 msgid "Settings saved" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:723 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:894 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:937 msgid "Shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1198 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1336 msgid "Size" msgstr "大小" @@ -1018,44 +1124,48 @@ msgstr "大小" msgid "Skip this section" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:764 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:807 msgid "Start" msgstr "啟動" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:606 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:891 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:941 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:647 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:934 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:984 msgid "Status" msgstr "狀態" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:855 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:898 msgid "Status Unknown" msgstr "狀態未知" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:809 msgid "Stop" msgstr "停止" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1167 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1214 msgid "TCP single port, or range from to " msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1680 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1883 msgid "The detailed tc output needs write access to this page." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:590 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1309 +msgid "The first %d entries are shown." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:631 msgid "" "The qosify UCI configuration could not be loaded — class and interface lists " "may be incomplete." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1342 msgid "" "The selected files replace the ones on the router and qosify is reloaded." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2008 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2211 msgid "" "The selected files replace the ones on the router and qosify is reloaded. " "Download a backup from this tab first if you need one." @@ -1065,33 +1175,37 @@ msgstr "" msgid "Time below bulk_trigger_pps threshold until a bulk flow mark is removed" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1402 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1550 msgid "Traffic by CAKE Tin" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1401 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1548 msgid "Traffic by Class" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:596 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1549 +msgid "Traffic by DSCP" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:637 msgid "Traffic shaping and DSCP classification via qosify" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1168 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1215 msgid "UDP single port, or range from to " msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:864 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:866 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:907 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:909 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:968 msgid "Unknown" msgstr "未知" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:435 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:463 msgid "Unknown class/DSCP target: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:717 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:760 msgid "Unticked sets disabled 1 and qosify skips this section." msgstr "" @@ -1099,169 +1213,193 @@ msgstr "" msgid "Uplink bandwidth (same format as tc)" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Uplink bandwidth, same format as tc. Set just below line speed." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1205 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1343 msgid "Upload" msgstr "上傳" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1210 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1348 msgid "Upload & Apply" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2009 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2212 msgid "Upload and apply" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:719 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:762 msgid "Upload bandwidth" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2061 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2264 msgid "Upload error: %s" msgstr "上傳錯誤: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2078 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2281 msgid "Upload failed: %s" msgstr "上傳失敗: %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:725 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:768 msgid "Upload shaping" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2035 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2238 msgid "Uploading" msgstr "上傳中" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:892 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:935 msgid "Uptime" msgstr "上線時間" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:735 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:778 msgid "VLAN tags" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:981 msgid "Valid" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1951 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2154 msgid "Warning: %s but qosify is not shaping traffic — check the Status tab." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1690 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1707 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1724 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1893 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1910 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1927 msgid "Working" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1870 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2073 msgid "Write empty file" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1906 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2109 msgid "Writing config and reloading qosify..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1972 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2175 msgid "Writing rules and reloading qosify..." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:633 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:675 msgid "" "You have read-only access to this page, so editing and service control are " "disabled." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1563 +msgid "" +"Zero qosify's own counters (get_stats)? The CAKE tin counters belong to tc " +"and are kept." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 msgid "active" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1767 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1969 msgid "" "bandwidth_down does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1766 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1968 msgid "" "bandwidth_up does not look like a tc rate (100mbit, 12MBps, unlimited) — " "passing it through anyway" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1012 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1055 msgid "" "config device takes the same options, with name set to a netdev. nat " "defaults to 1 for interfaces and 0 for devices." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "device %s" msgstr "裝置 %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "device: %s, ingress: %s, egress: %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:289 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:317 msgid "" "disabled is set to \"%s\" — config_get_bool does not recognise that, so the " "section stays enabled" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:700 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:738 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:739 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:740 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2129 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +msgid "dump did not answer." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:743 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:781 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:782 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:783 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2332 msgid "e.g. %s" msgstr "例如 %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1171 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1218 msgid "fnmatch() pattern supporting * and ? as wildcard characters" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1613 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1816 msgid "get_stats did not answer." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:901 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:944 msgid "inactive" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1109 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1153 msgid "ingress %s, egress %s" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:282 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:310 msgid "ingress and egress are both 0 — nothing is shaped" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:900 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:943 msgid "interface %s" msgstr "介面 %s" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1155 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1199 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1235 msgid "match" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:274 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:292 +msgid "" +"mode \"%s\" is not a CAKE diffserv mode — tc refuses the qdisc, so nothing " +"is shaped although qosify reports the section active" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:291 +msgid "" +"name \"%s\" is dropped by qosify — it takes at most %d characters and no " +"quote" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:290 msgid "" "name is not set — qosify.init sends an empty device name and this section is " "never applied" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:278 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:306 msgid "" "nat is not sent: qosify only emits nat/nonat inside the host_isolate branch. " "CAKE does accept flows plus nat — put nat in options to apply it" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:279 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:307 msgid "" "nat only reaches %s — put it in options, or in both ingress_options and " "egress_options" @@ -1273,103 +1411,135 @@ msgid "" "on" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:718 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:761 msgid "netifd interface to enable QoS on. Required." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1313 +msgid "never" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "no" msgstr "否" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:284 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:312 msgid "no bandwidth_down or bandwidth — ingress CAKE runs unlimited" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:283 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:311 msgid "no bandwidth_up or bandwidth — egress CAKE runs unlimited" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:882 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:925 msgid "none" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:281 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:309 msgid "overhead and overhead_encap are ignored unless overhead_type is manual" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:595 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:299 +msgid "overhead_encap \"%s\" is not atm, noatm or ptm — tc refuses the qdisc" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:296 +msgid "" +"overhead_type \"%s\" is not one qosify.init knows, so no overhead is set" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:302 +msgid "overhead_vlan \"%s\" is not 0, 1 or 2 — qosify.init adds no ether-vlan" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:636 #: applications/luci-app-qosify/root/usr/share/luci/menu.d/luci-app-qosify.json:3 msgid "qosify" msgstr "qosify" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:847 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:890 msgid "" "qosify did not appear on ubus, so its config was not applied — press Reload" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:833 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1729 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:876 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1932 msgid "qosify did not come up — check the system log" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1610 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1672 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1813 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1875 msgid "qosify is not running. Start from the Overview tab." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1735 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1887 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1938 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2090 msgid "qosify is still running — leaving the qdiscs alone" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1253 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1361 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1362 +msgid "qosify package template" +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1399 msgid "qosify-status" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1682 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1885 msgid "qosify-status returned no output." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:918 msgid "" "rpcd is not answering for qosify — check the ACL in /usr/share/rpcd/acl.d " "and restart rpcd" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:832 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1609 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1671 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1728 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1734 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1886 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:875 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1290 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1812 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1874 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1931 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1937 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:2089 msgid "rpcd is not answering for qosify, so the service state is unknown." msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:955 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:998 msgid "section name" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:953 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:996 msgid "section type" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1529 -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1533 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1727 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1731 msgid "share" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1541 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1256 +msgid "timeout must be a whole number of seconds above 0." +msgstr "" + +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1739 msgid "total" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1160 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1204 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:1236 msgid "value" msgstr "" -#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:902 +#: applications/luci-app-qosify/htdocs/luci-static/resources/view/qosify/main.js:945 msgid "yes" msgstr "是" +#~ msgid "Restore qosify defaults" +#~ msgstr "恢復 qosify 預設值" + #~ msgid "Backup Current Files" #~ msgstr "備份當前檔案" diff --git a/luci-app-qosify/root/usr/share/qosify-luci/cleanup b/luci-app-qosify/root/usr/share/qosify-luci/cleanup index 39e8b3fc5..233656935 100755 --- a/luci-app-qosify/root/usr/share/qosify-luci/cleanup +++ b/luci-app-qosify/root/usr/share/qosify-luci/cleanup @@ -4,8 +4,8 @@ # Remove qosify qdiscs and ifb devices left behind after qosify exits. # # A clean stop only does part of this: interface_clear_qdisc() removes the root -# qdisc, the bpf filters and the ifb device but not clsact, and main() never -# calls qosify_dns_stop(), so ifb-dns stays up. A crash, a SIGKILL or a respawn +# qdisc, the bpf filters and the ifb device but not clsact, and before 16c95b0 +# main() never called qosify_dns_stop(), so ifb-dns stays up. A crash, a SIGKILL or a respawn # loop leaves the rest too. This script deliberately only touches the devices of # enabled qosify sections, the ifb names qosify derives from them and qosify's # own ifb-dns -- never a qdisc or ifb qosify did not create. @@ -32,11 +32,12 @@ exec 9>"$LOCK" command -v flock >/dev/null && { flock -n 9 || exit 0; } # Mirrors interface_ifb_name() in qosify: "ifb-" while strlen(dev) + 4 is -# below IFNAMSIZ. Longer names take a different branch upstream which we do not -# try to reproduce here. +# below IFNAMSIZ, else "ifb-" + the first two and last nine characters of dev +# (21cc618). Older builds read before the name for long devices, so their ifb +# cannot be derived and simply is not found here. ifb_name() { - [ "${#1}" -lt 12 ] || return 1 - echo "ifb-$1" + [ "${#1}" -lt 12 ] && echo "ifb-$1" || + echo "ifb-$(printf %.2s "$1")${1#"${1%?????????}"}" } qosify_filter() { @@ -44,7 +45,8 @@ qosify_filter() { } # qosify's filters sit at QOSIFY_PRIO_BASE (0x110 = 272): its bpf classifier on -# egress, and on ingress the classifier plus the DNS and ifb redirects up to 277. +# egress, and on ingress the classifier plus the DNS and ifb redirects up to 277 +# (interface_clear_qdisc() deletes the same six; aa3aa6b uses 272-274 of them). # A clean exit removes them and the root qdisc, so they only survive a crash, and # then the root cake is qosify's too. Another shaper's root qdisc, and a clsact # carrying anyone else's filters, are left alone. @@ -130,7 +132,7 @@ fi for dev in $DEVS; do clear_dev "$dev"; done # ifb-dns is qosify's fixed DNS ifb, not derived from any section, and a stop -# leaves it up under the kernel's default fq_codel. Deleting its root qdisc only +# before 16c95b0 leaves it up under the kernel's default fq_codel. Deleting its root qdisc only # re-attaches the default, so drop the device -- only once qosify has exited. pidof qosify >/dev/null || ip link del ifb-dns 2>/dev/null diff --git a/luci-app-qosify/root/usr/share/qosify-luci/qosify b/luci-app-qosify/root/usr/share/qosify-luci/qosify index 7a3d0d068..dc3f86ab6 100644 --- a/luci-app-qosify/root/usr/share/qosify-luci/qosify +++ b/luci-app-qosify/root/usr/share/qosify-luci/qosify @@ -37,6 +37,7 @@ config interface wan option nat 1 option host_isolate 1 option autorate_ingress 0 + option multiqueue 0 option ingress_options "" option egress_options "" option options "" diff --git a/luci-app-qosify/root/usr/share/rpcd/acl.d/luci-app-qosify.json b/luci-app-qosify/root/usr/share/rpcd/acl.d/luci-app-qosify.json index 9179b20f0..3a2e2202b 100644 --- a/luci-app-qosify/root/usr/share/rpcd/acl.d/luci-app-qosify.json +++ b/luci-app-qosify/root/usr/share/rpcd/acl.d/luci-app-qosify.json @@ -6,21 +6,24 @@ "qosify": [ "status", "get_stats", "dump" ], "rc": [ "list" ], "service": [ "list" ], - "file": [ "read", "stat" ] + "network.interface": [ "status" ], + "file": [ "read", "stat", "list" ] }, "uci": [ "qosify" ], "file": { "/etc/config/qosify": [ "read", "list" ], "/etc/qosify/00-defaults.conf": [ "read", "list" ], + "/etc/init.d/qosify": [ "read" ], "/usr/share/qosify-luci/qosify": [ "read" ], "/usr/share/qosify-luci/00-defaults.conf": [ "read" ], "/proc/uptime": [ "read" ], - "/proc/[0-9]*/stat": [ "read" ] + "/proc/[0-9]*/stat": [ "read" ], + "/sys/class/net/*/queues": [ "list" ] } }, "write": { "ubus": { - "qosify": [ "reload", "check_devices" ], + "qosify": [ "reload", "check_devices", "add", "remove" ], "rc": [ "init" ], "uci": [ "revert" ], "file": [ "write", "exec" ] diff --git a/luci-app-samba4/po/de/samba4.po b/luci-app-samba4/po/de/samba4.po index c19f50a9b..3c28c6695 100644 --- a/luci-app-samba4/po/de/samba4.po +++ b/luci-app-samba4/po/de/samba4.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-05-26 17:57+0200\n" -"PO-Revision-Date: 2026-09-08 12:39+0000\n" -"Last-Translator: HerbJul <19JulianHerbst95@web.de>\n" +"PO-Revision-Date: 2026-11-04 16:54+0000\n" +"Last-Translator: Dirk Brenken \n" "Language-Team: German \n" "Language: de\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2026.9.1\n" +"X-Generator: Weblate 2026.11.1.dev0\n" #: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:120 msgid "Allow guests" @@ -129,7 +129,7 @@ msgstr "Besitzer Erben" #: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:34 msgid "Interface" -msgstr "Interface" +msgstr "Schnittstelle" #: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:35 msgid "Listen only on the given interface or, if unspecified, on lan" diff --git a/luci-app-samba4/po/hu/samba4.po b/luci-app-samba4/po/hu/samba4.po index d75d1462e..1021c7341 100644 --- a/luci-app-samba4/po/hu/samba4.po +++ b/luci-app-samba4/po/hu/samba4.po @@ -1,8 +1,9 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2026-03-08 17:30+0000\n" -"Last-Translator: hmzs \n" +"PO-Revision-Date: 2026-11-05 07:53+0000\n" +"Last-Translator: Kövecses József " +"\n" "Language-Team: Hungarian \n" "Language: hu\n" @@ -10,7 +11,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.17-dev\n" +"X-Generator: Weblate 2026.11.1.dev0\n" #: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:120 msgid "Allow guests" @@ -126,12 +127,13 @@ msgstr "Tulajdonos öröklése" #: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:34 msgid "Interface" -msgstr "Csatoló" +msgstr "Interfész" #: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:35 msgid "Listen only on the given interface or, if unspecified, on lan" msgstr "" -"Figyelés csak a megadott csatolón, vagy a helyi hálózaton, ha nincs megadva" +"Figyelés csak a megadott interfészen, vagy a helyi hálózaton, ha nincs " +"megadva" #: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:98 msgid "Name" @@ -152,7 +154,7 @@ msgstr "" #: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:99 msgid "Path" -msgstr "Útvonal" +msgstr "Elérési út" #: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:94 msgid "" diff --git a/luci-app-samba4/po/ko/samba4.po b/luci-app-samba4/po/ko/samba4.po index 7e210cda9..3501b5e75 100644 --- a/luci-app-samba4/po/ko/samba4.po +++ b/luci-app-samba4/po/ko/samba4.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-03-22 15:23+0100\n" -"PO-Revision-Date: 2026-02-10 18:10+0000\n" -"Last-Translator: Hyeonjeong Lee \n" +"PO-Revision-Date: 2026-10-30 23:22+0000\n" +"Last-Translator: Hyeonjeong Lee \n" "Language-Team: Korean \n" "Language: ko\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 5.16-dev\n" +"X-Generator: Weblate 2026.11.dev0\n" #: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:120 msgid "Allow guests" @@ -130,7 +130,7 @@ msgstr "인터페이스" #: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:35 msgid "Listen only on the given interface or, if unspecified, on lan" -msgstr "지정된 인터페이스에서만 수신 대기하며, 미지정 시 lan에서 응답합니다" +msgstr "지정 시 해당 인터페이스에서만, 미지정 시 lan에서 수신 대기합니다" #: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:98 msgid "Name" diff --git a/luci-app-samba4/po/pl/samba4.po b/luci-app-samba4/po/pl/samba4.po index 2eab039ba..5cc48f0fe 100644 --- a/luci-app-samba4/po/pl/samba4.po +++ b/luci-app-samba4/po/pl/samba4.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2025-01-27 15:34+0000\n" -"Last-Translator: Piotr Kołtun \n" +"PO-Revision-Date: 2026-11-04 21:08+0000\n" +"Last-Translator: Matthaiks \n" "Language-Team: Polish \n" "Language: pl\n" @@ -11,7 +11,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Weblate 5.10-dev\n" +"X-Generator: Weblate 2026.11.1.dev0\n" #: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:120 msgid "Allow guests" @@ -109,7 +109,7 @@ msgstr "Wymuś synchroniczne I/O" #: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:31 msgid "General Settings" -msgstr "Ustawienia główne" +msgstr "Ustawienia ogólne" #: applications/luci-app-samba4/root/usr/share/rpcd/acl.d/luci-app-samba4.json:3 msgid "Grant access to LuCI app samba4" diff --git a/luci-app-samba4/po/vi/samba4.po b/luci-app-samba4/po/vi/samba4.po index 52ac2ce92..82bbdbbc9 100644 --- a/luci-app-samba4/po/vi/samba4.po +++ b/luci-app-samba4/po/vi/samba4.po @@ -3,8 +3,9 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-08-16 06:59+0200\n" -"PO-Revision-Date: 2023-06-20 13:51+0000\n" -"Last-Translator: Mashiro \n" +"PO-Revision-Date: 2026-11-01 06:11+0000\n" +"Last-Translator: Lê Hoàng Tiến " +"\n" "Language-Team: Vietnamese \n" "Language: vi\n" @@ -12,7 +13,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.18.1\n" +"X-Generator: Weblate 2026.11.dev0\n" #: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:120 msgid "Allow guests" @@ -40,7 +41,7 @@ msgstr "Chia sẻ Apple Time-machine" #: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:104 msgid "Browse-able" -msgstr "Cho phép duyệt (Browse-able)" +msgstr "Có thể duyệt" #: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:136 msgid "Create mask" @@ -76,7 +77,7 @@ msgstr "Chỉnh sửa mẫu được sử dụng để tạo cấu hình samba." #: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:57 msgid "Enable extra Tuning" -msgstr "Bật tinh chỉnh bổ sung (Extra Tuning)" +msgstr "Bật tinh chỉnh bổ sung" #: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:64 msgid "Enable macOS compatible shares" @@ -93,20 +94,22 @@ msgstr "" "máy khách ghi vào cùng một tệp, cùng lúc!" #: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:65 +#, fuzzy msgid "" "Enables Apple's AAPL extension globally and adds macOS compatibility options " "to all shares." msgstr "" -"Kích hoạt phần mở rộng AAPL của Apple toàn cầu và thêm các tùy chọn tương " -"thích macOS cho tất cả các chia sẻ." +"Kích hoạt phần mở rộng AAPL của Apple cho toàn hệ thống và thêm các tùy chọn " +"tương thích macOS cho tất cả các chia sẻ." #: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:115 +#, fuzzy msgid "Force Root" msgstr "Bắt buộc Root" #: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:61 msgid "Force synchronous I/O" -msgstr "Bắt buộc I/O đồng bộ" +msgstr "Bắt buộc dùng đồng bộ I/O" #: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:31 msgid "General Settings" @@ -131,8 +134,8 @@ msgstr "Giao diện" #: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:35 msgid "Listen only on the given interface or, if unspecified, on lan" msgstr "" -"Chỉ lắng nghe trên giao diện đã chỉ định hoặc, nếu không được chỉ định, trên " -"LAN" +"Chỉ lắng nghe trên giao diện đã chỉ định hoặc, nếu không được chỉ định, chỉ " +"lắng nghe trên LAN" #: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:98 msgid "Name" @@ -148,8 +151,8 @@ msgid "" "On lower-end devices may increase speeds, by forcing synchronous I/O instead " "of the default asynchronous." msgstr "" -"Trên các thiết bị cấu hình thấp hơn, việc bắt buộc I/O đồng bộ thay vì mặc " -"định là bất đồng bộ có thể tăng tốc độ." +"Việc bắt buộc I/O đồng bộ thay vì mặc định là bất đồng bộ có thể tăng tốc độ " +"trên các thiết bị cấu hình thấp hơn." #: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:99 msgid "Path" @@ -161,7 +164,7 @@ msgid "" "mounted device." msgstr "" "Vui lòng thêm các thư mục để chia sẻ. Mỗi thư mục tương ứng với một thư mục " -"trên một thiết bị đã được gắn kết (mount)." +"trên một thiết bị lưu trữ đã được gắn kết (mounted device)." #: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:109 msgid "Read-only" @@ -178,13 +181,13 @@ msgid "" "('|') should not be changed. They get their values from the 'General " "Settings' tab." msgstr "" -"Đây là nội dung của tệp '/etc/samba/smb.conf.template' mà cấu hình samba của " -"bạn sẽ được tạo ra từ đó. Các giá trị được bao quanh bởi dấu | không nên " -"được thay đổi. Chúng lấy giá trị của chúng từ tab 'Cài đặt chung'." +"Cấu hình samba của bạn sẽ được tạo ra từ nội dung của tệp '/etc/samba/" +"smb.conf.template'. Các giá trị được bao quanh bởi dấu ('|') không nên được " +"thay đổi. Chúng lấy giá trị từ tab 'Cài đặt chung'." #: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:153 msgid "Time-machine size in GB" -msgstr "Kích thước của Time-machine bằng GB" +msgstr "Kích thước của Time-machine đo bằng GB" #: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:148 msgid "Vfs objects" diff --git a/luci-app-samba4/po/zh_Hans/samba4.po b/luci-app-samba4/po/zh_Hans/samba4.po index 7edfba329..ae1b0a834 100644 --- a/luci-app-samba4/po/zh_Hans/samba4.po +++ b/luci-app-samba4/po/zh_Hans/samba4.po @@ -6,9 +6,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2026-08-31 06:44+0000\n" -"Last-Translator: Hosted Weblate user 54392 " -"\n" +"PO-Revision-Date: 2026-10-27 15:07+0000\n" +"Last-Translator: nKsyn \n" "Language-Team: Chinese (Simplified Han script) \n" "Language: zh_Hans\n" @@ -16,7 +15,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 2026.9.dev0\n" +"X-Generator: Weblate 2026.11.dev0\n" #: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:120 msgid "Allow guests" @@ -30,7 +29,7 @@ msgstr "允许旧(不安全)的协议/身份验证" msgid "" "Allow legacy smb(v1)/Lanman connections, needed for older devices without " "smb(v2.1/3) support." -msgstr "允许不支持smb(v2.1/3)的旧设备使用旧的smb(v1)/Lanman连接。" +msgstr "允许不支持smb(v2.1/3)的老设备使用过时的smb(v1)/Lanman连接。" #: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:117 msgid "Allowed users" diff --git a/luci-app-sfp-info/Makefile b/luci-app-sfp-info/Makefile index 64f2b9b75..4a9c1372b 100644 --- a/luci-app-sfp-info/Makefile +++ b/luci-app-sfp-info/Makefile @@ -9,7 +9,7 @@ LUCI_PKGARCH:=all PKG_LICENSE:=Apache-2.0 PKG_VERSION:=1.0 -PKG_RELEASE:=5 +PKG_RELEASE:=6 PKG_MAINTAINER:=Meng Zhuo include $(TOPDIR)/feeds/luci/luci.mk diff --git a/luci-app-sfp-info/po/de/sfp-info.po b/luci-app-sfp-info/po/de/sfp-info.po index 45135d017..0c6bfe0a0 100644 --- a/luci-app-sfp-info/po/de/sfp-info.po +++ b/luci-app-sfp-info/po/de/sfp-info.po @@ -3,12 +3,12 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Language: de\n" "Content-Transfer-Encoding: 8bit\n" -"Last-Translator: HerbJul <19JulianHerbst95@web.de>\n" +"Last-Translator: Dirk Brenken \n" "Language-Team: German \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"PO-Revision-Date: 2026-09-08 12:39+0000\n" -"X-Generator: Weblate 2026.9.1\n" +"PO-Revision-Date: 2026-11-04 16:54+0000\n" +"X-Generator: Weblate 2026.11.1.dev0\n" #: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:68 msgid "Bias Current" @@ -24,7 +24,7 @@ msgstr "" #: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:61 msgid "Interface" -msgstr "Interface" +msgstr "Schnittstelle" #: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:106 msgid "No SFP/QSFP modules detected." @@ -100,7 +100,7 @@ msgstr "" #: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:63 msgid "Type" -msgstr "" +msgstr "Typ" #: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:62 msgid "Vendor" diff --git a/luci-app-sfp-info/po/fr/sfp-info.po b/luci-app-sfp-info/po/fr/sfp-info.po new file mode 100644 index 000000000..ed4a7b41f --- /dev/null +++ b/luci-app-sfp-info/po/fr/sfp-info.po @@ -0,0 +1,119 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: fr\n" +"Content-Transfer-Encoding: 8bit\n" +"Last-Translator: Martin Olmer \n" +"Language-Team: French \n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"PO-Revision-Date: 2026-11-06 10:11+0000\n" +"X-Generator: Weblate 2026.11.2.dev0\n" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:68 +msgid "Bias Current" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:65 +msgid "Date Code" +msgstr "" + +#: applications/luci-app-sfp-info/root/usr/share/rpcd/acl.d/luci-app-sfp-info.json:3 +msgid "Grant ubus access to SFP Info" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:61 +msgid "Interface" +msgstr "Interface" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:106 +msgid "No SFP/QSFP modules detected." +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:205 +msgid "Normal" +msgstr "Normal" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:64 +msgid "Part Number" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:70 +msgid "RX Power" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:182 +msgid "RX power high" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:183 +msgid "RX power low" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:46 +msgid "Range" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:78 +msgid "SFP / QSFP Transceiver Information" +msgstr "" + +#: applications/luci-app-sfp-info/root/usr/share/luci/menu.d/luci-app-sfp-info.json:3 +msgid "SFP Info" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:71 +msgid "Status" +msgstr "État" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:69 +msgid "TX Power" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:178 +msgid "TX bias high" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:179 +msgid "TX bias low" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:180 +msgid "TX power high" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:181 +msgid "TX power low" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:66 +msgid "Temperature" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:174 +msgid "Temperature high" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:175 +msgid "Temperature low" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:63 +msgid "Type" +msgstr "Type" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:62 +msgid "Vendor" +msgstr "Vendeur" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:67 +msgid "Voltage" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:176 +msgid "Voltage high" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:177 +msgid "Voltage low" +msgstr "" diff --git a/luci-app-sfp-info/po/hu/sfp-info.po b/luci-app-sfp-info/po/hu/sfp-info.po new file mode 100644 index 000000000..74aaadf8a --- /dev/null +++ b/luci-app-sfp-info/po/hu/sfp-info.po @@ -0,0 +1,119 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: hu\n" +"Content-Transfer-Encoding: 8bit\n" +"Last-Translator: Martin Olmer \n" +"Language-Team: Hungarian \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"PO-Revision-Date: 2026-11-05 09:36+0000\n" +"X-Generator: Weblate 2026.11.2.dev0\n" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:68 +msgid "Bias Current" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:65 +msgid "Date Code" +msgstr "" + +#: applications/luci-app-sfp-info/root/usr/share/rpcd/acl.d/luci-app-sfp-info.json:3 +msgid "Grant ubus access to SFP Info" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:61 +msgid "Interface" +msgstr "Interfész" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:106 +msgid "No SFP/QSFP modules detected." +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:205 +msgid "Normal" +msgstr "Normál" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:64 +msgid "Part Number" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:70 +msgid "RX Power" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:182 +msgid "RX power high" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:183 +msgid "RX power low" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:46 +msgid "Range" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:78 +msgid "SFP / QSFP Transceiver Information" +msgstr "" + +#: applications/luci-app-sfp-info/root/usr/share/luci/menu.d/luci-app-sfp-info.json:3 +msgid "SFP Info" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:71 +msgid "Status" +msgstr "Állapot" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:69 +msgid "TX Power" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:178 +msgid "TX bias high" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:179 +msgid "TX bias low" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:180 +msgid "TX power high" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:181 +msgid "TX power low" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:66 +msgid "Temperature" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:174 +msgid "Temperature high" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:175 +msgid "Temperature low" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:63 +msgid "Type" +msgstr "Típus" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:62 +msgid "Vendor" +msgstr "Gyártó" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:67 +msgid "Voltage" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:176 +msgid "Voltage high" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:177 +msgid "Voltage low" +msgstr "" diff --git a/luci-app-sfp-info/po/it/sfp-info.po b/luci-app-sfp-info/po/it/sfp-info.po new file mode 100644 index 000000000..9c2b841b5 --- /dev/null +++ b/luci-app-sfp-info/po/it/sfp-info.po @@ -0,0 +1,119 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: it\n" +"Content-Transfer-Encoding: 8bit\n" +"Last-Translator: Martin Olmer \n" +"Language-Team: Italian \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"PO-Revision-Date: 2026-11-05 20:26+0000\n" +"X-Generator: Weblate 2026.11.2.dev0\n" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:68 +msgid "Bias Current" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:65 +msgid "Date Code" +msgstr "" + +#: applications/luci-app-sfp-info/root/usr/share/rpcd/acl.d/luci-app-sfp-info.json:3 +msgid "Grant ubus access to SFP Info" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:61 +msgid "Interface" +msgstr "Interfaccia" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:106 +msgid "No SFP/QSFP modules detected." +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:205 +msgid "Normal" +msgstr "Normale" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:64 +msgid "Part Number" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:70 +msgid "RX Power" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:182 +msgid "RX power high" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:183 +msgid "RX power low" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:46 +msgid "Range" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:78 +msgid "SFP / QSFP Transceiver Information" +msgstr "" + +#: applications/luci-app-sfp-info/root/usr/share/luci/menu.d/luci-app-sfp-info.json:3 +msgid "SFP Info" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:71 +msgid "Status" +msgstr "Stato" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:69 +msgid "TX Power" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:178 +msgid "TX bias high" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:179 +msgid "TX bias low" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:180 +msgid "TX power high" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:181 +msgid "TX power low" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:66 +msgid "Temperature" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:174 +msgid "Temperature high" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:175 +msgid "Temperature low" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:63 +msgid "Type" +msgstr "Tipo" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:62 +msgid "Vendor" +msgstr "Produttore" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:67 +msgid "Voltage" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:176 +msgid "Voltage high" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:177 +msgid "Voltage low" +msgstr "" diff --git a/luci-app-sfp-info/po/pt_BR/sfp-info.po b/luci-app-sfp-info/po/pt_BR/sfp-info.po index 5d4116ede..3f810aca3 100644 --- a/luci-app-sfp-info/po/pt_BR/sfp-info.po +++ b/luci-app-sfp-info/po/pt_BR/sfp-info.po @@ -3,12 +3,12 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Language: pt_BR\n" "Content-Transfer-Encoding: 8bit\n" -"Last-Translator: Martin Olmer \n" +"Last-Translator: LucasMZ \n" "Language-Team: Portuguese (Brazil) \n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"PO-Revision-Date: 2026-09-02 07:51+0000\n" -"X-Generator: Weblate 2026.9.dev0\n" +"PO-Revision-Date: 2026-11-01 06:11+0000\n" +"X-Generator: Weblate 2026.11.dev0\n" #: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:68 msgid "Bias Current" @@ -64,7 +64,7 @@ msgstr "" #: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:71 msgid "Status" -msgstr "Status" +msgstr "Estado" #: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:69 msgid "TX Power" diff --git a/luci-app-sfp-info/po/ro/sfp-info.po b/luci-app-sfp-info/po/ro/sfp-info.po new file mode 100644 index 000000000..6b42df22c --- /dev/null +++ b/luci-app-sfp-info/po/ro/sfp-info.po @@ -0,0 +1,120 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: ro\n" +"Content-Transfer-Encoding: 8bit\n" +"Last-Translator: Martin Olmer \n" +"Language-Team: Romanian \n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" +"PO-Revision-Date: 2026-11-05 00:32+0000\n" +"X-Generator: Weblate 2026.11.1.dev0\n" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:68 +msgid "Bias Current" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:65 +msgid "Date Code" +msgstr "" + +#: applications/luci-app-sfp-info/root/usr/share/rpcd/acl.d/luci-app-sfp-info.json:3 +msgid "Grant ubus access to SFP Info" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:61 +msgid "Interface" +msgstr "Interfață" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:106 +msgid "No SFP/QSFP modules detected." +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:205 +msgid "Normal" +msgstr "Normal" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:64 +msgid "Part Number" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:70 +msgid "RX Power" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:182 +msgid "RX power high" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:183 +msgid "RX power low" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:46 +msgid "Range" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:78 +msgid "SFP / QSFP Transceiver Information" +msgstr "" + +#: applications/luci-app-sfp-info/root/usr/share/luci/menu.d/luci-app-sfp-info.json:3 +msgid "SFP Info" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:71 +msgid "Status" +msgstr "Status" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:69 +msgid "TX Power" +msgstr "Putere TX" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:178 +msgid "TX bias high" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:179 +msgid "TX bias low" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:180 +msgid "TX power high" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:181 +msgid "TX power low" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:66 +msgid "Temperature" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:174 +msgid "Temperature high" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:175 +msgid "Temperature low" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:63 +msgid "Type" +msgstr "Tip" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:62 +msgid "Vendor" +msgstr "Furnizor" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:67 +msgid "Voltage" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:176 +msgid "Voltage high" +msgstr "" + +#: applications/luci-app-sfp-info/htdocs/luci-static/resources/view/sfp-info/main.js:177 +msgid "Voltage low" +msgstr "" diff --git a/luci-app-shunt/Makefile b/luci-app-shunt/Makefile index 5759e1683..3ef0ea320 100644 --- a/luci-app-shunt/Makefile +++ b/luci-app-shunt/Makefile @@ -6,8 +6,8 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=LuCI support for shunt LUCI_DEPENDS:=+luci-base +shunt -PKG_VERSION:=0.2.0 -PKG_RELEASE:=6 +PKG_VERSION:=0.4.5 +PKG_RELEASE:=7 PKG_LICENSE:=Apache-2.0 PKG_MAINTAINER:=Dirk Brenken diff --git a/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js b/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js index cbdaf337d..68d8aa127 100644 --- a/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js +++ b/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js @@ -56,7 +56,18 @@ function handleAction(ev) { E('p', {}, [_('Apply failed: %s').format(e)]), 'error'); }); } - return fs.exec_direct('/etc/init.d/shunt', [ev]); + return fs.exec_direct('/etc/init.d/shunt', [ev]) + .catch(function (e) { + ui.addNotification(null, + E('p', {}, [_('Action failed: %s').format(e)]), 'error'); + }); +} + +// What the session may not do, it is not offered: the buttons below save +// the form and run the init script, both of which need the write half of +// the ACL. LuCI's own Save & Apply goes by the same check. +function readOnly(m) { + return !!m.readonly || L.hasViewPermission() === false; } function fmtMark(mark) { @@ -200,6 +211,41 @@ function renderSnoop(svc) { ]); } +// The interface of a tracked policy carries the health of its interface: the +// probes are per interface, and every policy on it falls back together. Of a +// policy with several interfaces, the one its new connections use is marked. +function renderIface(p, devices, active) { + const name = p.interface || (p.tproxy_port ? ':%d'.format(p.tproxy_port) : '-'); + const h = (devices && p.iface) ? devices[p.iface] : null; + const inuse = (p.members > 1 && active && active[p.name] === p.member) + ? E('span', { 'class': 'shunt-key' }, _('in use')) : ''; + + if (!h) { + return inuse ? E('span', {}, [name, inuse]) : name; + } + + return E('span', { + 'class': 'shunt-state', + 'title': h.alive + ? _('answers the health probes') + : _('no answer to the health probes since %s') + .format(new Date(h.since * 1000).toLocaleTimeString()) + }, [dot(h.alive ? 'ok' : 'warn'), E('span', {}, name), inuse]); +} + +function renderTrack(svc) { + if (!svc || !svc.track || !svc.track.devices) { + return '-'; + } + + const all = Object.keys(svc.track.devices); + const alive = all.filter(function (d) { + return svc.track.devices[d].alive; + }); + + return '%d / %d'.format(alive.length, all.length); +} + function renderPolicies(st) { if (!st || !st.policies || !st.policies.length) { return E('div', { 'class': 'shunt-sub' }, _('No policy is active.')); @@ -218,16 +264,19 @@ function renderPolicies(st) { ]) ]; + const devices = st.service && st.service.track ? st.service.track.devices : null; + const active = st.service ? st.service.active : null; + st.policies.forEach(function (p) { // A bypass policy has no mark, no table and no rule of its own, so // those cells are empty rather than unknown. const bypass = (p.action === 'bypass'); rows.push(E('tr', { 'class': 'tr' }, [ - E('td', { 'class': 'td' }, [p.name]), + // The further interfaces of a policy go under its first one. + E('td', { 'class': 'td' }, [p.member > 0 ? '↳ %d'.format(p.member + 1) : p.name]), E('td', { 'class': 'td' }, [p.action || 'route']), - E('td', { 'class': 'td' }, [p.interface || - (p.tproxy_port ? ':%d'.format(p.tproxy_port) : '-')]), + E('td', { 'class': 'td' }, [renderIface(p, devices, active)]), E('td', { 'class': 'td' }, [fmtMark(p.mark)]), E('td', { 'class': 'td' }, [bypass ? '-' : fmtCount(p.rt_table)]), E('td', { 'class': 'td' }, [bypass ? '-' : fmtCount(p.rules)]), @@ -244,8 +293,12 @@ function renderIssues(st) { return ''; } + // Config issues name a section and an option, all others a policy and + // an entry. const items = st.issues.map(function (i) { - const where = i.entry ? '%s: %s'.format(i.policy, i.entry) : i.policy; + const name = i.policy || i.section; + const entry = i.entry || i.option; + const where = entry ? '%s: %s'.format(name, entry) : name; return E('li', {}, ['%s - %s'.format(where, i.reason)]); }); @@ -352,13 +405,22 @@ return view.extend({ setNodes('shunt-state', renderState(st)); setNodes('shunt-version', E('span', {}, ['%s / %s'.format( pkgs['luci-app-shunt'] || _('n/a'), pkgs['shunt'] || _('n/a'))])); + // A learned Set is bounded by learn_limit, see the README. A + // policy listed here was brought more addresses than fit. + const capped = (svc && svc.capped) ? Object.keys(svc.capped).sort() : []; + setNodes('shunt-learned', E('span', {}, [ - svc ? fmtCount(svc.dedupe) : '-'])); + svc ? fmtCount(svc.dedupe) : '-', + capped.length ? E('div', { 'class': 'shunt-sub' }, + _('limit reached: %s').format(capped.map(function (n) { + return '%s (%d)'.format(n, svc.capped[n]); + }).join(', '))) : ''])); setNodes('shunt-poll', E('span', {}, [svc?.poll ? (svc.poll.resolv ? _('%d name(s) every %ds').format(svc.poll.names, svc.poll.interval) : _('unavailable - ucode-mod-resolv missing')) : '-'])); + setNodes('shunt-track', E('span', {}, [renderTrack(svc)])); setNodes('shunt-policies', renderPolicies(st)); setNodes('shunt-snoop', renderSnoop(svc)); setNodes('shunt-issues', renderIssues(st)); @@ -382,7 +444,9 @@ return view.extend({ E('span', { 'id': 'shunt-learned' }, '-'), _('across all policies')), card(_('Poll'), E('span', { 'id': 'shunt-poll' }, '-'), - _('wildcards are covered by the observer only')) + _('wildcards are covered by the observer only')), + card(_('Health Tracking'), E('span', { 'id': 'shunt-track' }, '-'), + _('policy interfaces answering the probes')) ]), E('div', { 'id': 'shunt-policies' }, ''), E('div', { 'id': 'shunt-snoop' }, ''), @@ -392,7 +456,7 @@ return view.extend({ poll.add(function () { return L.resolveDefault(getStatus(), null).then(update); - }, 2); + }, 5); // The status subtree only exists once m.render() has resolved and // View.__init__ has attached the nodes; a direct call here would find @@ -406,6 +470,7 @@ return view.extend({ s.addremove = false; s.tab('general', _('General Settings')); s.tab('snoop', _('DNS Observer Settings')); + s.tab('track', _('Health Tracking')); o = s.taboption('general', form.Flag, 'enabled', _('Enabled'), _('Enable the shunt service.')); @@ -439,6 +504,11 @@ return view.extend({ return true; }; + o = s.taboption('general', form.Value, 'learn_limit', _('Learned Address Limit'), + _('Most addresses one learned Set holds, per policy and address family. An address beyond it is not learned until older ones expire and takes the normal uplink meanwhile. It bounds what a host on an observed segment can do with forged DNS answers; raise it only if a policy with a very large list reaches it.')); + o.datatype = 'and(uinteger,range(64,65536))'; + o.placeholder = '4096'; + o = s.taboption('snoop', form.Flag, 'snoop', _('Passive DNS Observer'), _('Read DNS answers as they pass the LAN device, whichever resolver produced them. Required for wildcard domains, which cannot be resolved ahead of time.')); o.rmempty = false; @@ -450,14 +520,22 @@ return view.extend({ o.multiple = true; o.noaliases = true; + o = s.taboption('track', form.DynamicList, 'track_ip', _('Probe Targets'), + _('Addresses that answer ICMP echo, reachable through every policy interface - public resolvers are the usual choice. Every interface a route policy uses is probed through itself every 5 seconds; one that answers no target for three rounds is treated as down and its policies fall back until it answers again. Empty means no tracking, see the README.')); + o.datatype = 'ipaddr("nomask")'; + o.placeholder = '1.1.1.1'; + s = m.section(form.TypedSection, 'global'); s.anonymous = true; s.addremove = false; s.render = L.bind(function () { + const ro = readOnly(m) || null; + return E('div', { 'class': 'cbi-page-actions' }, [ E('button', { 'class': 'btn cbi-button cbi-button-negative important', 'style': 'float:none;margin-right:.4em;', + 'disabled': ro, 'click': ui.createHandlerFn(this, function () { return handleAction('stop'); }) @@ -465,6 +543,7 @@ return view.extend({ E('button', { 'class': 'btn cbi-button cbi-button-positive important', 'style': 'float:none', + 'disabled': ro, 'click': ui.createHandlerFn(this, function () { return handleAction('restart'); }) diff --git a/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js b/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js index 09a9880a3..898f2b720 100644 --- a/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js +++ b/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js @@ -42,7 +42,18 @@ function handleAction(ev) { E('p', {}, [_('Apply failed: %s').format(e)]), 'error'); }); } - return fs.exec_direct('/etc/init.d/shunt', [ev]); + return fs.exec_direct('/etc/init.d/shunt', [ev]) + .catch(function (e) { + ui.addNotification(null, + E('p', {}, [_('Action failed: %s').format(e)]), 'error'); + }); +} + +// What the session may not do, it is not offered: the buttons below save +// the form and run the init script, both of which need the write half of +// the ACL. LuCI's own Save & Apply goes by the same check. +function readOnly(m) { + return !!m.readonly || L.hasViewPermission() === false; } // `shunt refresh` re-reads the domain and address files in the running @@ -122,11 +133,16 @@ return view.extend({ o.default = 'route'; o.editable = true; - o = s.option(form.Value, 'interface', _('Interface'), + o = s.option(form.DynamicList, 'interface', _('Interface'), _('The device or logical interface this policy routes into. A \ - netifd name is resolved to its device; any other device name is used as entered.')); + netifd name is resolved to its device; any other device name is used as entered. \ + Several interfaces are used in order: new connections go to the first one that works and move to the next one when it goes down or, with probe targets set, stops answering; running connections stay where they started.')); o.rmempty = false; o.depends('action', 'route'); + o.textvalue = function (section_id) { + const v = L.toArray(this.cfgvalue(section_id)); + return v.length ? v.join(' › ') : '-'; + }; uci.sections('network', 'interface').forEach(function (n) { if (n['.name'] !== 'loopback') { @@ -211,7 +227,7 @@ return view.extend({ o.validate = validateFile; o = s.option(form.Value, 'gw4', _('IPv4 Gateway Override'), - _('Only needed when the gateway discovered from netifd is wrong. \ + _('Only needed when the gateway discovered from netifd is wrong, and only for a policy with a single interface. \ Point to point interfaces need no gateway at all.')); o.datatype = 'ip4addr'; o.modalonly = true; @@ -224,10 +240,13 @@ return view.extend({ s.anonymous = true; s.addremove = false; s.render = L.bind(function () { + const ro = readOnly(m) || null; + return E('div', { 'class': 'cbi-page-actions' }, [ E('button', { 'class': 'btn cbi-button cbi-button-positive important', 'style': 'float:none', + 'disabled': ro, 'click': ui.createHandlerFn(this, function () { return handleAction('restart'); }) @@ -236,6 +255,7 @@ return view.extend({ E('button', { 'class': 'btn cbi-button cbi-button-action', 'style': 'float:none', + 'disabled': ro, 'click': ui.createHandlerFn(this, function () { return handleRefresh(); }) diff --git a/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js b/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js index 4819c3d92..c2f533332 100644 --- a/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js +++ b/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js @@ -8,7 +8,7 @@ const getSets = rpc.declare({ object: 'luci.shunt', method: 'sets', - params: ['policy'] + params: ['policy', 'search'] }); function setKind(name) { @@ -41,8 +41,16 @@ function fmtNum(n) { return '%d'.format(n); } -function renderCards(sets, kinds, title, empty_hint) { +// The backend sends at most a fixed number of entries per Set, the ones +// with the most traffic, and says how many the Set holds and how many of +// them match the search. What is counted here is what was left out. +function fmtShown(shown, matched) { + return (shown < matched) ? _('%d of %d shown').format(shown, matched) : null; +} + +function renderCards(sets, info, kinds, title, empty_hint) { const byPolicy = {}; + const matched = {}; Object.keys(sets).forEach(function (name) { if (kinds.indexOf(setKind(name)) < 0) { @@ -53,8 +61,12 @@ function renderCards(sets, kinds, title, empty_hint) { if (!byPolicy[policy]) { byPolicy[policy] = []; + matched[policy] = 0; } + matched[policy] += (info[name] && info[name].matched != null) + ? info[name].matched : sets[name].length; + sets[name].forEach(function (e) { byPolicy[policy].push(e); }); @@ -74,8 +86,11 @@ function renderCards(sets, kinds, title, empty_hint) { } const cards = policies.map(function (policy) { + const shown = fmtShown(byPolicy[policy].length, matched[policy]); + return E('div', { 'class': 'shunt-card' }, [ E('div', { 'class': 'shunt-card-title' }, [policy]), + shown ? E('div', { 'class': 'shunt-sub' }, shown) : '', E('div', { 'class': 'shunt-addrs' }, byPolicy[policy].sort(function (a, b) { return String(a.addr).localeCompare(String(b.addr)); @@ -95,8 +110,34 @@ function renderCards(sets, kinds, title, empty_hint) { ]); } -function renderLearned(sets) { +// One line with what each learned Set holds, per policy and address +// family. The table above it mixes all of them, and its count is their sum: +// learn_limit applies to each Set on its own, and only this line shows +// which one reached it. +function renderLearnedSets(sets, info, limit) { + const names = Object.keys(sets).filter(function (name) { + return setKind(name) === 'd'; + }).sort(function (a, b) { + return setPolicy(a).localeCompare(setPolicy(b)) || a.localeCompare(b); + }); + + if (!names.length) { + return ''; + } + + return E('div', { 'class': 'shunt-sub' }, names.map(function (name) { + const total = (info[name] && info[name].total != null) + ? info[name].total : sets[name].length; + const fam = (name.substring(1, 2) === '6') ? 'IPv6' : 'IPv4'; + const full = (limit && total >= limit) ? ' ' + _('(limit)') : ''; + + return '%s %s %d%s'.format(setPolicy(name), fam, total, full); + }).join(' · ')); +} + +function renderLearned(sets, info, limit) { const rows = []; + let matched = 0; Object.keys(sets).forEach(function (name) { if (setKind(name) !== 'd') { @@ -105,6 +146,9 @@ function renderLearned(sets) { const policy = setPolicy(name); + matched += (info[name] && info[name].matched != null) + ? info[name].matched : sets[name].length; + sets[name].forEach(function (e) { rows.push({ policy: policy, @@ -150,8 +194,10 @@ function renderLearned(sets) { })); return E('div', { 'class': 'shunt-block' }, [ - E('div', { 'class': 'shunt-label' }, - _('Learned addresses (%d)').format(rows.length)), + E('div', { 'class': 'shunt-label' }, (rows.length < matched) + ? _('Learned addresses (%d of %d shown)').format(rows.length, matched) + : _('Learned addresses (%d)').format(rows.length)), + renderLearnedSets(sets, info, limit), tbl ]); } @@ -160,7 +206,7 @@ return view.extend({ load: function () { return Promise.all([ uci.load('shunt').catch(() => 0), - L.resolveDefault(getSets(''), {}) + L.resolveDefault(getSets('', ''), {}) ]); }, @@ -169,6 +215,7 @@ return view.extend({ const render_sets = function (data) { const sets = (data && data.sets) || {}; + const info = (data && data.info) || {}; const target = document.getElementById('shunt-sets'); if (!target) { @@ -176,17 +223,19 @@ return view.extend({ } dom.content(target, [ - renderCards(sets, ['c', 'm', 'i'], _('Client Selectors'), + renderCards(sets, info, ['c', 'm', 'i'], _('Client Selectors'), _('No client is selected, so every client is covered.')), - renderCards(sets, ['s'], _('Static Destinations'), null), - renderLearned(sets) + renderCards(sets, info, ['s'], _('Static Destinations'), null), + renderLearned(sets, info, data && data.learn_limit) ]); }; const reload = function () { const sel = document.getElementById('shunt-policy'); + const search = document.getElementById('shunt-search'); - return L.resolveDefault(getSets(sel ? sel.value : ''), {}) + return L.resolveDefault(getSets(sel ? sel.value : '', + search ? search.value.trim() : ''), {}) .then(render_sets); }; @@ -233,7 +282,7 @@ return view.extend({ E('h2', {}, _('Set Reporting')), E('div', { 'class': 'cbi-section' }, [ E('div', { 'class': 'cbi-section-descr' }, - _('What the nftables Sets currently hold. Counters are reset whenever an entry is refreshed, so they show recent activity, not a lifetime total.')) + _('What the nftables Sets currently hold. Counters are reset whenever an entry is refreshed, so they show recent activity, not a lifetime total. A large Set is shown in part, the entries with the most traffic first - to find one address in it, enter how it begins.')) ]), E('div', { 'id': 'shunt-sets' }, ''), E('div', { 'class': 'cbi-page-actions' }, [ @@ -243,6 +292,20 @@ return view.extend({ 'style': 'float:none;margin-right:.4em;width:auto;', 'change': ui.createHandlerFn(self, reload) }, options), + E('input', { + 'id': 'shunt-search', + 'class': 'cbi-input-text', + 'type': 'text', + 'maxlength': 64, + 'placeholder': _('Address begins with …'), + 'style': 'float:none;margin-right:.4em;width:14em;', + 'keydown': function (ev) { + if (ev.key === 'Enter') { + ev.preventDefault(); + return reload(); + } + } + }), E('button', { 'class': 'btn cbi-button cbi-button-action important', 'style': 'float:none', diff --git a/luci-app-shunt/po/cs/shunt.po b/luci-app-shunt/po/cs/shunt.po new file mode 100644 index 000000000..f3606c730 --- /dev/null +++ b/luci-app-shunt/po/cs/shunt.po @@ -0,0 +1,768 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: cs\n" +"Content-Transfer-Encoding: 8bit\n" +"Last-Translator: Martin Olmer \n" +"Language-Team: Czech \n" +"Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n" +"PO-Revision-Date: 2026-11-05 10:41+0000\n" +"X-Generator: Weblate 2026.11.2.dev0\n" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:396 +msgid "%d name(s) every %ds" +msgstr "%d názvů každých %ds" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:198 +msgid "" +"%d of %d observed responses were not used. That is normal: the observer sees " +"every answer on the network, and only the ones for a domain you routed are " +"of any interest." +msgstr "" +"%d z %d pozorovaných odpovědí nebylo použito. To je normální: pozorovatel " +"vidí každou odpověď na síti a pouze ty pro doménu kterou jste směrovaly jsou " +"vůbec zajímavé." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:86 +msgid "%d pkt matched" +msgstr "nalezena shoda pro %d paketů" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:28 +msgid "%dh %dm" +msgstr "%dh %dm" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:32 +msgid "%dm %ds" +msgstr "%dm %ds" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:34 +msgid "%ds" +msgstr "%ds" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:243 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:116 +msgid "Action" +msgstr "Akce" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:96 +msgid "Add policy" +msgstr "Přidat zásadu" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:135 +msgid "Address" +msgstr "Adresa" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:495 +msgid "" +"Addresses that answer ICMP echo, reachable through every policy interface - " +"public resolvers are the usual choice. Every interface a route policy uses " +"is probed through itself every 5 seconds; one that answers no target for " +"three rounds is treated as down and its policies fall back until it answers " +"again. Empty means no tracking, see the README." +msgstr "" +"Adresy které odpovídají na ICMP echo, dosažitelné přes každé rozhraní zásady " +"– veřejné DNS servery jsou obvyklou volbou. Každé rozhraní které zásada " +"směrování použije je sondováno skrze sama sebe každých 5 sekund; to které " +"odpoví žádný cíl třikrát za sebou je považováno za shozené a jeho zásady " +"budou používat náhradní dokud nezačne znovu odpovídat. Nevyplněné znamená " +"žádné sledování – viz README." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:130 +msgid "Answer carried no usable address" +msgstr "Odpověď nenesla žádnou použitelnou adresu" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:193 +msgid "Answers used for a policy" +msgstr "Odpovědi použité jako zásada" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:56 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:42 +msgid "Apply failed: %s" +msgstr "Uplatnění se nezdařilo: %s" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:148 +msgid "Block the traffic (killswitch)" +msgstr "Blokovat provoz (nouzový vypínač)" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:120 +msgid "Bypass - leave the traffic alone" +msgstr "Obejití – nechat provoz být" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:138 +msgid "Bytes routed" +msgstr "Bajtů směrováno" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:469 +msgid "" +"Ceiling in seconds for a learned address in its Set. An address learned from " +"a DNS answer expires with the TTL of that answer, clamped to the range 60 to " +"this value; a polled address uses this value. Keep it well above the poll " +"interval." +msgstr "" +"Strop (v sekundách) pro naučené adresy v jeho sadě. Platnost adresy naučené " +"z DNS odpovědi skončí podle TTL takové odpovědi, zastropované na rozsah 60 k " +"této hodnotě; dotazovaná adresa použije tuto hodnotu. Ponechte dost nad " +"intervalem dotazování." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:167 +msgid "Client MACs this policy applies to, ORed with the addresses above." +msgstr "" +"MAC adresy klientů, na které je tato zásada uplatňována, plus (přes logické " +"OR) výše uvedené adresy." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:179 +msgid "Client Selectors" +msgstr "Výběry klientů" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:162 +msgid "" +"Client addresses or prefixes this policy applies to. Leave empty to apply to " +"every client." +msgstr "" +"Adresy klientů nebo předpony pro které tato zásada platí. Pokud na každého " +"klienta, nevyplňujte." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:138 +msgid "Compression pointer in the question" +msgstr "Předmětný ukazatel na kompresi" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:448 +msgid "DNS Observer Settings" +msgstr "Nastavení pro DNS Observer" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:188 +msgid "DNS responses observed on %s since the service started" +msgstr "DNS odpovědi pozorované na %s od okamžiku spuštění služby" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:455 +msgid "Debug Logging" +msgstr "Zaznamenávání ladících informací" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:194 +msgid "Destination Address Files" +msgstr "Soubory cílové adresy" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:189 +msgid "Destination Addresses" +msgstr "Cílové adresy" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:184 +msgid "Destination Ports" +msgstr "Cílové porty" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:190 +msgid "Destination addresses or prefixes to route into this policy." +msgstr "Cílové adresy nebo předpony pro směrování do této zásady." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:206 +msgid "Domain Files" +msgstr "Doménové soubory" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:128 +msgid "Domain is in no policy" +msgstr "Doména není zásada" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:201 +msgid "Domains" +msgstr "Domény" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:452 +msgid "Enable the shunt service." +msgstr "Povolit službu shunt." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:451 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:111 +msgid "Enabled" +msgstr "Povoleno" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:132 +msgid "Error reply, e.g. NXDOMAIN" +msgstr "Chybová odpověď, např. NXDOMAIN" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:89 +msgid "" +"Evaluated top to bottom - the first policy a packet matches wins. Within one " +"policy the selectors are ANDed: source plus domain means only that client, " +"and only to those domains." +msgstr "" +"Vyhodnocováno odshora dolů – vyhrává první zásada, které paket odpovídá. V " +"rámci jedné zásady jsou nástroje pro výběr spojené logickým AND: zdroj plus " +"doména znamená pouze takový klient a pouze tamty domény." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:172 +msgid "" +"Everything arriving on these devices, ORed with the client selectors above - " +"a whole guest network or VLAN, in IPv4 and IPv6 alike, whatever prefix it " +"gets. Not the router's own traffic. For domains, add the device to the " +"observed devices as well." +msgstr "" +"Vše co dorazí na tato zařízení, spojené přes logické OR s výše uvedenými " +"nástroji pro výběr klientů – celá síť pro hosty nebo VLAN v IPv4 i IPv6, ať " +"už dostane jakoukoli předponu. Ne vlastní provoz směrovače. Pro domény, " +"přidejte také zařízení k pozorovaným zařízením." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:53 +msgid "Expecting a bare file name or an absolute path, without whitespace" +msgstr "" +"Očekáván holý název souboru nebo úplný popis umístění, bez prázdného znaku" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:136 +msgid "Expires" +msgstr "Platnost skončí" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:150 +msgid "Extension header chain too long" +msgstr "Příliš dlouhý řetěz hlavičky rozšíření" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:147 +msgid "Fall through to the normal uplink" +msgstr "Náhradně propadnou na normální nadřazené připojení" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:249 +msgid "Fallback" +msgstr "Náhradní" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:144 +msgid "Fallback Behavior" +msgstr "Náhradní chování" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:195 +msgid "" +"Files with one address or prefix per line, IPv4 and IPv6 mixed, for large " +"published ranges. A bare name lives under /tmp/shunt, an absolute path is " +"used as given. After the file changed, refresh below." +msgstr "" +"Soubory s jednou adresou nebo předponou na každém z řádků, IPv4 a IPv6 " +"dohromady, pro velké zveřejňované rozsahy. Holý se nachází v /tmp/shut a " +"úplný popis umístění je použit tak, jak zadán. Po změně souboru, ho níže " +"znovu načtěte." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:207 +msgid "" +"Files with one domain pattern per line, for large or community-maintained " +"lists. A bare name lives under /tmp/shunt, an absolute path is used as " +"given. Entries from a file are learned by the DNS observer only, never " +"polled; after the file changed, refresh below." +msgstr "" +"Soubory s jedním vzorem domény na každém řádku pro velké nebo komunitou " +"spravované seznamy. Holé názvy se nacházejí v /tmp/shut, úplný popis " +"umístění je použit tak, jak zadán. Položky ze souboru jsou naučené pouze DNS " +"pozorovatelem, nikdy dotazovány; poté, co se soubor změnil, níže znovu " +"načtěte." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:145 +msgid "Frame ends mid-structure" +msgstr "Rámec končí vprostřed struktury" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:447 +msgid "General Settings" +msgstr "Obecná nastavení" + +#: applications/luci-app-shunt/root/usr/share/rpcd/acl.d/luci-app-shunt.json:3 +msgid "Grant access to LuCI app shunt" +msgstr "Udělit přístup k LuCI aplikaci shunt" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:424 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:449 +msgid "Health Tracking" +msgstr "Sledování vitálnosti" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:149 +msgid "IP fragment" +msgstr "IP fragment" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:213 +msgid "IPv4 Gateway Override" +msgstr "Přebití IPv4 brány" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:219 +msgid "IPv6 Gateway Override" +msgstr "Přebití IPv6 brány" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:148 +msgid "Inconsistent IP header length" +msgstr "Nejednotná délka IP záhlaví" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:152 +msgid "Inconsistent UDP length" +msgstr "Nejednotná délka UDP" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:244 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:125 +msgid "Interface" +msgstr "Rozhraní" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:153 +msgid "Keep Local Traffic" +msgstr "Ponechat lokální provoz" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:419 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:127 +msgid "Learned addresses" +msgstr "Naučené adresy" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:154 +msgid "Learned addresses (%d)" +msgstr "Naučené adresy (%d)" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:456 +msgid "" +"Log every observed DNS answer and every set write. Useful for a bug report, " +"noisy in normal operation - on a router running adblock roughly half of all " +"answers are error replies, and each one gets a line." +msgstr "" +"Zaznamenávat každou pozorovanou DNS odpověď a každý zápis sady. Hodí se pro " +"hlášení chyby, v běžném provozu příliš upovídané – na směrovači, na kterém " +"je spuštěný adblock je zhruba polovina odpovědí chybové odpovědi a pro " +"každou z nich je vytvořen řádek." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:459 +msgid "Manage rp_filter" +msgstr "Spravovat rp_filter" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:245 +msgid "Mark" +msgstr "Značka" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:468 +msgid "Maximum Entry Lifetime" +msgstr "Maximální životnost položky" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:136 +msgid "Message ends mid-structure" +msgstr "Zpráva končí vprostřed struktury" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:137 +msgid "Message too long" +msgstr "Příliš dlouhá zpráva" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:141 +msgid "Name has a byte outside a-z 0-9 - _" +msgstr "Část názvu není z a-z 0-9 - _" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:140 +msgid "Name too long" +msgstr "Příliš dlouhý název" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:146 +msgid "Neither IPv4 nor IPv6" +msgstr "Ani IPv4, ani IPv6" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/logtemplate.js:33 +msgid "No %s related logs yet!" +msgstr "Zatím žádné záznamy událostí, související s %s!" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:180 +msgid "No client is selected, so every client is covered." +msgstr "Nevybrán žádný klient, takže je pokryt každý klient." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:63 +msgid "No output" +msgstr "Žádný výstup" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:237 +msgid "No policy is active." +msgstr "Není aktivní žádná zásada." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:309 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:82 +msgid "No shunt config found!" +msgstr "Nenalezena žádná nastavení pro shunt!" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:151 +msgid "Not UDP" +msgstr "Ne UDP" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:133 +msgid "Not a response" +msgstr "Není odpověď" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:129 +msgid "Not an address query" +msgstr "Nejedná se o dotaz na adresu" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:135 +msgid "Not exactly one question" +msgstr "Ne právě jeden dotaz" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:128 +msgid "" +"Nothing learned yet. The service fills these from its poll cycle and from " +"observed DNS answers." +msgstr "" +"Zatím ještě nic nenaučeno. Služba tyto vyplní ze svého cyklu dotazování a z " +"pozorovaných DNS odpovědí." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:488 +msgid "Observed Devices" +msgstr "Pozorovaná zařízení" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:214 +msgid "" +"Only needed when the gateway discovered from netifd is wrong. Point to point " +"interfaces need no gateway at all." +msgstr "" +"Potřebné pouze pokud je brána objevena z netifd nesprávná. Rozhraní typu bod-" +"bod vůbec žádnou bránu nepotřebují." + +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:23 +msgid "Overview" +msgstr "Přehled" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:137 +msgid "Packets routed" +msgstr "Paketů směrováno" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:483 +msgid "Passive DNS Observer" +msgstr "Pasivní DNS pozorovatel" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:88 +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:31 +msgid "Policies" +msgstr "Zásady" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:242 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:134 +msgid "Policy" +msgstr "Zásada" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:316 +msgid "" +"Policy based routing by mac, source, destination and domain. For further " +"information please check the %s." +msgstr "" +"Směrování založené na zásadách podle mac adresy, zdroje, cíle a domény. " +"Ohledně dalších informací se podívejte do %s." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:422 +msgid "Poll" +msgstr "Dotazovat" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:463 +msgid "Poll Interval" +msgstr "Interval dotazování" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:494 +msgid "Probe Targets" +msgstr "Cíle sondy" + +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:47 +msgid "Processing Log" +msgstr "Zpracovávání záznamu událostí" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:178 +msgid "Protocols" +msgstr "Protokoly" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:137 +msgid "Proxy Port" +msgstr "Port proxy" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:484 +msgid "" +"Read DNS answers as they pass the LAN device, whichever resolver produced " +"them. Required for wildcard domains, which cannot be resolved ahead of time." +msgstr "" +"Číst DNS odpovědi jak procházejí LAN zařízením, kdykoli je nástroj pro " +"překlad vytvoří. Vyžaduje domény se zástupnými znaky, které není možné " +"překládat předem." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:142 +msgid "Record length does not fit the type" +msgstr "Délka záznamu se nehodí k typu" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:250 +msgid "Refresh" +msgstr "Aktualizovat" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:242 +msgid "Refresh List Files" +msgstr "Znovu načíst soubory seznamu" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:68 +msgid "Refresh failed: %s" +msgstr "Aktualizace se nezdařila: %s" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:290 +msgid "Rejected settings" +msgstr "Odmítnutá nastavení" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:139 +msgid "Reserved label type" +msgstr "Vyhrazený typ popisku" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:179 +msgid "Restrict to tcp, udp or both. A port without a protocol covers both." +msgstr "" +"Omezit na tcp, udp nebo obojí. Port bez uvedení protokolu pokrývá obojí." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:381 +msgid "Reverse path filtering is strict" +msgstr "Filtrování opačné cesty je striktní" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:119 +msgid "Route into a policy interface" +msgstr "Trasa do rozhraní zásady" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:117 +msgid "" +"Route the selected traffic into the interface below, bypass it - a bypass " +"policy marks nothing and exempts the traffic from every policy after it - or " +"hand it to a transparent proxy on the router." +msgstr "" +"Směrovat označený provoz do níže uvedeného rozhraní, obejít ho – zásada " +"obejití nic neoznačuje a vyjímá provoz ze všech zásad po ní – nebo ho " +"předává na transparentní proxy na směrovači." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:248 +msgid "Routes" +msgstr "Trasy" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:247 +msgid "Rules" +msgstr "Pravidla" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:517 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:234 +msgid "Save & Restart" +msgstr "Uložit a restartovat" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:464 +msgid "Seconds between poll cycles." +msgstr "Sekund mezi cykly dotazování." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:414 +msgid "Service" +msgstr "Služba" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:233 +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:39 +msgid "Set Reporting" +msgstr "Nastavit hlášení" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:460 +msgid "" +"Set rp_filter to 2 on shunt's own policy interfaces, at start and when one " +"comes up." +msgstr "" +"Nastavit rp_filter na 2 na rozhraních zásady vlastních pro shunt, při " +"spuštění a když je takové nahozeno." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:444 +msgid "Settings" +msgstr "Nastavení" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:477 +msgid "" +"Should be at least twice the poll interval (%d), otherwise entries expire " +"between cycles." +msgstr "" +"Mělo by být alespoň dvojnásobkem intervalu dotazování (%d), jinak bude " +"platnost položek končit mezi cykly." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:185 +msgid "" +"Single ports or ranges like 8000-8080, ANDed with the addresses below. Ports " +"alone select that traffic from every client." +msgstr "" +"Jednotlivé porty nebo jejich rozsahy, jako 8000-8080, spojené (přes logické " +"AND) s níže uvedenými adresami. Porty samotné vybírá takový provoz z každého " +"klienta." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:161 +msgid "Source Addresses" +msgstr "Zdrojové adresy" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:171 +msgid "Source Devices" +msgstr "Zdrojová zařízení" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:166 +msgid "Source MAC Addresses" +msgstr "Zdrojová MAC adresy" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:181 +msgid "Static Destinations" +msgstr "Statické cíle" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:510 +msgid "Stop" +msgstr "Zastavit" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:383 +msgid "" +"Strict rp_filter will drop shunt's marked traffic on %s. Set rp_filter to 2 " +"on the policy interface, enable rp_filter_manage to have shunt do it, or " +"loosen it box-wide; see the README." +msgstr "" +"Striktní rp_filter bude zahazovat provoz označení ze shunt na %s. Nastavte " +"rp_filter na 2 na rozhraní zásady, povolte rp_filter_manage aby to dělalo " +"shunt, nebo ho uvolněte v rámci celého stroje – viz README." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:246 +msgid "Table" +msgstr "Tabulka" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:489 +msgid "" +"The LAN device the DNS answers cross on their way to the clients, normally " +"br-lan. One entry per network segment, see the README." +msgstr "" +"LAN zařízení na kterém DNS odpovídá napříč jejich cestou ke klientům – běžně " +"br-lan. Pro každý segment sítě zvlášť položka – viz README." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:126 +msgid "" +"The device or logical interface this policy routes into. A netifd name is " +"resolved to its device; any other device name is used as entered." +msgstr "" +"Zařízení nebo logické rozhraní na které tato zásada směruje. Netifd název je " +"překládán na jeho zařízení; název jakéhokoli jiného zařízení je použit tak, " +"jak je zadán." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:138 +msgid "" +"The port the transparent proxy listens on, for tcp and udp. It must listen " +"on loopback or on the wildcard address. Needs kmod-nft-tproxy." +msgstr "" +"Port na kterém transparentní proxy očekává spojení (pro tcp a udp). Je " +"třeba, aby to bylo na zpětnovazební nebo adrese se zástupným znakem. " +"Potřebuje kmod-nft-tproxy." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/logtemplate.js:44 +msgid "The syslog output, pre-filtered for messages related to: %s" +msgstr "Výstup ze syslog – předfiltrované ohledně zpráv souvisejících s: %s" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:292 +msgid "" +"These entries were skipped. Everything else was applied - a rejected entry " +"never takes the service down." +msgstr "" +"Tyto položky byly přeskočeny. Vše ostatní bylo uplatněno – odmítnutá položka " +"nikdy službu neshodí." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:143 +msgid "Too many answers" +msgstr "Příliš mnoho odpovědí" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:147 +msgid "Too many stacked VLAN tags" +msgstr "Příliš mnoho navrstvených VLAN šťítků" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:154 +msgid "" +"Traffic to networks the routing table already has a route for - your other " +"subnets, your static routes - stays on the normal path instead of entering " +"the policy interface. Turn this off only for a hermetic killswitch." +msgstr "" +"Provoz na sítě, pro které směrovací tabulka už má trasu – vaše ostatní " +"podsítě, statické trasy – zůstává na normální cestě namísto vstoupení do " +"rozhraní zásady. Toto vypínejte pouze pro neprodyšné nouzové odstavení." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:121 +msgid "Transparent proxy on the router" +msgstr "Transparentní proxy na směrovači" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:134 +msgid "Truncated response" +msgstr "Oříznutá odpověď" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:416 +msgid "Version" +msgstr "Verze" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:145 +msgid "" +"What new traffic does when the interface is down or, for a transparent " +"proxy, when nothing listens on its port." +msgstr "" +"Co noví provoz udělá když je rozhraní shozené nebo – v případě transparentní " +"proxy – když na jejím portu nic neočekává spojení." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:236 +msgid "" +"What the nftables Sets currently hold. Counters are reset whenever an entry " +"is refreshed, so they show recent activity, not a lifetime total." +msgstr "" +"Co v tuto chvíli nftables Sets obsahuje. Čítače jsou vynulovány kdykoli je " +"položka znovu načtena, takže zobrazují nedávnou aktivitu, nikoli součet za " +"celou dobu." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:421 +msgid "across all policies" +msgstr "napříč všemi zásadami" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:193 +msgid "all policies" +msgstr "všechny zásady" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:216 +msgid "answers the health probes" +msgstr "odpovídá na sondy ohledně vitálnosti" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:202 +msgid "" +"example.com matches that name only, *.example.com matches its subdomains but " +"not the apex - list both to cover both." +msgstr "" +"example.com odpovídá pouze takovému názvu. *.example.com odpovídá jejím " +"dílčím doménám, ale ne kořenové – pokud chcete mít pokryté obojí, uveďte " +"obojí." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:133 +msgid "interface" +msgstr "rozhraní" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:391 +msgid "n/a" +msgstr "neaplikovatelné" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:91 +msgid "no answer from the backend" +msgstr "žádná odpověď z podpůrné vrstvy" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:217 +msgid "no answer to the health probes since %s - the fallback applies" +msgstr "žádná odpověď na sondy ohledně vitálnosti od %s – uplatňuje se náhradní" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:317 +msgid "online documentation" +msgstr "online dokumentace" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:425 +msgid "policy interfaces answering the probes" +msgstr "rozhraní zásady odpovídající na sondy" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:116 +msgid "ruleset present, service not running" +msgstr "sada pravidel přítomná, služba není spuštěná" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:104 +msgid "ruleset re-applied %d time(s)" +msgstr "sada pravidel znovu uplatněna %d krát" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:110 +msgid "running, but no ruleset in the kernel" +msgstr "spuštěné, ale žádná sada pravidel v jádru" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:102 +msgid "running, policy applied" +msgstr "spuštěné, zásada uplatněna" + +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:3 +msgid "shunt" +msgstr "shunt" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:121 +msgid "stopped" +msgstr "zastaveno" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:397 +msgid "unavailable - ucode-mod-resolv missing" +msgstr "není k dispozici – chybí ucode-mod-resolv" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:423 +msgid "wildcards are covered by the observer only" +msgstr "zástupné znaky jsou pokrývány pouze pozorovatelem" diff --git a/luci-app-shunt/po/de/shunt.po b/luci-app-shunt/po/de/shunt.po new file mode 100644 index 000000000..1259b5ef2 --- /dev/null +++ b/luci-app-shunt/po/de/shunt.po @@ -0,0 +1,777 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-11-04 17:55+0200\n" +"PO-Revision-Date: 2026-11-04 16:55+0000\n" +"Last-Translator: Dirk Brenken \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: ENCODING\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2026.11.1.dev0\n" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:396 +msgid "%d name(s) every %ds" +msgstr "%d Name(n) alle %ds" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:198 +msgid "" +"%d of %d observed responses were not used. That is normal: the observer sees " +"every answer on the network, and only the ones for a domain you routed are " +"of any interest." +msgstr "" +"%d von %d beobachteten Antworten wurden nicht verwendet. Das ist normal: Der " +"Beobachter sieht jede Antwort im Netzwerk, und nur die für eine geroutete " +"Domain sind von Interesse." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:86 +msgid "%d pkt matched" +msgstr "%d Pkt. erfasst" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:28 +msgid "%dh %dm" +msgstr "%dh %dm" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:32 +msgid "%dm %ds" +msgstr "%dm %ds" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:34 +msgid "%ds" +msgstr "%ds" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:243 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:116 +msgid "Action" +msgstr "Aktion" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:96 +msgid "Add policy" +msgstr "Richtlinie hinzufügen" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:135 +msgid "Address" +msgstr "Adresse" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:495 +msgid "" +"Addresses that answer ICMP echo, reachable through every policy interface - " +"public resolvers are the usual choice. Every interface a route policy uses " +"is probed through itself every 5 seconds; one that answers no target for " +"three rounds is treated as down and its policies fall back until it answers " +"again. Empty means no tracking, see the README." +msgstr "" +"Adressen, die auf ICMP-Echo antworten und über jede Richtlinien-" +"Schnittstelle erreichbar sind - üblicherweise öffentliche Resolver. Jede von " +"einer Routing-Richtlinie genutzte Schnittstelle wird alle 5 Sekunden über " +"sich selbst geprüft; antwortet drei Runden lang kein Ziel, gilt sie als " +"ausgefallen und ihre Richtlinien greifen auf den Fallback zurück, bis sie " +"wieder antwortet. Leer bedeutet keine Überwachung, siehe README." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:130 +msgid "Answer carried no usable address" +msgstr "Antwort enthielt keine verwendbare Adresse" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:193 +msgid "Answers used for a policy" +msgstr "Für eine Richtlinie verwendete Antworten" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:56 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:42 +msgid "Apply failed: %s" +msgstr "Anwenden fehlgeschlagen: %s" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:148 +msgid "Block the traffic (killswitch)" +msgstr "Datenverkehr blockieren (Killswitch)" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:120 +msgid "Bypass - leave the traffic alone" +msgstr "Umgehen - Datenverkehr unverändert lassen" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:138 +msgid "Bytes routed" +msgstr "Geroutete Bytes" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:469 +msgid "" +"Ceiling in seconds for a learned address in its Set. An address learned from " +"a DNS answer expires with the TTL of that answer, clamped to the range 60 to " +"this value; a polled address uses this value. Keep it well above the poll " +"interval." +msgstr "" +"Obergrenze in Sekunden für eine gelernte Adresse in ihrem Set. Eine aus " +"einer DNS-Antwort gelernte Adresse läuft mit der TTL dieser Antwort ab, " +"begrenzt auf den Bereich 60 bis zu diesem Wert; eine per Abfrage ermittelte " +"Adresse verwendet diesen Wert. Deutlich über dem Abfrageintervall halten." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:167 +msgid "Client MACs this policy applies to, ORed with the addresses above." +msgstr "" +"Client-MACs, für die diese Richtlinie gilt, ODER-verknüpft mit den obigen " +"Adressen." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:179 +msgid "Client Selectors" +msgstr "Client-Selektoren" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:162 +msgid "" +"Client addresses or prefixes this policy applies to. Leave empty to apply to " +"every client." +msgstr "" +"Client-Adressen oder -Präfixe, für die diese Richtlinie gilt. Leer lassen, " +"um sie auf alle Clients anzuwenden." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:138 +msgid "Compression pointer in the question" +msgstr "Kompressionszeiger im Fragenteil" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:448 +msgid "DNS Observer Settings" +msgstr "DNS-Beobachter-Einstellungen" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:188 +msgid "DNS responses observed on %s since the service started" +msgstr "Seit dem Dienststart auf %s beobachtete DNS-Antworten" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:455 +msgid "Debug Logging" +msgstr "Debug-Protokollierung" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:194 +msgid "Destination Address Files" +msgstr "Zieladressdateien" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:189 +msgid "Destination Addresses" +msgstr "Zieladressen" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:184 +msgid "Destination Ports" +msgstr "Zielports" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:190 +msgid "Destination addresses or prefixes to route into this policy." +msgstr "Zieladressen oder -präfixe, die in diese Richtlinie geroutet werden." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:206 +msgid "Domain Files" +msgstr "Domain-Dateien" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:128 +msgid "Domain is in no policy" +msgstr "Domain ist in keiner Richtlinie" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:201 +msgid "Domains" +msgstr "Domains" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:452 +msgid "Enable the shunt service." +msgstr "Den shunt-Dienst aktivieren." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:451 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:111 +msgid "Enabled" +msgstr "Aktiviert" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:132 +msgid "Error reply, e.g. NXDOMAIN" +msgstr "Fehlerantwort, z. B. NXDOMAIN" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:89 +msgid "" +"Evaluated top to bottom - the first policy a packet matches wins. Within one " +"policy the selectors are ANDed: source plus domain means only that client, " +"and only to those domains." +msgstr "" +"Wird von oben nach unten ausgewertet - die erste Richtlinie, auf die ein " +"Paket passt, gewinnt. Innerhalb einer Richtlinie werden die Selektoren UND-" +"verknüpft: Quelle plus Domain bedeutet nur dieser Client und nur zu diesen " +"Domains." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:172 +msgid "" +"Everything arriving on these devices, ORed with the client selectors above - " +"a whole guest network or VLAN, in IPv4 and IPv6 alike, whatever prefix it " +"gets. Not the router's own traffic. For domains, add the device to the " +"observed devices as well." +msgstr "" +"Alles, was auf diesen Geräten ankommt, ODER-verknüpft mit den obigen Client-" +"Selektoren - ein ganzes Gastnetz oder VLAN, für IPv4 und IPv6 gleichermaßen, " +"unabhängig vom zugewiesenen Präfix. Nicht der eigene Datenverkehr des " +"Routers. Für Domains das Gerät zusätzlich bei den beobachteten Geräten " +"eintragen." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:53 +msgid "Expecting a bare file name or an absolute path, without whitespace" +msgstr "" +"Erwartet wird ein reiner Dateiname oder ein absoluter Pfad, ohne Leerzeichen" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:136 +msgid "Expires" +msgstr "Läuft ab" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:150 +msgid "Extension header chain too long" +msgstr "Extension-Header-Kette zu lang" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:147 +msgid "Fall through to the normal uplink" +msgstr "Über den normalen Uplink weiterleiten" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:249 +msgid "Fallback" +msgstr "Fallback" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:144 +msgid "Fallback Behavior" +msgstr "Fallback-Verhalten" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:195 +msgid "" +"Files with one address or prefix per line, IPv4 and IPv6 mixed, for large " +"published ranges. A bare name lives under /tmp/shunt, an absolute path is " +"used as given. After the file changed, refresh below." +msgstr "" +"Dateien mit einer Adresse oder einem Präfix pro Zeile, IPv4 und IPv6 " +"gemischt, für große veröffentlichte Bereiche. Ein reiner Name liegt unter /" +"tmp/shunt, ein absoluter Pfad wird unverändert verwendet. Nach einer " +"Änderung der Datei unten aktualisieren." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:207 +msgid "" +"Files with one domain pattern per line, for large or community-maintained " +"lists. A bare name lives under /tmp/shunt, an absolute path is used as " +"given. Entries from a file are learned by the DNS observer only, never " +"polled; after the file changed, refresh below." +msgstr "" +"Dateien mit einem Domain-Muster pro Zeile, für große oder von der Community " +"gepflegte Listen. Ein reiner Name liegt unter /tmp/shunt, ein absoluter Pfad " +"wird unverändert verwendet. Einträge aus einer Datei werden nur vom DNS-" +"Beobachter gelernt, nie abgefragt; nach einer Änderung der Datei unten " +"aktualisieren." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:145 +msgid "Frame ends mid-structure" +msgstr "Frame endet mitten in einer Struktur" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:447 +msgid "General Settings" +msgstr "Allgemeine Einstellungen" + +#: applications/luci-app-shunt/root/usr/share/rpcd/acl.d/luci-app-shunt.json:3 +msgid "Grant access to LuCI app shunt" +msgstr "Zugriff auf LuCI-App shunt gewähren" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:424 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:449 +msgid "Health Tracking" +msgstr "Statusüberwachung" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:149 +msgid "IP fragment" +msgstr "IP-Fragment" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:213 +msgid "IPv4 Gateway Override" +msgstr "IPv4-Gateway überschreiben" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:219 +msgid "IPv6 Gateway Override" +msgstr "IPv6-Gateway überschreiben" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:148 +msgid "Inconsistent IP header length" +msgstr "Inkonsistente IP-Header-Länge" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:152 +msgid "Inconsistent UDP length" +msgstr "Inkonsistente UDP-Länge" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:244 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:125 +msgid "Interface" +msgstr "Schnittstelle" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:153 +msgid "Keep Local Traffic" +msgstr "Lokalen Datenverkehr beibehalten" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:419 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:127 +msgid "Learned addresses" +msgstr "Gelernte Adressen" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:154 +msgid "Learned addresses (%d)" +msgstr "Gelernte Adressen (%d)" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:456 +msgid "" +"Log every observed DNS answer and every set write. Useful for a bug report, " +"noisy in normal operation - on a router running adblock roughly half of all " +"answers are error replies, and each one gets a line." +msgstr "" +"Jede beobachtete DNS-Antwort und jeden Set-Schreibvorgang protokollieren. " +"Nützlich für einen Fehlerbericht, im Normalbetrieb zu gesprächig - auf einem " +"Router mit adblock ist etwa die Hälfte aller Antworten Fehlerantworten, und " +"jede erzeugt eine Zeile." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:459 +msgid "Manage rp_filter" +msgstr "rp_filter verwalten" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:245 +msgid "Mark" +msgstr "Markierung" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:468 +msgid "Maximum Entry Lifetime" +msgstr "Maximale Eintragslebensdauer" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:136 +msgid "Message ends mid-structure" +msgstr "Nachricht endet mitten in einer Struktur" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:137 +msgid "Message too long" +msgstr "Nachricht zu lang" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:141 +msgid "Name has a byte outside a-z 0-9 - _" +msgstr "Name enthält ein Byte außerhalb von a-z 0-9 - _" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:140 +msgid "Name too long" +msgstr "Name zu lang" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:146 +msgid "Neither IPv4 nor IPv6" +msgstr "Weder IPv4 noch IPv6" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/logtemplate.js:33 +msgid "No %s related logs yet!" +msgstr "Noch keine Protokolle zu %s!" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:180 +msgid "No client is selected, so every client is covered." +msgstr "Kein Client ausgewählt, daher sind alle Clients abgedeckt." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:63 +msgid "No output" +msgstr "Keine Ausgabe" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:237 +msgid "No policy is active." +msgstr "Keine Richtlinie aktiv." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:309 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:82 +msgid "No shunt config found!" +msgstr "Keine shunt-Konfiguration gefunden!" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:151 +msgid "Not UDP" +msgstr "Kein UDP" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:133 +msgid "Not a response" +msgstr "Keine Antwort" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:129 +msgid "Not an address query" +msgstr "Keine Adressabfrage" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:135 +msgid "Not exactly one question" +msgstr "Nicht genau eine Frage" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:128 +msgid "" +"Nothing learned yet. The service fills these from its poll cycle and from " +"observed DNS answers." +msgstr "" +"Noch nichts gelernt. Der Dienst befüllt diese aus seinem Abfragezyklus und " +"aus beobachteten DNS-Antworten." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:488 +msgid "Observed Devices" +msgstr "Beobachtete Geräte" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:214 +msgid "" +"Only needed when the gateway discovered from netifd is wrong. Point to point " +"interfaces need no gateway at all." +msgstr "" +"Nur nötig, wenn das von netifd ermittelte Gateway falsch ist. Punkt-zu-Punkt-" +"Schnittstellen benötigen überhaupt kein Gateway." + +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:23 +msgid "Overview" +msgstr "Übersicht" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:137 +msgid "Packets routed" +msgstr "Geroutete Pakete" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:483 +msgid "Passive DNS Observer" +msgstr "Passiver DNS-Beobachter" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:88 +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:31 +msgid "Policies" +msgstr "Richtlinien" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:242 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:134 +msgid "Policy" +msgstr "Richtlinie" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:316 +msgid "" +"Policy based routing by mac, source, destination and domain. For further " +"information please check the %s." +msgstr "" +"Richtlinienbasiertes Routing nach MAC, Quelle, Ziel und Domain. Weitere " +"Informationen finden sich in der %s." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:422 +msgid "Poll" +msgstr "Abfrage" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:463 +msgid "Poll Interval" +msgstr "Abfrageintervall" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:494 +msgid "Probe Targets" +msgstr "Prüfziele" + +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:47 +msgid "Processing Log" +msgstr "Verarbeitungsprotokoll" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:178 +msgid "Protocols" +msgstr "Protokolle" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:137 +msgid "Proxy Port" +msgstr "Proxy-Port" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:484 +msgid "" +"Read DNS answers as they pass the LAN device, whichever resolver produced " +"them. Required for wildcard domains, which cannot be resolved ahead of time." +msgstr "" +"DNS-Antworten mitlesen, während sie das LAN-Gerät passieren, unabhängig " +"davon, welcher Resolver sie erzeugt hat. Erforderlich für Wildcard-Domains, " +"die sich nicht im Voraus auflösen lassen." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:142 +msgid "Record length does not fit the type" +msgstr "Record-Länge passt nicht zum Typ" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:250 +msgid "Refresh" +msgstr "Aktualisieren" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:242 +msgid "Refresh List Files" +msgstr "Listendateien aktualisieren" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:68 +msgid "Refresh failed: %s" +msgstr "Aktualisierung fehlgeschlagen: %s" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:290 +msgid "Rejected settings" +msgstr "Abgelehnte Einstellungen" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:139 +msgid "Reserved label type" +msgstr "Reservierter Label-Typ" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:179 +msgid "Restrict to tcp, udp or both. A port without a protocol covers both." +msgstr "" +"Auf tcp, udp oder beides beschränken. Ein Port ohne Protokoll gilt für beide." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:381 +msgid "Reverse path filtering is strict" +msgstr "Reverse-Path-Filterung ist strikt" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:119 +msgid "Route into a policy interface" +msgstr "In eine Richtlinien-Schnittstelle routen" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:117 +msgid "" +"Route the selected traffic into the interface below, bypass it - a bypass " +"policy marks nothing and exempts the traffic from every policy after it - or " +"hand it to a transparent proxy on the router." +msgstr "" +"Den ausgewählten Datenverkehr in die unten angegebene Schnittstelle routen, " +"ihn umgehen lassen - eine Bypass-Richtlinie markiert nichts und nimmt den " +"Datenverkehr von allen nachfolgenden Richtlinien aus - oder ihn an einen " +"transparenten Proxy auf dem Router übergeben." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:248 +msgid "Routes" +msgstr "Routen" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:247 +msgid "Rules" +msgstr "Regeln" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:517 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:234 +msgid "Save & Restart" +msgstr "Speichern & Neustarten" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:464 +msgid "Seconds between poll cycles." +msgstr "Sekunden zwischen den Abfragezyklen." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:414 +msgid "Service" +msgstr "Dienst" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:233 +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:39 +msgid "Set Reporting" +msgstr "Set-Bericht" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:460 +msgid "" +"Set rp_filter to 2 on shunt's own policy interfaces, at start and when one " +"comes up." +msgstr "" +"rp_filter auf den eigenen Richtlinien-Schnittstellen von shunt auf 2 setzen, " +"beim Start und sobald eine davon hochkommt." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:444 +msgid "Settings" +msgstr "Einstellungen" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:477 +msgid "" +"Should be at least twice the poll interval (%d), otherwise entries expire " +"between cycles." +msgstr "" +"Sollte mindestens doppelt so groß wie das Abfrageintervall (%d) sein, sonst " +"laufen Einträge zwischen den Zyklen ab." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:185 +msgid "" +"Single ports or ranges like 8000-8080, ANDed with the addresses below. Ports " +"alone select that traffic from every client." +msgstr "" +"Einzelne Ports oder Bereiche wie 8000-8080, UND-verknüpft mit den unten " +"angegebenen Adressen. Ports allein wählen diesen Datenverkehr von allen " +"Clients aus." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:161 +msgid "Source Addresses" +msgstr "Quelladressen" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:171 +msgid "Source Devices" +msgstr "Quellgeräte" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:166 +msgid "Source MAC Addresses" +msgstr "Quell-MAC-Adressen" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:181 +msgid "Static Destinations" +msgstr "Statische Ziele" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:510 +msgid "Stop" +msgstr "Stoppen" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:383 +msgid "" +"Strict rp_filter will drop shunt's marked traffic on %s. Set rp_filter to 2 " +"on the policy interface, enable rp_filter_manage to have shunt do it, or " +"loosen it box-wide; see the README." +msgstr "" +"Striktes rp_filter verwirft den markierten Datenverkehr von shunt auf %s. " +"rp_filter auf der Richtlinien-Schnittstelle auf 2 setzen, rp_filter_manage " +"aktivieren, damit shunt das übernimmt, oder es systemweit lockern; siehe " +"README." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:246 +msgid "Table" +msgstr "Tabelle" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:489 +msgid "" +"The LAN device the DNS answers cross on their way to the clients, normally " +"br-lan. One entry per network segment, see the README." +msgstr "" +"Das LAN-Gerät, das die DNS-Antworten auf dem Weg zu den Clients passieren, " +"normalerweise br-lan. Ein Eintrag pro Netzsegment, siehe README." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:126 +msgid "" +"The device or logical interface this policy routes into. A netifd name is " +"resolved to its device; any other device name is used as entered." +msgstr "" +"Das Gerät oder die logische Schnittstelle, in die diese Richtlinie routet. " +"Ein netifd-Name wird zu seinem Gerät aufgelöst; jeder andere Gerätename wird " +"wie eingegeben verwendet." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:138 +msgid "" +"The port the transparent proxy listens on, for tcp and udp. It must listen " +"on loopback or on the wildcard address. Needs kmod-nft-tproxy." +msgstr "" +"Der Port, auf dem der transparente Proxy lauscht, für tcp und udp. Er muss " +"auf Loopback oder der Wildcard-Adresse lauschen. Benötigt kmod-nft-tproxy." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/logtemplate.js:44 +msgid "The syslog output, pre-filtered for messages related to: %s" +msgstr "Die Syslog-Ausgabe, vorgefiltert nach Meldungen zu: %s" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:292 +msgid "" +"These entries were skipped. Everything else was applied - a rejected entry " +"never takes the service down." +msgstr "" +"Diese Einträge wurden übersprungen. Alles andere wurde angewendet - ein " +"abgelehnter Eintrag legt den Dienst nie lahm." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:143 +msgid "Too many answers" +msgstr "Zu viele Antworten" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:147 +msgid "Too many stacked VLAN tags" +msgstr "Zu viele gestapelte VLAN-Tags" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:154 +msgid "" +"Traffic to networks the routing table already has a route for - your other " +"subnets, your static routes - stays on the normal path instead of entering " +"the policy interface. Turn this off only for a hermetic killswitch." +msgstr "" +"Datenverkehr zu Netzen, für die die Routing-Tabelle bereits eine Route hat - " +"andere Subnetze, statische Routen - bleibt auf dem normalen Pfad, statt in " +"die Richtlinien-Schnittstelle zu gelangen. Nur für einen hermetischen " +"Killswitch deaktivieren." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:121 +msgid "Transparent proxy on the router" +msgstr "Transparenter Proxy auf dem Router" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:134 +msgid "Truncated response" +msgstr "Abgeschnittene Antwort" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:416 +msgid "Version" +msgstr "Version" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:145 +msgid "" +"What new traffic does when the interface is down or, for a transparent " +"proxy, when nothing listens on its port." +msgstr "" +"Verhalten von neuem Datenverkehr, wenn die Schnittstelle ausgefallen ist " +"oder, bei einem transparenten Proxy, nichts auf seinem Port lauscht." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:236 +msgid "" +"What the nftables Sets currently hold. Counters are reset whenever an entry " +"is refreshed, so they show recent activity, not a lifetime total." +msgstr "" +"Aktueller Inhalt der nftables-Sets. Die Zähler werden bei jeder Auffrischung " +"eines Eintrags zurückgesetzt und zeigen daher die jüngste Aktivität, keine " +"Gesamtsumme." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:421 +msgid "across all policies" +msgstr "über alle Richtlinien" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:193 +msgid "all policies" +msgstr "alle Richtlinien" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:216 +msgid "answers the health probes" +msgstr "antwortet auf die Statusprüfungen" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:202 +msgid "" +"example.com matches that name only, *.example.com matches its subdomains but " +"not the apex - list both to cover both." +msgstr "" +"example.com passt nur auf genau diesen Namen, *.example.com passt auf dessen " +"Subdomains, aber nicht auf die Apex-Domain - beide eintragen, um beides " +"abzudecken." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:133 +msgid "interface" +msgstr "Schnittstelle" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:391 +msgid "n/a" +msgstr "k. A." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:91 +msgid "no answer from the backend" +msgstr "keine Antwort vom Backend" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:217 +msgid "no answer to the health probes since %s - the fallback applies" +msgstr "keine Antwort auf die Statusprüfungen seit %s - der Fallback greift" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:317 +msgid "online documentation" +msgstr "Online-Dokumentation" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:425 +msgid "policy interfaces answering the probes" +msgstr "Richtlinien-Schnittstellen, die auf die Prüfungen antworten" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:116 +msgid "ruleset present, service not running" +msgstr "Regelsatz vorhanden, Dienst läuft nicht" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:104 +msgid "ruleset re-applied %d time(s)" +msgstr "Regelsatz %d-mal erneut angewendet" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:110 +msgid "running, but no ruleset in the kernel" +msgstr "läuft, aber kein Regelsatz im Kernel" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:102 +msgid "running, policy applied" +msgstr "läuft, Richtlinie angewendet" + +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:3 +msgid "shunt" +msgstr "shunt" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:121 +msgid "stopped" +msgstr "gestoppt" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:397 +msgid "unavailable - ucode-mod-resolv missing" +msgstr "nicht verfügbar - ucode-mod-resolv fehlt" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:423 +msgid "wildcards are covered by the observer only" +msgstr "Wildcards werden nur vom Beobachter abgedeckt" diff --git a/luci-app-shunt/po/fr/shunt.po b/luci-app-shunt/po/fr/shunt.po new file mode 100644 index 000000000..ec2ead2bd --- /dev/null +++ b/luci-app-shunt/po/fr/shunt.po @@ -0,0 +1,686 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: fr\n" +"Content-Transfer-Encoding: 8bit\n" +"Last-Translator: Martin Olmer \n" +"Language-Team: French \n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"PO-Revision-Date: 2026-11-06 10:05+0000\n" +"X-Generator: Weblate 2026.11.2.dev0\n" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:396 +msgid "%d name(s) every %ds" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:198 +msgid "" +"%d of %d observed responses were not used. That is normal: the observer sees " +"every answer on the network, and only the ones for a domain you routed are " +"of any interest." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:86 +msgid "%d pkt matched" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:28 +msgid "%dh %dm" +msgstr "%dh %dm" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:32 +msgid "%dm %ds" +msgstr "%dm %ds" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:34 +msgid "%ds" +msgstr "%ds" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:243 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:116 +msgid "Action" +msgstr "Action" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:96 +msgid "Add policy" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:135 +msgid "Address" +msgstr "Adresse" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:495 +msgid "" +"Addresses that answer ICMP echo, reachable through every policy interface - " +"public resolvers are the usual choice. Every interface a route policy uses " +"is probed through itself every 5 seconds; one that answers no target for " +"three rounds is treated as down and its policies fall back until it answers " +"again. Empty means no tracking, see the README." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:130 +msgid "Answer carried no usable address" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:193 +msgid "Answers used for a policy" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:56 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:42 +msgid "Apply failed: %s" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:148 +msgid "Block the traffic (killswitch)" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:120 +msgid "Bypass - leave the traffic alone" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:138 +msgid "Bytes routed" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:469 +msgid "" +"Ceiling in seconds for a learned address in its Set. An address learned from " +"a DNS answer expires with the TTL of that answer, clamped to the range 60 to " +"this value; a polled address uses this value. Keep it well above the poll " +"interval." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:167 +msgid "Client MACs this policy applies to, ORed with the addresses above." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:179 +msgid "Client Selectors" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:162 +msgid "" +"Client addresses or prefixes this policy applies to. Leave empty to apply to " +"every client." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:138 +msgid "Compression pointer in the question" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:448 +msgid "DNS Observer Settings" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:188 +msgid "DNS responses observed on %s since the service started" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:455 +msgid "Debug Logging" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:194 +msgid "Destination Address Files" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:189 +msgid "Destination Addresses" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:184 +msgid "Destination Ports" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:190 +msgid "Destination addresses or prefixes to route into this policy." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:206 +msgid "Domain Files" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:128 +msgid "Domain is in no policy" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:201 +msgid "Domains" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:452 +msgid "Enable the shunt service." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:451 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:111 +msgid "Enabled" +msgstr "Activé" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:132 +msgid "Error reply, e.g. NXDOMAIN" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:89 +msgid "" +"Evaluated top to bottom - the first policy a packet matches wins. Within one " +"policy the selectors are ANDed: source plus domain means only that client, " +"and only to those domains." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:172 +msgid "" +"Everything arriving on these devices, ORed with the client selectors above - " +"a whole guest network or VLAN, in IPv4 and IPv6 alike, whatever prefix it " +"gets. Not the router's own traffic. For domains, add the device to the " +"observed devices as well." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:53 +msgid "Expecting a bare file name or an absolute path, without whitespace" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:136 +msgid "Expires" +msgstr "Expire" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:150 +msgid "Extension header chain too long" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:147 +msgid "Fall through to the normal uplink" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:249 +msgid "Fallback" +msgstr "Repli" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:144 +msgid "Fallback Behavior" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:195 +msgid "" +"Files with one address or prefix per line, IPv4 and IPv6 mixed, for large " +"published ranges. A bare name lives under /tmp/shunt, an absolute path is " +"used as given. After the file changed, refresh below." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:207 +msgid "" +"Files with one domain pattern per line, for large or community-maintained " +"lists. A bare name lives under /tmp/shunt, an absolute path is used as " +"given. Entries from a file are learned by the DNS observer only, never " +"polled; after the file changed, refresh below." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:145 +msgid "Frame ends mid-structure" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:447 +msgid "General Settings" +msgstr "Réglages généraux" + +#: applications/luci-app-shunt/root/usr/share/rpcd/acl.d/luci-app-shunt.json:3 +msgid "Grant access to LuCI app shunt" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:424 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:449 +msgid "Health Tracking" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:149 +msgid "IP fragment" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:213 +msgid "IPv4 Gateway Override" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:219 +msgid "IPv6 Gateway Override" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:148 +msgid "Inconsistent IP header length" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:152 +msgid "Inconsistent UDP length" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:244 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:125 +msgid "Interface" +msgstr "Interface" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:153 +msgid "Keep Local Traffic" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:419 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:127 +msgid "Learned addresses" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:154 +msgid "Learned addresses (%d)" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:456 +msgid "" +"Log every observed DNS answer and every set write. Useful for a bug report, " +"noisy in normal operation - on a router running adblock roughly half of all " +"answers are error replies, and each one gets a line." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:459 +msgid "Manage rp_filter" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:245 +msgid "Mark" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:468 +msgid "Maximum Entry Lifetime" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:136 +msgid "Message ends mid-structure" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:137 +msgid "Message too long" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:141 +msgid "Name has a byte outside a-z 0-9 - _" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:140 +msgid "Name too long" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:146 +msgid "Neither IPv4 nor IPv6" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/logtemplate.js:33 +msgid "No %s related logs yet!" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:180 +msgid "No client is selected, so every client is covered." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:63 +msgid "No output" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:237 +msgid "No policy is active." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:309 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:82 +msgid "No shunt config found!" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:151 +msgid "Not UDP" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:133 +msgid "Not a response" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:129 +msgid "Not an address query" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:135 +msgid "Not exactly one question" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:128 +msgid "" +"Nothing learned yet. The service fills these from its poll cycle and from " +"observed DNS answers." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:488 +msgid "Observed Devices" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:214 +msgid "" +"Only needed when the gateway discovered from netifd is wrong. Point to point " +"interfaces need no gateway at all." +msgstr "" + +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:23 +msgid "Overview" +msgstr "Vue d'ensemble" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:137 +msgid "Packets routed" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:483 +msgid "Passive DNS Observer" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:88 +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:31 +msgid "Policies" +msgstr "Stratégies" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:242 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:134 +msgid "Policy" +msgstr "Politique" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:316 +msgid "" +"Policy based routing by mac, source, destination and domain. For further " +"information please check the %s." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:422 +msgid "Poll" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:463 +msgid "Poll Interval" +msgstr "Intervalle d'actualisation" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:494 +msgid "Probe Targets" +msgstr "" + +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:47 +msgid "Processing Log" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:178 +msgid "Protocols" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:137 +msgid "Proxy Port" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:484 +msgid "" +"Read DNS answers as they pass the LAN device, whichever resolver produced " +"them. Required for wildcard domains, which cannot be resolved ahead of time." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:142 +msgid "Record length does not fit the type" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:250 +msgid "Refresh" +msgstr "Actualiser" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:242 +msgid "Refresh List Files" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:68 +msgid "Refresh failed: %s" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:290 +msgid "Rejected settings" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:139 +msgid "Reserved label type" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:179 +msgid "Restrict to tcp, udp or both. A port without a protocol covers both." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:381 +msgid "Reverse path filtering is strict" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:119 +msgid "Route into a policy interface" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:117 +msgid "" +"Route the selected traffic into the interface below, bypass it - a bypass " +"policy marks nothing and exempts the traffic from every policy after it - or " +"hand it to a transparent proxy on the router." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:248 +msgid "Routes" +msgstr "Routes" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:247 +msgid "Rules" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:517 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:234 +msgid "Save & Restart" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:464 +msgid "Seconds between poll cycles." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:414 +msgid "Service" +msgstr "Service" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:233 +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:39 +msgid "Set Reporting" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:460 +msgid "" +"Set rp_filter to 2 on shunt's own policy interfaces, at start and when one " +"comes up." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:444 +msgid "Settings" +msgstr "Paramètres" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:477 +msgid "" +"Should be at least twice the poll interval (%d), otherwise entries expire " +"between cycles." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:185 +msgid "" +"Single ports or ranges like 8000-8080, ANDed with the addresses below. Ports " +"alone select that traffic from every client." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:161 +msgid "Source Addresses" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:171 +msgid "Source Devices" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:166 +msgid "Source MAC Addresses" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:181 +msgid "Static Destinations" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:510 +msgid "Stop" +msgstr "Arrêter" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:383 +msgid "" +"Strict rp_filter will drop shunt's marked traffic on %s. Set rp_filter to 2 " +"on the policy interface, enable rp_filter_manage to have shunt do it, or " +"loosen it box-wide; see the README." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:246 +msgid "Table" +msgstr "Table" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:489 +msgid "" +"The LAN device the DNS answers cross on their way to the clients, normally " +"br-lan. One entry per network segment, see the README." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:126 +msgid "" +"The device or logical interface this policy routes into. A netifd name is " +"resolved to its device; any other device name is used as entered." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:138 +msgid "" +"The port the transparent proxy listens on, for tcp and udp. It must listen " +"on loopback or on the wildcard address. Needs kmod-nft-tproxy." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/logtemplate.js:44 +msgid "The syslog output, pre-filtered for messages related to: %s" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:292 +msgid "" +"These entries were skipped. Everything else was applied - a rejected entry " +"never takes the service down." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:143 +msgid "Too many answers" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:147 +msgid "Too many stacked VLAN tags" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:154 +msgid "" +"Traffic to networks the routing table already has a route for - your other " +"subnets, your static routes - stays on the normal path instead of entering " +"the policy interface. Turn this off only for a hermetic killswitch." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:121 +msgid "Transparent proxy on the router" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:134 +msgid "Truncated response" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:416 +msgid "Version" +msgstr "Version" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:145 +msgid "" +"What new traffic does when the interface is down or, for a transparent " +"proxy, when nothing listens on its port." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:236 +msgid "" +"What the nftables Sets currently hold. Counters are reset whenever an entry " +"is refreshed, so they show recent activity, not a lifetime total." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:421 +msgid "across all policies" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:193 +msgid "all policies" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:216 +msgid "answers the health probes" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:202 +msgid "" +"example.com matches that name only, *.example.com matches its subdomains but " +"not the apex - list both to cover both." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:133 +msgid "interface" +msgstr "interface" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:391 +msgid "n/a" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:91 +msgid "no answer from the backend" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:217 +msgid "no answer to the health probes since %s - the fallback applies" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:317 +msgid "online documentation" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:425 +msgid "policy interfaces answering the probes" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:116 +msgid "ruleset present, service not running" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:104 +msgid "ruleset re-applied %d time(s)" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:110 +msgid "running, but no ruleset in the kernel" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:102 +msgid "running, policy applied" +msgstr "" + +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:3 +msgid "shunt" +msgstr "shunt" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:121 +msgid "stopped" +msgstr "arrêté" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:397 +msgid "unavailable - ucode-mod-resolv missing" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:423 +msgid "wildcards are covered by the observer only" +msgstr "" diff --git a/luci-app-shunt/po/hu/shunt.po b/luci-app-shunt/po/hu/shunt.po new file mode 100644 index 000000000..a00f0fe1c --- /dev/null +++ b/luci-app-shunt/po/hu/shunt.po @@ -0,0 +1,686 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: hu\n" +"Content-Transfer-Encoding: 8bit\n" +"Last-Translator: Martin Olmer \n" +"Language-Team: Hungarian \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"PO-Revision-Date: 2026-11-05 13:14+0000\n" +"X-Generator: Weblate 2026.11.2.dev0\n" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:396 +msgid "%d name(s) every %ds" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:198 +msgid "" +"%d of %d observed responses were not used. That is normal: the observer sees " +"every answer on the network, and only the ones for a domain you routed are " +"of any interest." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:86 +msgid "%d pkt matched" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:28 +msgid "%dh %dm" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:32 +msgid "%dm %ds" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:34 +msgid "%ds" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:243 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:116 +msgid "Action" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:96 +msgid "Add policy" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:135 +msgid "Address" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:495 +msgid "" +"Addresses that answer ICMP echo, reachable through every policy interface - " +"public resolvers are the usual choice. Every interface a route policy uses " +"is probed through itself every 5 seconds; one that answers no target for " +"three rounds is treated as down and its policies fall back until it answers " +"again. Empty means no tracking, see the README." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:130 +msgid "Answer carried no usable address" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:193 +msgid "Answers used for a policy" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:56 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:42 +msgid "Apply failed: %s" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:148 +msgid "Block the traffic (killswitch)" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:120 +msgid "Bypass - leave the traffic alone" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:138 +msgid "Bytes routed" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:469 +msgid "" +"Ceiling in seconds for a learned address in its Set. An address learned from " +"a DNS answer expires with the TTL of that answer, clamped to the range 60 to " +"this value; a polled address uses this value. Keep it well above the poll " +"interval." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:167 +msgid "Client MACs this policy applies to, ORed with the addresses above." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:179 +msgid "Client Selectors" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:162 +msgid "" +"Client addresses or prefixes this policy applies to. Leave empty to apply to " +"every client." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:138 +msgid "Compression pointer in the question" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:448 +msgid "DNS Observer Settings" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:188 +msgid "DNS responses observed on %s since the service started" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:455 +msgid "Debug Logging" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:194 +msgid "Destination Address Files" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:189 +msgid "Destination Addresses" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:184 +msgid "Destination Ports" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:190 +msgid "Destination addresses or prefixes to route into this policy." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:206 +msgid "Domain Files" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:128 +msgid "Domain is in no policy" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:201 +msgid "Domains" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:452 +msgid "Enable the shunt service." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:451 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:111 +msgid "Enabled" +msgstr "Engedélyezve" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:132 +msgid "Error reply, e.g. NXDOMAIN" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:89 +msgid "" +"Evaluated top to bottom - the first policy a packet matches wins. Within one " +"policy the selectors are ANDed: source plus domain means only that client, " +"and only to those domains." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:172 +msgid "" +"Everything arriving on these devices, ORed with the client selectors above - " +"a whole guest network or VLAN, in IPv4 and IPv6 alike, whatever prefix it " +"gets. Not the router's own traffic. For domains, add the device to the " +"observed devices as well." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:53 +msgid "Expecting a bare file name or an absolute path, without whitespace" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:136 +msgid "Expires" +msgstr "Lejárat" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:150 +msgid "Extension header chain too long" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:147 +msgid "Fall through to the normal uplink" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:249 +msgid "Fallback" +msgstr "Visszaesés" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:144 +msgid "Fallback Behavior" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:195 +msgid "" +"Files with one address or prefix per line, IPv4 and IPv6 mixed, for large " +"published ranges. A bare name lives under /tmp/shunt, an absolute path is " +"used as given. After the file changed, refresh below." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:207 +msgid "" +"Files with one domain pattern per line, for large or community-maintained " +"lists. A bare name lives under /tmp/shunt, an absolute path is used as " +"given. Entries from a file are learned by the DNS observer only, never " +"polled; after the file changed, refresh below." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:145 +msgid "Frame ends mid-structure" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:447 +msgid "General Settings" +msgstr "Általános beállítások" + +#: applications/luci-app-shunt/root/usr/share/rpcd/acl.d/luci-app-shunt.json:3 +msgid "Grant access to LuCI app shunt" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:424 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:449 +msgid "Health Tracking" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:149 +msgid "IP fragment" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:213 +msgid "IPv4 Gateway Override" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:219 +msgid "IPv6 Gateway Override" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:148 +msgid "Inconsistent IP header length" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:152 +msgid "Inconsistent UDP length" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:244 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:125 +msgid "Interface" +msgstr "Interfész" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:153 +msgid "Keep Local Traffic" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:419 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:127 +msgid "Learned addresses" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:154 +msgid "Learned addresses (%d)" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:456 +msgid "" +"Log every observed DNS answer and every set write. Useful for a bug report, " +"noisy in normal operation - on a router running adblock roughly half of all " +"answers are error replies, and each one gets a line." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:459 +msgid "Manage rp_filter" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:245 +msgid "Mark" +msgstr "Jelölés" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:468 +msgid "Maximum Entry Lifetime" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:136 +msgid "Message ends mid-structure" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:137 +msgid "Message too long" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:141 +msgid "Name has a byte outside a-z 0-9 - _" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:140 +msgid "Name too long" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:146 +msgid "Neither IPv4 nor IPv6" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/logtemplate.js:33 +msgid "No %s related logs yet!" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:180 +msgid "No client is selected, so every client is covered." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:63 +msgid "No output" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:237 +msgid "No policy is active." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:309 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:82 +msgid "No shunt config found!" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:151 +msgid "Not UDP" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:133 +msgid "Not a response" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:129 +msgid "Not an address query" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:135 +msgid "Not exactly one question" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:128 +msgid "" +"Nothing learned yet. The service fills these from its poll cycle and from " +"observed DNS answers." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:488 +msgid "Observed Devices" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:214 +msgid "" +"Only needed when the gateway discovered from netifd is wrong. Point to point " +"interfaces need no gateway at all." +msgstr "" + +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:23 +msgid "Overview" +msgstr "Áttekintés" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:137 +msgid "Packets routed" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:483 +msgid "Passive DNS Observer" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:88 +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:31 +msgid "Policies" +msgstr "Házirendek" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:242 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:134 +msgid "Policy" +msgstr "Szabályzat" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:316 +msgid "" +"Policy based routing by mac, source, destination and domain. For further " +"information please check the %s." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:422 +msgid "Poll" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:463 +msgid "Poll Interval" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:494 +msgid "Probe Targets" +msgstr "" + +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:47 +msgid "Processing Log" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:178 +msgid "Protocols" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:137 +msgid "Proxy Port" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:484 +msgid "" +"Read DNS answers as they pass the LAN device, whichever resolver produced " +"them. Required for wildcard domains, which cannot be resolved ahead of time." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:142 +msgid "Record length does not fit the type" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:250 +msgid "Refresh" +msgstr "Frissítés" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:242 +msgid "Refresh List Files" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:68 +msgid "Refresh failed: %s" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:290 +msgid "Rejected settings" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:139 +msgid "Reserved label type" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:179 +msgid "Restrict to tcp, udp or both. A port without a protocol covers both." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:381 +msgid "Reverse path filtering is strict" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:119 +msgid "Route into a policy interface" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:117 +msgid "" +"Route the selected traffic into the interface below, bypass it - a bypass " +"policy marks nothing and exempts the traffic from every policy after it - or " +"hand it to a transparent proxy on the router." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:248 +msgid "Routes" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:247 +msgid "Rules" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:517 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:234 +msgid "Save & Restart" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:464 +msgid "Seconds between poll cycles." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:414 +msgid "Service" +msgstr "Szolgáltatás" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:233 +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:39 +msgid "Set Reporting" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:460 +msgid "" +"Set rp_filter to 2 on shunt's own policy interfaces, at start and when one " +"comes up." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:444 +msgid "Settings" +msgstr "Beállítások" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:477 +msgid "" +"Should be at least twice the poll interval (%d), otherwise entries expire " +"between cycles." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:185 +msgid "" +"Single ports or ranges like 8000-8080, ANDed with the addresses below. Ports " +"alone select that traffic from every client." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:161 +msgid "Source Addresses" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:171 +msgid "Source Devices" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:166 +msgid "Source MAC Addresses" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:181 +msgid "Static Destinations" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:510 +msgid "Stop" +msgstr "Leállítás" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:383 +msgid "" +"Strict rp_filter will drop shunt's marked traffic on %s. Set rp_filter to 2 " +"on the policy interface, enable rp_filter_manage to have shunt do it, or " +"loosen it box-wide; see the README." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:246 +msgid "Table" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:489 +msgid "" +"The LAN device the DNS answers cross on their way to the clients, normally " +"br-lan. One entry per network segment, see the README." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:126 +msgid "" +"The device or logical interface this policy routes into. A netifd name is " +"resolved to its device; any other device name is used as entered." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:138 +msgid "" +"The port the transparent proxy listens on, for tcp and udp. It must listen " +"on loopback or on the wildcard address. Needs kmod-nft-tproxy." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/logtemplate.js:44 +msgid "The syslog output, pre-filtered for messages related to: %s" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:292 +msgid "" +"These entries were skipped. Everything else was applied - a rejected entry " +"never takes the service down." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:143 +msgid "Too many answers" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:147 +msgid "Too many stacked VLAN tags" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:154 +msgid "" +"Traffic to networks the routing table already has a route for - your other " +"subnets, your static routes - stays on the normal path instead of entering " +"the policy interface. Turn this off only for a hermetic killswitch." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:121 +msgid "Transparent proxy on the router" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:134 +msgid "Truncated response" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:416 +msgid "Version" +msgstr "Verzió" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:145 +msgid "" +"What new traffic does when the interface is down or, for a transparent " +"proxy, when nothing listens on its port." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:236 +msgid "" +"What the nftables Sets currently hold. Counters are reset whenever an entry " +"is refreshed, so they show recent activity, not a lifetime total." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:421 +msgid "across all policies" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:193 +msgid "all policies" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:216 +msgid "answers the health probes" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:202 +msgid "" +"example.com matches that name only, *.example.com matches its subdomains but " +"not the apex - list both to cover both." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:133 +msgid "interface" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:391 +msgid "n/a" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:91 +msgid "no answer from the backend" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:217 +msgid "no answer to the health probes since %s - the fallback applies" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:317 +msgid "online documentation" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:425 +msgid "policy interfaces answering the probes" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:116 +msgid "ruleset present, service not running" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:104 +msgid "ruleset re-applied %d time(s)" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:110 +msgid "running, but no ruleset in the kernel" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:102 +msgid "running, policy applied" +msgstr "" + +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:3 +msgid "shunt" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:121 +msgid "stopped" +msgstr "leállítva" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:397 +msgid "unavailable - ucode-mod-resolv missing" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:423 +msgid "wildcards are covered by the observer only" +msgstr "" diff --git a/luci-app-shunt/po/it/shunt.po b/luci-app-shunt/po/it/shunt.po new file mode 100644 index 000000000..60106f66c --- /dev/null +++ b/luci-app-shunt/po/it/shunt.po @@ -0,0 +1,686 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: it\n" +"Content-Transfer-Encoding: 8bit\n" +"Last-Translator: Martin Olmer \n" +"Language-Team: Italian \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"PO-Revision-Date: 2026-11-05 19:08+0000\n" +"X-Generator: Weblate 2026.11.2.dev0\n" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:396 +msgid "%d name(s) every %ds" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:198 +msgid "" +"%d of %d observed responses were not used. That is normal: the observer sees " +"every answer on the network, and only the ones for a domain you routed are " +"of any interest." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:86 +msgid "%d pkt matched" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:28 +msgid "%dh %dm" +msgstr "%dh %dm" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:32 +msgid "%dm %ds" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:34 +msgid "%ds" +msgstr "%ds" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:243 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:116 +msgid "Action" +msgstr "Azione" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:96 +msgid "Add policy" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:135 +msgid "Address" +msgstr "Indirizzo" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:495 +msgid "" +"Addresses that answer ICMP echo, reachable through every policy interface - " +"public resolvers are the usual choice. Every interface a route policy uses " +"is probed through itself every 5 seconds; one that answers no target for " +"three rounds is treated as down and its policies fall back until it answers " +"again. Empty means no tracking, see the README." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:130 +msgid "Answer carried no usable address" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:193 +msgid "Answers used for a policy" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:56 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:42 +msgid "Apply failed: %s" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:148 +msgid "Block the traffic (killswitch)" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:120 +msgid "Bypass - leave the traffic alone" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:138 +msgid "Bytes routed" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:469 +msgid "" +"Ceiling in seconds for a learned address in its Set. An address learned from " +"a DNS answer expires with the TTL of that answer, clamped to the range 60 to " +"this value; a polled address uses this value. Keep it well above the poll " +"interval." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:167 +msgid "Client MACs this policy applies to, ORed with the addresses above." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:179 +msgid "Client Selectors" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:162 +msgid "" +"Client addresses or prefixes this policy applies to. Leave empty to apply to " +"every client." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:138 +msgid "Compression pointer in the question" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:448 +msgid "DNS Observer Settings" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:188 +msgid "DNS responses observed on %s since the service started" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:455 +msgid "Debug Logging" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:194 +msgid "Destination Address Files" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:189 +msgid "Destination Addresses" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:184 +msgid "Destination Ports" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:190 +msgid "Destination addresses or prefixes to route into this policy." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:206 +msgid "Domain Files" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:128 +msgid "Domain is in no policy" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:201 +msgid "Domains" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:452 +msgid "Enable the shunt service." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:451 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:111 +msgid "Enabled" +msgstr "Abilita" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:132 +msgid "Error reply, e.g. NXDOMAIN" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:89 +msgid "" +"Evaluated top to bottom - the first policy a packet matches wins. Within one " +"policy the selectors are ANDed: source plus domain means only that client, " +"and only to those domains." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:172 +msgid "" +"Everything arriving on these devices, ORed with the client selectors above - " +"a whole guest network or VLAN, in IPv4 and IPv6 alike, whatever prefix it " +"gets. Not the router's own traffic. For domains, add the device to the " +"observed devices as well." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:53 +msgid "Expecting a bare file name or an absolute path, without whitespace" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:136 +msgid "Expires" +msgstr "Scadenze" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:150 +msgid "Extension header chain too long" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:147 +msgid "Fall through to the normal uplink" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:249 +msgid "Fallback" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:144 +msgid "Fallback Behavior" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:195 +msgid "" +"Files with one address or prefix per line, IPv4 and IPv6 mixed, for large " +"published ranges. A bare name lives under /tmp/shunt, an absolute path is " +"used as given. After the file changed, refresh below." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:207 +msgid "" +"Files with one domain pattern per line, for large or community-maintained " +"lists. A bare name lives under /tmp/shunt, an absolute path is used as " +"given. Entries from a file are learned by the DNS observer only, never " +"polled; after the file changed, refresh below." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:145 +msgid "Frame ends mid-structure" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:447 +msgid "General Settings" +msgstr "Impostazioni Generali" + +#: applications/luci-app-shunt/root/usr/share/rpcd/acl.d/luci-app-shunt.json:3 +msgid "Grant access to LuCI app shunt" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:424 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:449 +msgid "Health Tracking" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:149 +msgid "IP fragment" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:213 +msgid "IPv4 Gateway Override" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:219 +msgid "IPv6 Gateway Override" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:148 +msgid "Inconsistent IP header length" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:152 +msgid "Inconsistent UDP length" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:244 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:125 +msgid "Interface" +msgstr "Interfaccia" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:153 +msgid "Keep Local Traffic" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:419 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:127 +msgid "Learned addresses" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:154 +msgid "Learned addresses (%d)" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:456 +msgid "" +"Log every observed DNS answer and every set write. Useful for a bug report, " +"noisy in normal operation - on a router running adblock roughly half of all " +"answers are error replies, and each one gets a line." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:459 +msgid "Manage rp_filter" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:245 +msgid "Mark" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:468 +msgid "Maximum Entry Lifetime" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:136 +msgid "Message ends mid-structure" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:137 +msgid "Message too long" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:141 +msgid "Name has a byte outside a-z 0-9 - _" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:140 +msgid "Name too long" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:146 +msgid "Neither IPv4 nor IPv6" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/logtemplate.js:33 +msgid "No %s related logs yet!" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:180 +msgid "No client is selected, so every client is covered." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:63 +msgid "No output" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:237 +msgid "No policy is active." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:309 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:82 +msgid "No shunt config found!" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:151 +msgid "Not UDP" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:133 +msgid "Not a response" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:129 +msgid "Not an address query" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:135 +msgid "Not exactly one question" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:128 +msgid "" +"Nothing learned yet. The service fills these from its poll cycle and from " +"observed DNS answers." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:488 +msgid "Observed Devices" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:214 +msgid "" +"Only needed when the gateway discovered from netifd is wrong. Point to point " +"interfaces need no gateway at all." +msgstr "" + +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:23 +msgid "Overview" +msgstr "Riepilogo" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:137 +msgid "Packets routed" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:483 +msgid "Passive DNS Observer" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:88 +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:31 +msgid "Policies" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:242 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:134 +msgid "Policy" +msgstr "Politica" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:316 +msgid "" +"Policy based routing by mac, source, destination and domain. For further " +"information please check the %s." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:422 +msgid "Poll" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:463 +msgid "Poll Interval" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:494 +msgid "Probe Targets" +msgstr "" + +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:47 +msgid "Processing Log" +msgstr "Log di elaborazione" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:178 +msgid "Protocols" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:137 +msgid "Proxy Port" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:484 +msgid "" +"Read DNS answers as they pass the LAN device, whichever resolver produced " +"them. Required for wildcard domains, which cannot be resolved ahead of time." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:142 +msgid "Record length does not fit the type" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:250 +msgid "Refresh" +msgstr "Aggiorna" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:242 +msgid "Refresh List Files" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:68 +msgid "Refresh failed: %s" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:290 +msgid "Rejected settings" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:139 +msgid "Reserved label type" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:179 +msgid "Restrict to tcp, udp or both. A port without a protocol covers both." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:381 +msgid "Reverse path filtering is strict" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:119 +msgid "Route into a policy interface" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:117 +msgid "" +"Route the selected traffic into the interface below, bypass it - a bypass " +"policy marks nothing and exempts the traffic from every policy after it - or " +"hand it to a transparent proxy on the router." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:248 +msgid "Routes" +msgstr "Rotte" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:247 +msgid "Rules" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:517 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:234 +msgid "Save & Restart" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:464 +msgid "Seconds between poll cycles." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:414 +msgid "Service" +msgstr "Servizio" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:233 +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:39 +msgid "Set Reporting" +msgstr "Imposta resoconti" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:460 +msgid "" +"Set rp_filter to 2 on shunt's own policy interfaces, at start and when one " +"comes up." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:444 +msgid "Settings" +msgstr "Impostazioni" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:477 +msgid "" +"Should be at least twice the poll interval (%d), otherwise entries expire " +"between cycles." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:185 +msgid "" +"Single ports or ranges like 8000-8080, ANDed with the addresses below. Ports " +"alone select that traffic from every client." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:161 +msgid "Source Addresses" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:171 +msgid "Source Devices" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:166 +msgid "Source MAC Addresses" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:181 +msgid "Static Destinations" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:510 +msgid "Stop" +msgstr "Ferma" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:383 +msgid "" +"Strict rp_filter will drop shunt's marked traffic on %s. Set rp_filter to 2 " +"on the policy interface, enable rp_filter_manage to have shunt do it, or " +"loosen it box-wide; see the README." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:246 +msgid "Table" +msgstr "Tabella" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:489 +msgid "" +"The LAN device the DNS answers cross on their way to the clients, normally " +"br-lan. One entry per network segment, see the README." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:126 +msgid "" +"The device or logical interface this policy routes into. A netifd name is " +"resolved to its device; any other device name is used as entered." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:138 +msgid "" +"The port the transparent proxy listens on, for tcp and udp. It must listen " +"on loopback or on the wildcard address. Needs kmod-nft-tproxy." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/logtemplate.js:44 +msgid "The syslog output, pre-filtered for messages related to: %s" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:292 +msgid "" +"These entries were skipped. Everything else was applied - a rejected entry " +"never takes the service down." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:143 +msgid "Too many answers" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:147 +msgid "Too many stacked VLAN tags" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:154 +msgid "" +"Traffic to networks the routing table already has a route for - your other " +"subnets, your static routes - stays on the normal path instead of entering " +"the policy interface. Turn this off only for a hermetic killswitch." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:121 +msgid "Transparent proxy on the router" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:134 +msgid "Truncated response" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:416 +msgid "Version" +msgstr "Versione" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:145 +msgid "" +"What new traffic does when the interface is down or, for a transparent " +"proxy, when nothing listens on its port." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:236 +msgid "" +"What the nftables Sets currently hold. Counters are reset whenever an entry " +"is refreshed, so they show recent activity, not a lifetime total." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:421 +msgid "across all policies" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:193 +msgid "all policies" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:216 +msgid "answers the health probes" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:202 +msgid "" +"example.com matches that name only, *.example.com matches its subdomains but " +"not the apex - list both to cover both." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:133 +msgid "interface" +msgstr "interfaccia" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:391 +msgid "n/a" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:91 +msgid "no answer from the backend" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:217 +msgid "no answer to the health probes since %s - the fallback applies" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:317 +msgid "online documentation" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:425 +msgid "policy interfaces answering the probes" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:116 +msgid "ruleset present, service not running" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:104 +msgid "ruleset re-applied %d time(s)" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:110 +msgid "running, but no ruleset in the kernel" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:102 +msgid "running, policy applied" +msgstr "" + +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:3 +msgid "shunt" +msgstr "shunt" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:121 +msgid "stopped" +msgstr "fermato" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:397 +msgid "unavailable - ucode-mod-resolv missing" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:423 +msgid "wildcards are covered by the observer only" +msgstr "" diff --git a/luci-app-shunt/po/pl/shunt.po b/luci-app-shunt/po/pl/shunt.po new file mode 100644 index 000000000..8971b70ff --- /dev/null +++ b/luci-app-shunt/po/pl/shunt.po @@ -0,0 +1,791 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: pl\n" +"Content-Transfer-Encoding: 8bit\n" +"Last-Translator: Matthaiks \n" +"Language-Team: Polish \n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" +"PO-Revision-Date: 2026-11-04 21:09+0000\n" +"X-Generator: Weblate 2026.11.1.dev0\n" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:396 +msgid "%d name(s) every %ds" +msgstr "%d nazwa(-y) co %ds" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:198 +msgid "" +"%d of %d observed responses were not used. That is normal: the observer sees " +"every answer on the network, and only the ones for a domain you routed are " +"of any interest." +msgstr "" +"%d z %d zaobserwowanych odpowiedzi nie zostało wykorzystanych. Jest to " +"normalne zjawisko: obserwator widzi każdą odpowiedź w sieci, a istotne są " +"tylko te, które dotyczą domeny objętej Twoim trasowaniem." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:86 +msgid "%d pkt matched" +msgstr "%d pkt dopasowano" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:28 +msgid "%dh %dm" +msgstr "%dh %dm" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:32 +msgid "%dm %ds" +msgstr "%dm %ds" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:34 +msgid "%ds" +msgstr "%ds" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:243 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:116 +msgid "Action" +msgstr "Akcja" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:96 +msgid "Add policy" +msgstr "Dodaj politykę" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:135 +msgid "Address" +msgstr "Adres" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:495 +msgid "" +"Addresses that answer ICMP echo, reachable through every policy interface - " +"public resolvers are the usual choice. Every interface a route policy uses " +"is probed through itself every 5 seconds; one that answers no target for " +"three rounds is treated as down and its policies fall back until it answers " +"again. Empty means no tracking, see the README." +msgstr "" +"Adresy, które odpowiadają na echo ICMP, są osiągalne przez każdy interfejs " +"polityki – zazwyczaj wybierane są publiczne resolwery. Każdy interfejs " +"używany przez politykę trasy jest sprawdzany przez siebie co 5 sekund; " +"interfejs, który nie odpowiada na żaden cel przez trzy rundy, jest " +"traktowany jako nieaktywny, a jego polityki są wycofywane do momentu " +"ponownego udzielenia odpowiedzi. Pusty oznacza brak śledzenia, patrz plik " +"README." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:130 +msgid "Answer carried no usable address" +msgstr "Odpowiedź nie zawierała żadnego użytecznego adresu" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:193 +msgid "Answers used for a policy" +msgstr "Odpowiedzi wykorzystane w polityce" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:56 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:42 +msgid "Apply failed: %s" +msgstr "Zastosowanie nie powiodło się: %s" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:148 +msgid "Block the traffic (killswitch)" +msgstr "Zablokuj ruch (wyłącznik awaryjny)" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:120 +msgid "Bypass - leave the traffic alone" +msgstr "Obejście – zostaw ruch w spokoju" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:138 +msgid "Bytes routed" +msgstr "Przesłane bajty" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:469 +msgid "" +"Ceiling in seconds for a learned address in its Set. An address learned from " +"a DNS answer expires with the TTL of that answer, clamped to the range 60 to " +"this value; a polled address uses this value. Keep it well above the poll " +"interval." +msgstr "" +"Wartość maksymalna dla adresu uzyskanego w ramach danego zestawu. Adres " +"pozyskany z odpowiedzi DNS wygasa zgodnie z wartością TTL tej odpowiedzi, " +"przy czym czas ten jest ograniczony zakresem od 60 do podanej wartości; w " +"przypadku adresu uzyskanego drogą odpytywania stosowana jest bezpośrednio ta " +"wartość. Należy zadbać o to, aby była ona znacznie wyższa niż interwał " +"odpytywania." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:167 +msgid "Client MACs this policy applies to, ORed with the addresses above." +msgstr "" +"Adresy MAC klientów, których dotyczy ta polityka – w połączeniu (operacja " +"LUB (OR)) z adresami wymienionymi powyżej." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:179 +msgid "Client Selectors" +msgstr "Selektory klientów" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:162 +msgid "" +"Client addresses or prefixes this policy applies to. Leave empty to apply to " +"every client." +msgstr "" +"Adresy lub prefiksy klientów, których dotyczy ta polityka. Pozostaw puste, " +"aby zastosować ją do wszystkich klientów." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:138 +msgid "Compression pointer in the question" +msgstr "Wskaźnik kompresji w pytaniu" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:448 +msgid "DNS Observer Settings" +msgstr "Ustawienia obserwatora DNS" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:188 +msgid "DNS responses observed on %s since the service started" +msgstr "Odpowiedzi DNS zaobserwowane w %s od momentu uruchomienia usługi" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:455 +msgid "Debug Logging" +msgstr "Rejestrowanie debugowania" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:194 +msgid "Destination Address Files" +msgstr "Pliki adresów docelowych" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:189 +msgid "Destination Addresses" +msgstr "Adresy docelowe" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:184 +msgid "Destination Ports" +msgstr "Porty docelowe" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:190 +msgid "Destination addresses or prefixes to route into this policy." +msgstr "" +"Adresy docelowe lub prefiksy, które mają być kierowane zgodnie z tą polityką." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:206 +msgid "Domain Files" +msgstr "Pliki domeny" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:128 +msgid "Domain is in no policy" +msgstr "Domena nie jest objęta żadną polityką" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:201 +msgid "Domains" +msgstr "Domeny" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:452 +msgid "Enable the shunt service." +msgstr "Włącz usługę shunt." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:451 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:111 +msgid "Enabled" +msgstr "Włączone" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:132 +msgid "Error reply, e.g. NXDOMAIN" +msgstr "Odpowiedź z błędem, np. NXDOMAIN" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:89 +msgid "" +"Evaluated top to bottom - the first policy a packet matches wins. Within one " +"policy the selectors are ANDed: source plus domain means only that client, " +"and only to those domains." +msgstr "" +"Analiza przebiega od góry do dołu – decyduje pierwsza reguła, do której " +"pasuje pakiet. W ramach jednej reguły warunki są łączone za pomocą operatora " +"I (AND): połączenie adresu źródłowego i domeny oznacza, że reguła dotyczy " +"tylko danego klienta oraz wyłącznie wskazanych domen." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:172 +msgid "" +"Everything arriving on these devices, ORed with the client selectors above - " +"a whole guest network or VLAN, in IPv4 and IPv6 alike, whatever prefix it " +"gets. Not the router's own traffic. For domains, add the device to the " +"observed devices as well." +msgstr "" +"Wszystko, co dociera do tych urządzeń – w relacji logicznej LUB (OR) z " +"powyższymi selektorami klientów – stanowi pełną sieć gościnną lub VLAN, " +"zarówno w protokole IPv4, jak i IPv6, niezależnie od przypisanego prefiksu. " +"Nie obejmuje to ruchu generowanego przez sam router. W przypadku domen " +"należy dodatkowo dodać dane urządzenie do listy monitorowanych urządzeń." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:53 +msgid "Expecting a bare file name or an absolute path, without whitespace" +msgstr "" +"Oczekiwano samej nazwy pliku lub ścieżki bezwzględnej, bez znaków odstępu" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:136 +msgid "Expires" +msgstr "Wygasa" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:150 +msgid "Extension header chain too long" +msgstr "Łańcuch nagłówków rozszerzeń zbyt długi" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:147 +msgid "Fall through to the normal uplink" +msgstr "Przejście do standardowego łącza uplink" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:249 +msgid "Fallback" +msgstr "Rezerwa" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:144 +msgid "Fallback Behavior" +msgstr "Zachowanie rezerwowe" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:195 +msgid "" +"Files with one address or prefix per line, IPv4 and IPv6 mixed, for large " +"published ranges. A bare name lives under /tmp/shunt, an absolute path is " +"used as given. After the file changed, refresh below." +msgstr "" +"Pliki zawierające jeden adres lub prefiks w każdym wierszu (z obsługą " +"zarówno IPv4, jak i IPv6), przeznaczone dla dużych, publicznie dostępnych " +"zakresów adresowych. W przypadku podania samej nazwy plik jest lokalizowany " +"w katalogu /tmp/shunt; ścieżka bezwzględna jest traktowana zgodnie z " +"zapisem. Po wprowadzeniu zmian w pliku należy wykonać operację odświeżania " +"opisaną poniżej." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:207 +msgid "" +"Files with one domain pattern per line, for large or community-maintained " +"lists. A bare name lives under /tmp/shunt, an absolute path is used as " +"given. Entries from a file are learned by the DNS observer only, never " +"polled; after the file changed, refresh below." +msgstr "" +"Pliki z jednym wzorcem domeny w wierszu, dla dużych list lub list " +"utrzymywanych przez społeczność. Nazwa bezwzględna znajduje się w katalogu /" +"tmp/shunt, a ścieżka bezwzględna jest używana w podanej postaci. Wpisy z " +"pliku są zapamiętywane tylko przez obserwatora DNS, nigdy nie są odpytywane; " +"po zmianie pliku odśwież poniżej." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:145 +msgid "Frame ends mid-structure" +msgstr "Ramka kończy się w środku struktury" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:447 +msgid "General Settings" +msgstr "Ustawienia ogólne" + +#: applications/luci-app-shunt/root/usr/share/rpcd/acl.d/luci-app-shunt.json:3 +msgid "Grant access to LuCI app shunt" +msgstr "Udziel dostępu LuCI do aplikacji shunt" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:424 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:449 +msgid "Health Tracking" +msgstr "Monitorowanie staniu" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:149 +msgid "IP fragment" +msgstr "Fragment IP" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:213 +msgid "IPv4 Gateway Override" +msgstr "Zastąpienie bramy IPv4" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:219 +msgid "IPv6 Gateway Override" +msgstr "Zastąpienie bramy IPv6" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:148 +msgid "Inconsistent IP header length" +msgstr "Niespójna długość nagłówka IP" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:152 +msgid "Inconsistent UDP length" +msgstr "Niespójna długość UDP" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:244 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:125 +msgid "Interface" +msgstr "Interfejs" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:153 +msgid "Keep Local Traffic" +msgstr "Utrzymaj ruch lokalny" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:419 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:127 +msgid "Learned addresses" +msgstr "Nauczone adresy" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:154 +msgid "Learned addresses (%d)" +msgstr "Nauczone adresy (%d)" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:456 +msgid "" +"Log every observed DNS answer and every set write. Useful for a bug report, " +"noisy in normal operation - on a router running adblock roughly half of all " +"answers are error replies, and each one gets a line." +msgstr "" +"Rejestruj każdą zaobserwowaną odpowiedź DNS oraz każdy zapis w zbiorze " +"danych. Przydatne przy zgłaszaniu błędów, lecz generuje duży szum podczas " +"normalnej pracy – na routerze z włączonym blokowaniem reklam mniej więcej " +"połowa wszystkich odpowiedzi to komunikaty o błędach, a każdy z nich zajmuje " +"osobny wiersz w dzienniku." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:459 +msgid "Manage rp_filter" +msgstr "Zarządzaj rp_filter" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:245 +msgid "Mark" +msgstr "Znacznik" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:468 +msgid "Maximum Entry Lifetime" +msgstr "Maksymalny czas istnienia wpisu" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:136 +msgid "Message ends mid-structure" +msgstr "Komunikat urywa się w środku struktury" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:137 +msgid "Message too long" +msgstr "Komunikat jest za długi" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:141 +msgid "Name has a byte outside a-z 0-9 - _" +msgstr "Nazwa ma bajt spoza zakresu a-z 0-9 - _" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:140 +msgid "Name too long" +msgstr "Nazwa jest za długa" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:146 +msgid "Neither IPv4 nor IPv6" +msgstr "Ani IPv4, ani IPv6" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/logtemplate.js:33 +msgid "No %s related logs yet!" +msgstr "Brak jeszcze dzienników powiązanych z %s!" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:180 +msgid "No client is selected, so every client is covered." +msgstr "Nie wybrano żadnego klienta, więc wszystkie klienty są objęte zakresem." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:63 +msgid "No output" +msgstr "Brak danych wyjściowych" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:237 +msgid "No policy is active." +msgstr "Żadna polityka nie jest aktywna." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:309 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:82 +msgid "No shunt config found!" +msgstr "Nie znaleziono konfiguracji shunt!" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:151 +msgid "Not UDP" +msgstr "Nie UDP" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:133 +msgid "Not a response" +msgstr "Brak odpowiedzi" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:129 +msgid "Not an address query" +msgstr "To nie jest zapytanie dotyczące adresu" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:135 +msgid "Not exactly one question" +msgstr "Nie do końca jedno pytanie" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:128 +msgid "" +"Nothing learned yet. The service fills these from its poll cycle and from " +"observed DNS answers." +msgstr "" +"Na razie nic nie zostało nauczone. Usługa uzupełnia te dane w ramach swojego " +"cyklu odpytywania oraz na podstawie zaobserwowanych odpowiedzi DNS." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:488 +msgid "Observed Devices" +msgstr "Obserwowane urządzenia" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:214 +msgid "" +"Only needed when the gateway discovered from netifd is wrong. Point to point " +"interfaces need no gateway at all." +msgstr "" +"Jest to potrzebne tylko wtedy, gdy brama wykryta przez netifd jest " +"nieprawidłowa. W przypadku interfejsów typu punkt-punkt brama nie jest w " +"ogóle wymagana." + +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:23 +msgid "Overview" +msgstr "Przegląd" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:137 +msgid "Packets routed" +msgstr "Pakiety trasowane" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:483 +msgid "Passive DNS Observer" +msgstr "Pasywny obserwator DNS" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:88 +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:31 +msgid "Policies" +msgstr "Reguły" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:242 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:134 +msgid "Policy" +msgstr "Polityka" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:316 +msgid "" +"Policy based routing by mac, source, destination and domain. For further " +"information please check the %s." +msgstr "" +"Trasowanie oparte na zasadach z uwzględnieniem adresu MAC, źródła, miejsca " +"docelowego oraz domeny. Więcej informacji można znaleźć w %s." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:422 +msgid "Poll" +msgstr "Sondowanie" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:463 +msgid "Poll Interval" +msgstr "Interwał sondowania" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:494 +msgid "Probe Targets" +msgstr "Cele sprawdzania" + +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:47 +msgid "Processing Log" +msgstr "Dziennik przetwarzania" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:178 +msgid "Protocols" +msgstr "Protokoły" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:137 +msgid "Proxy Port" +msgstr "Port proxy" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:484 +msgid "" +"Read DNS answers as they pass the LAN device, whichever resolver produced " +"them. Required for wildcard domains, which cannot be resolved ahead of time." +msgstr "" +"Odczytuj odpowiedzi DNS w momencie ich przechodzenia przez urządzenie w " +"sieci lokalnej, niezależnie od tego, który serwer nazw je wygenerował. Jest " +"to wymagane w przypadku domen typu „wildcard”, których nie da się rozwiązać " +"z wyprzedzeniem." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:142 +msgid "Record length does not fit the type" +msgstr "Długość rekordu nie odpowiada typowi" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:250 +msgid "Refresh" +msgstr "Odśwież" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:242 +msgid "Refresh List Files" +msgstr "Odśwież pliki list" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:68 +msgid "Refresh failed: %s" +msgstr "Odświeżanie nie powiodło się: %s" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:290 +msgid "Rejected settings" +msgstr "Odrzucone ustawienia" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:139 +msgid "Reserved label type" +msgstr "Zarezerwowany typ etykiety" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:179 +msgid "Restrict to tcp, udp or both. A port without a protocol covers both." +msgstr "" +"Ogranicz do protokołu TCP, UDP lub obu. Port określony bez wskazania " +"protokołu obejmuje oba." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:381 +msgid "Reverse path filtering is strict" +msgstr "Filtrowanie ścieżki zwrotnej jest restrykcyjne" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:119 +msgid "Route into a policy interface" +msgstr "Ścieżka do interfejsu polityki" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:117 +msgid "" +"Route the selected traffic into the interface below, bypass it - a bypass " +"policy marks nothing and exempts the traffic from every policy after it - or " +"hand it to a transparent proxy on the router." +msgstr "" +"Trasuj wybrany ruch do poniższego interfejsu, zastosuj obejście (polityka " +"obejścia nie oznacza ruchu żadnym znacznikiem i wyłącza go spod działania " +"wszystkich kolejnych polityk) lub przekaż go do transparentnego proxy na " +"routerze." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:248 +msgid "Routes" +msgstr "Trasy" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:247 +msgid "Rules" +msgstr "Reguły" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:517 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:234 +msgid "Save & Restart" +msgstr "Zapisz i zrestartuj" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:464 +msgid "Seconds between poll cycles." +msgstr "Liczba sekund pomiędzy cyklami odpytywania." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:414 +msgid "Service" +msgstr "Usługa" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:233 +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:39 +msgid "Set Reporting" +msgstr "Raportowanie zestawu" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:460 +msgid "" +"Set rp_filter to 2 on shunt's own policy interfaces, at start and when one " +"comes up." +msgstr "" +"Ustaw parametr rp_filter na 2 dla interfejsów polityki urządzenia typu „shunt" +"” – zarówno podczas uruchamiania, jak i w momencie aktywacji danego " +"interfejsu." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:444 +msgid "Settings" +msgstr "Ustawienia" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:477 +msgid "" +"Should be at least twice the poll interval (%d), otherwise entries expire " +"between cycles." +msgstr "" +"Powinno wynosić co najmniej dwukrotność interwału odpytywania (%d), w " +"przeciwnym razie wpisy wygasną pomiędzy cyklami." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:185 +msgid "" +"Single ports or ranges like 8000-8080, ANDed with the addresses below. Ports " +"alone select that traffic from every client." +msgstr "" +"Pojedyncze porty lub zakresy, takie jak 8000–8080, w połączeniu (operacją " +"logiczną I (AND)) z poniższymi adresami. Same porty powodują wybór ruchu " +"pochodzącego od dowolnego klienta." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:161 +msgid "Source Addresses" +msgstr "Adresy źródłowe" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:171 +msgid "Source Devices" +msgstr "Urządzenia źródłowe" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:166 +msgid "Source MAC Addresses" +msgstr "Źródłowe adresy MAC" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:181 +msgid "Static Destinations" +msgstr "Statyczne miejsca docelowe" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:510 +msgid "Stop" +msgstr "Zatrzymaj" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:383 +msgid "" +"Strict rp_filter will drop shunt's marked traffic on %s. Set rp_filter to 2 " +"on the policy interface, enable rp_filter_manage to have shunt do it, or " +"loosen it box-wide; see the README." +msgstr "" +"Restrykcyjne ustawienie rp_filter spowoduje odrzucenie ruchu oznaczonego " +"jako „shunt” na interfejsie %s. Ustaw rp_filter na wartość 2 na interfejsie " +"polityki, włącz opcję rp_filter_manage, aby mechanizm „shunt” zajął się tym " +"automatycznie, lub złagodź ustawienia rp_filter w skali całego systemu; " +"szczegółowe informacje znajdziesz w pliku README." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:246 +msgid "Table" +msgstr "Tablica" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:489 +msgid "" +"The LAN device the DNS answers cross on their way to the clients, normally " +"br-lan. One entry per network segment, see the README." +msgstr "" +"Urządzenie w sieci LAN, przez które przechodzą odpowiedzi DNS w drodze do " +"klientów – zazwyczaj jest to br-lan. Jeden wpis na segment sieci; " +"szczegółowe informacje znajdują się w pliku README." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:126 +msgid "" +"The device or logical interface this policy routes into. A netifd name is " +"resolved to its device; any other device name is used as entered." +msgstr "" +"Urządzenie lub interfejs logiczny, na które kieruje dana polityka " +"trasowania. Nazwa zdefiniowana w netifd jest tłumaczona na odpowiadające jej " +"urządzenie; każda inna nazwa urządzenia jest używana w postaci, w jakiej " +"została wprowadzona." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:138 +msgid "" +"The port the transparent proxy listens on, for tcp and udp. It must listen " +"on loopback or on the wildcard address. Needs kmod-nft-tproxy." +msgstr "" +"Port, na którym nasłuchuje transparentne proxy dla TCP i UDP. Musi " +"nasłuchiwać na pętli zwrotnej lub adresie wieloznacznym. Wymaga kmod-nft-" +"tproxy." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/logtemplate.js:44 +msgid "The syslog output, pre-filtered for messages related to: %s" +msgstr "" +"Dane wyjściowe dziennika systemowego, wstępnie przefiltrowane pod kątem " +"komunikatów związanych z: %s" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:292 +msgid "" +"These entries were skipped. Everything else was applied - a rejected entry " +"never takes the service down." +msgstr "" +"Te wpisy zostały pominięte. Wszystkie pozostałe zostały wprowadzone – " +"odrzucenie wpisu nigdy nie powoduje przerwy w działaniu usługi." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:143 +msgid "Too many answers" +msgstr "Zbyt wiele odpowiedzi" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:147 +msgid "Too many stacked VLAN tags" +msgstr "Zbyt wiele nałożonych znaczników VLAN" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:154 +msgid "" +"Traffic to networks the routing table already has a route for - your other " +"subnets, your static routes - stays on the normal path instead of entering " +"the policy interface. Turn this off only for a hermetic killswitch." +msgstr "" +"Ruch do sieci, dla których tablica trasowania ma już wyznaczoną trasę – inne " +"podsieci, trasy statyczne – pozostaje na normalnej ścieżce, zamiast " +"przechodzić przez interfejs polityki. Wyłącz tę opcję tylko w przypadku " +"hermetycznego wyłącznika awaryjnego." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:121 +msgid "Transparent proxy on the router" +msgstr "Transparentne proxy na routerze" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:134 +msgid "Truncated response" +msgstr "Skrócona odpowiedź" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:416 +msgid "Version" +msgstr "Wersja" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:145 +msgid "" +"What new traffic does when the interface is down or, for a transparent " +"proxy, when nothing listens on its port." +msgstr "" +"Jaki nowy ruch pojawia się w sytuacji, gdy interfejs jest wyłączony lub – w " +"przypadku transparentnego proxy – gdy na jego porcie nikt nie nasłuchuje." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:236 +msgid "" +"What the nftables Sets currently hold. Counters are reset whenever an entry " +"is refreshed, so they show recent activity, not a lifetime total." +msgstr "" +"Zawartość zestawów w nftables. Liczniki są zerowane przy każdym odświeżeniu " +"wpisu, dzięki czemu odzwierciedlają bieżącą aktywność, a nie łączną sumę od " +"początku istnienia wpisu." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:421 +msgid "across all policies" +msgstr "we wszystkich politykach" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:193 +msgid "all policies" +msgstr "wszystkie polityki" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:216 +msgid "answers the health probes" +msgstr "odpowiada na sprawdzenia stanu" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:202 +msgid "" +"example.com matches that name only, *.example.com matches its subdomains but " +"not the apex - list both to cover both." +msgstr "" +"example.com odpowiada tylko tej nazwie, natomiast *.example.com odpowiada " +"jej subdomenom, ale nie samej domenie głównej – należy wymienić obie " +"pozycje, aby uwzględnić zarówno domenę główną, jak i subdomeny." + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:133 +msgid "interface" +msgstr "interfejs" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:391 +msgid "n/a" +msgstr "n/d" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:91 +msgid "no answer from the backend" +msgstr "brak odpowiedzi z backendu" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:217 +msgid "no answer to the health probes since %s - the fallback applies" +msgstr "" +"brak odpowiedzi na sprawdzenia stanu od %s – zastosowano mechanizm rezerwowy" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:317 +msgid "online documentation" +msgstr "dokumentację online" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:425 +msgid "policy interfaces answering the probes" +msgstr "interfejsy polityki odpowiadające na sprawdzania" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:116 +msgid "ruleset present, service not running" +msgstr "zestaw reguł obecny, usługa nie jest uruchomiona" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:104 +msgid "ruleset re-applied %d time(s)" +msgstr "zestaw reguł zastosowany ponownie %d raz(y)" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:110 +msgid "running, but no ruleset in the kernel" +msgstr "uruchomione, ale w jądrze brak zestawu reguł" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:102 +msgid "running, policy applied" +msgstr "uruchomione, polityka zastosowana" + +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:3 +msgid "shunt" +msgstr "shunt" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:121 +msgid "stopped" +msgstr "zatrzymany" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:397 +msgid "unavailable - ucode-mod-resolv missing" +msgstr "niedostępne – brak ucode-mod-resolv" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:423 +msgid "wildcards are covered by the observer only" +msgstr "symbole wieloznaczne są objęte zakresem działania wyłącznie obserwatora" diff --git a/luci-app-shunt/po/ro/shunt.po b/luci-app-shunt/po/ro/shunt.po new file mode 100644 index 000000000..00cde1573 --- /dev/null +++ b/luci-app-shunt/po/ro/shunt.po @@ -0,0 +1,687 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: ro\n" +"Content-Transfer-Encoding: 8bit\n" +"Last-Translator: Martin Olmer \n" +"Language-Team: Romanian \n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" +"PO-Revision-Date: 2026-11-05 09:05+0000\n" +"X-Generator: Weblate 2026.11.1.dev0\n" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:396 +msgid "%d name(s) every %ds" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:198 +msgid "" +"%d of %d observed responses were not used. That is normal: the observer sees " +"every answer on the network, and only the ones for a domain you routed are " +"of any interest." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:86 +msgid "%d pkt matched" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:28 +msgid "%dh %dm" +msgstr "%dh %dm" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:32 +msgid "%dm %ds" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:34 +msgid "%ds" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:243 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:116 +msgid "Action" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:96 +msgid "Add policy" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:135 +msgid "Address" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:495 +msgid "" +"Addresses that answer ICMP echo, reachable through every policy interface - " +"public resolvers are the usual choice. Every interface a route policy uses " +"is probed through itself every 5 seconds; one that answers no target for " +"three rounds is treated as down and its policies fall back until it answers " +"again. Empty means no tracking, see the README." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:130 +msgid "Answer carried no usable address" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:193 +msgid "Answers used for a policy" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:56 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:42 +msgid "Apply failed: %s" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:148 +msgid "Block the traffic (killswitch)" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:120 +msgid "Bypass - leave the traffic alone" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:138 +msgid "Bytes routed" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:469 +msgid "" +"Ceiling in seconds for a learned address in its Set. An address learned from " +"a DNS answer expires with the TTL of that answer, clamped to the range 60 to " +"this value; a polled address uses this value. Keep it well above the poll " +"interval." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:167 +msgid "Client MACs this policy applies to, ORed with the addresses above." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:179 +msgid "Client Selectors" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:162 +msgid "" +"Client addresses or prefixes this policy applies to. Leave empty to apply to " +"every client." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:138 +msgid "Compression pointer in the question" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:448 +msgid "DNS Observer Settings" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:188 +msgid "DNS responses observed on %s since the service started" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:455 +msgid "Debug Logging" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:194 +msgid "Destination Address Files" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:189 +msgid "Destination Addresses" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:184 +msgid "Destination Ports" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:190 +msgid "Destination addresses or prefixes to route into this policy." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:206 +msgid "Domain Files" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:128 +msgid "Domain is in no policy" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:201 +msgid "Domains" +msgstr "Domenii" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:452 +msgid "Enable the shunt service." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:451 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:111 +msgid "Enabled" +msgstr "Activat" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:132 +msgid "Error reply, e.g. NXDOMAIN" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:89 +msgid "" +"Evaluated top to bottom - the first policy a packet matches wins. Within one " +"policy the selectors are ANDed: source plus domain means only that client, " +"and only to those domains." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:172 +msgid "" +"Everything arriving on these devices, ORed with the client selectors above - " +"a whole guest network or VLAN, in IPv4 and IPv6 alike, whatever prefix it " +"gets. Not the router's own traffic. For domains, add the device to the " +"observed devices as well." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:53 +msgid "Expecting a bare file name or an absolute path, without whitespace" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:136 +msgid "Expires" +msgstr "Expiră" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:150 +msgid "Extension header chain too long" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:147 +msgid "Fall through to the normal uplink" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:249 +msgid "Fallback" +msgstr "Retragere" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:144 +msgid "Fallback Behavior" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:195 +msgid "" +"Files with one address or prefix per line, IPv4 and IPv6 mixed, for large " +"published ranges. A bare name lives under /tmp/shunt, an absolute path is " +"used as given. After the file changed, refresh below." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:207 +msgid "" +"Files with one domain pattern per line, for large or community-maintained " +"lists. A bare name lives under /tmp/shunt, an absolute path is used as " +"given. Entries from a file are learned by the DNS observer only, never " +"polled; after the file changed, refresh below." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:145 +msgid "Frame ends mid-structure" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:447 +msgid "General Settings" +msgstr "" + +#: applications/luci-app-shunt/root/usr/share/rpcd/acl.d/luci-app-shunt.json:3 +msgid "Grant access to LuCI app shunt" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:424 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:449 +msgid "Health Tracking" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:149 +msgid "IP fragment" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:213 +msgid "IPv4 Gateway Override" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:219 +msgid "IPv6 Gateway Override" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:148 +msgid "Inconsistent IP header length" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:152 +msgid "Inconsistent UDP length" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:244 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:125 +msgid "Interface" +msgstr "Interfață" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:153 +msgid "Keep Local Traffic" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:419 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:127 +msgid "Learned addresses" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:154 +msgid "Learned addresses (%d)" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:456 +msgid "" +"Log every observed DNS answer and every set write. Useful for a bug report, " +"noisy in normal operation - on a router running adblock roughly half of all " +"answers are error replies, and each one gets a line." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:459 +msgid "Manage rp_filter" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:245 +msgid "Mark" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:468 +msgid "Maximum Entry Lifetime" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:136 +msgid "Message ends mid-structure" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:137 +msgid "Message too long" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:141 +msgid "Name has a byte outside a-z 0-9 - _" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:140 +msgid "Name too long" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:146 +msgid "Neither IPv4 nor IPv6" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/logtemplate.js:33 +msgid "No %s related logs yet!" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:180 +msgid "No client is selected, so every client is covered." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:63 +msgid "No output" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:237 +msgid "No policy is active." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:309 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:82 +msgid "No shunt config found!" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:151 +msgid "Not UDP" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:133 +msgid "Not a response" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:129 +msgid "Not an address query" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:135 +msgid "Not exactly one question" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:128 +msgid "" +"Nothing learned yet. The service fills these from its poll cycle and from " +"observed DNS answers." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:488 +msgid "Observed Devices" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:214 +msgid "" +"Only needed when the gateway discovered from netifd is wrong. Point to point " +"interfaces need no gateway at all." +msgstr "" + +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:23 +msgid "Overview" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:137 +msgid "Packets routed" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:483 +msgid "Passive DNS Observer" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:88 +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:31 +msgid "Policies" +msgstr "Politici" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:242 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:134 +msgid "Policy" +msgstr "Politică" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:316 +msgid "" +"Policy based routing by mac, source, destination and domain. For further " +"information please check the %s." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:422 +msgid "Poll" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:463 +msgid "Poll Interval" +msgstr "Intervalul de interogare" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:494 +msgid "Probe Targets" +msgstr "" + +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:47 +msgid "Processing Log" +msgstr "Jurnal de procesare" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:178 +msgid "Protocols" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:137 +msgid "Proxy Port" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:484 +msgid "" +"Read DNS answers as they pass the LAN device, whichever resolver produced " +"them. Required for wildcard domains, which cannot be resolved ahead of time." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:142 +msgid "Record length does not fit the type" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:250 +msgid "Refresh" +msgstr "Reîmprospătare" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:242 +msgid "Refresh List Files" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:68 +msgid "Refresh failed: %s" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:290 +msgid "Rejected settings" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:139 +msgid "Reserved label type" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:179 +msgid "Restrict to tcp, udp or both. A port without a protocol covers both." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:381 +msgid "Reverse path filtering is strict" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:119 +msgid "Route into a policy interface" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:117 +msgid "" +"Route the selected traffic into the interface below, bypass it - a bypass " +"policy marks nothing and exempts the traffic from every policy after it - or " +"hand it to a transparent proxy on the router." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:248 +msgid "Routes" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:247 +msgid "Rules" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:517 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:234 +msgid "Save & Restart" +msgstr "Salvare și repornire" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:464 +msgid "Seconds between poll cycles." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:414 +msgid "Service" +msgstr "Serviciul" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:233 +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:39 +msgid "Set Reporting" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:460 +msgid "" +"Set rp_filter to 2 on shunt's own policy interfaces, at start and when one " +"comes up." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:444 +msgid "Settings" +msgstr "Setări" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:477 +msgid "" +"Should be at least twice the poll interval (%d), otherwise entries expire " +"between cycles." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:185 +msgid "" +"Single ports or ranges like 8000-8080, ANDed with the addresses below. Ports " +"alone select that traffic from every client." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:161 +msgid "Source Addresses" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:171 +msgid "Source Devices" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:166 +msgid "Source MAC Addresses" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:181 +msgid "Static Destinations" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:510 +msgid "Stop" +msgstr "Oprire" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:383 +msgid "" +"Strict rp_filter will drop shunt's marked traffic on %s. Set rp_filter to 2 " +"on the policy interface, enable rp_filter_manage to have shunt do it, or " +"loosen it box-wide; see the README." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:246 +msgid "Table" +msgstr "Tabelul" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:489 +msgid "" +"The LAN device the DNS answers cross on their way to the clients, normally " +"br-lan. One entry per network segment, see the README." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:126 +msgid "" +"The device or logical interface this policy routes into. A netifd name is " +"resolved to its device; any other device name is used as entered." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:138 +msgid "" +"The port the transparent proxy listens on, for tcp and udp. It must listen " +"on loopback or on the wildcard address. Needs kmod-nft-tproxy." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/logtemplate.js:44 +msgid "The syslog output, pre-filtered for messages related to: %s" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:292 +msgid "" +"These entries were skipped. Everything else was applied - a rejected entry " +"never takes the service down." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:143 +msgid "Too many answers" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:147 +msgid "Too many stacked VLAN tags" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:154 +msgid "" +"Traffic to networks the routing table already has a route for - your other " +"subnets, your static routes - stays on the normal path instead of entering " +"the policy interface. Turn this off only for a hermetic killswitch." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:121 +msgid "Transparent proxy on the router" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:134 +msgid "Truncated response" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:416 +msgid "Version" +msgstr "Versiune" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:145 +msgid "" +"What new traffic does when the interface is down or, for a transparent " +"proxy, when nothing listens on its port." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:236 +msgid "" +"What the nftables Sets currently hold. Counters are reset whenever an entry " +"is refreshed, so they show recent activity, not a lifetime total." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:421 +msgid "across all policies" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:193 +msgid "all policies" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:216 +msgid "answers the health probes" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:202 +msgid "" +"example.com matches that name only, *.example.com matches its subdomains but " +"not the apex - list both to cover both." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:133 +msgid "interface" +msgstr "interfață" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:391 +msgid "n/a" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:91 +msgid "no answer from the backend" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:217 +msgid "no answer to the health probes since %s - the fallback applies" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:317 +msgid "online documentation" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:425 +msgid "policy interfaces answering the probes" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:116 +msgid "ruleset present, service not running" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:104 +msgid "ruleset re-applied %d time(s)" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:110 +msgid "running, but no ruleset in the kernel" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:102 +msgid "running, policy applied" +msgstr "" + +#: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:3 +msgid "shunt" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:121 +msgid "stopped" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:397 +msgid "unavailable - ucode-mod-resolv missing" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:423 +msgid "wildcards are covered by the observer only" +msgstr "" diff --git a/luci-app-shunt/po/templates/shunt.pot b/luci-app-shunt/po/templates/shunt.pot index a96254f8d..6624e02de 100644 --- a/luci-app-shunt/po/templates/shunt.pot +++ b/luci-app-shunt/po/templates/shunt.pot @@ -1,7 +1,7 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:359 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:396 msgid "%d name(s) every %ds" msgstr "" @@ -12,35 +12,44 @@ msgid "" "of any interest." msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:85 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:86 msgid "%d pkt matched" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:27 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:28 msgid "%dh %dm" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:31 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:32 msgid "%dm %ds" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:33 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:34 msgid "%ds" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:211 -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:107 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:243 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:116 msgid "Action" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:87 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:96 msgid "Add policy" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:134 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:135 msgid "Address" msgstr "" +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:495 +msgid "" +"Addresses that answer ICMP echo, reachable through every policy interface - " +"public resolvers are the usual choice. Every interface a route policy uses " +"is probed through itself every 5 seconds; one that answers no target for " +"three rounds is treated as down and its policies fall back until it answers " +"again. Empty means no tracking, see the README." +msgstr "" + #: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:130 msgid "Answer carried no usable address" msgstr "" @@ -50,23 +59,23 @@ msgid "Answers used for a policy" msgstr "" #: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:56 -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:41 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:42 msgid "Apply failed: %s" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:139 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:148 msgid "Block the traffic (killswitch)" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:111 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:120 msgid "Bypass - leave the traffic alone" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:137 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:138 msgid "Bytes routed" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:428 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:469 msgid "" "Ceiling in seconds for a learned address in its Set. An address learned from " "a DNS answer expires with the TTL of that answer, clamped to the range 60 to " @@ -74,15 +83,15 @@ msgid "" "interval." msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:158 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:167 msgid "Client MACs this policy applies to, ORed with the addresses above." msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:178 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:179 msgid "Client Selectors" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:153 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:162 msgid "" "Client addresses or prefixes this policy applies to. Leave empty to apply to " "every client." @@ -92,7 +101,7 @@ msgstr "" msgid "Compression pointer in the question" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:408 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:448 msgid "DNS Observer Settings" msgstr "" @@ -100,23 +109,27 @@ msgstr "" msgid "DNS responses observed on %s since the service started" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:414 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:455 msgid "Debug Logging" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:173 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:194 +msgid "Destination Address Files" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:189 msgid "Destination Addresses" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:168 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:184 msgid "Destination Ports" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:174 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:190 msgid "Destination addresses or prefixes to route into this policy." msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:183 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:206 msgid "Domain Files" msgstr "" @@ -124,16 +137,16 @@ msgstr "" msgid "Domain is in no policy" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:178 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:201 msgid "Domains" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:411 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:452 msgid "Enable the shunt service." msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:410 -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:102 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:451 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:111 msgid "Enabled" msgstr "" @@ -141,18 +154,26 @@ msgstr "" msgid "Error reply, e.g. NXDOMAIN" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:80 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:89 msgid "" "Evaluated top to bottom - the first policy a packet matches wins. Within one " "policy the selectors are ANDed: source plus domain means only that client, " "and only to those domains." msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:190 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:172 +msgid "" +"Everything arriving on these devices, ORed with the client selectors above - " +"a whole guest network or VLAN, in IPv4 and IPv6 alike, whatever prefix it " +"gets. Not the router's own traffic. For domains, add the device to the " +"observed devices as well." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:53 msgid "Expecting a bare file name or an absolute path, without whitespace" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:135 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:136 msgid "Expires" msgstr "" @@ -160,19 +181,26 @@ msgstr "" msgid "Extension header chain too long" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:138 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:147 msgid "Fall through to the normal uplink" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:217 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:249 msgid "Fallback" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:135 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:144 msgid "Fallback Behavior" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:184 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:195 +msgid "" +"Files with one address or prefix per line, IPv4 and IPv6 mixed, for large " +"published ranges. A bare name lives under /tmp/shunt, an absolute path is " +"used as given. After the file changed, refresh below." +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:207 msgid "" "Files with one domain pattern per line, for large or community-maintained " "lists. A bare name lives under /tmp/shunt, an absolute path is used as " @@ -184,7 +212,7 @@ msgstr "" msgid "Frame ends mid-structure" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:407 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:447 msgid "General Settings" msgstr "" @@ -192,15 +220,20 @@ msgstr "" msgid "Grant access to LuCI app shunt" msgstr "" +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:424 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:449 +msgid "Health Tracking" +msgstr "" + #: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:149 msgid "IP fragment" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:195 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:213 msgid "IPv4 Gateway Override" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:201 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:219 msgid "IPv6 Gateway Override" msgstr "" @@ -212,40 +245,40 @@ msgstr "" msgid "Inconsistent UDP length" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:212 -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:116 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:244 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:125 msgid "Interface" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:144 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:153 msgid "Keep Local Traffic" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:381 -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:126 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:419 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:127 msgid "Learned addresses" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:153 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:154 msgid "Learned addresses (%d)" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:415 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:456 msgid "" "Log every observed DNS answer and every set write. Useful for a bug report, " "noisy in normal operation - on a router running adblock roughly half of all " "answers are error replies, and each one gets a line." msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:418 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:459 msgid "Manage rp_filter" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:213 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:245 msgid "Mark" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:427 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:468 msgid "Maximum Entry Lifetime" msgstr "" @@ -273,20 +306,20 @@ msgstr "" msgid "No %s related logs yet!" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:179 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:180 msgid "No client is selected, so every client is covered." msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:54 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:63 msgid "No output" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:205 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:237 msgid "No policy is active." msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:272 -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:73 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:309 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:82 msgid "No shunt config found!" msgstr "" @@ -306,17 +339,17 @@ msgstr "" msgid "Not exactly one question" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:127 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:128 msgid "" "Nothing learned yet. The service fills these from its poll cycle and from " "observed DNS answers." msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:447 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:488 msgid "Observed Devices" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:196 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:214 msgid "" "Only needed when the gateway discovered from netifd is wrong. Point to point " "interfaces need no gateway at all." @@ -326,51 +359,55 @@ msgstr "" msgid "Overview" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:136 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:137 msgid "Packets routed" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:442 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:483 msgid "Passive DNS Observer" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:79 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:88 #: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:31 msgid "Policies" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:210 -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:133 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:242 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:134 msgid "Policy" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:279 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:316 msgid "" "Policy based routing by mac, source, destination and domain. For further " "information please check the %s." msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:384 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:422 msgid "Poll" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:422 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:463 msgid "Poll Interval" msgstr "" +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:494 +msgid "Probe Targets" +msgstr "" + #: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:47 msgid "Processing Log" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:162 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:178 msgid "Protocols" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:128 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:137 msgid "Proxy Port" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:443 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:484 msgid "" "Read DNS answers as they pass the LAN device, whichever resolver produced " "them. Required for wildcard domains, which cannot be resolved ahead of time." @@ -380,19 +417,19 @@ msgstr "" msgid "Record length does not fit the type" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:249 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:250 msgid "Refresh" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:224 -msgid "Refresh Domain Files" +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:242 +msgid "Refresh List Files" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:59 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:68 msgid "Refresh failed: %s" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:253 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:290 msgid "Rejected settings" msgstr "" @@ -400,111 +437,117 @@ msgstr "" msgid "Reserved label type" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:163 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:179 msgid "Restrict to tcp, udp or both. A port without a protocol covers both." msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:344 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:381 msgid "Reverse path filtering is strict" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:110 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:119 msgid "Route into a policy interface" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:108 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:117 msgid "" "Route the selected traffic into the interface below, bypass it - a bypass " "policy marks nothing and exempts the traffic from every policy after it - or " "hand it to a transparent proxy on the router." msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:216 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:248 msgid "Routes" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:215 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:247 msgid "Rules" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:471 -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:216 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:517 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:234 msgid "Save & Restart" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:423 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:464 msgid "Seconds between poll cycles." msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:376 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:414 msgid "Service" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:232 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:233 #: applications/luci-app-shunt/root/usr/share/luci/menu.d/luci-app-shunt.json:39 msgid "Set Reporting" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:419 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:460 msgid "" "Set rp_filter to 2 on shunt's own policy interfaces, at start and when one " "comes up." msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:404 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:444 msgid "Settings" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:436 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:477 msgid "" "Should be at least twice the poll interval (%d), otherwise entries expire " "between cycles." msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:169 -msgid "Single ports or ranges like 8000-8080, ANDed with the addresses below." +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:185 +msgid "" +"Single ports or ranges like 8000-8080, ANDed with the addresses below. Ports " +"alone select that traffic from every client." msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:152 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:161 msgid "Source Addresses" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:157 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:171 +msgid "Source Devices" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:166 msgid "Source MAC Addresses" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:180 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:181 msgid "Static Destinations" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:464 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:510 msgid "Stop" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:346 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:383 msgid "" "Strict rp_filter will drop shunt's marked traffic on %s. Set rp_filter to 2 " "on the policy interface, enable rp_filter_manage to have shunt do it, or " "loosen it box-wide; see the README." msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:214 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:246 msgid "Table" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:448 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:489 msgid "" "The LAN device the DNS answers cross on their way to the clients, normally " "br-lan. One entry per network segment, see the README." msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:117 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:126 msgid "" "The device or logical interface this policy routes into. A netifd name is " "resolved to its device; any other device name is used as entered." msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:129 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:138 msgid "" "The port the transparent proxy listens on, for tcp and udp. It must listen " "on loopback or on the wildcard address. Needs kmod-nft-tproxy." @@ -514,7 +557,7 @@ msgstr "" msgid "The syslog output, pre-filtered for messages related to: %s" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:255 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:292 msgid "" "These entries were skipped. Everything else was applied - a rejected entry " "never takes the service down." @@ -528,14 +571,14 @@ msgstr "" msgid "Too many stacked VLAN tags" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:145 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:154 msgid "" "Traffic to networks the routing table already has a route for - your other " "subnets, your static routes - stays on the normal path instead of entering " "the policy interface. Turn this off only for a hermetic killswitch." msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:112 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:121 msgid "Transparent proxy on the router" msgstr "" @@ -543,41 +586,45 @@ msgstr "" msgid "Truncated response" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:378 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:416 msgid "Version" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:136 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:145 msgid "" "What new traffic does when the interface is down or, for a transparent " "proxy, when nothing listens on its port." msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:235 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:236 msgid "" "What the nftables Sets currently hold. Counters are reset whenever an entry " "is refreshed, so they show recent activity, not a lifetime total." msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:383 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:421 msgid "across all policies" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:192 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/setreport.js:193 msgid "all policies" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:179 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:216 +msgid "answers the health probes" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:202 msgid "" "example.com matches that name only, *.example.com matches its subdomains but " "not the apex - list both to cover both." msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:124 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/policies.js:133 msgid "interface" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:354 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:391 msgid "n/a" msgstr "" @@ -585,10 +632,18 @@ msgstr "" msgid "no answer from the backend" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:280 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:217 +msgid "no answer to the health probes since %s - the fallback applies" +msgstr "" + +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:317 msgid "online documentation" msgstr "" +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:425 +msgid "policy interfaces answering the probes" +msgstr "" + #: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:116 msgid "ruleset present, service not running" msgstr "" @@ -613,10 +668,10 @@ msgstr "" msgid "stopped" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:360 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:397 msgid "unavailable - ucode-mod-resolv missing" msgstr "" -#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:385 +#: applications/luci-app-shunt/htdocs/luci-static/resources/view/shunt/overview.js:423 msgid "wildcards are covered by the observer only" msgstr "" diff --git a/luci-app-shunt/root/usr/share/rpcd/acl.d/luci-app-shunt.json b/luci-app-shunt/root/usr/share/rpcd/acl.d/luci-app-shunt.json index c217953a2..ce8b53de1 100644 --- a/luci-app-shunt/root/usr/share/rpcd/acl.d/luci-app-shunt.json +++ b/luci-app-shunt/root/usr/share/rpcd/acl.d/luci-app-shunt.json @@ -2,20 +2,6 @@ "luci-app-shunt": { "description": "Grant access to LuCI app shunt", "write": { - "uci": [ - "shunt" - ] - }, - "read": { - "ubus": { - "luci.shunt": [ - "status", - "sets" - ], - "rpc-sys": [ - "packagelist" - ] - }, "uci": [ "shunt" ], @@ -29,19 +15,35 @@ "/etc/init.d/shunt restart": [ "exec" ], - "/etc/init.d/shunt running": [ - "exec" - ], "/usr/sbin/shunt refresh": [ "exec" ] + } + }, + "read": { + "ubus": { + "luci.shunt": [ + "status", + "sets" + ], + "rpc-sys": [ + "packagelist" + ], + "log": [ + "read" + ] + }, + "uci": [ + "shunt" + ], + "file": { + "/etc/init.d/shunt running": [ + "exec" + ] }, "cgi-io": [ "exec" - ], - "log": [ - "read" ] } } -} \ No newline at end of file +} diff --git a/luci-app-smartdns/Makefile b/luci-app-smartdns/Makefile index 43649ec73..38a1605fc 100644 --- a/luci-app-smartdns/Makefile +++ b/luci-app-smartdns/Makefile @@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk PKG_LICENSE:=GPL-3.0-or-later PKG_MAINTAINER:=Nick Peng PKG_VERSION:=1.2025.47.2 -PKG_RELEASE:=15 +PKG_RELEASE:=16 LUCI_TITLE:=LuCI for smartdns LUCI_DESCRIPTION:=Provides Luci for smartdns diff --git a/luci-app-smartdns/po/de/smartdns.po b/luci-app-smartdns/po/de/smartdns.po index f558e93ab..04a10829b 100644 --- a/luci-app-smartdns/po/de/smartdns.po +++ b/luci-app-smartdns/po/de/smartdns.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"PO-Revision-Date: 2026-10-12 11:12+0000\n" +"PO-Revision-Date: 2026-10-27 05:51+0000\n" "Last-Translator: Werner Schleifer " "\n" "Language-Team: German \n" +"PO-Revision-Date: 2026-11-06 10:18+0000\n" +"Last-Translator: Martin Olmer \n" "Language-Team: French \n" "Language: fr\n" @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 5.17.1\n" +"X-Generator: Weblate 2026.11.2.dev0\n" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:791 msgid "Additional Args for upstream dns servers" @@ -486,7 +486,7 @@ msgstr "" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1013 msgid "No" -msgstr "" +msgstr "Non" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:281 msgid "No Speed IPset Name" @@ -504,7 +504,7 @@ msgstr "" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:999 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1024 msgid "None" -msgstr "" +msgstr "Rien" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:783 msgid "Only socks5 proxy support udp server." @@ -566,7 +566,7 @@ msgstr "" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1173 msgid "Restart" -msgstr "" +msgstr "Redémarrer" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1164 msgid "Restart Service" @@ -627,7 +627,7 @@ msgstr "" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:127 msgid "Settings" -msgstr "" +msgstr "Paramètres" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:401 msgid "Skip Address Rules" @@ -847,7 +847,7 @@ msgstr "" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1012 msgid "Yes" -msgstr "" +msgstr "Oui" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:171 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:212 @@ -855,7 +855,7 @@ msgstr "" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1011 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1019 msgid "default" -msgstr "" +msgstr "par défaut" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:554 msgid "domain list (/etc/smartdns/domain-set)" diff --git a/luci-app-smartdns/po/hu/smartdns.po b/luci-app-smartdns/po/hu/smartdns.po index ce1b7d41b..67588d0ee 100644 --- a/luci-app-smartdns/po/hu/smartdns.po +++ b/luci-app-smartdns/po/hu/smartdns.po @@ -1,8 +1,9 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2026-08-05 16:35+0000\n" -"Last-Translator: Granilla Péter \n" +"PO-Revision-Date: 2026-11-05 07:54+0000\n" +"Last-Translator: Kövecses József " +"\n" "Language-Team: Hungarian \n" "Language: hu\n" @@ -10,34 +11,36 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2026.8.1.dev0\n" +"X-Generator: Weblate 2026.11.1.dev0\n" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:791 msgid "Additional Args for upstream dns servers" -msgstr "" +msgstr "További argumentumok az upstream DNS-szerverekhez" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:885 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1089 msgid "" "Additional Flags for rules, read help on domain-rule for more information." msgstr "" +"További jelzők a szabályokhoz; további információért olvassa el a domain-" +"rule súgóját." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:884 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1088 msgid "Additional Rule Flag" -msgstr "" +msgstr "További szabályjelző" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:345 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:478 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:790 msgid "Additional Server Args" -msgstr "" +msgstr "További szerverargumentumok" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:346 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:479 msgid "" "Additional server args, refer to the help description of the bind option." -msgstr "" +msgstr "További szerverargumentumok; lásd a bind opció súgóleírását." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:131 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:638 @@ -49,109 +52,112 @@ msgid "" "Attempts to serve old responses from cache with a TTL of 0 in the response " "without waiting for the actual resolution to finish." msgstr "" +"Régi válaszok kiszolgálásának megkísérlése a gyorsítótárból 0 TTL-lel, a " +"tényleges feloldás befejezésének megvárása nélkül." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:160 msgid "Automatically Set Dnsmasq" -msgstr "" +msgstr "Dnsmasq automatikus beállítása" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:160 msgid "Automatically set as upstream of dnsmasq when port changes." -msgstr "" +msgstr "Automatikus beállítás a dnsmasq upstreamjeként a port módosításakor." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:228 msgid "Bind Device" -msgstr "" +msgstr "Eszköz kötése" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:233 msgid "Bind Device Name" -msgstr "" +msgstr "Kötött eszköz neve" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:997 msgid "Block domain" -msgstr "" +msgstr "Tartomány tiltása" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:997 msgid "Block domain." -msgstr "" +msgstr "Tartomány tiltása." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:261 msgid "Cache Persist" -msgstr "" +msgstr "Tartós gyorsítótár" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:257 msgid "Cache Size" -msgstr "" +msgstr "Gyorsítótár mérete" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:120 msgid "Collecting data ..." -msgstr "" +msgstr "Adatok gyűjtése ..." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1099 msgid "" "Configure IP blacklists that will be filtered from the results of specific " "DNS server." msgstr "" +"Az adott DNS-szerver eredményeiből kiszűrendő IP-feketelisták beállítása." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:928 msgid "Configure block domain list." -msgstr "" +msgstr "A tiltandó tartományok listájának beállítása." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:949 msgid "Configure domain rule list." -msgstr "" +msgstr "Tartományszabálylista beállítása." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:899 msgid "Configure forwarding domain name list." -msgstr "" +msgstr "A továbbítandó tartománynevek listájának beállítása." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:136 msgid "Custom Settings" -msgstr "" +msgstr "Egyéni beállítások" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:804 msgid "DNS Block Setting" -msgstr "" +msgstr "DNS-tiltási beállítás" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:803 msgid "DNS Forwarding Setting" -msgstr "" +msgstr "DNS-továbbítási beállítás" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:647 msgid "DNS Server Name" -msgstr "" +msgstr "DNS-szerver neve" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:674 msgid "DNS Server group" -msgstr "" +msgstr "DNS-szerver csoportja" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:812 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:966 msgid "DNS Server group belongs to, such as office, home." -msgstr "" +msgstr "A DNS-szerver csoportja, például office, home." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:650 msgid "DNS Server ip" -msgstr "" +msgstr "DNS-szerver IP-címe" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:655 msgid "DNS Server port" -msgstr "" +msgstr "DNS-szerver portja" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:664 msgid "DNS Server type" -msgstr "" +msgstr "DNS-szerver típusa" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:257 msgid "DNS domain result cache size" -msgstr "" +msgstr "A DNS-tartományeredmények gyorsítótárának mérete" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:486 msgid "DNS64" -msgstr "" +msgstr "DNS64" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:133 msgid "DNS64 Server Settings" -msgstr "" +msgstr "DNS64-szerver beállításai" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:559 msgid "Description" @@ -159,91 +165,93 @@ msgstr "Leírás" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:75 msgid "Dnsmasq Forwarded To Smartdns Failure" -msgstr "" +msgstr "A Dnsmasq smartdns felé történő továbbítása sikertelen" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:718 msgid "Do not check certificate." -msgstr "" +msgstr "Ne ellenőrizze a tanúsítványt." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:396 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:837 msgid "Do not check speed." -msgstr "" +msgstr "Nincs sebességellenőrzés." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:806 msgid "Domain Address" -msgstr "" +msgstr "Tartomány címe" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:899 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:928 msgid "Domain List" -msgstr "" +msgstr "Tartománylista" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:890 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:920 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:990 msgid "Domain List File" -msgstr "" +msgstr "Tartománylista-fájl" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:805 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:948 msgid "Domain Rule List" -msgstr "" +msgstr "Tartományszabálylista" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:964 msgid "Domain Rule Name" -msgstr "" +msgstr "Tartományszabály neve" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:799 msgid "Domain Rules" -msgstr "" +msgstr "Tartományszabályok" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:799 msgid "Domain Rules Settings" -msgstr "" +msgstr "Tartományszabályok beállításai" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:323 msgid "Domain TTL" -msgstr "" +msgstr "Tartomány TTL" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:335 msgid "Domain TTL Max" -msgstr "" +msgstr "Tartomány TTL maximum" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:327 msgid "Domain TTL Min" -msgstr "" +msgstr "Tartomány TTL minimum" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:245 msgid "Domain prefetch" -msgstr "" +msgstr "Tartomány-előbetöltés" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1158 msgid "Donate" -msgstr "" +msgstr "Támogatás" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1157 msgid "Donate to smartdns" -msgstr "" +msgstr "A smartdns támogatása" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:525 msgid "Download Files" -msgstr "" +msgstr "Fájlok letöltése" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:134 msgid "Download Files Setting" -msgstr "" +msgstr "Fájlletöltési beállítások" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:134 msgid "" "Download domain list files for domain-rule and include config files, please " "refresh the page after download to take effect." msgstr "" +"A domain-rule és include beállítófájlokhoz tartozó tartománylista-fájlok " +"letöltése; a letöltés után az érvénybe lépéshez frissítse az oldalt." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:239 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1006 msgid "Dual-stack IP Selection" -msgstr "" +msgstr "Kettős veremű IP-kiválasztás" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:141 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:370 @@ -254,91 +262,92 @@ msgstr "Engedélyezés" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:494 msgid "Enable Auto Update" -msgstr "" +msgstr "Automatikus frissítés engedélyezése" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:240 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1007 msgid "Enable IP selection between IPV4 and IPV6" -msgstr "" +msgstr "IP-kiválasztás engedélyezése IPV4 és IPV6 között" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:223 msgid "Enable IPV6 DNS Server" -msgstr "" +msgstr "IPV6 DNS-szerver engedélyezése" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:218 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:383 msgid "Enable TCP DNS Server" -msgstr "" +msgstr "TCP DNS-szerver engedélyezése" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:494 msgid "Enable daily auto update." -msgstr "" +msgstr "Napi automatikus frissítés engedélyezése." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:246 msgid "Enable domain prefetch, accelerate domain response speed." msgstr "" +"A tartományok előbetöltésének engedélyezése a válaszsebesség növelésére." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:371 msgid "Enable or disable second DNS server." -msgstr "" +msgstr "A második DNS-szerver engedélyezése vagy letiltása." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:141 msgid "Enable or disable smartdns server" -msgstr "" +msgstr "A smartdns szerver engedélyezése vagy letiltása" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:693 msgid "Exclude DNS Server from default group." -msgstr "" +msgstr "A DNS-szerver kizárása az alapértelmezett csoportból." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:693 msgid "Exclude Default Group" -msgstr "" +msgstr "Kizárás az alapértelmezett csoportból" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:214 msgid "Fastest IP" -msgstr "" +msgstr "Leggyorsabb IP" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:215 msgid "Fastest Response" -msgstr "" +msgstr "Leggyorsabb válasz" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:534 msgid "File Name" -msgstr "" +msgstr "Fájlnév" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:553 msgid "File Type" -msgstr "" +msgstr "Fájltípus" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:701 msgid "Filtering IP with blacklist" -msgstr "" +msgstr "IP-címek szűrése feketelistával" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:213 msgid "First Ping" -msgstr "" +msgstr "Első ping" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:271 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:435 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:841 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1055 msgid "Force AAAA SOA" -msgstr "" +msgstr "AAAA SOA kényszerítése" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:271 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:435 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:841 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1055 msgid "Force AAAA SOA." -msgstr "" +msgstr "AAAA SOA kényszerítése." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:276 msgid "Force HTTPS SOA" -msgstr "" +msgstr "HTTPS SOA kényszerítése" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:276 msgid "Force HTTPS SOA." -msgstr "" +msgstr "HTTPS SOA kényszerítése." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:127 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:130 @@ -348,13 +357,15 @@ msgstr "Általános beállítások" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:598 msgid "Generate Coredump" -msgstr "" +msgstr "Coredump előállítása" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:599 msgid "" "Generate Coredump file when smartdns crash, coredump file is located at /tmp/" "smartdns.xxx.core." msgstr "" +"Coredump fájl előállítása a smartdns összeomlásakor; a coredump fájl helye: /" +"tmp/smartdns.xxx.core." #: applications/luci-app-smartdns/root/usr/share/rpcd/acl.d/luci-app-smartdns.json:3 msgid "Grant access to LuCI app smartdns" @@ -362,139 +373,145 @@ msgstr "Hozzáférés engedélyezése a smartdns LuCI alkalmazáshoz" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:736 msgid "HTTP Host" -msgstr "" +msgstr "HTTP-gép (Host)" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:807 msgid "IP Blacklist" -msgstr "" +msgstr "IP-feketelista" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:700 msgid "IP Blacklist Filtering" -msgstr "" +msgstr "IP-feketelista szűrés" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:223 msgid "IPV6 Server" -msgstr "" +msgstr "IPV6-szerver" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:439 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:845 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1061 msgid "IPset Name" -msgstr "" +msgstr "IPset-név" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:439 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:845 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1061 msgid "IPset name." -msgstr "" +msgstr "IPset-név." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1137 msgid "If you like this software, please buy me a cup of coffee." -msgstr "" +msgstr "Ha tetszik ez a szoftver, kérjük, hívjon meg egy kávéra." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:352 msgid "Include Config Files
/etc/smartdns/conf.d" -msgstr "" +msgstr "Beállítófájlok beillesztése
/etc/smartdns/conf.d" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:353 msgid "" "Include other config files from /etc/smartdns/conf.d or custom path, can be " "downloaded from the download page." msgstr "" +"Más beállítófájlok beillesztése az /etc/smartdns/conf.d könyvtárból vagy " +"egyéni elérési útról; ezek a letöltési oldalon tölthetők le." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:282 msgid "Ipset name, Add domain result to ipset when speed check fails." msgstr "" +"IPset-név; a tartományeredmény hozzáadása az ipsethez, ha a " +"sebességellenőrzés sikertelen." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:526 msgid "List of files to download." -msgstr "" +msgstr "A letöltendő fájlok listája." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:228 msgid "Listen only on the specified interfaces." -msgstr "" +msgstr "Figyelés csak a megadott interfészeken." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:152 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:376 msgid "Local Port" -msgstr "" +msgstr "Helyi port" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:623 msgid "Log File" -msgstr "" +msgstr "Naplófájl" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:607 msgid "Log Level" -msgstr "" +msgstr "Naplózási szint" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:619 msgid "Log Number" -msgstr "" +msgstr "Naplófájlok száma" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:603 msgid "Log Size" -msgstr "" +msgstr "Napló mérete" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:756 msgid "Marking Packets" -msgstr "" +msgstr "Csomagok megjelölése" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:336 msgid "Maximum TTL for all domain result." -msgstr "" +msgstr "Legnagyobb TTL az összes tartományeredményhez." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:328 msgid "Minimum TTL for all domain result." -msgstr "" +msgstr "Legkisebb TTL az összes tartományeredményhez." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:458 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:864 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1067 msgid "NFTset Name" -msgstr "" +msgstr "NFTset-név" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:315 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:470 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:876 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1080 msgid "NFTset name format error, format: [#[4|6]:[family#table#set]]" -msgstr "" +msgstr "NFTset-névformátum hiba, formátum: [#[4|6]:[family#table#set]]" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:458 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:864 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1067 msgid "NFTset name, format: [#[4|6]:[family#table#set]]" -msgstr "" +msgstr "NFTset-név, formátum: [#[4|6]:[family#table#set]]" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:65 msgid "NOT RUNNING" -msgstr "" +msgstr "NEM FUT" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:233 msgid "Name of device name listen on." -msgstr "" +msgstr "Az eszköz neve, amelyen figyel." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:303 msgid "" "Nftset name, Add domain result to nftset when speed check fails, format: " "[#[4|6]:[family#table#set]]" msgstr "" +"NFTset-név; a tartományeredmény hozzáadása az nftsethez, ha a " +"sebességellenőrzés sikertelen, formátum: [#[4|6]:[family#table#set]]" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1013 msgid "No" -msgstr "" +msgstr "Nem" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:281 msgid "No Speed IPset Name" -msgstr "" +msgstr "IPset-név sikertelen sebességmérés esetén" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:302 msgid "No Speed NFTset Name" -msgstr "" +msgstr "NFTset-név sikertelen sebességmérés esetén" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:717 msgid "No check certificate" -msgstr "" +msgstr "Tanúsítvány ellenőrzése nélkül" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:176 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:999 @@ -504,32 +521,34 @@ msgstr "Nincs" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:783 msgid "Only socks5 proxy support udp server." -msgstr "" +msgstr "Csak a socks5 proxy támogatja az UDP-szervert." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:779 msgid "Please set proxy server first." -msgstr "" +msgstr "Kérjük, előbb állítsa be a proxyszervert." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:566 msgid "Proxy Server" -msgstr "Proxy-kiszolgáló" +msgstr "Proxy-szerver" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:135 msgid "Proxy Server Settings" -msgstr "" +msgstr "Proxyszerver beállításai" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:566 msgid "Proxy Server URL, format: [socks5|http]://user:pass@ip:port." -msgstr "" +msgstr "Proxyszerver URL-je, formátum: [socks5|http]://user:pass@ip:port." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:574 msgid "" "Proxy server URL format error, format: [socks5|http]://user:pass@ip:port." msgstr "" +"Proxyszerver URL-formátum hiba, formátum: [socks5|http]://user:pass@ip:port." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:389 msgid "Query DNS through specific dns server group, such as office, home." msgstr "" +"DNS-lekérdezés adott DNS-szervercsoporton keresztül, például office, home." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:63 msgid "RUNNING" @@ -537,190 +556,202 @@ msgstr "FUT" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:340 msgid "Reply Domain TTL Max" -msgstr "" +msgstr "Válasz tartomány TTL maximum" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:341 msgid "Reply maximum TTL for all domain result." -msgstr "" +msgstr "Legnagyobb válasz-TTL az összes tartományeredményhez." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1149 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1150 msgid "Report bugs" -msgstr "" +msgstr "Hibák bejelentése" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:266 msgid "Resolve Local Hostnames" -msgstr "" +msgstr "Helyi gépnevek feloldása" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:266 msgid "Resolve local hostnames by reading Dnsmasq lease file." -msgstr "" +msgstr "Helyi gépnevek feloldása a Dnsmasq bérletfájljának beolvasásával." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:208 msgid "Response Mode" -msgstr "" +msgstr "Válaszmód" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1173 msgid "Restart" -msgstr "" +msgstr "Újraindítás" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1164 msgid "Restart Service" -msgstr "" +msgstr "Szolgáltatás újraindítása" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:132 msgid "Second Server Settings" -msgstr "" +msgstr "Második szerver beállításai" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:251 msgid "Serve expired" -msgstr "" +msgstr "Lejárt válaszok kiszolgálása" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:388 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:812 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:966 msgid "Server Group" -msgstr "" +msgstr "Szervercsoport" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:832 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:986 msgid "Server Group %s not exists" -msgstr "" +msgstr "A(z) %s szervercsoport nem létezik" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:146 msgid "Server Name" -msgstr "" +msgstr "Szerver neve" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:806 msgid "Set Specific domain ip address." -msgstr "" +msgstr "Adott tartomány IP-címének beállítása." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:805 msgid "Set Specific domain rule list." -msgstr "" +msgstr "Adott tartományszabálylista beállítása." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:807 msgid "Set Specific ip blacklist." -msgstr "" +msgstr "Adott IP-feketelista beállítása." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:708 msgid "Set TLS hostname to verify." -msgstr "" +msgstr "Az ellenőrizendő TLS-gépnév beállítása." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:757 msgid "Set mark on packets." -msgstr "" +msgstr "Jelölés beállítása a csomagokon." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:737 msgid "" "Set the HTTP host used for the query. Use this parameter when the host of " "the URL address is an IP address." msgstr "" +"A lekérdezéshez használt HTTP-gép (Host) beállítása. Akkor használja ezt a " +"paramétert, ha az URL-cím gépe IP-cím." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:727 msgid "Sets the server name indication for query. '-' for disable SNI name." msgstr "" +"A lekérdezéshez használt server name indication (SNI) beállítása. Az SNI-név " +"letiltásához adja meg: '-'." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:127 msgid "Settings" -msgstr "" +msgstr "Beállítások" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:401 msgid "Skip Address Rules" -msgstr "" +msgstr "Címszabályok kihagyása" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:430 msgid "Skip Cache" -msgstr "" +msgstr "Gyorsítótár kihagyása" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:430 msgid "Skip Cache." -msgstr "" +msgstr "Gyorsítótár kihagyása." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:424 msgid "Skip Dualstack Selection" -msgstr "" +msgstr "Kettős veremű kiválasztás kihagyása" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:425 msgid "Skip Dualstack Selection." -msgstr "" +msgstr "Kettős veremű kiválasztás kihagyása." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:413 msgid "Skip Ipset Rule" -msgstr "" +msgstr "Ipset-szabály kihagyása" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:407 msgid "Skip Nameserver Rule" -msgstr "" +msgstr "Névszerver-szabály kihagyása" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:419 msgid "Skip SOA Address Rule" -msgstr "" +msgstr "SOA-címszabály kihagyása" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:420 msgid "Skip SOA address rules." -msgstr "" +msgstr "SOA-címszabályok kihagyása." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:395 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:836 msgid "Skip Speed Check" -msgstr "" +msgstr "Sebességellenőrzés kihagyása" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:402 msgid "Skip address rules." -msgstr "" +msgstr "Címszabályok kihagyása." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:414 msgid "Skip ipset rules." -msgstr "" +msgstr "Ipset-szabályok kihagyása." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:408 msgid "Skip nameserver rules." -msgstr "" +msgstr "Névszerver-szabályok kihagyása." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:94 #: applications/luci-app-smartdns/root/usr/share/luci/menu.d/luci-app-smartdns.json:3 msgid "SmartDNS" -msgstr "" +msgstr "SmartDNS" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:95 msgid "SmartDNS Server" -msgstr "" +msgstr "SmartDNS-szerver" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:96 msgid "" "SmartDNS is a local high-performance DNS server, supports finding fastest " "IP, supports ad filtering, and supports avoiding DNS poisoning." msgstr "" +"A SmartDNS egy helyi, nagy teljesítményű DNS-szerver, amely képes megtalálni " +"a leggyorsabb IP-címet, támogatja a reklámszűrést és a DNS-mérgezés " +"elkerülését." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1141 msgid "SmartDNS official website" -msgstr "" +msgstr "A SmartDNS hivatalos webhelye" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:376 msgid "Smartdns local server port" -msgstr "" +msgstr "A smartdns helyi szerver portja" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:153 msgid "" "Smartdns local server port, smartdns will be automatically set as main dns " "when the port is 53." msgstr "" +"A smartdns helyi szerver portja; 53-as port esetén a smartdns automatikusan " +"fő DNS-ként lesz beállítva." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:209 msgid "" "Smartdns response mode, First Ping: return the first ping IP, Fastest IP: " "return the fastest IP, Fastest Response: return the fastest DNS response." msgstr "" +"A smartdns válaszmódja. Első ping: az elsőként pingre válaszoló IP-címet " +"adja vissza; Leggyorsabb IP: a leggyorsabb IP-címet adja vissza; Leggyorsabb " +"válasz: a leggyorsabb DNS-választ adja vissza." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:146 msgid "Smartdns server name" -msgstr "" +msgstr "A smartdns szerver neve" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:168 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1015 msgid "Smartdns speed check mode." -msgstr "" +msgstr "A smartdns sebességellenőrzési módja." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1118 msgid "" @@ -728,74 +759,78 @@ msgid "" "in the domains are never forwarded and always replied to with the specified " "IP address which may be IPv4 or IPv6." msgstr "" +"A megadott tartományok bármely gépére visszaadandó IP-cím megadása. A " +"tartományokra vonatkozó lekérdezések soha nem kerülnek továbbításra, és " +"mindig a megadott IP-címmel kerülnek megválaszolásra, amely lehet IPv4 vagy " +"IPv6." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:168 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1015 msgid "Speed Check Mode" -msgstr "" +msgstr "Sebességellenőrzési mód" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:201 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1049 msgid "Speed check mode is invalid." -msgstr "" +msgstr "A sebességellenőrzési mód érvénytelen." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:218 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:383 msgid "TCP Server" -msgstr "" +msgstr "TCP-szerver" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:195 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1043 msgid "TCP port is empty" -msgstr "" +msgstr "A TCP-port üres" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:707 msgid "TLS Hostname Verify" -msgstr "" +msgstr "TLS-gépnév ellenőrzése" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:726 msgid "TLS SNI name" -msgstr "" +msgstr "TLS SNI-név" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:745 msgid "TLS SPKI Pinning" -msgstr "" +msgstr "TLS SPKI rögzítés" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:323 msgid "TTL for all domain result." -msgstr "" +msgstr "TTL az összes tartományeredményhez." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1136 msgid "Technical Support" -msgstr "" +msgstr "Műszaki támogatás" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:538 msgid "URL" -msgstr "" +msgstr "URL" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:547 msgid "URL format error, format: http:// or https://" -msgstr "" +msgstr "URL-formátum hiba, formátum: http:// vagy https://" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:522 msgid "Update" -msgstr "" +msgstr "Frissítés" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:513 msgid "Update Files" -msgstr "" +msgstr "Fájlok frissítése" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:499 msgid "Upload Config File" -msgstr "" +msgstr "Beállítófájl feltöltése" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:506 msgid "Upload Domain List File" -msgstr "" +msgstr "Tartománylista-fájl feltöltése" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:507 msgid "Upload domain list file to /etc/smartdns/domain-set" -msgstr "" +msgstr "Tartománylista-fájl feltöltése ide: /etc/smartdns/domain-set" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:891 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:991 @@ -803,32 +838,36 @@ msgid "" "Upload domain list file, or configure auto download from Download File " "Setting page." msgstr "" +"Tartománylista-fájl feltöltése, vagy automatikus letöltés beállítása a " +"Fájlletöltési beállítások oldalon." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:920 msgid "Upload domain list file." -msgstr "" +msgstr "Tartománylista-fájl feltöltése." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:500 msgid "Upload smartdns config file to /etc/smartdns/conf.d" -msgstr "" +msgstr "smartdns beállítófájl feltöltése ide: /etc/smartdns/conf.d" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:630 msgid "Upstream Servers" -msgstr "" +msgstr "Upstream szerverek" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:631 msgid "" "Upstream Servers, support UDP, TCP protocol. Please configure multiple DNS " "servers, including multiple foreign DNS servers." msgstr "" +"Upstream szerverek, UDP- és TCP-protokoll támogatásával. Kérjük, állítson be " +"több DNS-szervert, köztük több külföldi DNS-szervert is." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:764 msgid "Use Proxy" -msgstr "" +msgstr "Proxy használata" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:765 msgid "Use proxy to connect to upstream DNS server." -msgstr "" +msgstr "Proxy használata az upstream DNS-szerverhez való kapcsolódáshoz." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:746 msgid "" @@ -836,14 +875,17 @@ msgid "" "SPKI fingerprint, leaving blank to indicate that the validity of TLS is not " "verified." msgstr "" +"A TLS-szerver érvényességének ellenőrzésére szolgál. Az érték Base64 " +"kódolású SPKI-ujjlenyomat; üresen hagyva a TLS érvényessége nem kerül " +"ellenőrzésre." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:261 msgid "Write cache to disk on exit and load on startup." -msgstr "" +msgstr "A gyorsítótár lemezre írása kilépéskor és betöltése indításkor." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1012 msgid "Yes" -msgstr "" +msgstr "Igen" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:171 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:212 @@ -851,46 +893,46 @@ msgstr "" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1011 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1019 msgid "default" -msgstr "" +msgstr "alapértelmezett" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:554 msgid "domain list (/etc/smartdns/domain-set)" -msgstr "" +msgstr "tartománylista (/etc/smartdns/domain-set)" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:669 msgid "https" -msgstr "" +msgstr "https" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:294 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:451 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:857 msgid "ipset name format error, format: [#[4|6]:]ipsetname" -msgstr "" +msgstr "ipset-névformátum hiba, formátum: [#[4|6]:]ipsetname" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1142 msgid "open website" -msgstr "" +msgstr "webhely megnyitása" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:555 msgid "smartdns config (/etc/smartdns/conf.d)" -msgstr "" +msgstr "smartdns beállítás (/etc/smartdns/conf.d)" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:584 msgid "smartdns custom settings" -msgstr "" +msgstr "smartdns egyéni beállítások" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:667 msgid "tcp" -msgstr "" +msgstr "tcp" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:668 msgid "tls" -msgstr "" +msgstr "tls" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:553 msgid "type" -msgstr "" +msgstr "típus" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:666 msgid "udp" -msgstr "" +msgstr "udp" diff --git a/luci-app-smartdns/po/it/smartdns.po b/luci-app-smartdns/po/it/smartdns.po index f8de27268..776c64f8c 100644 --- a/luci-app-smartdns/po/it/smartdns.po +++ b/luci-app-smartdns/po/it/smartdns.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2025-11-28 22:04+0000\n" -"Last-Translator: niky1987 \n" +"PO-Revision-Date: 2026-11-05 22:13+0000\n" +"Last-Translator: Martin Olmer \n" "Language-Team: Italian \n" "Language: it\n" @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.15-dev\n" +"X-Generator: Weblate 2026.11.2.dev0\n" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:791 msgid "Additional Args for upstream dns servers" @@ -46,7 +46,7 @@ msgstr "" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:131 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:638 msgid "Advanced Settings" -msgstr "Impostazioni Avanzate" +msgstr "Impostazioni avanzate" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:252 msgid "" @@ -431,7 +431,7 @@ msgstr "" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:607 msgid "Log Level" -msgstr "" +msgstr "Livello di log" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:619 msgid "Log Number" @@ -857,7 +857,7 @@ msgstr "Si" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1011 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1019 msgid "default" -msgstr "" +msgstr "predefinito" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:554 msgid "domain list (/etc/smartdns/domain-set)" diff --git a/luci-app-smartdns/po/pl/smartdns.po b/luci-app-smartdns/po/pl/smartdns.po index 7dc05c75b..3613664f9 100644 --- a/luci-app-smartdns/po/pl/smartdns.po +++ b/luci-app-smartdns/po/pl/smartdns.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2026-08-24 16:48+0000\n" -"Last-Translator: Matthaiks \n" +"PO-Revision-Date: 2026-11-04 21:09+0000\n" +"Last-Translator: Matthaiks \n" "Language-Team: Polish \n" "Language: pl\n" @@ -11,7 +11,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Weblate 2026.9.dev0\n" +"X-Generator: Weblate 2026.11.1.dev0\n" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:791 msgid "Additional Args for upstream dns servers" @@ -356,7 +356,7 @@ msgstr "Wymuś HTTPS SOA." #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:130 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:637 msgid "General Settings" -msgstr "Ustawienia główne" +msgstr "Ustawienia ogólne" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:598 msgid "Generate Coredump" diff --git a/luci-app-smartdns/po/ro/smartdns.po b/luci-app-smartdns/po/ro/smartdns.po index 050fe78f6..5147c3a7a 100644 --- a/luci-app-smartdns/po/ro/smartdns.po +++ b/luci-app-smartdns/po/ro/smartdns.po @@ -1,17 +1,17 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2025-11-24 10:29+0000\n" -"Last-Translator: CRISTIAN ANDREI \n" +"PO-Revision-Date: 2026-11-05 09:04+0000\n" +"Last-Translator: Martin Olmer \n" "Language-Team: Romanian \n" "Language: ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n==1 ? 0 : " -"(n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2;\n" -"X-Generator: Weblate 5.15-dev\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" +"X-Generator: Weblate 2026.11.1.dev0\n" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:791 msgid "Additional Args for upstream dns servers" @@ -471,7 +471,7 @@ msgstr "" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:65 msgid "NOT RUNNING" -msgstr "" +msgstr "NU FUNCȚIONEAZĂ" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:233 msgid "Name of device name listen on." @@ -565,7 +565,7 @@ msgstr "" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1173 msgid "Restart" -msgstr "" +msgstr "Reporniți" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1164 msgid "Restart Service" @@ -846,7 +846,7 @@ msgstr "" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1012 msgid "Yes" -msgstr "" +msgstr "Da" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:171 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:212 diff --git a/luci-app-smartdns/po/vi/smartdns.po b/luci-app-smartdns/po/vi/smartdns.po index d32a2a2b2..221306f79 100644 --- a/luci-app-smartdns/po/vi/smartdns.po +++ b/luci-app-smartdns/po/vi/smartdns.po @@ -1,8 +1,9 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2026-10-13 21:56+0000\n" -"Last-Translator: Pavel Borecki \n" +"PO-Revision-Date: 2026-11-01 06:11+0000\n" +"Last-Translator: Lê Hoàng Tiến " +"\n" "Language-Team: Vietnamese \n" "Language: vi\n" @@ -158,7 +159,7 @@ msgstr "" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:559 msgid "Description" -msgstr "" +msgstr "Mô tả" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:75 msgid "Dnsmasq Forwarded To Smartdns Failure" @@ -347,7 +348,7 @@ msgstr "" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:130 #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:637 msgid "General Settings" -msgstr "" +msgstr "Các cài đặt chung" #: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:598 msgid "Generate Coredump" diff --git a/luci-app-tailscale-ng/Makefile b/luci-app-tailscale-ng/Makefile index 69512538b..18b7fe116 100644 --- a/luci-app-tailscale-ng/Makefile +++ b/luci-app-tailscale-ng/Makefile @@ -12,7 +12,7 @@ LUCI_PKGARCH:=all LUCI_MAINTAINER:=vad-b PKG_VERSION:=0.1.3 -PKG_RELEASE:=5 +PKG_RELEASE:=6 PKG_PO_VERSION:=$(PKG_VERSION)-r$(PKG_RELEASE) PKG_LICENSE:=GPL-3.0-only diff --git a/luci-app-tailscale-ng/install.sh b/luci-app-tailscale-ng/install.sh index 1c6f4b7d9..808aa2f6e 100644 --- a/luci-app-tailscale-ng/install.sh +++ b/luci-app-tailscale-ng/install.sh @@ -5,6 +5,7 @@ set -eu PKG_NAME="luci-app-tailscale-ng" REPO="vad-b/luci-app-tailscale-ng" API_URL="https://api.github.com/repos/${REPO}/releases/latest" +DOWNLOAD_TIMEOUT=15 log() { echo "[install.sh] $*" @@ -15,6 +16,27 @@ fail() { exit 1 } +fetch_url() { + if wget -q -T "${DOWNLOAD_TIMEOUT}" -O "$2" "$1"; then + return 0 + fi + rm -f "$2" + log "wget failed or timed out; trying curl" + + if ! command -v curl >/dev/null 2>&1; then + log "Installing curl with ${PKG_MGR}" + if [ "${PKG_MGR}" = "apk" ]; then + apk update || fail "failed to update package indexes for curl" + apk add curl || fail "failed to install curl" + else + opkg update || fail "failed to update package indexes for curl" + opkg install curl || fail "failed to install curl" + fi + fi + + curl -fLsS --max-time "${DOWNLOAD_TIMEOUT}" -o "$2" "$1" +} + command -v wget >/dev/null 2>&1 || fail "wget is required but not found" if command -v apk >/dev/null 2>&1; then @@ -28,10 +50,19 @@ else fi TMP_JSON="/tmp/${PKG_NAME}-latest.json" +PKG_FILE='' + +cleanup() { + rm -f "${TMP_JSON}" + if [ -n "${PKG_FILE}" ]; then + rm -f "${PKG_FILE}" + fi +} +trap cleanup EXIT log "Detected package manager: ${PKG_MGR} (expecting .${PKG_EXT})" log "Fetching latest release metadata" -wget -qO "${TMP_JSON}" "${API_URL}" || fail "failed to fetch release metadata" +fetch_url "${API_URL}" "${TMP_JSON}" || fail "failed to fetch release metadata" DOWNLOAD_URL="$(grep -oE '"browser_download_url":[[:space:]]*"[^"]+"' "${TMP_JSON}" \ | sed -E 's/.*"([^"]+)"/\1/' \ @@ -43,7 +74,7 @@ DOWNLOAD_URL="$(grep -oE '"browser_download_url":[[:space:]]*"[^"]+"' "${TMP_JSO PKG_FILE="/tmp/$(basename "${DOWNLOAD_URL}")" log "Downloading ${PKG_FILE}" -wget -qO "${PKG_FILE}" "${DOWNLOAD_URL}" || fail "failed to download package" +fetch_url "${DOWNLOAD_URL}" "${PKG_FILE}" || fail "failed to download package" log "Installing ${PKG_FILE}" if [ "${PKG_MGR}" = "apk" ]; then @@ -52,5 +83,4 @@ else opkg install "${PKG_FILE}" || fail "opkg install failed" fi -rm -f "${TMP_JSON}" log "Done" diff --git a/luci-app-transmission/po/hu/transmission.po b/luci-app-transmission/po/hu/transmission.po index f0b393817..04ddea17a 100644 --- a/luci-app-transmission/po/hu/transmission.po +++ b/luci-app-transmission/po/hu/transmission.po @@ -3,8 +3,9 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-04-17 20:30+0200\n" -"PO-Revision-Date: 2026-03-08 17:32+0000\n" -"Last-Translator: hmzs \n" +"PO-Revision-Date: 2026-11-05 07:53+0000\n" +"Last-Translator: Kövecses József " +"\n" "Language-Team: Hungarian \n" "Language: hu\n" @@ -12,7 +13,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.17-dev\n" +"X-Generator: Weblate 2026.11.1.dev0\n" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:65 msgid "Alternative download speed" @@ -56,7 +57,7 @@ msgstr "Rögzített IPv4-cím" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:176 msgid "Binding address IPv6" -msgstr "Rögzített IPv6 cím" +msgstr "Rögzített IPv6-cím" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:86 msgid "Block list enabled" @@ -136,7 +137,7 @@ msgstr "Globális partnerkorlát" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:44 msgid "Global settings" -msgstr "Globális beállítások" +msgstr "Általános beállítások" #: applications/luci-app-transmission/root/usr/share/rpcd/acl.d/luci-app-transmission.json:3 msgid "Grant UCI access for luci-app-transmission" @@ -161,7 +162,7 @@ msgstr "Befejezetlen fájlok mappájának engedélyezése" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:150 msgid "Info" -msgstr "Infó" +msgstr "Információ" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:144 msgid "LPD enabled" @@ -189,9 +190,9 @@ msgid "" "enabled, add a value. For Sunday - 1, Monday - 2, Tuesday - 4, Wednesday - " "8, Thursday - 16, Friday - 32, Saturday - 64" msgstr "" -"Szám/bitmező. Kezdj 0-val, és minden napnál, amikor az ütemezőt be akarod " -"kapcsolni, adj hozzá egy értéket. Vasárnap - 1, Hétfő - 2, Kedd - 4, Szerda " -"- 8, Csütörtök - 16, Péntek - 32, Szombat - 64" +"Szám/bitmező. Kezdjen 0-val, és minden napnál, amikor az ütemezőt be akarja " +"kapcsolni, adjon hozzá egy értéket. Vasárnap - 1, Hétfő - 2, Kedd - 4, " +"Szerda - 8, Csütörtök - 16, Péntek - 32, Szombat - 64" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:106 msgid "Off" @@ -285,7 +286,7 @@ msgstr "RPC azonosítás megkövetelése" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:236 msgid "RPC bind address" -msgstr "RPC cím rögzítése" +msgstr "RPC-cím rögzítése" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:233 msgid "RPC enabled" @@ -303,19 +304,19 @@ msgstr "RPC fehérlista engedélyezése" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:266 msgid "RPC password" -msgstr "RPC jelszó" +msgstr "RPC-jelszó" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:239 msgid "RPC port" -msgstr "RPC port" +msgstr "RPC-port" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:230 msgid "RPC settings" -msgstr "RPC beállítások" +msgstr "RPC-beállítások" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:263 msgid "RPC username" -msgstr "RPC felhasználónév" +msgstr "RPC-felhasználónév" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:256 msgid "RPC whitelist" @@ -335,7 +336,7 @@ msgstr "Aránykorlát engedélyezése" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:181 msgid "Recycle peer id after" -msgstr "" +msgstr "Partnerazonosító újrahasznosítása ennyi idő után" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:110 msgid "Rename partial files" @@ -395,7 +396,7 @@ msgstr "Feltöltési korlát engedélyezése" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:179 msgid "This is documented on %s." -msgstr "" +msgstr "Ennek dokumentációja itt található: %s." #: applications/luci-app-transmission/root/usr/share/luci/menu.d/luci-app-transmission.json:3 msgid "Transmission" @@ -406,7 +407,7 @@ msgid "" "Transmission daemon is a simple bittorrent client, here you can configure " "the settings." msgstr "" -"A Transmission daemon egy egyszerű bittorrent kliens, itt módosíthatod a " +"A Transmission daemon egy egyszerű bittorrent kliens, itt módosíthatja a " "beállításait." #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:116 @@ -424,6 +425,7 @@ msgstr "Figyelt könyvtár" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:274 msgid "When enabled, this will toggle the alt-speed-enabled setting" msgstr "" +"Ha engedélyezve van, ez átkapcsolja az alt-speed-enabled beállítást" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:181 msgid "hours" diff --git a/luci-app-transmission/po/ko/transmission.po b/luci-app-transmission/po/ko/transmission.po index 4a675c230..ae0a96e41 100644 --- a/luci-app-transmission/po/ko/transmission.po +++ b/luci-app-transmission/po/ko/transmission.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-10-17 00:31+0200\n" -"PO-Revision-Date: 2026-04-06 19:59+0000\n" -"Last-Translator: Hyeonjeong Lee \n" +"PO-Revision-Date: 2026-11-05 18:32+0000\n" +"Last-Translator: Hyeonjeong Lee \n" "Language-Team: Korean \n" "Language: ko\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 5.17-dev\n" +"X-Generator: Weblate 2026.11.2.dev0\n" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:65 msgid "Alternative download speed" @@ -36,7 +36,7 @@ msgstr "대체 속도 종료 시간" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:274 msgid "Alternative speed timing enabled" -msgstr "" +msgstr "대체 속도 제한 시간대 사용" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:62 msgid "Alternative upload speed" @@ -140,15 +140,15 @@ msgstr "전역 설정" #: applications/luci-app-transmission/root/usr/share/rpcd/acl.d/luci-app-transmission.json:3 msgid "Grant UCI access for luci-app-transmission" -msgstr "luci-app-transmission의 UCI 접근 권한 부여" +msgstr "luci-app-transmission에 UCI 접근 권한 부여" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:289 msgid "Idle seeding limit" -msgstr "" +msgstr "유휴 시딩 제한" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:286 msgid "Idle seeding limit enabled" -msgstr "" +msgstr "유휴 시딩 제한 활성화" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:102 msgid "Incomplete directory" @@ -156,7 +156,7 @@ msgstr "미완료 디렉터리 경로" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:99 msgid "Incomplete directory enabled" -msgstr "미완료 디렉터리 사용" +msgstr "미완료 디렉터리 활성화" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:150 msgid "Info" @@ -168,7 +168,7 @@ msgstr "LPD 활성화" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:141 msgid "Lazy bitfield enabled" -msgstr "" +msgstr "지연 비트필드 전송 활성화" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:147 msgid "Message level" @@ -188,6 +188,9 @@ msgid "" "enabled, add a value. For Sunday - 1, Monday - 2, Tuesday - 4, Wednesday - " "8, Thursday - 16, Friday - 32, Saturday - 64" msgstr "" +"숫자/비트필드. 0에서 시작하여 스케줄러를 활성화할 요일마다 해당 값을 " +"더합니다. 일요일 - 1, 월요일 - 2, 화요일 - 4, 수요일 - 8, 목요일 - 16, " +"금요일 - 32, 토요일 - 64" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:106 msgid "Off" @@ -235,7 +238,7 @@ msgstr "피어 설정" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:187 msgid "Peer socket TOS" -msgstr "" +msgstr "피어 소켓 TOS" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:204 msgid "Port forwarding enabled" @@ -259,11 +262,11 @@ msgstr "프리페치 활성화" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:214 msgid "Queue stalled enabled" -msgstr "" +msgstr "대기열 정체 감지 활성화" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:223 msgid "Queue stalled minutes" -msgstr "" +msgstr "대기열 정체 판정 시간(분)" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:208 msgid "Queueing" @@ -279,7 +282,7 @@ msgstr "RPC 인증 요구" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:236 msgid "RPC bind address" -msgstr "" +msgstr "RPC 바인드 주소" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:233 msgid "RPC enabled" @@ -327,11 +330,11 @@ msgstr "공유 비율 제한 사용" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:181 msgid "Recycle peer id after" -msgstr "" +msgstr "피어 ID 재활용 대기 시간" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:110 msgid "Rename partial files" -msgstr "" +msgstr "부분 파일 이름 변경" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:139 msgid "Require encrypted" @@ -347,19 +350,19 @@ msgstr "데몬 실행 사용자" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:271 msgid "Scheduling" -msgstr "" +msgstr "예약 작업" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:158 msgid "Scrape paused torrents enabled" -msgstr "" +msgstr "일시 정지된 토렌트 정보 수집 활성화" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:161 msgid "Script torrent done enabled" -msgstr "" +msgstr "토렌트 완료 시 스크립트 실행 활성화" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:164 msgid "Script torrent done filename" -msgstr "" +msgstr "토렌트 완료 시 실행할 스크립트 파일 이름" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:220 msgid "Seed queue enabled" @@ -387,7 +390,7 @@ msgstr "업로드 속도 제한" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:179 msgid "This is documented on %s." -msgstr "" +msgstr "자세한 내용은 %s 문서에서 확인할 수 있습니다." #: applications/luci-app-transmission/root/usr/share/luci/menu.d/luci-app-transmission.json:3 msgid "Transmission" @@ -398,14 +401,16 @@ msgid "" "Transmission daemon is a simple bittorrent client, here you can configure " "the settings." msgstr "" +"Transmission 데몬은 간단한 비트토렌트 클라이언트입니다. 여기에서 설정을 " +"구성할 수 있습니다." #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:116 msgid "Trash original torrent files" -msgstr "" +msgstr "원본 토렌트 파일 휴지통으로 이동" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:80 msgid "Upload slots per torrent" -msgstr "" +msgstr "토렌트별 업로드 슬롯 수" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:124 msgid "Watch directory" @@ -413,7 +418,7 @@ msgstr "자동 로드 디렉터리 경로" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:274 msgid "When enabled, this will toggle the alt-speed-enabled setting" -msgstr "" +msgstr "활성화하면 alt-speed-enabled(대체 속도 활성화) 설정이 전환됩니다" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:181 msgid "hours" diff --git a/luci-app-transmission/po/pt_BR/transmission.po b/luci-app-transmission/po/pt_BR/transmission.po index a4d429fce..5413e493c 100644 --- a/luci-app-transmission/po/pt_BR/transmission.po +++ b/luci-app-transmission/po/pt_BR/transmission.po @@ -3,9 +3,8 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-07-06 16:27+0200\n" -"PO-Revision-Date: 2026-10-12 11:12+0000\n" -"Last-Translator: Janderson Vieira Santos " -"\n" +"PO-Revision-Date: 2026-11-01 06:11+0000\n" +"Last-Translator: LucasMZ \n" "Language-Team: Portuguese (Brazil) \n" "Language: pt_BR\n" @@ -161,7 +160,7 @@ msgstr "Ativado diretório para arquivos incompletos" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:150 msgid "Info" -msgstr "Informação (Info)" +msgstr "Informações" #: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:144 msgid "LPD enabled" diff --git a/luci-app-vantage/Makefile b/luci-app-vantage/Makefile index 4006ef24e..68318a418 100644 --- a/luci-app-vantage/Makefile +++ b/luci-app-vantage/Makefile @@ -10,14 +10,15 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-vantage -PKG_VERSION:=1.0.17 -PKG_RELEASE:=31 +PKG_VERSION:=1.0.18 +PKG_RELEASE:=32 PKG_LICENSE:=GPL-3.0-or-later LUCI_TITLE:=Vantage dashboard LUCI_DESCRIPTION:=Live network dashboard (landing page under admin/dashboard): device, \ uplink, radios, SSIDs and stations with health and experience scores. \ - Read-only except for station names, which are kept in /etc/config/vantage. + Read-only except for station names and stations set not to warn about \ + their signal, which are kept in /etc/config/vantage. # rpcd-mod-iwinfo provides the station lists (iwinfo info/assoclist). # rpcd-mod-ucode runs the app's plugin (/usr/share/rpcd/ucode/luci.vantage: # key-free wireless status, thermal zones, validated alias writes), which diff --git a/luci-app-vantage/htdocs/luci-static/resources/vantage/app.css b/luci-app-vantage/htdocs/luci-static/resources/vantage/app.css index d896170aa..f1eb7e850 100644 --- a/luci-app-vantage/htdocs/luci-static/resources/vantage/app.css +++ b/luci-app-vantage/htdocs/luci-static/resources/vantage/app.css @@ -592,7 +592,8 @@ h2, h3{ animation: vt-ring-soft 5s ease-out infinite; } .vt-app .vt-orb-warn::after, .vt-app .vt-orb-err::after { animation: vt-ring 2.6s ease-out infinite; } -/* paused (overview.js setMotion): the ring stands still */ +/* paused, or another window has the focus (overview.js setMotion): the + ring stands still */ .vt-app.vt-still .vt-orb::after { animation: none; } .vt-app .vt-orb-core { width: 14px; height: 14px; border-radius: 50%; background: var(--vt-oc); box-shadow: 0 0 0 4px color-mix(in oklab, var(--vt-oc) 22%, transparent); } .vt-app .vt-orb-warn { --vt-oc: var(--vt-warn); } @@ -628,6 +629,12 @@ h2, h3{ .vt-app .vt-live-err .vt-live-beat { --vt-beat-c: var(--vt-warn); } .vt-app .vt-live-ok .vt-live-beat::after { animation: vt-beat-soft 5s ease-out infinite; } .vt-app .vt-live-err .vt-live-beat::after { animation: vt-beat 2s ease-out infinite; } +.vt-app.vt-still .vt-live-beat::after { animation: none; } +/* the client drawer's "Don't warn about its signal" (#110) */ +.vt-app .vt-quiet { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0 0 var(--vt-sp-3); font-size: var(--vt-fs-sm); color: var(--vt-text-2); } +.vt-app .vt-quiet input { margin: 0; } +.vt-app .vt-quiet-err { color: var(--vt-err); } +.vt-app .vt-quiet-err:empty { display: none; } @keyframes vt-beat { 0% { transform: scale(1); opacity: 1; } 70%, 100% { transform: scale(2.75); opacity: 0; } } @keyframes vt-beat-soft { 0% { transform: scale(1); opacity: .6; } 70%, 100% { transform: scale(2.2); opacity: 0; } } @@ -1058,6 +1065,8 @@ h2, h3{ .vt-app .vt-status::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--vt-ok); } .vt-app .vt-status-warn::before { background: var(--vt-warn); } .vt-app .vt-status-err::before { background: var(--vt-err); } +/* a radio switched off on purpose: grey, not a warning */ +.vt-app .vt-status-off::before { background: var(--vt-text-3); } .vt-app .vt-icon-action { display: inline-flex; align-items: center; justify-content: center; flex: none; width: var(--vt-ctl); height: var(--vt-ctl); padding: 0; margin: 0; border: 0; border-radius: var(--vt-r-ctl); @@ -1578,3 +1587,7 @@ h2, h3{ .vt-app .vt-flow-3.vt-flow-on { stroke-width: 3; } .vt-app .vt-flows { display: none; } } +/* Low-power router (overview.js applyPower): the same still picture */ +.vt-app.vt-low .vt-flow-on { opacity: .8; } +.vt-app.vt-low .vt-flow-3.vt-flow-on { stroke-width: 3; } +.vt-app.vt-low .vt-flows { display: none; } diff --git a/luci-app-vantage/htdocs/luci-static/resources/vantage/backdrop.js b/luci-app-vantage/htdocs/luci-static/resources/vantage/backdrop.js index acb6501d1..9aa14c30e 100644 --- a/luci-app-vantage/htdocs/luci-static/resources/vantage/backdrop.js +++ b/luci-app-vantage/htdocs/luci-static/resources/vantage/backdrop.js @@ -237,7 +237,7 @@ function mount(host, band, style) { var down = null, up = null, originEl = null; var scene = null, cur = 'none', raf = 0, timer = 0, last = 0, dpr = 1, inView = true, hidden = false, still = false, paused = false, mq = null; var focused = typeof document.hasFocus === 'function' ? document.hasFocus() : true; - var ro = null, io = null, onMq = null, stillRated = false, mo = null, scheme = null, onScheme = null; + var ro = null, io = null, onMq = null, stillRated = false, mo = null, scheme = null, onScheme = null, stale = false, coloured = false; cv.className = 'vt-backdrop'; cv.setAttribute('aria-hidden', 'true'); @@ -263,9 +263,12 @@ function mount(host, band, style) { return ctx.fillStyle !== '#010203' ? v : fallback; } + /* read once the canvas is in the page (mounted before, it has none), + then again on a theme switch only */ function colours() { env.colour = token('--vt-accent-line', env.colour); env.muted = token('--vt-text-3', env.muted); + coloured = !!cv.isConnected; } function measure() { @@ -305,7 +308,19 @@ function mount(host, band, style) { else if (!still) scene.resize(false); } + /* a poll's rate and geometry: read with the frame drawn, not between + the poll's own DOM writes, where the read would make the browser lay + the page out an extra time */ + function refit() { + stale = false; + measure(); + load(); + fit(false); + if (still) paint(); + } + function size(initial) { + stale = false; measure(); dpr = Math.min(window.devicePixelRatio || 1, 1.5); cv.width = Math.round(env.w * dpr); cv.height = Math.round(env.h * dpr); @@ -331,6 +346,7 @@ function mount(host, band, style) { function tick(t) { raf = 0; if (!running()) return; + if (stale) refit(); scene.step(clamp((t - last) / 1000, 0, .1)); last = t; paint(); @@ -395,15 +411,16 @@ function mount(host, band, style) { style: setStyle, /* each poll: the uplink's rate (bit/s each way) and the node the stars stream from; the colours follow a theme switch */ + /* (the colours follow a theme switch, onScheme) */ update: function(o) { o = o || {}; down = o.down; up = o.up; if (o.origin !== undefined) originEl = o.origin; - colours(); - measure(); - load(); - fit(false); - if (still) paint(); + stale = true; + if (!coloured) colours(); + /* a still frame: now; nothing to draw (none, folded, out of + view): nothing read, the resize observer measures */ + if (still && scene) refit(); run(); }, running: running, diff --git a/luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js b/luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js index c891b6c43..4b512c23f 100644 --- a/luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js +++ b/luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js @@ -86,7 +86,7 @@ return baseclass.extend({ } /* radios and signal; neither applies to a wired-only device */ - if (!model.wired) this.wifiHealth(model, out); + if (!model.wired) this.wifiHealth(model, out, live.quiet); /* storage */ var root = (dev.storage || [])[0]; @@ -98,24 +98,28 @@ return baseclass.extend({ /* the Wi-Fi and Signal checks, appended to out; an SSID without clients is idle, not a fault */ - wifiHealth: function(model, out) { + wifiHealth: function(model, out, quietMacs) { var radios = model.radios || [], nSsid = (model.ssids || []).length; var off = radios.filter(function(r) { return r.disabled; }), down = radios.filter(function(r) { return !r.disabled && !r.up; }); var idle = (model.ssids || []).filter(function(s) { return s.up && !s.clients; }); if (!radios.length) out.push({ id: 'radios', level: 'info', title: _('Wi-Fi'), value: _('None'), reason: _('No radios reported'), detail: _('This device reports no radios'), page: PAGES.wireless }); else if (down.length) out.push({ id: 'radios', level: 'err', title: _('Wi-Fi'), value: fmt.N_(down.length, '%d radio down', '%d radios down').format(down.length), reason: _('%s is not up').format(down[0].bandLabel), detail: _('%s (%s) is enabled but not up').format(down[0].id, down[0].bandLabel), page: PAGES.wireless }); - else if (off.length) out.push({ id: 'radios', level: 'warn', title: _('Wi-Fi'), value: fmt.N_(off.length, '%d radio off', '%d radios off').format(off.length), reason: _('%s is disabled').format(off[0].bandLabel), + /* a radio switched off in the configuration is a choice, not a + fault: shown, never tinted or counted as needing attention */ + else if (off.length) out.push({ id: 'radios', level: 'info', title: _('Wi-Fi'), value: fmt.N_(off.length, '%d radio off', '%d radios off').format(off.length), reason: _('%s is disabled').format(off[0].bandLabel), detail: _('%s (%s) is disabled').format(off[0].id, off[0].bandLabel), page: PAGES.wireless }); else out.push({ id: 'radios', level: 'ok', title: _('Wi-Fi'), value: fmt.N_(radios.length, '%d radio up', '%d radios up').format(radios.length), reason: idle.length ? fmt.N_(nSsid, '%d SSID · %d idle', '%d SSIDs · %d idle').format(nSsid, idle.length) : fmt.N_(nSsid, '%d SSID on air', '%d SSIDs on air').format(nSsid), detail: idle.length ? fmt.N_(nSsid, '%d SSID broadcasting, %d idle', '%d SSIDs broadcasting, %d idle').format(nSsid, idle.length) : fmt.N_(nSsid, '%d SSID broadcasting', '%d SSIDs broadcasting').format(nSsid), page: PAGES.wireless }); - /* signal */ - var clients = model.clients || []; - var weak = clients.filter(function(c) { return c.signal != null && c.signal < WEAK_DBM; }).sort(function(a, b) { return a.signal - b.signal; }); - var heard = clients.filter(function(c) { return c.signal != null; }).sort(function(a, b) { return a.signal - b.signal; }); + /* signal; a station set quiet (#110: far away on purpose) is left + out, of the warning and of the weakest */ + var clients = model.clients || [], quiet = quietMacs || {}; + var counted = clients.filter(function(c) { return !quiet[c.mac]; }); + var weak = counted.filter(function(c) { return c.signal != null && c.signal < WEAK_DBM; }).sort(function(a, b) { return a.signal - b.signal; }); + var heard = counted.filter(function(c) { return c.signal != null; }).sort(function(a, b) { return a.signal - b.signal; }); if (!clients.length) out.push({ id: 'signal', level: 'info', title: _('Signal'), value: _('No clients'), reason: '', detail: _('No stations are associated right now'), page: PAGES.wireless }); else if (weak.length) out.push({ id: 'signal', level: 'warn', title: _('Signal'), value: _('%d weak').format(weak.length), /* the level stays in one piece when the line wraps */ @@ -125,6 +129,8 @@ return baseclass.extend({ (the weakest's details where the layout hides that list) */ client: weak[0].mac, list: weak.length > 1 ? 'weak' : null }); /* all fine: the weakest, which is how close the network is to a problem */ + else if (!counted.length) out.push({ id: 'signal', level: 'ok', title: _('Signal'), value: fmt.DASH, + reason: _('No warnings asked for'), detail: _('Every client here is set not to warn about its signal'), page: PAGES.wireless }); else out.push({ id: 'signal', level: 'ok', title: _('Signal'), value: heard.length ? fmt.dbm(heard[0].signal) : fmt.DASH, reason: !heard.length ? _('Not reported by the driver') : heard.length === 1 ? _('The only measured client') : fmt.N_(heard.length, 'Weakest of %d client', 'Weakest of %d clients').format(heard.length), @@ -252,7 +258,7 @@ return baseclass.extend({ (radios || []).forEach(function(r) { var v = own(rates, r.id) ? num(rates[r.id].rx) + num(rates[r.id].tx) : 0; var notes = []; - if (r.disabled) notes.push({ level: 'warn', text: _('Radio is disabled') }); + if (r.disabled) notes.push({ level: 'info', text: _('Radio is disabled') }); else if (!r.up) notes.push({ level: 'err', text: _('Radio is enabled but not up') }); if (top === r.id && sum > 0 && (radios.length > 1)) notes.push({ level: 'info', text: _('Busiest radio: %s of Wi-Fi traffic').format(fmt.pct(v / sum * 100)) }); if (r.legacy) notes.push({ level: 'info', text: r.legacy === 1 ? _('1 older device (Wi-Fi 4 or earlier) slows airtime') : _('%d older devices (Wi-Fi 4 or earlier) slow airtime').format(r.legacy) }); diff --git a/luci-app-vantage/htdocs/luci-static/resources/vantage/model.js b/luci-app-vantage/htdocs/luci-static/resources/vantage/model.js index 2f4c2fb85..b0e40dfb8 100644 --- a/luci-app-vantage/htdocs/luci-static/resources/vantage/model.js +++ b/luci-app-vantage/htdocs/luci-static/resources/vantage/model.js @@ -216,9 +216,12 @@ return baseclass.extend({ return Math.max(0, Math.min(100, (1 - di / dt) * 100)); }, - /* { pct, cores: [ pct, ... ] } between two parseStat() results */ + /* { pct, cores: [ pct, ... ] } between two parseStat() results; null + for samples under a second apart (100 ticks a core), which would read + a burst, such as the router building the page, as the load */ cpuUsage: function(prev, cur) { if (!prev || !cur) return null; + if (cur.all.total - prev.all.total < 100 * Math.max(1, cur.cores.length)) return null; var self = this, pct = this.cpuPercent(prev.all, cur.all); if (pct == null) return null; return { pct: pct, cores: cur.cores.map(function(c, i) { return self.cpuPercent(prev.cores[i], c); }) }; @@ -647,10 +650,13 @@ return baseclass.extend({ ifs.forEach(function(i) { var ic = obj(i.config), ifname = typeof i.ifname === 'string' ? i.ifname : null; /* luci.vantage wireless has no iwinfo part: the view's - per-interface iwinfo info replies stand in for it */ + iwinfo info replies stand in for it, and for a network + without one (the view asks once a radio), hostapd's + get_status gives the same BSSID and SSID */ var iiw = obj(i.iwinfo || (ifname && own(iw, ifname) ? iw[ifname] : null)); if (ifname) { radio.ifnames.push(ifname); wlNames.push(ifname); } var st = ifname ? obj(hstat[ifname]) : {}; + var stText = function(v) { return typeof v === 'string' ? v : ''; }; var air = obj(st.airtime); if (num(air.time) > 0 || num(air.utilization) > 0) radio.airtime = Math.max(radio.airtime || 0, Math.min(100, num(air.utilization) / 2.55)); @@ -660,13 +666,13 @@ return baseclass.extend({ section: typeof i.section === 'string' ? i.section : null, radio: rname, band: band, - ssid: fmt.safeText(ic.ssid || iiw.ssid || '', 32), + ssid: fmt.safeText(ic.ssid || iiw.ssid || stText(st.ssid) || '', 32), mode: ic.mode || 'ap', hidden: ic.hidden === true || ic.hidden === '1', security: wifi.security(ic.encryption), pmf: +ic.ieee80211w || 0, networks: arr(ic.network), - bssid: fmt.mac(iiw.bssid || ic.macaddr || ''), + bssid: fmt.mac(iiw.bssid || stText(st.bssid) || ic.macaddr || ''), up: radio.up && !!ifname && (!devs[ifname] || devs[ifname].up !== false), clients: 0 }; diff --git a/luci-app-vantage/htdocs/luci-static/resources/vantage/names.js b/luci-app-vantage/htdocs/luci-static/resources/vantage/names.js index ff0c10ab2..57563b067 100644 --- a/luci-app-vantage/htdocs/luci-static/resources/vantage/names.js +++ b/luci-app-vantage/htdocs/luci-static/resources/vantage/names.js @@ -28,6 +28,9 @@ var NAME_MAX = 48; /* client sections read from /etc/config/vantage; the rpcd plugin refuses to store more */ var ALIAS_MAX = 512; +/* quiet sections (#110: a station whose weak signal stays out of the + warnings), likewise */ +var QUIET_MAX = 512; /* C0 (incl. tab, CR, LF), DEL and C1 controls */ var CONTROL = /[\u0000-\u001f\u007f-\u009f]/; @@ -66,6 +69,7 @@ function str(v) { return typeof v === 'string' ? v : ''; } return baseclass.extend({ NAME_MAX: NAME_MAX, ALIAS_MAX: ALIAS_MAX, + QUIET_MAX: QUIET_MAX, SOURCES: SOURCES, ICONS: ICONS, @@ -185,6 +189,19 @@ return baseclass.extend({ return out; }, + /* quiet sections of /etc/config/vantage -> { mac: true }, the stations + whose weak signal the dashboard leaves out of its warnings; past + QUIET_MAX are ignored */ + quietSet: function(sections) { + var out = Object.create(null), self = this, n = 0; + (Array.isArray(sections) ? sections : []).forEach(function(s) { + if (!s || s['.type'] !== 'quiet' || ++n > QUIET_MAX) return; + var mac = self.normMac(s.mac); + if (mac) out[mac] = true; + }); + return out; + }, + /* umdns hosts reply { 'name.local': { ipv4: '...', ipv6: '...' } } -> { ip: name }. An address claimed by two different names is left out: umdns caches unsolicited answers from anyone, so a second claim diff --git a/luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js b/luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js index 99c53d5fd..dcb96be1d 100644 --- a/luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js +++ b/luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js @@ -24,6 +24,16 @@ var POLL_S = 5; small reads (/proc/stat, the uplink device's counters), where the full poll makes eight */ var FAST_S = 2; +/* Low-power router (#101; the Vantage theme's Appearance, data-vt-power): + the live numbers as always, the slow parts (Wi-Fi state, the radios' + iwinfo, client capabilities, temperatures, wired hosts) once every + LOW_SLOW_MS, their last replies in between; nothing moves, and nothing + stands still mid-move: no backdrop, no flow dots (applyPower) */ +var LOW_SLOW_MS = 30 * 1000; +/* ... and after LOW_IDLE_MS without input (a page left open), the full + poll every LOW_IDLE_POLL_MS and no fast lane, until the next input */ +var LOW_IDLE_MS = 5 * 60 * 1000; +var LOW_IDLE_POLL_MS = 30 * 1000; var WINDOW_MS = 5 * 60 * 1000; /* throughput history shown */ var HIST_MAX = 90; var HIST_FAST = 160; /* five minutes at FAST_S, and some */ @@ -31,7 +41,7 @@ var GONE_KEEP_MS = 5 * 60 * 1000; /* disconnected stations stay listed */ var TALKERS = 3; /* top talkers shown; the tile keeps room for all */ var SWITCH_MS = 30 * 1000; /* LuCI runs swconfig for each switch's link state: at most this often */ var STORE_KEY = 'vantage.hist.v1'; -var VERSION = '1.0.17'; /* this package's, as its Makefile has it (tests/version.test.js) */ +var VERSION = '1.0.18'; /* this package's, as its Makefile has it (tests/version.test.js) */ var SVGNS = 'http://www.w3.org/2000/svg'; var HOSTAPD_OBJ = /^[A-Za-z0-9_.-]{1,64}$/; @@ -62,6 +72,7 @@ var callRrdns = rpc.declare({ object: 'network.rrdns', method: 'lookup', params: var callMdns = rpc.declare({ object: 'umdns', method: 'hosts' }); var callUciGet = rpc.declare({ object: 'uci', method: 'get', params: [ 'config' ], expect: { values: {} } }); var callSetAlias = rpc.declare({ object: 'luci.vantage', method: 'set_alias', params: [ 'mac', 'name', 'icon' ] }); +var callSetQuiet = rpc.declare({ object: 'luci.vantage', method: 'set_quiet', params: [ 'mac', 'quiet' ] }); var callAccess = rpc.declare({ object: 'session', method: 'access', params: [ 'scope', 'object', 'function' ], expect: { access: false } }); var hostapdCalls = {}; @@ -264,7 +275,7 @@ function sparkline(data, cols, vmax, cls, opts) { } cols.slice().reverse().forEach(function(ci) { var k = cols.indexOf(ci); - var segs = series.segments(data, ci, t0, t1, max, W, H, POLL_S * 3500); + var segs = series.segments(data, ci, t0, t1, max, W, H, gapMs()); var g = document.createElementNS(SVGNS, 'g'); g.setAttribute('class', 'vt-spark-s' + k); if (k === 0) { @@ -597,6 +608,15 @@ function readBackdrop() { return backdrop.STYLES.indexOf(v) >= 0 ? v : backdrop.STYLES[0]; } +/* a gap in a series: no sample for longer than this. A Low-power router + left idle asks every LOW_IDLE_POLL_MS: its samples are no gaps */ +function gapMs() { return lowPower() ? LOW_IDLE_POLL_MS * 1.75 : POLL_S * 3500; } + +function lowPower() { + var root = typeof document !== 'undefined' ? document.documentElement : null; + return !!(root && root.getAttribute && root.getAttribute('data-vt-power') === 'low'); +} + function writeBackdrop(v) { /* the theme takes it (and cancels the event) */ var ev = null; @@ -672,7 +692,9 @@ return view.extend({ var self = this; return L.resolveDefault(callUciGet('vantage'), {}).then(function(values) { var list = (values && typeof values === 'object') ? Object.keys(values).map(function(k) { return values[k]; }) : []; - self.aliases = names.aliasMap(list.slice(0, names.ALIAS_MAX + 1)); + var of = function(t) { return list.filter(function(s) { return s && s['.type'] === t; }); }; + self.aliases = names.aliasMap(of('client').slice(0, names.ALIAS_MAX + 1)); + self.quiet = names.quietSet(of('quiet').slice(0, names.QUIET_MAX + 1)); return self.aliases; }); }, @@ -680,31 +702,47 @@ return view.extend({ /* one poll's worth of raw replies; missing pieces degrade to {} */ fetch: function() { var started = Date.now(), self = this; + /* Low-power router: the slow parts once every LOW_SLOW_MS */ + var age = started - this.slowAt; + var slow = !lowPower() || !this.slowCache || !(age >= 0 && age < LOW_SLOW_MS); + var kept = this.slowCache || {}; return Promise.all([ L.resolveDefault(callInfo(), {}), L.resolveDefault(callRead('/proc/stat'), ''), L.resolveDefault(callIfDump(), []), L.resolveDefault(callDevs(), {}), - /* null when the call fails: no answer is not "no radios" */ - L.resolveDefault(callWifi(), null), + /* null when the call fails: no answer is not "no radios" (nor + no sensors or no wired hosts, which then read as none) */ + slow ? L.resolveDefault(callWifi(), null) : Promise.resolve(kept.wifi), L.resolveDefault(callHints(), {}), - L.resolveDefault(callThermal(), []), - L.resolveDefault(callWired(), {}), + slow ? L.resolveDefault(callThermal(), null) : Promise.resolve(kept.thermal), + slow ? L.resolveDefault(callWired(), null) : Promise.resolve(kept.wired), /* null when the call fails (an older plugin): netifd's metrics decide */ L.resolveDefault(callRoutes(), null) ]).then(function(r) { var wifiDevs = (r[4] && typeof r[4] === 'object') ? r[4] : null; var wiredReply = (r[7] && typeof r[7] === 'object') ? r[7] : {}; - var ifnames = []; + var ifnames = [], radioFirst = Object.create(null); Object.keys(wifiDevs || {}).forEach(function(rn) { - var ifs = (wifiDevs[rn] && Array.isArray(wifiDevs[rn].interfaces)) ? wifiDevs[rn].interfaces : []; + var ifs = (wifiDevs[rn] && Array.isArray(wifiDevs[rn].interfaces)) ? wifiDevs[rn].interfaces : [], first = true; + /* a radio read from the config has no run state: each of + its interfaces' iwinfo says whether it is up (model.js) */ + var cfg = wifiDevs[rn] && wifiDevs[rn].source === 'config'; ifs.forEach(function(i) { - if (i && typeof i.ifname === 'string' && HOSTAPD_OBJ.test(i.ifname) && ifnames.indexOf(i.ifname) < 0) ifnames.push(i.ifname); + if (i && typeof i.ifname === 'string' && HOSTAPD_OBJ.test(i.ifname) && ifnames.indexOf(i.ifname) < 0) { + ifnames.push(i.ifname); + if (first || cfg) radioFirst[i.ifname] = true; + first = false; + } }); }); - /* iwinfo per interface: channel and power for the radio, BSSID - and SSID for each network (luci.vantage wireless carries - configuration only) */ + /* iwinfo info (luci.vantage wireless carries configuration only): + a radio's first interface gives its channel, power and noise; + another network's BSSID and SSID come from hostapd's get_status, + asked anyway, once it answered with them. An interface hostapd + did not answer for (a client or mesh, a vendor driver) keeps + its own iwinfo info. Each costs the router ~15 ms. */ + var hapdKnown = self.hapdBss || {}; var per = []; /* the link state of a switch with hosts behind it, every SWITCH_MS: each answer runs swconfig on the device. Asked @@ -728,18 +766,31 @@ return view.extend({ }); ifnames.forEach(function(ifn) { per.push(L.resolveDefault(callAssoc(ifn), []).then(function(v) { return [ 'assoc', ifn, v ]; })); - per.push(hostapd(ifn, 'get_clients').then(function(v) { return [ 'hapd', ifn, v ]; })); + if (slow) per.push(hostapd(ifn, 'get_clients').then(function(v) { return [ 'hapd', ifn, v ]; })); per.push(hostapd(ifn, 'get_status').then(function(v) { return [ 'hapdStatus', ifn, v ]; })); - per.push(L.resolveDefault(callIwInfo(ifn), {}).then(function(v) { return [ 'iwinfo', ifn, v ]; })); + if (slow && (radioFirst[ifn] || !hapdKnown[ifn])) + per.push(L.resolveDefault(callIwInfo(ifn), {}).then(function(v) { return [ 'iwinfo', ifn, v ]; })); }); return Promise.all(per).then(function(parts) { - var assoc = Object.create(null), hapd = Object.create(null), hapdStatus = Object.create(null), iwinfo = Object.create(null); + var assoc = Object.create(null), hapdStatus = Object.create(null); + var hapd = slow ? Object.create(null) : kept.hapd, iwinfo = slow ? Object.create(null) : kept.iwinfo; parts.forEach(function(p) { if (p[0] === 'assoc') assoc[p[1]] = p[2]; else if (p[0] === 'hapd') hapd[p[1]] = p[2]; else if (p[0] === 'hapdStatus') hapdStatus[p[1]] = p[2]; else iwinfo[p[1]] = p[2]; }); + /* kept only when all three answered: a failure is asked again + at the next poll, not shown for LOW_SLOW_MS */ + if (slow && r[4] != null && r[6] != null && r[7] != null) { + self.slowAt = started; + self.slowCache = { wifi: r[4], thermal: r[6], wired: r[7], hapd: hapd, iwinfo: iwinfo }; + } + self.hapdBss = Object.create(null); + Object.keys(hapdStatus).forEach(function(ifn) { + var h = hapdStatus[ifn]; + if (h && typeof h.bssid === 'string' && h.bssid) self.hapdBss[ifn] = true; + }); var switchState = Object.create(null); Object.keys(swState).forEach(function(n) { switchState[n] = swState[n].ports; }); return { info: r[0] || {}, stat: r[1] || '', ifaces: r[2] || [], devs: r[3] || {}, wifi: wifiDevs, hints: r[5] || {}, thermal: r[6] || [], @@ -915,7 +966,7 @@ return view.extend({ this.stickyGen(m); m.clients.forEach(function(c) { c.exp = insight.experience(c); c.firstSeen = p.state.firstSeen[c.mac]; c.isNew = !!p.isNew[c.mac]; }); - st.health = insight.health(m, { cpu: st.cpu, uplinkRate: st.uplinkRate, temps: st.temps }); + st.health = insight.health(m, { cpu: st.cpu, uplinkRate: st.uplinkRate, temps: st.temps, quiet: this.quiet }); st.summary = insight.summary(st.health); st.radioInsights = insight.radioInsights(m.radios, st.radioRates); st.talkers = insight.topTalkers(m.clients, st.staRates, TALKERS); @@ -966,7 +1017,7 @@ return view.extend({ with their own previous samples, so the two lanes never mix */ refreshFast: function() { var self = this, st = this.st, up = this.m && this.m.uplink, dev = up && up.statsDev; - if (document.hidden || !this.el) return Promise.resolve(); + if (document.hidden || !this.el || this.idle()) return Promise.resolve(); return Promise.all([ L.resolveDefault(callRead('/proc/stat'), ''), dev ? L.resolveDefault(callDev(dev), null) : Promise.resolve(null) @@ -1001,7 +1052,7 @@ return view.extend({ paintFast: function() { var st = this.st; if (!this.m || !this.el || !this.el.root) return; - st.health = insight.health(this.m, { cpu: st.cpu, uplinkRate: st.uplinkRate, temps: st.temps }); + st.health = insight.health(this.m, { cpu: st.cpu, uplinkRate: st.uplinkRate, temps: st.temps, quiet: this.quiet }); st.summary = insight.summary(st.health); this.paintHead(); this.paintHealth(); @@ -1068,7 +1119,7 @@ return view.extend({ this.stickyGen(m); m.clients.forEach(function(c) { c.exp = insight.experience(c); c.firstSeen = st.presence && st.presence.firstSeen[c.mac]; c.isNew = !!st.isNew[c.mac]; }); st.talkers = insight.topTalkers(m.clients, st.staRates, TALKERS); - st.health = insight.health(m, { cpu: st.cpu, uplinkRate: st.uplinkRate, temps: st.temps }); + st.health = insight.health(m, { cpu: st.cpu, uplinkRate: st.uplinkRate, temps: st.temps, quiet: this.quiet }); st.summary = insight.summary(st.health); this.m = m; this.paint(); @@ -1079,8 +1130,15 @@ return view.extend({ if (document.hidden) { this.st.paused = true; this.paintLive(); return Promise.resolve(); } /* back from a hidden tab: CPU starts over, rather than read as the average over the time nobody was looking */ - if (this.st.paused) this.st.stat = null; - this.st.paused = false; + if (this.st.paused) { this.st.stat = null; this.st.paused = false; this.paintLive(); } + /* one at a time; and none within 2 s of the last one's start (load() + has just asked for all of it, and a poll loop that starts runs what + it holds at once), or, idle (Low-power router), within + LOW_IDLE_POLL_MS; a clock stepped back counts as time gone */ + var since = Date.now() - (this.fullAt || 0); + if (this.fetching || (since >= 0 && since < (this.idle() ? LOW_IDLE_POLL_MS : 2000))) return Promise.resolve(); + this.fullAt = Date.now(); + this.fetching = true; return this.fetch().then(function(raw) { self.ingest(raw); self.st.lastOk = Date.now(); @@ -1089,7 +1147,32 @@ return view.extend({ }).catch(function(err) { self.st.lastErr = err; self.paintLive(); - }); + }).then(function() { self.fetching = false; }); + }, + + /* Low-power router, and nobody has touched the page for LOW_IDLE_MS */ + idle: function() { + return lowPower() && Date.now() - (this.inputAt || 0) > LOW_IDLE_MS; + }, + + /* input: the page is watched; back from idle, live at once (unless + LuCI's refresh is paused: its resume asks) */ + noteInput: function() { + var was = this.idle(); + this.inputAt = Date.now(); + if (was && (typeof poll.active !== 'function' || poll.active())) this.refresh(); + }, + + /* Low-power router switched (the theme's Appearance): the still + picture reduced motion has (app.css .vt-low: busy wires as a still + dotted line, no flow dots) and no backdrop; the pick stays for when + it is off */ + applyPower: function() { + var low = lowPower(); + if (this.el && this.el.root) this.el.root.classList.toggle('vt-low', low); + if (this.backdrop) this.backdrop.style(low ? 'none' : this.backdropStyle); + this.paintWireState(); + this.paintLive(); }, /* ----------------------------------------------------------- render */ @@ -1113,6 +1196,7 @@ return view.extend({ this.buildDrawer() ]); this.el.root = root; + root.classList.toggle('vt-low', lowPower()); /* wires follow the nodes' geometry: redrawn when the path or a node changes size (observer callbacks run after layout, so the reads there force nothing), never on a poll that moves nothing */ @@ -1120,9 +1204,24 @@ return view.extend({ this.paint(); - poll.add(L.bind(this.refresh, this), POLL_S); + /* the fast lane first: a poll loop that starts here runs what it + holds at once, and load() has just asked for everything the full + poll would; the fast lane's first run only takes CPU's baseline, + after the page's own requests, so its first reading (at FAST_S) + is not the router building this page (#101) */ + this.inputAt = this.fullAt = Date.now(); poll.add(L.bind(this.refreshFast, this), FAST_S); + poll.add(L.bind(this.refresh, this), POLL_S); + window.addEventListener('vantage:power', function() { self.applyPower(); }); + [ 'pointerdown', 'pointermove', 'keydown', 'wheel', 'touchstart', 'focus' ].forEach(function(t) { + window.addEventListener(t, function() { self.noteInput(); }, { passive: true }); + }); + this.focused = typeof document.hasFocus !== 'function' || document.hasFocus(); + window.addEventListener('blur', function() { self.focused = false; self.paintLive(); }); + window.addEventListener('focus', function() { self.focused = true; self.paintLive(); }); document.addEventListener('visibilitychange', function() { + /* the tab shown again: someone is looking */ + if (!document.hidden) self.inputAt = Date.now(); if (!document.hidden && self.st.paused && poll.active()) self.refresh(); else self.paintLive(); }); @@ -1462,7 +1561,7 @@ return view.extend({ showBackdrop: function(v) { if (backdrop.STYLES.indexOf(v) < 0 || v === this.backdropStyle) return; this.backdropStyle = v; - if (this.backdrop) this.backdrop.style(v); + if (this.backdrop) this.backdrop.style(lowPower() ? 'none' : v); if (this.backdropPick && this.backdropPick.value !== v) this.backdropPick.value = v; }, @@ -1720,12 +1819,14 @@ return view.extend({ this.el.live.hidden = (state === 'ok' || stopped) && vantageTheme(); this.el.live.setAttribute('title', label); txt(this.el.liveText, label); - this.setMotion(state !== 'paused'); + this.setMotion(state !== 'paused' && this.focused !== false && !lowPower()); }, - /* Nothing moves while the page is paused: the status circle's ring - (app.css, .vt-still), the flow dots stay where they are and the - backdrop keeps its last frame. */ + /* Nothing moves while the page is paused or another window has the + focus (the numbers still update): the status circle's ring and the + live beat (app.css, .vt-still), the flow dots stay where they are + and the backdrop keeps its last frame. A moving part keeps the + browser drawing every frame. */ setMotion: function(on) { if (this.motionOn === on) return; this.motionOn = on; @@ -1879,7 +1980,7 @@ return view.extend({ el.path ])); /* packets or stars behind the path, moved by the uplink's rate */ - this.backdrop = backdrop.mount(tile, el.path, this.backdropStyle); + this.backdrop = backdrop.mount(tile, el.path, lowPower() ? 'none' : this.backdropStyle); return tile; }, @@ -2298,7 +2399,7 @@ return view.extend({ /* which wires carry traffic and how fast: classes only, no geometry */ paintWireState: function() { - var self = this, map = this.wireMap, still = reducedMotion() || !!this.flowsHidden; + var self = this, map = this.wireMap, still = reducedMotion() || !!this.flowsHidden || lowPower(); if (!map) return; this.wireList().forEach(function(w) { var g = map[w.key]; @@ -2558,8 +2659,8 @@ return view.extend({ var x = (1 - k * 60000 / dm.span) * W; svg.appendChild(svgPath('M' + x.toFixed(1) + ' 0V' + H, 'vt-chart-vgrid')); }); - var segD = series.trace(d, s.dn, dm.t0, dm.t1, W, H, POLL_S * 3500, g.dn.frac); - var segU = series.trace(d, s.up, dm.t0, dm.t1, W, H, POLL_S * 3500, g.up.frac); + var segD = series.trace(d, s.dn, dm.t0, dm.t1, W, H, gapMs(), g.dn.frac); + var segU = series.trace(d, s.up, dm.t0, dm.t1, W, H, gapMs(), g.up.frac); [ [ segD, g.dn, '' ], [ segU, g.up, ' vt-dir-up' ] ].forEach(function(h) { var area = svgPath(series.curveArea(h[0], h[1].base * H), 'vt-series-area' + h[2]); area.setAttribute('fill', fadeFill(svg, h[1].flip, h[2].trim())); @@ -2603,7 +2704,7 @@ return view.extend({ ]), E('div', { 'class': 'vt-mult-plot vt-chart-' + style }, [ svg - ].concat(sd.n ? g.labels.map(scaleLabel) : [], series.gaps(d, dm.t0, dm.t1, POLL_S * 3500).map(gapBand), [ + ].concat(sd.n ? g.labels.map(scaleLabel) : [], series.gaps(d, dm.t0, dm.t1, gapMs()).map(gapBand), [ sd.n < 2 ? E('span', { 'class': 'vt-sk-note' }, [ _('collecting…') ]) : '', tailDot(segD, ''), tailDot(segU, ' vt-dir-up'), @@ -2728,7 +2829,7 @@ return view.extend({ dom.content(this.el.radioSum, m.radios.map(function(r) { var rr = st.radioRates[r.id]; return E('button', { 'type': 'button', 'class': 'vt-rsum', 'click': function() { self.openDrawer('radio', r.id); } }, [ - E('span', { 'class': 'vt-status vt-status-' + (r.disabled ? 'warn' : r.up ? 'ok' : 'err'), 'aria-hidden': 'true' }), + E('span', { 'class': 'vt-status vt-status-' + (r.disabled ? 'off' : r.up ? 'ok' : 'err'), 'aria-hidden': 'true' }), bandBadge(r.band), E('span', { 'class': 'vt-rsum-main vt-tn' }, [ r.channel ? _('Ch %d · %d MHz').format(r.channel, r.width || 20) : fmt.DASH ]), E('span', { 'class': 'vt-rsum-sub vt-tn' }, [ r.clients === 1 ? _('1 client') : _('%d clients').format(r.clients) ]), @@ -2757,7 +2858,7 @@ return view.extend({ E('header', { 'class': 'vt-radio-head' }, [ bandBadge(r.band), E('span', { 'class': 'vt-radio-name' }, [ r.gen || r.id ]), - E('span', { 'class': 'vt-status vt-status-' + (r.disabled ? 'warn' : r.up ? 'ok' : 'err') }, [ r.disabled ? _('Disabled') : r.up ? _('Up', 'vantage') : _('Down', 'vantage') ]), + E('span', { 'class': 'vt-status vt-status-' + (r.disabled ? 'off' : r.up ? 'ok' : 'err') }, [ r.disabled ? _('Disabled') : r.up ? _('Up', 'vantage') : _('Down', 'vantage') ]), E('button', { 'type': 'button', 'class': 'vt-icon-action', 'title': _('Radio details'), 'aria-label': _('Radio details'), 'click': function() { self.openDrawer('radio', r.id); } }, [ icon('chevron') ]) ]), @@ -2906,7 +3007,7 @@ return view.extend({ hay = [ c.name, c.macLabel, c.mac, c.vendor, c.port, c.network, c.nameSourceLabel ]; } else { - if (chip === 'weak' && !(c.signal != null && c.signal < insight.WEAK_DBM)) return false; + if (chip === 'weak' && !this.isWeak(c)) return false; if (chip === 'new' && !c.isNew) return false; if (chip === 'active' && !(this.st.staRates[c.mac] && this.st.staRates[c.mac].rx + this.st.staRates[c.mac].tx > 8000)) return false; if (/^band:/.test(chip) && c.band !== chip.slice(5)) return false; @@ -2919,7 +3020,7 @@ return view.extend({ /* the quick filters of the list shown: [ id, label, count, warn ] */ filterDefs: function() { - var m = this.m, st = this.st, out; + var self = this, m = this.m, st = this.st, out; if (this.ui.kind === 'wired') { var hosts = m.wiredHosts, ports = []; out = [ [ 'all', _('All'), hosts.length ] ]; @@ -2932,7 +3033,7 @@ return view.extend({ m.clients.forEach(function(c) { if (c.band && bands.indexOf(c.band) < 0) bands.push(c.band); }); bands.sort().forEach(function(b) { out.push([ 'band:' + b, wifi.bandLabel(b), m.clients.filter(function(c) { return c.band === b; }).length ]); }); out.push([ 'active', _('Active'), m.clients.filter(function(c) { var r = st.staRates[c.mac]; return r && r.rx + r.tx > 8000; }).length ]); - out.push([ 'weak', _('Weak signal'), m.clients.filter(function(c) { return c.signal != null && c.signal < insight.WEAK_DBM; }).length, true ]); + out.push([ 'weak', _('Weak signal'), m.clients.filter(function(c) { return self.isWeak(c); }).length, true ]); out.push([ 'new', _('New', 'vantage'), m.clients.filter(function(c) { return c.isNew; }).length ]); return out; }, @@ -3381,6 +3482,13 @@ return view.extend({ var r = c.gone ? null : st.staRates[c.mac], hist = st.clientHist[c.mac] || []; var exp = c.exp || insight.experience(c); + /* #110: a weak station far away on purpose can be left out of the + warnings; shown while it is weak or set so, and then kept while + its details are open (a signal around the line would make the + row come and go under the pointer) */ + var quietOn = !!(this.quiet && this.quiet[c.mac]); + if (quietOn || (c.signal != null && c.signal < insight.WEAK_DBM)) this.quietShown = c.mac; + var quietRow = !c.gone && (quietOn || this.quietShown === c.mac) ? this.quietRow(c, quietOn) : ''; var radio = this.m.radios.filter(function(x) { return x.id === c.radio; })[0]; var title = this.drawerWho(c); @@ -3397,6 +3505,7 @@ return view.extend({ c.gone ? E('div', { 'class': 'vt-banner vt-banner-muted' }, [ icon('info'), E('span', {}, [ _('Disconnected %s; shown from the last sample.').format(fmt.ago(Date.now() - c.goneAt)) ]) ]) : '', E('div', { 'class': 'vt-dactions' }, [ rename, pageLink(insight.PAGES.wireless, _('Wireless settings')) ]), this.el.renameSlot = E('div', { 'class': 'vt-rename-slot' }), + quietRow, c.gone ? '' : E('div', { 'class': 'vt-expcard vt-expcard-' + exp.level }, [ E('div', { 'class': 'vt-ring vt-tn' }, [ this.ring(exp.score), E('span', { 'class': 'vt-ring-n' }, [ String(exp.score) ]) ]), E('div', { 'class': 'vt-expcard-text' }, [ @@ -3577,6 +3686,61 @@ return view.extend({ }); }, + /* #110: whether a station's weak signal stays out of the warnings; a + checkbox for a login that may name stations, else a line when set */ + quietRow: function(c, on) { + var self = this, key = names.normMac(c.mac), busy = this.quietBusy || {}, said = this.quietSaid || {}; + if (!this.canWrite) return on ? E('p', { 'class': 'vt-quiet vt-muted' }, [ _('Its weak signal is left out of the warnings.') ]) : ''; + var box = E('input', { 'type': 'checkbox' }); + /* the drawer is rebuilt on every poll: what is under way and what + the last attempt said come from the view, not this row */ + box.checked = on; + box.disabled = !!busy[key]; + box.addEventListener('change', function() { box.disabled = true; self.saveQuiet(c.mac, box.checked); }); + return E('label', { 'class': 'vt-quiet' }, [ box, E('span', {}, [ _('Don\'t warn about its signal') ]), + E('span', { 'class': 'vt-quiet-err', 'role': 'status' }, [ said[key] || '' ]) ]); + }, + + /* a weak signal the warnings count: not a station set quiet (#110) */ + isWeak: function(c) { + return c.signal != null && c.signal < insight.WEAK_DBM && !(this.quiet && this.quiet[c.mac]); + }, + + /* sent to luci.vantage set_quiet, which keeps one quiet section per + MAC in /etc/config/vantage and commits it at once (as set_alias); + reloaded after every attempt, and the health checks with it. + -> Promise */ + saveQuiet: function(mac, on) { + var self = this, key = names.normMac(mac); + this.quietBusy = this.quietBusy || {}; + this.quietSaid = this.quietSaid || {}; + if (!key || this.quietBusy[key]) return Promise.resolve(false); + this.quietBusy[key] = true; + delete this.quietSaid[key]; + return Promise.resolve(callSetQuiet(key, on === true)).then(function(r) { + if (r && typeof r === 'object' && r.ok === true) return true; + switch (r && typeof r === 'object' ? r.error : null) { + case 'too-many': return _('This device already keeps %d of these; turn some off first.').format(names.QUIET_MAX); + case 'failed': return _('The device could not write /etc/config/vantage.'); + } + return false; + }, function() { return false; }).then(function(res) { + delete self.quietBusy[key]; + if (res !== true) self.quietSaid[key] = typeof res === 'string' ? res : _('Could not save this.'); + var done = function() { self.rehealth(); return res; }; + return self.loadAliases().then(done, done); + }); + }, + + /* the health checks again, after a station was set quiet or not */ + rehealth: function() { + var st = this.st; + if (!this.m || !st) return; + st.health = insight.health(this.m, { cpu: st.cpu, uplinkRate: st.uplinkRate, temps: st.temps, quiet: this.quiet }); + st.summary = insight.summary(st.health); + this.paint(); + }, + /* set_alias refusal -> message; false for anything else (no grant, no plugin, transport error) */ aliasError: function(r) { diff --git a/luci-app-vantage/po/templates/vantage.pot b/luci-app-vantage/po/templates/vantage.pot index 0ba7940e9..cfb7ade80 100644 --- a/luci-app-vantage/po/templates/vantage.pot +++ b/luci-app-vantage/po/templates/vantage.pot @@ -1,47 +1,47 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3614 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3778 msgid "%d MHz (%d–%d MHz)" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:112 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:114 msgid "%d SSID broadcasting" msgid_plural "%d SSIDs broadcasting" msgstr[0] "" msgstr[1] "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:112 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:114 msgid "%d SSID broadcasting, %d idle" msgid_plural "%d SSIDs broadcasting, %d idle" msgstr[0] "" msgstr[1] "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:111 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:113 msgid "%d SSID on air" msgid_plural "%d SSIDs on air" msgstr[0] "" msgstr[1] "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:111 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:113 msgid "%d SSID · %d idle" msgid_plural "%d SSIDs · %d idle" msgstr[0] "" msgstr[1] "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1690 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2181 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2734 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1789 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2282 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2835 msgid "%d clients" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3071 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3172 msgid "%d connected" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2208 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2212 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3070 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2309 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2313 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3171 msgid "%d devices" msgstr "" @@ -50,32 +50,32 @@ msgctxt "vantage" msgid "%d h ago" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:133 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:139 msgid "%d measured client is above %s" msgid_plural "%d measured clients are above %s" msgstr[0] "" msgstr[1] "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:459 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:470 msgctxt "vantage" msgid "%d min" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/fmt.js:118 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:453 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:464 msgctxt "vantage" msgid "%d min ago" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3069 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3170 msgid "%d of %d" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1574 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1673 msgid "%d of %d columns" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:258 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:264 msgid "%d older devices (Wi-Fi 4 or earlier) slow airtime" msgstr "" @@ -89,47 +89,47 @@ msgid_plural "%d radios down" msgstr[0] "" msgstr[1] "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:108 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:110 msgid "%d radio off" msgid_plural "%d radios off" msgstr[0] "" msgstr[1] "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:110 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:112 msgid "%d radio up" msgid_plural "%d radios up" msgstr[0] "" msgstr[1] "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2726 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2827 msgid "%d radios" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:459 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:470 msgctxt "vantage" msgid "%d s" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/fmt.js:117 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:453 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:464 msgctxt "vantage" msgid "%d s ago" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:143 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:149 #: luci-app-vantage/htdocs/luci-static/resources/view/vantage/firewall.js:230 msgid "%d things need attention" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:120 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:124 msgid "%d weak" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2745 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2846 msgid "%d–%d MHz of the %d–%d MHz band" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:109 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:111 msgid "%s (%s) is disabled" msgstr "" @@ -143,27 +143,27 @@ msgstr "" msgid "%s (IPv%d)" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3436 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3545 msgid "%s (new this session)" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:24 -#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:375 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:378 msgid "%s Gbit/s" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/fmt.js:166 #: luci-app-vantage/htdocs/luci-static/resources/vantage/wifi.js:103 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2752 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2766 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3168 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3607 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2853 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2867 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3269 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3771 msgid "%s MHz" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:24 #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:51 -#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:375 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:378 msgid "%s Mbit/s" msgstr "" @@ -171,36 +171,36 @@ msgstr "" msgid "%s accepts every connection" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:123 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:127 msgid "%s at %s; below %s roaming and throughput suffer" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:83 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2426 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2527 msgctxt "vantage" msgid "%s available" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2772 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3615 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2873 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3779 msgid "%s dBm" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:271 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:288 msgid "%s device" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:174 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:180 msgid "%s device on a newer radio; uses more airtime per byte" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3641 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3805 msgid "%s error" msgid_plural "%s errors" msgstr[0] "" msgstr[1] "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3403 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3512 msgid "%s experience" msgstr "" @@ -216,15 +216,15 @@ msgstr "" msgid "%s has no carrier: cable unplugged or switch port down" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1540 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1639 msgid "%s hidden" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3685 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3849 msgid "%s in · %s out" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:108 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:110 msgid "%s is disabled" msgstr "" @@ -236,7 +236,7 @@ msgstr "" msgid "%s is in no zone and accepts every connection" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1533 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1632 msgid "%s is narrower" msgstr "" @@ -244,17 +244,17 @@ msgstr "" msgid "%s is not up" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3127 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3228 msgid "" "%s is shared by %d devices (a switch or another access point behind it); its " "%s link is not theirs" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3126 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3227 msgid "%s is shared by %d devices behind the switch" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1536 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1635 msgid "%s is wider" msgstr "" @@ -270,23 +270,23 @@ msgstr "" msgid "%s may open the router's admin" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1655 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1754 msgid "%s moved" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1530 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1629 msgid "%s moved down" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1521 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1620 msgid "%s moved left" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1524 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1623 msgid "%s moved right" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1527 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1626 msgid "%s moved up" msgstr "" @@ -299,9 +299,9 @@ msgid "%s negotiated only %d Mbit/s; a cable pair or port may be faulty" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:84 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2427 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2456 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3711 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2528 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2557 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3875 msgid "%s of %s" msgstr "" @@ -309,34 +309,34 @@ msgstr "" msgid "%s of %s available (%s in use)" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:169 -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:170 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:175 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:176 msgid "%s of frames fail" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:170 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:176 msgid "%s of frames to the device fail" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:169 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:175 msgid "%s of frames to the device fail; interference likely" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3709 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3873 msgid "%s over %d core" msgid_plural "%s over %d cores" msgstr[0] "" msgstr[1] "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2521 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2622 msgid "%s radio" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3441 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3550 msgid "%s sent · %s retried · %s failed" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1580 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1679 msgid "%s shown" msgstr "" @@ -352,19 +352,19 @@ msgstr "" msgid "%s used" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2464 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2565 msgid "%s used of %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3124 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3225 msgid "%s · %d devices" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:122 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:126 msgid "%s · %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3433 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3542 msgid "%s · channel %d · %d MHz" msgstr "" @@ -380,39 +380,39 @@ msgstr "" msgid "%s: no carrier" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3615 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3779 msgid "(configured %d dBm, limited by regulatory rules)" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2180 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3260 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2281 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3361 msgid "(hidden)" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1690 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2181 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2734 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1789 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2282 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2835 msgid "1 client" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3071 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3172 msgid "1 connected" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2212 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3070 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2313 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3171 msgid "1 device" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:258 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:264 msgid "1 older device (Wi-Fi 4 or earlier) slows airtime" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2726 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2827 msgid "1 radio" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:143 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:149 #: luci-app-vantage/htdocs/luci-static/resources/view/vantage/firewall.js:230 msgid "1 thing needs attention" msgstr "" @@ -436,30 +436,30 @@ msgstr "" msgid "60 GHz" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2934 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3035 msgid "Active" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3445 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3477 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3554 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3586 msgid "Address type" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3674 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3838 msgid "Addresses" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2774 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2875 msgid "Airtime" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:42 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:45 msgctxt "vantage" msgid "Alias" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2925 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2931 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3026 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3032 msgid "All" msgstr "" @@ -484,11 +484,11 @@ msgctxt "vantage" msgid "B" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:257 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:263 msgid "Busiest radio: %s of Wi-Fi traffic" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2391 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2492 msgid "Busy share of each CPU core" msgstr "" @@ -504,88 +504,88 @@ msgstr[1] "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:71 #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:72 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2384 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3709 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2485 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3873 msgctxt "vantage" msgid "CPU" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:260 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:263 msgid "Cache (reclaimable)" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3550 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3659 msgid "Cancel" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3428 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3537 msgctxt "vantage" msgid "Capabilities" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3666 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3830 msgid "Carrier" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3614 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3778 msgid "Centre frequency" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2765 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2866 msgid "Ch %d" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2161 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2733 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2262 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2834 msgid "Ch %d · %d MHz" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3607 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3771 msgid "Channel" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2161 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2262 msgid "Channel —" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2798 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2899 msgctxt "vantage" msgid "Clear filter" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1217 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2771 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2816 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2817 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1316 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2872 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2917 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2918 msgid "Clients" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3621 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3785 msgid "Clients on this radio" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3277 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3378 msgid "Close" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3183 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3284 msgid "Connected" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3153 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3254 msgid "Connected after you opened this page" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3434 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3543 msgid "Connected for" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3431 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3462 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3540 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3571 msgid "Connection" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2418 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2519 msgid "Core %d: %s" msgstr "" @@ -593,19 +593,23 @@ msgstr "" msgid "Could not read the firewall configuration" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3533 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3642 msgid "Could not save the name (no permission or the device refused it)." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1417 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1516 msgid "Could not save this for every browser. Try again." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3682 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3729 +msgid "Could not save this." +msgstr "" + +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3846 msgid "Counters since boot" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3619 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3783 msgid "Country" msgstr "" @@ -614,30 +618,30 @@ msgid "" "Custom rule files are configured (%s); rules in them are not listed here." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1676 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1775 msgid "Customize" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1484 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1485 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1675 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1583 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1584 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1774 msgid "Customize the dashboard" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:42 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:45 msgid "DHCP" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3490 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3599 msgid "DHCP hostname" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:42 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3680 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:45 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3844 msgid "DNS" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2092 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2193 msgid "DNS %s" msgstr "" @@ -646,113 +650,117 @@ msgstr "" msgid "Dashboard" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3006 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3008 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3098 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3700 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3107 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3109 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3199 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3864 msgid "Device" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3517 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3626 msgid "Device name" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3546 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3655 msgid "Device type" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3084 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3185 msgid "" "Devices on the Ethernet ports appear here once they send traffic; the bridge " "forgets quiet ones after about five minutes." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2162 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2735 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2760 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3612 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2263 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2836 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2861 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3776 msgid "Disabled" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3397 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3505 msgid "Disconnected %s; shown from the last sample." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1499 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3700 +msgid "Don't warn about its signal" +msgstr "" + +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1598 msgctxt "vantage" msgid "Done" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:45 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2162 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2735 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2760 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3612 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2263 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2836 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2861 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3776 msgctxt "vantage" msgid "Down" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2498 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2593 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2668 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2599 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2694 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2769 msgid "Download" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:378 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:389 msgid "Download (to clients)" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3439 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3548 msgctxt "vantage" msgid "Downloaded" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1561 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1660 msgid "" "Drag a tile by its handle or use its buttons. Done saves it for medium " "screens in every browser." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1562 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1661 msgid "" "Drag a tile by its handle or use its buttons. Done saves it for narrow " "screens in every browser." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1560 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1659 msgid "" "Drag a tile by its handle or use its buttons. Done saves it for wide screens " "in every browser." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1561 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1660 msgid "" "Drag a tile by its handle or use its buttons. Saved in this browser for " "medium screens." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1562 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1661 msgid "" "Drag a tile by its handle or use its buttons. Saved in this browser for " "narrow screens." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1560 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1659 msgid "" "Drag a tile by its handle or use its buttons. Saved in this browser for wide " "screens." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1512 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1611 msgid "Drag to move" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3685 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3849 msgctxt "vantage" msgid "Dropped" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3239 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3340 msgid "Edit" msgstr "" @@ -760,53 +768,57 @@ msgstr "" msgid "Enhanced Open (OWE)" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1763 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1864 msgid "Error" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:143 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:133 +msgid "Every client here is set not to warn about its signal" +msgstr "" + +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:149 msgid "Everything looks healthy" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:179 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:185 #: luci-app-vantage/htdocs/luci-static/resources/vantage/wifi.js:117 msgctxt "vantage" msgid "Excellent" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3008 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3177 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3109 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3278 msgid "Experience" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:179 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:185 #: luci-app-vantage/htdocs/luci-static/resources/vantage/wifi.js:119 msgctxt "vantage" msgid "Fair" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:158 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:164 msgid "Fair signal" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:158 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:164 msgid "Fair signal %s; lower rates at range" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2795 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2996 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2896 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3097 msgid "Filter by name, address, SSID…" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2996 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3097 msgid "Filter by name, address, port…" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2796 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2897 msgid "Filter clients" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3703 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3867 msgctxt "vantage" msgid "Firmware" msgstr "" @@ -819,24 +831,24 @@ msgstr "" msgid "Forwarding is accepted by default" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3441 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3550 msgid "Frames to device" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:261 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:264 msgctxt "vantage" msgid "Free" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3426 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3535 msgid "From device" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3166 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3267 msgid "From device: %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3661 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3825 msgid "From network" msgstr "" @@ -846,9 +858,9 @@ msgid "" "files are not shown." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2090 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3118 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3677 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2191 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3219 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3841 msgid "Gateway" msgstr "" @@ -861,7 +873,7 @@ msgstr "" msgid "General Settings" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3427 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3536 msgctxt "vantage" msgid "Generation" msgstr "" @@ -871,31 +883,31 @@ msgctxt "vantage" msgid "GiB" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3445 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3477 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3554 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3586 msgid "Globally unique" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3445 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3477 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3554 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3586 msgid "Globally unique · %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:179 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:185 #: luci-app-vantage/htdocs/luci-static/resources/vantage/wifi.js:118 msgctxt "vantage" msgid "Good" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:159 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:165 msgid "Good signal" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:159 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:165 msgid "Good signal %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1445 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1544 msgid "Grid packets" msgstr "" @@ -911,36 +923,36 @@ msgstr "" msgid "Half duplex" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1109 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1192 msgctxt "vantage" msgid "Health checks" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1577 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3260 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1676 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3361 msgctxt "vantage" msgid "Hidden" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1539 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1638 msgid "Hide %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3446 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3478 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3555 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3587 msgid "IP addresses" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3675 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3839 msgid "IPv4" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3676 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3840 msgid "IPv6" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3443 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3475 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3552 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3584 msgid "Identity" msgstr "" @@ -948,11 +960,11 @@ msgstr "" msgid "In no zone: the default policies apply." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3672 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3836 msgid "In the tunnel" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:259 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:262 msgctxt "vantage" msgid "In use" msgstr "" @@ -962,21 +974,21 @@ msgctxt "vantage" msgid "Input" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2140 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2241 msgid "Interface" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3669 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3833 msgid "Interface up for" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3460 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3647 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3659 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3569 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3811 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3823 msgid "Interfaces" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2090 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2191 msgid "Internet" msgstr "" @@ -1002,11 +1014,15 @@ msgid "" "itself." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3704 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3693 +msgid "Its weak signal is left out of the warnings." +msgstr "" + +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3868 msgid "Kernel" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2470 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2571 msgid "Kernel %s" msgstr "" @@ -1015,58 +1031,58 @@ msgctxt "vantage" msgid "KiB" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2810 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2911 msgid "Kind of client" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3435 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3544 msgctxt "vantage" msgid "Last activity" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3007 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3142 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3473 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3108 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3243 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3582 msgid "Last heard" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1497 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1596 msgid "Layout reset" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3152 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3253 msgid "Left %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:174 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3154 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:180 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3255 msgctxt "vantage" msgid "Legacy" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3006 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3122 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3424 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3464 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3665 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3107 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3223 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3533 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3573 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3829 msgctxt "vantage" msgid "Link" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3008 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3165 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3109 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3266 msgid "Link rate" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1712 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3006 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3008 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3133 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3170 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1811 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3107 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3109 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3234 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3271 msgid "Live" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3708 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3872 msgid "Load" msgstr "" @@ -1082,41 +1098,41 @@ msgid_plural "Load %s · %d cores" msgstr[0] "" msgstr[1] "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3710 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3874 msgctxt "vantage" msgid "Load average" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2372 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2473 msgid "Load average over 1, 5 and 15 minutes" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2408 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2509 msgid "Load avg %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3706 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3870 msgid "Local time" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1376 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1475 msgid "Log in again to save this for every browser." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:164 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:170 msgid "Low link rate %s despite good signal; interference or an old device" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:164 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:170 msgid "Low link rate for its signal" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:43 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:46 msgid "MAC" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3444 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3476 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3553 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3585 msgid "MAC address" msgstr "" @@ -1124,11 +1140,11 @@ msgstr "" msgid "MCS %d" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1532 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1631 msgid "Make %s narrower" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1535 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1634 msgid "Make %s wider" msgstr "" @@ -1145,11 +1161,11 @@ msgid "Measuring…" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:83 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2395 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2496 msgid "Memory" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3711 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3875 msgid "Memory in use" msgstr "" @@ -1158,91 +1174,91 @@ msgctxt "vantage" msgid "MiB" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1431 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1530 msgid "Mirrored" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1432 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1531 msgid "Mirrored, scale per direction" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3613 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3777 msgid "Mode" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3701 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3865 msgid "Model" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1529 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1628 msgid "Move %s down" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1520 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1619 msgid "Move %s left" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1523 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1622 msgid "Move %s right" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1526 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1625 msgid "Move %s up" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1512 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1611 msgid "Move %s: drag, or use the arrow keys" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3545 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3654 msgid "Name" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:134 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3585 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:138 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3749 msgid "Name contains invisible or control characters" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3447 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3479 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3556 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3588 msgid "Name from" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3103 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3204 msgid "Name from: %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:132 -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:137 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3586 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:136 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:141 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3750 msgid "Name is longer than %d characters" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:131 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:135 msgid "Name must be text" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3388 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3457 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3496 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3566 msgid "Name this device" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3006 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3008 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3132 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3162 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3432 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3472 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3107 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3109 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3233 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3263 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3541 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3581 msgid "Network" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1217 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1877 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1878 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1316 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1978 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1979 msgid "Network path" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1450 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1549 msgid "Network path background" msgstr "" @@ -1250,38 +1266,38 @@ msgstr "" msgid "Networks: %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2936 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3153 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3037 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3254 msgctxt "vantage" msgid "New" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2037 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2138 msgid "No SSIDs" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:119 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:123 msgid "No clients" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3086 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3626 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3187 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3790 msgid "No clients connected" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3214 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3315 msgid "No clients connected." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3077 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3178 msgid "No clients in this view" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3077 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3178 msgid "No clients match “%s”" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2091 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2192 msgctxt "vantage" msgid "No default route" msgstr "" @@ -1290,7 +1306,7 @@ msgstr "" msgid "No interface with a route" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3651 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3815 msgid "No interface with a route is up." msgstr "" @@ -1299,7 +1315,7 @@ msgid "No internet-facing zone found" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:47 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3666 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3830 msgid "No link" msgstr "" @@ -1307,17 +1323,17 @@ msgstr "" msgid "No network interface with a route is up" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2018 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2119 msgid "No other interfaces are up" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:183 -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:185 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:189 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:191 msgid "No problems detected" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:105 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2041 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2142 msgid "No radios reported" msgstr "" @@ -1330,20 +1346,24 @@ msgstr "" msgid "No signal" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:119 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:123 msgid "No stations are associated right now" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3083 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:133 +msgid "No warnings asked for" +msgstr "" + +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3184 msgid "No wired devices heard" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3248 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3349 msgctxt "vantage" msgid "No wireless networks configured." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2740 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2841 msgid "No wireless radios are reported by this device." msgstr "" @@ -1358,39 +1378,39 @@ msgstr "" msgid "No zones are configured." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3214 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3315 msgid "Nobody is moving data right now." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2773 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2874 msgid "Noise" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3429 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3538 msgid "Noise / SNR" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3617 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3618 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3781 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3782 msgid "Noise floor" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:105 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1445 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1544 msgid "None" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:150 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3584 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:154 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3748 msgid "Not a station MAC address" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3379 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3480 msgid "Not connected" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3134 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3469 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3235 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3578 msgid "Not counted per device on a shared port" msgstr "" @@ -1398,15 +1418,15 @@ msgstr "" msgid "Not in effect" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2445 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2546 msgid "Not reported" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:129 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:135 msgid "Not reported by the driver" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3493 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3602 msgid "Nothing better known" msgstr "" @@ -1423,11 +1443,11 @@ msgctxt "vantage" msgid "OWE" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:175 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:181 msgid "Older %s device" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3154 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3255 msgid "Older Wi-Fi generation than the radio; uses more airtime" msgstr "" @@ -1435,7 +1455,7 @@ msgstr "" msgid "On this router" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3008 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3109 msgctxt "vantage" msgid "Online" msgstr "" @@ -1452,7 +1472,7 @@ msgctxt "vantage" msgid "Open" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3052 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3153 msgid "Open details of %s" msgstr "" @@ -1468,7 +1488,7 @@ msgstr "" msgid "Open network" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:852 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:858 msgid "OpenWrt device" msgstr "" @@ -1478,11 +1498,11 @@ msgid "" "new rules: what is open is unknown." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1429 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1528 msgid "Overlaid" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1430 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1529 msgid "Overlaid, log scale" msgstr "" @@ -1490,15 +1510,15 @@ msgstr "" msgid "Overview" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3428 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3537 msgid "PMF" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1710 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1809 msgid "Paused" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1710 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1809 msgid "Paused while hidden" msgstr "" @@ -1512,139 +1532,139 @@ msgid "" "on to your network: what every router lets in." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3702 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3866 msgctxt "vantage" msgid "Platform" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:179 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:185 msgctxt "vantage" msgid "Poor" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3463 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3572 msgid "Port" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:365 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:368 msgid "Port %d" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3127 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3228 msgid "Port %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2205 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2306 msgid "Port total: %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:43 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:46 msgid "Private" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3445 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3554 msgid "Private Wi-Fi address (randomised by the device)" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3477 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3586 msgid "Private address (randomised by the device)" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:270 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:287 msgid "Private device" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3699 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3863 msgid "Processes" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3668 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3832 msgid "Protocol" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2805 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2807 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2906 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2908 msgid "Quick filters" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3433 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3611 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3542 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3775 msgctxt "vantage" msgid "Radio" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2761 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2862 msgid "Radio details" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:255 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:261 msgid "Radio is disabled" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:256 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:262 msgid "Radio is enabled but not up" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2785 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3605 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2886 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3769 msgid "Radio settings" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1217 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2713 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2715 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1316 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2814 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2816 msgid "Radios" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2092 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2193 msgid "Reachability not probed" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3119 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3220 msgid "Reached through the uplink port %s, not connected to this device" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3659 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3823 msgid "Realtime graphs" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3683 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3847 msgctxt "vantage" msgid "Received" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1711 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1810 msgctxt "vantage" msgid "Reconnecting…" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2952 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3053 msgid "Remove filter: %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3551 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3660 msgid "Remove name" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3388 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3457 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3496 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3566 msgctxt "vantage" msgid "Rename" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1498 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1597 msgid "Reset" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3488 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3597 msgid "Reverse DNS of its address" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:864 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:870 msgid "Root (overlay)" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3679 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3843 msgid "Route metric" msgstr "" @@ -1656,20 +1676,20 @@ msgstr "" msgid "SSH (port 22)" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3543 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3652 msgid "Save" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3436 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3545 msgid "Seen since" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3684 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3848 msgctxt "vantage" msgid "Sent" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1433 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1532 msgid "Separate lanes" msgstr "" @@ -1677,65 +1697,66 @@ msgstr "" msgid "Settings to check" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3464 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3573 msgid "Shared by %d devices" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3123 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3224 msgid "Shared port" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1579 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1678 msgid "Show %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3078 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3179 msgid "Show all clients" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2381 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2482 msgid "Show or hide system details" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1878 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1979 msgid "Show or hide the network path" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2716 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2817 msgid "Show or hide the radio details" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2501 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2602 msgid "Show or hide the throughput chart" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3239 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3340 msgid "Show or hide the wireless networks" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2179 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3257 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2280 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3358 msgid "Show the clients of %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2205 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2306 msgid "Show the devices on %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:119 -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:120 -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:128 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3008 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3159 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3412 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:123 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:124 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:132 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:134 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3109 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3260 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3521 msgid "Signal" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:155 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:161 msgid "Signal not reported" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3667 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3831 msgctxt "vantage" msgid "Speed" msgstr "" @@ -1746,49 +1767,49 @@ msgid_plural "Standard housekeeping: %d rules" msgstr[0] "" msgstr[1] "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1445 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1544 msgid "Starfield" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3087 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3188 msgid "Stations appear here as soon as they associate with one of the SSIDs." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3612 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3776 msgid "Status" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:93 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2398 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2499 msgid "Storage" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3552 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3661 msgid "Stored on this device in /etc/config/vantage" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:185 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:191 msgid "Strong signal" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:183 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:189 msgid "Strong signal %s, %s link" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:185 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:191 msgid "Strong signal, %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2455 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2556 msgctxt "vantage" msgid "Swap" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3467 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3576 msgid "Switch ports" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:391 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:402 msgid "Switch ports of VLAN %d on %s: %s" msgstr "" @@ -1796,13 +1817,13 @@ msgstr "" msgid "Switched off" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1218 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2380 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2381 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1317 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2481 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2482 msgid "System" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3699 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3863 msgid "System settings" msgstr "" @@ -1815,19 +1836,19 @@ msgid "Telnet (port 23)" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:76 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2412 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2513 msgid "Temperature %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:864 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:870 msgid "Temporary (RAM)" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3007 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3108 msgid "The bridge forgets a device after about five minutes without traffic" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3081 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3182 msgid "" "The bridges have learned so many addresses that listing them here would " "strain this device." @@ -1840,11 +1861,12 @@ msgid "" "reject in General Settings." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3589 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3724 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3753 msgid "The device could not write /etc/config/vantage." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:131 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:137 msgid "The driver reports no signal levels" msgstr "" @@ -1864,19 +1886,19 @@ msgid "" "an uplink in no zone would be open. Set Input to reject in General Settings." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3491 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3600 msgid "The name the device announces (WPS)" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:132 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:138 msgid "The one measured client is above %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:129 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:135 msgid "The only measured client" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3118 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3219 msgid "The router this device sends its traffic to" msgstr "" @@ -1884,7 +1906,7 @@ msgstr "" msgid "The settings below apply if traffic reaches them as configured." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:156 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:160 msgid "The stored name has an invalid section id" msgstr "" @@ -1892,7 +1914,7 @@ msgstr "" msgid "The uplinks could not be checked" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2107 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2208 msgid "This access point" msgstr "" @@ -1900,11 +1922,15 @@ msgstr "" msgid "This address family is in no zone: the default policies apply." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2107 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2208 msgid "This device" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3588 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3723 +msgid "This device already keeps %d of these; turn some off first." +msgstr "" + +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3752 msgid "This device already stores %d names; remove some first." msgstr "" @@ -1912,7 +1938,7 @@ msgstr "" msgid "This device reports no radios" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3648 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3812 msgid "This line is down or has no default route now." msgstr "" @@ -1922,7 +1948,7 @@ msgid "" "the firewall pages." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3596 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3760 msgid "This radio is not reported any more." msgstr "" @@ -1930,23 +1956,23 @@ msgstr "" msgid "This setup is beyond what this overview checks" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3379 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3480 msgid "This station is not associated right now." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1217 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2493 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2495 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3418 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1316 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2594 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2596 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3527 msgctxt "vantage" msgid "Throughput" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1438 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1537 msgid "Throughput chart" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2486 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2587 msgid "Throughput per link; arrow keys read the values over time" msgstr "" @@ -1955,38 +1981,38 @@ msgctxt "vantage" msgid "TiB" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3425 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3534 msgid "To device" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3139 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3174 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3227 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3240 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3275 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3328 msgid "To device %s, from device %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3166 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3267 msgid "To device: %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3662 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3826 msgid "To network" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3080 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3181 msgid "Too many devices to list" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1218 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3191 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3192 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1317 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3292 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3293 msgctxt "vantage" msgid "Top talkers" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3438 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3468 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3608 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3547 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3577 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3772 msgid "Traffic" msgstr "" @@ -2002,16 +2028,16 @@ msgid "" "networks. Set Forward to reject in General Settings." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2103 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2204 msgid "Traffic to the internet goes through %s, a tunnel over this line" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3671 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3835 msgid "Tunnel" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2772 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3615 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2873 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3779 msgid "Tx power" msgstr "" @@ -2021,17 +2047,17 @@ msgid "" "it runs, and those are not listed here." msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:272 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3378 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:289 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3479 msgctxt "vantage" msgid "Unknown device" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3587 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3751 msgid "Unknown device type" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3596 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3760 msgid "Unknown radio" msgstr "" @@ -2046,14 +2072,14 @@ msgid "Unnamed rule" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:57 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2760 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3612 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3666 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2861 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3776 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3830 msgctxt "vantage" msgid "Up" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2405 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2506 msgid "Up %s" msgstr "" @@ -2062,47 +2088,47 @@ msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:49 #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:51 #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:57 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2519 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3651 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2620 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3815 msgctxt "vantage" msgid "Uplink" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2519 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2520 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2620 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2621 msgid "Uplink %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3644 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3655 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3808 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3819 msgid "Uplink · %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2499 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2595 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2669 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2600 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2696 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2770 msgid "Upload" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:379 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:390 msgid "Upload (from clients)" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3440 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3549 msgctxt "vantage" msgid "Uploaded" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3119 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3220 msgid "Upstream" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3705 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3869 msgid "Uptime" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3120 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3472 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3221 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3581 msgid "VLAN %d" msgstr "" @@ -2114,8 +2140,9 @@ msgstr "" #: luci-app-vantage/root/usr/share/rpcd/acl.d/luci-app-vantage.json:33 msgid "" -"Vantage dashboard: name stations (luci.vantage set_alias: validated names " -"in /etc/config/vantage only, at most 512)" +"Vantage dashboard: name stations and keep a station's weak signal out of the " +"warnings (luci.vantage set_alias and set_quiet: validated names and quiet " +"MACs in /etc/config/vantage only, at most 512 each)" msgstr "" #: luci-app-vantage/root/usr/share/rpcd/acl.d/luci-app-vantage.json:3 @@ -2129,15 +2156,15 @@ msgid "" "the internet (luci.vantage routes: family, device and metric, no gateways)" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:43 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:46 msgid "Vendor" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:156 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:162 msgid "Very weak signal %s; expect drops" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:156 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:162 msgid "Very weak signal; expect drops" msgstr "" @@ -2233,15 +2260,15 @@ msgstr "" msgid "WPA3-Personal" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:42 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:45 msgid "WPS" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3448 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3557 msgid "WPS device name" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1763 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1864 msgid "Warning" msgstr "" @@ -2254,16 +2281,16 @@ msgstr "" msgid "Weak" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:157 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2935 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:163 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3036 msgid "Weak signal" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:157 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:163 msgid "Weak signal %s; may roam poorly" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:130 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:136 msgid "Weakest of %d client" msgid_plural "Weakest of %d clients" msgstr[0] "" @@ -2277,29 +2304,29 @@ msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:105 #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:106 -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:108 #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:110 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2989 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:112 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3090 msgid "Wi-Fi" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2049 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2989 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2150 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3090 msgid "Wired" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1218 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3238 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3239 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1317 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3339 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3340 msgctxt "vantage" msgid "Wireless networks" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3398 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3506 msgid "Wireless settings" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3487 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3596 msgid "Your name for this device" msgstr "" @@ -2337,15 +2364,15 @@ msgstr "" msgid "any zone (default policy)" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2766 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2867 msgid "auto" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3436 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3545 msgid "before this page opened" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3465 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3574 msgid "behind %s, VLAN %d" msgstr "" @@ -2354,16 +2381,16 @@ msgctxt "vantage" msgid "bit/s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2627 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2728 msgid "collecting · %s of data" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2627 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2728 msgid "collecting · first samples" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:252 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2607 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:263 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2708 msgid "collecting…" msgstr "" @@ -2375,18 +2402,18 @@ msgstr "" msgid "dBm" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1967 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2105 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2068 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2206 msgid "default route" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2105 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2206 msgid "default route via %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:386 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3123 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3464 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:397 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3224 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3573 msgid "down" msgstr "" @@ -2395,7 +2422,7 @@ msgctxt "vantage" msgid "drop" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3517 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3626 msgctxt "vantage" msgid "e.g. Living room TV" msgstr "" @@ -2421,7 +2448,7 @@ msgstr "" msgid "from anywhere except %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:376 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:379 msgid "full duplex" msgstr "" @@ -2429,13 +2456,13 @@ msgstr "" msgid "gateway %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:376 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:379 msgid "half duplex" msgstr "" #: luci-app-vantage/htdocs/luci-static/resources/vantage/fmt.js:62 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2125 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3265 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2226 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3366 msgid "idle" msgstr "" @@ -2477,64 +2504,64 @@ msgctxt "vantage" msgid "kbit/s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2390 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2626 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2491 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2727 msgid "last 5 min" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:175 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:181 #: luci-app-vantage/htdocs/luci-static/resources/vantage/wifi.js:104 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3168 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3269 msgid "legacy" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:386 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:397 msgid "link up" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:42 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:45 msgid "mDNS" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3489 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3598 msgid "mDNS announcement" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3420 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3471 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3529 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3580 msgid "measuring" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2602 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2703 msgid "measuring…" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2583 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2684 msgctxt "vantage" msgid "no data" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2098 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2199 msgid "no uplink" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3446 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3555 msgid "not known to this AP" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3478 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3587 msgid "not known to this device" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3618 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3782 msgid "not reported (driver placeholder %s)" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3429 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3538 msgid "not reported by the driver" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2623 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2724 msgctxt "vantage" msgid "now" msgstr "" @@ -2543,16 +2570,16 @@ msgstr "" msgid "now %s down, %s up" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3427 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3536 msgid "older than the radio (%s)" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2600 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2701 msgctxt "vantage" msgid "peak" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2391 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2492 msgid "per core" msgstr "" @@ -2561,11 +2588,11 @@ msgctxt "vantage" msgid "port forward" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3414 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3523 msgid "range %s … %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3661 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3825 msgid "received on %s" msgstr "" @@ -2578,7 +2605,7 @@ msgstr "" msgid "router port %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3662 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3826 msgid "sent on %s" msgstr "" @@ -2586,12 +2613,12 @@ msgstr "" msgid "short GI" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3142 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3473 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3243 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3582 msgid "static entry" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3466 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3575 msgid "switch port %s" msgstr "" @@ -2603,11 +2630,11 @@ msgstr "" msgid "the covered subnets of zone %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3470 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3579 msgid "the port in total: %s" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3465 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3574 msgid "the port: %s" msgstr "" @@ -2623,7 +2650,7 @@ msgstr "" msgid "traffic rule" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2110 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2211 msgid "up %s" msgstr "" @@ -2640,6 +2667,6 @@ msgstr "" msgid "zones %s and %s if they share a device" msgstr "" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2620 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2721 msgid "−%d min" msgstr "" diff --git a/luci-app-vantage/po/zh_Hans/vantage.po b/luci-app-vantage/po/zh_Hans/vantage.po index 9c538b3e5..73a2309f1 100644 --- a/luci-app-vantage/po/zh_Hans/vantage.po +++ b/luci-app-vantage/po/zh_Hans/vantage.po @@ -12,43 +12,43 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3614 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3778 msgid "%d MHz (%d–%d MHz)" msgstr "%d MHz(%d–%d MHz)" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:112 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:114 msgid "%d SSID broadcasting" msgid_plural "%d SSIDs broadcasting" msgstr[0] "正在广播 %d 个 SSID" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:112 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:114 msgid "%d SSID broadcasting, %d idle" msgid_plural "%d SSIDs broadcasting, %d idle" msgstr[0] "正在广播 %d 个 SSID,%d 个空闲" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:111 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:113 msgid "%d SSID on air" msgid_plural "%d SSIDs on air" msgstr[0] "%d 个 SSID 正在广播" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:111 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:113 msgid "%d SSID · %d idle" msgid_plural "%d SSIDs · %d idle" msgstr[0] "%d 个 SSID · %d 个空闲" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1690 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2181 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2734 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1789 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2282 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2835 msgid "%d clients" msgstr "%d 个客户端" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3071 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3172 msgid "%d connected" msgstr "已连接 %d 个" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2208 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2212 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3070 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2309 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2313 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3171 msgid "%d devices" msgstr "%d 台设备" @@ -57,31 +57,31 @@ msgctxt "vantage" msgid "%d h ago" msgstr "%d 小时前" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:133 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:139 msgid "%d measured client is above %s" msgid_plural "%d measured clients are above %s" msgstr[0] "%d 个已测客户端高于 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:459 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:470 msgctxt "vantage" msgid "%d min" msgstr "%d 分钟" #: luci-app-vantage/htdocs/luci-static/resources/vantage/fmt.js:118 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:453 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:464 msgctxt "vantage" msgid "%d min ago" msgstr "%d 分钟前" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3069 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3170 msgid "%d of %d" msgstr "%d/%d" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1574 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1673 msgid "%d of %d columns" msgstr "%d/%d 列" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:258 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:264 msgid "%d older devices (Wi-Fi 4 or earlier) slow airtime" msgstr "%d 台旧设备(Wi-Fi 4 或更早)占用更多空口时间" @@ -94,45 +94,45 @@ msgid "%d radio down" msgid_plural "%d radios down" msgstr[0] "%d 个射频未上线" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:108 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:110 msgid "%d radio off" msgid_plural "%d radios off" msgstr[0] "%d 个射频已禁用" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:110 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:112 msgid "%d radio up" msgid_plural "%d radios up" msgstr[0] "%d 个射频已上线" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2726 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2827 msgid "%d radios" msgstr "%d 个射频" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:459 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:470 msgctxt "vantage" msgid "%d s" msgstr "%d 秒" #: luci-app-vantage/htdocs/luci-static/resources/vantage/fmt.js:117 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:453 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:464 msgctxt "vantage" msgid "%d s ago" msgstr "%d 秒前" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:143 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:149 #: luci-app-vantage/htdocs/luci-static/resources/view/vantage/firewall.js:230 msgid "%d things need attention" msgstr "%d 项需要关注" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:120 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:124 msgid "%d weak" msgstr "%d 个信号弱" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2745 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2846 msgid "%d–%d MHz of the %d–%d MHz band" msgstr "%d–%d MHz 属于 %d–%d MHz 频段" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:109 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:111 msgid "%s (%s) is disabled" msgstr "%s(%s)已禁用" @@ -146,27 +146,27 @@ msgstr "%s(%s)已启用但未上线" msgid "%s (IPv%d)" msgstr "%s(IPv%d)" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3436 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3545 msgid "%s (new this session)" msgstr "%s(本次新增)" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:24 -#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:375 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:378 msgid "%s Gbit/s" msgstr "%s Gbit/s" #: luci-app-vantage/htdocs/luci-static/resources/vantage/fmt.js:166 #: luci-app-vantage/htdocs/luci-static/resources/vantage/wifi.js:103 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2752 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2766 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3168 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3607 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2853 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2867 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3269 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3771 msgid "%s MHz" msgstr "%s MHz" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:24 #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:51 -#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:375 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:378 msgid "%s Mbit/s" msgstr "%s Mbit/s" @@ -174,35 +174,35 @@ msgstr "%s Mbit/s" msgid "%s accepts every connection" msgstr "%s 接受所有连接" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:123 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:127 msgid "%s at %s; below %s roaming and throughput suffer" msgstr "%s(%s);低于 %s 时漫游和吞吐量会受影响" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:83 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2426 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2527 msgctxt "vantage" msgid "%s available" msgstr "可用 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2772 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3615 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2873 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3779 msgid "%s dBm" msgstr "%s dBm" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:271 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:288 msgid "%s device" msgstr "%s 设备" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:174 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:180 msgid "%s device on a newer radio; uses more airtime per byte" msgstr "%s 设备连接在较新的射频上,每字节占用更多空口时间" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3641 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3805 msgid "%s error" msgid_plural "%s errors" msgstr[0] "%s 个错误" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3403 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3512 msgid "%s experience" msgstr "%s 体验" @@ -218,15 +218,15 @@ msgstr "overlay 空闲 %s(已用 %s)" msgid "%s has no carrier: cable unplugged or switch port down" msgstr "%s 无载波:网线未插或交换机端口关闭" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1540 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1639 msgid "%s hidden" msgstr "%s 已隐藏" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3685 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3849 msgid "%s in · %s out" msgstr "%s 入 · %s 出" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:108 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:110 msgid "%s is disabled" msgstr "%s 已禁用" @@ -238,7 +238,7 @@ msgstr "%s 被转发到 %s" msgid "%s is in no zone and accepts every connection" msgstr "%s 不属于任何区域,接受所有连接" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1533 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1632 msgid "%s is narrower" msgstr "%s 已变窄" @@ -246,18 +246,18 @@ msgstr "%s 已变窄" msgid "%s is not up" msgstr "%s 未上线" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3127 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3228 msgid "" "%s is shared by %d devices (a switch or another access point behind it); its " "%s link is not theirs" msgstr "" "%s 由 %d 台设备共用(其后接有交换机或另一个接入点);%s 的链路不属于这些设备" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3126 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3227 msgid "%s is shared by %d devices behind the switch" msgstr "%s 由交换机后的 %d 台设备共用" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1536 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1635 msgid "%s is wider" msgstr "%s 已加宽" @@ -273,23 +273,23 @@ msgstr "%s 链路" msgid "%s may open the router's admin" msgstr "%s 可能暴露了路由器管理界面" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1655 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1754 msgid "%s moved" msgstr "%s 已移动" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1530 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1629 msgid "%s moved down" msgstr "%s 已下移" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1521 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1620 msgid "%s moved left" msgstr "%s 已左移" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1524 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1623 msgid "%s moved right" msgstr "%s 已右移" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1527 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1626 msgid "%s moved up" msgstr "%s 已上移" @@ -302,9 +302,9 @@ msgid "%s negotiated only %d Mbit/s; a cable pair or port may be faulty" msgstr "%s 仅协商到 %d Mbit/s;网线线对或端口可能有故障" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:84 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2427 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2456 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3711 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2528 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2557 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3875 msgid "%s of %s" msgstr "%s / %s" @@ -312,33 +312,33 @@ msgstr "%s / %s" msgid "%s of %s available (%s in use)" msgstr "可用 %s / 共 %s(已用 %s)" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:169 -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:170 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:175 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:176 msgid "%s of frames fail" msgstr "帧失败率:%s" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:170 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:176 msgid "%s of frames to the device fail" msgstr "发往设备的帧失败率:%s" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:169 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:175 msgid "%s of frames to the device fail; interference likely" msgstr "发往设备的帧失败率:%s,可能存在干扰" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3709 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3873 msgid "%s over %d core" msgid_plural "%s over %d cores" msgstr[0] "%s / %d 核" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2521 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2622 msgid "%s radio" msgstr "%s 射频" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3441 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3550 msgid "%s sent · %s retried · %s failed" msgstr "发送 %s · 重传 %s · 失败 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1580 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1679 msgid "%s shown" msgstr "%s 已显示" @@ -354,19 +354,19 @@ msgstr "%s 已连接,速率 %s" msgid "%s used" msgstr "已用 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2464 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2565 msgid "%s used of %s" msgstr "已用 %s / 共 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3124 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3225 msgid "%s · %d devices" msgstr "%s · %d 台设备" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:122 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:126 msgid "%s · %s" msgstr "%s · %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3433 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3542 msgid "%s · channel %d · %d MHz" msgstr "%s · 信道 %d · %d MHz" @@ -382,39 +382,39 @@ msgstr "%s · 链路较慢" msgid "%s: no carrier" msgstr "%s:无载波" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3615 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3779 msgid "(configured %d dBm, limited by regulatory rules)" msgstr "(配置 %d dBm,受管制规则限制)" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2180 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3260 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2281 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3361 msgid "(hidden)" msgstr "(隐藏)" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1690 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2181 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2734 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1789 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2282 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2835 msgid "1 client" msgstr "1 个客户端" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3071 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3172 msgid "1 connected" msgstr "已连接 1 个" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2212 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3070 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2313 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3171 msgid "1 device" msgstr "1 台设备" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:258 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:264 msgid "1 older device (Wi-Fi 4 or earlier) slows airtime" msgstr "1 台旧设备(Wi-Fi 4 或更早)占用更多空口时间" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2726 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2827 msgid "1 radio" msgstr "1 个射频" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:143 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:149 #: luci-app-vantage/htdocs/luci-static/resources/view/vantage/firewall.js:230 msgid "1 thing needs attention" msgstr "1 项需要关注" @@ -438,30 +438,30 @@ msgstr "6 GHz" msgid "60 GHz" msgstr "60 GHz" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2934 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3035 msgid "Active" msgstr "活跃" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3445 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3477 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3554 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3586 msgid "Address type" msgstr "地址类型" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3674 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3838 msgid "Addresses" msgstr "地址" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2774 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2875 msgid "Airtime" msgstr "空口时间" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:42 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:45 msgctxt "vantage" msgid "Alias" msgstr "别名" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2925 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2931 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3026 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3032 msgid "All" msgstr "全部" @@ -486,11 +486,11 @@ msgctxt "vantage" msgid "B" msgstr "B" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:257 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:263 msgid "Busiest radio: %s of Wi-Fi traffic" msgstr "最繁忙射频:占 Wi-Fi 流量的 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2391 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2492 msgid "Busy share of each CPU core" msgstr "每个 CPU 核心的繁忙占比" @@ -505,88 +505,88 @@ msgstr[0] "繁忙;负载 %s(%d 核);查看最繁忙进程" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:71 #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:72 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2384 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3709 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2485 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3873 msgctxt "vantage" msgid "CPU" msgstr "CPU" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:260 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:263 msgid "Cache (reclaimable)" msgstr "缓存(可回收)" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3550 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3659 msgid "Cancel" msgstr "取消" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3428 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3537 msgctxt "vantage" msgid "Capabilities" msgstr "能力" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3666 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3830 msgid "Carrier" msgstr "链路状态" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3614 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3778 msgid "Centre frequency" msgstr "中心频率" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2765 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2866 msgid "Ch %d" msgstr "信道 %d" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2161 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2733 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2262 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2834 msgid "Ch %d · %d MHz" msgstr "信道 %d · %d MHz" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3607 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3771 msgid "Channel" msgstr "信道" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2161 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2262 msgid "Channel —" msgstr "信道 —" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2798 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2899 msgctxt "vantage" msgid "Clear filter" msgstr "清除筛选" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1217 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2771 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2816 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2817 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1316 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2872 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2917 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2918 msgid "Clients" msgstr "客户端" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3621 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3785 msgid "Clients on this radio" msgstr "此射频上的客户端" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3277 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3378 msgid "Close" msgstr "关闭" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3183 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3284 msgid "Connected" msgstr "已连接" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3153 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3254 msgid "Connected after you opened this page" msgstr "打开本页面后连接" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3434 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3543 msgid "Connected for" msgstr "已连接时长" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3431 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3462 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3540 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3571 msgid "Connection" msgstr "连接" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2418 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2519 msgid "Core %d: %s" msgstr "核心 %d:%s" @@ -594,19 +594,23 @@ msgstr "核心 %d:%s" msgid "Could not read the firewall configuration" msgstr "无法读取防火墙配置" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3533 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3642 msgid "Could not save the name (no permission or the device refused it)." msgstr "无法保存名称(无权限或设备拒绝)。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1417 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1516 msgid "Could not save this for every browser. Try again." msgstr "无法为所有浏览器保存此设置,请重试。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3682 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3729 +msgid "Could not save this." +msgstr "无法保存。" + +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3846 msgid "Counters since boot" msgstr "自启动以来的计数器" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3619 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3783 msgid "Country" msgstr "国家" @@ -615,30 +619,30 @@ msgid "" "Custom rule files are configured (%s); rules in them are not listed here." msgstr "已配置自定义规则文件(%s);其中的规则不会在此列出。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1676 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1775 msgid "Customize" msgstr "自定义" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1484 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1485 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1675 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1583 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1584 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1774 msgid "Customize the dashboard" msgstr "自定义仪表盘" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:42 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:45 msgid "DHCP" msgstr "DHCP" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3490 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3599 msgid "DHCP hostname" msgstr "DHCP 主机名" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:42 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3680 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:45 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3844 msgid "DNS" msgstr "DNS" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2092 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2193 msgid "DNS %s" msgstr "DNS %s" @@ -647,117 +651,121 @@ msgstr "DNS %s" msgid "Dashboard" msgstr "仪表盘" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3006 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3008 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3098 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3700 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3107 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3109 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3199 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3864 msgid "Device" msgstr "设备" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3517 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3626 msgid "Device name" msgstr "设备名" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3546 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3655 msgid "Device type" msgstr "设备类型" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3084 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3185 msgid "" "Devices on the Ethernet ports appear here once they send traffic; the bridge " "forgets quiet ones after about five minutes." msgstr "" "以太网端口上的设备发送流量后会显示在这里;网桥会在约五分钟无流量后忘记它们。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2162 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2735 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2760 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3612 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2263 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2836 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2861 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3776 msgid "Disabled" msgstr "已禁用" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3397 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3505 msgid "Disconnected %s; shown from the last sample." msgstr "断开于 %s;显示最后一次采样的数据。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1499 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3700 +msgid "Don't warn about its signal" +msgstr "不对其信号发出警告" + +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1598 msgctxt "vantage" msgid "Done" msgstr "完成" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:45 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2162 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2735 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2760 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3612 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2263 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2836 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2861 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3776 msgctxt "vantage" msgid "Down" msgstr "已下线" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2498 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2593 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2668 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2599 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2694 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2769 msgid "Download" msgstr "下载" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:378 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:389 msgid "Download (to clients)" msgstr "下载(到客户端)" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3439 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3548 msgctxt "vantage" msgid "Downloaded" msgstr "已下载" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1561 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1660 msgid "" "Drag a tile by its handle or use its buttons. Done saves it for medium " "screens in every browser." msgstr "" "拖动卡片手柄或使用其按钮移动。点击“完成”后,中屏布局将保存到所有浏览器。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1562 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1661 msgid "" "Drag a tile by its handle or use its buttons. Done saves it for narrow " "screens in every browser." msgstr "" "拖动卡片手柄或使用其按钮移动。点击“完成”后,窄屏布局将保存到所有浏览器。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1560 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1659 msgid "" "Drag a tile by its handle or use its buttons. Done saves it for wide screens " "in every browser." msgstr "" "拖动卡片手柄或使用其按钮移动。点击“完成”后,宽屏布局将保存到所有浏览器。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1561 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1660 msgid "" "Drag a tile by its handle or use its buttons. Saved in this browser for " "medium screens." msgstr "拖动卡片手柄或使用其按钮移动。中屏布局保存在此浏览器中。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1562 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1661 msgid "" "Drag a tile by its handle or use its buttons. Saved in this browser for " "narrow screens." msgstr "拖动卡片手柄或使用其按钮移动。窄屏布局保存在此浏览器中。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1560 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1659 msgid "" "Drag a tile by its handle or use its buttons. Saved in this browser for wide " "screens." msgstr "拖动卡片手柄或使用其按钮移动。宽屏布局保存在此浏览器中。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1512 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1611 msgid "Drag to move" msgstr "拖动以移动" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3685 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3849 msgctxt "vantage" msgid "Dropped" msgstr "已丢弃" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3239 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3340 msgid "Edit" msgstr "编辑" @@ -765,53 +773,57 @@ msgstr "编辑" msgid "Enhanced Open (OWE)" msgstr "增强开放 (OWE)" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1763 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1864 msgid "Error" msgstr "错误" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:143 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:133 +msgid "Every client here is set not to warn about its signal" +msgstr "此处所有客户端均已设为不对其信号发出警告" + +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:149 msgid "Everything looks healthy" msgstr "一切正常" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:179 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:185 #: luci-app-vantage/htdocs/luci-static/resources/vantage/wifi.js:117 msgctxt "vantage" msgid "Excellent" msgstr "极好" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3008 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3177 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3109 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3278 msgid "Experience" msgstr "体验" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:179 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:185 #: luci-app-vantage/htdocs/luci-static/resources/vantage/wifi.js:119 msgctxt "vantage" msgid "Fair" msgstr "一般" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:158 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:164 msgid "Fair signal" msgstr "信号一般" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:158 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:164 msgid "Fair signal %s; lower rates at range" msgstr "信号一般 %s;远距离速率较低" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2795 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2996 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2896 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3097 msgid "Filter by name, address, SSID…" msgstr "按名称、地址、SSID…筛选" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2996 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3097 msgid "Filter by name, address, port…" msgstr "按名称、地址、端口…筛选" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2796 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2897 msgid "Filter clients" msgstr "筛选客户端" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3703 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3867 msgctxt "vantage" msgid "Firmware" msgstr "固件" @@ -824,24 +836,24 @@ msgstr "从 %s 转发到 %s" msgid "Forwarding is accepted by default" msgstr "默认接受转发" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3441 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3550 msgid "Frames to device" msgstr "发往设备的帧" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:261 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:264 msgctxt "vantage" msgid "Free" msgstr "空闲" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3426 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3535 msgid "From device" msgstr "来自设备" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3166 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3267 msgid "From device: %s" msgstr "来自设备:%s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3661 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3825 msgid "From network" msgstr "来自网络" @@ -851,9 +863,9 @@ msgid "" "files are not shown." msgstr "内容来自防火墙配置。由 UPnP 或自定义规则文件开放的端口不会显示。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2090 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3118 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3677 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2191 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3219 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3841 msgid "Gateway" msgstr "网关" @@ -866,7 +878,7 @@ msgstr "Gbit/s" msgid "General Settings" msgstr "基本设置" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3427 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3536 msgctxt "vantage" msgid "Generation" msgstr "代际" @@ -876,31 +888,31 @@ msgctxt "vantage" msgid "GiB" msgstr "GiB" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3445 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3477 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3554 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3586 msgid "Globally unique" msgstr "全局唯一" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3445 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3477 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3554 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3586 msgid "Globally unique · %s" msgstr "全局唯一 · %s" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:179 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:185 #: luci-app-vantage/htdocs/luci-static/resources/vantage/wifi.js:118 msgctxt "vantage" msgid "Good" msgstr "良好" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:159 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:165 msgid "Good signal" msgstr "信号良好" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:159 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:165 msgid "Good signal %s" msgstr "信号良好 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1445 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1544 msgid "Grid packets" msgstr "网格数据包" @@ -916,36 +928,36 @@ msgstr "HTTPS(端口 443)" msgid "Half duplex" msgstr "半双工" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1109 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1192 msgctxt "vantage" msgid "Health checks" msgstr "健康检查" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1577 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3260 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1676 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3361 msgctxt "vantage" msgid "Hidden" msgstr "隐藏" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1539 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1638 msgid "Hide %s" msgstr "隐藏 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3446 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3478 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3555 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3587 msgid "IP addresses" msgstr "IP 地址" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3675 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3839 msgid "IPv4" msgstr "IPv4" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3676 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3840 msgid "IPv6" msgstr "IPv6" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3443 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3475 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3552 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3584 msgid "Identity" msgstr "身份" @@ -953,11 +965,11 @@ msgstr "身份" msgid "In no zone: the default policies apply." msgstr "不属于任何区域:适用默认策略。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3672 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3836 msgid "In the tunnel" msgstr "隧道内" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:259 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:262 msgctxt "vantage" msgid "In use" msgstr "已用" @@ -967,21 +979,21 @@ msgctxt "vantage" msgid "Input" msgstr "入站数据" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2140 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2241 msgid "Interface" msgstr "接口" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3669 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3833 msgid "Interface up for" msgstr "接口已启用时长" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3460 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3647 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3659 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3569 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3811 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3823 msgid "Interfaces" msgstr "接口" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2090 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2191 msgid "Internet" msgstr "互联网" @@ -1011,11 +1023,15 @@ msgstr "" "它将来自互联网上任何地址的 %s 转发到 %s。无法读取接口列表,因此本页无法判断该" "地址是否为路由器本身。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3704 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3693 +msgid "Its weak signal is left out of the warnings." +msgstr "其弱信号不计入警告。" + +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3868 msgid "Kernel" msgstr "内核" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2470 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2571 msgid "Kernel %s" msgstr "内核 %s" @@ -1024,58 +1040,58 @@ msgctxt "vantage" msgid "KiB" msgstr "KiB" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2810 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2911 msgid "Kind of client" msgstr "客户端类型" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3435 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3544 msgctxt "vantage" msgid "Last activity" msgstr "最后活动" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3007 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3142 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3473 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3108 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3243 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3582 msgid "Last heard" msgstr "最后活动" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1497 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1596 msgid "Layout reset" msgstr "布局已重置" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3152 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3253 msgid "Left %s" msgstr "离开于 %s" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:174 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3154 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:180 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3255 msgctxt "vantage" msgid "Legacy" msgstr "旧版" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3006 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3122 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3424 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3464 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3665 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3107 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3223 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3533 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3573 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3829 msgctxt "vantage" msgid "Link" msgstr "链路" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3008 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3165 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3109 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3266 msgid "Link rate" msgstr "链路速率" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1712 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3006 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3008 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3133 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3170 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1811 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3107 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3109 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3234 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3271 msgid "Live" msgstr "实时" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3708 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3872 msgid "Load" msgstr "负载" @@ -1089,41 +1105,41 @@ msgid "Load %s · %d core" msgid_plural "Load %s · %d cores" msgstr[0] "负载 %s · %d 核" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3710 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3874 msgctxt "vantage" msgid "Load average" msgstr "平均负载" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2372 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2473 msgid "Load average over 1, 5 and 15 minutes" msgstr "1、5、15 分钟平均负载" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2408 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2509 msgid "Load avg %s" msgstr "平均负载 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3706 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3870 msgid "Local time" msgstr "本地时间" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1376 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1475 msgid "Log in again to save this for every browser." msgstr "重新登录后即可为所有浏览器保存此设置。" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:164 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:170 msgid "Low link rate %s despite good signal; interference or an old device" msgstr "信号良好但链路速率仅 %s;可能存在干扰或设备较旧" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:164 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:170 msgid "Low link rate for its signal" msgstr "链路速率低于信号预期" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:43 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:46 msgid "MAC" msgstr "MAC" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3444 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3476 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3553 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3585 msgid "MAC address" msgstr "MAC 地址" @@ -1131,11 +1147,11 @@ msgstr "MAC 地址" msgid "MCS %d" msgstr "MCS %d" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1532 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1631 msgid "Make %s narrower" msgstr "使 %s 变窄" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1535 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1634 msgid "Make %s wider" msgstr "使 %s 加宽" @@ -1152,11 +1168,11 @@ msgid "Measuring…" msgstr "测量中…" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:83 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2395 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2496 msgid "Memory" msgstr "内存" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3711 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3875 msgid "Memory in use" msgstr "已用内存" @@ -1165,91 +1181,91 @@ msgctxt "vantage" msgid "MiB" msgstr "MiB" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1431 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1530 msgid "Mirrored" msgstr "镜像" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1432 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1531 msgid "Mirrored, scale per direction" msgstr "镜像,每个方向单独刻度" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3613 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3777 msgid "Mode" msgstr "模式" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3701 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3865 msgid "Model" msgstr "型号" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1529 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1628 msgid "Move %s down" msgstr "下移 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1520 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1619 msgid "Move %s left" msgstr "左移 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1523 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1622 msgid "Move %s right" msgstr "右移 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1526 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1625 msgid "Move %s up" msgstr "上移 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1512 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1611 msgid "Move %s: drag, or use the arrow keys" msgstr "移动 %s:拖动或使用方向键" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3545 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3654 msgid "Name" msgstr "名称" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:134 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3585 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:138 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3749 msgid "Name contains invisible or control characters" msgstr "名称包含不可见或控制字符" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3447 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3479 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3556 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3588 msgid "Name from" msgstr "名称来源" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3103 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3204 msgid "Name from: %s" msgstr "名称来源:%s" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:132 -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:137 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3586 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:136 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:141 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3750 msgid "Name is longer than %d characters" msgstr "名称超过 %d 个字符" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:131 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:135 msgid "Name must be text" msgstr "名称必须是文本" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3388 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3457 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3496 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3566 msgid "Name this device" msgstr "命名此设备" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3006 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3008 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3132 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3162 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3432 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3472 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3107 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3109 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3233 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3263 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3541 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3581 msgid "Network" msgstr "网络" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1217 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1877 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1878 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1316 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1978 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1979 msgid "Network path" msgstr "网络路径" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1450 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1549 msgid "Network path background" msgstr "网络路径背景" @@ -1257,38 +1273,38 @@ msgstr "网络路径背景" msgid "Networks: %s" msgstr "网络:%s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2936 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3153 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3037 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3254 msgctxt "vantage" msgid "New" msgstr "新增" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2037 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2138 msgid "No SSIDs" msgstr "无 SSID" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:119 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:123 msgid "No clients" msgstr "无客户端" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3086 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3626 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3187 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3790 msgid "No clients connected" msgstr "无客户端连接" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3214 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3315 msgid "No clients connected." msgstr "没有客户端连接。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3077 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3178 msgid "No clients in this view" msgstr "此视图中没有客户端" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3077 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3178 msgid "No clients match “%s”" msgstr "没有匹配“%s”的客户端" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2091 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2192 msgctxt "vantage" msgid "No default route" msgstr "无默认路由" @@ -1297,7 +1313,7 @@ msgstr "无默认路由" msgid "No interface with a route" msgstr "没有带路由的接口" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3651 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3815 msgid "No interface with a route is up." msgstr "没有带路由的接口处于启用状态。" @@ -1306,7 +1322,7 @@ msgid "No internet-facing zone found" msgstr "未找到面向互联网的区域" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:47 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3666 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3830 msgid "No link" msgstr "无链路" @@ -1314,17 +1330,17 @@ msgstr "无链路" msgid "No network interface with a route is up" msgstr "没有带路由的网络接口处于启用状态" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2018 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2119 msgid "No other interfaces are up" msgstr "没有其他接口处于启用状态" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:183 -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:185 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:189 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:191 msgid "No problems detected" msgstr "未检测到问题" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:105 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2041 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2142 msgid "No radios reported" msgstr "未报告射频" @@ -1337,20 +1353,24 @@ msgstr "没有规则或端口转发开放任何内容;上方的警告说明了 msgid "No signal" msgstr "无信号" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:119 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:123 msgid "No stations are associated right now" msgstr "当前没有站点关联" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3083 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:133 +msgid "No warnings asked for" +msgstr "已设为不警告" + +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3184 msgid "No wired devices heard" msgstr "未发现有线设备" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3248 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3349 msgctxt "vantage" msgid "No wireless networks configured." msgstr "未配置无线网络。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2740 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2841 msgid "No wireless radios are reported by this device." msgstr "此设备未报告任何无线射频。" @@ -1367,39 +1387,39 @@ msgstr "" msgid "No zones are configured." msgstr "尚未配置区域。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3214 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3315 msgid "Nobody is moving data right now." msgstr "当前没有设备在传输数据。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2773 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2874 msgid "Noise" msgstr "噪声" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3429 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3538 msgid "Noise / SNR" msgstr "噪声 / 信噪比" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3617 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3618 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3781 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3782 msgid "Noise floor" msgstr "底噪" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:105 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1445 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1544 msgid "None" msgstr "无" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:150 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3584 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:154 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3748 msgid "Not a station MAC address" msgstr "不是站点 MAC 地址" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3379 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3480 msgid "Not connected" msgstr "未连接" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3134 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3469 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3235 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3578 msgid "Not counted per device on a shared port" msgstr "共用端口不按设备统计" @@ -1407,15 +1427,15 @@ msgstr "共用端口不按设备统计" msgid "Not in effect" msgstr "未生效" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2445 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2546 msgid "Not reported" msgstr "未报告" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:129 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:135 msgid "Not reported by the driver" msgstr "驱动未报告" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3493 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3602 msgid "Nothing better known" msgstr "无更多信息" @@ -1432,11 +1452,11 @@ msgctxt "vantage" msgid "OWE" msgstr "OWE" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:175 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:181 msgid "Older %s device" msgstr "较旧的 %s 设备" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3154 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3255 msgid "Older Wi-Fi generation than the radio; uses more airtime" msgstr "比射频支持的 Wi-Fi 代际更旧;占用更多空口时间" @@ -1444,7 +1464,7 @@ msgstr "比射频支持的 Wi-Fi 代际更旧;占用更多空口时间" msgid "On this router" msgstr "在此路由器上" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3008 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3109 msgctxt "vantage" msgid "Online" msgstr "在线" @@ -1460,7 +1480,7 @@ msgctxt "vantage" msgid "Open" msgstr "开放" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3052 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3153 msgid "Open details of %s" msgstr "打开 %s 的详情" @@ -1476,7 +1496,7 @@ msgstr "对互联网开放:%d" msgid "Open network" msgstr "开放网络" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:852 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:858 msgid "OpenWrt device" msgstr "OpenWrt 设备" @@ -1488,11 +1508,11 @@ msgstr "" "基本设置中的选项 %s 的值被 firewall4 拒绝,因此不会加载新规则:无法确定开放了" "哪些内容。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1429 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1528 msgid "Overlaid" msgstr "叠加" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1430 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1529 msgid "Overlaid, log scale" msgstr "叠加,对数刻度" @@ -1500,15 +1520,15 @@ msgstr "叠加,对数刻度" msgid "Overview" msgstr "概览" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3428 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3537 msgid "PMF" msgstr "PMF" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1710 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1809 msgid "Paused" msgstr "已暂停" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1710 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1809 msgid "Paused while hidden" msgstr "页面隐藏时暂停" @@ -1524,139 +1544,139 @@ msgstr "" "Ping 和其他控制消息、组播、DHCP 续租以及转发到你网络的 IPsec:每台路由器都会" "放行的流量。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3702 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3866 msgctxt "vantage" msgid "Platform" msgstr "平台" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:179 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:185 msgctxt "vantage" msgid "Poor" msgstr "较差" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3463 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3572 msgid "Port" msgstr "端口" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:365 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:368 msgid "Port %d" msgstr "端口 %d" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3127 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3228 msgid "Port %s" msgstr "端口 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2205 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2306 msgid "Port total: %s" msgstr "端口合计:%s" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:43 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:46 msgid "Private" msgstr "私有" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3445 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3554 msgid "Private Wi-Fi address (randomised by the device)" msgstr "私有 Wi-Fi 地址(设备随机化)" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3477 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3586 msgid "Private address (randomised by the device)" msgstr "私有地址(设备随机化)" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:270 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:287 msgid "Private device" msgstr "私有设备" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3699 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3863 msgid "Processes" msgstr "进程" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3668 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3832 msgid "Protocol" msgstr "协议" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2805 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2807 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2906 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2908 msgid "Quick filters" msgstr "快速筛选" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3433 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3611 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3542 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3775 msgctxt "vantage" msgid "Radio" msgstr "射频" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2761 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2862 msgid "Radio details" msgstr "射频详情" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:255 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:261 msgid "Radio is disabled" msgstr "射频已禁用" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:256 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:262 msgid "Radio is enabled but not up" msgstr "射频已启用但未上线" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2785 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3605 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2886 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3769 msgid "Radio settings" msgstr "射频设置" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1217 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2713 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2715 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1316 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2814 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2816 msgid "Radios" msgstr "射频" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2092 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2193 msgid "Reachability not probed" msgstr "未探测可达性" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3119 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3220 msgid "Reached through the uplink port %s, not connected to this device" msgstr "经由上行端口 %s 到达,并未连接到本设备" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3659 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3823 msgid "Realtime graphs" msgstr "实时图表" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3683 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3847 msgctxt "vantage" msgid "Received" msgstr "已接收" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1711 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1810 msgctxt "vantage" msgid "Reconnecting…" msgstr "重新连接中…" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2952 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3053 msgid "Remove filter: %s" msgstr "移除筛选:%s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3551 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3660 msgid "Remove name" msgstr "移除名称" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3388 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3457 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3496 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3566 msgctxt "vantage" msgid "Rename" msgstr "重命名" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1498 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1597 msgid "Reset" msgstr "重置" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3488 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3597 msgid "Reverse DNS of its address" msgstr "其地址的反向 DNS" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:864 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:870 msgid "Root (overlay)" msgstr "Root(overlay)" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3679 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3843 msgid "Route metric" msgstr "路由跃点数" @@ -1668,20 +1688,20 @@ msgstr "路由器管理界面已开放:%s" msgid "SSH (port 22)" msgstr "SSH(端口 22)" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3543 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3652 msgid "Save" msgstr "保存" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3436 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3545 msgid "Seen since" msgstr "首次出现" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3684 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3848 msgctxt "vantage" msgid "Sent" msgstr "已发送" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1433 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1532 msgid "Separate lanes" msgstr "分开显示" @@ -1689,65 +1709,66 @@ msgstr "分开显示" msgid "Settings to check" msgstr "待检查的设置" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3464 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3573 msgid "Shared by %d devices" msgstr "%d 台设备共用" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3123 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3224 msgid "Shared port" msgstr "共用端口" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1579 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1678 msgid "Show %s" msgstr "显示 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3078 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3179 msgid "Show all clients" msgstr "显示全部客户端" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2381 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2482 msgid "Show or hide system details" msgstr "显示/隐藏系统详情" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1878 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1979 msgid "Show or hide the network path" msgstr "显示/隐藏网络路径" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2716 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2817 msgid "Show or hide the radio details" msgstr "显示/隐藏射频详情" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2501 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2602 msgid "Show or hide the throughput chart" msgstr "显示/隐藏吞吐量图表" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3239 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3340 msgid "Show or hide the wireless networks" msgstr "显示/隐藏无线网络" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2179 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3257 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2280 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3358 msgid "Show the clients of %s" msgstr "显示 %s 的客户端" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2205 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2306 msgid "Show the devices on %s" msgstr "显示 %s 上的设备" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:119 -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:120 -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:128 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3008 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3159 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3412 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:123 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:124 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:132 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:134 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3109 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3260 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3521 msgid "Signal" msgstr "信号强度" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:155 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:161 msgid "Signal not reported" msgstr "未报告信号" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3667 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3831 msgctxt "vantage" msgid "Speed" msgstr "速率" @@ -1757,49 +1778,49 @@ msgid "Standard housekeeping: %d rule" msgid_plural "Standard housekeeping: %d rules" msgstr[0] "标准常规规则:%d 条" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1445 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1544 msgid "Starfield" msgstr "星空" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3087 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3188 msgid "Stations appear here as soon as they associate with one of the SSIDs." msgstr "站点一旦关联到任一 SSID 便会显示在这里。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3612 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3776 msgid "Status" msgstr "状态" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:93 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2398 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2499 msgid "Storage" msgstr "存储" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3552 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3661 msgid "Stored on this device in /etc/config/vantage" msgstr "保存在本设备 /etc/config/vantage 中" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:185 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:191 msgid "Strong signal" msgstr "信号强" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:183 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:189 msgid "Strong signal %s, %s link" msgstr "信号强 %s,链路 %s" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:185 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:191 msgid "Strong signal, %s" msgstr "信号强,%s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2455 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2556 msgctxt "vantage" msgid "Swap" msgstr "交换分区" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3467 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3576 msgid "Switch ports" msgstr "交换机端口" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:391 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:402 msgid "Switch ports of VLAN %d on %s: %s" msgstr "VLAN %d(%s)的交换机端口:%s" @@ -1807,13 +1828,13 @@ msgstr "VLAN %d(%s)的交换机端口:%s" msgid "Switched off" msgstr "已关闭" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1218 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2380 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2381 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1317 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2481 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2482 msgid "System" msgstr "系统" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3699 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3863 msgid "System settings" msgstr "系统设置" @@ -1826,19 +1847,19 @@ msgid "Telnet (port 23)" msgstr "Telnet(端口 23)" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:76 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2412 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2513 msgid "Temperature %s" msgstr "温度 %s" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:864 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:870 msgid "Temporary (RAM)" msgstr "临时(RAM)" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3007 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3108 msgid "The bridge forgets a device after about five minutes without traffic" msgstr "设备约五分钟无流量后,网桥会将其遗忘" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3081 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3182 msgid "" "The bridges have learned so many addresses that listing them here would " "strain this device." @@ -1853,11 +1874,12 @@ msgstr "" "该处适用默认入站数据策略且为接受,因此互联网上的任何主机都能访问路由器本身。" "请将其加入 wan 区域,或在基本设置中将入站数据设为拒绝。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3589 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3724 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3753 msgid "The device could not write /etc/config/vantage." msgstr "设备无法写入 /etc/config/vantage。" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:131 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:137 msgid "The driver reports no signal levels" msgstr "驱动未报告信号强度" @@ -1879,19 +1901,19 @@ msgstr "" "无法读取接口列表,且默认入站数据策略为接受:不属于任何区域的上行接口将会开" "放。请在基本设置中将入站数据设为拒绝。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3491 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3600 msgid "The name the device announces (WPS)" msgstr "设备广播的名称(WPS)" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:132 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:138 msgid "The one measured client is above %s" msgstr "唯一已测客户端高于 %s" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:129 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:135 msgid "The only measured client" msgstr "唯一已测客户端" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3118 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3219 msgid "The router this device sends its traffic to" msgstr "此设备发送流量所经的路由器" @@ -1899,7 +1921,7 @@ msgstr "此设备发送流量所经的路由器" msgid "The settings below apply if traffic reaches them as configured." msgstr "以下设置在流量按配置到达时生效。" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:156 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:160 msgid "The stored name has an invalid section id" msgstr "保存的名称包含无效的配置节 ID" @@ -1907,7 +1929,7 @@ msgstr "保存的名称包含无效的配置节 ID" msgid "The uplinks could not be checked" msgstr "无法检查上行接口" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2107 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2208 msgid "This access point" msgstr "此接入点" @@ -1915,11 +1937,15 @@ msgstr "此接入点" msgid "This address family is in no zone: the default policies apply." msgstr "此地址族不属于任何区域:适用默认策略。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2107 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2208 msgid "This device" msgstr "此设备" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3588 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3723 +msgid "This device already keeps %d of these; turn some off first." +msgstr "此设备已保存 %d 项此类设置,请先关闭一些。" + +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3752 msgid "This device already stores %d names; remove some first." msgstr "此设备已存储 %d 个名称;请先移除部分。" @@ -1927,7 +1953,7 @@ msgstr "此设备已存储 %d 个名称;请先移除部分。" msgid "This device reports no radios" msgstr "此设备未报告任何射频" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3648 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3812 msgid "This line is down or has no default route now." msgstr "此线路已断开,或当前没有默认路由。" @@ -1937,7 +1963,7 @@ msgid "" "the firewall pages." msgstr "本页无法判断开放了哪些内容。请重新加载;如果仍无效,请检查防火墙页面。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3596 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3760 msgid "This radio is not reported any more." msgstr "驱动不再报告此射频。" @@ -1945,23 +1971,23 @@ msgstr "驱动不再报告此射频。" msgid "This setup is beyond what this overview checks" msgstr "此配置超出本概览的检查范围" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3379 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3480 msgid "This station is not associated right now." msgstr "此站点当前未关联。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1217 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2493 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2495 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3418 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1316 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2594 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2596 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3527 msgctxt "vantage" msgid "Throughput" msgstr "吞吐量" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1438 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1537 msgid "Throughput chart" msgstr "吞吐量图表" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2486 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2587 msgid "Throughput per link; arrow keys read the values over time" msgstr "每条链路的吞吐量;方向键可查看历史值" @@ -1970,38 +1996,38 @@ msgctxt "vantage" msgid "TiB" msgstr "TiB" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3425 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3534 msgid "To device" msgstr "到设备" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3139 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3174 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3227 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3240 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3275 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3328 msgid "To device %s, from device %s" msgstr "到设备 %s,来自设备 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3166 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3267 msgid "To device: %s" msgstr "到设备:%s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3662 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3826 msgid "To network" msgstr "发往网络" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3080 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3181 msgid "Too many devices to list" msgstr "设备过多,无法列出" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1218 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3191 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3192 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1317 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3292 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3293 msgctxt "vantage" msgid "Top talkers" msgstr "流量大户" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3438 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3468 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3608 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3547 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3577 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3772 msgid "Traffic" msgstr "流量" @@ -2019,16 +2045,16 @@ msgstr "" "未被任何转发覆盖的互联网流量仍会到达你的其他网络。请在基本设置中将转发设为拒" "绝。" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2103 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2204 msgid "Traffic to the internet goes through %s, a tunnel over this line" msgstr "去往互联网的流量经过 %s,一条在此线路上运行的隧道" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3671 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3835 msgid "Tunnel" msgstr "隧道" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2772 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3615 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2873 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3779 msgid "Tx power" msgstr "发射功率" @@ -2039,17 +2065,17 @@ msgid "" msgstr "" "已安装 UPnP:它运行时,你网络中的设备可以自行开放端口,这些端口不会在此列出。" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:272 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3378 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:289 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3479 msgctxt "vantage" msgid "Unknown device" msgstr "未知设备" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3587 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3751 msgid "Unknown device type" msgstr "未知设备类型" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3596 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3760 msgid "Unknown radio" msgstr "未知射频" @@ -2064,14 +2090,14 @@ msgid "Unnamed rule" msgstr "未命名的规则" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:57 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2760 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3612 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3666 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2861 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3776 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3830 msgctxt "vantage" msgid "Up" msgstr "已上线" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2405 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2506 msgid "Up %s" msgstr "已运行 %s" @@ -2080,47 +2106,47 @@ msgstr "已运行 %s" #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:49 #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:51 #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:57 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2519 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3651 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2620 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3815 msgctxt "vantage" msgid "Uplink" msgstr "上行链路" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2519 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2520 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2620 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2621 msgid "Uplink %s" msgstr "上行链路 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3644 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3655 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3808 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3819 msgid "Uplink · %s" msgstr "上行链路 · %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2499 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2595 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2669 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2600 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2696 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2770 msgid "Upload" msgstr "上传" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:379 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:390 msgid "Upload (from clients)" msgstr "上传(来自客户端)" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3440 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3549 msgctxt "vantage" msgid "Uploaded" msgstr "已上传" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3119 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3220 msgid "Upstream" msgstr "上游" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3705 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3869 msgid "Uptime" msgstr "运行时间" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3120 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3472 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3221 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3581 msgid "VLAN %d" msgstr "VLAN %d" @@ -2134,11 +2160,13 @@ msgstr "" #: luci-app-vantage/root/usr/share/rpcd/acl.d/luci-app-vantage.json:33 msgid "" -"Vantage dashboard: name stations (luci.vantage set_alias: validated names " -"in /etc/config/vantage only, at most 512)" +"Vantage dashboard: name stations and keep a station's weak signal out of the " +"warnings (luci.vantage set_alias and set_quiet: validated names and quiet " +"MACs in /etc/config/vantage only, at most 512 each)" msgstr "" -"Vantage 仪表盘:命名站点(luci.vantage set_alias:仅将校验后的名称写入 /etc/" -"config/vantage,至多 512 条)" +"Vantage 仪表盘:命名站点,并将站点的弱信号排除在警告之外(luci.vantage " +"set_alias 和 set_quiet:仅将校验后的名称和静默 MAC 写入 /etc/config/vantage," +"各至多 512 条)" #: luci-app-vantage/root/usr/share/rpcd/acl.d/luci-app-vantage.json:3 msgid "" @@ -2157,15 +2185,15 @@ msgstr "" "getSwconfigPortState),以及内核去往互联网所走的默认路由(luci.vantage " "routes:协议族、设备和跃点数,不含网关)" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:43 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:46 msgid "Vendor" msgstr "供应商" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:156 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:162 msgid "Very weak signal %s; expect drops" msgstr "信号极弱 %s;可能频繁断连" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:156 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:162 msgid "Very weak signal; expect drops" msgstr "信号极弱;可能频繁断连" @@ -2261,15 +2289,15 @@ msgstr "WPA3 企业版" msgid "WPA3-Personal" msgstr "WPA3 个人版" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:42 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:45 msgid "WPS" msgstr "WPS" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3448 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3557 msgid "WPS device name" msgstr "WPS 设备名称" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1763 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1864 msgid "Warning" msgstr "警告" @@ -2282,16 +2310,16 @@ msgstr "警告" msgid "Weak" msgstr "弱" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:157 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2935 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:163 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3036 msgid "Weak signal" msgstr "信号弱" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:157 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:163 msgid "Weak signal %s; may roam poorly" msgstr "信号弱 %s;漫游可能不佳" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:130 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:136 msgid "Weakest of %d client" msgid_plural "Weakest of %d clients" msgstr[0] "%d 个客户端中最弱" @@ -2304,29 +2332,29 @@ msgstr "开放内容取决于 firewall4 如何处理 %s,本页无法跟踪。 #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:105 #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:106 -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:108 #: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:110 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2989 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:112 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3090 msgid "Wi-Fi" msgstr "Wi-Fi" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2049 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2989 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2150 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3090 msgid "Wired" msgstr "有线" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1218 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3238 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3239 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1317 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3339 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3340 msgctxt "vantage" msgid "Wireless networks" msgstr "无线网络" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3398 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3506 msgid "Wireless settings" msgstr "无线设置" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3487 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3596 msgid "Your name for this device" msgstr "你为此设备设置的名称" @@ -2364,15 +2392,15 @@ msgstr "任意区域" msgid "any zone (default policy)" msgstr "任意区域(默认策略)" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2766 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2867 msgid "auto" msgstr "自动" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3436 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3545 msgid "before this page opened" msgstr "打开本页之前" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3465 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3574 msgid "behind %s, VLAN %d" msgstr "位于 %s 之后,VLAN %d" @@ -2381,16 +2409,16 @@ msgctxt "vantage" msgid "bit/s" msgstr "bit/s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2627 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2728 msgid "collecting · %s of data" msgstr "采集中 · 已采集 %s 数据" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2627 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2728 msgid "collecting · first samples" msgstr "采集中 · 首个样本" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:252 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2607 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:263 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2708 msgid "collecting…" msgstr "采集中…" @@ -2402,18 +2430,18 @@ msgstr "自定义规则文件" msgid "dBm" msgstr "dBm" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:1967 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2105 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2068 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2206 msgid "default route" msgstr "默认路由" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2105 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2206 msgid "default route via %s" msgstr "默认路由经由 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:386 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3123 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3464 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:397 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3224 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3573 msgid "down" msgstr "已断开" @@ -2422,7 +2450,7 @@ msgctxt "vantage" msgid "drop" msgstr "丢弃" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3517 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3626 msgctxt "vantage" msgid "e.g. Living room TV" msgstr "例如:客厅电视" @@ -2448,7 +2476,7 @@ msgstr "来自任意地址" msgid "from anywhere except %s" msgstr "来自除 %s 外的任意地址" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:376 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:379 msgid "full duplex" msgstr "全双工" @@ -2456,13 +2484,13 @@ msgstr "全双工" msgid "gateway %s" msgstr "网关 %s" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:376 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/model.js:379 msgid "half duplex" msgstr "半双工" #: luci-app-vantage/htdocs/luci-static/resources/vantage/fmt.js:62 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2125 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3265 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2226 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3366 msgid "idle" msgstr "空闲" @@ -2504,64 +2532,64 @@ msgctxt "vantage" msgid "kbit/s" msgstr "kbit/s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2390 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2626 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2491 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2727 msgid "last 5 min" msgstr "最近 5 分钟" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:175 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/insight.js:181 #: luci-app-vantage/htdocs/luci-static/resources/vantage/wifi.js:104 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3168 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3269 msgid "legacy" msgstr "旧版" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:386 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:397 msgid "link up" msgstr "已连接" -#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:42 +#: luci-app-vantage/htdocs/luci-static/resources/vantage/names.js:45 msgid "mDNS" msgstr "mDNS" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3489 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3598 msgid "mDNS announcement" msgstr "mDNS 广播" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3420 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3471 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3529 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3580 msgid "measuring" msgstr "测量中" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2602 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2703 msgid "measuring…" msgstr "测量中…" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2583 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2684 msgctxt "vantage" msgid "no data" msgstr "无数据" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2098 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2199 msgid "no uplink" msgstr "无上行链路" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3446 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3555 msgid "not known to this AP" msgstr "此 AP 未识别" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3478 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3587 msgid "not known to this device" msgstr "此设备未识别" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3618 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3782 msgid "not reported (driver placeholder %s)" msgstr "未报告(驱动占位值 %s)" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3429 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3538 msgid "not reported by the driver" msgstr "驱动未报告" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2623 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2724 msgctxt "vantage" msgid "now" msgstr "现在" @@ -2570,16 +2598,16 @@ msgstr "现在" msgid "now %s down, %s up" msgstr "当前下行 %s,上行 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3427 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3536 msgid "older than the radio (%s)" msgstr "比射频支持的标准更旧(%s)" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2600 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2701 msgctxt "vantage" msgid "peak" msgstr "峰值" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2391 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2492 msgid "per core" msgstr "每核" @@ -2588,11 +2616,11 @@ msgctxt "vantage" msgid "port forward" msgstr "端口转发" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3414 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3523 msgid "range %s … %s" msgstr "范围 %s … %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3661 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3825 msgid "received on %s" msgstr "在 %s 上接收" @@ -2605,7 +2633,7 @@ msgstr "拒绝" msgid "router port %s" msgstr "路由器端口 %s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3662 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3826 msgid "sent on %s" msgstr "在 %s 上发送" @@ -2613,12 +2641,12 @@ msgstr "在 %s 上发送" msgid "short GI" msgstr "短 GI" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3142 -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3473 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3243 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3582 msgid "static entry" msgstr "静态条目" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3466 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3575 msgid "switch port %s" msgstr "交换机端口 %s" @@ -2630,11 +2658,11 @@ msgstr "已关闭" msgid "the covered subnets of zone %s" msgstr "区域 %s 覆盖的子网" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3470 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3579 msgid "the port in total: %s" msgstr "该端口合计:%s" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3465 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:3574 msgid "the port: %s" msgstr "端口:%s" @@ -2650,7 +2678,7 @@ msgstr "此路由器" msgid "traffic rule" msgstr "通信规则" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2110 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2211 msgid "up %s" msgstr "已运行 %s" @@ -2667,10 +2695,17 @@ msgstr "区域转发" msgid "zones %s and %s if they share a device" msgstr "区域 %s 和 %s(若两者共用设备)" -#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2620 +#: luci-app-vantage/htdocs/luci-static/resources/view/vantage/overview.js:2721 msgid "−%d min" msgstr "−%d 分钟" +#~ msgid "" +#~ "Vantage dashboard: name stations (luci.vantage set_alias: validated names " +#~ "in /etc/config/vantage only, at most 512)" +#~ msgstr "" +#~ "Vantage 仪表盘:命名站点(luci.vantage set_alias:仅将校验后的名称写入 /" +#~ "etc/config/vantage,至多 512 条)" + #~ msgid "" #~ "Vantage dashboard: read-only status of the device, uplink, radios and " #~ "stations (wireless configuration without keys, through luci.vantage " diff --git a/luci-app-vantage/root/usr/share/rpcd/acl.d/luci-app-vantage.json b/luci-app-vantage/root/usr/share/rpcd/acl.d/luci-app-vantage.json index 791863ee1..3ce16a892 100644 --- a/luci-app-vantage/root/usr/share/rpcd/acl.d/luci-app-vantage.json +++ b/luci-app-vantage/root/usr/share/rpcd/acl.d/luci-app-vantage.json @@ -30,7 +30,7 @@ } }, "luci-app-vantage-names": { - "description": "Vantage dashboard: name stations (luci.vantage set_alias: validated names in /etc/config/vantage only, at most 512)", + "description": "Vantage dashboard: name stations and keep a station's weak signal out of the warnings (luci.vantage set_alias and set_quiet: validated names and quiet MACs in /etc/config/vantage only, at most 512 each)", "read": { "ubus": { "uci": [ "get" ] @@ -39,7 +39,7 @@ }, "write": { "ubus": { - "luci.vantage": [ "set_alias" ] + "luci.vantage": [ "set_alias", "set_quiet" ] } } } diff --git a/luci-app-vantage/root/usr/share/rpcd/ucode/luci.vantage b/luci-app-vantage/root/usr/share/rpcd/ucode/luci.vantage index ca95e045f..efa095339 100644 --- a/luci-app-vantage/root/usr/share/rpcd/ucode/luci.vantage +++ b/luci-app-vantage/root/usr/share/rpcd/ucode/luci.vantage @@ -42,6 +42,10 @@ // with name ''. Validated here, whatever the browser did, and // written to /etc/config/vantage only. Write group // luci-app-vantage-names. +// set_quiet { mac, quiet }: whether the dashboard leaves one station's +// weak signal out of its warnings (#110): a quiet section +// with its MAC in /etc/config/vantage, at most MAX_QUIET. +// Write group luci-app-vantage-names. // // Keep the validation in step with names.js (validateAlias, normMac, // ICONS) and with dev/replay/vantage-plugin.js; tests/plugin.test.js runs @@ -59,6 +63,7 @@ const WIRELESS = 'wireless'; // read only, by wireless_from_config() const NAME_MAX = 48; // code points, after collapsing spaces const NAME_MAX_UNITS = NAME_MAX * 8; // raw input cap, in UTF-16 code units (as names.js) const MAX_ALIASES = 512; // client sections; bounds /etc/config/vantage +const MAX_QUIET = 512; // quiet sections, likewise const ICONS = [ 'phone', 'laptop', 'tablet', 'desktop', 'tv', 'speaker', 'printer', 'camera', 'console', 'watch', 'iot', 'router', 'device' ]; const THERMAL = '/sys/class/thermal'; const MAX_ZONES = 16; @@ -74,6 +79,31 @@ const BOARD = '/etc/board.json'; const BOARD_MAX = 65536; // bytes read of it const MAX_SWITCH_VLANS = 64; +// Patterns, compiled once: ucode compiles a regular expression literal each +// time the code reaches it, and a counted repeat ({1,64}) costs musl +// milliseconds to compile on a router (8.5 ms against 0.07 ms for the same +// test with the pattern compiled once, on an ARM access point). rpcd keeps +// this module loaded, these with it, between calls. +const RE_MAC_COLON = /^[0-9a-f]{2}(:[0-9a-f]{2}){5}$/; +const RE_MAC_DASH = /^[0-9a-f]{2}(-[0-9a-f]{2}){5}$/; +const RE_MAC_DOTS = /^[0-9a-f]{4}\.[0-9a-f]{4}\.[0-9a-f]{4}$/; +const RE_MAC_BARE = /^[0-9a-f]{12}$/; +const RE_DASHES = /-/g; +const RE_DOTS = /\./g; +const RE_PAIRS = /../g; +const RE_SPACES = /\s+/; +const RE_ENCRYPTION = /^[A-Za-z0-9+_-]{1,40}/; +const RE_NAME = /^[A-Za-z0-9_.-]{1,64}$/; // radio sections, interfaces +const RE_ZONE = /^thermal_zone[0-9]{1,3}$/; +const RE_MILLIDEG = /^-?[0-9]{1,7}$/; +const RE_ZONE_TYPE = /^[A-Za-z0-9_.-]{1,40}$/; +const RE_NETDEV = /^[A-Za-z0-9_.-]{1,15}$/; +const RE_SWITCH_PORT = /^([0-9]{1,2})([t*]?)$/; // '5t' +const RE_SWITCH = /^[A-Za-z0-9_.-]{1,32}$/; +const RE_ROLE = /^[a-z0-9]{1,16}$/; +const RE_VID = /^[0-9]{1,4}$/; +const RE_VLAN_DEV = /^[A-Za-z0-9_-]{1,10}\.([0-9]{1,4})$/; // 'eth1.1' + /* ------------------------------------------------------------ helpers */ // '02-00-5E-00-53-0F' / '0200.5e00.530f' / '02005e00530f' -> '02:00:5e:00:53:0f' @@ -83,15 +113,15 @@ function norm_mac(v) { let h = lc(trim(v)); - if (match(h, /^[0-9a-f]{2}(:[0-9a-f]{2}){5}$/)) + if (match(h, RE_MAC_COLON)) return h; - if (match(h, /^[0-9a-f]{2}(-[0-9a-f]{2}){5}$/)) - return replace(h, /-/g, ':'); + if (match(h, RE_MAC_DASH)) + return replace(h, RE_DASHES, ':'); - if (match(h, /^[0-9a-f]{4}\.[0-9a-f]{4}\.[0-9a-f]{4}$/) || match(h, /^[0-9a-f]{12}$/)) { - h = replace(h, /\./g, ''); - return join(':', map(match(h, /../g), (m) => m[0])); + if (match(h, RE_MAC_DOTS) || match(h, RE_MAC_BARE)) { + h = replace(h, RE_DOTS, ''); + return join(':', map(match(h, RE_PAIRS), (m) => m[0])); } return null; @@ -223,7 +253,7 @@ function uci_true(v) { // the encryption mode ('sae-mixed+ccmp', 'psk2', 'none', ...): its leading // run of mode characters and nothing after it function encryption(v) { - let m = (type(v) == 'string') ? match(v, /^[A-Za-z0-9+_-]{1,40}/) : null; + let m = (type(v) == 'string') ? match(v, RE_ENCRYPTION) : null; return m ? m[0] : null; } @@ -291,7 +321,7 @@ function wireless_from_config() { return out; wl.foreach(WIRELESS, 'wifi-device', (s) => { - if (match(s['.name'], /^[A-Za-z0-9_.-]{1,64}$/)) + if (match(s['.name'], RE_NAME)) radios[s['.name']] = { disabled: uci_true(s.disabled), config: { ...s, txpower: null }, interfaces: [] }; }); @@ -300,14 +330,14 @@ function wireless_from_config() { let ifname = s.ifname; if (type(r) != 'object' || uci_true(s.disabled) || type(ifname) != 'string' || - !match(ifname, /^[A-Za-z0-9_.-]{1,64}$/) || taken[ifname]) + !match(ifname, RE_NAME) || taken[ifname]) return; taken[ifname] = true; push(r.interfaces, { ifname, section: s['.name'], - config: { ...s, network: (type(s.network) == 'string') ? filter(split(s.network, /\s+/), (n) => n != '') : s.network } + config: { ...s, network: (type(s.network) == 'string') ? filter(split(s.network, RE_SPACES), (n) => n != '') : s.network } }); }); @@ -400,13 +430,70 @@ function set_alias(args) { return { ok: true, op, mac }; } +/* ---------------------------------------------------------- set_quiet */ + +function set_quiet(args) { + let mac = norm_mac(args.mac); + + if (!mac || is_multicast(mac)) + return { ok: false, error: 'invalid-mac' }; + + if (type(args.quiet) != 'bool') + return { ok: false, error: 'invalid-value' }; + + let uci = cursor(); + let mine = [], total = 0; + + uci.load(CONFIG); + uci.foreach(CONFIG, 'quiet', (s) => { + total++; + + if (norm_mac(s.mac) == mac) + push(mine, s['.name']); + }); + + let op; + + if (args.quiet) { + if (length(mine)) + return { ok: true, op: 'none', mac }; + + if (total >= MAX_QUIET) + return { ok: false, error: 'too-many' }; + + let sid = uci.add(CONFIG, 'quiet'); + + if (!sid) + return { ok: false, error: 'failed' }; + + uci.set(CONFIG, sid, 'mac', mac); + op = 'add'; + } + else { + if (!length(mine)) + return { ok: true, op: 'none', mac }; + + for (let sid in mine) + uci.delete(CONFIG, sid); + + op = 'delete'; + } + + if (!uci.commit(CONFIG)) { + uci.revert(CONFIG); + return { ok: false, error: 'failed' }; + } + + return { ok: true, op, mac }; +} + /* ------------------------------------------------------------ thermal */ // [ { zone, type, temp } ] in zone order, at most MAX_ZONES; a zone whose // temperature cannot be read (switched off, no sensor yet) is left out, // a type that is not a plain word is sent as '' function thermal() { - let zones = filter(lsdir(THERMAL) ?? [], n => match(n, /^thermal_zone[0-9]{1,3}$/)); + let zones = filter(lsdir(THERMAL) ?? [], n => match(n, RE_ZONE)); let out = []; for (let n in sort(zones, (a, b) => int(substr(a, 12)) - int(substr(b, 12)))) { @@ -415,12 +502,12 @@ function thermal() { let temp = trim(readfile(THERMAL + '/' + n + '/temp', 16) ?? ''); - if (!match(temp, /^-?[0-9]{1,7}$/)) + if (!match(temp, RE_MILLIDEG)) continue; let kind = trim(readfile(THERMAL + '/' + n + '/type', 64) ?? ''); - push(out, { zone: n, type: match(kind, /^[A-Za-z0-9_.-]{1,40}$/) ? kind : '', temp: int(temp) }); + push(out, { zone: n, type: match(kind, RE_ZONE_TYPE) ? kind : '', temp: int(temp) }); } return out; @@ -429,7 +516,7 @@ function thermal() { /* -------------------------------------------------------------- wired */ function netdev(v) { - return type(v) == 'string' && match(v, /^[A-Za-z0-9_.-]{1,15}$/) ? v : null; + return type(v) == 'string' && match(v, RE_NETDEV) ? v : null; } // true when the bridges hold FDB_LIMIT forwarding entries or more @@ -528,8 +615,8 @@ function switch_port(v) { function vlan_ports(sw, list, vid) { let devs = [], members = []; - for (let t in split(list, /\s+/)) { - let m = match(t, /^([0-9]{1,2})([t*]?)$/); + for (let t in split(list, RE_SPACES)) { + let m = match(t, RE_SWITCH_PORT); let num = m ? switch_port(+m[1]) : null; if (num == null || length(members) >= 64) @@ -562,7 +649,7 @@ function switches() { catch (e) { return out; } for (let name, sw in ((type(board?.switch) == 'object') ? board.switch : {})) { - if (!match(name, /^[A-Za-z0-9_.-]{1,32}$/) || type(sw?.ports) != 'array') + if (!match(name, RE_SWITCH) || type(sw?.ports) != 'array') continue; let ports = {}, cpu = {}; @@ -578,7 +665,7 @@ function switches() { else ports[num] = { num, - role: (type(p.role) == 'string' && match(p.role, /^[a-z0-9]{1,16}$/)) ? p.role : null, + role: (type(p.role) == 'string' && match(p.role, RE_ROLE)) ? p.role : null, index: (type(p.index) == 'int' && p.index >= 0 && p.index < 100) ? p.index : null }; } @@ -596,7 +683,7 @@ function switches() { nw.foreach(NETWORK, 'switch_vlan', (s) => { let sw = (type(s.device) == 'string') ? known[s.device] : null; let id = s.vid ?? s.vlan; - let vid = (type(id) == 'string' && match(id, /^[0-9]{1,4}$/)) ? +id : null; + let vid = (type(id) == 'string' && match(id, RE_VID)) ? +id : null; if (!sw || vid == null || vid > 4094 || type(s.ports) != 'string') return; @@ -619,7 +706,7 @@ function switches() { continue; for (let r in sw.roles) { - let m = (type(r?.device) == 'string' && type(r.ports) == 'string') ? match(r.device, /^[A-Za-z0-9_-]{1,10}\.([0-9]{1,4})$/) : null; + let m = (type(r?.device) == 'string' && type(r.ports) == 'string') ? match(r.device, RE_VLAN_DEV) : null; let vid = m ? +m[1] : null; let v = (vid != null && vid <= 4094) ? vlan_ports(sw, r.ports, vid) : null; @@ -645,7 +732,7 @@ const methods = { return wireless_from_config(); for (let name, r in reply) - if (type(r) == 'object' && match(name, /^[A-Za-z0-9_.-]{1,64}$/)) + if (type(r) == 'object' && match(name, RE_NAME)) out[name] = reduce_radio(r); return out; @@ -681,6 +768,13 @@ const methods = { call: function(request) { return set_alias(request.args); } + }, + + set_quiet: { + args: { mac: 'mac', quiet: true }, + call: function(request) { + return set_quiet(request.args); + } } }; diff --git a/luci-app-watchcat/po/de/watchcat.po b/luci-app-watchcat/po/de/watchcat.po index 2e0aa5b65..5fd9b19ed 100644 --- a/luci-app-watchcat/po/de/watchcat.po +++ b/luci-app-watchcat/po/de/watchcat.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2026-09-08 12:39+0000\n" -"Last-Translator: HerbJul <19JulianHerbst95@web.de>\n" +"PO-Revision-Date: 2026-11-04 16:54+0000\n" +"Last-Translator: Dirk Brenken \n" "Language-Team: German \n" "Language: de\n" @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2026.9.1\n" +"X-Generator: Weblate 2026.11.1.dev0\n" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:94 msgid "" @@ -150,7 +150,7 @@ msgstr "" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:102 msgid "Interface" -msgstr "Interface" +msgstr "Schnittstelle" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:103 msgid "Interface to monitor and/or restart" diff --git a/luci-app-watchcat/po/hu/watchcat.po b/luci-app-watchcat/po/hu/watchcat.po index 9a30f82e9..64642f3ca 100644 --- a/luci-app-watchcat/po/hu/watchcat.po +++ b/luci-app-watchcat/po/hu/watchcat.po @@ -1,8 +1,9 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2026-03-08 17:31+0000\n" -"Last-Translator: hmzs \n" +"PO-Revision-Date: 2026-11-05 07:53+0000\n" +"Last-Translator: Kövecses József " +"\n" "Language-Team: Hungarian \n" "Language: hu\n" @@ -10,7 +11,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.17-dev\n" +"X-Generator: Weblate 2026.11.1.dev0\n" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:94 msgid "" @@ -20,6 +21,12 @@ msgid "" "to fail. Enter the number of seconds to wait for the soft reboot to fail or " "use 0 to disable the forced reboot delay." msgstr "" +"A Ping alapú újraindítás és az Időszakos újraindítás módra vonatkozik " +"
Az útválasztó újraindításakor a szolgáltatás szoftveres újraindítást " +"kezdeményez. Ha itt nullától eltérő értéket ad meg, a szoftveres újraindítás " +"sikertelensége esetén késleltetett hardveres újraindítás történik. Adja meg, " +"hány másodpercig kell várni a szoftveres újraindítás sikertelenségére, vagy " +"a 0 értékkel tiltsa le a kényszerített újraindítás késleltetését." #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:111 msgid "" @@ -27,20 +34,26 @@ msgid "" "ModemManager, you can have Watchcat restart your ModemManager interface by " "specifying its name." msgstr "" +"A Ping alapú újraindítás és az Interfész újraindítása módra vonatkozik
ModemManager használata esetén a Watchcat a nevének megadásával " +"újraindíthatja a ModemManager-interfészt." #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:104 msgid "" "Applies to Ping Reboot, Restart Interface, and Run Script modes
Specify the interface to monitor and react if a ping over it fails." msgstr "" +"A Ping alapú újraindítás, az Interfész újraindítása és a Parancsfájl " +"futtatása módra vonatkozik
Adja meg a figyelendő interfészt, " +"amelyen sikertelen ping esetén a szolgáltatás reagál." #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:60 msgid "Address family for pinging the host" -msgstr "" +msgstr "A gép pingeléséhez használt címcsalád" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:65 msgid "Any" -msgstr "" +msgstr "Bármely" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:84 msgid "Big: 248 bytes" @@ -48,11 +61,11 @@ msgstr "Nagy: 248 bájt" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:70 msgid "Check Interval" -msgstr "" +msgstr "Ellenőrzési időköz" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:93 msgid "Force Reboot Delay" -msgstr "" +msgstr "Kényszerített újraindítás késleltetése" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:19 msgid "General Settings" @@ -68,10 +81,13 @@ msgid "" "host becomes unreachable. Click the Add button at the bottom to set " "up more than one action." msgstr "" +"Itt több ellenőrzést és műveletet is beállíthat arra az esetre, ha egy gép " +"elérhetetlenné válik. Több művelet beállításához kattintson az alul " +"található Hozzáadás gombra." #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:52 msgid "Hosts To Check" -msgstr "" +msgstr "Ellenőrzendő gépek" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:71 msgid "" @@ -82,20 +98,28 @@ msgid "" "b>
  • 1 hour would be: 1h
  • 1 week would be: 7d
      " msgstr "" +"Milyen gyakran pingelje a fent megadott gépet.

      Az " +"alapértelmezett mértékegység utótag nélkül a másodperc, de használhatja az " +"m utótagot a percekhez, a h utótagot az órákhoz vagy a d utótagot a napokhoz.

      Példák:
      • 10 másodperc: 10 " +"vagy 10s
      • 5 perc: 5m
      • 1 óra: 1h
      • 1 " +"hét: 7d
        • " #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:85 msgid "Huge: 1492 bytes" -msgstr "" +msgstr "Hatalmas: 1492 bájt" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:52 msgid "IP addresses or hostnames to ping." -msgstr "" +msgstr "Pingelendő IP-címek vagy gépnevek." #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:118 msgid "" "If using ModemManager, then before restarting the interface, set the modem " "to be allowed to use any band." msgstr "" +"ModemManager használata esetén az interfész újraindítása előtt engedélyezi a " +"modem számára bármely sáv használatát." #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:41 msgid "" @@ -110,14 +134,25 @@ msgid "" "li>
        • 5 minutes would be: 5m
        • 1 hour would be: 1h
        • 1 week would be: 7d
          • " msgstr "" +"Időszakos újraindítás módban azt adja meg, milyen gyakran történjen " +"újraindítás.
            Ping alapú újraindítás módban azt a leghosszabb időt " +"adja meg, ameddig az ellenőrzendő gép válasz nélkül maradhat, mielőtt az " +"újraindítás megtörténik.
            Hálózat újraindítása vagy Parancsfájl " +"futtatása módban azt a leghosszabb időt adja meg, ameddig az ellenőrzendő " +"gép válasz nélkül maradhat, mielőtt az interfész újraindul, vagy a " +"parancsfájl lefut.

            Az alapértelmezett mértékegység utótag nélkül " +"a másodperc, de használhatja az m utótagot a percekhez, a h " +"utótagot az órákhoz vagy a d utótagot a napokhoz.

            " +"Példák:
            • 10 másodperc: 10 vagy 10s
            • 5 perc: " +"5m
            • 1 óra: 1h
            • 1 hét: 7d
              • " #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:102 msgid "Interface" -msgstr "Csatoló" +msgstr "Interfész" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:103 msgid "Interface to monitor and/or restart" -msgstr "" +msgstr "Figyelendő és/vagy újraindítandó interfész" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:86 msgid "Jumbo: 9000 bytes" @@ -129,7 +164,7 @@ msgstr "Mód" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:110 msgid "Name of ModemManager Interface" -msgstr "ModemManager csatoló neve" +msgstr "ModemManager interfész neve" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:40 msgid "Period" @@ -137,15 +172,15 @@ msgstr "Periódus" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:28 msgid "Periodic Reboot" -msgstr "" +msgstr "Időszakos újraindítás" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:80 msgid "Ping Packet Size" -msgstr "" +msgstr "Ping-csomagméret" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:27 msgid "Ping Reboot" -msgstr "" +msgstr "Ping alapú újraindítás" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:23 msgid "" @@ -156,24 +191,32 @@ msgid "" "time.
                Run Script: Run a script if a ping to a specified host fails " "for a specified duration of time.
                " msgstr "" +"Ping alapú újraindítás: a készülék újraindítása, ha egy megadott gép " +"pingelése megadott ideig sikertelen.
                Időszakos újraindítás: a " +"készülék újraindítása megadott időközönként.
                Interfész újraindítása: " +"egy hálózati interfész újraindítása, ha egy megadott gép pingelése megadott " +"ideig sikertelen.
                Parancsfájl futtatása: egy parancsfájl futtatása, " +"ha egy megadott gép pingelése megadott ideig sikertelen.
                " #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:29 msgid "Restart Interface" -msgstr "" +msgstr "Interfész újraindítása" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:30 msgid "Run Script" -msgstr "" +msgstr "Parancsfájl futtatása" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:33 msgid "Script to run" -msgstr "" +msgstr "Futtatandó parancsfájl" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:34 msgid "" "Script to run when the host has not responded for the specified duration of " "time. The script is passed the interface name as $1" msgstr "" +"Az a parancsfájl, amely akkor fut le, ha a gép a megadott ideig nem " +"válaszolt. A parancsfájl paraméterként megkapja az interfész nevét: $1" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:81 msgid "Small: 1 byte" @@ -186,10 +229,12 @@ msgstr "Normál: 56 bájt" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:15 msgid "These rules will govern how this device reacts to network events." msgstr "" +"Ezek a szabályok határozzák meg, hogyan reagál a készülék a hálózati " +"eseményekre." #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:117 msgid "Unlock Modem Bands" -msgstr "" +msgstr "Modemsávok feloldása" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:11 #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:15 diff --git a/luci-app-watchcat/po/ko/watchcat.po b/luci-app-watchcat/po/ko/watchcat.po index da0ed65bf..b8f5c1b1b 100644 --- a/luci-app-watchcat/po/ko/watchcat.po +++ b/luci-app-watchcat/po/ko/watchcat.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2026-10-17 20:51+0000\n" -"Last-Translator: raepo7214 \n" +"PO-Revision-Date: 2026-11-02 21:34+0000\n" +"Last-Translator: Hyeonjeong Lee \n" "Language-Team: Korean \n" "Language: ko\n" @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 2026.11.dev0\n" +"X-Generator: Weblate 2026.11.1.dev0\n" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:94 msgid "" @@ -20,6 +20,11 @@ msgid "" "to fail. Enter the number of seconds to wait for the soft reboot to fail or " "use 0 to disable the forced reboot delay." msgstr "" +"Ping 재부팅 및 주기적 재부팅 모드에 적용됩니다
                라우터를 " +"재부팅할 때 서비스는 소프트 재부팅을 시도합니다. 강제 재부팅 지연 기능을 " +"활성화하면 설정한 시간 동안 소프트 재부팅에 실패할 경우 하드 재부팅을 " +"실행합니다. 소프트 재부팅 실패 판정까지 대기할 시간(초)을 입력하거나, 0을 " +"입력하여 강제 재부팅 지연 기능을 비활성화하세요." #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:111 msgid "" @@ -27,16 +32,22 @@ msgid "" "ModemManager, you can have Watchcat restart your ModemManager interface by " "specifying its name." msgstr "" +"Ping 재부팅 및 인터페이스 재시작 모드에 적용됩니다
                " +"ModemManager를 사용하는 경우, ModemManager 인터페이스 이름을 지정하여 " +"Watchcat이 해당 인터페이스를 재시작하도록 할 수 있습니다." #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:104 msgid "" "Applies to Ping Reboot, Restart Interface, and Run Script modes
                Specify the interface to monitor and react if a ping over it fails." msgstr "" +"Ping 재부팅, 인터페이스 재시작, 스크립트 실행 모드에 적용됩니다 " +"
                모니터링할 인터페이스를 지정하고 이를 통한 ping이 실패할 경우 " +"대응합니다." #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:60 msgid "Address family for pinging the host" -msgstr "" +msgstr "호스트에 ping 보낼 주소 체계" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:65 msgid "Any" @@ -52,7 +63,7 @@ msgstr "확인 간격" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:93 msgid "Force Reboot Delay" -msgstr "" +msgstr "강제 재부팅 지연 시간" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:19 msgid "General Settings" @@ -68,6 +79,9 @@ msgid "" "host becomes unreachable. Click the Add button at the bottom to set " "up more than one action." msgstr "" +"호스트와 연결이 끊어지는 상황에 대비하여 여러 가지 확인 및 대응 작업을 " +"설정할 수 있습니다. 작업을 2개 이상 설정하려면 하단의 추가 버튼을 " +"클릭하세요." #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:52 msgid "Hosts To Check" @@ -82,6 +96,11 @@ msgid "" "b>
              • 1 hour would be: 1h
              • 1 week would be: 7d
                  " msgstr "" +"지정한 호스트를 ping으로 확인할 주기입니다.

                  기본 단위는 초이며, " +"초는 단위를 생략할 수 있습니다. 분 단위에는 m, 시간 단위에는 h" +", 일 단위에는 d를 사용할 수 있습니다.

                  예시:
                  • 10초: " +"10 또는 10s
                  • 5분: 5m
                  • 1시간: 1h
                  • 1주일: 7d
                    • " #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:85 msgid "Huge: 1492 bytes" @@ -89,13 +108,15 @@ msgstr "초대형: 1492 바이트" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:52 msgid "IP addresses or hostnames to ping." -msgstr "" +msgstr "ping을 보낼 IP 주소나 호스트 이름입니다." #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:118 msgid "" "If using ModemManager, then before restarting the interface, set the modem " "to be allowed to use any band." msgstr "" +"ModemManager를 사용하는 경우, 인터페이스를 재시작하기 전에 모뎀이 모든 " +"대역을 사용할 수 있도록 설정합니다." #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:41 msgid "" @@ -110,6 +131,16 @@ msgid "" "li>
                    • 5 minutes would be: 5m
                    • 1 hour would be: 1h
                    • 1 week would be: 7d
                      • " msgstr "" +"주기적 재부팅 모드에서는 재부팅 주기를 정의합니다.
                        Ping 재부팅 " +"모드에서는 확인할 호스트로부터 응답이 없는 상태가 유지되는 최대 허용 시간을 " +"정의하며, 이 시간이 지나면 재부팅을 실행합니다.
                        네트워크 재시작 또는 " +"스크립트 실행 모드에서는 확인할 호스트로부터 응답이 없는 상태가 유지되는 " +"최대 허용 시간을 정의하며, 이 시간이 지나면 인터페이스를 재시작하거나 " +"스크립트를 실행합니다.

                        기본 단위는 초이며, 초는 단위를 생략할 수 " +"있습니다. 분 단위에는 m, 시간 단위에는 h, 일 단위에는 d" +"를 사용할 수 있습니다.

                        예시:
                        • 10초: 10 또는 10s
                        • 5분: 5m
                        • 1시간: 1h
                        • 1주일: 7d" +"
                          • " #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:102 msgid "Interface" @@ -117,7 +148,7 @@ msgstr "인터페이스" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:103 msgid "Interface to monitor and/or restart" -msgstr "" +msgstr "모니터링하거나 재시작할 인터페이스입니다" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:86 msgid "Jumbo: 9000 bytes" @@ -137,7 +168,7 @@ msgstr "주기" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:28 msgid "Periodic Reboot" -msgstr "" +msgstr "주기적 재부팅" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:80 msgid "Ping Packet Size" @@ -145,7 +176,7 @@ msgstr "Ping 패킷 크기" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:27 msgid "Ping Reboot" -msgstr "" +msgstr "Ping 재부팅" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:23 msgid "" @@ -156,6 +187,12 @@ msgid "" "time.
                            Run Script: Run a script if a ping to a specified host fails " "for a specified duration of time.
                            " msgstr "" +"Ping 재부팅: 지정한 호스트에 대한 ping 응답이 일정 시간 동안 실패하면 이 " +"장치를 재부팅합니다.
                            주기적 재부팅: 지정한 시간 간격이 지난 후 이 " +"장치를 재부팅합니다.
                            인터페이스 재시작: 지정한 호스트에 대한 ping " +"응답이 일정 시간 동안 실패하면 네트워크 인터페이스를 재시작합니다.
                            " +"스크립트 실행: 지정한 호스트에 대한 ping 응답이 일정 시간 동안 실패하면 " +"스크립트를 실행합니다.
                            " #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:29 msgid "Restart Interface" @@ -163,17 +200,19 @@ msgstr "인터페이스 재시작" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:30 msgid "Run Script" -msgstr "" +msgstr "스크립트 실행" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:33 msgid "Script to run" -msgstr "" +msgstr "실행할 스크립트" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:34 msgid "" "Script to run when the host has not responded for the specified duration of " "time. The script is passed the interface name as $1" msgstr "" +"지정한 시간 동안 호스트가 응답하지 않을 때 실행할 스크립트입니다. " +"스크립트에는 인터페이스 이름이 $1로 전달됩니다" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:81 msgid "Small: 1 byte" @@ -185,11 +224,11 @@ msgstr "표준: 56 바이트" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:15 msgid "These rules will govern how this device reacts to network events." -msgstr "" +msgstr "이 규칙에 따라 이 장치가 네트워크 이벤트에 대응하는 방식이 결정됩니다." #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:117 msgid "Unlock Modem Bands" -msgstr "" +msgstr "모뎀 대역 잠금 해제" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:11 #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:15 diff --git a/luci-app-watchcat/po/pl/watchcat.po b/luci-app-watchcat/po/pl/watchcat.po index e1d1e29d0..78338ddd6 100644 --- a/luci-app-watchcat/po/pl/watchcat.po +++ b/luci-app-watchcat/po/pl/watchcat.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2026-03-29 19:31+0000\n" -"Last-Translator: Matthaiks \n" +"PO-Revision-Date: 2026-11-04 21:08+0000\n" +"Last-Translator: Matthaiks \n" "Language-Team: Polish \n" "Language: pl\n" @@ -11,7 +11,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Weblate 5.17-dev\n" +"X-Generator: Weblate 2026.11.1.dev0\n" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:94 msgid "" @@ -69,7 +69,7 @@ msgstr "Wymuś opóźnienie restartu" #: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:19 msgid "General Settings" -msgstr "Ustawienia główne" +msgstr "Ustawienia ogólne" #: applications/luci-app-watchcat/root/usr/share/rpcd/acl.d/luci-app-watchcat.json:3 msgid "Grant access to LuCI app watchcat" diff --git a/luci-app-wwand/htdocs/luci-static/resources/view/wwand/status.js b/luci-app-wwand/htdocs/luci-static/resources/view/wwand/status.js index 395a77922..c979e5fc9 100644 --- a/luci-app-wwand/htdocs/luci-static/resources/view/wwand/status.js +++ b/luci-app-wwand/htdocs/luci-static/resources/view/wwand/status.js @@ -20,7 +20,7 @@ var callDatapath = wrpc.datapath; var callGps = wrpc.gps; var callCtxStatus = wrpc.ctxStatus; var callSlots = wrpc.slots; -var callSwitchSlot = wrpc.switchSlot; +var callSwitchSlot = wrpc.switchSlotAsk; /* value formatters live in the shared wwand.format module */ var fmtList = fmt.fmtList; @@ -99,6 +99,17 @@ function renderConnections(details) { markup. */ [ _('State'), E('strong', { 'style': 'color:%s'.format(st == 'CONNECTED' ? '#3c3' : '#da3') }, [ st ]) ] ]; + /* `option iccid`: the card this connection needs and where its switch + stands (daemon sim_binding). Text children only — the reason is + daemon text. */ + var sb = d.st.sim || d.cfg.sim; + if (sb && sb.want) { + var sbs = { ok: _('in use'), switching: _('switching to it'), refused: _('not available'), + failed: _('switch failed'), released: _('the modem runs another card') }[sb.state] || ''; + var bad = (sb.state == 'refused' || sb.state == 'failed' || sb.state == 'released'); + rows.push([ _('SIM card'), E('span', bad ? { 'style': 'color:#e33' } : {}, + [ sb.want + (sbs ? ' · ' + sbs : '') + (sb.reason && sb.state != 'ok' ? ' — ' + sb.reason : '') ]) ]); + } if (v4) { rows.push([ _('IPv4'), '%s/%d'.format(v4.addr, v4.prefix) ]); rows.push([ _('IPv4 gateway'), v4.gateway || '—' ]); diff --git a/luci-app-wwand/htdocs/luci-static/resources/wwand/esim.js b/luci-app-wwand/htdocs/luci-static/resources/wwand/esim.js index 3b54c9225..f54cbe921 100644 --- a/luci-app-wwand/htdocs/luci-static/resources/wwand/esim.js +++ b/luci-app-wwand/htdocs/luci-static/resources/wwand/esim.js @@ -17,7 +17,7 @@ view — `esimSlot` is the physical slot its eSIM reads were made against, so this panel acts on the card it listed. */ -var callSwitchSlot = wrpc.switchSlot; +var callSwitchSlot = wrpc.switchSlotAsk; var callPinLock = wrpc.pinLock; var callEsim = wrpc.esim; diff --git a/luci-app-wwand/htdocs/luci-static/resources/wwand/format.js b/luci-app-wwand/htdocs/luci-static/resources/wwand/format.js index 5259be0d1..e8b6a3658 100644 --- a/luci-app-wwand/htdocs/luci-static/resources/wwand/format.js +++ b/luci-app-wwand/htdocs/luci-static/resources/wwand/format.js @@ -288,7 +288,7 @@ return baseclass.extend({ return null; if (e.ipa == 'ipae') - return _('in the card (IPAe) — the card and its eIM manage the profiles; the router has no ES10 access'); + return _('in the card (IPAe) — the card and its eIM manage the profiles; the router has no ES10 access (modem setting “SGP.32 IPA” hands it over)'); if (e.ipa == 'ipad') return e.ipae_supported diff --git a/luci-app-wwand/htdocs/luci-static/resources/wwand/modemopts.js b/luci-app-wwand/htdocs/luci-static/resources/wwand/modemopts.js index 46a00a60e..646155c56 100644 --- a/luci-app-wwand/htdocs/luci-static/resources/wwand/modemopts.js +++ b/luci-app-wwand/htdocs/luci-static/resources/wwand/modemopts.js @@ -433,7 +433,8 @@ return baseclass.extend({ bind(o); o = s.taboption(tab, form.Value, 'sim_slot', _('SIM slot'), - _('Physical SIM slot to activate on multi-slot / eSIM modems (0 = leave as-is). The list shows the slots the modem reports.')); + _('Physical SIM slot to activate on multi-slot / eSIM modems (0 = leave as-is). The list shows the slots the modem reports.') + ' ' + + _('An interface bound to a SIM card (its “SIM card” setting) overrides this: its start switches to the slot or eSIM profile that holds the card, and the modem comes up on that slot already when the interface starts automatically. The slot set here applies only while no such interface needs another card.')); o.placeholder = '0'; o.datatype = 'uinteger'; bind(o); @@ -520,6 +521,16 @@ return baseclass.extend({ } }; + /* opt-in, never automatic: declaring a device IPA switches the card's + own IPA (IPAe) off, and a fleet may rely on that IPA polling its eIM + (wwand docs/reference.md, "SGP.32 IoT cards") */ + o = s.taboption(tab, form.ListValue, 'ipa_mode', _('SGP.32 IPA'), + _('Who runs an SGP.32 IoT eUICC that also has its own IPA (IPAe). By default the card keeps its own IPA, and the router has no access to the card\'s profiles. "Router (IPAd)" makes the router announce its own IPA to the card. The card then turns its own IPA off and lets the router manage the profiles: eSIM page, lpac, eIM plugin.')); + o.value('', _('Card (IPAe, default)')); + o.value('ipad', _('Router (IPAd)')); + o.optional = true; + bind(o); + o = s.taboption(tab, form.Value, 'pincode', _('SIM PIN'), _('Default SIM PIN for this modem, entered on each start. Empty = unlocked SIM. Per-card overrides live in the SIMs list.')); o.datatype = 'and(uinteger,minlength(4),maxlength(8))'; diff --git a/luci-app-wwand/htdocs/luci-static/resources/wwand/rpc.js b/luci-app-wwand/htdocs/luci-static/resources/wwand/rpc.js index 9a75427f1..f2b6327e0 100644 --- a/luci-app-wwand/htdocs/luci-static/resources/wwand/rpc.js +++ b/luci-app-wwand/htdocs/luci-static/resources/wwand/rpc.js @@ -32,6 +32,8 @@ function checked(decl) { }; } +var callSwitchSlot = checked({ object: 'wwand', method: 'modem_sim_switch_slot', params: [ 'modem', 'slot', 'force' ], expect: {} }); + return baseclass.extend({ /* --- status flavours ------------------------------------------------- `status` unwraps the modems map (what the views iterate); @@ -78,7 +80,21 @@ return baseclass.extend({ /* --- SIM / eSIM ------------------------------------------------------ */ slots: rpc.declare({ object: 'wwand', method: 'modem_sim_slots', params: [ 'modem' ], expect: {} }), - switchSlot: checked({ object: 'wwand', method: 'modem_sim_switch_slot', params: [ 'modem', 'slot' ], expect: {} }), + switchSlot: callSwitchSlot, + /* A slot switch from a button: the daemon refuses one that would pull + the card from under an interface bound to it (`option iccid`), naming + the interface — asked here, and forced only on a yes. */ + switchSlotAsk: function(modem, slot) { + return callSwitchSlot(modem, slot, false).then(function(r) { + if (!(r && r.error == 'sim_in_use')) + return r; + + if (!confirm(_('Interface %s is bound to the SIM card in use. Switching takes it down; it stays down until its next start, which switches back to its card. Switch anyway?').format(r.interface || '?'))) + return r; + + return callSwitchSlot(modem, slot, true); + }); + }, pinVerify: checked({ object: 'wwand', method: 'modem_sim_pin_verify', params: [ 'modem', 'pin' ], expect: {} }), simPuk: checked({ object: 'wwand', method: 'modem_sim_puk', params: [ 'modem', 'puk', 'new_pin' ], expect: {} }), pinLock: checked({ object: 'wwand', method: 'modem_sim_pin_lock', params: [ 'modem', 'pin', 'enable' ], expect: {} }), diff --git a/luci-app-wwand/po/templates/wwand.pot b/luci-app-wwand/po/templates/wwand.pot index abba17881..fbe84a74a 100644 --- a/luci-app-wwand/po/templates/wwand.pot +++ b/luci-app-wwand/po/templates/wwand.pot @@ -7,7 +7,7 @@ msgid "" "overwrite it. Pick a different name." msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:574 +#: htdocs/luci-static/resources/wwand/modemopts.js:575 msgid "\"%s\" is listed twice" msgstr "" @@ -31,7 +31,7 @@ msgstr "" msgid "%d days ago" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:425 +#: htdocs/luci-static/resources/view/wwand/status.js:436 msgid "%d demuxed packets over %d USB frames" msgstr "" @@ -43,15 +43,15 @@ msgstr "" msgid "%d h ago" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:295 +#: htdocs/luci-static/resources/view/wwand/status.js:306 msgid "%d in use" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:294 +#: htdocs/luci-static/resources/view/wwand/status.js:305 msgid "%d in use of %d in view" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:296 +#: htdocs/luci-static/resources/view/wwand/status.js:307 msgid "%d in view" msgstr "" @@ -67,7 +67,7 @@ msgstr "" msgid "%d of %d wwand lines, from the last %d log entries on the box." msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:319 +#: htdocs/luci-static/resources/view/wwand/status.js:330 msgid "%d parsed, %d not" msgstr "" @@ -79,16 +79,16 @@ msgstr "" msgid "%d slots" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:872 +#: htdocs/luci-static/resources/view/wwand/status.js:883 msgid "%d timeouts on %s, moving now" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:775 +#: htdocs/luci-static/resources/view/wwand/status.js:786 msgid "%s (%d attempts)" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:362 -#: htdocs/luci-static/resources/view/wwand/status.js:366 +#: htdocs/luci-static/resources/view/wwand/status.js:373 +#: htdocs/luci-static/resources/view/wwand/status.js:377 msgid "%s protocol · up to %d datagrams / %s" msgstr "" @@ -96,7 +96,7 @@ msgstr "" msgid "%s · slot %d" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:825 +#: htdocs/luci-static/resources/view/wwand/status.js:836 msgid "" "%s — reported by the daemon; this page is older than that step and cannot " "describe it." @@ -114,11 +114,11 @@ msgstr "" msgid "(interface default)" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:902 +#: htdocs/luci-static/resources/view/wwand/status.js:913 msgid "(last attempt)" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:596 +#: htdocs/luci-static/resources/wwand/modemopts.js:597 #: htdocs/luci-static/resources/wwand/simlist.js:232 msgid "(none)" msgstr "" @@ -145,12 +145,12 @@ msgstr "" msgid "+ add a non-listed band" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:854 -#: htdocs/luci-static/resources/view/wwand/status.js:856 +#: htdocs/luci-static/resources/view/wwand/status.js:865 +#: htdocs/luci-static/resources/view/wwand/status.js:867 msgid ", then" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:440 +#: htdocs/luci-static/resources/wwand/modemopts.js:441 msgid "0 — leave as-is" msgstr "" @@ -158,7 +158,7 @@ msgstr "" msgid "2 — USB" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:239 +#: htdocs/luci-static/resources/view/wwand/status.js:250 msgid "" "2D is a position without a reliable height; 3D has one. Reported by the " "receiver itself (NMEA GSA), and on a multi-constellation receiver it is the " @@ -177,7 +177,7 @@ msgstr "" msgid "3GPP frequency band of the cell (B… = LTE, n… = 5G NR)" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:975 +#: htdocs/luci-static/resources/view/wwand/status.js:986 msgid "" "3GPP frequency band of the serving cell (B… = LTE, n… = 5G NR) — lower bands " "travel further, higher bands carry more bandwidth" @@ -188,11 +188,11 @@ msgid "4 — embedded" msgstr "" #: htdocs/luci-static/resources/view/wwand/settings.js:914 -#: htdocs/luci-static/resources/wwand/modemopts.js:618 +#: htdocs/luci-static/resources/wwand/modemopts.js:619 msgid "5G NR SA cell lock" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:1210 +#: htdocs/luci-static/resources/view/wwand/status.js:1221 msgid "5G NR neighbour cells" msgstr "" @@ -215,11 +215,11 @@ msgid "" "operation alike." msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:996 +#: htdocs/luci-static/resources/view/wwand/status.js:1007 msgid "5G cell" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:1003 +#: htdocs/luci-static/resources/view/wwand/status.js:1014 msgid "" "5G frequency range as the modem reports it: FR1 = sub-6 GHz, FR2 = mmWave " "(24 GHz and above)" @@ -262,7 +262,7 @@ msgstr "" msgid "APN" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:934 +#: htdocs/luci-static/resources/view/wwand/status.js:945 msgid "APN %s" msgstr "" @@ -292,7 +292,7 @@ msgstr "" msgid "Actions" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:153 +#: htdocs/luci-static/resources/view/wwand/status.js:164 msgid "Active connections" msgstr "" @@ -333,21 +333,29 @@ msgstr "" msgid "Aggregation DL datagram size" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:536 +#: htdocs/luci-static/resources/wwand/modemopts.js:537 msgid "All" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:750 +#: htdocs/luci-static/resources/wwand/modemopts.js:751 msgid "All sentences" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:611 +#: htdocs/luci-static/resources/view/wwand/status.js:622 msgid "" "An environmental limit the modem reports (temperature, voltage or charge " "state). It is not throttling the radio." msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:679 +#: htdocs/luci-static/resources/wwand/modemopts.js:437 +msgid "" +"An interface bound to a SIM card (its “SIM card” setting) overrides this: " +"its start switches to the slot or eSIM profile that holds the card, and the " +"modem comes up on that slot already when the interface starts automatically. " +"The slot set here applies only while no such interface needs another card." +msgstr "" + +#: htdocs/luci-static/resources/view/wwand/status.js:690 msgid "" "An optional package holds this modem's radio off. Its interfaces stay down " "until the reason is gone, then the radio is switched on again by itself." @@ -380,7 +388,7 @@ msgstr "" msgid "Attach APN" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:1009 +#: htdocs/luci-static/resources/view/wwand/status.js:1020 msgid "Attach TAI" msgstr "" @@ -418,7 +426,7 @@ msgstr "" msgid "Authentication type" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:755 +#: htdocs/luci-static/resources/wwand/modemopts.js:756 msgid "Auto-correct modem config" msgstr "" @@ -439,12 +447,12 @@ msgid "Automatic network selection enabled." msgstr "" #: htdocs/luci-static/resources/view/wwand/modems.js:197 -#: htdocs/luci-static/resources/view/wwand/status.js:349 +#: htdocs/luci-static/resources/view/wwand/status.js:360 msgid "Backend" msgstr "" #: htdocs/luci-static/resources/view/wwand/status.js:47 -#: htdocs/luci-static/resources/view/wwand/status.js:975 +#: htdocs/luci-static/resources/view/wwand/status.js:986 msgid "Band" msgstr "" @@ -476,11 +484,11 @@ msgstr "" msgid "Cancelled." msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:581 +#: htdocs/luci-static/resources/view/wwand/status.js:592 msgid "Capabilities" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:1133 +#: htdocs/luci-static/resources/view/wwand/status.js:1144 msgid "Carrier aggregation" msgstr "" @@ -501,7 +509,7 @@ msgstr "" msgid "Cell lock saved. Reconnect the interface to apply." msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:879 +#: htdocs/luci-static/resources/view/wwand/status.js:890 msgid "" "Cell/frequency locks the modem currently has armed — the read-back of the " "cell-lock editor, showing what the modem ACTUALLY locked" @@ -590,7 +598,7 @@ msgstr "" msgid "Control protocol" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:558 +#: htdocs/luci-static/resources/view/wwand/status.js:569 msgid "" "Control protocol wwand uses to drive this modem: QMI (Qualcomm native), MBIM " "(the USB standard) or NCM (AT commands with an ethernet-style data port)" @@ -616,7 +624,7 @@ msgstr "" msgid "Could not start:" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:259 +#: htdocs/luci-static/resources/view/wwand/status.js:270 msgid "Course" msgstr "" @@ -649,7 +657,7 @@ msgstr "" msgid "Daemon writes at" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:130 +#: htdocs/luci-static/resources/view/wwand/status.js:141 msgid "Data" msgstr "" @@ -665,19 +673,19 @@ msgstr "" msgid "Data multiplexing" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:439 +#: htdocs/luci-static/resources/view/wwand/status.js:450 msgid "Datapath & muxing" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:434 +#: htdocs/luci-static/resources/view/wwand/status.js:445 msgid "Datapath counters (parent)" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:701 +#: htdocs/luci-static/resources/wwand/modemopts.js:702 msgid "Dead-bearer poll count" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:524 +#: htdocs/luci-static/resources/wwand/modemopts.js:525 msgid "" "Default SIM PIN for this modem, entered on each start. Empty = unlocked SIM. " "Per-card overrides live in the SIMs list." @@ -757,7 +765,7 @@ msgstr "" msgid "Device path binding" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:304 +#: htdocs/luci-static/resources/view/wwand/status.js:315 msgid "Dilution of precision" msgstr "" @@ -782,11 +790,11 @@ msgstr "" msgid "Done." msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:373 +#: htdocs/luci-static/resources/view/wwand/status.js:384 msgid "Downlink NTB (aggregation buffer)" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:361 +#: htdocs/luci-static/resources/view/wwand/status.js:372 msgid "Downlink aggregation (negotiated)" msgstr "" @@ -794,11 +802,11 @@ msgstr "" msgid "Downlink centre frequency derived from the channel number" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:977 +#: htdocs/luci-static/resources/view/wwand/status.js:988 msgid "Downlink centre frequency of the serving cell · channel bandwidth" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:421 +#: htdocs/luci-static/resources/view/wwand/status.js:432 msgid "Downlink packets / frame" msgstr "" @@ -820,7 +828,7 @@ msgid "" "tables, NR-ARFCN) channel number of the carrier" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:980 +#: htdocs/luci-static/resources/view/wwand/status.js:991 msgid "" "EARFCN = LTE channel number of the carrier; PCI = Physical Cell ID. " "EARFCN:PCI identifies the exact cell (usable for the cell lock)" @@ -830,7 +838,7 @@ msgstr "" msgid "EARFCN:PCI value to copy into the cell-lock field of the modem settings" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:936 +#: htdocs/luci-static/resources/view/wwand/status.js:947 msgid "EPS attach" msgstr "" @@ -850,7 +858,7 @@ msgstr "" msgid "Edit the settings of this SIM card" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:257 +#: htdocs/luci-static/resources/view/wwand/status.js:268 msgid "Elevation" msgstr "" @@ -888,7 +896,7 @@ msgstr "" msgid "Enter the current SIM PIN first." msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:132 +#: htdocs/luci-static/resources/view/wwand/status.js:143 msgid "Errors / dropped" msgstr "" @@ -904,7 +912,7 @@ msgstr "" msgid "Extra AT init commands" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:874 +#: htdocs/luci-static/resources/view/wwand/status.js:885 msgid "FCC lock" msgstr "" @@ -912,7 +920,7 @@ msgstr "" msgid "FCC unlock" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:651 +#: htdocs/luci-static/resources/wwand/modemopts.js:652 msgid "" "Failed attempts at which the recovery ladder cycles the radio, resets the " "modem and pulses the reset line / repowers it, e.g. \"2 6 12\". One or two " @@ -931,7 +939,7 @@ msgstr "" msgid "Fetching profile" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:576 +#: htdocs/luci-static/resources/view/wwand/status.js:587 msgid "Firmware" msgstr "" @@ -939,21 +947,21 @@ msgstr "" msgid "Firmware protocol mode" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:576 +#: htdocs/luci-static/resources/view/wwand/status.js:587 msgid "" "Firmware version reported by the modem — relevant when comparing behaviour " "or looking for carrier-specific builds" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:239 +#: htdocs/luci-static/resources/view/wwand/status.js:250 msgid "Fix" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:273 +#: htdocs/luci-static/resources/view/wwand/status.js:284 msgid "Fix age" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:749 +#: htdocs/luci-static/resources/wwand/modemopts.js:750 msgid "Fix only (less CPU)" msgstr "" @@ -974,23 +982,23 @@ msgid "" msgstr "" #: htdocs/luci-static/resources/view/wwand/status.js:49 -#: htdocs/luci-static/resources/view/wwand/status.js:977 +#: htdocs/luci-static/resources/view/wwand/status.js:988 msgid "Frequency" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:1003 +#: htdocs/luci-static/resources/view/wwand/status.js:1014 msgid "Frequency range" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:323 +#: htdocs/luci-static/resources/view/wwand/status.js:334 msgid "GNSS" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:746 +#: htdocs/luci-static/resources/wwand/modemopts.js:747 msgid "GNSS NMEA output" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:729 +#: htdocs/luci-static/resources/wwand/modemopts.js:730 msgid "GNSS receiver" msgstr "" @@ -998,7 +1006,7 @@ msgstr "" msgid "Grant access to the wwand modem status page" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:264 +#: htdocs/luci-static/resources/view/wwand/status.js:275 msgid "" "Ground speed. NMEA reports knots; both are shown when both are known, so " "neither unit has to be converted in your head." @@ -1016,7 +1024,7 @@ msgid "" "a hung or vanished modem. Needs a reset_gpio on multi-modem boxes." msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:860 +#: htdocs/luci-static/resources/view/wwand/status.js:871 msgid "Hardware step" msgstr "" @@ -1040,7 +1048,7 @@ msgid "" "share these boundaries in the published tables." msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:304 +#: htdocs/luci-static/resources/view/wwand/status.js:315 msgid "" "How favourably the satellites in use are spread: horizontal, positional and " "vertical. Lower is better — under 2 is good, over 5 means the position is " @@ -1069,7 +1077,7 @@ msgstr "" msgid "How many wwand lines to show" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:869 +#: htdocs/luci-static/resources/view/wwand/status.js:880 msgid "" "How often the kernel found the modem's transmit queue stuck (its \"NETDEV " "WATCHDOG\" message), counted since wwand started watching this modem. A " @@ -1086,7 +1094,7 @@ msgstr "" msgid "IMSI" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:123 +#: htdocs/luci-static/resources/view/wwand/status.js:134 msgid "IP" msgstr "" @@ -1100,7 +1108,7 @@ msgstr "" msgid "IPA" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:103 +#: htdocs/luci-static/resources/view/wwand/status.js:114 #: htdocs/luci-static/resources/wwand/simlist.js:221 msgid "IPv4" msgstr "" @@ -1109,26 +1117,26 @@ msgstr "" msgid "IPv4 + IPv6" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:105 +#: htdocs/luci-static/resources/view/wwand/status.js:116 msgid "IPv4 DNS" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:104 +#: htdocs/luci-static/resources/view/wwand/status.js:115 msgid "IPv4 gateway" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:111 -#: htdocs/luci-static/resources/view/wwand/status.js:117 +#: htdocs/luci-static/resources/view/wwand/status.js:122 +#: htdocs/luci-static/resources/view/wwand/status.js:128 #: htdocs/luci-static/resources/wwand/simlist.js:222 msgid "IPv6" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:114 -#: htdocs/luci-static/resources/view/wwand/status.js:119 +#: htdocs/luci-static/resources/view/wwand/status.js:125 +#: htdocs/luci-static/resources/view/wwand/status.js:130 msgid "IPv6 DNS" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:118 +#: htdocs/luci-static/resources/view/wwand/status.js:129 msgid "IPv6 gateway" msgstr "" @@ -1136,14 +1144,14 @@ msgstr "" msgid "Id" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:665 +#: htdocs/luci-static/resources/wwand/modemopts.js:666 msgid "" "If the modem has not answered since boot or since the outage began, pulse " "its reset GPIO once after this many seconds. Only a modem with its own reset " "GPIO set is touched, never another modem on the router. 0 = never." msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:292 +#: htdocs/luci-static/resources/view/wwand/status.js:303 msgid "" "In use / in view. Nothing in view is usually the antenna, though a cold " "receiver or a blocked sky looks the same; many in view with none in use " @@ -1155,7 +1163,7 @@ msgstr "" msgid "Incomplete request — a required value was missing." msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:1102 +#: htdocs/luci-static/resources/view/wwand/status.js:1113 msgid "" "Inferred from how many logical slots are in use. That is a lower bound: a " "modem with a second radio stack whose other slot is empty looks exactly like " @@ -1171,6 +1179,13 @@ msgstr "" msgid "Interface" msgstr "" +#: htdocs/luci-static/resources/wwand/rpc.js:92 +msgid "" +"Interface %s is bound to the SIM card in use. Switching takes it down; it " +"stays down until its next start, which switches back to its card. Switch " +"anyway?" +msgstr "" + #: htdocs/luci-static/resources/view/wwand/settings.js:1280 msgid "Interfaces" msgstr "" @@ -1186,11 +1201,11 @@ msgid "" "modem's control port." msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:710 +#: htdocs/luci-static/resources/view/wwand/status.js:721 msgid "International Mobile Equipment Identity — the modem hardware serial" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:557 +#: htdocs/luci-static/resources/wwand/modemopts.js:558 msgid "Keep the modem's order" msgstr "" @@ -1219,19 +1234,19 @@ msgid "LTE carriers" msgstr "" #: htdocs/luci-static/resources/view/wwand/settings.js:912 -#: htdocs/luci-static/resources/wwand/modemopts.js:607 +#: htdocs/luci-static/resources/wwand/modemopts.js:608 msgid "LTE cell lock" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:1204 +#: htdocs/luci-static/resources/view/wwand/status.js:1215 msgid "LTE neighbour cells (inter-frequency)" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:1168 +#: htdocs/luci-static/resources/view/wwand/status.js:1179 msgid "LTE neighbour cells (intra-frequency)" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:144 +#: htdocs/luci-static/resources/view/wwand/status.js:155 msgid "Last error" msgstr "" @@ -1239,7 +1254,7 @@ msgstr "" msgid "Later" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:243 +#: htdocs/luci-static/resources/view/wwand/status.js:254 msgid "Latitude and longitude as the receiver last reported them." msgstr "" @@ -1250,17 +1265,17 @@ msgid "" msgstr "" #: htdocs/luci-static/resources/wwand/modemopts.js:178 -#: htdocs/luci-static/resources/wwand/modemopts.js:748 +#: htdocs/luci-static/resources/wwand/modemopts.js:749 msgid "Leave modem setting unchanged" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:756 +#: htdocs/luci-static/resources/wwand/modemopts.js:757 msgid "" "Let wwand reprogram mismatched modem-side settings (attach profile, etc.) " "when it detects them." msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:735 +#: htdocs/luci-static/resources/wwand/modemopts.js:736 msgid "" "Let wwand step the system clock from the GNSS time — only while the clock is " "plainly unset, so it never fights the NTP client. Off by default. For " @@ -1275,7 +1290,7 @@ msgstr "" msgid "Listing pending notifications…" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:1431 +#: htdocs/luci-static/resources/view/wwand/status.js:1442 msgid "" "Live cellular signal and cell environment — updates about once per second. " "Aim the antenna for the highest RSRP / SINR: the graphs keep the last few " @@ -1300,12 +1315,12 @@ msgstr "" msgid "Lock" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:608 +#: htdocs/luci-static/resources/wwand/modemopts.js:609 msgid "" "Lock to LTE cells, one \"earfcn:pci\" per entry (several = a cell list)." msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:619 +#: htdocs/luci-static/resources/wwand/modemopts.js:620 msgid "" "Lock to a 5G SA cell: \"pci:arfcn:scs:band\" — the subcarrier spacing is in " "kHz (15, 30, 60 …). The \"Lock this 5G cell\" button fills in 30 as a " @@ -1313,7 +1328,7 @@ msgid "" "your band before saving." msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:879 +#: htdocs/luci-static/resources/view/wwand/status.js:890 msgid "Locked to" msgstr "" @@ -1329,19 +1344,19 @@ msgstr "" msgid "MBIM Quectel radio state" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:667 +#: htdocs/luci-static/resources/view/wwand/status.js:678 msgid "MBIM, over the QMI passthrough" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:581 +#: htdocs/luci-static/resources/wwand/modemopts.js:582 msgid "MCC" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:586 +#: htdocs/luci-static/resources/wwand/modemopts.js:587 msgid "MNC" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:124 +#: htdocs/luci-static/resources/view/wwand/status.js:135 msgid "MTU" msgstr "" @@ -1353,7 +1368,7 @@ msgstr "" msgid "Manual network selection applied." msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:573 +#: htdocs/luci-static/resources/view/wwand/status.js:584 msgid "Manufacturer" msgstr "" @@ -1369,7 +1384,7 @@ msgid "" "Max downlink QMAP aggregation datagram in bytes (0 = board/model default)." msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:138 +#: htdocs/luci-static/resources/view/wwand/status.js:149 msgid "Max rate" msgstr "" @@ -1404,7 +1419,7 @@ msgstr "" msgid "Minimum severity" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:582 +#: htdocs/luci-static/resources/wwand/modemopts.js:583 msgid "Mobile Country Code for manual network selection." msgstr "" @@ -1412,21 +1427,21 @@ msgstr "" msgid "Mobile Modems" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:587 +#: htdocs/luci-static/resources/wwand/modemopts.js:588 msgid "Mobile Network Code (requires MCC)." msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:558 +#: htdocs/luci-static/resources/view/wwand/status.js:569 msgid "Mode" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:574 +#: htdocs/luci-static/resources/view/wwand/status.js:585 msgid "Model" msgstr "" #: htdocs/luci-static/resources/view/wwand/modems.js:128 -#: htdocs/luci-static/resources/view/wwand/status.js:882 -#: htdocs/luci-static/resources/view/wwand/status.js:1365 +#: htdocs/luci-static/resources/view/wwand/status.js:893 +#: htdocs/luci-static/resources/view/wwand/status.js:1376 #: htdocs/luci-static/resources/wwand/simlist.js:190 #: root/usr/share/luci/menu.d/luci-app-wwand.json:3 msgid "Modem" @@ -1436,7 +1451,7 @@ msgstr "" msgid "Modem & SIM" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:1429 +#: htdocs/luci-static/resources/view/wwand/status.js:1440 msgid "Modem Status" msgstr "" @@ -1449,7 +1464,7 @@ msgstr "" msgid "Modem attached (%s)." msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:589 +#: htdocs/luci-static/resources/view/wwand/status.js:600 msgid "" "Modem baseband temperature. Whether the module is actually throttling is " "reported separately below — the modem itself says so, no guessing from the " @@ -1460,7 +1475,7 @@ msgstr "" msgid "Modem currently locked: %s — the live read-back of the lock editor." msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:535 +#: htdocs/luci-static/resources/wwand/modemopts.js:536 msgid "Modem default" msgstr "" @@ -1472,7 +1487,7 @@ msgstr "" msgid "Modem device" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:635 +#: htdocs/luci-static/resources/wwand/modemopts.js:636 msgid "Modem init delay" msgstr "" @@ -1521,7 +1536,7 @@ msgid "" "tighter than the LTE steps drawn here." msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:407 +#: htdocs/luci-static/resources/view/wwand/status.js:418 msgid "Mux channel %d" msgstr "" @@ -1545,7 +1560,7 @@ msgstr "" msgid "NCM (AT + ethernet data port)" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:702 +#: htdocs/luci-static/resources/wwand/modemopts.js:703 msgid "" "NCM modems only. How many consecutive status polls may list no data context " "— with no received traffic in between — before wwand declares the bearer " @@ -1555,11 +1570,11 @@ msgid "" "enough to drop a working connection." msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:222 +#: htdocs/luci-static/resources/view/wwand/status.js:233 msgid "NMEA port" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:318 +#: htdocs/luci-static/resources/view/wwand/status.js:329 msgid "NMEA stream" msgstr "" @@ -1595,7 +1610,7 @@ msgid "" "wait 30 s, restore) instead of cycling USB power." msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:685 +#: htdocs/luci-static/resources/view/wwand/status.js:696 msgid "Network" msgstr "" @@ -1611,7 +1626,7 @@ msgstr "" msgid "Network re-attach triggered (%s)." msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:890 +#: htdocs/luci-static/resources/view/wwand/status.js:901 msgid "Network registration state: home / roaming / searching / denied" msgstr "" @@ -1639,7 +1654,7 @@ msgstr "" msgid "No change — the modem already runs this selection." msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:647 +#: htdocs/luci-static/resources/view/wwand/status.js:658 msgid "No exchange has succeeded in the selected protocol yet." msgstr "" @@ -1739,7 +1754,7 @@ msgstr "" msgid "On, card detected at low level" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:656 +#: htdocs/luci-static/resources/wwand/modemopts.js:657 msgid "One to three whole numbers, rising, e.g. \"2 6 12\"" msgstr "" @@ -1757,7 +1772,7 @@ msgstr "" #: htdocs/luci-static/resources/view/wwand/settings.js:397 #: htdocs/luci-static/resources/view/wwand/settings.js:603 -#: htdocs/luci-static/resources/view/wwand/status.js:948 +#: htdocs/luci-static/resources/view/wwand/status.js:959 #: htdocs/luci-static/resources/wwand/format.js:480 #: htdocs/luci-static/resources/wwand/netsel.js:130 msgid "Operator" @@ -1771,7 +1786,7 @@ msgstr "" msgid "Optional APN for this card, overriding the interface/default APN." msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:594 +#: htdocs/luci-static/resources/wwand/modemopts.js:595 msgid "" "Optional: a saved PLMN list (config wwand_plmnlist) the daemon restores " "before every radio-on. Edit lists on the modem status page." @@ -1867,11 +1882,11 @@ msgstr "" msgid "PUK2 required" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:354 +#: htdocs/luci-static/resources/view/wwand/status.js:365 msgid "Parent device" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:678 +#: htdocs/luci-static/resources/wwand/modemopts.js:679 msgid "Park the radio when idle" msgstr "" @@ -1891,7 +1906,7 @@ msgstr "" msgid "Pending notifications:" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:311 +#: htdocs/luci-static/resources/view/wwand/status.js:322 msgid "" "Per satellite: the constellation, its number, and the carrier-to-noise it is " "received at. A satellite listed without a figure is one the receiver can " @@ -1910,7 +1925,7 @@ msgstr "" msgid "Persist in modem" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:623 +#: htdocs/luci-static/resources/wwand/modemopts.js:624 msgid "Persist lock in modem" msgstr "" @@ -1941,8 +1956,8 @@ msgid "" "a detected modem below, or leave empty." msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:243 -#: htdocs/luci-static/resources/view/wwand/status.js:281 +#: htdocs/luci-static/resources/view/wwand/status.js:254 +#: htdocs/luci-static/resources/view/wwand/status.js:292 msgid "Position" msgstr "" @@ -1954,7 +1969,7 @@ msgstr "" msgid "Preferred-PLMN editor —" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:593 +#: htdocs/luci-static/resources/wwand/modemopts.js:594 #: htdocs/luci-static/resources/wwand/simlist.js:228 msgid "Preferred-PLMN list" msgstr "" @@ -1967,7 +1982,7 @@ msgstr "" msgid "Primary SIM set to slot %d (persisted)." msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:903 +#: htdocs/luci-static/resources/view/wwand/status.js:914 msgid "Problem" msgstr "" @@ -2029,7 +2044,7 @@ msgstr "" msgid "Provider confirmations (notifications)" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:679 +#: htdocs/luci-static/resources/wwand/modemopts.js:680 msgid "" "Put the modem's radio into low power once no interface on this modem is up — " "for battery and solar installs, where an idle modem still spends a couple of " @@ -2038,7 +2053,7 @@ msgid "" "network until the interface is brought up again." msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:667 +#: htdocs/luci-static/resources/view/wwand/status.js:678 msgid "QMI" msgstr "" @@ -2050,7 +2065,7 @@ msgstr "" msgid "QMI Foxconn (SDX55, DW5821e)" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:550 +#: htdocs/luci-static/resources/wwand/modemopts.js:551 msgid "" "QMI and MBIM modems: the order in which the modem searches the radio " "technologies, most preferred first, e.g. nr5g,lte. wwand writes " @@ -2061,7 +2076,7 @@ msgid "" "order is shown, and can be changed live, under Modem Tools." msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:213 +#: htdocs/luci-static/resources/view/wwand/status.js:224 msgid "QMI location service" msgstr "" @@ -2069,7 +2084,7 @@ msgstr "" msgid "QRTR node" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:747 +#: htdocs/luci-static/resources/wwand/modemopts.js:748 msgid "" "Quectel and ASR modems: which NMEA sentences the receiver streams. Written " "when wwand starts the receiver; saving a change restarts this modem's bring-" @@ -2088,7 +2103,7 @@ msgid "" "card in — it depends on the board; a wrong level makes the modem see no card." msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:112 +#: htdocs/luci-static/resources/view/wwand/status.js:123 msgid "RA/SLAAC on the netdev, run by the dhcpv6 subinterface" msgstr "" @@ -2097,7 +2112,7 @@ msgid "RAT" msgstr "" #: htdocs/luci-static/resources/view/wwand/settings.js:1297 -#: htdocs/luci-static/resources/wwand/modemopts.js:549 +#: htdocs/luci-static/resources/wwand/modemopts.js:550 msgid "RAT priority" msgstr "" @@ -2146,8 +2161,8 @@ msgstr "" msgid "RSSI LTE" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:568 -#: htdocs/luci-static/resources/view/wwand/status.js:679 +#: htdocs/luci-static/resources/view/wwand/status.js:579 +#: htdocs/luci-static/resources/view/wwand/status.js:690 msgid "Radio" msgstr "" @@ -2155,11 +2170,11 @@ msgstr "" msgid "Radio & Cell" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:581 +#: htdocs/luci-static/resources/view/wwand/status.js:592 msgid "Radio access technologies this modem hardware reports to support" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:952 +#: htdocs/luci-static/resources/view/wwand/status.js:963 msgid "" "Radio access technology of the current connection (LTE, 5G NSA = 5G carrier " "on an LTE anchor, 5G SA = standalone 5G, NB-IoT/LTE-M = IoT modes)" @@ -2173,7 +2188,7 @@ msgstr "" msgid "Radio technologies" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:533 +#: htdocs/luci-static/resources/wwand/modemopts.js:534 msgid "Radio technology" msgstr "" @@ -2225,7 +2240,7 @@ msgid "" "cannot read them and everything else on the page still works." msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:231 +#: htdocs/luci-static/resources/view/wwand/status.js:242 msgid "Reader" msgstr "" @@ -2239,21 +2254,21 @@ msgstr "" msgid "Reboot" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:641 +#: htdocs/luci-static/resources/wwand/modemopts.js:642 msgid "Reboot after N failures" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:670 +#: htdocs/luci-static/resources/wwand/modemopts.js:671 msgid "Reboot after N protocol errors" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:671 +#: htdocs/luci-static/resources/wwand/modemopts.js:672 msgid "" "Reboot after this many consecutive control-protocol errors. Gated by the " "failure-reboot setting above — with reboot disabled it never fires." msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:642 +#: htdocs/luci-static/resources/wwand/modemopts.js:643 msgid "" "Reboot the router after this many failed connection attempts. 0 = never " "reboot — the hardware recovery rungs (op-mode cycle, modem reset, GPIO/" @@ -2264,17 +2279,17 @@ msgstr "" msgid "Received" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:215 -#: htdocs/luci-static/resources/view/wwand/status.js:225 +#: htdocs/luci-static/resources/view/wwand/status.js:226 +#: htdocs/luci-static/resources/view/wwand/status.js:236 msgid "Receiver" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:643 -#: htdocs/luci-static/resources/view/wwand/status.js:774 +#: htdocs/luci-static/resources/view/wwand/status.js:654 +#: htdocs/luci-static/resources/view/wwand/status.js:785 msgid "Recovery" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:650 +#: htdocs/luci-static/resources/wwand/modemopts.js:651 msgid "Recovery steps" msgstr "" @@ -2310,11 +2325,11 @@ msgid "Registered operator" msgstr "" #: htdocs/luci-static/resources/view/wwand/modems.js:212 -#: htdocs/luci-static/resources/view/wwand/status.js:890 +#: htdocs/luci-static/resources/view/wwand/status.js:901 msgid "Registration" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:903 +#: htdocs/luci-static/resources/view/wwand/status.js:914 msgid "" "Registration problem reported by the network — the 3GPP reject cause " "explains why the attach was refused" @@ -2337,11 +2352,11 @@ msgstr "" msgid "Reload from modem" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:671 +#: htdocs/luci-static/resources/view/wwand/status.js:682 msgid "Remote SIM supported" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:697 +#: htdocs/luci-static/resources/view/wwand/status.js:708 msgid "Reported by the optional package %s" msgstr "" @@ -2350,7 +2365,7 @@ msgstr "" msgid "Repower" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:683 +#: htdocs/luci-static/resources/wwand/modemopts.js:684 msgid "Repower / reset duration" msgstr "" @@ -2373,7 +2388,7 @@ msgstr "" msgid "Reset GPIO fallback" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:664 +#: htdocs/luci-static/resources/wwand/modemopts.js:665 msgid "Reset a never-answering modem after (s)" msgstr "" @@ -2395,7 +2410,7 @@ msgstr "" msgid "Reset radio/band/usage/roaming settings to defaults?" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:696 +#: htdocs/luci-static/resources/wwand/modemopts.js:697 msgid "" "Reset the modem when, with a connection up, the kernel reports its transmit " "queue stuck for this many seconds, i.e. the modem has stopped taking packets " @@ -2435,7 +2450,7 @@ msgstr "" msgid "Restart modem now" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:690 +#: htdocs/luci-static/resources/wwand/modemopts.js:691 msgid "" "Restart the connection after this many seconds without received packets (0 = " "off)." @@ -2456,11 +2471,11 @@ msgid "" "not a way to improve a working link." msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:534 +#: htdocs/luci-static/resources/wwand/modemopts.js:535 msgid "Restrict the modem to certain radio access technologies." msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:578 +#: htdocs/luci-static/resources/view/wwand/status.js:589 msgid "Revision" msgstr "" @@ -2489,7 +2504,7 @@ msgid "SIM" msgstr "" #: htdocs/luci-static/resources/wwand/esim.js:216 -#: htdocs/luci-static/resources/wwand/modemopts.js:523 +#: htdocs/luci-static/resources/wwand/modemopts.js:524 msgid "SIM PIN" msgstr "" @@ -2508,7 +2523,8 @@ msgid "SIM PIN query enabled." msgstr "" #: htdocs/luci-static/resources/view/wwand/settings.js:960 -#: htdocs/luci-static/resources/view/wwand/status.js:653 +#: htdocs/luci-static/resources/view/wwand/status.js:110 +#: htdocs/luci-static/resources/view/wwand/status.js:664 #: htdocs/luci-static/resources/wwand/format.js:456 msgid "SIM card" msgstr "" @@ -2518,7 +2534,7 @@ msgstr "" msgid "SIM cards" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:657 +#: htdocs/luci-static/resources/view/wwand/status.js:668 msgid "SIM event" msgstr "" @@ -2542,7 +2558,7 @@ msgstr "" msgid "SIM slot" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:1107 +#: htdocs/luci-static/resources/view/wwand/status.js:1118 msgid "SIM slots" msgstr "" @@ -2571,7 +2587,7 @@ msgstr "" msgid "SMS" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:292 +#: htdocs/luci-static/resources/view/wwand/status.js:303 msgid "Satellites" msgstr "" @@ -2622,24 +2638,24 @@ msgid "" "before the reset GPIO is pulsed (default 30)." msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:708 +#: htdocs/luci-static/resources/wwand/modemopts.js:709 msgid "Seconds between throughput/signal telemetry samples while connected." msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:273 +#: htdocs/luci-static/resources/view/wwand/status.js:284 msgid "" "Seconds since the last position was parsed. A receiver that has lost the sky " "keeps reporting the last fix it had, so the age is what says whether it is " "still current." msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:684 +#: htdocs/luci-static/resources/wwand/modemopts.js:685 msgid "" "Seconds the modem is held de-powered during a recovery power-cycle (or held " "in reset, when a reset GPIO is used). Default 30 s." msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:636 +#: htdocs/luci-static/resources/wwand/modemopts.js:637 msgid "Seconds to wait before initializing the modem." msgstr "" @@ -2676,7 +2692,7 @@ msgstr "" msgid "Sending confirmations…" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:318 +#: htdocs/luci-static/resources/view/wwand/status.js:329 msgid "" "Sentences understood since the reader opened the port, and how many it could " "not parse. A climbing \"unparsed\" means the port is carrying something that " @@ -2691,7 +2707,7 @@ msgstr "" msgid "Service" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:1014 +#: htdocs/luci-static/resources/view/wwand/status.js:1025 msgid "Serving cell" msgstr "" @@ -2703,11 +2719,11 @@ msgstr "" msgid "Set automatic" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:734 +#: htdocs/luci-static/resources/wwand/modemopts.js:735 msgid "Set the clock from GNSS" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:716 +#: htdocs/luci-static/resources/wwand/modemopts.js:717 msgid "Set the clock from the network" msgstr "" @@ -2729,7 +2745,7 @@ msgstr "" msgid "Signal" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:1312 +#: htdocs/luci-static/resources/view/wwand/status.js:1323 msgid "" "Signal graphs unavailable: the graph canvas (wwand/signal.svg) could not be " "loaded. Reload the page to try again." @@ -2745,7 +2761,7 @@ msgstr "" #: htdocs/luci-static/resources/wwand/format.js:458 #: htdocs/luci-static/resources/wwand/format.js:625 -#: htdocs/luci-static/resources/wwand/modemopts.js:480 +#: htdocs/luci-static/resources/wwand/modemopts.js:481 msgid "Slot %d" msgstr "" @@ -2753,7 +2769,7 @@ msgstr "" msgid "Slot %d/%d" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:212 +#: htdocs/luci-static/resources/view/wwand/status.js:223 msgid "Source" msgstr "" @@ -2763,7 +2779,7 @@ msgid "" "Status → Modem for the live cells and their lock values." msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:264 +#: htdocs/luci-static/resources/view/wwand/status.js:275 msgid "Speed" msgstr "" @@ -2784,7 +2800,7 @@ msgstr "" #: htdocs/luci-static/resources/view/wwand/settings.js:541 #: htdocs/luci-static/resources/view/wwand/sims.js:92 #: htdocs/luci-static/resources/view/wwand/status.js:100 -#: htdocs/luci-static/resources/view/wwand/status.js:556 +#: htdocs/luci-static/resources/view/wwand/status.js:567 #: htdocs/luci-static/resources/wwand/esim.js:96 #: htdocs/luci-static/resources/wwand/esim.js:330 msgid "State" @@ -2796,7 +2812,7 @@ msgstr "" msgid "Status" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:717 +#: htdocs/luci-static/resources/wwand/modemopts.js:718 msgid "" "Step the system clock to the network's time (NITZ) when it is more than two " "minutes off. Smaller differences are left to NTP. A router without a real-" @@ -2814,7 +2830,7 @@ msgstr "" msgid "Storage" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:624 +#: htdocs/luci-static/resources/wwand/modemopts.js:625 msgid "Store the cell lock in modem non-volatile memory." msgstr "" @@ -2822,11 +2838,11 @@ msgstr "" msgid "Store the lock in modem non-volatile memory" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:311 +#: htdocs/luci-static/resources/view/wwand/status.js:322 msgid "Strongest signals" msgstr "" -#: htdocs/luci-static/resources/view/wwand/status.js:1074 +#: htdocs/luci-static/resources/view/wwand/status.js:1085 #: htdocs/luci-static/resources/wwand/format.js:650 msgid "Switch now" msgstr "" @@ -2852,7 +2868,7 @@ msgid "" "contradicts disables hardware recovery for this modem." msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:730 +#: htdocs/luci-static/resources/wwand/modemopts.js:731 msgid "" "Switch the modem's GNSS on. With wwand-gps installed wwand reads " "the position itself: from the modem's NMEA port (reported as gps_port define Package/luci-mod-dashboard/conffiles /etc/config/dashboard diff --git a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/css/custom.css b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/css/custom.css index c4f33a1f9..1739024a1 100644 --- a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/css/custom.css +++ b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/css/custom.css @@ -22,6 +22,7 @@ --dashboard-series-7: #b0367c; --dashboard-series-8: #9c9a1c; --dashboard-gap: 16px; + --dashboard-extra-lightness: 42%; display: grid; /* minmax(0, …): a wide tab menu must scroll, not widen every row. */ @@ -31,6 +32,7 @@ } [data-darkmode="true"] .Dashboard { + --dashboard-extra-lightness: 65%; --dashboard-surface-alt: var(--background-color-medium, #262b34); --dashboard-text: var(--text-color-high, #e6e8eb); --dashboard-text-muted: var(--text-color-high, #9aa3ad); @@ -44,6 +46,7 @@ @media (prefers-color-scheme: dark) { :root:not([data-darkmode="false"]) .Dashboard { + --dashboard-extra-lightness: 65%; --dashboard-surface-alt: var(--background-color-medium, #262b34); --dashboard-text: var(--text-color-high, #e6e8eb); --dashboard-text-muted: var(--text-color-high, #9aa3ad); @@ -57,6 +60,70 @@ } /* ---- Layout ---- */ +.dashboard-settings .dashboard-widget-list { + display: flex; + flex-direction: column; + width: 100%; + max-width: none; +} + +.dashboard-settings .dashboard-widget-list > .item, +.dashboard-settings .dashboard-widget-list > .add-item, +.dashboard-settings .dashboard-widget-list > .add-item > .cbi-dropdown { + box-sizing: border-box; + width: 100%; + max-width: none; +} + +.dashboard-widget-list.dashboard-sorting > .item * { + pointer-events: none; +} + +.dashboard-settings .dashboard-configurable::after { + bottom: auto; + height: 28px; +} + +.dashboard-widget-settings > summary { + cursor: pointer; + padding: 2px 0; +} + +.dashboard-widget-options { + margin: 12px 0 6px 12px; + padding-left: 12px; + cursor: default; + word-break: normal; + overflow-wrap: anywhere; +} + +.dashboard-widget-options .cbi-value-title { + display: none; +} + +.dashboard-widget-options .cbi-value-field { + margin-left: 0; + min-width: 0; +} + +.dashboard-widget-options .cbi-value { + padding: 0; +} + +.dashboard-sensor-choice { + display: inline-flex; + align-items: center; + gap: 6px; + padding: 3px 0 3px 6px; +} + +.dashboard-sensor-choice > i { + display: inline-block; + width: 9px; + height: 9px; + border-radius: 2px; +} + /* Every row fills the width: an item's basis is its row's share, set from --dashboard-per-row, and flex-grow takes up the rest. On narrow screens the min-width wraps the items, which still fill their rows. */ @@ -82,6 +149,28 @@ min-width: 250px; } +/* All charts share one compact header; keep the plotting area aligned even + when a source has no metadata. Card surfaces and heading fonts stay themed. */ +.Dashboard .dashboard-chart > h3 { + margin: 0 0 4px; + padding: 0; + border: 0; + line-height: 1.4; +} + +.Dashboard .dashboard-chart > .cbi-section-descr { + min-height: 1.4em; + margin: 0 0 16px; + padding: 0; + font-size: 12px; + line-height: 1.4; + color: var(--dashboard-text-muted); +} + +.dashboard-chart > em:empty { + display: none; +} + /* ---- Icon (mask keeps the SVG files, colour follows the theme) ---- */ .dashboard-icon { display: inline-block; @@ -145,6 +234,11 @@ white-space: nowrap; } +/* Keep every component reading visible when a temperature card narrows. */ +.dashboard-temperature .dashboard-kpi-line { + white-space: normal; +} + /* ---- Donut ---- */ /* Shorter than the bar charts it shares a row with, so centre it. */ .dashboard-donut { @@ -252,6 +346,8 @@ display: inline-flex; align-items: center; gap: 6px; + min-width: 0; + overflow-wrap: anywhere; } .dashboard-legend-inline i { @@ -420,11 +516,7 @@ .dashboard-legend-inline b { color: var(--dashboard-text); -} - -/* ---- WAN traffic: one counter source per plot ---- */ -.dashboard-traffic-source { - min-width: 0; + white-space: nowrap; } /* ---- Wireless network boxes (LuCI .ifacebox) ---- */ diff --git a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/temperature.svg b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/temperature.svg new file mode 100644 index 000000000..7a33d4bd5 --- /dev/null +++ b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/temperature.svg @@ -0,0 +1 @@ + diff --git a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js index 782df4f92..b0223bb19 100644 --- a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js +++ b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js @@ -126,11 +126,13 @@ return baseclass.extend({ if (mem) desc.push('%1024.0mB'.format(mem.total)); - return charts.card({ + return this.chart = charts.card({ + node: this.chart, title: _('System load'), desc: desc.join(' · '), body: busy.length ? [ - charts.lines({ + this.plot = charts.lines({ + node: this.plot, span: history.span(), max: 100, ticks: [ 0, 25, 50, 75, 100 ].map(value => ({ value: value, label: '%d%%'.format(value) })), diff --git a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/13_temperature.js b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/13_temperature.js new file mode 100644 index 000000000..95f0048f4 --- /dev/null +++ b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/13_temperature.js @@ -0,0 +1,319 @@ +'use strict'; +'require baseclass'; +'require rpc'; +'require uci'; +'require view.dashboard.lib.charts as charts'; +'require view.dashboard.lib.history as history'; + +const read = rpc.declare({ object: 'luci.dashboard.temperature', method: 'read', params: [ 'since', 'id' ], expect: { '': {} } }); +const temperature = value => Number.isFinite(value) ? '%.1f °C'.format(value) : '—'; +const STEP = 10000, DEFAULT_LINES = 8, MAX_LINES = 64; + +function sensorCategory(sensor, components) { + return typeof components[sensor.category] == 'string' ? sensor.category : 'other'; +} + +// Rebuild only when sensor metadata changes. Number channels within their +// component, keeping existing numbers when sources reorder or disappear. +// These are sensor labels, not inferred radio bands or physical port numbers. +function nameChannels(channels, components) { + const groups = new Map(); + for (const channel of channels.values()) { + const group = groups.get(channel.category) || { count: 0, last: 0, numbered: false }; + group.count++; + group.last = Math.max(group.last, channel.number || 0); + group.numbered ||= channel.numbered; + groups.set(channel.category, group); + } + for (const [, channel] of Array.from(channels).sort(([a], [b]) => a.localeCompare(b, undefined, { numeric: true }))) { + const group = groups.get(channel.category); + channel.number ||= ++group.last; + channel.numbered = group.count > 1 || group.numbered; + channel.name = components[channel.category] + (channel.numbered ? ' ' + channel.number : ''); + } +} + +function colorChannels(channels) { + const used = new Set(Array.from(channels.values(), channel => channel.color)); + let color = 1; + for (const channel of channels.values()) + if (!channel.color) { + while (used.has(color)) + color++; + if (color > MAX_LINES) + break; + channel.color = color; + used.add(color++); + } +} + +function channelColor(channel) { + return channel.color > 8 + ? 'hsl(%d, 60%%, var(--dashboard-extra-lightness))'.format((channel.color * 137.508) % 360) : null; +} + +// CPU selection priorities come from the same registry as component names. +// Never switch channels merely because the preferred sensor failed a read. +function processorSensor(sensors) { + let selected, priority = 99; + for (const sensor of sensors) { + const value = sensor.category == 'cpu' + ? (Number.isFinite(sensor.priority) ? sensor.priority : 8) : 99; + if (value < priority || (selected && value == priority && + (sensor.id || sensor.label).localeCompare(selected.id || selected.label, undefined, { numeric: true }) < 0)) { + selected = sensor; + priority = value; + } + } + return selected; +} + +// A module may expose multiple radios or thermal zones. Keep all channels in +// details, and summarize the hottest available reading for each component. +function componentTemperature(sensors, category, label) { + let present = false, value = -Infinity; + for (const sensor of sensors) + if (sensor.category == category) { + present = true; + if (Number.isFinite(sensor.celsius)) + value = Math.max(value, sensor.celsius); + } + // Wrap between components, keeping each label and reading together. + return present ? '%s\u00a0%s'.format(label, temperature(value).replace(' ', '\u00a0')) : null; +} + +return baseclass.extend({ + widgets: [ + { id: 'temperature', slot: 'cards', title: _('Temperature'), order: 40 }, + { id: 'temperature_history', slot: 'charts', title: _('Temperature history'), order: 30 }, + { id: 'temperatures', slot: 'tabs', title: _('Temperatures'), order: 40 } + ], + + // All views share channel identities, even when the history chart is hidden + // or settings are opened first. Selection never changes sensor numbering. + syncChannels(data) { + let dirty = false; + if (data.components && typeof data.components == 'object' && !Array.isArray(data.components)) { + const components = { other: _('Sensor'), ...Object.fromEntries(Object.entries(data.components) + .filter(([, label]) => typeof label == 'string').map(([id, label]) => [id, _(label)])) }; + dirty = JSON.stringify(components) !== JSON.stringify(this.components); + this.components = components; + } + const components = this.components ||= { other: _('Sensor') }; + const sensors = Array.isArray(data.sensors) ? data.sensors : []; + const channels = this.channels ||= new Map(); + const current = new Map(sensors.slice(0, MAX_LINES).map((sensor, index) => [ sensor.id, { sensor, index } ])); + for (const [id] of channels) + if (!current.has(id)) { + channels.delete(id); + dirty = true; + } + for (const [id, { sensor, index }] of current) { + let channel = channels.get(id); + if (!channel) { + channel = { color: 0 }; + channels.set(id, channel); + dirty = true; + } + if (channel.label !== sensor.label || channel.index !== index) + dirty = true; + const category = sensorCategory(sensor, components); + if (channel.category !== category) { + channel.category = category; + channel.number = 0; + channel.numbered = false; + dirty = true; + } + channel.label = sensor.label; + channel.index = index; + channel.current = sensor.celsius; + } + if (dirty) { + nameChannels(channels, components); + colorChannels(channels); + if (this.trend) + this.trend.dirty = true; + } + return channels; + }, + + load() { + const now = performance.now(); + const state = this.history ||= { samples: [], step: STEP, slots: 30, now: 0 }; + if (this.pending) + return this.pending; + if (this.data && now < this.nextRead) { + this.data.age_ms = this.age == null ? null : this.age + now - this.received; + state.now = this.receivedNow + now - this.received; + return Promise.resolve(this.data); + } + + // Match backend sampling and fetch only new rows after the first load. + const last = state.samples[state.samples.length - 1]; + this.pending = L.resolveDefault(read(last ? last[0] : 0, state.id || ''), { status: 'error', sensors: [] }).then(data => { + history.update(state, data); + this.data = data; + this.received = performance.now(); + this.receivedNow = state.now; + this.age = Number.isFinite(data.age_ms) ? data.age_ms : null; + this.nextRead = this.received + (data.status == 'unsupported' ? 60000 + : this.age != null && this.age < state.step ? state.step - this.age : state.step); + this.pending = null; + return data; + }); + return this.pending; + }, + + // The layout form calls this only when opened; normal charts do not load + // the form library or build any configuration controls. + addOptions(section, form, ui) { + return this.load().then(data => { + const channels = this.syncChannels(data); + const o = section.option(form.MultiValue, 'temperature_sensors', _('Temperature history')); + o.retain = true; + o.forcewrite = true; + o.depends({ charts: 'temperature_history', '!contains': true }); + o.cfgvalue = () => { + const selected = L.toArray(uci.get('dashboard', 'layout', 'temperature_sensors')); + return selected.length ? selected : Array.from(channels.keys()).slice(0, DEFAULT_LINES); + }; + for (const [id, channel] of channels) + o.value(id, E('span', { 'class': 'dashboard-sensor-choice', 'title': channel.label }, [ + E('i', { 'class': 'dashboard-series-' + channel.color, + 'style': channelColor(channel) ? 'background-color:' + channelColor(channel) : null, + 'aria-hidden': 'true' }), channel.name + ])); + // Keep saved IDs selectable even if a device is temporarily absent. + for (const id of L.toArray(uci.get('dashboard', 'layout', 'temperature_sensors'))) + if (!channels.has(id)) + o.value(id, '%s · %s'.format(_('Unavailable'), id)); + o.validate = (section_id, value) => !L.toArray(value).length ? _('Select at least one sensor.') + : L.toArray(value).length <= MAX_LINES || _('Select no more than %d sensors.').format(MAX_LINES); + o.renderWidget = function(section_id, option_index, cfgvalue) { + const widget = new ui.Select(L.toArray(cfgvalue), this.transformChoices(), { + id: this.cbid(section_id), sort: this.keylist, multiple: true, + widget: 'checkbox', orientation: 'vertical', + validate: this.getValidator(section_id), disabled: this.map.readonly + }); + // ui.Select renders checkboxes but its default accessors handle radios. + widget.getValue = function() { + return Array.from(this.node.querySelectorAll('input:checked'), input => input.value); + }; + widget.setValue = function(value) { + const selected = new Set(L.toArray(value)); + this.node.querySelectorAll('input').forEach(input => input.checked = selected.has(input.value)); + }; + return widget.render(); + }; + return { slot: 'charts', widget: 'temperature_history', title: _('Temperature history'), options: [ o ] }; + }); + }, + + renderChart(data, sensors) { + const channels = this.syncChannels(data); + const state = this.history; + const span = history.span(state); + const fresh = !state.failed && Number.isFinite(data.age_ms) && data.age_ms < 15000 + && (data.status == 'ok' || data.status == 'partial'); + let h = this.trend; + if (!h) { + h = this.trend = { + channels, min: 0, max: 100, + selected: new Set(L.toArray(uci.get('dashboard', 'layout', 'temperature_sensors')).slice(0, MAX_LINES)), + plot: E('div'), legend: E('div'), message: charts.empty('') + }; + h.node = charts.card({ title: _('Temperature history'), desc: '°C', body: [ h.plot, h.legend, h.message ] }); + } + + if (h.id !== state.id) { + h.id = state.id; + h.min = 0; + h.max = 100; + h.dirty = true; + } + const tick = Math.floor(performance.now() / state.step); + const last = state.samples[state.samples.length - 1]?.[0] || 0; + if (!h.dirty && h.tick === tick && h.drawn === last && h.fresh === fresh) + return h.node; + h.dirty = false; + h.tick = tick; + h.drawn = last; + h.fresh = fresh; + + const series = [], legend = []; + const selected = h.selected.size ? h.selected : new Set(sensors.slice(0, DEFAULT_LINES).map(sensor => sensor.id)); + for (const [id, channel] of h.channels) { + if (!channel.color || !selected.has(id)) + continue; + const values = history.series(cur => cur[1] > state.now - span * 1000 ? cur[2][channel.index] : null, state.samples, state.step); + for (const point of values) + if (Number.isFinite(point.v)) { + h.min = Math.min(h.min, Math.floor(point.v / 20) * 20); + h.max = Math.max(h.max, Math.ceil(point.v / 20) * 20); + } + const className = 'dashboard-series-' + channel.color; + const color = channelColor(channel); + series.push({ className, color, values }); + legend.push({ className, color, label: channel.name, title: channel.label, value: temperature(fresh ? channel.current : null) }); + } + h.lines = charts.lines({ node: h.lines, end: state.now, span, min: h.min, max: h.max, + ticks: [ 0, 1, 2, 3, 4 ].map(i => { + const value = h.min + (h.max - h.min) * i / 4; + return { value, label: String(value) }; + }), ariaLabel: _('Temperature history'), series }); + if (h.plot.firstChild !== h.lines) + L.dom.content(h.plot, h.lines); + L.dom.content(h.legend, charts.legend(legend)); + h.message.textContent = !fresh ? _('Temperature temporarily unavailable') + : !series.length ? _('Selected temperature sensors are unavailable') : ''; + return h.node; + }, + + render(data) { + const age = data.age_ms >= 15000 ? Math.floor(data.age_ms / 1000) : 0; + if (data === this.renderedData && age === this.renderedAge) + return this.sections; + this.renderedData = data; + this.renderedAge = age; + const sensors = Array.isArray(data.sensors) ? data.sensors : []; + const channels = this.syncChannels(data); + const components = this.components; + const processor = processorSensor(sensors); + const value = processor?.celsius; + const message = data.status == 'unsupported' ? _('No supported temperature sensors found') : _('Temperature temporarily unavailable'); + const stale = data.age_ms >= 15000; + const modules = ['nss', 'wifi', 'modem'].map(category => componentTemperature(sensors, category, components[category] || components.other)).filter(Boolean); + const sub = []; + for (let i = 0; i < modules.length; i += 2) + sub.push(modules.slice(i, i + 2).join(' · ')); + if (!processor) + sub.push(_('Processor temperature unavailable')); + else if (!Number.isFinite(value)) + sub.push(message); + if (stale) + sub.push(_('Reading age: %d seconds').format(Math.floor(data.age_ms / 1000))); + + let card, tab; + if (data.status == 'unsupported') + this.trend = null; + return this.sections = { + cards: data.status == 'unsupported' ? [] : [{ + id: 'temperature', node: () => card ||= charts.kpi({ + icon: 'temperature', title: _('Temperature'), className: 'dashboard-temperature', + value: [ '%s %s'.format(components.cpu || _('CPU'), temperature(value)) ], sub, stacked: true + }) + }], + charts: data.status == 'unsupported' ? [] : [{ + id: 'temperature_history', node: () => this.renderChart(data, sensors) + }], + tabs: data.status == 'unsupported' ? [] : [{ id: 'temperatures', title: _('Temperatures'), content: () => tab ||= E('div', {}, [ + stale ? E('p', {}, [ _('Reading age: %d seconds').format(Math.floor(data.age_ms / 1000)) ]) : '', + data.status == 'partial' ? E('p', {}, [ _('Some temperature sensors are unavailable') ]) : '', + sensors.length ? charts.table({ + head: [ _('Component'), _('Sensor'), _('Temperature') ], + rows: sensors.map(s => [ channels.get(s.id)?.name || components[sensorCategory(s, components)], s.label, temperature(s.celsius) ]) + }) : charts.empty(message) + ]) }] + }; + } +}); diff --git a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/15_traffic.js b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/15_traffic.js index 390f53300..29e7874a3 100644 --- a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/15_traffic.js +++ b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/15_traffic.js @@ -3,18 +3,21 @@ 'require view.dashboard.lib.charts as charts'; 'require view.dashboard.lib.history as history'; -const NET = 4; +const NET = 4, WAN = 5; + +function rate(cur, prev, seconds, index) { + const name = cur?.[WAN]; + if (!name || name !== prev?.[WAN]) + return null; -function rate(cur, prev, seconds, name, index) { const a = prev?.[NET]?.[name]; const b = cur?.[NET]?.[name]; if (!Array.isArray(a) || !Array.isArray(b) || !Number.isFinite(seconds) || seconds <= 0) return null; - // Older rpcd instances provide only two fields. Crossing to the new - // format, like a change of ifindex, starts a fresh pair of samples. - if (a[2] !== b[2] || a[2] === null || b[2] === null) + // Do not calculate rates across a device recreation or an uncertain read. + if (a[2] == null || a[2] !== b[2]) return null; for (let i = 0; i < 2; i++) @@ -24,15 +27,8 @@ function rate(cur, prev, seconds, name, index) { return (b[index] - a[index]) * 8 / seconds; } -function selectedRate(cur, prev, seconds, index) { - const current = cur?.[5]?.devices, previous = prev?.[5]?.devices; - if (current?.length !== 1 || previous?.length !== 1 || current[0] !== previous[0]) - return null; - return rate(cur, prev, seconds, current[0], index); -} - function points(index) { - const points = history.series((cur, prev, seconds) => selectedRate(cur, prev, seconds, index)); + const points = history.series((cur, prev, seconds) => rate(cur, prev, seconds, index)); const last = points[points.length - 1]; if (last && history.now - last.t > history.step * 2.5) points.push({ t: history.now, v: null }); @@ -57,11 +53,12 @@ return baseclass.extend({ const available = down.some(p => p.v != null) || up.some(p => p.v != null); const current = last(down) != null && last(up) != null; const sample = history.samples[history.samples.length - 1]; - const device = sample?.[5]?.devices?.[0]; + const device = sample?.[WAN]; const body = []; if (available) { - body.push(charts.lines({ + body.push(this.plot = charts.lines({ + node: this.plot, span: history.span(), max: scale.max, ticks: scale.ticks, @@ -73,14 +70,15 @@ return baseclass.extend({ ])); } if (!current) - body.push(charts.empty(history.failed || !sample?.[5]?.devices?.length - ? _('No data received') : available ? _('Waiting for a new sample...') : history.status())); + body.push(charts.empty(history.failed ? _('No data received') + : !sample ? history.status() : !device ? _('Not connected') : available ? _('Waiting for a new sample...') : history.status())); // No null children: older LuCI DOM helpers render them as literal text. - return { charts: [ { id: 'wan', node: charts.card({ + return { charts: [ { id: 'wan', node: this.chart = charts.card({ + node: this.chart, title: this.title, desc: device ? device + ' · ' + scale.unit : scale.unit, - body: [ E('section', { 'class': 'dashboard-traffic-source' }, body) ] + body: body }) } ] }; } }); diff --git a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/index.js b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/index.js index 6a8e755bf..355b86a3a 100644 --- a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/index.js +++ b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/index.js @@ -146,7 +146,7 @@ function updateCharts(container, chartNodes) { scrollPositions[el.dataset.chart] = el.scrollLeft; }); - L.dom.content(container, fillRows(chartNodes, 'charts')); + updateNodes(container, fillRows(chartNodes, 'charts')); container.querySelectorAll('[data-chart]').forEach(el => { if (el.dataset.chart && scrollPositions[el.dataset.chart] != null) @@ -154,6 +154,16 @@ function updateCharts(container, chartNodes) { }); } +// Retained widgets need no detach/attach cycle on unchanged samples. +function updateNodes(container, nodes) { + nodes.forEach((node, i) => { + if (container.children[i] !== node) + container.insertBefore(node, container.children[i] || null); + }); + while (container.children.length > nodes.length) + container.removeChild(container.lastChild); +} + function updateTabs(tabMap, tabGroup, items, form) { const menu = tabMap.querySelector('.cbi-tabmenu'); const existingPanes = Array.from(tabGroup.children); @@ -248,12 +258,12 @@ function startPolling(includes, layout, root, form) { const sections = collectSections(includes, results, layout); if (form) - sections.tabs.push({ id: 'layout', title: _('Layout'), content: [] }); + sections.tabs.push({ id: 'layout', title: _('Settings'), content: [] }); updateShell(root, sections, containers); if (sections.cards.length) - L.dom.content(cardsContainer, fillRows(sections.cards, 'cards')); + updateNodes(cardsContainer, fillRows(sections.cards, 'cards')); if (sections.charts.length) updateCharts(chartsContainer, sections.charts); @@ -295,7 +305,7 @@ return view.extend({ document.addEventListener('uci-applied', () => window.location.reload()); - const form = L.hasViewPermission() ? E('div', { 'class': 'cbi-section', 'data-tab': 'layout', 'data-tab-title': _('Layout') }, [ E('em', { 'class': 'spinning' }, [ _('Loading view…') ]) ]) : null; + const form = L.hasViewPermission() ? E('div', { 'class': 'cbi-section', 'data-tab': 'layout', 'data-tab-title': _('Settings') }, [ E('em', { 'class': 'spinning' }, [ _('Loading view…') ]) ]) : null; return startPolling(includes, layout, root, form).then(() => root); }, diff --git a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/charts.js b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/charts.js index 6f0705af9..8ab9385d9 100644 --- a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/charts.js +++ b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/charts.js @@ -3,11 +3,12 @@ const SVG_NS = 'http://www.w3.org/2000/svg'; -function svg(tag, attrs, children) { - const node = document.createElementNS(SVG_NS, tag); +function svg(tag, attrs, children, existing) { + const node = existing || document.createElementNS(SVG_NS, tag); for (const key in (attrs || {})) - node.setAttribute(key, attrs[key]); + if (node.getAttribute(key) !== String(attrs[key])) + node.setAttribute(key, attrs[key]); (children || []).forEach(child => { if (child != null) @@ -82,11 +83,31 @@ return baseclass.extend({ return E('span', { 'class': 'label ' + (kind || '') }, [ text ]); }, - // A card is a plain .cbi-section, so the theme draws it. + // Keep the theme's card surface, with shared chart header spacing. card(opts) { - return E('div', { 'class': 'cbi-section ' + (opts.className || '') }, [ + // Reuse the shell as well as its plot: moving a live plot into a new + // card temporarily shrinks the page and clamps its scroll position. + if (opts.node) { + let previous = opts.node.querySelector('.cbi-section-descr'); + if (previous.textContent !== (opts.desc || '')) + previous.textContent = opts.desc || ''; + for (const child of [].concat(opts.body)) { + if (previous.nextSibling !== child) { + if (previous.nextSibling) + opts.node.replaceChild(child, previous.nextSibling); + else + opts.node.appendChild(child); + } + previous = child; + } + while (previous.nextSibling) + opts.node.removeChild(previous.nextSibling); + return opts.node; + } + + return E('div', { 'class': 'cbi-section dashboard-chart ' + (opts.className || '') }, [ opts.title ? E('h3', {}, [ opts.title ]) : '', - opts.desc ? E('div', { 'class': 'cbi-section-descr' }, [ opts.desc ]) : '' + E('div', { 'class': 'cbi-section-descr' }, [ opts.desc || '' ]) ].concat(opts.body)); }, @@ -241,20 +262,28 @@ return baseclass.extend({ ]); }, - // A time series of points `{ t, v }`, placed by their time: the x axis - // spans `span` seconds up to the last point. A null `v` leaves a gap, and - // a point with gaps on both sides is drawn as a dot. + // Time-ordered points `{ t, v }`, with t in milliseconds. The x axis spans + // `span` seconds up to `end` or the last point. Non-finite values leave a + // gap; isolated points are dots. Pass `node` to update an existing chart. lines(opts) { - const max = opts.max || 1; + const min = opts.min ?? 0; + const max = opts.max ?? 1; const shapes = []; - const end = opts.series.reduce((t, series) => Math.max(t, ...series.values.map(p => p.t)), 0); + const end = opts.end ?? opts.series.reduce((t, series) => Math.max(t, series.values[series.values.length - 1]?.t || 0), 0); + const plot = opts.node?.querySelector('svg'); + const previous = plot ? Array.from(plot.children) : []; + const shape = (tag, attrs) => { + const old = previous[shapes.length]; + shapes.push(svg(tag, attrs, null, old?.localName == tag ? old : null)); + }; opts.series.forEach((series, n) => { let run = []; + const className = series.className || 'dashboard-series-' + (n + 1); series.values.concat([ { v: null } ]).forEach(p => { - if (p.v != null) { - run.push([ 100 - (end - p.t) / (opts.span * 10), 100 - scale(p.v, 0, max) ]); + if (Number.isFinite(p.v)) { + run.push([ 100 - (end - p.t) / (opts.span * 10), 100 - scale(p.v, min, max) ]); return; } @@ -265,28 +294,48 @@ return baseclass.extend({ const points = run.map(p => '%.2f,%.2f'.format(p[0], p[1])).join(' '); if (series.area) - shapes.push(svg('polygon', { - 'class': 'dashboard-series-' + (n + 1), + shape('polygon', { + 'class': className, 'points': '%.2f,100 %s %.2f,100'.format(run[0][0], points, run[run.length - 1][0]) - })); + }); - shapes.push(svg('polyline', { 'class': 'dashboard-series-' + (n + 1), 'points': points })); + shape('polyline', { 'class': className, 'points': points, 'style': series.color ? 'stroke:' + series.color : '' }); } run = []; }); }); + const axis = opts.node?.querySelector('.dashboard-bars-axis'); + const ago = (opts.span >= 60) ? _('%d min ago').format(Math.round(opts.span / 60)) : _('%d s ago').format(opts.span); + if (axis && axis.children.length == opts.ticks.length) { + const grid = opts.node.querySelector('.dashboard-bars-grid'); + opts.ticks.forEach((tick, i) => { + const top = '%.2f%%'.format(100 - scale(tick.value, min, max)); + axis.children[i].style.top = grid.children[i].style.top = top; + if (axis.children[i].textContent !== String(tick.label)) + axis.children[i].textContent = tick.label; + }); + shapes.forEach((node, i) => { + if (plot.children[i] !== node) + plot.insertBefore(node, plot.children[i] || null); + }); + while (plot.children.length > shapes.length) + plot.removeChild(plot.lastChild); + opts.node.querySelector('.dashboard-lines-time span').textContent = ago; + return opts.node; + } + return E('div', { 'class': 'dashboard-bars' }, [ E('div', { 'class': 'dashboard-bars-axis' }, opts.ticks.map(tick => - E('span', { 'style': 'top:%.2f%%'.format(100 - scale(tick.value, 0, max)) }, [ tick.label ]))), + E('span', { 'style': 'top:%.2f%%'.format(100 - scale(tick.value, min, max)) }, [ tick.label ]))), E('div', { 'class': 'dashboard-lines-plot' }, [ E('div', { 'class': 'dashboard-bars-grid' }, opts.ticks.map(tick => - E('i', { 'style': 'top:%.2f%%'.format(100 - scale(tick.value, 0, max)) }))), + E('i', { 'style': 'top:%.2f%%'.format(100 - scale(tick.value, min, max)) }))), svg('svg', { 'viewBox': '0 0 100 100', 'preserveAspectRatio': 'none', 'role': 'img', 'aria-label': opts.ariaLabel || '' }, shapes) ]), E('div', { 'class': 'dashboard-lines-time' }, [ - E('span', {}, [ (opts.span >= 60) ? _('%d min ago').format(Math.round(opts.span / 60)) : _('%d s ago').format(opts.span) ]), + E('span', {}, [ ago ]), E('span', {}, [ _('now') ]) ]) ]); @@ -294,6 +343,6 @@ return baseclass.extend({ legend(items) { return E('div', { 'class': 'dashboard-legend-inline' }, items.map(item => - E('span', {}, [ E('i', { 'class': item.className }), item.label, (item.value != null) ? E('b', {}, [ item.value ]) : '' ]))); + E('span', { 'title': item.title || null }, [ E('i', { 'class': item.className, 'style': item.color ? 'background-color:' + item.color : null }), item.label, (item.value != null) ? E('b', {}, [ item.value ]) : '' ]))); } }); diff --git a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/history.js b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/history.js index 2a8bd6bd4..dba13d121 100644 --- a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/history.js +++ b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/history.js @@ -15,26 +15,29 @@ return baseclass.extend({ step: 5000, slots: 60, + // Both counter history and temperature readings use the same bounded, + // incremental protocol. State belongs to the caller, not to the chart DOM. + update(state, res) { + state.failed = (!L.isObject(res) || !Array.isArray(res.samples)); + if (state.failed) { + state.samples = []; + return; + } + if (res.id != state.id) + state.samples = []; + state.id = res.id; + state.now = res.now; + state.step = res.step; + state.slots = res.slots; + state.samples = (state.samples || []).concat(res.samples).filter(sample => sample[TIME] > res.now - res.step * res.slots); + }, + fetch() { const last = this.samples[this.samples.length - 1]; return L.resolveDefault(callHistory(last ? last[SEQ] : 0, this.id || ''), null).then(res => { - this.failed = (!L.isObject(res) || !Array.isArray(res.samples)); - - if (this.failed) { - // Old samples must not appear as current CPU usage or live traffic. - this.samples = []; - return; - } - - if (res.id != this.id) - this.samples = []; - - this.id = res.id; - this.now = res.now; - this.step = res.step; - this.slots = res.slots; - this.samples = this.samples.concat(res.samples).filter(sample => sample[TIME] > res.now - res.step * res.slots); + // Failed requests must not turn old samples into live readings. + this.update(this, res); }); }, @@ -53,12 +56,12 @@ return baseclass.extend({ return this.failed ? _('No data received') : _('Collecting data...'); }, - span() { - return this.slots * this.step / 1000; + span(state = this) { + return state.slots * state.step / 1000; }, - near(prev, cur) { - return (prev != null && cur[TIME] > prev[TIME] && cur[TIME] - prev[TIME] <= 2.5 * this.step); + near(prev, cur, step = this.step) { + return (prev != null && cur[TIME] > prev[TIME] && cur[TIME] - prev[TIME] <= 2.5 * step); }, pair() { @@ -70,12 +73,12 @@ return baseclass.extend({ // Points `{ t, v }` for a chart. `fn(cur, prev, seconds)` gives a value or // null; `prev` is null where sampling had paused, which leaves a gap. - series(fn) { + series(fn, samples = this.samples, step = this.step) { const points = []; - this.samples.forEach((cur, i) => { - const prev = this.samples[i - 1]; - const near = this.near(prev, cur); + samples.forEach((cur, i) => { + const prev = samples[i - 1]; + const near = this.near(prev, cur, step); if (prev != null && !near) points.push({ t: cur[TIME] - 1, v: null }); diff --git a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/layout.js b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/layout.js index a84b42a21..f7dba9a8f 100644 --- a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/layout.js +++ b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/layout.js @@ -5,6 +5,45 @@ 'require ui'; 'require view.dashboard.lib.widgets as widgets'; +function attachOptions(map, lists, panels) { + const parking = E('div', { 'hidden': '' }); + map.root.appendChild(parking); + for (const panel of panels.filter(Boolean)) { + const list = lists[panel.slot].getUIElement('layout'); + const fields = E('div', { 'class': 'dashboard-widget-options' }, + panel.options.map(option => map.findElement('data-field', option.cbid('layout')))); + const summary = E('summary', {}, panel.title); + const details = E('details', { 'class': 'dashboard-widget-settings' }, [ summary, fields ]); + parking.appendChild(details); + // Keep native form actions out of the dynamic list's delete/drag handlers. + for (const type of [ 'click', 'keydown', 'touchstart', 'touchmove', 'touchend', 'dragstart', 'drop' ]) + fields.addEventListener(type, ev => ev.stopPropagation()); + summary.addEventListener('click', ev => ev.stopPropagation()); + summary.addEventListener('keydown', ev => ev.stopPropagation()); + const mount = () => { + const item = Array.from(list.node.children).find(node => + node.matches('.item') && node.querySelector(':scope > input[type="hidden"]')?.value === panel.widget); + if (item && details.parentNode !== item) { + item.classList.add('dashboard-configurable'); + item.querySelector(':scope > span')?.remove(); + item.insertBefore(details, item.firstChild); + } + }; + const addItem = list.addItem, removeItem = list.removeItem; + list.addItem = function() { + const result = addItem.apply(this, arguments); + mount(); + return result; + }; + list.removeItem = function(node, item) { + if (item.contains(details)) + parking.appendChild(details); + return removeItem.apply(this, arguments); + }; + mount(); + } +} + return baseclass.extend({ render(includes) { const slots = { @@ -14,8 +53,8 @@ return baseclass.extend({ }; const m = new form.Map('dashboard'); - const s = m.section(form.NamedSection, 'layout', 'dashboard', null, - _('The lists follow the page from top to bottom. What is in a list is shown, in that order: drag an entry to move it. An empty list shows the defaults.')); + const s = m.section(form.NamedSection, 'layout', 'dashboard'); + const lists = {}; widgets.slots.forEach(slot => { const choices = widgets.list(includes, slot); @@ -23,7 +62,7 @@ return baseclass.extend({ if (!choices.length) return; - const o = s.option(form.DynamicList, slot, slots[slot]); + const o = lists[slot] = s.option(form.DynamicList, slot, slots[slot]); choices.forEach(widget => o.value(widget.id, widget.title)); @@ -41,18 +80,33 @@ return baseclass.extend({ o.renderWidget = function(section_id, option_index, cfgvalue) { const node = form.DynamicList.prototype.renderWidget.apply(this, arguments); const shown = L.toArray(cfgvalue); + node.classList.add('dashboard-widget-list'); + // Native drop handling expects the item itself as the drop target. + node.addEventListener('dragstart', () => node.classList.add('dashboard-sorting')); + for (const type of [ 'dragend', 'drop' ]) + node.addEventListener(type, () => node.classList.remove('dashboard-sorting')); node.querySelectorAll('.cbi-dropdown ul > li[data-value]').forEach(li => { if (shown.includes(li.getAttribute('data-value'))) li.setAttribute('unselectable', ''); }); - node.querySelector('.create-item-input').parentNode.remove(); + node.querySelector('.create-item-input')?.parentNode.remove(); return node; }; }); - return m.render().then(node => E('div', {}, [ + return Promise.all(includes.filter(include => typeof(include.addOptions) == 'function') + .map(include => include.addOptions(s, form, ui))).then(panels => { + const renderContents = m.renderContents; + m.renderContents = function() { + return renderContents.apply(this, arguments).then(node => { + attachOptions(this, lists, panels); + return node; + }); + }; + return m.render(); + }).then(node => E('div', { 'class': 'dashboard-settings' }, [ node, E('div', { 'class': 'cbi-page-actions' }, [ E('button', { diff --git a/luci-mod-dashboard/po/fr/dashboard.po b/luci-mod-dashboard/po/fr/dashboard.po index 90d9b383b..58ca75631 100644 --- a/luci-mod-dashboard/po/fr/dashboard.po +++ b/luci-mod-dashboard/po/fr/dashboard.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" -"PO-Revision-Date: 2026-10-13 21:56+0000\n" -"Last-Translator: Pavel Borecki \n" +"PO-Revision-Date: 2026-11-06 09:37+0000\n" +"Last-Translator: Martin Olmer \n" "Language-Team: French \n" "Language: fr\n" @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 2026.11.dev0\n" +"X-Generator: Weblate 2026.11.2.dev0\n" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:97 msgid "%d clients" @@ -336,7 +336,7 @@ msgstr "SSID" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/layout.js:61 msgid "Save & Apply" -msgstr "" +msgstr "Enregistrer et Appliquer" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:219 msgid "Signal" diff --git a/luci-mod-dashboard/po/hu/dashboard.po b/luci-mod-dashboard/po/hu/dashboard.po index 4e38ebe26..e2c74558d 100644 --- a/luci-mod-dashboard/po/hu/dashboard.po +++ b/luci-mod-dashboard/po/hu/dashboard.po @@ -1,8 +1,9 @@ msgid "" msgstr "" "Project-Id-Version: \n" -"PO-Revision-Date: 2026-10-13 21:56+0000\n" -"Last-Translator: Pavel Borecki \n" +"PO-Revision-Date: 2026-11-05 07:54+0000\n" +"Last-Translator: Kövecses József " +"\n" "Language-Team: Hungarian \n" "Language: hu\n" @@ -10,38 +11,38 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2026.11.dev0\n" +"X-Generator: Weblate 2026.11.1.dev0\n" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:97 msgid "%d clients" -msgstr "" +msgstr "%d kliens" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:89 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:124 msgid "%d core" msgid_plural "%d cores" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d mag" +msgstr[1] "%d mag" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/charts.js:277 msgid "%d min ago" -msgstr "" +msgstr "%d perce" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:72 msgid "%d of %d SSIDs active" -msgstr "" +msgstr "%d / %d SSID aktív" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/charts.js:277 msgid "%d s ago" -msgstr "" +msgstr "%d másodperce" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:108 msgid "15 min: %.2f" -msgstr "" +msgstr "15 perc: %.2f" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:108 msgid "5 min: %.2f" -msgstr "" +msgstr "5 perc: %.2f" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:322 msgid "Active" @@ -49,7 +50,7 @@ msgstr "Aktív" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:40 msgid "Active leases" -msgstr "" +msgstr "Aktív bérletek" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:295 msgid "Architecture" @@ -70,22 +71,22 @@ msgstr "Bitráta" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:173 msgid "Buffered" -msgstr "" +msgstr "Pufferelt" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:141 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:166 msgid "CPU" -msgstr "" +msgstr "CPU" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:43 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:87 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:162 msgid "CPU usage" -msgstr "" +msgstr "CPU-használat" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:176 msgid "Cached" -msgstr "" +msgstr "Gyorsítótárazott" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:328 msgid "Channel" @@ -93,7 +94,7 @@ msgstr "Csatorna" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/history.js:52 msgid "Collecting data..." -msgstr "" +msgstr "Adatok gyűjtése..." #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:72 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:104 @@ -103,13 +104,13 @@ msgstr "" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:221 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:418 msgid "Connected" -msgstr "Csatlakoztatott" +msgstr "Kapcsolódva" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:14 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:19 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:20 msgid "DHCP Devices" -msgstr "DHCP eszközök" +msgstr "DHCP-eszközök" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:194 msgid "DNSv4" @@ -125,7 +126,7 @@ msgstr "Kezelőfelület" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/layout.js:13 msgid "Detail tabs" -msgstr "" +msgstr "Részletező lapok" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:352 msgid "Devices Connected" @@ -145,7 +146,7 @@ msgstr "Titkosítás" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:300 msgid "Firmware Version" -msgstr "Firmware verzió" +msgstr "Firmware-verzió" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:272 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:330 @@ -162,11 +163,11 @@ msgstr "Átjáró v6" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/charts.js:25 msgid "Gbit/s" -msgstr "" +msgstr "Gbit/s" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:111 msgid "Good" -msgstr "" +msgstr "Jó" #: modules/luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:31 msgid "Grant access to DHCP status display" @@ -218,7 +219,7 @@ msgstr "IPv6-előtag" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:206 msgid "Interface is disabled" -msgstr "" +msgstr "Az interfész le van tiltva" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:21 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:23 @@ -229,7 +230,7 @@ msgstr "Internet" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/charts.js:25 msgid "Kbit/s" -msgstr "" +msgstr "Kbit/s" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:285 msgid "Kernel Version" @@ -238,21 +239,21 @@ msgstr "Rendszermag (kernel) verzió" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/index.js:251 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/index.js:298 msgid "Layout" -msgstr "" +msgstr "Elrendezés" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/layout.js:12 msgid "Live charts" -msgstr "" +msgstr "Élő grafikonok" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:45 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:106 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:154 msgid "Load average" -msgstr "" +msgstr "Átlagos terhelés" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/index.js:298 msgid "Loading view…" -msgstr "" +msgstr "Nézet betöltése…" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:280 msgid "Local Time" @@ -271,11 +272,11 @@ msgstr "Mbit/s" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:97 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:142 msgid "Memory" -msgstr "" +msgstr "Memória" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:170 msgid "Memory used" -msgstr "" +msgstr "Használt memória" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:290 msgid "Model" @@ -284,31 +285,31 @@ msgstr "Modell" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:119 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:231 msgid "No RX signal" -msgstr "" +msgstr "Nincs RX-jel" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:40 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:53 msgid "No active leases" -msgstr "" +msgstr "Nincsenek aktív bérletek" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/history.js:52 msgid "No data received" -msgstr "" +msgstr "Nem érkezett adat" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:88 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:113 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:180 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:244 msgid "No wireless clients connected" -msgstr "" +msgstr "Nincs csatlakoztatott vezeték nélküli kliens" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:219 msgid "Noise floor" -msgstr "" +msgstr "Zajszint" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:74 msgid "Not configured or no address acquired" -msgstr "" +msgstr "Nincs beállítva, vagy nincs kapott cím" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:72 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:104 @@ -326,7 +327,7 @@ msgstr "Protokoll" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:47 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:202 msgid "Resources" -msgstr "" +msgstr "Erőforrások" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:217 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:316 @@ -336,11 +337,11 @@ msgstr "SSID" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/layout.js:61 msgid "Save & Apply" -msgstr "" +msgstr "Mentés és alkalmazás" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:219 msgid "Signal" -msgstr "" +msgstr "Jel" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:35 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:96 @@ -350,11 +351,11 @@ msgstr "Jelerősség" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/layout.js:11 msgid "Status cards" -msgstr "" +msgstr "Állapotkártyák" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:180 msgid "Swap used" -msgstr "" +msgstr "Használt swap" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:24 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:317 @@ -365,23 +366,26 @@ msgstr "Rendszer" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:130 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:137 msgid "System load" -msgstr "" +msgstr "Rendszerterhelés" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/layout.js:18 msgid "" "The lists follow the page from top to bottom. What is in a list is shown, in " "that order: drag an entry to move it. An empty list shows the defaults." msgstr "" +"A listák az oldalt felülről lefelé követik. A listában szereplő elemek ebben " +"a sorrendben jelennek meg; egy elem áthelyezéséhez húzza el. Az üres lista " +"az alapértelmezéseket mutatja." #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:54 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:245 msgid "Total" -msgstr "" +msgstr "Összesen" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:160 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:407 msgid "Transferred" -msgstr "" +msgstr "Átvitt adat" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/15_traffic.js:74 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:168 @@ -401,11 +405,11 @@ msgstr "Futási idő" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/15_traffic.js:10 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/15_traffic.js:13 msgid "WAN traffic" -msgstr "" +msgstr "WAN-forgalom" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:112 msgid "Weak" -msgstr "" +msgstr "Gyenge" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:28 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:37 @@ -415,31 +419,31 @@ msgstr "Vezeték nélküli kapcsolat" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:36 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:159 msgid "Wireless client data usage" -msgstr "" +msgstr "Vezeték nélküli kliensek adatforgalma" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:34 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:84 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:87 msgid "Wireless client distribution" -msgstr "" +msgstr "Vezeték nélküli kliensek eloszlása" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:33 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:70 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:288 msgid "Wireless clients" -msgstr "" +msgstr "Vezeték nélküli kliensek" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/charts.js:25 msgid "bit/s" -msgstr "" +msgstr "bit/s" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:85 msgid "by SSID" -msgstr "" +msgstr "SSID szerint" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:87 msgid "clients" -msgstr "" +msgstr "kliens" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:97 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:111 @@ -449,15 +453,15 @@ msgstr "" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:231 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:234 msgid "dBm" -msgstr "" +msgstr "dBm" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:89 msgid "load %.2f" -msgstr "" +msgstr "terhelés: %.2f" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/charts.js:278 msgid "now" -msgstr "" +msgstr "most" #~ msgid "no" #~ msgstr "nem" diff --git a/luci-mod-dashboard/po/id/dashboard.po b/luci-mod-dashboard/po/id/dashboard.po index 0205760f9..c894df8db 100644 --- a/luci-mod-dashboard/po/id/dashboard.po +++ b/luci-mod-dashboard/po/id/dashboard.po @@ -1,18 +1,19 @@ msgid "" msgstr "" -"PO-Revision-Date: 2026-08-18 10:04+0000\n" -"Last-Translator: Fiqri Ardyansyah \n" +"PO-Revision-Date: 2026-10-23 20:11+0000\n" +"Last-Translator: \"Hamake D. Arayanai\" " +"\n" "Language-Team: Indonesian \n" "Language: id\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 2026.9.dev0\n" +"X-Generator: Weblate 2026.11.dev0\n" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:97 msgid "%d clients" -msgstr "" +msgstr "%d klien" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:89 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:124 @@ -22,23 +23,23 @@ msgstr[0] "" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/charts.js:277 msgid "%d min ago" -msgstr "" +msgstr "%d menit yang lalu" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:72 msgid "%d of %d SSIDs active" -msgstr "" +msgstr "%d dari %d SSID aktif" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/charts.js:277 msgid "%d s ago" -msgstr "" +msgstr "%d detik yang lalu" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:108 msgid "15 min: %.2f" -msgstr "" +msgstr "15 menit: %.2f" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:108 msgid "5 min: %.2f" -msgstr "" +msgstr "5 menit: %.2f" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:322 msgid "Active" @@ -78,7 +79,7 @@ msgstr "" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:87 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:162 msgid "CPU usage" -msgstr "" +msgstr "Penggunaan CPU" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:176 msgid "Cached" @@ -90,7 +91,7 @@ msgstr "Kanal" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/history.js:52 msgid "Collecting data..." -msgstr "" +msgstr "Mengumpulkan data..." #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:72 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:104 @@ -163,7 +164,7 @@ msgstr "" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:111 msgid "Good" -msgstr "" +msgstr "Bagus" #: modules/luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:31 msgid "Grant access to DHCP status display" @@ -215,7 +216,7 @@ msgstr "IPv6 prefix" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:206 msgid "Interface is disabled" -msgstr "" +msgstr "Antarmuka dinonaktifkan" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:21 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:23 @@ -235,7 +236,7 @@ msgstr "Versi Kernel" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/index.js:251 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/index.js:298 msgid "Layout" -msgstr "" +msgstr "Tata letak" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/layout.js:12 msgid "Live charts" @@ -245,11 +246,11 @@ msgstr "" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:106 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:154 msgid "Load average" -msgstr "" +msgstr "Rata-rata beban" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/index.js:298 msgid "Loading view…" -msgstr "" +msgstr "Memuat tampilan…" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:280 msgid "Local Time" @@ -272,7 +273,7 @@ msgstr "" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:170 msgid "Memory used" -msgstr "" +msgstr "Memori yang digunakan" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:290 msgid "Model" @@ -281,7 +282,7 @@ msgstr "Model" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:119 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:231 msgid "No RX signal" -msgstr "" +msgstr "Tidak ada sinyal RX" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:40 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:53 @@ -290,14 +291,14 @@ msgstr "" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/history.js:52 msgid "No data received" -msgstr "" +msgstr "Tidak ada data yang diterima" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:88 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:113 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:180 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:244 msgid "No wireless clients connected" -msgstr "" +msgstr "Tidak ada klien nirkabel yang terhubung" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:219 msgid "Noise floor" @@ -305,7 +306,7 @@ msgstr "" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:74 msgid "Not configured or no address acquired" -msgstr "" +msgstr "Belum dikonfigurasi atau belum memperoleh alamat" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:72 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:104 @@ -323,7 +324,7 @@ msgstr "Protokol" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:47 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:202 msgid "Resources" -msgstr "" +msgstr "Sumber daya" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:217 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:316 @@ -333,17 +334,17 @@ msgstr "SSID" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/layout.js:61 msgid "Save & Apply" -msgstr "" +msgstr "Simpan & Terapkan" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:219 msgid "Signal" -msgstr "" +msgstr "Sinyal" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:35 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:96 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:396 msgid "Signal Strength" -msgstr "" +msgstr "Kekuatan Sinyal" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/layout.js:11 msgid "Status cards" @@ -362,13 +363,16 @@ msgstr "Sistem" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:130 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:137 msgid "System load" -msgstr "" +msgstr "Beban sistem" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/layout.js:18 msgid "" "The lists follow the page from top to bottom. What is in a list is shown, in " "that order: drag an entry to move it. An empty list shows the defaults." msgstr "" +"Daftar-daftar tersebut tersusun dari bagian atas hingga bawah halaman. Isi " +"daftar ditampilkan sesuai urutannya; seret suatu entri untuk memindahkannya. " +"Daftar yang kosong akan menampilkan pengaturan bawaan." #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:54 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:245 @@ -402,7 +406,7 @@ msgstr "" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:112 msgid "Weak" -msgstr "" +msgstr "Lemah" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:28 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:37 @@ -412,19 +416,19 @@ msgstr "Wifi" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:36 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:159 msgid "Wireless client data usage" -msgstr "" +msgstr "Penggunaan data klien nirkabel" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:34 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:84 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:87 msgid "Wireless client distribution" -msgstr "" +msgstr "Distribusi klien nirkabel" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:33 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:70 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:288 msgid "Wireless clients" -msgstr "" +msgstr "Klien nirkabel" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/charts.js:25 msgid "bit/s" @@ -432,11 +436,11 @@ msgstr "" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:85 msgid "by SSID" -msgstr "" +msgstr "berdasarkan SSID" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:87 msgid "clients" -msgstr "" +msgstr "klien" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:97 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:111 @@ -450,11 +454,11 @@ msgstr "" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:89 msgid "load %.2f" -msgstr "" +msgstr "beban %.2f" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/charts.js:278 msgid "now" -msgstr "" +msgstr "sekarang" #~ msgid "no" #~ msgstr "tidak" diff --git a/luci-mod-dashboard/po/it/dashboard.po b/luci-mod-dashboard/po/it/dashboard.po index dfcd4b5bb..8118d2f4b 100644 --- a/luci-mod-dashboard/po/it/dashboard.po +++ b/luci-mod-dashboard/po/it/dashboard.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" -"PO-Revision-Date: 2026-10-13 21:56+0000\n" -"Last-Translator: Pavel Borecki \n" +"PO-Revision-Date: 2026-11-05 20:36+0000\n" +"Last-Translator: Martin Olmer \n" "Language-Team: Italian \n" "Language: it\n" @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2026.11.dev0\n" +"X-Generator: Weblate 2026.11.2.dev0\n" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:97 msgid "%d clients" @@ -340,7 +340,7 @@ msgstr "" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:219 msgid "Signal" -msgstr "" +msgstr "Segnale" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:35 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:96 @@ -449,7 +449,7 @@ msgstr "" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:231 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:234 msgid "dBm" -msgstr "" +msgstr "dBm" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:89 msgid "load %.2f" diff --git a/luci-mod-dashboard/po/ja/dashboard.po b/luci-mod-dashboard/po/ja/dashboard.po index 1efeb907c..d497f166b 100644 --- a/luci-mod-dashboard/po/ja/dashboard.po +++ b/luci-mod-dashboard/po/ja/dashboard.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" -"PO-Revision-Date: 2026-10-18 16:40+0000\n" +"PO-Revision-Date: 2026-10-20 02:18+0000\n" "Last-Translator: Monarch " "\n" "Language-Team: Japanese \n" +"PO-Revision-Date: 2026-11-01 06:11+0000\n" +"Last-Translator: LucasMZ \n" "Language-Team: Portuguese (Brazil) \n" "Language: pt_BR\n" @@ -189,7 +188,7 @@ msgstr "Conceda acesso à visualização da condição do wireless" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:215 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:378 msgid "Hostname" -msgstr "Hostname" +msgstr "Nome do host" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:47 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:216 diff --git a/luci-mod-dashboard/po/ro/dashboard.po b/luci-mod-dashboard/po/ro/dashboard.po index 611f3d068..d544b834e 100644 --- a/luci-mod-dashboard/po/ro/dashboard.po +++ b/luci-mod-dashboard/po/ro/dashboard.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" -"PO-Revision-Date: 2026-10-13 21:56+0000\n" -"Last-Translator: Pavel Borecki \n" +"PO-Revision-Date: 2026-11-05 09:04+0000\n" +"Last-Translator: Martin Olmer \n" "Language-Team: Romanian \n" "Language: ro\n" @@ -11,7 +11,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " "20)) ? 1 : 2;\n" -"X-Generator: Weblate 2026.11.dev0\n" +"X-Generator: Weblate 2026.11.1.dev0\n" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:97 msgid "%d clients" @@ -338,11 +338,11 @@ msgstr "SSID" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/layout.js:61 msgid "Save & Apply" -msgstr "" +msgstr "Salvați și aplicați" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:219 msgid "Signal" -msgstr "" +msgstr "Semnal" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:35 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:96 @@ -378,7 +378,7 @@ msgstr "" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:54 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:245 msgid "Total" -msgstr "" +msgstr "Total" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:160 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:407 diff --git a/luci-mod-dashboard/po/sv/dashboard.po b/luci-mod-dashboard/po/sv/dashboard.po index dfb6b80e9..fe8ffc5e9 100644 --- a/luci-mod-dashboard/po/sv/dashboard.po +++ b/luci-mod-dashboard/po/sv/dashboard.po @@ -1,8 +1,9 @@ msgid "" msgstr "" "Project-Id-Version: \n" -"PO-Revision-Date: 2026-10-13 13:19+0000\n" -"Last-Translator: Pavel Borecki \n" +"PO-Revision-Date: 2026-10-23 06:37+0000\n" +"Last-Translator: Daniel Nylander " +"\n" "Language-Team: Swedish \n" "Language: sv\n" @@ -14,34 +15,34 @@ msgstr "" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:97 msgid "%d clients" -msgstr "" +msgstr "%d klienter" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:89 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:124 msgid "%d core" msgid_plural "%d cores" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d kärna" +msgstr[1] "%d kärnor" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/charts.js:277 msgid "%d min ago" -msgstr "" +msgstr "%d min sedan" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:72 msgid "%d of %d SSIDs active" -msgstr "" +msgstr "%d av %d SSID:er aktiva" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/charts.js:277 msgid "%d s ago" -msgstr "" +msgstr "%d s sedan" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:108 msgid "15 min: %.2f" -msgstr "" +msgstr "15 min: %.2f" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:108 msgid "5 min: %.2f" -msgstr "" +msgstr "5 min: %.2f" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:322 msgid "Active" @@ -49,7 +50,7 @@ msgstr "Aktiv" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:40 msgid "Active leases" -msgstr "" +msgstr "Aktiva tilldelningar" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:295 msgid "Architecture" @@ -70,22 +71,22 @@ msgstr "Bithastighet" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:173 msgid "Buffered" -msgstr "" +msgstr "Buffrad" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:141 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:166 msgid "CPU" -msgstr "" +msgstr "CPU" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:43 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:87 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:162 msgid "CPU usage" -msgstr "" +msgstr "Processoranvändning" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:176 msgid "Cached" -msgstr "" +msgstr "Cachad" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:328 msgid "Channel" @@ -93,7 +94,7 @@ msgstr "Kanal" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/history.js:52 msgid "Collecting data..." -msgstr "" +msgstr "Samlar in data…" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:72 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:104 @@ -125,7 +126,7 @@ msgstr "Instrumentpanel" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/layout.js:13 msgid "Detail tabs" -msgstr "" +msgstr "Detaljflikar" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:352 msgid "Devices Connected" @@ -162,11 +163,11 @@ msgstr "GatewayV6" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/charts.js:25 msgid "Gbit/s" -msgstr "" +msgstr "Gbit/s" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:111 msgid "Good" -msgstr "" +msgstr "Bra" #: modules/luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:31 msgid "Grant access to DHCP status display" @@ -218,7 +219,7 @@ msgstr "IPv6-prefix" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:206 msgid "Interface is disabled" -msgstr "" +msgstr "Gränssnittet är inaktiverat" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:21 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:23 @@ -229,7 +230,7 @@ msgstr "Internet" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/charts.js:25 msgid "Kbit/s" -msgstr "" +msgstr "Kbit/s" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:285 msgid "Kernel Version" @@ -238,21 +239,21 @@ msgstr "Kärnversion" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/index.js:251 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/index.js:298 msgid "Layout" -msgstr "" +msgstr "Utformning" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/layout.js:12 msgid "Live charts" -msgstr "" +msgstr "Diagram i realtid" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:45 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:106 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:154 msgid "Load average" -msgstr "" +msgstr "Genomsnittlig belastning" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/index.js:298 msgid "Loading view…" -msgstr "" +msgstr "Läser in vy …" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:280 msgid "Local Time" @@ -271,11 +272,11 @@ msgstr "Mbit/s" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:97 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:142 msgid "Memory" -msgstr "" +msgstr "Minne" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:170 msgid "Memory used" -msgstr "" +msgstr "Använt minne" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:290 msgid "Model" @@ -284,31 +285,31 @@ msgstr "Modell" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:119 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:231 msgid "No RX signal" -msgstr "" +msgstr "Ingen mottagningssignal" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:40 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:53 msgid "No active leases" -msgstr "" +msgstr "Inga aktiva tilldelningar" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/history.js:52 msgid "No data received" -msgstr "" +msgstr "Inga data mottogs" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:88 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:113 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:180 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:244 msgid "No wireless clients connected" -msgstr "" +msgstr "Inga trådlösa klienter är anslutna" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:219 msgid "Noise floor" -msgstr "" +msgstr "Brusgolv" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:74 msgid "Not configured or no address acquired" -msgstr "" +msgstr "Inte konfigurerad eller ingen adress har erhållits" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:72 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:104 @@ -326,7 +327,7 @@ msgstr "Protokoll" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:47 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:202 msgid "Resources" -msgstr "" +msgstr "Resurser" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:217 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:316 @@ -336,11 +337,11 @@ msgstr "SSID" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/layout.js:61 msgid "Save & Apply" -msgstr "" +msgstr "Spara och tillämpa" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:219 msgid "Signal" -msgstr "" +msgstr "Signal" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:35 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:96 @@ -350,11 +351,11 @@ msgstr "Signalstyrka" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/layout.js:11 msgid "Status cards" -msgstr "" +msgstr "Statuskort" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:180 msgid "Swap used" -msgstr "" +msgstr "Använt växlingsutrymme" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:24 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:317 @@ -365,13 +366,16 @@ msgstr "System" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:130 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:137 msgid "System load" -msgstr "" +msgstr "Systembelastning" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/layout.js:18 msgid "" "The lists follow the page from top to bottom. What is in a list is shown, in " "that order: drag an entry to move it. An empty list shows the defaults." msgstr "" +"Listorna följer sidan uppifrån och ned. I en lista visas innehållet i den " +"här ordningen: dra ett objekt för att flytta det. En tom lista visar " +"standardvärdena." #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:54 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:245 @@ -401,11 +405,11 @@ msgstr "Drifttid" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/15_traffic.js:10 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/15_traffic.js:13 msgid "WAN traffic" -msgstr "" +msgstr "Trafik på WAN" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:112 msgid "Weak" -msgstr "" +msgstr "Svag" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:28 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:37 @@ -415,31 +419,31 @@ msgstr "Trådlöst" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:36 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:159 msgid "Wireless client data usage" -msgstr "" +msgstr "Trådlösa klienters dataanvändning" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:34 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:84 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:87 msgid "Wireless client distribution" -msgstr "" +msgstr "Fördelning av trådlösa klienter" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:33 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:70 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:288 msgid "Wireless clients" -msgstr "" +msgstr "Trådlösa klienter" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/charts.js:25 msgid "bit/s" -msgstr "" +msgstr "bit/s" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:85 msgid "by SSID" -msgstr "" +msgstr "per SSID" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:87 msgid "clients" -msgstr "" +msgstr "klienter" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:97 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:111 @@ -449,15 +453,15 @@ msgstr "" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:231 #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:234 msgid "dBm" -msgstr "" +msgstr "dBm" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:89 msgid "load %.2f" -msgstr "" +msgstr "belastning %.2f" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/charts.js:278 msgid "now" -msgstr "" +msgstr "nu" #~ msgid "Strength" #~ msgstr "Styrka" diff --git a/luci-mod-dashboard/po/zh_Hans/dashboard.po b/luci-mod-dashboard/po/zh_Hans/dashboard.po index cdebcac6b..734950404 100644 --- a/luci-mod-dashboard/po/zh_Hans/dashboard.po +++ b/luci-mod-dashboard/po/zh_Hans/dashboard.po @@ -1,15 +1,14 @@ msgid "" msgstr "" -"PO-Revision-Date: 2026-09-28 18:23+0000\n" -"Last-Translator: Hosted Weblate user 54392 " -"\n" +"PO-Revision-Date: 2026-10-31 07:19+0000\n" +"Last-Translator: gw826943555 \n" "Language-Team: Chinese (Simplified Han script) \n" "Language: zh_Hans\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 2026.10.dev0\n" +"X-Generator: Weblate 2026.11.dev0\n" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:97 msgid "%d clients" @@ -453,11 +452,11 @@ msgstr "dBm" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/12_resources.js:89 msgid "load %.2f" -msgstr "加载 %.2f" +msgstr "负载 %.2f" #: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/lib/charts.js:278 msgid "now" -msgstr "立即" +msgstr "现在" #~ msgid "Strength" #~ msgstr "强度" diff --git a/luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json b/luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json index db827b3c7..447c7be13 100644 --- a/luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json +++ b/luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json @@ -18,6 +18,7 @@ "file": [ "list", "read" ], "luci": [ "getUnixtime" ], "luci.dashboard": [ "history" ], + "luci.dashboard.temperature": [ "read" ], "system": [ "board", "info" ] }, "uci": [ "dashboard" ] diff --git a/luci-mod-dashboard/root/usr/share/rpcd/ucode/luci.dashboard b/luci-mod-dashboard/root/usr/share/rpcd/ucode/luci.dashboard index e8b3131b0..928b0ae4e 100644 --- a/luci-mod-dashboard/root/usr/share/rpcd/ucode/luci.dashboard +++ b/luci-mod-dashboard/root/usr/share/rpcd/ucode/luci.dashboard @@ -3,15 +3,16 @@ import { readfile } from 'fs'; import * as uloop from 'uloop'; import { connect } from 'ubus'; +import { start as start_temperature } from 'luci.dashboard.temperature'; const STEP = 5000, SLOTS = 60; -let ring = [], seq = 0, timer, selectedDevice; +let ring = [], seq = 0, timer; const bus = connect(); // Observe one main-table default-route device. Prefer IPv4, then route metric; -// keep the existing device on equal priority to avoid polling-order switches. -function sources(interfaces, previous) { +// break ties by device name so the result does not depend on dump order. +function select_wan_device(interfaces) { let best = null; for (let iface in interfaces) { if (!iface.up) @@ -34,25 +35,15 @@ function sources(interfaces, previous) { continue; const metric = +(route.metric ?? iface.metric ?? 0); if (!best || family < best.family || - (family == best.family && (metric < best.metric || - (metric == best.metric && (name == previous || - (best.device != previous && name < best.device)))))) + (family == best.family && metric < best.metric) || + (family == best.family && metric == best.metric && name < best.device)) best = { device: name, family, metric }; } } // Use the configured carrier (including a VLAN) without walking to its // physical parent, which may also carry LAN or IPTV traffic. - return best ? [ best.device ] : []; -} - -function traffic_boundary() { - const dump = bus.call('network.interface', 'dump'); - if (type(dump?.interface) != 'array') - return null; - const devices = sources(dump.interface, selectedDevice); - selectedDevice = devices[0]; - return { devices }; + return best ? best.device : null; } function now() { @@ -68,9 +59,15 @@ const id = trim(readfile('/proc/sys/kernel/random/uuid')); // over the time between two samples on the clock they were read by. function sample() { const cpus = {}, net = {}; - let boundary = null; - try { boundary = traffic_boundary(); } - catch (e) { warn(`luci.dashboard: traffic discovery: ${e}\n`); } + let device = null; + try { + const dump = bus.call('network.interface', 'dump'); + if (type(dump?.interface) == 'array') + device = select_wan_device(dump.interface); + } + catch (e) { + warn(`luci.dashboard: traffic discovery: ${e}\n`); + } for (let line in split(readfile('/proc/stat') ?? '', '\n')) { if (substr(line, 0, 3) != 'cpu') @@ -85,24 +82,23 @@ function sample() { // Only the selected WAN consumes network history. Check its identity // on both sides of the counter read to detect device recreation. - const name = boundary?.devices?.[0]; - const before = name ? int(readfile(`/sys/class/net/${name}/ifindex`)) : null; + const before = device ? int(readfile(`/sys/class/net/${device}/ifindex`)) : null; const t = now(); - if (name) { + if (device) { for (let line in slice(split(readfile('/proc/net/dev') ?? '', '\n'), 2)) { const fields = split(trim(line), /[: ]+/); - if (length(fields) <= 9 || fields[0] != name) + if (length(fields) <= 9 || fields[0] != device) continue; - const after = int(readfile(`/sys/class/net/${name}/ifindex`)); - net[name] = [ +fields[1], +fields[9], + const after = int(readfile(`/sys/class/net/${device}/ifindex`)); + net[device] = [ +fields[1], +fields[9], after > 0 && after == before ? after : null ]; break; } } - push(ring, [ ++seq, t, cpus, mem ? +mem[1] * 1024 : null, net, boundary ]); + push(ring, [ ++seq, t, cpus, mem ? +mem[1] * 1024 : null, net, device ]); while (length(ring) > SLOTS) shift(ring); @@ -140,4 +136,7 @@ const methods = { } }; -return { 'luci.dashboard': methods }; +return { + 'luci.dashboard': methods, + 'luci.dashboard.temperature': start_temperature() +}; diff --git a/luci-mod-dashboard/root/usr/share/ucode/luci/dashboard/temperature.uc b/luci-mod-dashboard/root/usr/share/ucode/luci/dashboard/temperature.uc new file mode 100644 index 000000000..d397d9463 --- /dev/null +++ b/luci-mod-dashboard/root/usr/share/ucode/luci/dashboard/temperature.uc @@ -0,0 +1,300 @@ +'use strict'; + +import { glob, readfile, realpath, stat } from 'fs'; +import * as uloop from 'uloop'; + +// Mark labels for LuCI's i18n scanner; translation happens in the browser. +function _(message) { return message; } + +// The single registry for component IDs, display labels and recognition. +// Each rule is [pattern, optional CPU priority]. Lower priorities win, without +// considering the current temperature or whether the latest read succeeded. +const COMPONENTS = { + cpu: { + label: _('CPU'), + names: [ + [/^cpu[0-9]*-thermal$/, 3], [/^cpu-die-thermal$/, 4], [/^cpu-top-thermal$/, 5], + [/^(cpuss[0-9]+|cluster)-thermal$/, 6], [/^(bigcore[0-9]+|littlecore)-thermal$/, 7] + ], + drivers: [[/^(coretemp|k10temp|k8temp)$/, 2]], + channels: [[/^(package\s+id\s+[0-9]+|tdie)$/, 0], [/^tctl$/, 1]] + }, + soc: { label: _('SoC'), names: [[/^(soc|package)-thermal$/]] }, + wifi: { + label: _('Wi-Fi'), + names: [[/^(wcss(-phy[ab][0-9]*)?|wifi[0-9]*)-thermal$/], [/^iwlwifi-[0-9]+$/]], + drivers: [[/^ath(10|11)k-hwmon$/]], devices: [[/\/ieee80211\//]] + }, + nss: { label: _('NSS'), names: [[/^nss([0-9]+|-top)?-thermal$/]] }, + modem: { label: _('Modem'), names: [[/^modem[0-9]*(-thermal)?$/]] }, + lpass: { label: _('LPASS'), names: [[/^lpass-thermal$/]] }, + ddr: { label: _('DDR'), names: [[/^ddr(ss(-top)?)?-thermal$/]] }, + ethernet: { + label: _('Ethernet'), + names: [[/^(gephy|ethphy|aqr-lan|aqr-wan|mxl)-thermal$/]], + devices: [[/\/mdio_bus\//]] + }, + storage: { label: _('Storage'), names: [[/^hdd-thermal$/]], drivers: [[/^(nvme|drivetemp)$/]] }, + gpu: { label: _('GPU'), names: [[/^gpu-thermal$/]] }, + npu: { label: _('NPU'), names: [[/^npu-thermal$/]] }, + ve: { label: _('VE'), names: [[/^ve-thermal$/]] }, + gbe: { label: _('GbE'), names: [[/^gbe-thermal$/]] }, + // A bare PHY name does not distinguish Ethernet from other PHY types. + phy: { label: _('PHY'), names: [[/^(cp[0-9]+-)?phy[0-9]+-thermal$/]] }, + chassis: { label: _('Chassis'), names: [[/^chassis[0-9]*-thermal$/]] }, + system: { label: _('System'), names: [[/^sys-thermal$/]] }, + switch: { label: _('Switch'), names: [[/^switch-thermal$/]] }, + // Preserve these identifiers rather than guessing CPU, radio or port roles. + ubi: { label: _('UBI'), names: [[/^ubi-[0-9]+-thermal$/]] }, + ubi32: { label: _('UBI32'), names: [[/^ubi32-thermal$/]] }, + rfa: { label: _('RFA'), names: [[/^rfa-[0-9]+-thermal$/]] }, + topglue: { label: _('Top Glue'), names: [[/^top-glue-thermal$/]] }, + misc: { label: _('Misc'), names: [[/^misc-thermal$/]] }, + center: { label: _('Center'), names: [[/^center-thermal$/]] }, + serdes: { label: _('SerDes'), names: [[/^serdes-thermal$/]] }, + fman: { label: _('FMan'), names: [[/^fman-thermal$/]] }, + sec: { label: _('SEC'), names: [[/^sec-thermal$/]] }, + other: { label: _('Sensor') } +}; + +export const labels = {}; +for (let id, component in COMPONENTS) + labels[id] = component.label; + +function normalized(name) { + return replace(lc(trim(name ?? '')), /_/g, '-'); +} + +function matchRules(value, rules, category) { + for (let rule in rules ?? []) + if (match(value, rule[0])) + return { category, priority: rule[1] }; + return null; +} + +function lookup(value, field) { + for (let id, component in COMPONENTS) { + const found = matchRules(value, component[field], id); + if (found) + return found; + } + return null; +} + +function classify(name, device, label) { + name = normalized(name); + label = normalized(label); + const named = lookup(label, 'names') ?? lookup(name, 'names'); + if (named) + return named; + const attached = lookup(device ?? '', 'devices'); + if (attached) + return attached; + const driver = lookup(name, 'drivers'); + if (driver) + return matchRules(label, COMPONENTS[driver.category].channels, driver.category) ?? driver; + return { category: 'other', priority: null }; +}; + +const LIMIT = 64; + +function text(path) { + const value = readfile(path, 256); + return value == null ? null : trim(value); +} + +// Discovery is separate from sampling. No caller-provided paths enter the RPC. +export function discover(root) { + const sensors = [], covered = {}; + let available = false; + for (let base in [ `${root}/class/hwmon`, `${root}/class/thermal` ]) + available ||= stat(base)?.type == 'directory'; + if (!available) + return null; + + for (let dir in sort(glob(`${root}/class/hwmon/hwmon*`) ?? [])) { + const name = text(`${dir}/name`) || 'hwmon'; + const device = realpath(`${dir}/device`) || realpath(dir) || dir; + let found = false; + for (let path in sort(glob(`${dir}/temp*_input`) ?? [])) { + const channel = match(path, /\/(temp[0-9]+)_input$/)?.[1]; + if (!channel || length(sensors) >= LIMIT) + continue; + const label = text(`${dir}/${channel}_label`); + push(sensors, { + id: `${device}/${channel}`, path, ...classify(name, device, label), + label: label ? `${name} / ${label}` : `${name} / ${channel}` + }); + found = true; + } + if (found) + covered[device] = true; + } + + for (let dir in sort(glob(`${root}/class/thermal/thermal_zone*`) ?? [])) { + const device = realpath(dir) || dir; + if (covered[device] || length(sensors) >= LIMIT || !stat(`${dir}/temp`)) + continue; + const name = text(`${dir}/type`) || 'thermal'; + push(sensors, { + id: `${device}/temp`, path: `${dir}/temp`, + label: name, ...classify(name, device) + }); + } + return sensors; +}; + +export function sample(sources) { + const sensors = []; + let valid = 0; + for (let source in sources) { + const raw = text(source.path); + const value = raw != null && match(raw, /^-?[0-9]+$/) ? +raw / 1000.0 : null; + if (value != null) + valid++; + push(sensors, { id: source.id, category: source.category, priority: source.priority, label: source.label, celsius: value }); + } + return { + status: !length(sources) ? 'unsupported' : valid == length(sources) ? 'ok' : valid ? 'partial' : 'error', + sensors + }; +}; + +// Start sampling when the dashboard RPC service registers its methods. +export function start() { + const STEP = 10000, SLOTS = 30, DISCOVERY = 60000, TIMEOUT = 1000; + const instance = trim(readfile('/proc/sys/kernel/random/uuid')); + let sources, discovered = 0, cached, sampled = 0, retry = 0, failures = 0; + let worker, deadline, timer, generation = 0; + let ring = [], columns = [], seq = 0, schema = 0; + + function now() { + const t = clock(true); + return t[0] * 1000 + int(t[1] / 1000000); + } + + function prune(t) { + while (length(ring) && (length(ring) > SLOTS || ring[0][1] < t - STEP * SLOTS)) + shift(ring); + } + + // Store only timestamps and numeric columns, never repeated sensor names or + // paths. Keep surviving channels' history when discovery reorders the sources. + function record(t) { + const next = map(cached.sensors, sensor => sensor.id); + let changed = length(next) != length(columns); + for (let i = 0; !changed && i < length(next); i++) + changed = next[i] != columns[i]; + if (changed) { + const previous = {}; + for (let i = 0; i < length(columns); i++) + previous[columns[i]] = i; + const indices = map(next, id => previous[id]); + for (let entry in ring) + entry[2] = map(indices, i => i == null ? null : entry[2][i]); + columns = next; + schema++; + } + + if (length(columns)) + push(ring, [ ++seq, t, map(cached.sensors, sensor => sensor.celsius) ]); + else + ring = []; + prune(t); + } + + function schedule() { + timer.set(max(cached?.status == 'unsupported' ? DISCOVERY : STEP, retry - now())); + } + + function failed() { + failures = min(failures + 1, 5); + retry = now() + min(300000, 30000 * (2 ** (failures - 1))); + cached = { status: 'error', sensors: map(sources ?? [], s => ({ id: s.id, category: s.category, + priority: s.priority, label: s.label, celsius: null })) }; + sampled = 0; + discovered = 0; + record(now()); + schedule(); + } + + // One bounded asynchronous read every ten seconds, independent of page visits. + // Slow drivers cannot block rpcd or create overlapping collection workers. + function collect() { + const t = now(); + if (worker && worker.finished()) + worker = null; + if (worker || t < retry) { + prune(t); + schedule(); + return; + } + + const token = ++generation; + const refresh = sources == null || !discovered || t - discovered >= DISCOVERY; + try { + // Older ucode only closes the task's output pipe when an input + // callback exists. Keep that cleanup path active even though this + // worker never requests input (ucode b885dd0f, uc_uloop_task_clear). + worker = uloop.task(() => { + const list = refresh ? discover('/sys') : sources; + return list == null ? null : { sources: list, result: sample(list) }; + }, data => { + if (token != generation) + return; + deadline.cancel(); + if (data == null) { + failed(); + return; + } + sources = data.sources; + cached = data.result; + sampled = now(); + if (refresh) + discovered = sampled; + // Keep healthy channels current when just one sensor is unavailable. + if (cached.status == 'error') { + failures = min(failures + 1, 5); + retry = sampled + min(300000, 30000 * (2 ** (failures - 1))); + discovered = 0; + } + else { + failures = 0; + retry = 0; + } + record(sampled); + schedule(); + }, () => null); + if (!worker) { + failed(); + return; + } + deadline = uloop.timer(TIMEOUT, () => { + generation++; + worker.kill(); + failed(); + }); + } + catch (e) { failed(); } + } + + timer = uloop.timer(0, collect); + + return { + read: { + args: { since: 0, id: 'id' }, + call: function(request) { + const t = now(), id = instance + '.' + schema; + const since = request.args?.id == id ? +(request.args?.since ?? 0) : 0; + prune(t); + return { + components: labels, + status: cached?.status ?? 'error', sensors: cached?.sensors ?? [], + id, age_ms: sampled ? t - sampled : null, + now: t, step: STEP, slots: SLOTS, + samples: filter(ring, entry => entry[0] > since) + }; + } + } + }; +}; diff --git a/luci-theme-footstrap/Makefile b/luci-theme-footstrap/Makefile index 691226701..d34e3dc95 100644 --- a/luci-theme-footstrap/Makefile +++ b/luci-theme-footstrap/Makefile @@ -21,6 +21,7 @@ LUCI_DESCRIPTION:=A standalone LuCI theme with a collapsible sidebar or top bar, # framework and every page it draws is drawn by luci-base's own view JS. LUCI_DEPENDS:=+luci-base LUCI_PKGARCH:=all +PKG_PROVIDES:=luci-theme-openwrt-2020 # csstidy is old enough to mangle :has() and color-mix(), both of which this sheet uses heavily — # it silently drops the declarations and the layout goes with them. The stylesheet is already diff --git a/luci-theme-footstrap/po/es/footstrap.po b/luci-theme-footstrap/po/es/footstrap.po index 3c8db325c..f6aeb1af7 100644 --- a/luci-theme-footstrap/po/es/footstrap.po +++ b/luci-theme-footstrap/po/es/footstrap.po @@ -11,12 +11,12 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 3.9\n" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:422 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:413 msgctxt "footstrap" msgid "Accent" msgstr "Acento" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:502 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:493 msgctxt "footstrap" msgid "As in file" msgstr "Como en el archivo" @@ -25,50 +25,50 @@ msgstr "Como en el archivo" msgid "Authorization Required" msgstr "Se requiere autorización" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:342 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:335 msgctxt "footstrap" msgid "Auto" msgstr "Auto" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:386 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:379 msgctxt "footstrap" msgid "Auto-collapse" msgstr "Colapso automático" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:835 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:826 msgctxt "footstrap" msgid "Background" msgstr "Fondo" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:189 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:179 msgctxt "footstrap" msgid "Barely visible %s" msgstr "Apenas visible %s" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:445 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:436 msgctxt "footstrap" msgid "Borders" msgstr "Bordes" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/menu-footstrap-common.js:192 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/menu-footstrap-common.js:167 msgid "Buffered" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/menu-footstrap-common.js:192 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/menu-footstrap-common.js:167 msgid "Cached" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:442 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:433 msgctxt "footstrap" msgid "Cards" msgstr "Tarjetas" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:475 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:466 msgctxt "footstrap" msgid "Choose SVG" msgstr "Elegir SVG" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:468 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:459 msgctxt "footstrap" msgid "Choose image" msgstr "Elegir imagen" @@ -80,43 +80,43 @@ msgid "" "reference(s)." msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:188 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:178 msgctxt "footstrap" msgid "Clearly visible %s" msgstr "Bien visible %s" #: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-chrome.js:470 -#: themes/luci-theme-footstrap/ucode/template/themes/footstrap/header.ut:142 +#: themes/luci-theme-footstrap/ucode/template/themes/footstrap/header.ut:167 msgid "Collapse menu" msgstr "Contraer menú" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:486 -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:832 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:477 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:823 msgctxt "footstrap" msgid "Colours" msgstr "Colores" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:361 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:354 msgctxt "footstrap" msgid "Compact" msgstr "Compacto" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:676 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:667 msgctxt "footstrap" msgid "Confirm reset" msgstr "Confirmar restablecimiento" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:372 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:365 msgctxt "footstrap" msgid "Content width" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:197 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:187 msgctxt "footstrap" msgid "Contrast %s:1 (WCAG AA wants %s:1 here)" msgstr "Contraste %s:1 (WCAG AA exige aquí %s:1)" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:443 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:434 msgctxt "footstrap" msgid "Controls" msgstr "Controles" @@ -126,34 +126,34 @@ msgctxt "footstrap" msgid "Could not process the image." msgstr "No se pudo procesar la imagen." -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:655 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:646 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." -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:425 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:416 msgctxt "footstrap" msgid "Danger" msgstr "Peligro" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:344 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:337 msgctxt "footstrap" msgid "Dark" msgstr "Oscuro" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:360 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:353 msgctxt "footstrap" msgid "Density" msgstr "Densidad" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:483 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:474 msgctxt "footstrap" msgid "Dim" msgstr "Oscurecimiento" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:191 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:181 msgctxt "footstrap" msgid "Easy to read %s" msgstr "Se lee bien %s" @@ -162,8 +162,8 @@ msgstr "Se lee bien %s" msgid "Expand menu" msgstr "Expandir menú" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:507 -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:585 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:498 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:576 msgctxt "footstrap" msgid "File" msgstr "Archivo" @@ -172,7 +172,7 @@ msgstr "Archivo" msgid "Footstrap" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:824 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:815 msgctxt "footstrap" msgid "" "Footstrap theme settings apply at once and are stored permanently in this " @@ -193,17 +193,17 @@ msgstr "Ir a la actualización del firmware..." msgid "Go to password configuration..." msgstr "Ir a la configuración de contraseñas..." -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:423 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:414 msgctxt "footstrap" msgid "Good" msgstr "Correcto" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:193 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:183 msgctxt "footstrap" msgid "Hard to read %s — large text only" msgstr "Se lee mal %s: solo texto grande" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:831 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:822 msgctxt "footstrap" msgid "Interface" msgstr "Interfaz" @@ -216,23 +216,23 @@ msgstr "¡Nombre de usuario y/o contraseña incorrectos! Inténtelo de nuevo." msgid "JavaScript required!" msgstr "¡Se requiere JavaScript!" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:385 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:378 msgctxt "footstrap" msgid "Keep open" msgstr "Mantener abierto" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:363 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:356 msgctxt "footstrap" msgid "Large" msgstr "Grande" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:336 -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:750 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:329 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:741 msgctxt "footstrap" msgid "Layout" msgstr "Diseño" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:343 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:336 msgctxt "footstrap" msgid "Light" msgstr "Claro" @@ -246,16 +246,16 @@ msgstr "Iniciar sesión" msgid "Log out" msgstr "Cerrar sesión" -#: themes/luci-theme-footstrap/ucode/template/themes/footstrap/partials/footer.ut:25 +#: themes/luci-theme-footstrap/ucode/template/themes/footstrap/footer.ut:25 msgid "Lua compatibility mode active" msgstr "Modo de compatibilidad Lua activo" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-overview.js:23 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-overview.js:24 msgid "Memory" msgstr "Memoria" -#: themes/luci-theme-footstrap/ucode/template/themes/footstrap/header.ut:139 -#: themes/luci-theme-footstrap/ucode/template/themes/footstrap/header.ut:150 +#: themes/luci-theme-footstrap/ucode/template/themes/footstrap/header.ut:164 +#: themes/luci-theme-footstrap/ucode/template/themes/footstrap/header.ut:175 msgid "Menu" msgstr "Menú" @@ -268,7 +268,7 @@ msgstr "" "reiniciar el sistema. Este modo solo debe usarse para instalar una " "actualización de firmware" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:330 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:270 msgctxt "footstrap" msgid "No pages found" msgstr "No se encontraron páginas" @@ -277,23 +277,23 @@ msgstr "No se encontraron páginas" msgid "No password set!" msgstr "¡No se ha establecido ninguna contraseña!" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:362 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:355 msgctxt "footstrap" msgid "Normal" msgstr "Normal" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:583 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:574 msgctxt "footstrap" msgid "Off" msgstr "Apagado" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:241 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:189 msgctxt "footstrap" msgid "Pages" msgstr "Páginas" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:155 -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:347 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:149 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:340 msgctxt "footstrap" msgid "Palette" msgstr "Paleta" @@ -302,8 +302,8 @@ msgstr "Paleta" msgid "Password" msgstr "Contraseña" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:493 -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:584 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:484 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:575 msgctxt "footstrap" msgid "Pattern" msgstr "Patrón" @@ -313,7 +313,7 @@ msgctxt "footstrap" msgid "Please choose an SVG file." msgstr "Elija un archivo SVG." -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:541 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:495 msgctxt "footstrap" msgid "Please choose an image file." msgstr "Por favor, seleccione un archivo de imagen." @@ -322,71 +322,71 @@ msgstr "Por favor, seleccione un archivo de imagen." msgid "Please enter your username and password." msgstr "Por favor, ingrese su nombre de usuario y contraseña." -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:329 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:269 msgctxt "footstrap" msgid "Recently visited" msgstr "Visitado recientemente" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:470 -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:477 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:461 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:468 msgctxt "footstrap" msgid "Remove" msgstr "Eliminar" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:619 -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:686 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:610 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:677 msgctxt "footstrap" msgid "Reset to built-in" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:714 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:705 msgctxt "footstrap" msgid "Reset to built-in — go back to the look the theme ships with." msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:604 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:595 msgctxt "footstrap" msgid "Reset to router" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:712 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:703 msgctxt "footstrap" msgid "Reset to router — drop this browser's changes and follow the router." msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:376 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:369 msgctxt "footstrap" msgid "Rounding" msgstr "Redondeo" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:602 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:593 msgctxt "footstrap" msgid "Save to router" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:710 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:701 msgctxt "footstrap" msgid "" "Save to router — store this look on the router. Browsers with a look of " "their own keep it." msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:720 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:711 msgctxt "footstrap" msgid "Saved look" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:644 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:635 msgctxt "footstrap" msgid "Saved to router" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:836 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:827 msgctxt "footstrap" msgid "Saving" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:484 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:475 msgctxt "footstrap" msgid "Scale" msgstr "Escala" @@ -396,60 +396,60 @@ msgstr "Escala" msgid "Search" msgstr "Buscar" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:235 -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:261 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:183 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:209 msgctxt "footstrap" msgid "Search pages" msgstr "Buscar páginas" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:236 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:184 msgctxt "footstrap" msgid "Search pages…" msgstr "Buscar páginas…" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:337 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:330 msgctxt "footstrap" msgid "Sidebar" msgstr "Barra lateral" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:444 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:435 msgctxt "footstrap" msgid "Sidebar and bar" msgstr "Barra lateral y superior" -#: themes/luci-theme-footstrap/ucode/template/themes/footstrap/header.ut:119 +#: themes/luci-theme-footstrap/ucode/template/themes/footstrap/header.ut:144 msgid "Skip to content" msgstr "Saltar al contenido" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:330 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:270 msgctxt "footstrap" msgid "Start typing to find a page" msgstr "Empiece a escribir para encontrar una página" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-overview.js:23 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-overview.js:24 msgid "Storage" msgstr "Almacenamiento" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:485 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:476 msgctxt "footstrap" msgid "Strength" msgstr "Intensidad" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:383 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:376 msgctxt "footstrap" msgid "Submenus" msgstr "Submenús" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:833 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:824 msgctxt "footstrap" msgid "Surfaces" msgstr "Superficies" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/menu-footstrap-common.js:191 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/menu-footstrap-common.js:166 msgid "Swap free" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-overview.js:23 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-overview.js:24 msgid "System" msgstr "Sistema" @@ -457,7 +457,7 @@ msgstr "Sistema" msgid "System running in recovery (initramfs) mode." msgstr "El sistema se está ejecutando en modo de recuperación (initramfs)." -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-select.js:722 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-select.js:715 msgid "Table" msgstr "Tabla" @@ -466,12 +466,12 @@ msgctxt "footstrap" msgid "That SVG had nothing left once the unsafe parts were removed." msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:346 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:472 msgctxt "footstrap" msgid "That file could not be read." msgstr "No se ha podido leer el archivo." -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:426 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:377 msgctxt "footstrap" msgid "That file is not a readable image." msgstr "Ese archivo no es una imagen legible." @@ -481,23 +481,23 @@ msgctxt "footstrap" msgid "That file is not an SVG image." msgstr "Ese archivo no es una imagen SVG." -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:518 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:469 msgctxt "footstrap" msgid "That file is too large." msgstr "Ese archivo es demasiado grande." -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:543 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:497 msgctxt "footstrap" msgid "That image is too large." msgstr "Esa imagen es demasiado grande." -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:380 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:331 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)." -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:341 -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:501 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:334 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:492 msgctxt "footstrap" msgid "Theme" msgstr "Tema" @@ -510,7 +510,7 @@ msgstr "" "Este enrutador no tiene contraseña. Configure una contraseña de " "administrador para proteger la interfaz web." -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:638 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:629 msgctxt "footstrap" msgid "" "This browser is not storing preferences (site data is blocked), so a change " @@ -521,32 +521,32 @@ msgstr "" "bloqueados), así que un cambio aquí dura hasta que recargues. Guardar como " "predeterminado sigue funcionando y se aplica a todos los navegadores." -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:752 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:743 msgctxt "footstrap" msgid "This theme is not translated on this router yet." msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:395 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:388 msgctxt "footstrap" msgid "Tint (router identification)" msgstr "Tinte (identificación del enrutador)" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:408 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:399 msgctxt "footstrap" msgid "Tint strength" msgstr "Intensidad del tinte" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:194 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:184 msgctxt "footstrap" msgid "Too faint to read %s" msgstr "Demasiado tenue para leerse %s" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:338 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:331 msgctxt "footstrap" msgid "Top" msgstr "Arriba" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/menu-footstrap-common.js:191 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/menu-footstrap-common.js:166 msgid "Total Available" msgstr "" @@ -555,7 +555,7 @@ msgctxt "footstrap" msgid "Upload failed." msgstr "Error al cargar el archivo." -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:552 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:543 msgctxt "footstrap" msgid "Uploading…" msgstr "Cargando…" @@ -564,12 +564,12 @@ msgstr "Cargando…" msgid "Username" msgstr "Nombre de usuario" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:581 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:572 msgctxt "footstrap" msgid "Wallpaper" msgstr "Fondo de pantalla" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:424 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:415 msgctxt "footstrap" msgid "Warning" msgstr "Advertencia" @@ -580,27 +580,27 @@ msgid "" msgstr "" "Debe activar JavaScript en su navegador o LuCI no funcionará correctamente." -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:444 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:435 msgctxt "footstrap" msgid "in the sidebar" msgstr "en la barra lateral" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:270 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:262 msgctxt "footstrap" msgid "on a card" msgstr "en una tarjeta" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:443 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:434 msgctxt "footstrap" msgid "on a control" msgstr "en un control" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:400 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:391 msgctxt "footstrap" msgid "on the canvas" msgstr "en el lienzo" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:442 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:393 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 0d91078dd..ab3edaa06 100644 --- a/luci-theme-footstrap/po/ru/footstrap.po +++ b/luci-theme-footstrap/po/ru/footstrap.po @@ -7,12 +7,12 @@ 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" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:422 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:413 msgctxt "footstrap" msgid "Accent" msgstr "Акцент" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:502 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:493 msgctxt "footstrap" msgid "As in file" msgstr "Как в файле" @@ -21,50 +21,50 @@ msgstr "Как в файле" msgid "Authorization Required" msgstr "Требуется авторизация" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:342 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:335 msgctxt "footstrap" msgid "Auto" msgstr "Авто" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:386 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:379 msgctxt "footstrap" msgid "Auto-collapse" msgstr "Сворачивать" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:835 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:826 msgctxt "footstrap" msgid "Background" msgstr "Фон" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:189 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:179 msgctxt "footstrap" msgid "Barely visible %s" msgstr "Едва заметна %s" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:445 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:436 msgctxt "footstrap" msgid "Borders" msgstr "Границы" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/menu-footstrap-common.js:192 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/menu-footstrap-common.js:167 msgid "Buffered" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/menu-footstrap-common.js:192 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/menu-footstrap-common.js:167 msgid "Cached" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:442 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:433 msgctxt "footstrap" msgid "Cards" msgstr "Карточки" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:475 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:466 msgctxt "footstrap" msgid "Choose SVG" msgstr "Выбрать SVG" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:468 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:459 msgctxt "footstrap" msgid "Choose image" msgstr "Выбрать изображение" @@ -76,43 +76,43 @@ msgid "" "reference(s)." msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:188 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:178 msgctxt "footstrap" msgid "Clearly visible %s" msgstr "Хорошо видна %s" #: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-chrome.js:470 -#: themes/luci-theme-footstrap/ucode/template/themes/footstrap/header.ut:142 +#: themes/luci-theme-footstrap/ucode/template/themes/footstrap/header.ut:167 msgid "Collapse menu" msgstr "Свернуть меню" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:486 -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:832 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:477 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:823 msgctxt "footstrap" msgid "Colours" msgstr "Цвета" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:361 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:354 msgctxt "footstrap" msgid "Compact" msgstr "Компактно" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:676 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:667 msgctxt "footstrap" msgid "Confirm reset" msgstr "Подтвердить сброс" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:372 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:365 msgctxt "footstrap" msgid "Content width" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:197 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:187 msgctxt "footstrap" msgid "Contrast %s:1 (WCAG AA wants %s:1 here)" msgstr "Контраст %s:1 (WCAG AA требует здесь %s:1)" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:443 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:434 msgctxt "footstrap" msgid "Controls" msgstr "Элементы форм" @@ -122,32 +122,32 @@ msgctxt "footstrap" msgid "Could not process the image." msgstr "Не удалось обработать изображение." -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:655 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:646 msgctxt "footstrap" msgid "Could not save the default. Reload the page and try again." msgstr "Не удалось сохранить умолчание. Обновите страницу и повторите." -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:425 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:416 msgctxt "footstrap" msgid "Danger" msgstr "Опасность" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:344 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:337 msgctxt "footstrap" msgid "Dark" msgstr "Тёмная" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:360 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:353 msgctxt "footstrap" msgid "Density" msgstr "Плотность" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:483 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:474 msgctxt "footstrap" msgid "Dim" msgstr "Затемнение" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:191 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:181 msgctxt "footstrap" msgid "Easy to read %s" msgstr "Хорошо читается %s" @@ -156,8 +156,8 @@ msgstr "Хорошо читается %s" msgid "Expand menu" msgstr "Развернуть меню" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:507 -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:585 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:498 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:576 msgctxt "footstrap" msgid "File" msgstr "Файл" @@ -166,7 +166,7 @@ msgstr "Файл" msgid "Footstrap" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:824 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:815 msgctxt "footstrap" msgid "" "Footstrap theme settings apply at once and are stored permanently in this " @@ -187,17 +187,17 @@ msgstr "Перейти к обновлению прошивки..." msgid "Go to password configuration..." msgstr "Перейти к настройке пароля..." -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:423 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:414 msgctxt "footstrap" msgid "Good" msgstr "Норма" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:193 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:183 msgctxt "footstrap" msgid "Hard to read %s — large text only" msgstr "Плохо читается %s — только крупный текст" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:831 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:822 msgctxt "footstrap" msgid "Interface" msgstr "Интерфейс" @@ -210,23 +210,23 @@ msgstr "Неверное имя пользователя и/или пароль! msgid "JavaScript required!" msgstr "Требуется JavaScript!" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:385 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:378 msgctxt "footstrap" msgid "Keep open" msgstr "Не сворачивать" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:363 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:356 msgctxt "footstrap" msgid "Large" msgstr "Крупно" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:336 -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:750 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:329 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:741 msgctxt "footstrap" msgid "Layout" msgstr "Раскладка" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:343 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:336 msgctxt "footstrap" msgid "Light" msgstr "Светлая" @@ -240,16 +240,16 @@ msgstr "Войти" msgid "Log out" msgstr "Выйти" -#: themes/luci-theme-footstrap/ucode/template/themes/footstrap/partials/footer.ut:25 +#: themes/luci-theme-footstrap/ucode/template/themes/footstrap/footer.ut:25 msgid "Lua compatibility mode active" msgstr "Включён режим совместимости с Lua" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-overview.js:23 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-overview.js:24 msgid "Memory" msgstr "Память" -#: themes/luci-theme-footstrap/ucode/template/themes/footstrap/header.ut:139 -#: themes/luci-theme-footstrap/ucode/template/themes/footstrap/header.ut:150 +#: themes/luci-theme-footstrap/ucode/template/themes/footstrap/header.ut:164 +#: themes/luci-theme-footstrap/ucode/template/themes/footstrap/header.ut:175 msgid "Menu" msgstr "Меню" @@ -261,7 +261,7 @@ msgstr "" "Изменения настроек не сохраняются и будут потеряны после перезагрузки. Этот " "режим следует использовать только для установки обновления прошивки" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:330 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:270 msgctxt "footstrap" msgid "No pages found" msgstr "Страницы не найдены" @@ -270,23 +270,23 @@ msgstr "Страницы не найдены" msgid "No password set!" msgstr "Пароль не установлен!" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:362 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:355 msgctxt "footstrap" msgid "Normal" msgstr "Обычно" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:583 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:574 msgctxt "footstrap" msgid "Off" msgstr "Выкл." -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:241 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:189 msgctxt "footstrap" msgid "Pages" msgstr "Страницы" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:155 -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:347 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:149 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:340 msgctxt "footstrap" msgid "Palette" msgstr "Палитра" @@ -295,8 +295,8 @@ msgstr "Палитра" msgid "Password" msgstr "Пароль" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:493 -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:584 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:484 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:575 msgctxt "footstrap" msgid "Pattern" msgstr "Узор" @@ -306,7 +306,7 @@ msgctxt "footstrap" msgid "Please choose an SVG file." msgstr "Выберите файл SVG." -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:541 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:495 msgctxt "footstrap" msgid "Please choose an image file." msgstr "Выберите файл изображения." @@ -315,71 +315,71 @@ msgstr "Выберите файл изображения." msgid "Please enter your username and password." msgstr "Введите имя пользователя и пароль." -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:329 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:269 msgctxt "footstrap" msgid "Recently visited" msgstr "Недавние" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:470 -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:477 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:461 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:468 msgctxt "footstrap" msgid "Remove" msgstr "Убрать" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:619 -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:686 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:610 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:677 msgctxt "footstrap" msgid "Reset to built-in" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:714 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:705 msgctxt "footstrap" msgid "Reset to built-in — go back to the look the theme ships with." msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:604 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:595 msgctxt "footstrap" msgid "Reset to router" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:712 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:703 msgctxt "footstrap" msgid "Reset to router — drop this browser's changes and follow the router." msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:376 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:369 msgctxt "footstrap" msgid "Rounding" msgstr "Скругление" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:602 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:593 msgctxt "footstrap" msgid "Save to router" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:710 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:701 msgctxt "footstrap" msgid "" "Save to router — store this look on the router. Browsers with a look of " "their own keep it." msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:720 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:711 msgctxt "footstrap" msgid "Saved look" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:644 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:635 msgctxt "footstrap" msgid "Saved to router" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:836 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:827 msgctxt "footstrap" msgid "Saving" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:484 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:475 msgctxt "footstrap" msgid "Scale" msgstr "Масштаб" @@ -389,60 +389,60 @@ msgstr "Масштаб" msgid "Search" msgstr "Поиск" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:235 -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:261 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:183 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:209 msgctxt "footstrap" msgid "Search pages" msgstr "Поиск по страницам" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:236 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:184 msgctxt "footstrap" msgid "Search pages…" msgstr "Поиск по страницам…" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:337 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:330 msgctxt "footstrap" msgid "Sidebar" msgstr "Сбоку" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:444 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:435 msgctxt "footstrap" msgid "Sidebar and bar" msgstr "Боковая панель и шапка" -#: themes/luci-theme-footstrap/ucode/template/themes/footstrap/header.ut:119 +#: themes/luci-theme-footstrap/ucode/template/themes/footstrap/header.ut:144 msgid "Skip to content" msgstr "Перейти к содержимому" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:330 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:270 msgctxt "footstrap" msgid "Start typing to find a page" msgstr "Начните вводить название страницы" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-overview.js:23 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-overview.js:24 msgid "Storage" msgstr "Накопитель" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:485 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:476 msgctxt "footstrap" msgid "Strength" msgstr "Насыщенность" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:383 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:376 msgctxt "footstrap" msgid "Submenus" msgstr "Подменю" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:833 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:824 msgctxt "footstrap" msgid "Surfaces" msgstr "Поверхности" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/menu-footstrap-common.js:191 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/menu-footstrap-common.js:166 msgid "Swap free" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-overview.js:23 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-overview.js:24 msgid "System" msgstr "Система" @@ -450,7 +450,7 @@ msgstr "Система" msgid "System running in recovery (initramfs) mode." msgstr "Система работает в режиме восстановления (initramfs)." -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-select.js:722 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-select.js:715 msgid "Table" msgstr "Таблица" @@ -459,12 +459,12 @@ msgctxt "footstrap" msgid "That SVG had nothing left once the unsafe parts were removed." msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:346 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:472 msgctxt "footstrap" msgid "That file could not be read." msgstr "Не удалось прочитать файл." -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:426 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:377 msgctxt "footstrap" msgid "That file is not a readable image." msgstr "Не удалось прочитать файл как изображение." @@ -474,23 +474,23 @@ msgctxt "footstrap" msgid "That file is not an SVG image." msgstr "Этот файл — не изображение SVG." -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:518 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:469 msgctxt "footstrap" msgid "That file is too large." msgstr "Файл слишком большой." -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:543 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:497 msgctxt "footstrap" msgid "That image is too large." msgstr "Изображение слишком большое." -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:380 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:331 msgctxt "footstrap" msgid "The router refused to delete the file (ubus status %d)." msgstr "Роутер отказался удалить файл (статус ubus %d)." -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:341 -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:501 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:334 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:492 msgctxt "footstrap" msgid "Theme" msgstr "Тема" @@ -503,7 +503,7 @@ msgstr "" "На этом роутере не задан пароль. Установите пароль root, чтобы защитить веб-" "интерфейс." -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:638 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:629 msgctxt "footstrap" msgid "" "This browser is not storing preferences (site data is blocked), so a change " @@ -514,32 +514,32 @@ msgstr "" "изменение здесь действует до перезагрузки страницы. «Сохранить как " "умолчание» по-прежнему работает и применяется ко всем браузерам." -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:752 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:743 msgctxt "footstrap" msgid "This theme is not translated on this router yet." msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:395 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:388 msgctxt "footstrap" msgid "Tint (router identification)" msgstr "Оттенок (опознание роутера)" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:408 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:399 msgctxt "footstrap" msgid "Tint strength" msgstr "Насыщенность оттенка" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:194 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:184 msgctxt "footstrap" msgid "Too faint to read %s" msgstr "Слишком блёкло, не читается %s" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:338 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:331 msgctxt "footstrap" msgid "Top" msgstr "Сверху" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/menu-footstrap-common.js:191 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/menu-footstrap-common.js:166 msgid "Total Available" msgstr "" @@ -548,7 +548,7 @@ msgctxt "footstrap" msgid "Upload failed." msgstr "Не удалось загрузить." -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:552 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:543 msgctxt "footstrap" msgid "Uploading…" msgstr "Загрузка…" @@ -557,12 +557,12 @@ msgstr "Загрузка…" msgid "Username" msgstr "Имя пользователя" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:581 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:572 msgctxt "footstrap" msgid "Wallpaper" msgstr "Обои" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:424 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:415 msgctxt "footstrap" msgid "Warning" msgstr "Предупреждение" @@ -573,27 +573,27 @@ msgid "" msgstr "" "Включите JavaScript в браузере, иначе LuCI не будет работать корректно." -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:444 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:435 msgctxt "footstrap" msgid "in the sidebar" msgstr "в боковой панели" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:270 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:262 msgctxt "footstrap" msgid "on a card" msgstr "на карточке" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:443 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:434 msgctxt "footstrap" msgid "on a control" msgstr "на элементе формы" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:400 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:391 msgctxt "footstrap" msgid "on the canvas" msgstr "на холсте" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:442 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:393 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 85259b6b4..c28677ef3 100644 --- a/luci-theme-footstrap/po/templates/footstrap.pot +++ b/luci-theme-footstrap/po/templates/footstrap.pot @@ -1,12 +1,12 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:422 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:413 msgctxt "footstrap" msgid "Accent" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:502 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:493 msgctxt "footstrap" msgid "As in file" msgstr "" @@ -15,50 +15,50 @@ msgstr "" msgid "Authorization Required" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:342 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:335 msgctxt "footstrap" msgid "Auto" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:386 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:379 msgctxt "footstrap" msgid "Auto-collapse" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:835 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:826 msgctxt "footstrap" msgid "Background" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:189 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:179 msgctxt "footstrap" msgid "Barely visible %s" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:445 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:436 msgctxt "footstrap" msgid "Borders" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/menu-footstrap-common.js:192 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/menu-footstrap-common.js:167 msgid "Buffered" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/menu-footstrap-common.js:192 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/menu-footstrap-common.js:167 msgid "Cached" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:442 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:433 msgctxt "footstrap" msgid "Cards" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:475 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:466 msgctxt "footstrap" msgid "Choose SVG" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:468 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:459 msgctxt "footstrap" msgid "Choose image" msgstr "" @@ -70,43 +70,43 @@ msgid "" "reference(s)." msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:188 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:178 msgctxt "footstrap" msgid "Clearly visible %s" msgstr "" #: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-chrome.js:470 -#: themes/luci-theme-footstrap/ucode/template/themes/footstrap/header.ut:142 +#: themes/luci-theme-footstrap/ucode/template/themes/footstrap/header.ut:167 msgid "Collapse menu" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:486 -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:832 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:477 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:823 msgctxt "footstrap" msgid "Colours" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:361 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:354 msgctxt "footstrap" msgid "Compact" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:676 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:667 msgctxt "footstrap" msgid "Confirm reset" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:372 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:365 msgctxt "footstrap" msgid "Content width" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:197 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:187 msgctxt "footstrap" msgid "Contrast %s:1 (WCAG AA wants %s:1 here)" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:443 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:434 msgctxt "footstrap" msgid "Controls" msgstr "" @@ -116,32 +116,32 @@ msgctxt "footstrap" msgid "Could not process the image." msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:655 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:646 msgctxt "footstrap" msgid "Could not save the default. Reload the page and try again." msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:425 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:416 msgctxt "footstrap" msgid "Danger" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:344 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:337 msgctxt "footstrap" msgid "Dark" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:360 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:353 msgctxt "footstrap" msgid "Density" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:483 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:474 msgctxt "footstrap" msgid "Dim" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:191 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:181 msgctxt "footstrap" msgid "Easy to read %s" msgstr "" @@ -150,8 +150,8 @@ msgstr "" msgid "Expand menu" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:507 -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:585 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:498 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:576 msgctxt "footstrap" msgid "File" msgstr "" @@ -160,7 +160,7 @@ msgstr "" msgid "Footstrap" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:824 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:815 msgctxt "footstrap" msgid "" "Footstrap theme settings apply at once and are stored permanently in this " @@ -181,17 +181,17 @@ msgstr "" msgid "Go to password configuration..." msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:423 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:414 msgctxt "footstrap" msgid "Good" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:193 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:183 msgctxt "footstrap" msgid "Hard to read %s — large text only" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:831 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:822 msgctxt "footstrap" msgid "Interface" msgstr "" @@ -204,23 +204,23 @@ msgstr "" msgid "JavaScript required!" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:385 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:378 msgctxt "footstrap" msgid "Keep open" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:363 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:356 msgctxt "footstrap" msgid "Large" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:336 -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:750 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:329 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:741 msgctxt "footstrap" msgid "Layout" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:343 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:336 msgctxt "footstrap" msgid "Light" msgstr "" @@ -234,16 +234,16 @@ msgstr "" msgid "Log out" msgstr "" -#: themes/luci-theme-footstrap/ucode/template/themes/footstrap/partials/footer.ut:25 +#: themes/luci-theme-footstrap/ucode/template/themes/footstrap/footer.ut:25 msgid "Lua compatibility mode active" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-overview.js:23 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-overview.js:24 msgid "Memory" msgstr "" -#: themes/luci-theme-footstrap/ucode/template/themes/footstrap/header.ut:139 -#: themes/luci-theme-footstrap/ucode/template/themes/footstrap/header.ut:150 +#: themes/luci-theme-footstrap/ucode/template/themes/footstrap/header.ut:164 +#: themes/luci-theme-footstrap/ucode/template/themes/footstrap/header.ut:175 msgid "Menu" msgstr "" @@ -253,7 +253,7 @@ msgid "" "mode should only be used to install a firmware upgrade" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:330 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:270 msgctxt "footstrap" msgid "No pages found" msgstr "" @@ -262,23 +262,23 @@ msgstr "" msgid "No password set!" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:362 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:355 msgctxt "footstrap" msgid "Normal" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:583 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:574 msgctxt "footstrap" msgid "Off" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:241 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:189 msgctxt "footstrap" msgid "Pages" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:155 -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:347 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:149 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:340 msgctxt "footstrap" msgid "Palette" msgstr "" @@ -287,8 +287,8 @@ msgstr "" msgid "Password" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:493 -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:584 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:484 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:575 msgctxt "footstrap" msgid "Pattern" msgstr "" @@ -298,7 +298,7 @@ msgctxt "footstrap" msgid "Please choose an SVG file." msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:541 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:495 msgctxt "footstrap" msgid "Please choose an image file." msgstr "" @@ -307,71 +307,71 @@ msgstr "" msgid "Please enter your username and password." msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:329 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:269 msgctxt "footstrap" msgid "Recently visited" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:470 -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:477 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:461 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:468 msgctxt "footstrap" msgid "Remove" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:619 -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:686 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:610 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:677 msgctxt "footstrap" msgid "Reset to built-in" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:714 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:705 msgctxt "footstrap" msgid "Reset to built-in — go back to the look the theme ships with." msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:604 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:595 msgctxt "footstrap" msgid "Reset to router" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:712 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:703 msgctxt "footstrap" msgid "Reset to router — drop this browser's changes and follow the router." msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:376 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:369 msgctxt "footstrap" msgid "Rounding" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:602 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:593 msgctxt "footstrap" msgid "Save to router" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:710 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:701 msgctxt "footstrap" msgid "" "Save to router — store this look on the router. Browsers with a look of " "their own keep it." msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:720 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:711 msgctxt "footstrap" msgid "Saved look" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:644 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:635 msgctxt "footstrap" msgid "Saved to router" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:836 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:827 msgctxt "footstrap" msgid "Saving" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:484 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:475 msgctxt "footstrap" msgid "Scale" msgstr "" @@ -381,60 +381,60 @@ msgstr "" msgid "Search" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:235 -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:261 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:183 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:209 msgctxt "footstrap" msgid "Search pages" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:236 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:184 msgctxt "footstrap" msgid "Search pages…" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:337 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:330 msgctxt "footstrap" msgid "Sidebar" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:444 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:435 msgctxt "footstrap" msgid "Sidebar and bar" msgstr "" -#: themes/luci-theme-footstrap/ucode/template/themes/footstrap/header.ut:119 +#: themes/luci-theme-footstrap/ucode/template/themes/footstrap/header.ut:144 msgid "Skip to content" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:330 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-search.js:270 msgctxt "footstrap" msgid "Start typing to find a page" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-overview.js:23 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-overview.js:24 msgid "Storage" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:485 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:476 msgctxt "footstrap" msgid "Strength" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:383 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:376 msgctxt "footstrap" msgid "Submenus" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:833 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:824 msgctxt "footstrap" msgid "Surfaces" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/menu-footstrap-common.js:191 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/menu-footstrap-common.js:166 msgid "Swap free" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-overview.js:23 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-overview.js:24 msgid "System" msgstr "" @@ -442,7 +442,7 @@ msgstr "" msgid "System running in recovery (initramfs) mode." msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-select.js:722 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-select.js:715 msgid "Table" msgstr "" @@ -451,12 +451,12 @@ msgctxt "footstrap" msgid "That SVG had nothing left once the unsafe parts were removed." msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:346 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:472 msgctxt "footstrap" msgid "That file could not be read." msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:426 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:377 msgctxt "footstrap" msgid "That file is not a readable image." msgstr "" @@ -466,23 +466,23 @@ msgctxt "footstrap" msgid "That file is not an SVG image." msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:518 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:469 msgctxt "footstrap" msgid "That file is too large." msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:543 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:497 msgctxt "footstrap" msgid "That image is too large." msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:380 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:331 msgctxt "footstrap" msgid "The router refused to delete the file (ubus status %d)." msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:341 -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:501 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:334 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:492 msgctxt "footstrap" msgid "Theme" msgstr "" @@ -493,7 +493,7 @@ msgid "" "protect the web interface." msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:638 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:629 msgctxt "footstrap" msgid "" "This browser is not storing preferences (site data is blocked), so a change " @@ -501,32 +501,32 @@ msgid "" "every browser." msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:752 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:743 msgctxt "footstrap" msgid "This theme is not translated on this router yet." msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:395 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:388 msgctxt "footstrap" msgid "Tint (router identification)" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:408 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:399 msgctxt "footstrap" msgid "Tint strength" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:194 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:184 msgctxt "footstrap" msgid "Too faint to read %s" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:338 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:331 msgctxt "footstrap" msgid "Top" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/menu-footstrap-common.js:191 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/menu-footstrap-common.js:166 msgid "Total Available" msgstr "" @@ -535,7 +535,7 @@ msgctxt "footstrap" msgid "Upload failed." msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:552 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:543 msgctxt "footstrap" msgid "Uploading…" msgstr "" @@ -544,12 +544,12 @@ msgstr "" msgid "Username" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:581 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:572 msgctxt "footstrap" msgid "Wallpaper" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:424 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:415 msgctxt "footstrap" msgid "Warning" msgstr "" @@ -559,27 +559,27 @@ msgid "" "You must enable JavaScript in your browser or LuCI will not work properly." msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:444 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:435 msgctxt "footstrap" msgid "in the sidebar" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:270 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:262 msgctxt "footstrap" msgid "on a card" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:443 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:434 msgctxt "footstrap" msgid "on a control" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:400 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js:391 msgctxt "footstrap" msgid "on the canvas" msgstr "" -#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:442 +#: themes/luci-theme-footstrap/htdocs/luci-static/resources/fs-assets.js:393 msgctxt "footstrap" msgid "" "the uploaded file could not be removed either; it is still on the router." diff --git a/luci-theme-vantage/Makefile b/luci-theme-vantage/Makefile index 4edf42877..335b86f50 100644 --- a/luci-theme-vantage/Makefile +++ b/luci-theme-vantage/Makefile @@ -10,8 +10,8 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-theme-vantage -PKG_VERSION:=1.0.17 -PKG_RELEASE:=40 +PKG_VERSION:=1.0.18 +PKG_RELEASE:=41 PKG_LICENSE:=GPL-3.0-or-later LUCI_TITLE:=Vantage theme diff --git a/luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js b/luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js index 0473fc887..dc4fb453e 100644 --- a/luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js +++ b/luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js @@ -30,6 +30,11 @@ const LOGIN_KEY = 'vantage.login'; /* read by the login page's login.js */ picked here when the dashboard is installed; the dashboard listens for BACKDROP_EVENT */ const BACKDROP_KEY = 'vantage.backdrop.v1'; const BACKDROP_EVENT = 'vantage:backdrop'; +/* Low-power router (#101), with the dashboard: it asks for the slow parts + less often and nothing moves (no backdrop, no flow dots, none on the + login page either); the dashboard reads data-vt-power and listens for + POWER_EVENT */ +const POWER_EVENT = 'vantage:power'; /* Appearance for every browser: saved on the router, in /etc/config/vantage_theme (section appearance), by whoever may (rpcd group luci-theme-vantage); header.ut and sysauth.ut hand its values over @@ -41,17 +46,22 @@ const BACKDROP_EVENT = 'vantage:backdrop'; key, also what the dashboard reads under another theme) counts until the router has one. */ /* this package's version, as its Makefile has it (tests/version.test.js) */ -const VERSION = '1.0.17'; +const VERSION = '1.0.18'; /* Check for updates (Appearance): when asked, never on its own, the browser reads the project's 24.10 package list on GitHub Pages (the same release as 25.12's), without cookies or a referrer. Only a version number passes; the link is a constant, to the latest release. */ const UPDATE_INDEX = 'https://anothadev.github.io/luci-theme-vantage/24.10/Packages'; +/* the theme's entry in that list; up here, as jsmin reads a "/" right + after => as a division and drops the space inside it (every packaged + check before 1.0.18 failed that way) */ +const UPDATE_ENTRY = /^Package: luci-theme-vantage$/m; const LOOK = { theme: { own: 'vantage.theme.own', before: THEME_KEY, ok: [ 'auto', 'light', 'dark' ] }, login: { own: 'vantage.login.own', before: LOGIN_KEY, ok: [ 'grid', 'stars', 'none' ] }, backdrop: { own: 'vantage.backdrop.own', before: BACKDROP_KEY, ok: [ 'grid', 'stars', 'none' ] }, + power: { own: 'vantage.power.own', before: 'vantage.power', ok: [ 'normal', 'low' ] }, /* what shows next to the logo; the hostname and model come from system board */ brand: { own: 'vantage.brand.own', before: 'vantage.brand', ok: [ 'none', 'hostname', 'model' ] } }; @@ -176,7 +186,7 @@ function newerVersion(a, b) { } /* the theme's version in an opkg package list, without its release */ function listedVersion(text) { - const block = String(text || '').split(/\n\s*\n/).find(b => /^Package: luci-theme-vantage$/m.test(b)); + const block = String(text || '').split(/\n\s*\n/).find(b => UPDATE_ENTRY.test(b)); const m = block && /^Version: (\S+)$/m.exec(block); return m && versionParts(m[1]) ? m[1].replace(/-r\d+$/, '') : null; } @@ -203,6 +213,7 @@ function setLookAttr(root, name, value) { if (name === 'theme') root.setAttribute('data-vt-look-theme', value); else if (name === 'login') root.setAttribute('data-vt-look-login', value); else if (name === 'backdrop') root.setAttribute('data-vt-look-backdrop', value); + else if (name === 'power') root.setAttribute('data-vt-look-power', value); else if (name === 'brand') root.setAttribute('data-vt-look-brand', value); } function storageSet(k, v) { try { if (v == null) localStorage.removeItem(k); else localStorage.setItem(k, v); } catch (e) {} } @@ -871,7 +882,7 @@ return baseclass.extend({ /* Appearance opened before the menu came in lacks the network path's group (hasDashboard): add it now */ if (this.appear && this.hasDashboard() && !this.appear.querySelector('input[name="vt-backdrop"]')) { - this.appear.insertBefore(this.backdropGroup(), this.appearNote); + this.dashboardGroups().forEach(g => this.appear.insertBefore(g, this.appearNote)); this.syncAppearance(); } this.dp = (L.env.dispatchpath || []).slice(); @@ -1584,10 +1595,18 @@ return baseclass.extend({ this.root.setAttribute('data-darkmode', dark ? 'true' : 'false'); this.root.setAttribute('data-theme', pref); + /* the switch shows the pick (auto, sun, moon) and cycles: auto, the + look the system doesn't have, the one it has, auto again, so the + first click always changes the page; it saves as Appearance does */ + const sys = sysDark ? 'dark' : 'light', other = sysDark ? 'light' : 'dark'; + this.themeNext = pref === 'auto' ? other : pref === other ? sys : 'auto'; const btn = document.getElementById('vt-theme'); if (btn) { + const label = { auto: _('Follow system theme'), light: _('Use light theme'), dark: _('Use dark theme') }[this.themeNext]; btn.textContent = ''; - btn.appendChild(svg(pref === 'auto' ? 'auto' : (pref === 'dark' ? 'moon' : 'sun'), 18)); + btn.appendChild(svg(pref === 'auto' ? 'auto' : (dark ? 'moon' : 'sun'), 18)); + btn.setAttribute('aria-label', label); + btn.setAttribute('title', label); } this.syncAppearance(); }, @@ -1652,8 +1671,29 @@ return baseclass.extend({ this.syncAppearance(); }, + powerPref() { + return this.lookPref('power'); + }, + + setPowerPref(pref) { + this.setLook('power', pref, () => this.applyPower()); + }, + + /* the dashboard reads the one in force from data-vt-power; the + refresh dot stops with it (vantage.css) */ + applyPower() { + const v = this.powerPref(); + if (this.root.getAttribute('data-vt-power') !== v) { + this.root.setAttribute('data-vt-power', v); + window.dispatchEvent(new CustomEvent(POWER_EVENT)); + } + this.syncAppearance(); + }, + setupTheme() { - const btn = document.getElementById('vt-theme'); + const toggle = document.getElementById('vt-theme'); + if (toggle) toggle.addEventListener('click', () => { if (this.themeNext) this.setTheme(this.themeNext); }); + const btn = document.getElementById('vt-look'); if (btn) { btn.addEventListener('click', () => { if (this.appearBtn) this.closeAppearance(false); @@ -1686,6 +1726,7 @@ return baseclass.extend({ } this.applyTheme(); this.applyBackdrop(); + this.applyPower(); this.applyBrand(); }); /* the dashboard's own picker (Customize), saved as Appearance's */ @@ -1708,10 +1749,11 @@ return baseclass.extend({ }); this.applyTheme(); this.applyBackdrop(); + this.applyPower(); this.applyBrand(); }, - /* Appearance, under the colour-theme button: the colour theme, the + /* Appearance, under the gear button: the colour theme, the login background and, with the dashboard, the network path's background, each a native radio group (the arrow keys move within it) drawn as segments. Choices apply at once and stay open; @@ -1719,7 +1761,7 @@ return baseclass.extend({ scrolling the page close it. */ /* one of Appearance's radio groups */ appearGroup(name, legend, opts, set) { - const look = { 'vt-colour': 'theme', 'vt-logo-name': 'brand', 'vt-login': 'login', 'vt-backdrop': 'backdrop' }[name]; + const look = { 'vt-colour': 'theme', 'vt-logo-name': 'brand', 'vt-login': 'login', 'vt-backdrop': 'backdrop', 'vt-power': 'power' }[name]; return E('fieldset', { 'class': 'vt-appear-set' }, [ E('legend', {}, [ legend ]), E('div', { 'class': 'vt-appear-track' }, opts.map(o => { @@ -1738,6 +1780,13 @@ return baseclass.extend({ return this.appearGroup('vt-backdrop', _('Network path background'), [ [ 'grid', n.grid ], [ 'stars', n.stars ], [ 'none', n.none ] ], v => this.setBackdropPref(v)); }, + /* the dashboard's groups: its network path's background, and the + low-power mode */ + dashboardGroups() { + return [ this.backdropGroup(), + this.appearGroup('vt-power', _('Low-power router'), [ [ 'normal', _('Off') ], [ 'low', _('On') ] ], v => this.setPowerPref(v)) ]; + }, + appearanceEl() { if (this.appear) return this.appear; const group = (name, legend, opts, set) => this.appearGroup(name, legend, opts, set); @@ -1750,7 +1799,7 @@ return baseclass.extend({ [ 'none', _('Logo only') ], [ 'hostname', _('Hostname') ], [ 'model', _('Model') ] ], v => this.setBrandPref(v)), group('vt-login', _('Login background'), [ [ 'grid', login.grid ], [ 'stars', login.stars ], [ 'none', login.none ] ], v => this.setLoginPref(v)) - ].concat(this.hasDashboard() ? [ this.backdropGroup() ] : [], [ + ].concat(this.hasDashboard() ? this.dashboardGroups() : [], [ /* where the picks are kept, when not for every browser (syncAppearance) */ (this.appearNote = E('p', { 'class': 'vt-appear-note', 'role': 'status', 'hidden': 'hidden' })), this.versionEl() @@ -1813,7 +1862,8 @@ return baseclass.extend({ }) /* offline, or a router whose pages forbid the request (a Content-Security-Policy): the release page still opens */ - .catch(() => { + .catch(e => { + if (window.console) console.warn('vantage: update check', e); out.textContent = _('Could not check for updates.') + ' '; out.appendChild(this.releaseLink(_('See the latest release'))); }) @@ -1822,7 +1872,7 @@ return baseclass.extend({ syncAppearance() { if (!this.appear) return; - const now = { 'vt-colour': this.themePref(), 'vt-logo-name': this.brandPref(), 'vt-login': this.loginPref(), 'vt-backdrop': this.backdropPref() }; + const now = { 'vt-colour': this.themePref(), 'vt-logo-name': this.brandPref(), 'vt-login': this.loginPref(), 'vt-backdrop': this.backdropPref(), 'vt-power': this.powerPref() }; Array.prototype.forEach.call(this.appear.querySelectorAll('input[type="radio"]'), r => { r.checked = (now[r.name] === r.value); }); const state = this.lookState(); const note = state === 'relogin' ? _('Log in again to save Appearance for every browser.') @@ -1925,6 +1975,13 @@ return baseclass.extend({ }; new MutationObserver(decorate).observe(box, { childList: true, subtree: true, characterData: true }); decorate(); + /* another window has the focus: the refresh dot's pulse stops + (vantage.css), as a moving part keeps the browser drawing */ + const root = document.documentElement; + const focus = () => root.toggleAttribute('data-vt-blur', !document.hasFocus()); + window.addEventListener('blur', focus); + window.addEventListener('focus', focus); + focus(); }, /* ------------------------------------------ technical numerals */ @@ -1986,8 +2043,11 @@ return baseclass.extend({ this.formsQueued = false; this.helpSeq = 0; this.helpSizes = window.ResizeObserver ? new ResizeObserver(entries => this.fitHelps(entries.map(e => e.target))) : null; + /* not for the dashboard's own redraws (each poll): it holds no + LuCI form; a modal opened over it sits outside it */ + const inApp = r => r.target.nodeType === 1 && !!r.target.closest('.vt-app'); if (window.MutationObserver) - new MutationObserver(() => this.queueForms()).observe(document.body, { childList: true, subtree: true }); + new MutationObserver(records => { if (!records.every(inApp)) this.queueForms(); }).observe(document.body, { childList: true, subtree: true }); this.decorateForms(); }, diff --git a/luci-theme-vantage/htdocs/luci-static/vantage/login.js b/luci-theme-vantage/htdocs/luci-static/vantage/login.js index e9bcc97dd..aa46972c0 100644 --- a/luci-theme-vantage/htdocs/luci-static/vantage/login.js +++ b/luci-theme-vantage/htdocs/luci-static/vantage/login.js @@ -7,7 +7,8 @@ * from before; menu-vantage.js lookValue). One canvas, no libraries: a * frame is a handful of batched draws, at most about 60 a second, and nothing runs while the * window is in the background. With reduced motion it draws one still - * frame. Logging in speeds it up while the form posts. + * frame, with Low-power router (Appearance, picked the same way) none: the + * page grid alone. Logging in speeds it up while the form posts. * * This page means there is no session, so it also drops the history the * dashboard kept in this tab (overview.js STORE_KEY): station MACs and samples @@ -19,7 +20,10 @@ var v = [ null, document.documentElement.getAttribute('data-vt-look-login'), null ], ok = [ 'grid', 'stars', 'none' ], pick = 'grid', i; try { v[0] = localStorage.getItem('vantage.login.own'); v[2] = localStorage.getItem('vantage.login'); } catch (e) {} for (i = 2; i >= 0; i--) if (ok.indexOf(v[i]) >= 0) pick = v[i]; - if (pick === 'none') return; + var p = [ null, document.documentElement.getAttribute('data-vt-look-power'), null ], power = 'normal'; + try { p[0] = localStorage.getItem('vantage.power.own'); p[2] = localStorage.getItem('vantage.power'); } catch (e) {} + for (i = 2; i >= 0; i--) if (p[i] === 'normal' || p[i] === 'low') power = p[i]; + if (pick === 'none' || power === 'low') return; var cv = document.createElement('canvas'), ctx = cv.getContext && cv.getContext('2d'); if (!ctx || typeof Path2D !== 'function') return; cv.className = 'vt-login-sky'; diff --git a/luci-theme-vantage/htdocs/luci-static/vantage/vantage.css b/luci-theme-vantage/htdocs/luci-static/vantage/vantage.css index 7cebbfff7..72e6f925c 100644 --- a/luci-theme-vantage/htdocs/luci-static/vantage/vantage.css +++ b/luci-theme-vantage/htdocs/luci-static/vantage/vantage.css @@ -55,7 +55,11 @@ --ctl-h: 36px; /* every control: inputs, selects, buttons, tabs, chips */ --label-w: 180px; /* form label column */ --field-max: 360px; /* widest single-line field */ - --content-max: 1320px; + --content-max: 1320px; /* content column, on windows up to ~1920px */ + --content-wide: 2400px; /* wider windows: the column grows to this */ + /* the column's width with its padding: grows with the window past + 1920px, ~200px clear each side, so 2K and 4K screens at 100% fill */ + --main-max: clamp(calc(var(--content-max) + 2 * var(--sp-6)), 100% - 400px, calc(var(--content-wide) + 2 * var(--sp-6))); /* light: cool paper grey, olive accent text */ --bg: #e9ecef; @@ -620,7 +624,7 @@ a.vt-crumb:hover { color: var(--text); } .vt-icon-btn .vt-fill, .vt-pal .vt-fill, .vt-appearance .vt-fill { fill: currentColor; stroke: none; } .vt-icon-btn[aria-expanded="true"] { background: var(--s3); color: var(--text); border-color: var(--line); } -/* Appearance (menu-vantage.js), under the colour-theme button: each +/* Appearance (menu-vantage.js), under the gear button: each setting a native radio group drawn as segments, like the page tabs */ .vt-appearance { position: fixed; z-index: 1100; @@ -668,7 +672,10 @@ a.vt-crumb:hover { color: var(--text); } color: var(--text-2); font-size: var(--fs-sm); white-space: nowrap; + text-decoration: none !important; } +/* a link to Status → Overview (header.ut), drawn like the icon buttons */ +.vt-host:hover { background: var(--s3); border-color: var(--line-2); } .vt-host b { color: var(--text); font-weight: 600; } .vt-host span { overflow: hidden; text-overflow: ellipsis; } .vt-host-sep { color: var(--text-3); } @@ -717,6 +724,8 @@ html[data-vt-alert="err"] #indicators > span[data-indicator="poll-status"][data- html[data-vt-live="err"] #indicators > span[data-indicator="poll-status"][data-style="active"]::before, html[data-vt-alert="warn"] #indicators > span[data-indicator="poll-status"][data-style="active"]::before { background: var(--warn); } html[data-vt-alert="err"] #indicators > span[data-indicator="poll-status"][data-style="active"]::before { background: var(--err); } } +/* another window has the focus, or Low-power router is on (menu-vantage.js): no pulse */ +:is(html[data-vt-blur], html[data-vt-power="low"]) #indicators > span[data-indicator="poll-status"][data-style="active"]::after { animation: none; } @keyframes vt-live-soft { 0% { transform: scale(1); opacity: .6; } 70%, 100% { transform: scale(2.2); opacity: 0; } } @keyframes vt-live { 0% { transform: scale(1); opacity: 1; } 70%, 100% { transform: scale(2.7); opacity: 0; } } #indicators > span[data-indicator="poll-status"][data-style="inactive"]::before { @@ -746,7 +755,7 @@ html[data-vt-alert="err"] #indicators > span[data-indicator="poll-status"][data- level (.vt-pagetabs shares the .cbi-tabmenu rules below). They scroll with the page; the current crumb in the top bar switches between them. */ .vt-tabs { - width: 100%; max-width: calc(var(--content-max) + 2 * var(--sp-6)); + width: 100%; max-width: var(--main-max); margin: 0 auto; padding: var(--sp-6) var(--sp-6) 0; } .vt-tabs:not([hidden]) + .vt-main { padding-top: var(--sp-5); } @@ -755,7 +764,7 @@ html[data-vt-alert="err"] #indicators > span[data-indicator="poll-status"][data- .vt-main { flex: 1 1 auto; width: 100%; - max-width: calc(var(--content-max) + 2 * var(--sp-6)); + max-width: var(--main-max); padding: var(--sp-6); margin: 0 auto; } @@ -1237,7 +1246,9 @@ input[readonly] { cursor: default; } one under the pointer or the keyboard on --s4, the keyboard's with the accent bar */ :is(.vt-main, .modal) select:not([multiple], [size], [style*="width:auto"], .vt-app *) option::checkmark { display: none; } - :is(.vt-main, .modal) select:not([multiple], [size], [style*="width:auto"], .vt-app *) option:checked { color: var(--accent-text); font-weight: 600; background: var(--accent-soft); } + /* the tint over an opaque fill: apps that copy a select's option colour + onto their own list (PassWall's node picker) would get a see-through one */ + :is(.vt-main, .modal) select:not([multiple], [size], [style*="width:auto"], .vt-app *) option:checked { color: var(--accent-text); font-weight: 600; background: linear-gradient(var(--accent-soft) 0 0) var(--s2); } :is(.vt-main, .modal) select:not([multiple], [size], [style*="width:auto"], .vt-app *) option:is(:hover, :focus-visible) { background: var(--s4); color: var(--text); outline: none; } :is(.vt-main, .modal) select:not([multiple], [size], [style*="width:auto"], .vt-app *) option:focus-visible { box-shadow: inset 2px 0 0 var(--accent-text); } :is(.vt-main, .modal) select:not([multiple], [size], [style*="width:auto"], .vt-app *) option:disabled { color: var(--text-3); background: none; cursor: not-allowed; } @@ -2671,6 +2682,8 @@ html:not([data-darkmode="true"]) .vt-login-page::before { background: var(--info-soft); } .vt-login-form { display: flex; flex-direction: column; gap: var(--sp-4); } +/* a plugin's guidance (sysauth.ut) sits in the form, spaced by its gap */ +.vt-login-form > :is(.vt-login-error, .vt-login-info) { margin: 0; } .vt-field { display: flex; flex-direction: column; gap: 6px; } .vt-field-label { color: var(--text-3); font-size: var(--fs-micro); font-weight: 600; letter-spacing: .08em; text-transform: uppercase; } .vt-field input { diff --git a/luci-theme-vantage/po/templates/vantage-theme.pot b/luci-theme-vantage/po/templates/vantage-theme.pot index 243a9c1f2..80ccee572 100644 --- a/luci-theme-vantage/po/templates/vantage-theme.pot +++ b/luci-theme-vantage/po/templates/vantage-theme.pot @@ -13,7 +13,7 @@ msgid_plural "%d more chains at this hook" msgstr[0] "" msgstr[1] "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1446 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1457 msgctxt "vantage-theme" msgid "%d result" msgid_plural "%d results" @@ -56,7 +56,7 @@ msgctxt "vantage-theme" msgid "Accept" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1366 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1377 msgid "Actions" msgstr "" @@ -65,22 +65,22 @@ msgctxt "nft match any traffic" msgid "Any packet" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1354 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1355 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1356 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1359 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1363 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1745 -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:136 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1365 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1366 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1367 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1370 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1374 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1794 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:146 msgctxt "vantage-theme" msgid "Appearance" msgstr "" -#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:52 +#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:60 msgid "Authorization Required" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1747 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1796 msgctxt "vantage-theme" msgid "Auto" msgstr "" @@ -95,7 +95,7 @@ msgctxt "vantage-theme" msgid "Back to the calling chain" msgstr "" -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:124 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:131 msgctxt "vantage-theme" msgid "Breadcrumb" msgstr "" @@ -113,17 +113,17 @@ msgctxt "vantage-theme" msgid "Bridged between ports" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:492 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:503 msgid "Buffered" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:514 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:524 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:528 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:525 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:535 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:539 msgid "Cache" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:492 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:503 msgid "Cached" msgstr "" @@ -142,27 +142,28 @@ msgctxt "vantage-theme" msgid "Chains no rule jumps to directly" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:587 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:598 msgid "Channel" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1783 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1832 msgid "Check for updates" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1798 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1847 msgid "Checking…" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:993 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1004 msgid "Collapse navigation" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1746 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1795 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:143 msgid "Colour theme" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1390 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1401 msgid "Command palette" msgstr "" @@ -181,15 +182,15 @@ msgctxt "vantage-theme" msgid "Continues in %s, then comes back here" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1817 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1867 msgid "Could not check for updates." msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1830 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1880 msgid "Could not save this for every browser. Try again." msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1747 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1796 msgctxt "vantage-theme" msgid "Dark" msgstr "" @@ -213,8 +214,8 @@ msgstr "" msgid "Egress" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:993 -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:107 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1004 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:114 msgid "Expand navigation" msgstr "" @@ -231,7 +232,8 @@ msgid "" "their counters see only its first packets." msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1356 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1367 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1605 msgid "Follow system theme" msgstr "" @@ -249,22 +251,22 @@ msgid "" "if br_netfilter is enabled; the ruleset doesn't show that.)" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:515 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:529 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:526 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:540 msgctxt "vantage-theme" msgid "Free" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1624 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1643 msgid "Grid packets" msgstr "" -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:101 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:108 msgctxt "vantage-theme" msgid "Home" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1750 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1799 msgid "Hostname" msgstr "" @@ -280,9 +282,9 @@ msgstr "" msgid "IPv6 traffic table \"%h\"" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:514 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:523 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:527 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:525 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:534 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:538 msgctxt "vantage-theme" msgid "In use" msgstr "" @@ -296,11 +298,11 @@ msgctxt "vantage-theme" msgid "Input" msgstr "" -#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:56 +#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:64 msgid "Invalid username and/or password! Please try again." msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1386 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1397 msgid "Jump to a page or action…" msgstr "" @@ -309,35 +311,39 @@ msgctxt "vantage-theme" msgid "Leaves unmatched unchanged" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1747 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1796 msgctxt "vantage-theme" msgid "Light" msgstr "" -#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:32 -#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:85 +#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:40 +#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:96 msgid "Log in" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1828 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1878 msgid "Log in again to save Appearance for every browser." msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1365 -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:139 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1376 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:149 msgid "Log out" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1359 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1752 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1370 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1801 msgid "Login background" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1750 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1799 msgid "Logo only" msgstr "" -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:100 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1787 +msgid "Low-power router" +msgstr "" + +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:107 msgctxt "vantage-theme" msgid "Main navigation" msgstr "" @@ -347,17 +353,17 @@ msgctxt "vantage-theme" msgid "Masquerade" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:487 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:513 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:498 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:524 msgid "Memory" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1750 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1799 msgid "Model" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:2079 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:2096 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:2139 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:2156 msgctxt "vantage-theme" msgid "More actions" msgstr "" @@ -375,8 +381,8 @@ msgstr "" msgid "Network device table \"%h\"" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1363 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1738 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1374 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1780 msgid "Network path background" msgstr "" @@ -385,11 +391,11 @@ msgctxt "vantage-theme" msgid "Next rule" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1749 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1798 msgid "Next to the logo" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1444 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1455 msgid "No matching pages" msgstr "" @@ -403,17 +409,25 @@ msgctxt "vantage-theme" msgid "No rules: %s" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1624 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1643 msgctxt "vantage-theme" msgid "None" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1261 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1272 #: luci-theme-vantage/ucode/template/themes/vantage/header.ut:17 msgid "Not found" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1281 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1787 +msgid "Off" +msgstr "" + +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1787 +msgid "On" +msgstr "" + +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1292 msgid "Other pages in %s" msgstr "" @@ -427,7 +441,7 @@ msgctxt "vantage-theme" msgid "Packet path" msgstr "" -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:145 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:155 msgid "Page tabs" msgstr "" @@ -441,7 +455,7 @@ msgctxt "vantage-theme" msgid "Passes unmatched" msgstr "" -#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:65 +#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:73 msgid "Password" msgstr "" @@ -470,7 +484,7 @@ msgctxt "vantage-theme" msgid "Reject" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1388 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1399 msgctxt "vantage-theme" msgid "Results" msgstr "" @@ -490,21 +504,21 @@ msgctxt "vantage-theme" msgid "Rules table" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1829 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1879 msgid "Saved in this browser only." msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1386 -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:127 -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:129 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1397 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:134 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:136 msgid "Search pages" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1818 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1868 msgid "See the latest release" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1365 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1376 msgid "Session" msgstr "" @@ -515,37 +529,37 @@ msgid_plural "Show %d more rules" msgstr[0] "" msgstr[1] "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:2236 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:2296 msgid "Show full description" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:2225 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:2285 msgid "Show full help: %s" msgstr "" -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:97 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:104 msgid "Skip to content" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1624 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1643 msgid "Starfield" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:552 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:563 msgid "Storage" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:538 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:540 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:549 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:551 msgctxt "vantage-theme" msgid "Swap" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:493 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:504 msgid "Swap free" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:493 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:504 msgid "Swap used" msgstr "" @@ -554,13 +568,13 @@ msgctxt "vantage-theme" msgid "This device" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:515 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:526 msgctxt "vantage-theme" msgid "Total" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:491 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:499 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:502 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:510 msgid "Total Available" msgstr "" @@ -574,23 +588,25 @@ msgctxt "vantage-theme" msgid "Unchanged" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1812 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1861 msgid "Up to date" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1354 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1365 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1605 msgid "Use dark theme" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1355 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1366 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1605 msgid "Use light theme" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:491 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:502 msgid "Used" msgstr "" -#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:61 +#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:69 msgid "Username" msgstr "" @@ -606,7 +622,7 @@ msgctxt "vantage-theme" msgid "Verdict map %s" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1809 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1858 msgid "Version %s is available." msgstr "" @@ -615,20 +631,20 @@ msgctxt "vantage-theme" msgid "View" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1810 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1859 msgid "What's new" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:580 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:591 msgid "Wireless" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:519 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:530 msgctxt "vantage-theme" msgid "available" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1396 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1407 msgid "close" msgstr "" @@ -642,12 +658,12 @@ msgctxt "vantage-theme" msgid "drops unmatched %s" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:567 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:571 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:578 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:582 msgid "free" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1394 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1405 msgid "navigate" msgstr "" @@ -666,7 +682,7 @@ msgctxt "vantage-theme" msgid "on %s" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1395 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1406 msgctxt "vantage-theme" msgid "open" msgstr "" @@ -676,9 +692,9 @@ msgctxt "vantage-theme" msgid "priority %d" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:514 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:524 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:528 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:525 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:535 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:539 msgid "reclaimable" msgstr "" @@ -687,12 +703,12 @@ msgctxt "vantage-theme" msgid "rules drop some" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:567 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:571 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:578 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:582 msgid "total" msgstr "" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:567 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:571 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:578 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:582 msgid "used" msgstr "" diff --git a/luci-theme-vantage/po/zh_Hans/vantage-theme.po b/luci-theme-vantage/po/zh_Hans/vantage-theme.po index e4abca25b..d32ffb144 100644 --- a/luci-theme-vantage/po/zh_Hans/vantage-theme.po +++ b/luci-theme-vantage/po/zh_Hans/vantage-theme.po @@ -21,7 +21,7 @@ msgid "%d more chain at this hook" msgid_plural "%d more chains at this hook" msgstr[0] "此钩子还有 %d 条链" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1446 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1457 msgctxt "vantage-theme" msgid "%d result" msgid_plural "%d results" @@ -62,7 +62,7 @@ msgctxt "vantage-theme" msgid "Accept" msgstr "接受" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1366 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1377 msgid "Actions" msgstr "操作" @@ -71,22 +71,22 @@ msgctxt "nft match any traffic" msgid "Any packet" msgstr "任意数据包" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1354 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1355 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1356 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1359 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1363 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1745 -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:136 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1365 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1366 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1367 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1370 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1374 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1794 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:146 msgctxt "vantage-theme" msgid "Appearance" msgstr "外观" -#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:52 +#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:60 msgid "Authorization Required" msgstr "需要授权" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1747 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1796 msgctxt "vantage-theme" msgid "Auto" msgstr "自动" @@ -101,7 +101,7 @@ msgctxt "vantage-theme" msgid "Back to the calling chain" msgstr "返回调用链" -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:124 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:131 msgctxt "vantage-theme" msgid "Breadcrumb" msgstr "面包屑" @@ -119,17 +119,17 @@ msgctxt "vantage-theme" msgid "Bridged between ports" msgstr "端口间桥接" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:492 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:503 msgid "Buffered" msgstr "已缓冲" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:514 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:524 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:528 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:525 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:535 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:539 msgid "Cache" msgstr "缓存" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:492 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:503 msgid "Cached" msgstr "已缓存" @@ -148,27 +148,28 @@ msgctxt "vantage-theme" msgid "Chains no rule jumps to directly" msgstr "没有规则直接跳转到的链" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:587 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:598 msgid "Channel" msgstr "信道" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1783 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1832 msgid "Check for updates" msgstr "检查更新" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1798 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1847 msgid "Checking…" msgstr "正在检查…" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:993 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1004 msgid "Collapse navigation" msgstr "收起导航" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1746 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1795 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:143 msgid "Colour theme" msgstr "颜色主题" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1390 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1401 msgid "Command palette" msgstr "命令面板" @@ -187,15 +188,15 @@ msgctxt "vantage-theme" msgid "Continues in %s, then comes back here" msgstr "转入 %s,随后返回此处" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1817 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1867 msgid "Could not check for updates." msgstr "无法检查更新。" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1830 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1880 msgid "Could not save this for every browser. Try again." msgstr "无法为所有浏览器保存此设置,请重试。" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1747 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1796 msgctxt "vantage-theme" msgid "Dark" msgstr "深色" @@ -219,8 +220,8 @@ msgstr "丢弃未匹配流量" msgid "Egress" msgstr "出口" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:993 -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:107 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1004 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:114 msgid "Expand navigation" msgstr "展开导航" @@ -239,7 +240,8 @@ msgstr "" "流量卸载已开启:一条转发连接建立后,它的数据包可以跳过 prerouting、forward " "和 postrouting,因此这些链和它们的计数器只会看到该连接最初的数据包。" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1356 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1367 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1605 msgid "Follow system theme" msgstr "跟随系统主题" @@ -260,22 +262,22 @@ msgstr "" "达 input、forward 或 output 链,这里也没有桥接链会过滤它们。(启用 " "br_netfilter 时内核可以把它们交给 IP 链;规则集不体现这一点。)" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:515 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:529 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:526 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:540 msgctxt "vantage-theme" msgid "Free" msgstr "空闲" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1624 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1643 msgid "Grid packets" msgstr "网格数据包" -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:101 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:108 msgctxt "vantage-theme" msgid "Home" msgstr "首页" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1750 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1799 msgid "Hostname" msgstr "主机名" @@ -291,9 +293,9 @@ msgstr "IPv4/IPv6 流量表 \"%h\"" msgid "IPv6 traffic table \"%h\"" msgstr "IPv6 流量表 \"%h\"" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:514 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:523 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:527 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:525 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:534 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:538 msgctxt "vantage-theme" msgid "In use" msgstr "已用" @@ -307,11 +309,11 @@ msgctxt "vantage-theme" msgid "Input" msgstr "输入" -#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:56 +#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:64 msgid "Invalid username and/or password! Please try again." msgstr "用户名或密码错误,请重试。" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1386 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1397 msgid "Jump to a page or action…" msgstr "跳转到页面或操作…" @@ -320,35 +322,39 @@ msgctxt "vantage-theme" msgid "Leaves unmatched unchanged" msgstr "未匹配流量保持原样" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1747 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1796 msgctxt "vantage-theme" msgid "Light" msgstr "浅色" -#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:32 -#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:85 +#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:40 +#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:96 msgid "Log in" msgstr "登录" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1828 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1878 msgid "Log in again to save Appearance for every browser." msgstr "重新登录后即可为所有浏览器保存外观设置。" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1365 -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:139 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1376 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:149 msgid "Log out" msgstr "退出登录" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1359 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1752 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1370 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1801 msgid "Login background" msgstr "登录背景" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1750 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1799 msgid "Logo only" msgstr "仅标志" -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:100 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1787 +msgid "Low-power router" +msgstr "低性能路由器" + +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:107 msgctxt "vantage-theme" msgid "Main navigation" msgstr "主导航" @@ -358,17 +364,17 @@ msgctxt "vantage-theme" msgid "Masquerade" msgstr "伪装(NAT)" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:487 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:513 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:498 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:524 msgid "Memory" msgstr "内存" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1750 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1799 msgid "Model" msgstr "型号" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:2079 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:2096 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:2139 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:2156 msgctxt "vantage-theme" msgid "More actions" msgstr "更多操作" @@ -386,8 +392,8 @@ msgstr "网络" msgid "Network device table \"%h\"" msgstr "网络设备表 \"%h\"" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1363 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1738 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1374 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1780 msgid "Network path background" msgstr "网络路径背景" @@ -396,11 +402,11 @@ msgctxt "vantage-theme" msgid "Next rule" msgstr "下一条规则" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1749 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1798 msgid "Next to the logo" msgstr "标志旁显示" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1444 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1455 msgid "No matching pages" msgstr "没有匹配的页面" @@ -414,17 +420,25 @@ msgctxt "vantage-theme" msgid "No rules: %s" msgstr "无规则:%s" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1624 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1643 msgctxt "vantage-theme" msgid "None" msgstr "无" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1261 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1272 #: luci-theme-vantage/ucode/template/themes/vantage/header.ut:17 msgid "Not found" msgstr "未找到" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1281 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1787 +msgid "Off" +msgstr "关闭" + +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1787 +msgid "On" +msgstr "开启" + +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1292 msgid "Other pages in %s" msgstr "%s 中的其他页面" @@ -438,7 +452,7 @@ msgctxt "vantage-theme" msgid "Packet path" msgstr "数据包路径" -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:145 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:155 msgid "Page tabs" msgstr "页面标签页" @@ -452,7 +466,7 @@ msgctxt "vantage-theme" msgid "Passes unmatched" msgstr "放行未匹配流量" -#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:65 +#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:73 msgid "Password" msgstr "密码" @@ -481,7 +495,7 @@ msgctxt "vantage-theme" msgid "Reject" msgstr "拒绝" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1388 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1399 msgctxt "vantage-theme" msgid "Results" msgstr "结果" @@ -501,21 +515,21 @@ msgctxt "vantage-theme" msgid "Rules table" msgstr "规则表" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1829 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1879 msgid "Saved in this browser only." msgstr "仅保存在此浏览器中。" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1386 -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:127 -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:129 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1397 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:134 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:136 msgid "Search pages" msgstr "搜索页面" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1818 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1868 msgid "See the latest release" msgstr "查看最新版本" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1365 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1376 msgid "Session" msgstr "会话" @@ -525,52 +539,52 @@ msgid "Show %d more rule" msgid_plural "Show %d more rules" msgstr[0] "再显示 %d 条规则" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:2236 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:2296 msgid "Show full description" msgstr "显示完整描述" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:2225 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:2285 msgid "Show full help: %s" msgstr "显示完整帮助:%s" -#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:97 +#: luci-theme-vantage/ucode/template/themes/vantage/header.ut:104 msgid "Skip to content" msgstr "跳至正文" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1624 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1643 msgid "Starfield" msgstr "星空" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:552 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:563 msgid "Storage" msgstr "存储" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:538 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:540 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:549 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:551 msgctxt "vantage-theme" msgid "Swap" msgstr "交换空间" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:493 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:504 msgid "Swap free" msgstr "空闲交换空间" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:493 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:504 msgid "Swap used" -msgstr "" +msgstr "已用交换空间" #: luci-theme-vantage/htdocs/luci-static/resources/vantage-theme/nftflow.js:249 msgctxt "vantage-theme" msgid "This device" msgstr "本设备" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:515 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:526 msgctxt "vantage-theme" msgid "Total" msgstr "总计" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:491 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:499 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:502 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:510 msgid "Total Available" msgstr "总可用" @@ -584,23 +598,25 @@ msgctxt "vantage-theme" msgid "Unchanged" msgstr "不变" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1812 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1861 msgid "Up to date" msgstr "已是最新版本" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1354 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1365 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1605 msgid "Use dark theme" msgstr "使用深色主题" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1355 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1366 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1605 msgid "Use light theme" msgstr "使用浅色主题" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:491 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:502 msgid "Used" msgstr "已用" -#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:61 +#: luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut:69 msgid "Username" msgstr "用户名" @@ -618,7 +634,7 @@ msgctxt "vantage-theme" msgid "Verdict map %s" msgstr "判定映射 %s" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1809 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1858 msgid "Version %s is available." msgstr "版本 %s 可用。" @@ -627,20 +643,20 @@ msgctxt "vantage-theme" msgid "View" msgstr "视图" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1810 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1859 msgid "What's new" msgstr "更新内容" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:580 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:591 msgid "Wireless" msgstr "无线" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:519 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:530 msgctxt "vantage-theme" msgid "available" msgstr "可用" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1396 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1407 msgid "close" msgstr "关闭" @@ -654,12 +670,12 @@ msgctxt "vantage-theme" msgid "drops unmatched %s" msgstr "丢弃未匹配的 %s" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:567 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:571 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:578 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:582 msgid "free" msgstr "空闲" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1394 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1405 msgid "navigate" msgstr "移动" @@ -678,7 +694,7 @@ msgctxt "vantage-theme" msgid "on %s" msgstr "接口 %s" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1395 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:1406 msgctxt "vantage-theme" msgid "open" msgstr "打开" @@ -688,9 +704,9 @@ msgctxt "vantage-theme" msgid "priority %d" msgstr "优先级 %d" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:514 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:524 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:528 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:525 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:535 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:539 msgid "reclaimable" msgstr "可回收" @@ -699,13 +715,13 @@ msgctxt "vantage-theme" msgid "rules drop some" msgstr "部分规则会丢弃" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:567 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:571 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:578 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:582 msgid "total" msgstr "总计" -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:567 -#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:571 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:578 +#: luci-theme-vantage/htdocs/luci-static/resources/menu-vantage.js:582 msgid "used" msgstr "已用" diff --git a/luci-theme-vantage/ucode/template/themes/vantage/header.ut b/luci-theme-vantage/ucode/template/themes/vantage/header.ut index 85af0fbf2..f884be42c 100644 --- a/luci-theme-vantage/ucode/template/themes/vantage/header.ut +++ b/luci-theme-vantage/ucode/template/themes/vantage/header.ut @@ -23,16 +23,21 @@ const look_theme = look('theme', [ 'auto', 'light', 'dark' ]); const look_login = look('login', [ 'grid', 'stars', 'none' ]); const look_backdrop = look('backdrop', [ 'grid', 'stars', 'none' ]); + const look_power = look('power', [ 'normal', 'low' ]); const look_brand = look('brand', [ 'none', 'hostname', 'model' ]); /* The dashboard's chart style and layouts, saved with it. A layout passes only in the form vantage.layout reads, 'wide=hero:0:4 chart:0:2:h;mid=default' */ const look_chart = look('chart', [ 'overlay', 'log', 'mirror', 'mirror-split', 'lanes' ]); const look_layout = (() => { + /* compiled once a page, not once a layout: ucode compiles a + literal each time it is reached, and these counted repeats + take milliseconds to compile on a router */ + const form = /^(default|[a-z]{1,8}:[0-3]:[1-4](:h)?( [a-z]{1,8}:[0-3]:[1-4](:h)?){0,7})$/; let out = []; if (authed) for (let k in [ 'wide', 'mid', 'narrow', 'wide_wired', 'mid_wired', 'narrow_wired' ]) { const v = uci.get('vantage_theme', 'appearance', 'layout_' + k); - if (type(v) == 'string' && match(v, /^(default|[a-z]{1,8}:[0-3]:[1-4](:h)?( [a-z]{1,8}:[0-3]:[1-4](:h)?){0,7})$/)) + if (type(v) == 'string' && match(v, form)) push(out, k + '=' + v); } return join(';', out); @@ -56,7 +61,7 @@ })(); -%} - + @@ -80,6 +85,8 @@ r.setAttribute('data-theme', p); /* the dashboard's network path background, read by luci-app-vantage */ r.setAttribute('data-vt-backdrop', look('backdrop', 'vantage.backdrop.own', 'vantage.backdrop.v1', [ 'grid', 'stars', 'none' ])); + /* Low-power router: the dashboard asks for the slow parts less often and nothing moves */ + r.setAttribute('data-vt-power', look('power', 'vantage.power.own', 'vantage.power', [ 'normal', 'low' ])); if (rail === 'pinned') r.setAttribute('data-rail', 'pinned'); })(document.documentElement); @@ -139,10 +146,13 @@ {% endif %}
                            {% if (authed): %} - - + diff --git a/luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut b/luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut index 14576d314..20449152f 100644 --- a/luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut +++ b/luci-theme-vantage/ucode/template/themes/vantage/sysauth.ut @@ -9,6 +9,13 @@ HTTPS probe reads its port list from an entity-encoded data attribute. The Appearance saved for every browser (/etc/config/vantage_theme) comes as data attributes of values the theme knows only. + LuCI's authentication plugins (25.12 has none; luci-plugin-2fa after it) + add auth_fields, auth_message and auth_plugin (set once the password was + right), encoded like the rest, and auth_html, printed as LuCI's + Bootstrap prints it (the installed plugin's own HTML), and auth_assets, + as plain script tags (LuCI keeps them to /luci-static/plugins//; + this page loads no luci.js, so a plugin script that needs L or ui would + not run here; luci-plugin-2fa has none). -#} {% let tls = uci.get('uhttpd', 'main', 'listen_https') ?? []; @@ -18,12 +25,13 @@ const look = (opt, ok) => { const v = uci.get('vantage_theme', 'appearance', opt); return (type(v) == 'string' && index(ok, v) >= 0) ? v : ''; }; const look_theme = look('theme', [ 'auto', 'light', 'dark' ]); const look_login = look('login', [ 'grid', 'stars', 'none' ]); + const look_power = look('power', [ 'normal', 'low' ]); const host = (() => { const h = uci.get_first('system', 'system', 'hostname'); return (type(h) == 'string' && length(h)) ? substr(h, 0, 63) : null; })(); // A pending challenge is guidance until the user submits a response. const auth_failed = auth_plugin && length(filter(auth_fields ?? [], field => length(http.formvalue(field.name) ?? ''))); -%} - + @@ -86,6 +94,9 @@ {% endfor %} {% endif %} +{% if (auth_html): %} + +{% endif %} {% if (auth_message): %} {% endif %} @@ -112,5 +123,10 @@ })(document.querySelector('form.vt-login-form')); +{% for (let asset in auth_assets ?? []): %} +{% if (asset?.type == 'script'): %} + +{% endif %} +{% endfor %} diff --git a/rrdtool1n/Makefile b/rrdtool1n/Makefile new file mode 100644 index 000000000..62abf5e12 --- /dev/null +++ b/rrdtool1n/Makefile @@ -0,0 +1,93 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=rrdtool1n +PKG_VERSION:=1.2.30 +PKG_RELEASE:=1 + +PKG_SOURCE:=rrdtool-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=https://oss.oetiker.ch/rrdtool/pub/archive +PKG_HASH:=skip +PKG_BUILD_DIR:=$(BUILD_DIR)/rrdtool-$(PKG_VERSION) + +PKG_LICENSE:=GPL-2.0 +PKG_FIXUP:=autoreconf +PKG_INSTALL:=1 + +include $(INCLUDE_DIR)/package.mk + +define Package/rrdtool1n + SECTION:=utils + CATEGORY:=Utilities + TITLE:=Round Robin Database Tool + URL:=https://oss.oetiker.ch/rrdtool/ + DEPENDS:=+librrd1n + CONFLICTS:=rrdtool1 +endef + +define Package/librrd1n + SECTION:=libs + CATEGORY:=Libraries + TITLE:=RRDtool library + DEPENDS:=+libpng +zlib +libfreetype +libart + CONFLICTS:=librrd1 +endef + +define Package/rrdtool1n-fonts + SECTION:=utils + CATEGORY:=Utilities + DEPENDS:=+rrdtool1n + TITLE:=RRDtool default font (DejaVu Sans Mono) +endef + +define Package/rrdtool1n/description + RRDtool. For graphing install rrdtool1n-fonts too, otherwise + rrdtool graph fails to load its default font. +endef + +CONFIGURE_ARGS += \ + --disable-rrdcgi \ + --disable-tcl \ + --disable-perl \ + --disable-python \ + --disable-ruby \ + --disable-lua \ + --disable-static \ + --without-x + +CONFIGURE_VARS += \ + rd_cv_ieee_works=yes \ + rd_cv_null_realloc=nonnull + +TARGET_CFLAGS += $(FPIC) + +MAKE_FLAGS += mkdir_p="mkdir -p" + +define Build/Configure + $(call Build/Configure/Default) +endef + +define Package/rrdtool1n/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/rrdtool $(1)/usr/bin/ +endef + +define Package/librrd1n/install + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/librrd*.so* $(1)/usr/lib/ +endef + +define Package/rrdtool1n-fonts/install + $(INSTALL_DIR) $(1)/usr/share/rrdtool/fonts + $(INSTALL_DATA) $(PKG_BUILD_DIR)/src/DejaVuSansMono-Roman.ttf \ + $(1)/usr/share/rrdtool/fonts/ +endef + +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/include $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/include/rrd.h $(1)/usr/include/ + $(CP) $(PKG_INSTALL_DIR)/usr/lib/librrd*.so* $(1)/usr/lib/ +endef + +$(eval $(call BuildPackage,rrdtool1n)) +$(eval $(call BuildPackage,librrd1n)) +$(eval $(call BuildPackage,rrdtool1n-fonts)) diff --git a/wwand/Makefile b/wwand/Makefile index 1c0b4bee8..437d1f5e3 100644 --- a/wwand/Makefile +++ b/wwand/Makefile @@ -50,12 +50,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=wwand -PKG_VERSION:=1.9.0_pre11 -PKG_RELEASE:=90 +PKG_VERSION:=1.9.0_pre13 +PKG_RELEASE:=91 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://github.com/ddimension/wwand.git -PKG_SOURCE_VERSION:=7efd9bf9e5b1feb319b2b3471f921910837be577 +PKG_SOURCE_VERSION:=3416e85afc46948534527789d9462bfe3d45f0e2 PKG_MIRROR_HASH:=skip PKG_LICENSE:=GPL-2.0-only