🐤 Sync 2026-08-24 23:23:52

This commit is contained in:
github-actions[bot]
2026-08-24 23:23:52 +08:00
parent 406281adb5
commit cf5ae27e91
82 changed files with 5971 additions and 5537 deletions
+1 -1
View File
@@ -124,7 +124,7 @@ unexport \
GOBOOTSTRAP_TOOLEXEC
GO_DEFAULT_VERSION:=1.26
GO_DEFAULT_VERSION:=1.27
GO_HOST_VERSION:=$(patsubst golang%/host,%,$(filter golang%/host,$(PKG_BUILD_DEPENDS)))
ifeq ($(GO_HOST_VERSION),)
GO_HOST_VERSION:=$(GO_DEFAULT_VERSION)
+2 -2
View File
@@ -22,7 +22,7 @@ PKG_UNPACK:=$(HOST_TAR) -C "$(PKG_BUILD_DIR)" --strip-components=1 -xzf "$(DL_DI
HOST_UNPACK:=$(HOST_TAR) -C "$(HOST_BUILD_DIR)" --strip-components=1 -xzf "$(DL_DIR)/$(PKG_SOURCE)"
# Don't strip ELF executables in test data
RSTRIP:=$(subst $(SCRIPT_DIR)/rstrip.sh,go-strip-helper $(SCRIPT_DIR)/rstrip.sh,$(RSTRIP))
RSTRIP:=$(subst $(SCRIPT_DIR)/rstrip.sh,../go-strip-helper $(SCRIPT_DIR)/rstrip.sh,$(RSTRIP))
ifeq ($(GO_TARGET_SPECTRE_SUPPORTED),1)
PKG_CONFIG_DEPENDS+=CONFIG_GOLANG_SPECTRE
@@ -295,5 +295,5 @@ endef
# src/debug contains ELF executables as test data and they reference these
# libraries we need to call this to pass CheckDependencies in package-pack.mk
define Package/$(PKG_NAME)-tests/extra_provides
echo 'libc.so.6' libstdc++.so.6' libtiff.so.6' | tr ' ' '\n'
echo 'libc.so.6 libstdc++.so.6 libtiff.so.6' | tr ' ' '\n'
endef
@@ -6,12 +6,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=golang1.26
GO_VERSION_MAJOR_MINOR:=1.26
GO_VERSION_PATCH:=6
PKG_NAME:=golang1.27
GO_VERSION_MAJOR_MINOR:=1.27
GO_VERSION_PATCH:=0
GO_VERSION_RC:=
GO_BOOTSTRAP_VERSION:=bootstrap
PKG_HASH:=a0721c54c688901448d77ad9b3ec7ea7c474730755ff891382e92ecb93ff2cb1
PKG_HASH:=7002403d7cc44529ef6d26f69a44818263395ead7c16c05a5808ae047ebeb0e5
PKG_VERSION:=$(GO_VERSION_MAJOR_MINOR)$(if $(GO_VERSION_RC),.0)$(if $(GO_VERSION_PATCH),.$(GO_VERSION_PATCH))
PKG_FILE_VERSION:=$(GO_VERSION_MAJOR_MINOR)$(if $(GO_VERSION_RC),rc$(GO_VERSION_RC))$(if $(GO_VERSION_PATCH),.$(GO_VERSION_PATCH))
+3 -3
View File
@@ -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-05-14 10:34+0000\n"
"PO-Revision-Date: 2026-08-13 09:27+0000\n"
"Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>\n"
"Language-Team: Czech <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsddns/cs/>\n"
@@ -11,7 +11,7 @@ msgstr ""
"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.5.dev0\n"
"X-Generator: Weblate 2026.9.dev0\n"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:423
msgid "\"../\" not allowed in path for Security Reason."
@@ -606,7 +606,7 @@ msgstr "Registrovaná IP adresa"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:567
msgid "Reload"
msgstr "Načíst znovu"
msgstr "Znovunačíst"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:550
msgid "Reload this service"
+5 -5
View File
@@ -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-06-26 11:18+0000\n"
"Last-Translator: apemay <apemay.dev@gmail.com>\n"
"PO-Revision-Date: 2026-08-14 17:53+0000\n"
"Last-Translator: Franco Castillo <castillofrancodamian@gmail.com>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsddns/es/>\n"
"Language: es\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.7.dev0\n"
"X-Generator: Weblate 2026.9.dev0\n"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:423
msgid "\"../\" not allowed in path for Security Reason."
@@ -646,7 +646,7 @@ msgstr "Ejecutar una vez"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:231
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1120
msgid "Running"
msgstr "Ejecutando"
msgstr "Ejecutándose"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:813
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:870
@@ -839,7 +839,7 @@ msgstr "Verificar"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:965
msgid "Warning"
msgstr "Aviso"
msgstr "Advertencia"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:504
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:630
+5 -5
View File
@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2026-05-02 19:29+0000\n"
"Last-Translator: BoneNI <bounkirdni@gmail.com>\n"
"PO-Revision-Date: 2026-08-15 13:06+0000\n"
"Last-Translator: Bone NI <bounkirdni@gmail.com>\n"
"Language-Team: Lao <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsddns/lo/>\n"
"Language: lo\n"
"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.1\n"
"X-Generator: Weblate 2026.9.dev0\n"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:423
msgid "\"../\" not allowed in path for Security Reason."
@@ -367,7 +367,7 @@ msgstr "ຕິດຕັ້ງບໍລິການ"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:812
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:862
msgid "Interface"
msgstr "ອິນເຕີເຟ"
msgstr "ອິນເຕີເຟ"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1006
msgid "Interval to force an update at the DDNS Provider"
@@ -487,7 +487,7 @@ msgstr "IPs ທີ່ບໍ່ແມ່ນສາທາລະນະ ແລະ ຖ
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:231
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1121
msgid "Not Running"
msgstr "ບໍ່ໄດ້ເຮັດວຽກ"
msgstr "ບໍ່ເຮັດວຽກ"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:964
msgid "Notice"
+4 -4
View File
@@ -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-02-14 00:51+0000\n"
"Last-Translator: Piotr Kołtun <pkoltungm@gmail.com>\n"
"PO-Revision-Date: 2026-08-03 04:18+0000\n"
"Last-Translator: Matthaiks <kitynska@gmail.com>\n"
"Language-Team: Polish <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsddns/pl/>\n"
"Language: pl\n"
@@ -12,7 +12,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.16-dev\n"
"X-Generator: Weblate 2026.8.dev0\n"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:423
msgid "\"../\" not allowed in path for Security Reason."
@@ -509,7 +509,7 @@ msgstr "Niepubliczne i domyślnie zablokowane IP"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:231
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1121
msgid "Not Running"
msgstr "Nie działa"
msgstr "Nieuruchomione"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:964
msgid "Notice"
+7 -6
View File
@@ -2,8 +2,9 @@ msgid ""
msgstr ""
"Project-Id-Version: LuCI: ddns\n"
"POT-Creation-Date: 2017-10-17 21:00+0300\n"
"PO-Revision-Date: 2026-07-03 15:28+0000\n"
"Last-Translator: chigelo <chigelo@gmail.com>\n"
"PO-Revision-Date: 2026-08-14 12:12+0000\n"
"Last-Translator: SnIPeRSnIPeR "
"<snipersniper@users.noreply.hosted.weblate.org>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsddns/ru/>\n"
"Language: ru\n"
@@ -12,7 +13,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Weblate 2026.7.1.dev0\n"
"X-Generator: Weblate 2026.9.dev0\n"
"Project-Info: Это технический перевод, не дословный. Главное-удобный русский "
"интерфейс, все проверялось в графическом режиме, совместим с другими apps\n"
@@ -205,7 +206,7 @@ msgstr "Версия DDNS"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:545
msgid "Edit"
msgstr "Редактировать"
msgstr "Изменить"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:783
msgid "Enable secure communication with DDNS provider"
@@ -519,7 +520,7 @@ msgstr "Непубличные и заблокированные по умолч
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:231
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1121
msgid "Not Running"
msgstr "Не работает"
msgstr "Не запущено"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:964
msgid "Notice"
@@ -709,7 +710,7 @@ msgstr "Состояние"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1117
msgid "Status"
msgstr "Статус"
msgstr "Состояние"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:410
msgid "Status directory"
+155 -119
View File
@@ -1,22 +1,22 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2026-03-22 17:10+0000\n"
"Last-Translator: Kristoffer Grundström <swedishsailfishosuser@tutanota.com>\n"
"PO-Revision-Date: 2026-08-13 09:16+0000\n"
"Last-Translator: Jonatan Nyberg <nickwick@users.noreply.hosted.weblate.org>\n"
"Language-Team: Swedish <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsddns/sv/>\n"
"Language: sv\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 5.17-dev\n"
"X-Generator: Weblate 2026.9.dev0\n"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:423
msgid "\"../\" not allowed in path for Security Reason."
msgstr "\"../\" ej tillåten i sökväg av säkerhetsskäl."
msgstr "../” är inte tillåtet i sökvägen av säkerhetsskäl."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:763
msgid "A.k.a. the TOKEN at e.g. afraid.org"
msgstr ""
msgstr "Även kallad TOKEN, exempelvis hos afraid.org"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:458
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:526
@@ -25,7 +25,7 @@ msgstr "Lägg till nya tjänster..."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:607
msgid "Advanced Settings"
msgstr "Avancerade inställningar"
msgstr "avancerade inställningar"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:392
msgid "Allow non-public IPs"
@@ -37,34 +37,38 @@ msgstr "Grundläggande inställningar"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:903
msgid "Bind Network"
msgstr "Bind samman nätverk"
msgstr "Bind till nätverk"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:332
msgid "Binding to a specific network not supported"
msgstr "Att binda samman med ett specifikt nätverk stöds inte"
msgstr "Bindning till ett specifikt nätverk stöds inte"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:361
msgid ""
"BusyBox's nslookup and hostip do not support TCP instead of the default UDP "
"when sending requests to the DNS server!"
msgstr ""
"BusyBox nslookup och hostip stöder inte TCP i stället för "
"standardprotokollet UDP när begäranden skickas till DNS-servern!"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:372
msgid ""
"BusyBox's nslookup in the current compiled version does not handle given DNS "
"Servers correctly!"
msgstr ""
"BusyBox nslookup i den aktuella kompilerade versionen hanterar inte angivna "
"DNS-servrar korrekt!"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:443
msgid "CA cert bundle file"
msgstr "Sökväg till CA-certifikat"
msgstr "Fil med CA-certifikatpaket"
#: 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 ""
"Sökvägen till CA-certifikaten som används för att ladda ner tjänstdata. Välj "
"Fil med CA-certifikatpaket som används för att hämta tjänstedata. Ange "
"IGNORE för att hoppa över certifikatvalidering."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:532
@@ -77,7 +81,7 @@ msgstr "Kontrollintervall"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:996
msgid "Check Unit"
msgstr "Kontrollera enhet"
msgstr "Enhet för kontrollintervall"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/status/include/70_ddns.js:27
msgid "Configuration"
@@ -90,11 +94,11 @@ msgstr "Konfigurationsfel"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:417
msgid "Contains Log files for each running section."
msgstr "Mappen innehåller Logg-filer för varje del som körs."
msgstr "Innehåller loggfiler för varje aktiv sektion."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:411
msgid "Contains PID and other status information for each running section."
msgstr ""
msgstr "Innehåller PID och annan statusinformation för varje aktiv sektion."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:536
msgid "Create service"
@@ -108,16 +112,16 @@ msgstr "Nuvarande inställning:"
#: 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 ""
"För närvarande startas DDNS-uppdateringar inte vid uppstart eller "
"gränssnittshändelser."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:727
msgid "Custom update script for updating your DDNS Provider."
msgstr ""
"Skräddarsytt uppdateringsskript att använda vid uppdatering av din DDNS-"
"leverantör."
msgstr "Anpassat uppdateringsskript för att uppdatera din DDNS-leverantör."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:708
msgid "Custom update-URL"
msgstr "Anpassad webbadress för uppdatering"
msgstr "Anpassad uppdaterings-URL"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:726
msgid "Custom update-script"
@@ -130,12 +134,12 @@ 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
msgid "DDNS Autostart disabled"
msgstr "DDNS autostart inaktiverad"
msgstr "Automatisk start av DDNS är inaktiverad"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:206
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:279
msgid "DDNS Autostart enabled"
msgstr "DDNS autostart aktiverad"
msgstr "Automatisk start av DDNS är aktiverad"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:512
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:640
@@ -144,11 +148,11 @@ msgstr "DDNS-tjänstleverantör"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:577
msgid "DDns Service"
msgstr "DDns-tjänst"
msgstr "DDNS-tjänst"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:360
msgid "DNS requests via TCP not supported"
msgstr "DNS-förfrågningar via TCP stöds inte"
msgstr "DNS-begäranden via TCP stöds inte"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:924
msgid "DNS-Server"
@@ -160,15 +164,15 @@ msgstr "Datumformat"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:853
msgid "Defines the Web page to read systems IP-Address from."
msgstr ""
msgstr "Anger webbsidan som systemets IP-adress ska läsas från."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:863
msgid "Defines the interface to read systems IP-Address from"
msgstr ""
msgstr "Anger gränssnittet som systemets IP-adress ska läsas från"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:845
msgid "Defines the network to read systems IP-Address from"
msgstr ""
msgstr "Anger nätverket som systemets IP-adress ska läsas från"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:18
msgid "Disabled"
@@ -194,7 +198,7 @@ msgstr "Redigera"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:783
msgid "Enable secure communication with DDNS provider"
msgstr "Aktivera säker kommunikation med DDNS-leverantör"
msgstr "Aktivera säker kommunikation med DDNS-leverantören"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:612
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1140
@@ -207,24 +211,24 @@ msgstr "Fel"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1040
msgid "Error Max Retry Counter"
msgstr ""
msgstr "Högsta antal omförsök vid fel"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1050
msgid "Error Retry Interval"
msgstr ""
msgstr "Intervall för omförsök vid fel"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:877
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:887
msgid "Event Network"
msgstr ""
msgstr "Händelsenätverk"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:855
msgid "Example for IPv4"
msgstr ""
msgstr "Exempel för IPv4"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:857
msgid "Example for IPv6"
msgstr ""
msgstr "Exempel för IPv6"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:975
msgid "File"
@@ -232,11 +236,11 @@ msgstr "Fil"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:711
msgid "Follow instructions found on their WEB page."
msgstr ""
msgstr "Följ anvisningarna på leverantörens webbsida."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:403
msgid "For supported codes look here"
msgstr ""
msgstr "Se här för koder som stöds"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:915
msgid "Force IP Version"
@@ -244,15 +248,15 @@ msgstr "Tvinga IP-version"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1005
msgid "Force Interval"
msgstr ""
msgstr "Tvingat intervall"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:936
msgid "Force TCP on DNS"
msgstr ""
msgstr "Tvinga TCP för DNS"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1031
msgid "Force Unit"
msgstr ""
msgstr "Enhet för tvingad uppdatering"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:948
msgid "Format"
@@ -267,8 +271,8 @@ msgid ""
"GNU Wget will use the IP of given network, cURL will use the physical "
"interface."
msgstr ""
"GNU Wget kommer att använda IP-adressen för det angivna nätverket, cURL "
"kommer att använda det fysiska gränssnittet."
"GNU Wget använder IP-adressen för det angivna nätverket, medan cURL använder "
"det fysiska gränssnittet."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:265
msgid "Global Settings"
@@ -276,7 +280,7 @@ msgstr "Globala inställningar"
#: applications/luci-app-ddns/root/usr/share/rpcd/acl.d/luci-app-ddns.json:3
msgid "Grant access to ddns procedures"
msgstr ""
msgstr "Ge åtkomst till DDNS-procedurer"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:320
msgid "HTTPS not supported"
@@ -284,16 +288,16 @@ msgstr "HTTPS stöds inte"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:622
msgid "Hostname/FQDN to validate, whether an IP update is necessary"
msgstr ""
msgstr "Värdnamn/FQDN som används för att avgöra om en IP-uppdatering behövs"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:806
msgid "IP address source"
msgstr "IP-adressens källa"
msgstr "Källa för IP-adress"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:503
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:629
msgid "IP address version"
msgstr "Version för IP-adress"
msgstr "IP-adressversion"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:506
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:634
@@ -302,11 +306,11 @@ msgstr "IPv4-adress"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:950
msgid "IPv6 address must be given in square brackets"
msgstr ""
msgstr "IPv6-adressen måste anges inom hakparenteser"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:311
msgid "IPv6 is not supported by this system"
msgstr ""
msgstr "IPv6 stöds inte av det här systemet"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:310
msgid "IPv6 not supported"
@@ -322,21 +326,23 @@ msgid ""
"If Wget and cURL package are installed, Wget is used for communication by "
"default."
msgstr ""
"Om paketen Wget och cURL är installerade används Wget som standard för "
"kommunikationen."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:613
msgid "If this service section is disabled it will not be started."
msgstr ""
msgstr "Om den här tjänstesektionen är inaktiverad startas den inte."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:384
msgid "If using secure communication you should verify server certificates!"
msgstr ""
msgstr "Om säker kommunikation används bör servercertifikaten verifieras!"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:325
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:341
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:353
msgid ""
"In some versions cURL/libcurl in OpenWrt is compiled without proxy support."
msgstr ""
msgstr "I vissa OpenWrt-versioner är cURL/libcurl kompilerat utan proxystöd."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:963
msgid "Info"
@@ -351,16 +357,20 @@ msgid ""
"Install 'bind-host' or 'knot-host' or 'drill' package if you know you need "
"TCP for DNS requests."
msgstr ""
"Installera paketet ”bind-host”, ”knot-host” eller ”drill” om du vet att du "
"behöver TCP för DNS-begäranden."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:386
msgid ""
"Install 'ca-certificates' package or needed certificates by hand into /etc/"
"ssl/certs default directory"
msgstr ""
"Installera paketet ”ca-certificates” eller lägg manuellt de certifikat som "
"behövs i standardkatalogen /etc/ssl/certs"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:670
msgid "Install Service"
msgstr ""
msgstr "Installera tjänst"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:812
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:862
@@ -369,15 +379,16 @@ msgstr "Gränssnitt"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1006
msgid "Interval to force an update at the DDNS Provider"
msgstr ""
msgstr "Intervall för att tvinga en uppdatering hos DDNS-leverantören"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1032
msgid "Interval unit for forced updates sent to DDNS Provider."
msgstr ""
"Intervallenhet för tvingade uppdateringar som skickas till DDNS-leverantören."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:997
msgid "Interval unit to check for changed IP"
msgstr ""
msgstr "Intervallenhet för kontroll av ändrad IP-adress"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1145
msgid "Last Update"
@@ -385,11 +396,11 @@ msgstr "Senaste uppdateringen"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:609
msgid "Log File Viewer"
msgstr "Visare av loggfil"
msgstr "Loggfilvisare"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:416
msgid "Log directory"
msgstr ""
msgstr "Loggkatalog"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:428
msgid "Log length"
@@ -407,11 +418,13 @@ msgstr "Logga till syslog"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1130
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/status/include/70_ddns.js:29
msgid "Lookup Hostname"
msgstr "Kolla upp värdnamn"
msgstr "Slå upp värdnamn"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:807
msgid "Method used to determine the system IP-Address to send in updates"
msgstr ""
"Metod som används för att fastställa systemets IP-adress som ska skickas i "
"uppdateringar"
#: 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:1124
@@ -423,16 +436,20 @@ msgid ""
"Neither GNU Wget with SSL nor cURL is installed to select a network to use "
"for communication."
msgstr ""
"Varken GNU Wget med SSL eller cURL är installerat, vilket krävs för att "
"välja ett nätverk för kommunikationen."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:321
msgid ""
"Neither GNU Wget with SSL nor cURL is installed to support secure updates "
"via HTTPS protocol."
msgstr ""
"Varken GNU Wget med SSL eller cURL är installerat för att stödja säkra "
"uppdateringar via HTTPS-protokollet."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:615
msgid "Neither from LuCI interface nor from console."
msgstr ""
msgstr "Varken från LuCI-gränssnittet eller från konsolen."
#: 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:844
@@ -444,7 +461,7 @@ msgstr "Nätverk"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:888
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:906
msgid "Network on which the ddns-updater scripts will be started"
msgstr ""
msgstr "Nätverk som ddns-updater-skripten ska startas på"
#: 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:1149
@@ -453,7 +470,7 @@ msgstr "Aldrig"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:494
msgid "New DDns Service…"
msgstr ""
msgstr "Ny DDNS-tjänst…"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1145
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/status/include/70_ddns.js:28
@@ -462,17 +479,17 @@ msgstr "Nästa uppdatering"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1145
msgid "Next Verify"
msgstr ""
msgstr "Nästa verifiering"
#: 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:1135
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/status/include/70_ddns.js:40
msgid "No Data"
msgstr "Ingen Data"
msgstr "Inga data"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:383
msgid "No certificates found"
msgstr "Inga ceritifikat hittades"
msgstr "Inga certifikat hittades"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:962
msgid "No logging"
@@ -480,12 +497,12 @@ msgstr "Ingen loggning"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:393
msgid "Non-public and by default blocked IPs"
msgstr ""
msgstr "Icke-offentliga och som standard blockerade IP-adresser"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:231
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1121
msgid "Not Running"
msgstr ""
msgstr "Körs inte"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:964
msgid "Notice"
@@ -493,36 +510,41 @@ msgstr "Avisering"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:429
msgid "Number of last lines stored in log files"
msgstr ""
msgstr "Antal senaste rader som lagras i loggfiler"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:916
msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication."
msgstr ""
msgstr "VALFRITT: Tvinga kommunikation enbart via IPv4 eller IPv6."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:937
msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests."
msgstr ""
"VALFRITT: Tvinga användning av TCP i stället för standardprotokollet UDP för "
"DNS-begäranden."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:904
msgid "OPTIONAL: Network to use for communication"
msgstr ""
msgstr "VALFRITT: Nätverk som ska användas för kommunikation"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:946
msgid "OPTIONAL: Proxy-Server for detection and updates."
msgstr ""
msgstr "VALFRITT: Proxyserver för identifiering och uppdateringar."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:925
msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'."
msgstr ""
"VALFRITT: Använd en annan DNS-server än standardservern för att identifiera "
"”Registrerad IP”."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1041
msgid ""
"On Error the script will stop execution after the given number of retries."
msgstr ""
"Vid fel avbryter skriptet körningen efter det angivna antalet omförsök."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:769
msgid "Optional Encoded Parameter"
msgstr ""
msgstr "Valfri kodad parameter"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:775
msgid "Optional Parameter"
@@ -530,15 +552,15 @@ msgstr "Valfri parameter"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:770
msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)"
msgstr ""
msgstr "Valfritt: Ersätter [PARAMENC] i uppdaterings-URL:en (URL-kodad)"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:776
msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)"
msgstr ""
msgstr "Valfritt: Ersätter [PARAMOPT] i uppdaterings-URL:en (INTE URL-kodad)"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:945
msgid "PROXY-Server"
msgstr "PROXY-server"
msgstr "Proxyserver"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:760
msgid "Password"
@@ -546,34 +568,34 @@ msgstr "Lösenord"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:788
msgid "Path to CA-Certificate"
msgstr "Genväg till CA-certifikat"
msgstr "Sökväg till CA-certifikat"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:312
msgid ""
"Please follow the instructions on OpenWrt's homepage to enable IPv6 support"
msgstr ""
msgstr "Följ anvisningarna på OpenWrts webbplats för att aktivera IPv6-stöd"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1086
msgid "Please press [Read] button"
msgstr "Vänligen tryck på [Läs]-knappen"
msgstr "Tryck på knappen [Läs]"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:719
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:741
msgid "Provide either an Update Script OR an Update URL"
msgstr ""
msgstr "Ange antingen ett uppdateringsskript ELLER en uppdaterings-URL"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1069
msgid "Read / Reread log file"
msgstr "Läs / Läs om loggfilen"
msgstr "Läs/läs om loggfilen"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:693
msgid "Really switch service?"
msgstr ""
msgstr "Vill du verkligen byta tjänst?"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1130
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/status/include/70_ddns.js:30
msgid "Registered IP"
msgstr "Registrerad IP"
msgstr "Registrerad IP-adress"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:567
msgid "Reload"
@@ -581,27 +603,27 @@ msgstr "Ladda om"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:550
msgid "Reload this service"
msgstr ""
msgstr "Ladda om den här tjänsten"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:749
msgid "Replaces [DOMAIN] in Update-URL (URL-encoded)"
msgstr ""
msgstr "Ersätter [DOMAIN] i uppdaterings-URL:en (URL-kodad)"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:761
msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)"
msgstr ""
msgstr "Ersätter [PASSWORD] i uppdaterings-URL:en (URL-kodad)"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:755
msgid "Replaces [USERNAME] in Update-URL (URL-encoded)"
msgstr ""
msgstr "Ersätter [USERNAME] i uppdaterings-URL:en (URL-kodad)"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:290
msgid "Restart DDns"
msgstr ""
msgstr "Starta om DDNS"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1058
msgid "Retry Unit"
msgstr ""
msgstr "Enhet för omförsök"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:17
msgid "Run once"
@@ -620,18 +642,18 @@ msgstr "Skript"
#: 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:657
msgid "Select a service"
msgstr ""
msgstr "Välj en tjänst"
#: 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:659
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:679
msgid "Service doesn't support this IP type"
msgstr ""
msgstr "Tjänsten stöder inte den här IP-typen"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:658
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:669
msgid "Service not installed"
msgstr ""
msgstr "Tjänsten är inte installerad"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:455
msgid "Services"
@@ -639,29 +661,31 @@ msgstr "Tjänster"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:450
msgid "Services URL Download"
msgstr ""
msgstr "URL för hämtning av tjänster"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:294
msgid "Services list last update"
msgstr ""
msgstr "Senaste uppdatering av tjänstelistan"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1008
msgid "Setting this parameter to 0 will force the script to only run once"
msgstr ""
msgstr "Om parametern anges till 0 tvingas skriptet att endast köras en gång"
#: 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 ""
"Käll-URL för tjänstefilen. Standardvärdet är huvudarkivet för OpenWrts DDNS-"
"paket."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:201
msgid "Start DDNS"
msgstr ""
msgstr "Starta DDNS"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:272
msgid "State"
msgstr "Status"
msgstr "Tillstånd"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1117
msgid "Status"
@@ -669,19 +693,19 @@ msgstr "Status"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:410
msgid "Status directory"
msgstr ""
msgstr "Statuskatalog"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:566
msgid "Stop"
msgstr "Stopp"
msgstr "Stoppa"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:201
msgid "Stop DDNS"
msgstr ""
msgstr "Stoppa DDNS"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:555
msgid "Stop this service"
msgstr ""
msgstr "Stoppa den här tjänsten"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:19
msgid "Stopped"
@@ -689,33 +713,35 @@ msgstr "Stoppad"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:694
msgid "Switch service"
msgstr ""
msgstr "Byt tjänst"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1043
msgid "The default setting of '0' will retry infinitely."
msgstr ""
msgstr "Standardvärdet ”0” innebär obegränsat antal omförsök."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1051
msgid "The interval between which each subsequent retry commences."
msgstr ""
msgstr "Intervallet mellan varje efterföljande omförsök."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:497
msgid "The service name is already used"
msgstr ""
msgstr "Tjänstenamnet används redan"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/status/include/70_ddns.js:43
msgid "There is no service configured."
msgstr "Det finns ingen tjänst inställd."
msgstr "Ingen tjänst är konfigurerad."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:335
msgid ""
"This is only a problem with multiple WAN interfaces and your DDNS provider "
"is unreachable via one of them."
msgstr ""
"Detta är endast ett problem med flera WAN-gränssnitt om din DDNS-leverantör "
"inte kan nås via ett av dem."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1085
msgid "This is the current content of the log file in %h for this service."
msgstr ""
msgstr "Detta är det aktuella innehållet i tjänstens loggfil i %h."
#: 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
@@ -723,14 +749,16 @@ msgid ""
"This is the default if you run DDNS scripts by yourself (i.e. via cron with "
"force_interval set to '0')"
msgstr ""
"Detta är standard om du kör DDNS-skript själv (t.ex. via cron med "
"force_interval satt till ”0”)"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:893
msgid "This will be autoset to the selected interface"
msgstr ""
msgstr "Detta ställs automatiskt in till det valda gränssnittet"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:608
msgid "Timer Settings"
msgstr ""
msgstr "Timerinställningar"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:811
msgid "URL"
@@ -738,7 +766,7 @@ msgstr "URL"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:852
msgid "URL to detect"
msgstr "Webbadress att upptäcka"
msgstr "URL för identifiering"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:229
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:230
@@ -750,19 +778,19 @@ msgstr "Okänd"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:301
msgid "Update DDns Services List"
msgstr ""
msgstr "Uppdatera listan över DDNS-tjänster"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:684
msgid "Update URL"
msgstr ""
msgstr "Uppdaterings-URL"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:709
msgid "Update URL for updating your DDNS Provider."
msgstr ""
msgstr "Uppdaterings-URL för att uppdatera din DDNS-leverantör."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:782
msgid "Use HTTP Secure"
msgstr "Använd Säker HTTP"
msgstr "Använd HTTPS"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:435
msgid "Use cURL"
@@ -770,7 +798,7 @@ msgstr "Använd cURL"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:871
msgid "User defined script to read system IP-Address"
msgstr ""
msgstr "Användardefinierat skript för att läsa systemets IP-adress"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:754
msgid "Username"
@@ -778,19 +806,19 @@ msgstr "Användarnamn"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:371
msgid "Using specific DNS Server not supported"
msgstr ""
msgstr "Användning av en specifik DNS-server stöds inte"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:990
msgid "Values below 5 minutes == 300 seconds are not supported"
msgstr ""
msgstr "Värden under 5 minuter, dvs. 300 sekunder, stöds inte"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1025
msgid "Values lower than 'Check Interval' except '0' are invalid"
msgstr ""
msgstr "Värden lägre än ”Kontrollintervall”, förutom ”0”, är ogiltiga"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:16
msgid "Verify"
msgstr "Verkställ"
msgstr "Verifiera"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:965
msgid "Warning"
@@ -799,51 +827,59 @@ msgstr "Varning"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:504
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:630
msgid "Which record type to update at the DDNS provider (A/AAAA)"
msgstr ""
msgstr "Vilken posttyp som ska uppdateras hos DDNS-leverantören (A/AAAA)"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1059
msgid "Which time units to use for retry counters."
msgstr ""
msgstr "Vilka tidsenheter som ska användas för omförsöksräknare."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:974
msgid ""
"Writes detailed messages to log file. File will be truncated automatically."
msgstr ""
"Skriver detaljerade meddelanden till loggfilen. Filen trunkeras automatiskt."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:958
msgid ""
"Writes log messages to syslog. Critical Errors will always be written to "
"syslog."
msgstr ""
"Skriver loggmeddelanden till syslog. Kritiska fel skrivs alltid till syslog."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:375
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 ""
"Du bör installera paketet ”bind-host”, ”knot-host”, ”drill” eller ”hostip” "
"om du behöver ange en DNS-server för att identifiera din registrerade IP-"
"adress."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:323
msgid ""
"You should install 'wget' or 'curl' or 'uclient-fetch' with 'libustream-"
"*ssl' package."
msgstr ""
"Du bör installera ”wget” eller ”curl”, eller ”uclient-fetch” tillsammans med "
"paketet ”libustream-*ssl”."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:337
msgid "You should install 'wget' or 'curl' package."
msgstr ""
msgstr "Du bör installera paketet ”wget” eller ”curl”."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:351
msgid ""
"You should install 'wget' or 'uclient-fetch' package or replace libcurl."
msgstr ""
"Du bör installera paketet ”wget” eller ”uclient-fetch” eller ersätta libcurl."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:349
msgid "cURL is installed, but libcurl was compiled without proxy support."
msgstr ""
msgstr "cURL är installerat, men libcurl kompilerades utan proxystöd."
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:348
msgid "cURL without Proxy Support"
msgstr "cURL utan Proxy-stöd"
msgstr "cURL utan proxystöd"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:513
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:642
@@ -856,7 +892,7 @@ msgstr "dagar"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:789
msgid "directory or path/file"
msgstr ""
msgstr "katalog eller sökväg/fil"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1002
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1036
@@ -875,7 +911,7 @@ msgstr "eller"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:313
msgid "or update your system to the latest OpenWrt Release"
msgstr ""
msgstr "eller uppdatera systemet till den senaste OpenWrt-versionen"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1000
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1062
@@ -884,4 +920,4 @@ msgstr "sekunder"
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:793
msgid "to run HTTPS without verification of server certificates (insecure)"
msgstr "för att köra HTTPS utan verifiering av server-certifikaten (osäkert)"
msgstr "för att köra HTTPS utan verifiering av servercertifikat (osäkert)"
@@ -116,6 +116,22 @@ function processLines(buffer, onChunk) {
return buffer;
}
// Parse the docker multiplexed stream format, https://docs.docker.com/reference/api/engine/version/v1.43/#stream-format
function parse_multiplexed_stream(buffer) {
const output = [];
while (buffer.length > 0) {
if (buffer.length < 8) break; // Not enough data for header
let stream_type = buffer.charCodeAt(0);
let payload_length = (buffer.charCodeAt(4) << 24) | (buffer.charCodeAt(5) << 16) | (buffer.charCodeAt(6) << 8) | buffer.charCodeAt(7);
if (buffer.length < 8 + payload_length) break; // Not enough data for payload
let payload = buffer.slice(8, 8 + payload_length);
output.push({ type: stream_type, payload: payload });
buffer = buffer.slice(8 + payload_length);
}
return output;
}
function call_docker(method, path, options = {}) {
return loadPromise.then(() => {
@@ -228,20 +244,24 @@ function call_docker(method, path, options = {}) {
let parsed = safeText || text;
const contentType = response.headers.get('content-type') || '';
// Try normal JSON parse first
try {
parsed = JSON.parse(text);
} catch (err) {
// If the payload is newline-delimited JSON (Docker events), split and parse each line
if (['application/json',
'application/x-ndjson',
'application/json-seq'].includes(contentType) || safeText.includes('\n')) {
const lines = safeText.split(/\r?\n/).filter(Boolean);
try {
parsed = lines.map(l => JSON.parse(l));
} catch (err2) {
// Fall back to raw text if parsing fails
parsed = text;
if ("application/vnd.docker.multiplexed-stream" == contentType) {
parsed = parse_multiplexed_stream(safeText);
} else {
// Try normal JSON parse first
try {
parsed = JSON.parse(text);
} catch (err) {
// If the payload is newline-delimited JSON (Docker events), split and parse each line
if (['application/json',
'application/x-ndjson',
'application/json-seq'].includes(contentType) || safeText.includes('\n')) {
const lines = safeText.split(/\r?\n/).filter(Boolean);
try {
parsed = lines.map(l => JSON.parse(l));
} catch (err2) {
// Fall back to raw text if parsing fails
parsed = text;
}
}
}
}
@@ -1280,13 +1280,14 @@ const ansiToHtml = function(text) {
// Escape HTML special characters
const escapeHtml = (str) => {
const map = {
' ': '&nbsp;',
'&': '&amp;',
'<': '&lt;',
'>': '&gt;',
'"': '&quot;',
"'": '&#039;'
};
return str.replace(/[&<>"']/g, m => map[m]);
return str.replace(/[&<>"' ]/g, m => map[m]);
};
// Split by ANSI escape sequences and process
@@ -1684,7 +1684,10 @@ return dm2.dv.extend({
return false;
}
const logText = response?.body || _('No logs available');
let logText = response?.body || _('No logs available');
if ("application/vnd.docker.multiplexed-stream" == response?.headers['content-type']) {
logText = (response?.body || []).map((frame)=>frame.payload).join('');
}
// Convert ANSI codes to HTML and set innerHTML
logsDiv.innerHTML = dm2.ansiToHtml(logText);
logsDiv.scrollTop = logsDiv.scrollHeight;
+4 -4
View File
@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2025-10-05 13:02+0000\n"
"Last-Translator: A R Asad <arasad222@gmail.com>\n"
"PO-Revision-Date: 2026-08-06 20:04+0000\n"
"Last-Translator: Mehedi Hasan <asmaparvin019@gmail.com>\n"
"Language-Team: Bengali (Bangladesh) <https://hosted.weblate.org/projects/"
"openwrt/luciapplicationsdockerman/bn_BD/>\n"
"Language: bn_BD\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 5.14-dev\n"
"X-Generator: Weblate 2026.8.1.dev0\n"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:505
msgid "/mnt/path"
@@ -940,7 +940,7 @@ msgstr ""
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:359
msgid "Import"
msgstr ""
msgstr "ইম্পরট"
#: 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
+6 -6
View File
@@ -1,6 +1,6 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2026-07-13 02:01+0000\n"
"PO-Revision-Date: 2026-08-14 18:35+0000\n"
"Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>\n"
"Language-Team: Czech <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsdockerman/cs/>\n"
@@ -8,7 +8,7 @@ msgstr ""
"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.7.1.dev0\n"
"X-Generator: Weblate 2026.9.dev0\n"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:505
msgid "/mnt/path"
@@ -866,7 +866,7 @@ msgstr "Název stroje"
#: 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 "Identifikátor"
msgstr "Identif."
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:45
msgid "IP VLAN"
@@ -984,7 +984,7 @@ msgstr "Info"
#: 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 "Dovnitř"
msgstr "Vstup"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:73
msgid ""
@@ -1409,7 +1409,7 @@ msgstr "Operační výstup"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:89
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:80
msgid "Options"
msgstr "Možnosti"
msgstr "Předvolby"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:46
msgid "Overlay network"
@@ -1641,7 +1641,7 @@ msgstr "Prostředky"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1802
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:242
msgid "Restart"
msgstr "Restartovat"
msgstr "Restart"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:154
msgctxt "daemon restart action"
+4 -4
View File
@@ -1,6 +1,6 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2026-06-22 22:15+0000\n"
"PO-Revision-Date: 2026-08-14 17:53+0000\n"
"Last-Translator: Franco Castillo <castillofrancodamian@gmail.com>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsdockerman/es/>\n"
@@ -8,7 +8,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 2026.7.dev0\n"
"X-Generator: Weblate 2026.9.dev0\n"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:505
msgid "/mnt/path"
@@ -1685,7 +1685,7 @@ msgstr "Ejecutar comando"
#: 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 "Ejecutando"
msgstr "Ejecutándose"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:833
msgid "Running Processes"
@@ -2093,7 +2093,7 @@ msgstr "Vista general de Volúmenes"
#: 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:1763
msgid "Warning"
msgstr "Aviso"
msgstr "Advertencia"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1078
msgid "WebSocket"
+5 -5
View File
@@ -1,6 +1,6 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2026-06-07 18:23+0000\n"
"PO-Revision-Date: 2026-08-16 17:38+0000\n"
"Last-Translator: Aindriú Mac Giolla Eoin <aindriu80@gmail.com>\n"
"Language-Team: Irish <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsdockerman/ga/>\n"
@@ -9,7 +9,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.6\n"
"X-Generator: Weblate 2026.9.dev0\n"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:505
msgid "/mnt/path"
@@ -45,7 +45,7 @@ msgstr "Aisteoir"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:582
msgid "Add"
msgstr "Cuir"
msgstr "Cuir leis"
#: 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
@@ -254,7 +254,7 @@ msgstr "Glanadh an taisce tógála"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1189
msgid "Clear"
msgstr "Soiléir"
msgstr "Glan"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:617
msgid "Click to add a new tag to this image"
@@ -988,7 +988,7 @@ msgstr "Eolas"
#: 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 "Iontráil"
msgstr "Dul Isteach"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:73
msgid ""
+3 -3
View File
@@ -1,6 +1,6 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2025-12-07 21:54+0000\n"
"PO-Revision-Date: 2026-08-05 02:03+0000\n"
"Last-Translator: Monarch "
"<monarch.scrap-0p@users.noreply.hosted.weblate.org>\n"
"Language-Team: Japanese <https://hosted.weblate.org/projects/openwrt/"
@@ -9,7 +9,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.15-dev\n"
"X-Generator: Weblate 2026.8.1.dev0\n"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:505
msgid "/mnt/path"
@@ -759,7 +759,7 @@ msgstr ""
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:77
msgid "Fatal"
msgstr ""
msgstr "致命的"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:924
msgid "File"
+3 -3
View File
@@ -1,6 +1,6 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2026-06-27 12:02+0000\n"
"PO-Revision-Date: 2026-08-07 23:22+0000\n"
"Last-Translator: Hyeonjeong Lee <h9101654@gmail.com>\n"
"Language-Team: Korean <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsdockerman/ko/>\n"
@@ -8,7 +8,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.7.dev0\n"
"X-Generator: Weblate 2026.9.dev0\n"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:505
msgid "/mnt/path"
@@ -973,7 +973,7 @@ msgstr "정보(Info)"
#: 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 "인그레스"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:73
msgid ""
+19 -19
View File
@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2026-05-03 08:19+0000\n"
"Last-Translator: BoneNI <bounkirdni@gmail.com>\n"
"PO-Revision-Date: 2026-08-15 13:06+0000\n"
"Last-Translator: Bone NI <bounkirdni@gmail.com>\n"
"Language-Team: Lao <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsdockerman/lo/>\n"
"Language: lo\n"
"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.1\n"
"X-Generator: Weblate 2026.9.dev0\n"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:505
msgid "/mnt/path"
@@ -65,11 +65,11 @@ msgstr "ຂັ້ນສູງ"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:590
msgid "Aliases"
msgstr ""
msgstr "ນາມແຝງ"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1923
msgid "Aliases (optional):"
msgstr ""
msgstr "ນາມແຝງ (ເລືອກໄດ້):"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:342
msgid "All Subtypes"
@@ -109,7 +109,7 @@ msgstr "ສາມາດເຊື່ອມຕໍ່ໄດ້"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:139
msgid "Available"
msgstr "ພ້ອມໃຊ້ງານ"
msgstr "ມີຢູ່"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:431
msgid "Back to Containers"
@@ -242,7 +242,7 @@ msgstr "ລ້າງ build cache ແລ້ວ"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1189
msgid "Clear"
msgstr "ລ້າງ"
msgstr "ລ້າງອອກ"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:617
msgid "Click to add a new tag to this image"
@@ -477,7 +477,7 @@ msgstr "ດີບັກ (Debug)"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:753
msgid "Default (daemon)"
msgstr ""
msgstr "ຄ່າເລີ່ມຕົ້ນ (daemon)"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:57
msgid "Default bridge"
@@ -877,7 +877,7 @@ msgstr "ທີ່ຢູ່ IPv4"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1919
msgid "IPv4 Address (optional):"
msgstr ""
msgstr "ທີ່ຢູ່ IPv4 (ເລືອກໄດ້):"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:64
msgid "IPv6"
@@ -891,7 +891,7 @@ msgstr "ທີ່ຢູ່ IPv6"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1921
msgid "IPv6 Address (optional):"
msgstr ""
msgstr "ທີ່ຢູ່ IPv6 (ເລືອກໄດ້):"
#: 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
@@ -973,7 +973,7 @@ msgstr "ຂໍ້ມູນ"
#: 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 "Ingress"
msgstr "ຂາເຂົ້າ"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:73
msgid ""
@@ -1085,7 +1085,7 @@ msgstr "ຕົວເລືອກລັອກ"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:751
msgid "Log driver"
msgstr ""
msgstr "ໄດເວີການບັນທຶກ (Log driver)"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:745
msgid "Log driver options"
@@ -1211,7 +1211,7 @@ msgstr "ສະຖິຕິເນັດເວີກ"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:282
msgid "Network Aliases"
msgstr ""
msgstr "ນາມແຝງເຄືອຂ່າຍ"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:100
msgid "Network Configurations"
@@ -1376,7 +1376,7 @@ msgstr "ສຳລັບເນັດເວີກທີ່ຜູ້ໃຊ້ກຳ
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:351
msgid "Open in browser"
msgstr ""
msgstr "ເປີດໃນບຣາວເຊີ"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:899
msgid "Operation failed"
@@ -1621,7 +1621,7 @@ msgstr "ຊັບພະຍາກອນ"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1802
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:242
msgid "Restart"
msgstr "ຣີສະຕາດ"
msgstr "ເລີ່ມໃໝ່"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:154
msgctxt "daemon restart action"
@@ -2161,7 +2161,7 @@ msgstr "ອິເມຈ"
#: 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"
@@ -2173,7 +2173,7 @@ msgstr "ໂຫຼດ"
#: 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"
@@ -2189,7 +2189,7 @@ msgstr "node"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:757
msgid "none"
msgstr ""
msgstr "ບໍ່ມີ"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:337
msgid "oom"
@@ -2258,7 +2258,7 @@ 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"
+11 -10
View File
@@ -1,7 +1,8 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2026-07-05 14:58+0000\n"
"Last-Translator: Deni Dgabiev <ghostcraft412@gmail.com>\n"
"PO-Revision-Date: 2026-08-14 12:12+0000\n"
"Last-Translator: SnIPeRSnIPeR "
"<snipersniper@users.noreply.hosted.weblate.org>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsdockerman/ru/>\n"
"Language: ru\n"
@@ -9,7 +10,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Weblate 2026.7.1.dev0\n"
"X-Generator: Weblate 2026.9.dev0\n"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:505
msgid "/mnt/path"
@@ -253,7 +254,7 @@ msgstr "Кэш сборки очищен"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1189
msgid "Clear"
msgstr "Сбросить"
msgstr "Очистить"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:617
msgid "Click to add a new tag to this image"
@@ -639,7 +640,7 @@ msgstr "Дублировать/Редактировать контейнер: %s
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:422
msgid "Edit"
msgstr "Редактировать"
msgstr "Изменить"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:315
msgid "Edit Mount"
@@ -1415,7 +1416,7 @@ msgstr "Результат операции"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:89
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:80
msgid "Options"
msgstr "Опции"
msgstr "Параметры"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:46
msgid "Overlay network"
@@ -1472,7 +1473,7 @@ msgstr "Приостановить этот контейнер"
#: 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 "На паузе"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:742
msgid "Per CPU Stats"
@@ -1754,7 +1755,7 @@ msgstr ""
#: 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:1801
msgid "Start"
msgstr "Начало"
msgstr "Запустить"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:208
msgid "Start this container"
@@ -1773,7 +1774,7 @@ msgstr "Статистика"
#: 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 "Состояние"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1109
msgid "Stderr"
@@ -2004,7 +2005,7 @@ msgstr "Возобновить этот контейнер"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:582
msgid "Update"
msgstr "Применить"
msgstr "Обновить"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1358
msgid "Updated"
File diff suppressed because it is too large Load Diff
+7 -7
View File
@@ -1,6 +1,6 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2026-06-09 01:01+0000\n"
"PO-Revision-Date: 2026-07-28 20:29+0000\n"
"Last-Translator: Oğuz Ersen <oguz@ersen.moe>\n"
"Language-Team: Turkish <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsdockerman/tr/>\n"
@@ -8,7 +8,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 2026.6\n"
"X-Generator: Weblate 2026.8.dev0\n"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:505
msgid "/mnt/path"
@@ -251,7 +251,7 @@ msgstr ""
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1189
msgid "Clear"
msgstr ""
msgstr "Temizle"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:617
msgid "Click to add a new tag to this image"
@@ -326,7 +326,7 @@ msgstr ""
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1520
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1532
msgid "Connected"
msgstr ""
msgstr "Bağlandı"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1063
msgid "Connected to container console"
@@ -541,7 +541,7 @@ msgstr ""
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1538
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1557
msgid "Disconnected"
msgstr ""
msgstr "Bağlantı kesildi"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:536
msgid "Do you want to remove the tag \"%s\"?"
@@ -1285,7 +1285,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 "Hayır"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1877
msgid "No additional networks available to connect"
@@ -2073,7 +2073,7 @@ msgstr ""
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:679
msgid "Yes"
msgstr ""
msgstr "Evet"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:323
msgid "attach"
+6 -6
View File
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2026-06-05 19:02+0000\n"
"Last-Translator: 大王叫我来巡山 "
"PO-Revision-Date: 2026-08-15 13:57+0000\n"
"Last-Translator: Hosted Weblate user 54392 "
"<hamburger2048@users.noreply.hosted.weblate.org>\n"
"Language-Team: Chinese (Simplified Han script) <https://hosted.weblate.org/"
"projects/openwrt/luciapplicationsdockerman/zh_Hans/>\n"
@@ -9,7 +9,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.6\n"
"X-Generator: Weblate 2026.9.dev0\n"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:505
msgid "/mnt/path"
@@ -45,7 +45,7 @@ msgstr "操作方"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:582
msgid "Add"
msgstr "新增"
msgstr "添加"
#: 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
@@ -972,7 +972,7 @@ msgstr "信息"
#: 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 "入"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:73
msgid ""
@@ -1398,7 +1398,7 @@ msgstr "覆盖网络"
#: applications/luci-app-dockerman/root/usr/share/luci/menu.d/luci-app-dockerman.json:19
msgid "Overview"
msgstr "概"
msgstr "概"
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:847
msgid "PID"
@@ -100,6 +100,23 @@ function coerce_values_to_string(obj) {
return obj;
};
// Parse the docker multiplexed stream format, https://docs.docker.com/reference/api/engine/version/v1.43/#stream-format
function parse_multiplexed_stream(buffer) {
let output = [];
while (length(buffer) > 0) {
if (length(buffer) < 8) break; // Not enough data for header
let stream_type = ord(buffer, 0);
let payload_length = ord(buffer, 4) << 24 | ord(buffer, 5) << 16 | ord(buffer, 6) << 8 | ord(buffer, 7);
if (length(buffer) < 8 + payload_length) break; // Not enough data for payload
let payload = substr(buffer, 8, payload_length);
push(output, { type: stream_type, payload: payload });
buffer = substr(buffer, 8 + payload_length);
}
return output;
};
function call_docker(method, path, options) {
options = options || {};
const headers = options.headers || {};
@@ -277,6 +294,8 @@ function call_docker(method, path, options) {
} else {
response_body = data;
}
} else if (response_headers['content-type'] === 'application/vnd.docker.multiplexed-stream' && response_body) {
response_body = parse_multiplexed_stream(response_body);
}
return {
+4 -4
View File
@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2026-05-03 08:19+0000\n"
"Last-Translator: BoneNI <bounkirdni@gmail.com>\n"
"PO-Revision-Date: 2026-08-15 13:06+0000\n"
"Last-Translator: Bone NI <bounkirdni@gmail.com>\n"
"Language-Team: Lao <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsksmbd/lo/>\n"
"Language: lo\n"
"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.1\n"
"X-Generator: Weblate 2026.9.dev0\n"
#: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:58
msgid "Add optional guest access to IPC$ share, disabled by default"
@@ -84,7 +84,7 @@ msgstr "ສືບທອດເຈົ້າຂອງ"
#: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:36
msgid "Interface"
msgstr "ອິນເຕີເຟ"
msgstr "ອິນເຕີເຟ"
#: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:37
msgid "Listen only on the given interface or, if unspecified, on lan"
+25 -18
View File
@@ -1,22 +1,23 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2025-07-14 19:03+0000\n"
"Last-Translator: Kristoffer Grundström <swedishsailfishosuser@tutanota.com>\n"
"PO-Revision-Date: 2026-08-13 09:16+0000\n"
"Last-Translator: Jonatan Nyberg <nickwick@users.noreply.hosted.weblate.org>\n"
"Language-Team: Swedish <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsksmbd/sv/>\n"
"Language: sv\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 5.13-dev\n"
"X-Generator: Weblate 2026.9.dev0\n"
#: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:58
msgid "Add optional guest access to IPC$ share, disabled by default"
msgstr ""
"Lägg till valfri gäståtkomst till IPC$-resursen, inaktiverad som standard"
#: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:57
msgid "Allow guest on IPC$."
msgstr ""
msgstr "Tillåt gäståtkomst till IPC$."
#: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:103
msgid "Allow guests"
@@ -24,15 +25,15 @@ msgstr "Tillåt gäster"
#: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:60
msgid "Allow legacy (insecure) protocols/authentication."
msgstr "TIllåt förlegade (osäkra) protokoll/autentisering."
msgstr "Tillåt äldre (osäkra) protokoll/autentiseringsmetoder."
#: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:61
msgid ""
"Allow legacy smb(v1)/Lanman connections, needed for older devices without "
"smb(v2.1/3) support."
msgstr ""
"Tillåt förlegade smb(v1)/Lanman-anslutningar, behövs för äldre enheter som "
"saknar stöd för smb(v2.1/3)."
"Tillåt äldre SMBv1-/Lanman-anslutningar. Krävs för äldre enheter utan stöd "
"för SMBv2.1/3."
#: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:100
msgid "Allowed users"
@@ -44,7 +45,7 @@ msgstr "Bläddringsbar"
#: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:119
msgid "Create mask"
msgstr "Skapa mask"
msgstr "Skapandemask"
#: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:54
msgid "Description"
@@ -52,7 +53,7 @@ msgstr "Beskrivning"
#: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:125
msgid "Directory mask"
msgstr "Mask för mapp"
msgstr "Katalogmask"
#: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:34
msgid "Edit Template"
@@ -65,19 +66,19 @@ msgstr ""
#: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:98
msgid "Force Root"
msgstr ""
msgstr "Tvinga root"
#: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:33
msgid "General Settings"
msgstr "Generella inställningar"
msgstr "Allmänna inställningar"
#: applications/luci-app-ksmbd/root/usr/share/rpcd/acl.d/luci-app-ksmbd.json:3
msgid "Grant access to LuCI app ksmbd"
msgstr "Tillåt åtkomst till LuCI-app ksmbd"
msgstr "Ge LuCI-appen ksmbd åtkomst"
#: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:114
msgid "Hide dot files"
msgstr ""
msgstr "Dölj punktfiler"
#: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:109
msgid "Inherit owner"
@@ -89,7 +90,8 @@ msgstr "Gränssnitt"
#: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:37
msgid "Listen only on the given interface or, if unspecified, on lan"
msgstr "Lyssna endast på det givna gränssnittet eller, om ospecifierat, på LAN"
msgstr ""
"Lyssna endast på det angivna gränssnittet eller, om inget anges, på LAN"
#: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:81
msgid "Name"
@@ -98,25 +100,27 @@ msgstr "Namn"
#: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:22
#: applications/luci-app-ksmbd/root/usr/share/luci/menu.d/luci-app-ksmbd.json:3
msgid "Network Shares"
msgstr "Nätverksdelningar"
msgstr "Nätverksutdelningar"
#: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:82
msgid "Path"
msgstr "Genväg"
msgstr "sökväg"
#: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:77
msgid ""
"Please add directories to share. Each directory refers to a folder on a "
"mounted device."
msgstr ""
"Lägg till kataloger som ska delas. Varje katalog avser en mapp på en "
"monterad enhet."
#: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:92
msgid "Read-only"
msgstr "Endast läsbar"
msgstr "Skrivskyddad"
#: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:76
msgid "Shared Directories"
msgstr "Delade mappar"
msgstr "Delade kataloger"
#: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:65
msgid ""
@@ -125,6 +129,9 @@ msgid ""
"('|') should not be changed. They get their values from the 'General "
"Settings' tab."
msgstr ""
"Detta är innehållet i filen '/etc/ksmbd/ksmbd.conf.template', som din ksmbd-"
"konfiguration genereras från. Värden mellan lodstreck ('|') ska inte ändras. "
"De hämtas från fliken 'Allmänna inställningar'."
#: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:51
msgid "Workgroup"
+1 -1
View File
@@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-passwall
PKG_VERSION:=26.8.19
PKG_RELEASE:=239
PKG_RELEASE:=240
PKG_PO_VERSION:=$(PKG_VERSION)
PKG_CONFIG_DEPENDS:= \
@@ -25,25 +25,25 @@ o:value("https://wifi.vivo.com.cn/generate_204", "VIVO (CN)")
o.default = o.keylist[3]
if true then
m:appendTemplate("/node_list/node_list")
m:appendTemplate("/node_list/node_list")
if luci.http.formvalue("cbi.submit") == "1" then
local group_order = {}
group_order = luci.http.formvaluetable("group.order")
if group_order then
for k, v in pairs(group_order) do
if v and v~= "" then
local new_order = {}
string.gsub(v, "[^" .. " " .. "]+", function(w)
new_order[#new_order + 1] = w
end)
for idx, name in ipairs(new_order) do
m.uci:reorder(m.config, name, idx - 1)
end
end
end
end
end
if luci.http.formvalue("cbi.submit") == "1" then
local group_order = {}
group_order = luci.http.formvaluetable("group.order")
if group_order then
for k, v in pairs(group_order) do
if v and v~= "" then
local new_order = {}
string.gsub(v, "[^" .. " " .. "]+", function(w)
new_order[#new_order + 1] = w
end)
for idx, name in ipairs(new_order) do
m.uci:reorder(m.config, name, idx - 1)
end
end
end
end
end
end
return api.return_map(m)
@@ -117,9 +117,9 @@ end
o = s:option(DummyValue, "_update", translate("Manual subscription All"))
o.rawhtml = true
o.cfgvalue = function(self, section)
return string.format([[
<input type="button" class="btn cbi-button cbi-button-apply" onclick="ManualSubscribeAll()" value="%s" />]],
translate("Manual subscription All"))
return string.format([[
<input type="button" class="btn cbi-button cbi-button-apply" onclick="ManualSubscribeAll()" value="%s" />]],
translate("Manual subscription All"))
end
s = m:section(TypedSection, "subscribe_list", "", "<font color='red'>" .. translate("When adding a new subscription, please save and apply before manually subscribing. If you only change the subscription URL, you can subscribe manually, and the system will save it automatically.") .. "</font>")
@@ -215,9 +215,9 @@ end
o = s:option(DummyValue, "_update", translate("Manual subscription"))
o.rawhtml = true
o.cfgvalue = function(self, section)
return string.format([[
<input type="button" class="btn cbi-button cbi-button-apply" onclick="ManualSubscribe('%s')" value="%s" />]],
section, translate("Manual subscription"))
return string.format([[
<input type="button" class="btn cbi-button cbi-button-apply" onclick="ManualSubscribe('%s')" value="%s" />]],
section, translate("Manual subscription"))
end
m:appendTemplate("/cbi/sortable", {sectiontype = s.sectiontype})
@@ -916,12 +916,12 @@ function gen_config(var)
if xray_settings.fragment == "1" then
local lengths, delays = {}, {}
api.trim(xray_settings.fragment_lengths):gsub("[^,]+", function(w)
w = w:gsub("%s+", "")
if w ~= "" then lengths[#lengths+1] = w end
w = w:gsub("%s+", "")
if w ~= "" then lengths[#lengths+1] = w end
end)
api.trim(xray_settings.fragment_delays):gsub("[^,]+", function(w)
w = w:gsub("%s+", "")
if w ~= "" then delays[#delays+1] = w end
w = w:gsub("%s+", "")
if w ~= "" then delays[#delays+1] = w end
end)
fragment_table = {
type = "fragment",
@@ -534,7 +534,7 @@
//自定义框
function v_customEnter(cbid, labelSpan, hiddenInput, searchInput, panel, listContainer, customInput) {
let inputValue = customInput.value.trim();
if (!inputValue) {
if (!inputValue) {
return;
}
const existingItems = listContainer.querySelectorAll('li[data-key="' + inputValue + '"]');
@@ -3,42 +3,42 @@ local map = self.map
local api = map.api
-%>
<style>
.dns-con {
padding: 1rem;
}
.faq-title {
color: var(--primary);
font-weight: bolder;
margin-bottom: 0.5rem;
display: inline-block;
}
.reset-title {
color: var(--primary)
font-weight: bolder;
margin-bottom: 0.3rem;
display: inline-block;
margin-top: 1.2rem;
text-decoration: underline;
}
.dns-item {
margin-bottom: 0.8rem;
line-height:1.2rem;
}
.dns-list {
.dns-con {
padding: 1rem;
}
.faq-title {
color: var(--primary);
font-weight: bolder;
margin-bottom: 0.5rem;
display: inline-block;
}
.reset-title {
color: var(--primary)
font-weight: bolder;
margin-bottom: 0.3rem;
display: inline-block;
margin-top: 1.2rem;
text-decoration: underline;
}
.dns-item {
margin-bottom: 0.8rem;
line-height:1.2rem;
}
.dns-list {
text-indent:1rem;
line-height: 1.2rem;
}
}
</style>
<div class="dns-con">
<div id="faq_dns">
<ul>
<b class="faq-title"><%:DNS related issues:%></b>
<b class="faq-title"><%:DNS related issues:%></b>
<li class="dns-item">1. <span><%:Certain browsers such as Chrome have built-in DNS service, which may affect DNS resolution settings. You can go to 'Settings -> Privacy and security -> Use secure DNS' menu to turn it off.%></span></li>
<li class="dns-item">2. <span><%:If you are unable to access the internet after reboot, please try clearing the cache of your terminal devices (make sure to close all open browser application windows first, this step is especially important):%></span>
<ul><li class="dns-list"><span><%:For Windows systems, open Command Prompt and run the command 'ipconfig /flushdns'.%></span></li>
<li class="dns-list"><span><%:For Mac systems, open Terminal and run the command 'sudo killall -HUP mDNSResponder'.%></span></li>
<li class="dns-list"><span><%:For mobile devices, you can clear it by reconnecting to the network, such as toggling Airplane Mode and reconnecting to WiFi.%></span></li>
</ul>
<ul><li class="dns-list"><span><%:For Windows systems, open Command Prompt and run the command 'ipconfig /flushdns'.%></span></li>
<li class="dns-list"><span><%:For Mac systems, open Terminal and run the command 'sudo killall -HUP mDNSResponder'.%></span></li>
<li class="dns-list"><span><%:For mobile devices, you can clear it by reconnecting to the network, such as toggling Airplane Mode and reconnecting to WiFi.%></span></li>
</ul>
</li>
<li class="dns-item">3. <span><%:Please make sure your device's network settings point both the DNS server and default gateway to this router, to ensure DNS queries are properly routed.%></span></li>
</ul>
@@ -58,7 +58,7 @@ local api = map.api
}
var dom = document.getElementById("faq_reset");
if (dom) {
if (dom) {
var li = "";
li += "<a href='#' class='reset-title' onclick='hide()'>" + "<%: Hide in main menu:%>"+ "</a>" + "<br />" + "<%: Browser access: %>" + "<a href='#' onclick='hide()'>" + hide_url + "</a>" + "<br />";
li += "<a href='#' class='reset-title'>" + "<%: Show in main menu:%>"+ "</a>" + "<br />" +"<%: Browser access: %>" + "<a href='#'>" + show_url + "</a>" + "<br />";
@@ -43,7 +43,7 @@ table td, .table .td {
z-index: 99;
text-align: center;
background: white;
box-shadow: darkgrey 10px 10px 30px 5px;
box-shadow: darkgrey 10px 10px 30px 5px;
text-align: center;
padding: 0.5em;
}
@@ -55,8 +55,8 @@ table td, .table .td {
.ping a,
.ping_value a,
.tcping_value a {
text-decoration: none;
cursor: pointer;
text-decoration: none;
cursor: pointer;
}
@media (prefers-color-scheme: dark) {
@@ -15,8 +15,8 @@ table th, .table .th {
table td, .table .td {
text-align: center;
/* white-space: nowrap; */
word-break: keep-all;
/* white-space: nowrap; */
word-break: keep-all;
}
.td.cbi-section-actions {
@@ -75,7 +75,7 @@ local api = map.api
if (!value) {
alert("<%:Please enter query content!%>");
return;
}
}
lookup_btn.disabled = true;
extract_btn.disabled = true;
btn.value = '<%:Querying%>';
@@ -9,7 +9,7 @@ EEOF
}
if [ -e "/etc/config/ucitrack" ]; then
uci -q batch <<-EOF
uci -q batch <<-EOF
delete ucitrack.@passwall[-1]
add ucitrack passwall
set ucitrack.@passwall[-1].init=passwall
@@ -9,7 +9,7 @@ EEOF
}
if [ -e "/etc/config/ucitrack" ]; then
uci -q batch <<-EOF
uci -q batch <<-EOF
delete ucitrack.@passwall_server[-1]
add ucitrack passwall_server
set ucitrack.@passwall_server[-1].init=passwall_server
+1 -1
View File
@@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-passwall2
PKG_VERSION:=26.8.20
PKG_RELEASE:=99
PKG_RELEASE:=100
PKG_PO_VERSION:=$(PKG_VERSION)
PKG_CONFIG_DEPENDS:= \
@@ -6,13 +6,13 @@ local geo_dir = (api.uci_get_c("@global_rules[0]", "v2ray_location_asset") or "/
local geosite_path = geo_dir .. "/geosite.dat"
local geoip_path = geo_dir .. "/geoip.dat"
if fs.access(geosite_path) and fs.access(geoip_path) then
f = SimpleForm(api.c_config)
f.reset = false
f.submit = false
f = SimpleForm(api.c_config)
f.reset = false
f.submit = false
local obj = Template(api.appname .. "/rule/geoview")
obj.api = api
f:append(obj)
local obj = Template(api.appname .. "/rule/geoview")
obj.api = api
f:append(obj)
end
return f
@@ -25,25 +25,25 @@ o:value("https://wifi.vivo.com.cn/generate_204", "VIVO (CN)")
o.default = o.keylist[3]
if true then
m:appendTemplate("/node_list/node_list")
m:appendTemplate("/node_list/node_list")
if luci.http.formvalue("cbi.submit") == "1" then
local group_order = {}
group_order = luci.http.formvaluetable("group.order")
if group_order then
for k, v in pairs(group_order) do
if v and v~= "" then
local new_order = {}
string.gsub(v, "[^" .. " " .. "]+", function(w)
new_order[#new_order + 1] = w
end)
for idx, name in ipairs(new_order) do
m.uci:reorder(m.config, name, idx - 1)
end
end
end
end
end
if luci.http.formvalue("cbi.submit") == "1" then
local group_order = {}
group_order = luci.http.formvaluetable("group.order")
if group_order then
for k, v in pairs(group_order) do
if v and v~= "" then
local new_order = {}
string.gsub(v, "[^" .. " " .. "]+", function(w)
new_order[#new_order + 1] = w
end)
for idx, name in ipairs(new_order) do
m.uci:reorder(m.config, name, idx - 1)
end
end
end
end
end
end
return api.return_map(m)
@@ -112,8 +112,8 @@ end
o = s:option(DummyValue, "_update", translate("Manual subscription All"))
o.rawhtml = true
o.cfgvalue = function(self, section)
return string.format([[
<input type="button" class="btn cbi-button cbi-button-apply" onclick="ManualSubscribeAll()" value="%s" />]],
return string.format([[
<input type="button" class="btn cbi-button cbi-button-apply" onclick="ManualSubscribeAll()" value="%s" />]],
translate("Manual subscription All"))
end
@@ -210,8 +210,8 @@ end
o = s:option(DummyValue, "_update", translate("Manual subscription"))
o.rawhtml = true
o.cfgvalue = function(self, section)
return string.format([[
<input type="button" class="btn cbi-button cbi-button-apply" onclick="ManualSubscribe('%s')" value="%s" />]],
return string.format([[
<input type="button" class="btn cbi-button cbi-button-apply" onclick="ManualSubscribe('%s')" value="%s" />]],
section, translate("Manual subscription"))
end
@@ -39,7 +39,7 @@ for filename in api.fs.dir(types_dir) do
table.insert(type_table, filename)
end
table.sort(type_table, function(a, b)
return a < b
return a < b
end)
for index, value in ipairs(type_table) do
+8 -8
View File
@@ -464,14 +464,14 @@ datatypes.json = is_json
function is_timehhmm(str)
local hour, minute = string.match(str, "^(%d?%d):(%d%d)$")
if hour and minute then
hour = tonumber(hour)
minute = tonumber(minute)
if hour >= 0 and hour <= 23 and minute >= 0 and minute <= 59 then
return true
end
end
return false
if hour and minute then
hour = tonumber(hour)
minute = tonumber(minute)
if hour >= 0 and hour <= 23 and minute >= 0 and minute <= 59 then
return true
end
end
return false
end
datatypes.timehhmm = is_timehhmm
@@ -922,12 +922,12 @@ function gen_config(var)
if xray_settings.fragment == "1" then
local lengths, delays = {}, {}
api.trim(xray_settings.fragment_lengths):gsub("[^,]+", function(w)
w = w:gsub("%s+", "")
if w ~= "" then lengths[#lengths+1] = w end
w = w:gsub("%s+", "")
if w ~= "" then lengths[#lengths+1] = w end
end)
api.trim(xray_settings.fragment_delays):gsub("[^,]+", function(w)
w = w:gsub("%s+", "")
if w ~= "" then delays[#delays+1] = w end
w = w:gsub("%s+", "")
if w ~= "" then delays[#delays+1] = w end
end)
fragment_table = {
type = "fragment",
@@ -534,7 +534,7 @@
//自定义框
function v_customEnter(cbid, labelSpan, hiddenInput, searchInput, panel, listContainer, customInput) {
let inputValue = customInput.value.trim();
if (!inputValue) {
if (!inputValue) {
return;
}
const existingItems = listContainer.querySelectorAll('li[data-key="' + inputValue + '"]');
@@ -3,28 +3,28 @@ local map = self.map
local api = map.api
-%>
<style>
.dns-con {
padding: 1rem;
}
.faq-title {
color: var(--primary);
font-weight: bolder;
margin-bottom: 0.5rem;
display: inline-block;
}
.reset-title {
color: var(--primary)
font-weight: bolder;
margin-bottom: 0.3rem;
display: inline-block;
margin-top: 1.2rem;
text-decoration: underline;
}
.dns-item {
margin-bottom: 0.8rem;
line-height:1.2rem;
}
.dns-list {
.dns-con {
padding: 1rem;
}
.faq-title {
color: var(--primary);
font-weight: bolder;
margin-bottom: 0.5rem;
display: inline-block;
}
.reset-title {
color: var(--primary)
font-weight: bolder;
margin-bottom: 0.3rem;
display: inline-block;
margin-top: 1.2rem;
text-decoration: underline;
}
.dns-item {
margin-bottom: 0.8rem;
line-height:1.2rem;
}
.dns-list {
text-indent:1rem;
line-height: 1.2rem;
}
@@ -32,13 +32,13 @@ local api = map.api
<div class="dns-con">
<div id="faq_dns">
<ul>
<b class="faq-title"><%:DNS related issues:%></b>
<b class="faq-title"><%:DNS related issues:%></b>
<li class="dns-item">1. <span><%:Certain browsers such as Chrome have built-in DNS service, which may affect DNS resolution settings. You can go to 'Settings -> Privacy and security -> Use secure DNS' menu to turn it off.%></span></li>
<li class="dns-item">2. <span><%:If you are unable to access the internet after reboot, please try clearing the cache of your terminal devices (make sure to close all open browser application windows first, this step is especially important):%></span>
<ul><li class="dns-list"><span><%:For Windows systems, open Command Prompt and run the command 'ipconfig /flushdns'.%></span></li>
<li class="dns-list"><span><%:For Mac systems, open Terminal and run the command 'sudo killall -HUP mDNSResponder'.%></span></li>
<li class="dns-list"><span><%:For mobile devices, you can clear it by reconnecting to the network, such as toggling Airplane Mode and reconnecting to WiFi.%></span></li>
</ul>
<ul><li class="dns-list"><span><%:For Windows systems, open Command Prompt and run the command 'ipconfig /flushdns'.%></span></li>
<li class="dns-list"><span><%:For Mac systems, open Terminal and run the command 'sudo killall -HUP mDNSResponder'.%></span></li>
<li class="dns-list"><span><%:For mobile devices, you can clear it by reconnecting to the network, such as toggling Airplane Mode and reconnecting to WiFi.%></span></li>
</ul>
</li>
<li class="dns-item">3. <span><%:Please make sure your device's network settings point both the DNS server and default gateway to this router, to ensure DNS queries are properly routed.%></span></li>
</ul>
@@ -58,7 +58,7 @@ local api = map.api
}
var dom = document.getElementById("faq_reset");
if (dom) {
if (dom) {
var li = "";
li += "<a href='#' class='reset-title' onclick='hide()'>" + "<%: Hide in main menu:%>"+ "</a>" + "<br />" + "<%: Browser access: %>" + "<a href='#' onclick='hide()'>" + hide_url + "</a>" + "<br />";
li += "<a href='#' class='reset-title'>" + "<%: Show in main menu:%>"+ "</a>" + "<br />" +"<%: Browser access: %>" + "<a href='#'>" + show_url + "</a>" + "<br />";
@@ -29,8 +29,8 @@ table th, .table .th {
table td, .table .td {
text-align: center;
/* white-space: nowrap; */
word-break: keep-all;
/* white-space: nowrap; */
word-break: keep-all;
}
#set_node_div {
@@ -41,7 +41,7 @@ table td, .table .td {
z-index: 99;
text-align: center;
background: white;
box-shadow: darkgrey 10px 10px 30px 5px;
box-shadow: darkgrey 10px 10px 30px 5px;
text-align: center;
padding: 0.5em;
}
@@ -53,8 +53,8 @@ table td, .table .td {
.ping a,
.ping_value a,
.tcping_value a {
text-decoration: none;
cursor: pointer;
text-decoration: none;
cursor: pointer;
}
@media (prefers-color-scheme: dark) {
@@ -74,7 +74,7 @@ local api = self.api
if (!value) {
alert("<%:Please enter query content!%>");
return;
}
}
lookup_btn.disabled = true;
extract_btn.disabled = true;
btn.value = '<%:Querying%>';
@@ -11,8 +11,8 @@ table th, .table .th {
table td, .table .td {
text-align: center;
/* white-space: nowrap; */
word-break: keep-all;
/* white-space: nowrap; */
word-break: keep-all;
}
.td.cbi-section-actions {
@@ -9,7 +9,7 @@ EEOF
}
if [ -e "/etc/config/ucitrack" ]; then
uci -q batch <<-EOF
uci -q batch <<-EOF
delete ucitrack.@passwall2[-1]
add ucitrack passwall2
set ucitrack.@passwall2[-1].init=passwall2
@@ -9,7 +9,7 @@ EEOF
}
if [ -e "/etc/config/ucitrack" ]; then
uci -q batch <<-EOF
uci -q batch <<-EOF
delete ucitrack.@passwall2_server[-1]
add ucitrack passwall2_server
set ucitrack.@passwall2_server[-1].init=passwall2_server
@@ -1,6 +1,6 @@
if #arg > 0 then
local api = require "luci.passwall2.api"
local str = arg[1]
table.remove(arg, 1)
print(api.i18n.translatef(str, unpack(arg)))
local api = require "luci.passwall2.api"
local str = arg[1]
table.remove(arg, 1)
print(api.i18n.translatef(str, unpack(arg)))
end
@@ -891,7 +891,7 @@ add_firewall_rule() {
del_firewall_rule() {
for nft in "dstnat" "srcnat" "nat_output" "mangle_prerouting" "mangle_output"; do
local handles=$(nft -a list chain $NFTABLE_NAME ${nft} 2>/dev/null | grep -E "PSW2_" | awk -F '# handle ' '{print$2}')
local handles=$(nft -a list chain $NFTABLE_NAME ${nft} 2>/dev/null | grep -E "PSW2_" | awk -F '# handle ' '{print$2}')
for handle in $handles; do
nft delete rule $NFTABLE_NAME ${nft} handle ${handle} 2>/dev/null
done
+4 -4
View File
@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2026-05-02 12:03+0000\n"
"Last-Translator: BoneNI <bounkirdni@gmail.com>\n"
"PO-Revision-Date: 2026-08-15 13:06+0000\n"
"Last-Translator: Bone NI <bounkirdni@gmail.com>\n"
"Language-Team: Lao <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationssamba4/lo/>\n"
"Language: lo\n"
"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.1\n"
"X-Generator: Weblate 2026.9.dev0\n"
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:120
msgid "Allow guests"
@@ -121,7 +121,7 @@ msgstr "ສືບທອດເຈົ້າຂອງ"
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:34
msgid "Interface"
msgstr "ອິນເຕີເຟ"
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"
+40 -28
View File
@@ -1,8 +1,8 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"PO-Revision-Date: 2025-07-14 19:03+0000\n"
"Last-Translator: Kristoffer Grundström <swedishsailfishosuser@tutanota.com>\n"
"PO-Revision-Date: 2026-08-13 09:16+0000\n"
"Last-Translator: Jonatan Nyberg <nickwick@users.noreply.hosted.weblate.org>\n"
"Language-Team: Swedish <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationssamba4/sv/>\n"
"Language: sv\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.13-dev\n"
"X-Generator: Weblate 2026.9.dev0\n"
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:120
msgid "Allow guests"
@@ -18,15 +18,15 @@ msgstr "Tillåt gäster"
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:67
msgid "Allow legacy (insecure) protocols/authentication."
msgstr "TIllåt förlegade (osäkra) protokoll/autentisering."
msgstr "Tillåt äldre (osäkra) protokoll/autentiseringsmetoder."
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:68
msgid ""
"Allow legacy smb(v1)/Lanman connections, needed for older devices without "
"smb(v2.1/3) support."
msgstr ""
"Tillåt förlegade smb(v1)/Lanman-anslutningar, behövs för äldre enheter som "
"saknar stöd för smb(v2.1/3)."
"Tillåt äldre SMBv1-/Lanman-anslutningar. Krävs för äldre enheter utan stöd "
"för SMBv2.1/3."
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:117
msgid "Allowed users"
@@ -34,7 +34,7 @@ msgstr "Tillåtna användare"
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:151
msgid "Apple Time-machine share"
msgstr ""
msgstr "Apple Time Machine-utdelning"
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:104
msgid "Browse-able"
@@ -42,7 +42,7 @@ msgstr "Bläddringsbar"
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:136
msgid "Create mask"
msgstr "Skapa mask"
msgstr "Skapandemask"
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:54
msgid "Description"
@@ -50,19 +50,19 @@ msgstr "Beskrivning"
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:142
msgid "Directory mask"
msgstr "Mask för mapp"
msgstr "Katalogmask"
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:74
msgid "Disable Active Directory Domain Controller"
msgstr ""
msgstr "Inaktivera Active Directory-domänkontrollant"
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:71
msgid "Disable Netbios"
msgstr ""
msgstr "Inaktivera NetBIOS"
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:77
msgid "Disable Winbind"
msgstr ""
msgstr "Inaktivera Winbind"
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:32
msgid "Edit Template"
@@ -70,16 +70,15 @@ msgstr "Redigera mall"
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:32
msgid "Edit the template that is used for generating the samba configuration."
msgstr ""
"Redigera mallen som används för att generera konfigurationen för samba."
msgstr "Redigera mallen som används för att generera Samba-konfigurationen."
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:57
msgid "Enable extra Tuning"
msgstr ""
msgstr "Aktivera extra finjustering"
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:64
msgid "Enable macOS compatible shares"
msgstr ""
msgstr "Aktivera macOS-kompatibla utdelningar"
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:58
msgid ""
@@ -87,32 +86,37 @@ msgid ""
"speeds and better operation via WiFi. Not recommend if multiple clients "
"write to the same files, at the same time!"
msgstr ""
"Aktivera vissa community-utvecklade finjusteringsparametrar som kan "
"förbättra skrivhastigheten och funktionen via WiFi. Rekommenderas inte om "
"flera klienter skriver till samma filer samtidigt!"
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:65
msgid ""
"Enables Apple's AAPL extension globally and adds macOS compatibility options "
"to all shares."
msgstr ""
"Aktiverar Apples AAPL-tillägg globalt och lägger till macOS-"
"kompatibilitetsalternativ för alla utdelningar."
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:115
msgid "Force Root"
msgstr ""
msgstr "Tvinga root"
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:61
msgid "Force synchronous I/O"
msgstr ""
msgstr "Tvinga synkron I/O"
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:31
msgid "General Settings"
msgstr "Generella inställningar"
msgstr "Allmänna inställningar"
#: applications/luci-app-samba4/root/usr/share/rpcd/acl.d/luci-app-samba4.json:3
msgid "Grant access to LuCI app samba4"
msgstr ""
msgstr "Ge åtkomst till LuCI-appen samba4"
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:126
msgid "Guests only"
msgstr ""
msgstr "Endast gäster"
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:131
msgid "Inherit owner"
@@ -124,7 +128,8 @@ msgstr "Gränssnitt"
#: 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 "Lyssna endast på det givna gränssnittet eller, om ospecifierat, på LAN"
msgstr ""
"Lyssna endast på det angivna gränssnittet eller, om inget anges, på LAN"
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:98
msgid "Name"
@@ -133,31 +138,35 @@ msgstr "Namn"
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:23
#: applications/luci-app-samba4/root/usr/share/luci/menu.d/luci-app-samba4.json:3
msgid "Network Shares"
msgstr "Nätverksdelningar"
msgstr "Nätverksutdelningar"
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:62
msgid ""
"On lower-end devices may increase speeds, by forcing synchronous I/O instead "
"of the default asynchronous."
msgstr ""
"På enklare enheter kan detta öka hastigheten genom att tvinga synkron I/O i "
"stället för den asynkrona standardinställningen."
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:99
msgid "Path"
msgstr "Genväg"
msgstr "sökväg"
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:94
msgid ""
"Please add directories to share. Each directory refers to a folder on a "
"mounted device."
msgstr ""
"Lägg till kataloger som ska delas. Varje katalog avser en mapp på en "
"monterad enhet."
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:109
msgid "Read-only"
msgstr "Endast läsbar"
msgstr "Skrivskyddad"
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:93
msgid "Shared Directories"
msgstr "Delade mappar"
msgstr "Delade kataloger"
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:82
msgid ""
@@ -166,14 +175,17 @@ msgid ""
"('|') should not be changed. They get their values from the 'General "
"Settings' tab."
msgstr ""
"Detta är innehållet i filen ”/etc/samba/smb.conf.template”, som Samba-"
"konfigurationen genereras från. Värden omslutna av lodstreck (”|”) ska inte "
"ändras. De hämtar sina värden från fliken ”Allmänna inställningar”."
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:153
msgid "Time-machine size in GB"
msgstr ""
msgstr "Time Machine-storlek i GB"
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:148
msgid "Vfs objects"
msgstr ""
msgstr "VFS-objekt"
#: applications/luci-app-samba4/htdocs/luci-static/resources/view/samba4.js:51
msgid "Workgroup"
+1 -1
View File
@@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk
PKG_LICENSE:=GPL-3.0-or-later
PKG_MAINTAINER:=Nick Peng <pymumu@gmail.com>
PKG_VERSION:=1.2025.47.2
PKG_RELEASE:=11
PKG_RELEASE:=12
LUCI_TITLE:=LuCI for smartdns
LUCI_DESCRIPTION:=Provides Luci for smartdns
+3 -3
View File
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"PO-Revision-Date: 2026-05-22 21:11+0000\n"
"PO-Revision-Date: 2026-08-13 09:27+0000\n"
"Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>\n"
"Language-Team: Czech <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationssmartdns/cs/>\n"
@@ -10,7 +10,7 @@ msgstr ""
"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.6.dev0\n"
"X-Generator: Weblate 2026.9.dev0\n"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:791
msgid "Additional Args for upstream dns servers"
@@ -583,7 +583,7 @@ msgstr "Režim odpovědi"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1173
msgid "Restart"
msgstr "Restartovat"
msgstr "Restart"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1164
msgid "Restart Service"
+4 -4
View File
@@ -1,8 +1,8 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"PO-Revision-Date: 2026-03-08 17:32+0000\n"
"Last-Translator: hmzs <hmzs@1szer1.hu>\n"
"PO-Revision-Date: 2026-08-05 16:35+0000\n"
"Last-Translator: Granilla Péter <granilla.peter3@gmail.com>\n"
"Language-Team: Hungarian <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationssmartdns/hu/>\n"
"Language: hu\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-dev\n"
"X-Generator: Weblate 2026.8.1.dev0\n"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:791
msgid "Additional Args for upstream dns servers"
@@ -155,7 +155,7 @@ msgstr ""
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:559
msgid "Description"
msgstr ""
msgstr "Leírás"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:75
msgid "Dnsmasq Forwarded To Smartdns Failure"
+4 -4
View File
@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2026-05-02 12:02+0000\n"
"Last-Translator: BoneNI <bounkirdni@gmail.com>\n"
"PO-Revision-Date: 2026-08-15 13:06+0000\n"
"Last-Translator: Bone NI <bounkirdni@gmail.com>\n"
"Language-Team: Lao <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationssmartdns/lo/>\n"
"Language: lo\n"
"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.1\n"
"X-Generator: Weblate 2026.9.dev0\n"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:791
msgid "Additional Args for upstream dns servers"
@@ -568,7 +568,7 @@ msgstr "ຮູບແບບການຕອບສະໜອງ"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1173
msgid "Restart"
msgstr "ຣີສະຕາດ"
msgstr "ເລີ່ມໃໝ່"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1164
msgid "Restart Service"
+3 -3
View File
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"PO-Revision-Date: 2026-04-25 12:14+0000\n"
"PO-Revision-Date: 2026-08-14 12:12+0000\n"
"Last-Translator: SnIPeRSnIPeR "
"<snipersniper@users.noreply.hosted.weblate.org>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/openwrt/"
@@ -12,7 +12,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Weblate 5.17.1-dev\n"
"X-Generator: Weblate 2026.9.dev0\n"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:791
msgid "Additional Args for upstream dns servers"
@@ -823,7 +823,7 @@ msgstr "Ошибка формата URL, формат: http:// или https://"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:522
msgid "Update"
msgstr "Обновление"
msgstr "Обновить"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:513
msgid "Update Files"
+179 -138
View File
@@ -1,8 +1,8 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"PO-Revision-Date: 2026-03-22 17:10+0000\n"
"Last-Translator: Kristoffer Grundström <swedishsailfishosuser@tutanota.com>\n"
"PO-Revision-Date: 2026-08-13 09:17+0000\n"
"Last-Translator: Jonatan Nyberg <nickwick@users.noreply.hosted.weblate.org>\n"
"Language-Team: Swedish <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationssmartdns/sv/>\n"
"Language: sv\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-dev\n"
"X-Generator: Weblate 2026.9.dev0\n"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:791
msgid "Additional Args for upstream dns servers"
@@ -21,50 +21,56 @@ msgstr "Ytterligare argument för uppströms DNS-servrar"
msgid ""
"Additional Flags for rules, read help on domain-rule for more information."
msgstr ""
"Ytterligare flaggor för regler. Läs hjälpen för domain-rule för mer "
"information."
#: 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 "Ytterligare regelflagga"
#: 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 "Ytterligare serverargument"
#: 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 ""
"Ytterligare serverargument. Se hjälpbeskrivningen för alternativet bind."
#: 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 "Avancerade inställningar"
msgstr "avancerade inställningar"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:252
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 ""
"Försöker svara med gamla cachelagrade svar med TTL 0 utan att vänta på att "
"den faktiska namnuppslagningen ska slutföras."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:160
msgid "Automatically Set Dnsmasq"
msgstr ""
msgstr "Konfigurera Dnsmasq automatiskt"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:160
msgid "Automatically set as upstream of dnsmasq when port changes."
msgstr ""
"Ange automatiskt SmartDNS som uppströmsserver för dnsmasq när porten ändras."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:228
msgid "Bind Device"
msgstr ""
msgstr "Bind till enhet"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:233
msgid "Bind Device Name"
msgstr ""
msgstr "Namn på enhet att binda till"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:997
msgid "Block domain"
@@ -76,11 +82,11 @@ msgstr "Blockera domän."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:261
msgid "Cache Persist"
msgstr ""
msgstr "Beständig cache"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:257
msgid "Cache Size"
msgstr "Cache-storlek"
msgstr "Cachestorlek"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:120
msgid "Collecting data ..."
@@ -91,18 +97,20 @@ msgid ""
"Configure IP blacklists that will be filtered from the results of specific "
"DNS server."
msgstr ""
"Konfigurera IP-blockeringslistor som filtreras bort från resultaten från en "
"viss DNS-server."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:928
msgid "Configure block domain list."
msgstr ""
msgstr "Konfigurera listan över blockerade domäner."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:949
msgid "Configure domain rule list."
msgstr ""
msgstr "Konfigurera listan med domänregler."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:899
msgid "Configure forwarding domain name list."
msgstr ""
msgstr "Konfigurera listan över domännamn som ska vidarebefordras."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:136
msgid "Custom Settings"
@@ -110,40 +118,40 @@ msgstr "Anpassade inställningar"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:804
msgid "DNS Block Setting"
msgstr ""
msgstr "Inställningar för DNS-blockering"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:803
msgid "DNS Forwarding Setting"
msgstr ""
msgstr "Inställningar för DNS-vidarebefordran"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:647
msgid "DNS Server Name"
msgstr ""
msgstr "DNS-servernamn"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:674
msgid "DNS Server group"
msgstr ""
msgstr "DNS-servergrupp"
#: 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 "DNS-servergruppen som servern tillhör, till exempel kontor eller hem."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:650
msgid "DNS Server ip"
msgstr ""
msgstr "DNS-serverns IP-adress"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:655
msgid "DNS Server port"
msgstr ""
msgstr "DNS-serverport"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:664
msgid "DNS Server type"
msgstr ""
msgstr "DNS-servertyp"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:257
msgid "DNS domain result cache size"
msgstr ""
msgstr "Cachestorlek för DNS-domänresultat"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:486
msgid "DNS64"
@@ -151,7 +159,7 @@ msgstr "DNS64"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:133
msgid "DNS64 Server Settings"
msgstr ""
msgstr "DNS64-serverinställningar"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:559
msgid "Description"
@@ -159,16 +167,16 @@ msgstr "Beskrivning"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:75
msgid "Dnsmasq Forwarded To Smartdns Failure"
msgstr ""
msgstr "Misslyckad vidarebefordran från Dnsmasq till SmartDNS"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:718
msgid "Do not check certificate."
msgstr ""
msgstr "Kontrollera inte certifikatet."
#: 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 "Kontrollera inte hastigheten."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:806
msgid "Domain Address"
@@ -177,30 +185,30 @@ msgstr "Domänens adress"
#: 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 "Domän-lista"
msgstr "Domänlista"
#: 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 "Domänlistefil"
#: 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 "Lista med domänregler"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:964
msgid "Domain Rule Name"
msgstr ""
msgstr "Namn på domänregel"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:799
msgid "Domain Rules"
msgstr "Domän-regler"
msgstr "Domänregler"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:799
msgid "Domain Rules Settings"
msgstr ""
msgstr "Inställningar för domänregler"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:323
msgid "Domain TTL"
@@ -208,15 +216,15 @@ msgstr "Domän-TTL"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:335
msgid "Domain TTL Max"
msgstr ""
msgstr "Maximal domän-TTL"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:327
msgid "Domain TTL Min"
msgstr ""
msgstr "Minimal domän-TTL"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:245
msgid "Domain prefetch"
msgstr ""
msgstr "Förhämtning av domäner"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1158
msgid "Donate"
@@ -224,7 +232,7 @@ msgstr "Donera"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1157
msgid "Donate to smartdns"
msgstr ""
msgstr "Donera till SmartDNS"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:525
msgid "Download Files"
@@ -232,18 +240,20 @@ msgstr "Hämta filer"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:134
msgid "Download Files Setting"
msgstr ""
msgstr "Inställningar för filhämtning"
#: 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 ""
"Hämta domänlistefiler för domain-rule och inkluderade konfigurationsfiler. "
"Uppdatera sidan efter hämtningen för att ändringarna ska börja gälla."
#: 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 "IP-val för dual-stack"
#: 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,53 +264,53 @@ msgstr "Aktivera"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:494
msgid "Enable Auto Update"
msgstr ""
msgstr "Aktivera automatisk uppdatering"
#: 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 "Aktivera IP-val mellan IPv4 och IPv6"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:223
msgid "Enable IPV6 DNS Server"
msgstr ""
msgstr "Aktivera IPv6-DNS-server"
#: 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 "Aktivera TCP-DNS-server"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:494
msgid "Enable daily auto update."
msgstr ""
msgstr "Aktivera daglig automatisk uppdatering."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:246
msgid "Enable domain prefetch, accelerate domain response speed."
msgstr ""
msgstr "Aktivera förhämtning av domäner för snabbare domänsvar."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:371
msgid "Enable or disable second DNS server."
msgstr ""
msgstr "Aktivera eller inaktivera den sekundära DNS-servern."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:141
msgid "Enable or disable smartdns server"
msgstr ""
msgstr "Aktivera eller inaktivera SmartDNS-servern"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:693
msgid "Exclude DNS Server from default group."
msgstr ""
msgstr "Uteslut DNS-servern från standardgruppen."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:693
msgid "Exclude Default Group"
msgstr ""
msgstr "Uteslut standardgruppen"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:214
msgid "Fastest IP"
msgstr ""
msgstr "Snabbaste IP-adress"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:215
msgid "Fastest Response"
msgstr "Snabbast svar"
msgstr "Snabbaste svar"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:534
msgid "File Name"
@@ -312,7 +322,7 @@ msgstr "Filtyp"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:701
msgid "Filtering IP with blacklist"
msgstr ""
msgstr "Filtrera IP-adresser med blockeringslista"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:213
msgid "First Ping"
@@ -323,42 +333,44 @@ msgstr "Första ping"
#: 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 "Tvinga SOA för AAAA"
#: 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 "Tvinga SOA för AAAA."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:276
msgid "Force HTTPS SOA"
msgstr ""
msgstr "Tvinga SOA för HTTPS"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:276
msgid "Force HTTPS SOA."
msgstr ""
msgstr "Tvinga SOA för HTTPS."
#: 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
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:637
msgid "General Settings"
msgstr "Generella inställningar"
msgstr "Allmänna inställningar"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:598
msgid "Generate Coredump"
msgstr ""
msgstr "Generera kärndump"
#: 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 ""
"Generera en kärndumpfil när SmartDNS kraschar. Kärndumpfilen sparas i /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"
msgstr ""
msgstr "Ge åtkomst till LuCI-appen SmartDNS"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:736
msgid "HTTP Host"
@@ -366,53 +378,57 @@ msgstr "HTTP-värd"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:807
msgid "IP Blacklist"
msgstr ""
msgstr "IP-blockeringslista"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:700
msgid "IP Blacklist Filtering"
msgstr ""
msgstr "Filtrering med IP-blockeringslista"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:223
msgid "IPV6 Server"
msgstr "IPV6-server"
msgstr "IPv6-server"
#: 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-namn"
#: 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-namn."
#: 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 "Om du uppskattar programvaran får du gärna bjuda mig på en kopp kaffe."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:352
msgid "Include Config Files<br>/etc/smartdns/conf.d"
msgstr ""
msgstr "Inkludera konfigurationsfiler<br>/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 ""
"Inkludera andra konfigurationsfiler från /etc/smartdns/conf.d eller en "
"anpassad sökväg. Filer kan hämtas från hämtningssidan."
#: 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-namn. Lägg till domänresultatet i ipset när hastighetskontrollen "
"misslyckas."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:526
msgid "List of files to download."
msgstr ""
msgstr "Lista över filer som ska hämtas."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:228
msgid "Listen only on the specified interfaces."
msgstr ""
msgstr "Lyssna endast på de angivna gränssnitten."
#: 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
@@ -421,7 +437,7 @@ msgstr "Lokal port"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:623
msgid "Log File"
msgstr "Logg-fil"
msgstr "Loggfil"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:607
msgid "Log Level"
@@ -429,42 +445,42 @@ msgstr "Loggnivå"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:619
msgid "Log Number"
msgstr "Logg-nummer"
msgstr "Antal loggfiler"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:603
msgid "Log Size"
msgstr "Logg-storlek"
msgstr "Loggstorlek"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:756
msgid "Marking Packets"
msgstr ""
msgstr "Paketmarkering"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:336
msgid "Maximum TTL for all domain result."
msgstr ""
msgstr "Maximal TTL för alla domänresultat."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:328
msgid "Minimum TTL for all domain result."
msgstr ""
msgstr "Minimal TTL för alla domänresultat."
#: 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-namn"
#: 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 "Felaktigt format för NFTset-namn. Format: [#[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-namn. Format: [#[4|6]:[family#table#set]]"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:65
msgid "NOT RUNNING"
@@ -472,13 +488,15 @@ msgstr "KÖRS INTE"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:233
msgid "Name of device name listen on."
msgstr ""
msgstr "Namnet på enheten som ska avlyssnas."
#: 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-namn. Lägg till domänresultatet i nftset när hastighetskontrollen "
"misslyckas. Format: [#[4|6]:[family#table#set]]"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1013
msgid "No"
@@ -486,15 +504,15 @@ msgstr "Nej"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:281
msgid "No Speed IPset Name"
msgstr ""
msgstr "IPset-namn utan hastighetskontroll"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:302
msgid "No Speed NFTset Name"
msgstr ""
msgstr "NFTset-namn utan hastighetskontroll"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:717
msgid "No check certificate"
msgstr ""
msgstr "Kontrollera inte certifikatet"
#: 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 +522,35 @@ msgstr "Ingen"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:783
msgid "Only socks5 proxy support udp server."
msgstr ""
msgstr "Endast SOCKS5-proxy stöder UDP-server."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:779
msgid "Please set proxy server first."
msgstr ""
msgstr "Konfigurera proxyservern först."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:566
msgid "Proxy Server"
msgstr "Proxy-server"
msgstr "Proxyserver"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:135
msgid "Proxy Server Settings"
msgstr ""
msgstr "Proxyserverinställningar"
#: 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 "Proxyserverns URL. Format: [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 ""
"Felaktigt URL-format för proxyserver. Format: [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 ""
"Gör DNS-frågor via en viss DNS-servergrupp, till exempel kontor eller hem."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:63
msgid "RUNNING"
@@ -537,24 +558,24 @@ msgstr "KÖRS"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:340
msgid "Reply Domain TTL Max"
msgstr ""
msgstr "Maximal TTL i domänsvar"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:341
msgid "Reply maximum TTL for all domain result."
msgstr ""
msgstr "Maximal TTL som ska anges i svar för alla domänresultat."
#: 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 "Rapportera buggar"
msgstr "Rapportera fel"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:266
msgid "Resolve Local Hostnames"
msgstr ""
msgstr "Slå upp lokala värdnamn"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:266
msgid "Resolve local hostnames by reading Dnsmasq lease file."
msgstr ""
msgstr "Slå upp lokala värdnamn genom att läsa Dnsmasqs lease-fil."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:208
msgid "Response Mode"
@@ -570,56 +591,60 @@ msgstr "Starta om tjänsten"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:132
msgid "Second Server Settings"
msgstr ""
msgstr "Inställningar för sekundär server"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:251
msgid "Serve expired"
msgstr ""
msgstr "Använd utgångna svar"
#: 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 "Servergrupp"
#: 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 "Servergruppen %s finns inte"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:146
msgid "Server Name"
msgstr "Server-namn"
msgstr "Servernamn"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:806
msgid "Set Specific domain ip address."
msgstr ""
msgstr "Ange en specifik IP-adress för domänen."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:805
msgid "Set Specific domain rule list."
msgstr ""
msgstr "Ange en specifik lista med domänregler."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:807
msgid "Set Specific ip blacklist."
msgstr ""
msgstr "Ange en specifik IP-blockeringslista."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:708
msgid "Set TLS hostname to verify."
msgstr ""
msgstr "Ange TLS-värdnamn som ska verifieras."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:757
msgid "Set mark on packets."
msgstr ""
msgstr "Ange markering på paket."
#: 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 ""
"Ange HTTP-värden som används för frågan. Använd parametern när värden i URL-"
"adressen är en IP-adress."
#: 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 ""
"Anger Server Name Indication (SNI) för frågan. Använd ”-” för att inaktivera "
"SNI-namn."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:127
msgid "Settings"
@@ -627,56 +652,56 @@ msgstr "Inställningar"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:401
msgid "Skip Address Rules"
msgstr ""
msgstr "Hoppa över adressregler"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:430
msgid "Skip Cache"
msgstr ""
msgstr "Hoppa över cache"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:430
msgid "Skip Cache."
msgstr ""
msgstr "Hoppa över cache."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:424
msgid "Skip Dualstack Selection"
msgstr ""
msgstr "Hoppa över dual-stack-val"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:425
msgid "Skip Dualstack Selection."
msgstr ""
msgstr "Hoppa över dual-stack-val."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:413
msgid "Skip Ipset Rule"
msgstr ""
msgstr "Hoppa över ipset-regel"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:407
msgid "Skip Nameserver Rule"
msgstr ""
msgstr "Hoppa över namnserverregel"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:419
msgid "Skip SOA Address Rule"
msgstr ""
msgstr "Hoppa över SOA-adressregel"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:420
msgid "Skip SOA address rules."
msgstr ""
msgstr "Hoppa över SOA-adressregler."
#: 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 "Hoppa över hastighetskontroll"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:402
msgid "Skip address rules."
msgstr ""
msgstr "Hoppa över adressregler."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:414
msgid "Skip ipset rules."
msgstr ""
msgstr "Hoppa över ipset-regler."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:408
msgid "Skip nameserver rules."
msgstr ""
msgstr "Hoppa över namnserverregler."
#: 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
@@ -692,35 +717,42 @@ msgid ""
"SmartDNS is a local high-performance DNS server, supports finding fastest "
"IP, supports ad filtering, and supports avoiding DNS poisoning."
msgstr ""
"SmartDNS är en lokal högpresterande DNS-server som kan hitta den snabbaste "
"IP-adressen, filtrera annonser och motverka DNS-förgiftning."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1141
msgid "SmartDNS official website"
msgstr ""
msgstr "SmartDNS officiella webbplats"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:376
msgid "Smartdns local server port"
msgstr ""
msgstr "SmartDNS lokala serverport"
#: 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 ""
"SmartDNS lokala serverport. SmartDNS anges automatiskt som huvudsaklig DNS-"
"server när porten är 53."
#: 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 ""
"SmartDNS svarsläge. Första ping: returnera den första IP-adressen som svarar "
"på ping. Snabbaste IP: returnera den snabbaste IP-adressen. Snabbaste svar: "
"returnera det snabbaste DNS-svaret."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:146
msgid "Smartdns server name"
msgstr ""
msgstr "SmartDNS-servernamn"
#: 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 "SmartDNS-läge för hastighetskontroll."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1118
msgid ""
@@ -728,16 +760,19 @@ msgid ""
"in the domains are never forwarded and always replied to with the specified "
"IP address which may be IPv4 or IPv6."
msgstr ""
"Ange en IP-adress som ska returneras för alla värdar i de angivna domänerna. "
"Frågor inom domänerna vidarebefordras aldrig utan besvaras alltid med den "
"angivna IP-adressen, som kan vara IPv4 eller 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 "Läge för hastighetskontroll"
#: 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 "Läget för hastighetskontroll är ogiltigt."
#: 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
@@ -747,23 +782,23 @@ msgstr "TCP-server"
#: 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 "TCP-port saknas"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:707
msgid "TLS Hostname Verify"
msgstr ""
msgstr "Verifiering av TLS-värdnamn"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:726
msgid "TLS SNI name"
msgstr ""
msgstr "TLS-SNI-namn"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:745
msgid "TLS SPKI Pinning"
msgstr ""
msgstr "TLS-SPKI-pinning"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:323
msgid "TTL for all domain result."
msgstr ""
msgstr "TTL för alla domänresultat."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1136
msgid "Technical Support"
@@ -775,7 +810,7 @@ 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 "Felaktigt URL-format. Format: http:// eller https://"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:522
msgid "Update"
@@ -787,15 +822,15 @@ msgstr "Uppdatera filer"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:499
msgid "Upload Config File"
msgstr ""
msgstr "Ladda upp konfigurationsfil"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:506
msgid "Upload Domain List File"
msgstr ""
msgstr "Ladda upp domänlistefil"
#: 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 "Ladda upp domänlistefil till /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,14 +838,16 @@ msgid ""
"Upload domain list file, or configure auto download from Download File "
"Setting page."
msgstr ""
"Ladda upp en domänlistefil eller konfigurera automatisk hämtning på sidan "
"med inställningar för filhämtning."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:920
msgid "Upload domain list file."
msgstr ""
msgstr "Ladda upp domänlistefil."
#: 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 "Ladda upp SmartDNS-konfigurationsfil till /etc/smartdns/conf.d"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:630
msgid "Upstream Servers"
@@ -821,6 +858,8 @@ msgid ""
"Upstream Servers, support UDP, TCP protocol. Please configure multiple DNS "
"servers, including multiple foreign DNS servers."
msgstr ""
"Uppströmsservrar med stöd för UDP- och TCP-protokoll. Konfigurera flera DNS-"
"servrar, inklusive flera externa DNS-servrar."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:764
msgid "Use Proxy"
@@ -828,7 +867,7 @@ msgstr "Använd proxy"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:765
msgid "Use proxy to connect to upstream DNS server."
msgstr ""
msgstr "Använd proxy för att ansluta till uppströms DNS-server."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:746
msgid ""
@@ -836,10 +875,12 @@ msgid ""
"SPKI fingerprint, leaving blank to indicate that the validity of TLS is not "
"verified."
msgstr ""
"Används för att verifiera TLS-serverns giltighet. Värdet är ett Base64-kodat "
"SPKI-fingeravtryck. Lämna tomt om TLS-serverns giltighet inte ska verifieras."
#: 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 "Skriv cachen till disk vid avslutning och läs in den vid start."
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1012
msgid "Yes"
@@ -855,7 +896,7 @@ msgstr "standard"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:554
msgid "domain list (/etc/smartdns/domain-set)"
msgstr ""
msgstr "domänlista (/etc/smartdns/domain-set)"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:669
msgid "https"
@@ -865,19 +906,19 @@ msgstr "https"
#: 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 "Felaktigt format för ipset-namn. Format: [#[4|6]:]ipsetname"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1142
msgid "open website"
msgstr "öppna hemsida"
msgstr "öppna webbplatsen"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:555
msgid "smartdns config (/etc/smartdns/conf.d)"
msgstr ""
msgstr "SmartDNS-konfiguration (/etc/smartdns/conf.d)"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:584
msgid "smartdns custom settings"
msgstr ""
msgstr "Anpassade SmartDNS-inställningar"
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:667
msgid "tcp"
+60 -62
View File
@@ -1,8 +1,8 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"PO-Revision-Date: 2026-03-22 17:10+0000\n"
"Last-Translator: Kristoffer Grundström <swedishsailfishosuser@tutanota.com>\n"
"PO-Revision-Date: 2026-08-13 09:16+0000\n"
"Last-Translator: Jonatan Nyberg <nickwick@users.noreply.hosted.weblate.org>\n"
"Language-Team: Swedish <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationstransmission/sv/>\n"
"Language: sv\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-dev\n"
"X-Generator: Weblate 2026.9.dev0\n"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:65
msgid "Alternative download speed"
@@ -22,19 +22,19 @@ msgstr "Alternativ hastighet aktiverat"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:277
msgid "Alternative speed time begin"
msgstr ""
msgstr "Starttid för alternativ hastighet"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:283
msgid "Alternative speed time day"
msgstr ""
msgstr "Dagar för alternativ hastighet"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:280
msgid "Alternative speed time end"
msgstr ""
msgstr "Sluttid för alternativ hastighet"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:274
msgid "Alternative speed timing enabled"
msgstr ""
msgstr "Aktivera tidsstyrning för alternativ hastighet"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:62
msgid "Alternative upload speed"
@@ -50,11 +50,11 @@ msgstr "Inställningar för bandbredd"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:174
msgid "Binding address IPv4"
msgstr ""
msgstr "Bindningsadress för IPv4"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:176
msgid "Binding address IPv6"
msgstr ""
msgstr "Bindningsadress för IPv6"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:86
msgid "Block list enabled"
@@ -74,12 +74,11 @@ msgstr "Storlek på cache i MB"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:50
msgid "Config file directory"
msgstr "Ställ in fil-mapp"
msgstr "Konfigurationsfilens katalog"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:53
#, fuzzy
msgid "Custom Web UI directory"
msgstr "Ställ in fil-mapp"
msgstr "Egen katalog för webbgränssnitt"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:133
msgid "DHT enabled"
@@ -87,11 +86,11 @@ msgstr "DHT aktiverat"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:151
msgid "Debug"
msgstr "Felsök"
msgstr "Felsökning"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:97
msgid "Download directory"
msgstr "Nedladdningsmapp"
msgstr "Hämtningskatalog"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:211
msgid "Download queue enabled"
@@ -131,7 +130,7 @@ msgstr "Fullständig"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:183
msgid "Global peer limit"
msgstr ""
msgstr "Global gräns för jämlikar"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:44
msgid "Global settings"
@@ -139,23 +138,23 @@ msgstr "Globala inställningar"
#: applications/luci-app-transmission/root/usr/share/rpcd/acl.d/luci-app-transmission.json:3
msgid "Grant UCI access for luci-app-transmission"
msgstr ""
msgstr "Ge luci-app-transmission åtkomst till UCI"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:289
msgid "Idle seeding limit"
msgstr ""
msgstr "Gräns för inaktiv seedning"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:286
msgid "Idle seeding limit enabled"
msgstr ""
msgstr "Aktivera gräns för inaktiv seedning"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:102
msgid "Incomplete directory"
msgstr "Ej komplett mapp"
msgstr "Ofullständig katalog"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:99
msgid "Incomplete directory enabled"
msgstr "Ej komplett mapp aktiverad"
msgstr "Katalog för ofullständiga hämtningar aktiverad"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:150
msgid "Info"
@@ -187,6 +186,9 @@ msgid ""
"enabled, add a value. For Sunday - 1, Monday - 2, Tuesday - 4, Wednesday - "
"8, Thursday - 16, Friday - 32, Saturday - 64"
msgstr ""
"Tal/bitfält. Börja med 0 och lägg sedan till ett värde för varje dag som "
"schemaläggaren ska vara aktiverad. Söndag 1, måndag 2, tisdag 4, "
"onsdag 8, torsdag 16, fredag 32, lördag 64"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:106
msgid "Off"
@@ -194,7 +196,7 @@ msgstr "Av"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:38
msgid "Open Web Interface"
msgstr "Öppna webbgränssnittet"
msgstr "öppna webbgränssnittet"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:153
msgid "PEX enabled"
@@ -202,69 +204,67 @@ msgstr "PEX aktiverat"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:190
msgid "Peer Port settings"
msgstr ""
msgstr "Inställningar för jämlikeport"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:178
msgid "Peer congestion algorithm"
msgstr ""
msgstr "Överbelastningsalgoritm för jämlikar"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:185
msgid "Peer limit per torrent"
msgstr ""
msgstr "Gräns för jämlikar per torrent"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:193
msgid "Peer port"
msgstr ""
msgstr "Jämlikeport"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:198
msgid "Peer port random high"
msgstr ""
msgstr "Övre gräns för slumpmässig jämlikeport"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:201
msgid "Peer port random low"
msgstr ""
msgstr "Nedre gräns för slumpmässig jämlikeport"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:195
msgid "Peer port random on start"
msgstr ""
msgstr "Slumpa jämlikeport vid start"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:171
msgid "Peer settings"
msgstr ""
msgstr "Inställningar för jämlikar"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:187
msgid "Peer socket <abbr title=\"Type of Service\">TOS</abbr>"
msgstr ""
msgstr "<abbr title=\"Type of Service\">TOS</abbr> för jämlikesocket"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:204
msgid "Port forwarding enabled"
msgstr ""
msgstr "Aktivera portvidarebefordran"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:105
msgid "Preallocation"
msgstr "Fördelning"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:138
#, fuzzy
msgid "Prefer encrypted"
msgstr "Föredraget"
msgstr "Föredra krypterat"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:137
#, fuzzy
msgid "Prefer unencrypted"
msgstr "Föredraget"
msgstr "Föredra okrypterat"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:156
msgid "Prefetch enabled"
msgstr ""
msgstr "Aktivera förhämtning"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:214
msgid "Queue stalled enabled"
msgstr ""
msgstr "Aktivera kö för avstannade torrentar"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:223
msgid "Queue stalled minutes"
msgstr ""
msgstr "Minuter innan en torrent räknas som avstannad"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:208
msgid "Queueing"
@@ -287,14 +287,12 @@ msgid "RPC enabled"
msgstr "RPC aktiverat"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:249
#, fuzzy
msgid "RPC host whitelist"
msgstr "Vitlista för RPC"
msgstr "Tillåtelselista för RPC-värdar"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:245
#, fuzzy
msgid "RPC host whitelist enabled"
msgstr "Vitlistan för RPC aktiverad"
msgstr "Tillåtelselista för RPC-värdar aktiverad"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:266
msgid "RPC password"
@@ -314,23 +312,23 @@ msgstr "RPC-användarnamn"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:256
msgid "RPC whitelist"
msgstr "Vitlista för RPC"
msgstr "RPC-tillåtelselista"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:252
msgid "RPC whitelist enabled"
msgstr "Vitlistan för RPC aktiverad"
msgstr "RPC-tillåtelselista aktiverad"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:295
msgid "Ratio limit"
msgstr ""
msgstr "Kvotgräns"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:292
msgid "Ratio limit enabled"
msgstr ""
msgstr "Aktivera kvotgräns"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:181
msgid "Recycle peer id after"
msgstr ""
msgstr "Återanvänd jämlike-ID efter"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:110
msgid "Rename partial files"
@@ -338,15 +336,15 @@ msgstr "Döp om icke fullständiga filer"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:139
msgid "Require encrypted"
msgstr ""
msgstr "Kräv krypterat"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:52
msgid "Run daemon as group"
msgstr "Kör daemon som grupp"
msgstr "Kör demonen som grupp"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:51
msgid "Run daemon as user"
msgstr "Kör daemon som användare"
msgstr "Kör demonen som användare"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:271
msgid "Scheduling"
@@ -354,39 +352,39 @@ msgstr "Schemaläggning"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:158
msgid "Scrape paused torrents enabled"
msgstr ""
msgstr "Aktivera scrape för pausade torrentar"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:161
msgid "Script torrent done enabled"
msgstr ""
msgstr "Kör skript när torrent är klar"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:164
msgid "Script torrent done filename"
msgstr ""
msgstr "Skriptfil att köra när torrent är klar"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:220
msgid "Seed queue enabled"
msgstr ""
msgstr "Aktivera seedningskö"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:226
msgid "Seed queue size"
msgstr ""
msgstr "Storlek på seedningskö"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:71
msgid "Speed limit down"
msgstr ""
msgstr "Hastighetsgräns för hämtning"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:68
msgid "Speed limit down enabled"
msgstr ""
msgstr "Aktivera hastighetsgräns för hämtning"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:77
msgid "Speed limit up"
msgstr ""
msgstr "Hastighetsgräns för uppladdning"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:74
msgid "Speed limit up enabled"
msgstr ""
msgstr "Aktivera hastighetsgräns för uppladdning"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:179
msgid ""
@@ -413,7 +411,7 @@ msgstr "Släng de ordinarie torrent-filerna i papperskorgen"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:80
msgid "Upload slots per torrent"
msgstr ""
msgstr "Uppladdningsplatser per torrent"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:124
msgid "Watch directory"
@@ -421,7 +419,7 @@ msgstr "Övervaka mapp"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:274
msgid "When enabled, this will toggle the <b>alt-speed-enabled</b> setting"
msgstr ""
msgstr "När detta är aktiverat växlas inställningen <b>alt-speed-enabled</b>"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:181
msgid "hours"
@@ -430,7 +428,7 @@ msgstr "timmar"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:277
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:280
msgid "in minutes from midnight"
msgstr ""
msgstr "i minuter från midnatt"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:167
msgid "uTP enabled"
+4 -4
View File
@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2026-05-02 12:18+0000\n"
"Last-Translator: BoneNI <bounkirdni@gmail.com>\n"
"PO-Revision-Date: 2026-08-15 13:06+0000\n"
"Last-Translator: Bone NI <bounkirdni@gmail.com>\n"
"Language-Team: Lao <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationswatchcat/lo/>\n"
"Language: lo\n"
"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.1\n"
"X-Generator: Weblate 2026.9.dev0\n"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:94
msgid ""
@@ -138,7 +138,7 @@ msgstr ""
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:102
msgid "Interface"
msgstr "ອິນເຕີເຟ"
msgstr "ອິນເຕີເຟ"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:103
msgid "Interface to monitor and/or restart"
+35 -8
View File
@@ -1,9 +1,8 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"PO-Revision-Date: 2025-07-15 10:11+0000\n"
"Last-Translator: Stefan Bjornelund the Gnome "
"<stefan.bjornelund.gnome@gmail.com>\n"
"PO-Revision-Date: 2026-08-13 08:03+0000\n"
"Last-Translator: Jonatan Nyberg <nickwick@users.noreply.hosted.weblate.org>\n"
"Language-Team: Swedish <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationswatchcat/sv/>\n"
"Language: sv\n"
@@ -11,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.13-dev\n"
"X-Generator: Weblate 2026.9.dev0\n"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:94
msgid ""
@@ -34,6 +33,9 @@ msgid ""
"ModemManager, you can have Watchcat restart your ModemManager interface by "
"specifying its name."
msgstr ""
"<i>Gäller lägena Ping-omstart och Starta om gränssnitt</i> <br /> Om du "
"använder ModemManager kan Watchcat starta om ditt ModemManager-gränssnitt om "
"du anger dess namn."
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:104
msgid ""
@@ -50,7 +52,7 @@ msgstr "Adress-familjen för att pinga värden"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:65
msgid "Any"
msgstr ""
msgstr "Valfri"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:84
msgid "Big: 248 bytes"
@@ -66,7 +68,7 @@ msgstr "Påtvinga fördröjning av omstart"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:19
msgid "General Settings"
msgstr "Generella inställningar"
msgstr "Allmänna inställningar"
#: applications/luci-app-watchcat/root/usr/share/rpcd/acl.d/luci-app-watchcat.json:3
msgid "Grant access to LuCI app watchcat"
@@ -78,10 +80,13 @@ msgid ""
"host becomes unreachable. Click the <b>Add</b> button at the bottom to set "
"up more than one action."
msgstr ""
"Här kan du konfigurera flera kontroller och åtgärder som ska utföras om en "
"värd blir onåbar. Klicka på knappen <b>Lägg till</b> längst ned för att "
"konfigurera fler än en åtgärd."
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:52
msgid "Hosts To Check"
msgstr ""
msgstr "Värdar att kontrollera"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:71
msgid ""
@@ -92,6 +97,11 @@ msgid ""
"b></li><li>1 hour would be: <b>1h</b></li><li>1 week would be: <b>7d</b></"
"li><ul>"
msgstr ""
"Hur ofta värden ovan ska pingas. <br /><br />Standardenheten är sekunder "
"utan suffix, men du kan använda suffixet <b>m</b> för minuter, <b>h</b> för "
"timmar eller <b>d</b> för dagar. <br /><br /> Exempel:<ul><li>10 sekunder: "
"<b>10</b> eller <b>10s</b></li><li>5 minuter: <b>5m</b></li><li>1 timme: "
"<b>1h</b></li><li>1 vecka: <b>7d</b></li><ul>"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:85
msgid "Huge: 1492 bytes"
@@ -99,7 +109,7 @@ msgstr "Jättestor: 1492 bytes"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:52
msgid "IP addresses or hostnames to ping."
msgstr ""
msgstr "IP-adresser eller värdnamn som ska pingas."
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:118
msgid ""
@@ -122,6 +132,15 @@ msgid ""
"li><li>5 minutes would be: <b>5m</b></li><li> 1 hour would be: <b>1h</b></"
"li><li>1 week would be: <b>7d</b></li><ul>"
msgstr ""
"I läget Periodisk omstart anger detta hur ofta enheten ska startas om. <br /"
"> I läget Ping-omstart anger det den längsta tiden utan svar från värden som "
"ska kontrolleras innan en omstart görs. <br /> I läget Starta om nätverk "
"eller Kör skript anger det den längsta tiden utan svar från värden innan "
"gränssnittet startas om eller skriptet körs. <br /><br />Standardenheten är "
"sekunder utan suffix, men du kan använda suffixet <b>m</b> för minuter, "
"<b>h</b> för timmar eller <b>d</b> för dagar. <br /><br />Exempel:<ul><li>10 "
"sekunder: <b>10</b> eller <b>10s</b></li><li>5 minuter: <b>5m</b></li><li>1 "
"timme: <b>1h</b></li><li>1 vecka: <b>7d</b></li><ul>"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:102
msgid "Interface"
@@ -168,6 +187,12 @@ msgid ""
"time. <br /> Run Script: Run a script if a ping to a specified host fails "
"for a specified duration of time. <br />"
msgstr ""
"Ping-omstart: Starta om enheten om ping till en angiven värd misslyckas "
"under en angiven tidsperiod. <br /> Periodisk omstart: Starta om enheten "
"efter ett angivet tidsintervall. <br /> Starta om gränssnitt: Starta om ett "
"nätverksgränssnitt om ping till en angiven värd misslyckas under en angiven "
"tidsperiod. <br /> Kör skript: Kör ett skript om ping till en angiven värd "
"misslyckas under en angiven tidsperiod. <br />"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:29
msgid "Restart Interface"
@@ -186,6 +211,8 @@ 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 ""
"Skript som ska köras när värden inte har svarat under den angivna "
"tidsperioden. Gränssnittsnamnet skickas till skriptet som $1"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:81
msgid "Small: 1 byte"
+5 -5
View File
@@ -1,8 +1,8 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"PO-Revision-Date: 2026-04-18 17:10+0000\n"
"Last-Translator: Emin Tufan Çetin <etcetin@gmail.com>\n"
"PO-Revision-Date: 2026-08-06 20:04+0000\n"
"Last-Translator: egemen <egmen@users.noreply.hosted.weblate.org>\n"
"Language-Team: Turkish <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationswatchcat/tr/>\n"
"Language: tr\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 5.17.1-dev\n"
"X-Generator: Weblate 2026.8.1.dev0\n"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:94
msgid ""
@@ -87,7 +87,7 @@ msgstr ""
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:52
msgid "Hosts To Check"
msgstr ""
msgstr "Kontrol Edilecek Sunucular"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:71
msgid ""
@@ -111,7 +111,7 @@ msgstr "Çok Büyük: 1492 bayt"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:52
msgid "IP addresses or hostnames to ping."
msgstr ""
msgstr "Ping atılacak IP adresleri veya ana bilgisayar adları."
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:118
msgid ""
+1 -1
View File
@@ -17,7 +17,7 @@ LUCI_NAME:=luci-theme-footstrap
FOOTSTRAP_VERSION?=
ifneq ($(FOOTSTRAP_VERSION),)
PKG_VERSION:=$(FOOTSTRAP_VERSION)
PKG_RELEASE:=34
PKG_RELEASE:=35
endif
LUCI_TITLE:=Footstrap Theme
@@ -226,15 +226,24 @@ function scrollTop() {
}
function scrolling() { return Date.now() < _movingUntil; }
/* how many times the offset has moved in this stretch: >1 is a scroll, 1 is a compensation */
let _steps = 0;
function sampleMotion() {
const y = scrollTop();
if (_lastOffset === null || y !== _lastOffset) {
/* HOW MANY TIMES the offset has moved inside this stretch of movement, not just that it did.
* One step is what a compensation looks like the engine puts the offset somewhere and it
* stays there. A scroll is a SERIES. `lateDrift()` is the only caller that needs to tell the
* two apart, and this is the cheapest thing that can: it is counted in a loop that already
* runs, from a value it already reads. */
if (_lastOffset !== null) _steps++;
_lastOffset = y;
_movingUntil = Date.now() + SCROLL_IDLE;
}
if (scrolling()) { requestAnimationFrame(sampleMotion); return; }
_sampling = false;
_steps = 0;
/* the reader has stopped: this is a still moment, so the floor and the reference both belong to
* where the page now stands */
holdFloor();
@@ -242,9 +251,18 @@ function sampleMotion() {
/* the page has held still for SCROLL_IDLE: whatever was put off may run now */
if (_deferred) {
_deferred = false;
const ref = anchorRef();
/* NO CORRECTION FOR THIS BATCH, and that is deliberate. What runs here is work the fitters
* put off because the reader was moving; the page they are about to change is a page the
* reader has just scrolled through, and the two references available are both wrong for it.
* A FRESH one describes the page after the scroll against an offset WebKit may not have
* laid out yet, which made the theme undo the reader's own move (measured at 1440, top,
* Compact: parked at 591, put back to 0). The one from the last STILL page describes where
* the reader was before the flick, and correcting to it drags them back there the gate
* caught exactly that as a 231px jump landing inside a scroll, on all three engines. Nothing
* here is a poll tick: the fitters do not grow the page under anybody, they re-measure what
* the scroll already showed. The next mutation corrects against a reference taken while the
* page was still, which is the one that is true. */
run();
scheduleAnchor(ref);
}
}
@@ -259,12 +277,26 @@ function noteMotion() {
* and `scroll` does not bubble from an element it only travels down the capture phase, which is
* how the sidebar layout's inner scroller is seen as well as the document. The events only START
* the sampler; whether the page is still moving is the sampler's answer, not theirs. */
/* IS THE READER DRIVING, as opposed to the page moving?
*
* `scrolling()` above cannot tell those apart, and must not: every pass that reads layout has to
* stay out of a moving page whoever is moving it. `lateDrift()` asks the other question a scroll
* offset that changed because the ENGINE compensated a mutation is precisely what it exists to
* inspect, and gating it on `scrolling()` made it fire never (measured: `late:busy` on every tick,
* because the engine's own correction starts the motion sampler). A gesture is what says the reader
* is driving, so the gesture is what it asks about. `mousedown` is in the list for the scrollbar
* thumb and `keydown` for Page Down, neither of which produces a wheel or a touch. */
let _userUntil = 0;
function noteUser() {
_userUntil = Date.now() + SCROLL_IDLE;
noteMotion();
}
(function watchMotion() {
const opts = { passive: true, capture: true };
window.addEventListener('scroll', noteMotion, opts);
window.addEventListener('wheel', noteMotion, opts);
window.addEventListener('touchstart', noteMotion, opts);
window.addEventListener('touchmove', noteMotion, opts);
for (const name of [ 'wheel', 'touchstart', 'touchmove', 'mousedown', 'keydown' ])
window.addEventListener(name, noteUser, opts);
})();
/* Next frame, at most once per frame (rule 3). */
@@ -346,7 +378,9 @@ function watch(el) {
* a drift under a pixel is rounding rather than movement. */
/* DOES THE ENGINE ANCHOR AT ALL? Chromium and Firefox compensate a height change above the viewport
* by themselves the reader stays where they were and the scroll offset moves under them. WebKit
* has never implemented it, so on Safari and on every iPhone the same poll tick moves the page:
* did not implement it until recently, so on an older Safari and on every iPhone of that vintage the
* same poll tick moves the page (a current WebKit anchors, and gets the COLLAPSE case wrong instead
* lateDrift() below):
* measured with the engine's anchoring suppressed, a 120px growth above the fold moves the reader
* 120px, and 0px with it on.
*
@@ -389,13 +423,24 @@ function forgetRest() {
_restPage = null;
}
function rememberRest() {
if (ENGINE_ANCHORS || scrolling()) return;
if (scrolling()) return;
/* A PAGE AT THE TOP HAS NOTHING TO BE PUT BACK TO, so it does not pay for a reference. Every
* correction here gives back offset the reader lost; at offset 0 there is none to lose, and the
* hit test plus rect that anchorRef() costs (0.2ms typical, 6ms worst on a poll-dirtied WebKit
* layout, measured on the stands) buys nothing. The offset is still remembered it is one read,
* and `anchorFor()`'s clamp test is written in terms of it. */
if (ENGINE_ANCHORS && scrollTop() <= 0) {
_rest = null;
_restAt = 0;
_restPage = pageStamp();
return;
}
const ref = anchorRef();
/* the offset it was taken at travels with it: a reference is only about the page, and the page
* moving under the reader is a different fact from the reader moving through it */
_restAt = scrollTop();
_restPage = pageStamp();
_rest = ref ? { el: ref.el, top: ref.top, at: _restAt } : null;
_rest = ref ? { el: ref.el, top: ref.top, at: _restAt, sec: ref.sec, secTop: ref.secTop } : null;
}
/* -> the reference to correct against: the pre-mutation one where the engine leaves that to us, the
@@ -428,8 +473,14 @@ function anchorFor() {
* is shorter now, the browser clamps the write straight back and the reader keeps the offset they
* already had. The element path below stays preferred where it survives, because it compensates
* the height change the tick brought with it as well. */
if (!_rest || !_rest.el.isConnected)
return clamped ? { by: _restAt - at } : anchorRef();
if (!_rest || !_rest.el.isConnected) {
if (clamped) return { by: _restAt - at };
/* the element is gone but its section is not see anchorRef() for why that is the common
* case rather than an edge one */
if (_rest && _rest.sec && _rest.sec.isConnected && at === _restAt)
return { el: _rest.sec, top: _rest.secTop, slack: 0 };
return anchorRef();
}
/* THE READER MOVED, NOT THE PAGE. A reference taken at one offset says nothing about a document
* seen from another: correcting against it would drag the page back to where the reader had
* scrolled FROM. So an offset that is not the one the reference was captured at normally means
@@ -455,7 +506,15 @@ function anchorFor() {
*
* Measured on the same harness with the reader flicking while the swap lands: the theme writes
* no offset at all, before this change and after it. */
if (at !== _rest.at && !clamped) return anchorRef();
/* THE READER MOVED, SO THERE IS NOTHING TO PUT BACK and taking a fresh reference here is worse
* than taking none. `anchorRef()` reads a rect, and a scroll that has only just landed leaves
* WebKit reporting the NEW `scrollTop` against the OLD layout: the reference then describes the
* page from before the scroll, the correction a frame later measures the scroll itself, and the
* reader is dragged back to where they started. Measured on the 24.10 stand at 1440, top layout,
* Compact density: parked at 591, put back to 0, every run, on both the engine-anchoring path and
* the fallback. A tick that lands right after a scroll compensates nothing; the next still moment
* takes a reference that is true. */
if (at !== _rest.at && !clamped) return null;
/* HOW MUCH OF THE DRIFT IS ALREADY ACCOUNTED FOR. applyAnchor() refuses a correction bigger than
* a viewport because a drift that size normally means the view replaced its whole subtree and
* the reference is describing a page that no longer exists. A clamp is the one drift that big
@@ -496,15 +555,65 @@ function anchorRef() {
let y = 1;
let el = document.elementFromPoint(x, y);
const chrome = el && el.closest ? el.closest('[data-fs-chrome]') : null;
if (chrome) {
y = Math.max(1, Math.round(chrome.getBoundingClientRect().bottom) + 1);
el = document.elementFromPoint(x, y);
}
if (!el || !host.contains(el)) return null;
if (chrome) y = Math.max(1, Math.round(chrome.getBoundingClientRect().bottom) + 1);
/* THE HIT IS A SEARCH, NOT A SINGLE PROBE, and neither the host nor anything outside it counts.
*
* `elementFromPoint` answers with whatever is topmost, and two of those answers are useless here.
* `#view` itself comes back wherever the point lands in a GAP the margin between two sections,
* the gutter of the Overview's two-column grid — and the host's own top does not move when a poll
* changes something inside it, so a drift measured against it is zero on every tick, for ever.
* And a point above the first section answers with `.fs-content`, which is not inside the host at
* all: the first version returned null there without trying anywhere else, so on 25.12's Overview
* at 1440 the theme had no reference AT ALL and a 120px growth moved the page 120px.
*
* So: take the whole STACK at the point (what a gap belongs to is directly underneath it), and if
* that yields nothing inside the host, step down the viewport and ask again. */
const floor = Math.max(1, Math.round(window.innerHeight || 800));
const pick = (yy) => {
if (typeof document.elementsFromPoint === 'function') {
for (const cand of document.elementsFromPoint(x, yy))
if (cand !== host && host.contains(cand)) return cand;
return null;
}
const one = document.elementFromPoint(x, yy);
return (one && one !== host && host.contains(one)) ? one : null;
};
el = null;
for (let step = 0; step < 5 && !el; step++)
el = pick(Math.min(floor - 1, y + (Math.round(floor * 0.12) * step)));
if (!el) return null;
const table = el.closest('.table.fs-dt');
if (table) el = table.parentElement;
if (!el || !host.contains(el)) return null;
return { el, top: el.getBoundingClientRect().top };
if (table) {
const up = table.parentElement;
el = (up && up !== host && host.contains(up)) ? up : table;
}
if (!el || el === host || !host.contains(el)) return null;
/* `getClientRects()`, not `offsetParent` plus a `getComputedStyle` fallback: the question is only
* "is this box in the layout at all", an element the table gate is holding out of it has no rects,
* and resolving style on every settled pass to learn that would cost more than the rect already
* read above. A box with no rects reports a top of 0 a reference to nowhere. */
if (!el.getClientRects().length) return null;
/* AND A SECOND REFERENCE THAT SURVIVES THE TICK. `dom.content()` replaces a section's CHILDREN,
* so the element the hit landed on is usually gone by the time the correction runs and where
* the tick also grew the page, nothing was clamped either, so the "give back what the engine
* took" path has no number and the theme takes a fresh reference and measures a drift of zero.
* That is a section swap nobody compensates: measured on 25.12's Overview at 1440 with the
* engine's anchoring suppressed, the page moved 136px under the reader.
*
* The wrapper is what survives the stock poll refreshes a `.cbi-section` in place and never
* rebuilds it so it is kept alongside, and used only when the precise reference is gone. */
/* the nearest ANCESTOR that a tick does not replace `closest()` on the element itself is not it:
* where the hit already climbed to the `.cbi-section` (which is what happens on any page whose
* section is one table), `closest('.cbi-section')` answers with that same element, and a fallback
* that is the reference is no fallback at all. */
let keep = el.parentElement;
while (keep && keep !== host && !keep.classList.contains('cbi-section')
&& !keep.classList.contains('cbi-map') && !keep.classList.contains('fs-ovl'))
keep = keep.parentElement;
if (!keep || keep === host || !host.contains(keep)) keep = null;
return { el, top: el.getBoundingClientRect().top,
sec: keep, secTop: keep ? keep.getBoundingClientRect().top : 0 };
}
let _anchorPending = null;
@@ -517,6 +626,58 @@ function anchorEnabled() {
try { return localStorage.getItem('fsAnchor') !== 'off'; }
catch (e) { return true; }
}
/* ---- WHAT THE ENGINE'S OWN ANCHORING LEAVES BEHIND ----
*
* Scroll anchoring keeps a reference element still while things above it change size. It is not the
* same promise as "a section can vanish and come back": `dom.content()` every LuCI poll empties
* a container before it refills it, the offset is clamped into a document that is briefly shorter,
* and what the engine does on the way back is its own business. Chromium lands exactly where it
* started. WebKit OVERSHOOTS measured on the 24.10 stand's Overview at 390 and at 1440, in both
* layouts: a swap that grew a section by 120px moved the offset by 180, so the reader ended 60px
* up the page on every tick. That is what a Safari user sees as the page creeping while they read.
*
* WHY THE OFFSET CANNOT ANSWER THIS, and why this is not a browser test. The first version compared
* the offset with what it had been and gave back the difference; it never fired, because the offset
* came back LARGER, not smaller. A `CSS.supports('overflow-anchor')` test cannot separate the two
* behaviours either WebKit shipped the property, so every engine now claims it and a synthetic
* probe that performs the collapse itself calls Firefox broken as well, because a real page puts
* layout and a frame between the collapse and the refill and a probe does not. Both were measured,
* both were wrong, and the second one cost Chromium and Firefox 15px of drift they did not have.
*
* So nothing is assumed: the element the reader was looking at is asked where it is now, TWO FRAMES
* after the mutation long enough for the engine to have finished its own correction. An engine
* that got it right reports a drift of zero and this does nothing at all. What is left over is what
* nobody put back, and it is given back here. The same guards as the main correction: not while the
* reader scrolls, not across a navigation, and never more than a viewport a drift that size means
* the reference is describing a page that no longer exists. */
let _lateFrame = 0;
function lateDrift(ref) {
/* the reference from BEFORE this tick, captured by the caller: `run()` re-remembers it on its way
* through, and a reference taken after the mutation describes the page as the mutation left it
* the drift it would report is zero by construction */
if (_lateFrame || !ref) return;
_lateFrame = requestAnimationFrame(() => {
_lateFrame = requestAnimationFrame(() => {
_lateFrame = 0;
/* NOT `scrolling()`: the engine's own compensation moves the offset and therefore starts
* the motion sampler, so gating on that skipped every tick this exists for (measured
* the check reported "busy" on all of them). Two narrower questions instead: is the
* reader driving (a gesture), and is the offset STREAMING (moving repeatedly, which a
* one-shot compensation never does but a scroll always does). Either one means hands off. */
if (!anchorEnabled() || Date.now() < _userUntil || (scrolling() && _steps > 1)) return;
if (!ref.el.isConnected || _restPage !== pageStamp()) return;
const drift = ref.el.getBoundingClientRect().top - ref.top;
if (Math.abs(drift) < 1) return; /* the engine put it back */
if (Math.abs(drift) > (window.innerHeight || 800)) return;
const sc = scroller();
const at = sc ? sc.scrollTop : window.scrollY;
if (sc) sc.scrollTop = at + drift; else window.scrollTo(0, at + drift);
/* the write may have been clamped short; the reader is where they are now */
_restAt = scrollTop();
});
});
}
function scheduleAnchor(ref) {
if (!ref || !anchorEnabled()) return;
if (_anchorPending) return;
@@ -535,6 +696,13 @@ function scheduleAnchor(ref) {
}
function applyAnchor(ref) {
if (!ref) return;
/* NOT INTO A MOVING PAGE. The correction is scheduled from the mutation and applied a frame
* later, and the reader can start scrolling in between the reference is then describing a page
* they have already left, and putting them back on it is the jump this whole file exists to
* prevent. `anchorRef()` refuses to TAKE a reference during a flick for the same reason; nothing
* refused to USE one, and the gate caught it as a 231px correction landing inside a scroll on
* all three engines once the reference stopped being re-read at apply time. */
if (scrolling()) return;
/* through scroller(), not a second probe of its own: the two asked the same question in the
* same two lines and could already answer differently within one frame */
const sc = scroller();
@@ -588,9 +756,28 @@ function observeContent() {
* see anchorFor(): where the engine does no anchoring of its own that reference comes from
* the last still moment, because by the time this callback runs the poll has already moved
* the page */
const ref = anchorFor();
/* ONE CORRECTION PER ENGINE, and which one depends on whether the engine is doing the job.
*
* Where it anchors, the immediate correction is not just redundant, it is harmful: the
* reference it uses is read HERE, in the same instant the poll mutated the page, and after a
* scroll WebKit hands back the new `scrollTop` before the layout that goes with it. The drift
* then measures the reader's own move and the correction undoes it measured on the 24.10
* stand at 1440 in the top layout at Compact: the page went back to 0 from 591, every run.
* What that engine needs is the RESIDUE, two frames later, once its own anchoring has run
* and the layout is settled which is lateDrift().
*
* Where it does not anchor, nobody else will put the reader back within the frame, so the
* immediate correction stays, measured against the reference from the last still page. */
const settled = _rest;
const ref = ENGINE_ANCHORS ? null : anchorFor();
run();
scheduleAnchor(ref);
/* one or the other, never a fallthrough from one to the other: where the engine does not
* anchor, `anchorFor()` returning nothing means it has DECIDED not to correct this tick (the
* reader moved, or there is no reference worth using), and handing that case to the deferred
* path corrects it two frames later instead measured as a 320px correction landing inside
* a flick, on all three engines. */
if (ENGINE_ANCHORS) lateDrift(settled);
else scheduleAnchor(ref);
});
for (const host of [ document.getElementById('view') || document.body, document.getElementById('modal_overlay') ]) {
if (!host) continue;
@@ -638,6 +825,17 @@ return baseclass.extend({
scrolling,
deferMeasurement,
/* -> the offset this file last took a reference at, or null before it has taken one.
*
* FOR THE GATES, and it is not a convenience: every correction here is measured against a
* reference captured while the page was still, so a probe that grows the page before that
* reference exists measures the guard rather than the anchor. There is no way to ask that from
* outside "is it scrolling" answers a different question, and answers "no" both before the
* motion sampler starts and after it finishes, which in WebKit are 1.5 seconds apart. Waiting a
* flat interval instead made tools/scroll-anchor.mjs report a jump on every WebKit run and none
* on the other two engines, with the theme identical on all three. */
restAt: () => _restAt,
/* "THE OFFSET IS MINE NOW, FORGET WHAT YOU REMEMBERED." Called by fs-router where it resets both
* scrollers for an incoming page, and it is not a courtesy without it the correction below
* fights that reset. The router resets synchronously and stamps `body[data-page]` an await later,
@@ -80,6 +80,35 @@
/* @endmirror */
}
/* ...AND BACK ABOVE THE BAR ONCE THAT COLUMN BECOMES A CARD.
*
* The rule above puts the value BESIDE the bar because a table column shares its row with other
* columns and a value floated over the bar would land on the row divider. A carded row is not
* that: `.fs-stacked` gives each cell half the card, so "beside" is outside the cell the value
* ran across the neighbouring column and over the label above it. Reported twice from a phone
* (`RSSI: 52% (-59dBm)` sitting on SIGNAL STRENGTH and on the Transferred figures next to it),
* on luci-mod-dashboard's Wireless list, at every density.
*
* So the card puts it back where the default has it over the bar's far edge, on the line the
* label already owns and buys that line: the bar takes a top margin of one --fs-type-xs line,
* so the value sits between the label and the bar instead of on either. Measured at 390px on all
* three densities: 6-9px of overlap before, none after.
*
* The selector carries `:has(.tr.table-titles)` for specificity alone: that is what the beside-rule
* above matches on, and `:has()` counts its argument (0,6,0) so a plainer selector here lost
* and the value stayed beside the bar (measured: `margin-inline-end` still 40px). The title row
* is still in the DOM when the table is carded; the card only hides it. */
.cbi-section .table.fs-stacked:has(.tr.table-titles) .td .cbi-progressbar {
margin-inline-end: 0;
margin-block-start: calc(var(--fs-type-xs) * var(--fs-leading));
}
.cbi-section .table.fs-stacked:has(.tr.table-titles) .td .cbi-progressbar::after {
inset-inline: auto 0;
bottom: calc(100% + var(--fs-space-1));
top: auto;
transform: none;
}
/* Progressbar rows in a section table (luci-app-cpu-status): keep the native label | bar
* row, just centre the cells vertically. */
.cbi-section .table:not([id]):not(.cbi-section-table) .tr:has(.cbi-progressbar) .td { vertical-align: middle; }
@@ -268,7 +268,16 @@
* The cost is that a row of a data table can no longer be the anchor. On the page where that
* would matter most Processes at 390px, which is one long table inserting a row above the
* reader moves the content 285px with this rule and 285px without it: those rows were never being
* chosen anyway. */
* chosen anyway.
*
* WHAT COVERS THAT PAGE INSTEAD is fs-fit.js, and it did not until recently: a page that is one
* table has the table as a DIRECT child of `#view`, the theme's own reference climbs out of the
* table to its parent, and the parent was the host so the climb gave up and nothing held the
* reader there on any engine. It anchors on the TABLE ITSELF in that case now. Its height is
* what this rule calls falsified; where the box STARTS is decided by what sits above it, and that
* is all a reference needs. Measured at 390px with the engine's anchoring suppressed: 120px of
* growth above the fold moved the page 120px before, 0px after, on chromium, firefox and webkit
* alike. */
.table.fs-dt { overflow-anchor: none; }
.cbi-section .table:is([id], .fs-dt) .tr:not(.table-titles):not(.placeholder):hover .td { background: var(--fs-panel2); }
+15 -2
View File
@@ -232,6 +232,19 @@
* .cbi-title-buttons`; Status Channel Analysis puts "Refresh Channels" there, a
* third-party app may put anything). Nothing gave it a bottom margin, so it sat flush
* against the first .cbi-section below and read as part of that card instead of as a
* page-level action. Same 16px every .cbi-section already uses. */
.cbi-title-buttons { margin-bottom: var(--fs-card-gap); }
* page-level action. Same 16px every .cbi-section already uses.
*
* And a TOP margin for the same reason at the other edge: the row sits directly under the page
* heading with nothing between them measured at 0px on Status Channel Analysis, where
* "Refresh Channels" touched the "Channel Analysis" title (reported upstream against v0.14).
* Half the bottom gap, because a heading and its own action belong together; the full one would
* read as a separate block. */
.cbi-title-buttons { margin-block: var(--fs-space-2) var(--fs-card-gap); }
/* The per-section Delete button (`.cbi-section-remove`, what luci-base renders for every NAMED
* section: SQM's queues, the firewall's zones, any app that lets you add and drop instances) sat
* flush against whatever follows it usually that section's own tab bar. Reported upstream on
* SQM, but nothing here is about SQM: it is one class luci-base gives every such section, and
* the gap belongs to the pattern rather than to the page. */
.cbi-section-remove { margin-bottom: var(--fs-space-2); }
}