summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--applications/luci-app-adblock/luasrc/controller/adblock.lua47
-rw-r--r--applications/luci-app-adblock/luasrc/model/cbi/adblock/blacklist_tab.lua22
-rw-r--r--applications/luci-app-adblock/luasrc/model/cbi/adblock/configuration_tab.lua18
-rw-r--r--applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua174
-rw-r--r--applications/luci-app-adblock/luasrc/model/cbi/adblock/whitelist_tab.lua22
-rw-r--r--applications/luci-app-adblock/luasrc/view/adblock/blocklist.htm74
-rw-r--r--applications/luci-app-adblock/luasrc/view/adblock/logread.htm48
-rw-r--r--applications/luci-app-adblock/luasrc/view/adblock/query.htm16
-rw-r--r--applications/luci-app-adblock/luasrc/view/adblock/runtime.htm197
-rw-r--r--applications/luci-app-adblock/po/it/adblock.po3
-rw-r--r--applications/luci-app-adblock/po/ja/adblock.po3
-rw-r--r--applications/luci-app-adblock/po/pt-br/adblock.po3
-rw-r--r--applications/luci-app-adblock/po/ru/adblock.po144
-rw-r--r--applications/luci-app-adblock/po/sv/adblock.po3
-rw-r--r--applications/luci-app-adblock/po/templates/adblock.pot3
-rw-r--r--applications/luci-app-adblock/po/zh-cn/adblock.po39
-rw-r--r--applications/luci-app-adblock/po/zh-tw/adblock.po3
-rw-r--r--applications/luci-app-advanced-reboot/Makefile4
-rw-r--r--applications/luci-app-advanced-reboot/luasrc/controller/advanced_reboot.lua2
-rw-r--r--applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm14
-rw-r--r--applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/alternative_reboot.htm6
-rw-r--r--applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/power_off.htm6
-rw-r--r--applications/luci-app-advanced-reboot/po/ru/advanced-reboot.po18
-rw-r--r--applications/luci-app-advanced-reboot/po/sv/advanced-reboot.po15
-rw-r--r--applications/luci-app-advanced-reboot/po/templates/advanced-reboot.pot5
-rw-r--r--applications/luci-app-ddns/po/ru/ddns.po235
-rw-r--r--applications/luci-app-ocserv/luasrc/view/ocserv_status.htm61
-rw-r--r--applications/luci-app-samba4/Makefile10
-rw-r--r--applications/luci-app-samba4/luasrc/controller/samba4.lua14
-rw-r--r--applications/luci-app-samba4/luasrc/model/cbi/samba4.lua90
-rw-r--r--applications/luci-app-samba4/po/ca/samba4.po121
-rw-r--r--applications/luci-app-samba4/po/cs/samba4.po109
-rw-r--r--applications/luci-app-samba4/po/de/samba4.po113
-rw-r--r--applications/luci-app-samba4/po/el/samba4.po98
-rw-r--r--applications/luci-app-samba4/po/en/samba4.po108
-rw-r--r--applications/luci-app-samba4/po/es/samba4.po118
-rw-r--r--applications/luci-app-samba4/po/fr/samba4.po110
-rw-r--r--applications/luci-app-samba4/po/he/samba4.po93
-rw-r--r--applications/luci-app-samba4/po/hu/samba4.po110
-rw-r--r--applications/luci-app-samba4/po/it/samba4.po113
-rw-r--r--applications/luci-app-samba4/po/ja/samba4.po109
-rw-r--r--applications/luci-app-samba4/po/ms/samba4.po92
-rw-r--r--applications/luci-app-samba4/po/no/samba4.po98
-rw-r--r--applications/luci-app-samba4/po/pl/samba4.po109
-rw-r--r--applications/luci-app-samba4/po/pt-br/samba4.po119
-rw-r--r--applications/luci-app-samba4/po/pt/samba4.po119
-rw-r--r--applications/luci-app-samba4/po/ro/samba4.po108
-rw-r--r--applications/luci-app-samba4/po/ru/samba4.po114
-rw-r--r--applications/luci-app-samba4/po/sk/samba4.po93
-rw-r--r--applications/luci-app-samba4/po/sv/samba4.po101
-rw-r--r--applications/luci-app-samba4/po/templates/samba4.pot86
-rw-r--r--applications/luci-app-samba4/po/tr/samba4.po93
-rw-r--r--applications/luci-app-samba4/po/uk/samba4.po110
-rw-r--r--applications/luci-app-samba4/po/vi/samba4.po122
-rw-r--r--applications/luci-app-samba4/po/zh-cn/samba4.po112
-rw-r--r--applications/luci-app-samba4/po/zh-tw/samba4.po112
-rw-r--r--applications/luci-app-simple-adblock/Makefile2
-rw-r--r--applications/luci-app-simple-adblock/luasrc/controller/simpleadblock.lua7
-rw-r--r--applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua6
-rw-r--r--applications/luci-app-simple-adblock/po/ja/simple-adblock.po54
-rw-r--r--applications/luci-app-simple-adblock/po/pt-br/simple-adblock.po54
-rw-r--r--applications/luci-app-simple-adblock/po/pt/simple-adblock.po54
-rw-r--r--applications/luci-app-simple-adblock/po/ru/simple-adblock.po54
-rw-r--r--applications/luci-app-simple-adblock/po/sv/simple-adblock.po54
-rw-r--r--applications/luci-app-simple-adblock/po/templates/simple-adblock.pot42
-rw-r--r--applications/luci-app-transmission/luasrc/model/cbi/transmission.lua3
-rw-r--r--applications/luci-app-unbound/luasrc/controller/unbound.lua209
-rw-r--r--applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua539
-rw-r--r--applications/luci-app-unbound/luasrc/model/cbi/unbound/extended.lua15
-rw-r--r--applications/luci-app-unbound/luasrc/model/cbi/unbound/manual.lua15
-rw-r--r--applications/luci-app-unbound/luasrc/model/cbi/unbound/server.lua15
-rw-r--r--applications/luci-app-unbound/luasrc/model/cbi/unbound/uciedit.lua37
-rw-r--r--applications/luci-app-unbound/luasrc/model/cbi/unbound/zones.lua207
-rw-r--r--applications/luci-app-upnp/po/ca/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/cs/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/de/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/el/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/en/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/es/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/fr/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/he/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/hu/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/it/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/ja/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/ms/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/no/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/pl/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/pt-br/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/pt/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/ro/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/ru/upnp.po18
-rw-r--r--applications/luci-app-upnp/po/sk/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/sv/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/templates/upnp.pot6
-rw-r--r--applications/luci-app-upnp/po/tr/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/uk/upnp.po8
-rw-r--r--applications/luci-app-upnp/po/vi/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/zh-cn/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/zh-tw/upnp.po6
-rw-r--r--applications/luci-app-wol/po/uk/wol.po23
-rw-r--r--collections/luci/Makefile2
-rwxr-xr-xcontrib/package/freifunk-common/files/usr/sbin/ff_olsr_watchdog9
-rw-r--r--luci.mk2
-rw-r--r--modules/luci-base/Makefile3
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/cbi.js24
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/xhr.js19
-rw-r--r--modules/luci-base/luasrc/dispatcher.lua15
-rw-r--r--modules/luci-base/luasrc/model/uci.lua92
-rw-r--r--modules/luci-base/luasrc/util.lua16
-rw-r--r--modules/luci-base/luasrc/view/cbi/apply_widget.htm10
-rw-r--r--modules/luci-base/luasrc/view/cbi/cell_valueheader.htm6
-rw-r--r--modules/luci-base/luasrc/view/cbi/map.htm15
-rw-r--r--modules/luci-base/luasrc/view/cbi/tblsection.htm4
-rw-r--r--modules/luci-base/luasrc/view/cbi/ucisection.htm8
-rw-r--r--modules/luci-base/luasrc/view/cbi/value.htm10
-rw-r--r--modules/luci-base/luasrc/view/footer.htm25
-rw-r--r--modules/luci-base/po/ca/base.po60
-rw-r--r--modules/luci-base/po/cs/base.po60
-rw-r--r--modules/luci-base/po/de/base.po60
-rw-r--r--modules/luci-base/po/el/base.po57
-rw-r--r--modules/luci-base/po/en/base.po57
-rw-r--r--modules/luci-base/po/es/base.po60
-rw-r--r--modules/luci-base/po/fr/base.po60
-rw-r--r--modules/luci-base/po/he/base.po57
-rw-r--r--modules/luci-base/po/hu/base.po60
-rw-r--r--modules/luci-base/po/it/base.po60
-rw-r--r--modules/luci-base/po/ja/base.po125
-rw-r--r--modules/luci-base/po/ko/base.po57
-rw-r--r--modules/luci-base/po/ms/base.po57
-rw-r--r--modules/luci-base/po/no/base.po60
-rw-r--r--modules/luci-base/po/pl/base.po156
-rw-r--r--modules/luci-base/po/pt-br/base.po60
-rw-r--r--modules/luci-base/po/pt/base.po60
-rw-r--r--modules/luci-base/po/ro/base.po60
-rw-r--r--modules/luci-base/po/ru/base.po147
-rw-r--r--modules/luci-base/po/sk/base.po57
-rw-r--r--modules/luci-base/po/sv/base.po60
-rw-r--r--modules/luci-base/po/templates/base.pot57
-rw-r--r--modules/luci-base/po/tr/base.po57
-rw-r--r--modules/luci-base/po/uk/base.po75
-rw-r--r--modules/luci-base/po/vi/base.po57
-rw-r--r--modules/luci-base/po/zh-cn/base.po198
-rw-r--r--modules/luci-base/po/zh-tw/base.po60
-rw-r--r--modules/luci-mod-admin-full/luasrc/controller/admin/uci.lua26
-rw-r--r--modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi_overview.lua6
-rw-r--r--modules/luci-mod-admin-full/luasrc/view/admin_network/diagnostics.htm2
-rw-r--r--modules/luci-mod-admin-full/luasrc/view/admin_network/iface_overview_status.htm4
-rw-r--r--modules/luci-mod-admin-full/luasrc/view/admin_network/iface_status.htm2
-rw-r--r--modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm101
-rw-r--r--modules/luci-mod-admin-full/luasrc/view/admin_system/packages.htm4
-rw-r--r--modules/luci-mod-admin-full/luasrc/view/admin_uci/changes.htm10
-rw-r--r--modules/luci-mod-admin-full/luasrc/view/admin_uci/revert.htm11
-rw-r--r--protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua74
-rw-r--r--protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua9
-rw-r--r--themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/cascade.css31
-rw-r--r--themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/cascade.css77
156 files changed, 6779 insertions, 1481 deletions
diff --git a/applications/luci-app-adblock/luasrc/controller/adblock.lua b/applications/luci-app-adblock/luasrc/controller/adblock.lua
index 10110666c..4c7724471 100644
--- a/applications/luci-app-adblock/luasrc/controller/adblock.lua
+++ b/applications/luci-app-adblock/luasrc/controller/adblock.lua
@@ -3,9 +3,12 @@
module("luci.controller.adblock", package.seeall)
+local sys = require("luci.sys")
local util = require("luci.util")
-local templ = require("luci.template")
+local http = require("luci.http")
local i18n = require("luci.i18n")
+local json = require("luci.jsonc")
+local uci = require("luci.model.uci").cursor()
function index()
if not nixio.fs.access("/etc/config/adblock") then
@@ -13,24 +16,56 @@ function index()
end
entry({"admin", "services", "adblock"}, firstchild(), _("Adblock"), 30).dependent = false
entry({"admin", "services", "adblock", "tab_from_cbi"}, cbi("adblock/overview_tab", {hideresetbtn=true, hidesavebtn=true}), _("Overview"), 10).leaf = true
- entry({"admin", "services", "adblock", "logfile"}, call("logread"), _("View Logfile"), 20).leaf = true
+ entry({"admin", "services", "adblock", "log"}, template("adblock/logread"), _("View Logfile"), 20).leaf = true
entry({"admin", "services", "adblock", "advanced"}, firstchild(), _("Advanced"), 100)
entry({"admin", "services", "adblock", "advanced", "blacklist"}, form("adblock/blacklist_tab"), _("Edit Blacklist"), 110).leaf = true
entry({"admin", "services", "adblock", "advanced", "whitelist"}, form("adblock/whitelist_tab"), _("Edit Whitelist"), 120).leaf = true
entry({"admin", "services", "adblock", "advanced", "configuration"}, form("adblock/configuration_tab"), _("Edit Configuration"), 130).leaf = true
entry({"admin", "services", "adblock", "advanced", "query"}, template("adblock/query"), _("Query domains"), 140).leaf = true
entry({"admin", "services", "adblock", "advanced", "result"}, call("queryData"), nil, 150).leaf = true
+ entry({"admin", "services", "adblock", "logread"}, call("logread"), nil).leaf = true
+ entry({"admin", "services", "adblock", "status"}, call("status_update"), nil).leaf = true
+ entry({"admin", "services", "adblock", "action"}, call("adb_action"), nil).leaf = true
+end
+
+function adb_action(name)
+ if name == "do_suspend" then
+ luci.sys.call("/etc/init.d/adblock suspend >/dev/null 2>&1")
+ elseif name == "do_resume" then
+ luci.sys.call("/etc/init.d/adblock resume >/dev/null 2>&1")
+ elseif name == "do_refresh" then
+ luci.sys.call("/etc/init.d/adblock reload >/dev/null 2>&1")
+ end
+ luci.http.prepare_content("text/plain")
+ luci.http.write("0")
+end
+
+function status_update()
+ local rt_file
+ local content
+
+ rt_file = uci:get("adblock", "global", "adb_rtfile") or "/tmp/adb_runtime.json"
+
+ if nixio.fs.access(rt_file) then
+ content = json.parse(nixio.fs.readfile(rt_file) or "")
+ http.prepare_content("application/json")
+ http.write_json(content)
+ end
end
function logread()
- local logfile
+ local content
if nixio.fs.access("/var/log/messages") then
- logfile = util.trim(util.exec("grep -F 'adblock-' /var/log/messages"))
+ content = util.trim(util.exec("grep -F 'adblock-' /var/log/messages"))
else
- logfile = util.trim(util.exec("logread -e 'adblock-'"))
+ content = util.trim(util.exec("logread -e 'adblock-'"))
+ end
+
+ if content == "" then
+ content = "No adblock related logs yet!"
end
- templ.render("adblock/logread", {title = i18n.translate("Adblock Logfile"), content = logfile})
+ http.write(content)
end
function queryData(domain)
diff --git a/applications/luci-app-adblock/luasrc/model/cbi/adblock/blacklist_tab.lua b/applications/luci-app-adblock/luasrc/model/cbi/adblock/blacklist_tab.lua
index 39688dc19..b3b3f8d0e 100644
--- a/applications/luci-app-adblock/luasrc/model/cbi/adblock/blacklist_tab.lua
+++ b/applications/luci-app-adblock/luasrc/model/cbi/adblock/blacklist_tab.lua
@@ -1,19 +1,19 @@
-- Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
-- This is free software, licensed under the Apache License, Version 2.0
-local fs = require("nixio.fs")
-local util = require("luci.util")
-local uci = require("luci.model.uci").cursor()
-local adbinput = uci:get("adblock", "blacklist", "adb_src") or "/etc/adblock/adblock.blacklist"
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local uci = require("luci.model.uci").cursor()
+local input = uci:get("adblock", "blacklist", "adb_src") or "/etc/adblock/adblock.blacklist"
-if not fs.access(adbinput) then
+if not fs.access(input) then
m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
m.reset = false
m.submit = false
return m
end
-if fs.stat(adbinput).size >= 102400 then
+if fs.stat(input).size >= 102400 then
m = SimpleForm("error", nil,
translate("The file size is too large for online editing in LuCI (≥ 100 KB). ")
.. translate("Please edit this file directly in a terminal session."))
@@ -28,7 +28,7 @@ m.submit = translate("Save")
m.reset = false
s = m:section(SimpleSection, nil,
- translatef("This form allows you to modify the content of the adblock blacklist (%s).<br />", adbinput)
+ translatef("This form allows you to modify the content of the adblock blacklist (%s). ", input)
.. translate("Please add only one domain per line. Comments introduced with '#' are allowed - ip addresses, wildcards and regex are not."))
f = s:option(TextValue, "data")
@@ -37,11 +37,15 @@ f.rows = 20
f.rmempty = true
function f.cfgvalue()
- return fs.readfile(adbinput) or ""
+ return fs.readfile(input) or ""
end
function f.write(self, section, data)
- return fs.writefile(adbinput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+ return fs.writefile(input, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function f.remove(self, section, value)
+ return fs.writefile(input, "")
end
function s.handle(self, state, data)
diff --git a/applications/luci-app-adblock/luasrc/model/cbi/adblock/configuration_tab.lua b/applications/luci-app-adblock/luasrc/model/cbi/adblock/configuration_tab.lua
index 78636038b..1e98f0204 100644
--- a/applications/luci-app-adblock/luasrc/model/cbi/adblock/configuration_tab.lua
+++ b/applications/luci-app-adblock/luasrc/model/cbi/adblock/configuration_tab.lua
@@ -1,18 +1,18 @@
-- Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
-- This is free software, licensed under the Apache License, Version 2.0
-local fs = require("nixio.fs")
-local util = require("luci.util")
-local adbinput = "/etc/config/adblock"
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local input = "/etc/config/adblock"
-if not fs.access(adbinput) then
+if not fs.access(input) then
m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
m.reset = false
m.submit = false
return m
end
-if fs.stat(adbinput).size >= 102400 then
+if fs.stat(input).size >= 102400 then
m = SimpleForm("error", nil,
translate("The file size is too large for online editing in LuCI (&ge; 100 KB). ")
.. translate("Please edit this file directly in a terminal session."))
@@ -34,11 +34,15 @@ f.rows = 20
f.rmempty = true
function f.cfgvalue()
- return fs.readfile(adbinput) or ""
+ return fs.readfile(input) or ""
end
function f.write(self, section, data)
- return fs.writefile(adbinput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+ return fs.writefile(input, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function f.remove(self, section, value)
+ return fs.writefile(input, "")
end
function s.handle(self, state, data)
diff --git a/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua b/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua
index da783e336..2ecaaab72 100644
--- a/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua
+++ b/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua
@@ -1,69 +1,27 @@
-- Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
-- This is free software, licensed under the Apache License, Version 2.0
-local fs = require("nixio.fs")
-local uci = require("luci.model.uci").cursor()
-local sys = require("luci.sys")
-local util = require("luci.util")
-local dump = util.ubus("network.interface", "dump", {})
-local json = require("luci.jsonc")
-local adbinput = uci:get("adblock", "global", "adb_rtfile") or "/tmp/adb_runtime.json"
+local fs = require("nixio.fs")
+local uci = require("luci.model.uci").cursor()
+local util = require("luci.util")
+local dump = util.ubus("network.interface", "dump", {})
m = Map("adblock", translate("Adblock"),
translate("Configuration of the adblock package to block ad/abuse domains by using DNS. ")
.. translatef("For further information "
.. "<a href=\"%s\" target=\"_blank\">"
.. "check the online documentation</a>", "https://github.com/openwrt/packages/blob/master/net/adblock/files/README.md"))
-m.apply_on_parse = true
-
-function m.on_apply(self)
- luci.sys.call("/etc/init.d/adblock reload >/dev/null 2>&1")
- luci.http.redirect(luci.dispatcher.build_url("admin", "services", "adblock"))
-end
-- Main adblock options
s = m:section(NamedSection, "global", "adblock")
-local parse = json.parse(fs.readfile(adbinput) or "")
-if parse then
- status = parse.data.adblock_status
- version = parse.data.adblock_version
- domains = parse.data.overall_domains
- fetch = parse.data.fetch_utility
- backend = parse.data.dns_backend
- rundate = parse.data.last_rundate
-end
-
o1 = s:option(Flag, "adb_enabled", translate("Enable Adblock"))
o1.default = o1.disabled
o1.rmempty = false
-btn = s:option(Button, "", translate("Suspend / Resume Adblock"))
-if parse and status == "enabled" then
- btn.inputtitle = translate("Suspend")
- btn.inputstyle = "reset"
- btn.disabled = false
- function btn.write()
- luci.sys.call("/etc/init.d/adblock suspend >/dev/null 2>&1")
- luci.http.redirect(luci.dispatcher.build_url("admin", "services", "adblock"))
- end
-elseif parse and status == "paused" then
- btn.inputtitle = translate("Resume")
- btn.inputstyle = "apply"
- btn.disabled = false
- function btn.write()
- luci.sys.call("/etc/init.d/adblock resume >/dev/null 2>&1")
- luci.http.redirect(luci.dispatcher.build_url("admin", "services", "adblock"))
- end
-else
- btn.inputtitle = translate("-------")
- btn.inputstyle = "button"
- btn.disabled = true
-end
-
o2 = s:option(ListValue, "adb_dns", translate("DNS Backend (DNS Directory)"),
- translate("List of supported DNS backends with their default list export directory.<br />")
+ translate("List of supported DNS backends with their default list export directory. ")
.. translate("To overwrite the default path use the 'DNS Directory' option in the extra section below."))
o2:value("dnsmasq", "dnsmasq (/tmp)")
o2:value("unbound", "unbound (/var/lib/unbound)")
@@ -85,7 +43,7 @@ o3.default = "uclient-fetch"
o3.rmempty = false
o4 = s:option(ListValue, "adb_trigger", translate("Startup Trigger"),
- translate("List of available network interfaces. Usually the startup will be triggered by the 'wan' interface.<br />")
+ translate("List of available network interfaces. Usually the startup will be triggered by the 'wan' interface. ")
.. translate("Choose 'none' to disable automatic startups, 'timed' to use a classic timeout (default 30 sec.) or select another trigger interface."))
o4:value("none")
o4:value("timed")
@@ -101,66 +59,8 @@ o4.rmempty = false
-- Runtime information
-ds = m:section(NamedSection, "global", "adblock", translate("Runtime Information"))
-
-dv1 = ds:option(DummyValue, "", translate("Adblock Status"))
-dv1.template = "adblock/runtime"
-if parse == nil then
- dv1.value = translate("n/a")
-else
- if status == "error" then
- dv1.value = translate("error")
- elseif status == "disabled" then
- dv1.value = translate("disabled")
- elseif status == "paused" then
- dv1.value = translate("paused")
- elseif status == "running" then
- dv1.value = translate("running")
- else
- dv1.value = translate("enabled")
- end
-end
-
-dv2 = ds:option(DummyValue, "", translate("Adblock Version"))
-dv2.template = "adblock/runtime"
-if parse == nil then
- dv2.value = translate("n/a")
-else
- dv2.value = version
-end
-
-dv3 = ds:option(DummyValue, "", translate("Download Utility (SSL Library)"),
- translate("For SSL protected blocklist sources you need a suitable SSL library, e.g. 'libustream-ssl' or 'built-in'."))
-dv3.template = "adblock/runtime"
-if parse == nil then
- dv3.value = translate("n/a")
-else
- dv3.value = fetch
-end
-
-dv4 = ds:option(DummyValue, "", translate("DNS Backend (DNS Directory)"))
-dv4.template = "adblock/runtime"
-if parse == nil then
- dv4.value = translate("n/a")
-else
- dv4.value = backend
-end
-
-dv5 = ds:option(DummyValue, "", translate("Overall Domains"))
-dv5.template = "adblock/runtime"
-if parse == nil then
- dv5.value = translate("n/a")
-else
- dv5.value = domains
-end
-
-dv6 = ds:option(DummyValue, "", translate("Last Run"))
-dv6.template = "adblock/runtime"
-if parse == nil then
- dv6.value = translate("n/a")
-else
- dv6.value = rundate
-end
+ds = s:option(DummyValue, "_dummy")
+ds.template = "adblock/runtime"
-- Blocklist table
@@ -197,46 +97,54 @@ e1 = e:option(Flag, "adb_debug", translate("Verbose Debug Logging"),
e1.default = e1.disabled
e1.rmempty = false
-e2 = e:option(Flag, "adb_forcedns", translate("Force Local DNS"),
- translate("Redirect all DNS queries from 'lan' zone to the local resolver."))
+e2 = e:option(Flag, "adb_nice", translate("Low Priority Service"),
+ translate("Set the nice level to 'low priority' and the adblock background processing will take less resources from the system. ")
+ ..translate("This change requires a manual service stop/re-start to take effect."))
e2.default = e2.disabled
+e2.disabled = "0"
+e2.enabled = "10"
e2.rmempty = false
-e3 = e:option(Flag, "adb_forcesrt", translate("Force Overall Sort"),
- translate("Enable memory intense overall sort / duplicate removal on low memory devices (&lt; 64 MB free RAM)"))
+e3 = e:option(Flag, "adb_forcedns", translate("Force Local DNS"),
+ translate("Redirect all DNS queries from 'lan' zone to the local resolver, apply to udp and tcp protocol on ports 53, 853 and 5353."))
e3.default = e3.disabled
e3.rmempty = false
-e4 = e:option(Flag, "adb_backup", translate("Enable Blocklist Backup"),
- translate("Create compressed blocklist backups, they will be used in case of download errors or during startup in backup mode."))
+e4 = e:option(Flag, "adb_forcesrt", translate("Force Overall Sort"),
+ translate("Enable memory intense overall sort / duplicate removal on low memory devices (&lt; 64 MB free RAM)"))
e4.default = e4.disabled
e4.rmempty = false
-e5 = e:option(Value, "adb_backupdir", translate("Backup Directory"),
+e5 = e:option(Flag, "adb_backup", translate("Enable Blocklist Backup"),
+ translate("Create compressed blocklist backups, they will be used in case of download errors or during startup in backup mode."))
+e5.default = e5.disabled
+e5.rmempty = false
+
+e6 = e:option(Value, "adb_backupdir", translate("Backup Directory"),
translate("Target directory for adblock backups. Please use only non-volatile disks, e.g. an external usb stick."))
-e5:depends("adb_backup", 1)
-e5.datatype = "directory"
-e5.default = "/mnt"
+e6:depends("adb_backup", 1)
+e6.datatype = "directory"
+e6.default = "/mnt"
e5.rmempty = true
-e6 = e:option(Flag, "adb_backup_mode", translate("Backup Mode"),
+e7 = e:option(Flag, "adb_backup_mode", translate("Backup Mode"),
translate("Do not automatically update blocklists during startup, use blocklist backups instead."))
-e6:depends("adb_backup", 1)
-e6.default = e6.disabled
-e6.rmempty = true
+e7:depends("adb_backup", 1)
+e7.default = e7.disabled
+e7.rmempty = true
-e7 = e:option(Value, "adb_maxqueue", translate("Max. Download Queue"),
- translate("Size of the download queue to handle downloads &amp; list processing in parallel (default '4').<br />")
+e8 = e:option(Value, "adb_maxqueue", translate("Max. Download Queue"),
+ translate("Size of the download queue to handle downloads &amp; list processing in parallel (default '4'). ")
.. translate("For further performance improvements you can raise this value, e.g. '8' or '16' should be safe."))
-e7.default = 4
-e7.datatype = "range(1,32)"
-e7.rmempty = false
+e8.default = 4
+e8.datatype = "range(1,32)"
+e8.rmempty = false
-e8 = e:option(Flag, "adb_jail", translate("'Jail' Blocklist Creation"),
- translate("Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all domains except those listed in the whitelist file.<br />")
+e9 = e:option(Flag, "adb_jail", translate("'Jail' Blocklist Creation"),
+ translate("Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all domains except those listed in the whitelist file. ")
.. translate("You can use this restrictive blocklist manually e.g. for guest wifi or kidsafe configurations."))
-e8.default = e8.disabled
-e8.rmempty = true
+e9.default = e9.disabled
+e9.rmempty = true
e9 = e:option(Flag, "adb_dnsflush", translate("Flush DNS Cache"),
translate("Flush DNS Cache after adblock processing."))
@@ -244,13 +152,13 @@ e9.default = e9.disabled
e9.rmempty = true
e10 = e:option(Flag, "adb_notify", translate("Email Notification"),
- translate("Send notification emails in case of a processing error or if domain count is &le; 0.<br />")
+ translate("Send notification emails in case of a processing error or if domain count is &le; 0. ")
.. translate("Please note: this needs additional 'msmtp' package installation and setup."))
e10.default = e10.disabled
e10.rmempty = true
e11 = e:option(Value, "adb_notifycnt", translate("Email Notification Count"),
- translate("Raise the minimum email notification count, to get emails if the overall count is less or equal to the given limit (default 0),<br />")
+ translate("Raise the minimum email notification count, to get emails if the overall count is less or equal to the given limit (default 0), ")
.. translate("e.g. to receive an email notification with every adblock update set this value to 150000."))
e11.default = 0
e11.datatype = "min(0)"
diff --git a/applications/luci-app-adblock/luasrc/model/cbi/adblock/whitelist_tab.lua b/applications/luci-app-adblock/luasrc/model/cbi/adblock/whitelist_tab.lua
index 01d3911f6..a78d9af4a 100644
--- a/applications/luci-app-adblock/luasrc/model/cbi/adblock/whitelist_tab.lua
+++ b/applications/luci-app-adblock/luasrc/model/cbi/adblock/whitelist_tab.lua
@@ -1,19 +1,19 @@
-- Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
-- This is free software, licensed under the Apache License, Version 2.0
-local fs = require("nixio.fs")
-local util = require("luci.util")
-local uci = require("luci.model.uci").cursor()
-local adbinput = uci:get("adblock", "global", "adb_whitelist") or "/etc/adblock/adblock.whitelist"
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local uci = require("luci.model.uci").cursor()
+local input = uci:get("adblock", "global", "adb_whitelist") or "/etc/adblock/adblock.whitelist"
-if not fs.access(adbinput) then
+if not fs.access(input) then
m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
m.reset = false
m.submit = false
return m
end
-if fs.stat(adbinput).size >= 102400 then
+if fs.stat(input).size >= 102400 then
m = SimpleForm("error", nil,
translate("The file size is too large for online editing in LuCI (&ge; 100 KB). ")
.. translate("Please edit this file directly in a terminal session."))
@@ -28,7 +28,7 @@ m.submit = translate("Save")
m.reset = false
s = m:section(SimpleSection, nil,
- translatef("This form allows you to modify the content of the adblock whitelist (%s).<br />", adbinput)
+ translatef("This form allows you to modify the content of the adblock whitelist (%s). ", input)
.. translate("Please add only one domain per line. Comments introduced with '#' are allowed - ip addresses, wildcards and regex are not."))
f = s:option(TextValue, "data")
@@ -37,11 +37,15 @@ f.rows = 20
f.rmempty = true
function f.cfgvalue()
- return fs.readfile(adbinput) or ""
+ return fs.readfile(input) or ""
end
function f.write(self, section, data)
- return fs.writefile(adbinput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+ return fs.writefile(input, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function f.remove(self, section, value)
+ return fs.writefile(input, "")
end
function s.handle(self, state, data)
diff --git a/applications/luci-app-adblock/luasrc/view/adblock/blocklist.htm b/applications/luci-app-adblock/luasrc/view/adblock/blocklist.htm
index 93713c92b..a6f228651 100644
--- a/applications/luci-app-adblock/luasrc/view/adblock/blocklist.htm
+++ b/applications/luci-app-adblock/luasrc/view/adblock/blocklist.htm
@@ -4,81 +4,65 @@ This is free software, licensed under the Apache License, Version 2.0
-%>
<%-
-local rowcnt = 1
-function rowstyle()
- rowcnt = rowcnt + 1
- return (rowcnt % 2) + 1
-end
-
-function width(o)
- if o.width then
- if type(o.width) == 'number' then
- return ' style="width:%dpx"' % o.width
- end
- return ' style="width:%s"' % o.width
- end
- return ''
-end
+local anonclass = (not self.anonymous or self.sectiontitle) and "named" or "anonymous"
-%>
<style type="text/css">
.table.cbi-section-table .th,
.table.cbi-section-table .td,
.cbi-section-table-cell,
-.cbi-section-table-row
+.cbi-section-table-row,
+.tr[data-title]::before
{
- text-align:left;
- vertical-align:top;
- margin-right:auto;
- margin-left:0px;
- padding-left:2px;
- line-height:20px;
+ text-align: left;
+ vertical-align: top;
+ margin-left: 0px;
+ padding-left: 2px;
}
.table.cbi-section-table .th
{
- white-space:nowrap;
+ white-space: nowrap;
}
.table.cbi-section-table input
{
- width:7em;
+ width: 7em;
}
+.cbi-section-table-row > .cbi-value-field [data-dynlist] > input,
+.table.cbi-section-table input
+{
+ width: 7em;
+}
+
.cbi-input-text
{
- text-align:left;
- padding-left:2px;
- outline:none;
- box-shadow:none;
- background:transparent;
- height:20px;
- width:10em;
+ text-align: left;
+ padding-left: 2px;
+ outline: none;
+ box-shadow: none;
+ background: transparent;
+ width: 7em;
}
</style>
-<%-
- local anonclass = (not self.anonymous or self.sectiontitle) and "named" or "anonymous"
- local titlename = ifattr(not self.anonymous or self.sectiontitle, "data-title", translate("Name"))
--%>
-
-<fieldset class="cbi-section" id="cbi-<%=self.config%>-<%=self.sectiontype%>">
+<div class="cbi-section" id="cbi-<%=self.config%>-<%=self.sectiontype%>">
<% if self.title then -%>
- <legend><%=self.title%></legend>
+ <h3><%=self.title%></h3>
<%- end %>
<div class="cbi-section-descr"><%=self.description%></div>
<div class="cbi-section-node">
<div class="table cbi-section-table">
- <div class="tr cbi-section-table-titles <%=anonclass%>"<%=titlename%>>
+ <div class="tr cbi-section-table-titles <%=anonclass%>">
<%- for i, k in pairs(self.children) do -%>
- <div class="th cbi-section-table-cell"<%=width(k)%>>
+ <div class="th cbi-section-table-cell">
<%-=k.title-%>
</div>
<%- end -%>
</div>
- <%- local isempty = true
+ <%- local section, scope, isempty = true
for i, k in ipairs(self:cfgsections()) do
- local section = k
- local sectionname = striptags((type(self.sectiontitle) == "function") and self:sectiontitle(section) or k)
+ section = k
+ local sectionname = striptags((type(self.sectiontitle) == "function") and self:sectiontitle(section) or k)
local sectiontitle = ifattr(sectionname and (not self.anonymous or self.sectiontitle), "data-title", sectionname)
-
isempty = false
scope = { valueheader = "cbi/cell_valueheader", valuefooter = "cbi/cell_valuefooter" }
-%>
@@ -95,4 +79,4 @@ end
<%- end -%>
</div>
</div>
-</fieldset>
+</div>
diff --git a/applications/luci-app-adblock/luasrc/view/adblock/logread.htm b/applications/luci-app-adblock/luasrc/view/adblock/logread.htm
index 082ec806f..b50523349 100644
--- a/applications/luci-app-adblock/luasrc/view/adblock/logread.htm
+++ b/applications/luci-app-adblock/luasrc/view/adblock/logread.htm
@@ -4,17 +4,47 @@ This is free software, licensed under the Apache License, Version 2.0
-%>
<%+header%>
-
-<div class="cbi-map">
- <fieldset class="cbi-section">
- <div class="cbi-section-descr"><%:This form shows the syslog output, pre-filtered for adblock related messages only.%></div>
- <textarea id="logread_id" style="width: 100%; height: 450px; border: 1px solid #cccccc; padding: 5px; font-size: 12px; font-family: monospace; resize: none;" readonly="readonly" wrap="off" rows="<%=content:cmatch("\n")+2%>"><%=content:pcdata()%></textarea>
- </fieldset>
-</div>
+<style type="text/css">
+ select[readonly],
+ textarea[readonly]
+ {
+ width: 100%;
+ height: 450px;
+ border: 1px solid #cccccc;
+ padding: 5px;
+ font-size: 12px;
+ font-family: monospace;
+ resize: none;
+ pointer-events: auto;
+ cursor: auto;
+ }
+</style>
<script type="text/javascript">
- var textarea = document.getElementById('logread_id');
- textarea.scrollTop = textarea.scrollHeight;
+//<![CDATA[
+ function log_update()
+ {
+ XHR.poll(5, '<%=luci.dispatcher.build_url("admin", "services", "adblock", "logread")%>', null,
+ function(x)
+ {
+ if (!x)
+ {
+ return;
+ }
+ var view = document.getElementById("view_id");
+ view.value = x.responseText;
+ view.scrollTop = view.scrollHeight;
+ });
+ }
+ window.onload = log_update();
+//]]>
</script>
+<div class="cbi-map">
+ <div class="cbi-section">
+ <div class="cbi-section-descr"><%:The syslog output, pre-filtered for adblock related messages only.%></div>
+ <textarea id="view_id" readonly="readonly" wrap="off" value=""></textarea>
+ </div>
+</div>
+
<%+footer%>
diff --git a/applications/luci-app-adblock/luasrc/view/adblock/query.htm b/applications/luci-app-adblock/luasrc/view/adblock/query.htm
index 72dc16b1d..2cf7e5baa 100644
--- a/applications/luci-app-adblock/luasrc/view/adblock/query.htm
+++ b/applications/luci-app-adblock/luasrc/view/adblock/query.htm
@@ -1,5 +1,5 @@
<%#
-Copyright 2017 Dirk Brenken (dev@brenken.org)
+Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
This is free software, licensed under the Apache License, Version 2.0
-%>
@@ -12,7 +12,7 @@ This is free software, licensed under the Apache License, Version 2.0
function update_status(data)
{
var domain = data.value;
- var input = document.getElementById('query_input');
+ var input = document.getElementById('query_input');
var output = document.getElementById('query_output');
if (input && output)
@@ -45,20 +45,20 @@ This is free software, licensed under the Apache License, Version 2.0
<form method="post" action="<%=REQUEST_URI%>">
<div class="cbi-map">
- <fieldset class="cbi-section">
+ <div class="cbi-section">
<div class="cbi-section-descr"><%:This form allows you to query active block lists for certain domains, e.g. for whitelisting.%></div>
<div style="width:33%; float:left;">
- <input style="margin: 5px 0" type="text" value="google.com" name="input" />
+ <input type="text" value="google.com" name="input" />
<input type="button" value="<%:Query%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.input)" />
</div>
<br style="clear:both" />
<br />
- </fieldset>
+ </div>
</div>
- <fieldset class="cbi-section" style="display:none">
- <legend id="query_input"><%:Collecting data...%></legend>
+ <div class="cbi-section" style="display:none">
+ <h3 id="query_input"><%:Collecting data...%></h3>
<span id="query_output"></span>
- </fieldset>
+ </div>
</form>
<%+footer%>
diff --git a/applications/luci-app-adblock/luasrc/view/adblock/runtime.htm b/applications/luci-app-adblock/luasrc/view/adblock/runtime.htm
index c01d9a5c0..3f4d64259 100644
--- a/applications/luci-app-adblock/luasrc/view/adblock/runtime.htm
+++ b/applications/luci-app-adblock/luasrc/view/adblock/runtime.htm
@@ -3,8 +3,199 @@ Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
This is free software, licensed under the Apache License, Version 2.0
-%>
-<%+cbi/valueheader%>
+<style type="text/css">
+.runtime
+{
+ color: #37c;
+ font-weight: bold;
+ display: inline-block;
+ width: 100%;
+ padding-top: 0.5rem;
+}
+</style>
-<input name="runtime" id="runtime" type="text" class="cbi-input-text" style="outline:none;border:none;box-shadow:none;background:transparent;color:#0069d6;font-weight:bold;line-height:30px;height:30px;width:20em;" value="<%=self:cfgvalue(section)%>" disabled="disabled" />
+<script type="text/javascript">
+//<![CDATA[
+ function status_update(json)
+ {
+ var view = document.getElementById("value_1");
+ var btn1 = document.getElementById("btn1");
+ var btn1_running = document.getElementById("btn1_running");
+ var btn2 = document.getElementById("btn2");
+ var btn2_running = document.getElementById("btn2_running");
+ var input = json.data.adblock_status;
-<%+cbi/valuefooter%>
+ view.innerHTML = input || "-";
+ if (input === "enabled")
+ {
+ btn1.value = "<%:Suspend%>";
+ btn1.name = "do_suspend";
+ btn2.value = "<%:Refresh%>";
+ btn2.name = "do_refresh";
+ btn1.disabled = false;
+ running(btn1_running, 0);
+ btn2.disabled = false;
+ running(btn2_running, 0);
+ }
+ else if (input === "paused")
+ {
+ btn1.value = "<%:Resume%>";
+ btn1.name = "do_resume";
+ btn2.value = "<%:Refresh%>";
+ btn2.name = "do_refresh";
+ btn1.disabled = false;
+ running(btn1_running, 0);
+ btn2.disabled = false;
+ running(btn2_running, 0);
+ }
+ else
+ {
+ btn1.value = "<%:Suspend%>";
+ btn1.name = "do_suspend";
+ btn2.value = "<%:Refresh%>";
+ btn2.name = "do_refresh";
+ btn1.disabled = true;
+ btn2.disabled = true;
+ }
+ view = document.getElementById("value_2");
+ input = json.data.adblock_version;
+ view.innerHTML = input || "-";
+ view = document.getElementById("value_3");
+ input = json.data.fetch_utility;
+ view.innerHTML = input || "-";
+ view = document.getElementById("value_4");
+ input = json.data.dns_backend;
+ view.innerHTML = input || "-";
+ view = document.getElementById("value_5");
+ input = json.data.overall_domains;
+ view.innerHTML = input || "-";
+ view = document.getElementById("value_6");
+ input = json.data.last_rundate;
+ view.innerHTML = input || "-";
+ }
+
+ function btn_action(action)
+ {
+ var btn1 = document.getElementById("btn1");
+ var btn1_running = document.getElementById("btn1_running");
+ var btn2 = document.getElementById("btn2");
+ var btn2_running = document.getElementById("btn2_running");
+
+ btn1.disabled = true;
+ btn2.disabled = true;
+
+ if (action.name === "do_refresh")
+ {
+ running(btn2_running, 1);
+ }
+ else
+ {
+ running(btn1_running, 1);
+ }
+
+ new XHR.get('<%=luci.dispatcher.build_url("admin", "services", "adblock")%>/action/' + action.name, null,
+ function(x)
+ {
+ if (!x)
+ {
+ return;
+ }
+ });
+ }
+
+ function running(element, state)
+ {
+ if (state === 1)
+ {
+ var running_html = '<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" width="16" height="16" style="vertical-align:middle" />';
+ element.innerHTML = running_html;
+ }
+ else
+ {
+ element.innerHTML = '';
+ }
+ }
+
+ XHR.get('<%=luci.dispatcher.build_url("admin", "services", "adblock", "status")%>', null,
+ function(x, json_info)
+ {
+ if (!x || !json_info)
+ {
+ var btn1 = document.getElementById("btn1");
+ var btn2 = document.getElementById("btn2");
+ btn1.value = "<%:Suspend%>";
+ btn1.name = "do_suspend";
+ btn2.value = "<%:Refresh%>";
+ btn2.name = "do_refresh";
+ btn1.disabled = true;
+ btn2.disabled = true;
+ return;
+ }
+ status_update(json_info)
+ });
+
+ XHR.poll(5, '<%=luci.dispatcher.build_url("admin", "services", "adblock", "status")%>', null,
+ function(x, json_info)
+ {
+ if (!x || !json_info)
+ {
+ return;
+ }
+ status_update(json_info)
+ });
+//]]>
+</script>
+
+<h3><%:Runtime Information%></h3>
+<div class="cbi-value" id="status_1">
+ <label class="cbi-value-title" for="status_1"><%:Adblock Status%></label>
+ <div class="cbi-value-field">
+ <span class="runtime" id="value_1">-</span>
+ </div>
+</div>
+<div class="cbi-value" id="status_2">
+ <label class="cbi-value-title" for="status_2"><%:Adblock Version%></label>
+ <div class="cbi-value-field">
+ <span class="runtime" id="value_2">-</span>
+ </div>
+</div>
+<div class="cbi-value" id="status_3">
+ <label class="cbi-value-title" for="status_3"><%:Download Utility (SSL Library)%></label>
+ <div class="cbi-value-field">
+ <span class="runtime" id="value_3">-</span>
+ </div>
+</div>
+<div class="cbi-value" id="status_4">
+ <label class="cbi-value-title" for="status_4"><%:DNS Backend (DNS Directory)%></label>
+ <div class="cbi-value-field">
+ <span class="runtime" id="value_4">-</span>
+ </div>
+</div>
+<div class="cbi-value" id="status_5">
+ <label class="cbi-value-title" for="status_5"><%:Overall Domains%></label>
+ <div class="cbi-value-field">
+ <span class="runtime" id="value_5">-</span>
+ </div>
+</div>
+<div class="cbi-value" id="status_6">
+ <label class="cbi-value-title" for="status_6"><%:Last Run%></label>
+ <div class="cbi-value-field">
+ <span class="runtime" id="value_6">-</span>
+ </div>
+</div>
+<hr />
+<div class="cbi-value" id="button_1">
+ <label class="cbi-value-title" for="button_1"><%:Suspend / Resume Adblock%></label>
+ <div class="cbi-value-field">
+ <input class="cbi-button cbi-button-reset" id="btn1" type="button" value="" onclick="btn_action(this)" />
+ <span id="btn1_running" style="display:inline-block; width:16px; height:16px; margin:0 5px"></span>
+ </div>
+</div>
+<p />
+<div class="cbi-value" id="button_2">
+ <label class="cbi-value-title" for="button_2"><%:Refresh Blocklist Sources%></label>
+ <div class="cbi-value-field">
+ <input class="cbi-button cbi-button-apply" id="btn2" type="button" value="" onclick="btn_action(this)" />
+ <span id="btn2_running" style="display:inline-block; width:16px; height:16px; margin:0 5px"></span>
+ </div>
+</div>
diff --git a/applications/luci-app-adblock/po/it/adblock.po b/applications/luci-app-adblock/po/it/adblock.po
index c2db36eff..9eddb7d91 100644
--- a/applications/luci-app-adblock/po/it/adblock.po
+++ b/applications/luci-app-adblock/po/it/adblock.po
@@ -196,6 +196,9 @@ msgstr "Caricando"
msgid "Max. Download Queue"
msgstr ""
+msgid "Name"
+msgstr ""
+
msgid "No"
msgstr "No"
diff --git a/applications/luci-app-adblock/po/ja/adblock.po b/applications/luci-app-adblock/po/ja/adblock.po
index cddedacd4..ff3234175 100644
--- a/applications/luci-app-adblock/po/ja/adblock.po
+++ b/applications/luci-app-adblock/po/ja/adblock.po
@@ -214,6 +214,9 @@ msgstr "読込中"
msgid "Max. Download Queue"
msgstr "ダウンロード キューの上限"
+msgid "Name"
+msgstr ""
+
msgid "No"
msgstr "いいえ"
diff --git a/applications/luci-app-adblock/po/pt-br/adblock.po b/applications/luci-app-adblock/po/pt-br/adblock.po
index 07d0f9a8d..6e5c7497c 100644
--- a/applications/luci-app-adblock/po/pt-br/adblock.po
+++ b/applications/luci-app-adblock/po/pt-br/adblock.po
@@ -194,6 +194,9 @@ msgstr "Carregando"
msgid "Max. Download Queue"
msgstr ""
+msgid "Name"
+msgstr ""
+
msgid "No"
msgstr "Não"
diff --git a/applications/luci-app-adblock/po/ru/adblock.po b/applications/luci-app-adblock/po/ru/adblock.po
index c1193d38e..f4957994b 100644
--- a/applications/luci-app-adblock/po/ru/adblock.po
+++ b/applications/luci-app-adblock/po/ru/adblock.po
@@ -8,7 +8,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.8.7.1\n"
-"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Last-Translator: Olimjon aka Kobin23 <olimko98@gmail.com>\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"
"Language: ru\n"
@@ -25,21 +25,23 @@ msgid ""
"<b>Caution:</b> To prevent OOM exceptions on low memory devices with less "
"than 64 MB free RAM, please only select a few of them!"
msgstr ""
+"<b>Внимание:</b> Для предотвращения переполнения ОЗУ, на устройствах"
+"с ОЗУ менее 64MB, выбирайте только необходимый минимум списков!"
msgid "Adblock"
msgstr "AdBlock"
msgid "Adblock Logfile"
-msgstr "Ведение системного журала Adblock-ом"
+msgstr "Системный журнал Adblock"
msgid "Adblock Status"
-msgstr "Состояние Adblock-а"
+msgstr "Состояние Adblock"
msgid "Adblock Version"
-msgstr "Версия Adblock-а"
+msgstr "Версия Adblock"
msgid "Additional trigger delay in seconds before adblock processing begins."
-msgstr "Дополнительная задержка в секундах до начала работы Adblock-a."
+msgstr "Дополнительная задержка в секундах до начала работы Adblock."
msgid "Advanced"
msgstr "Дополнительно"
@@ -54,10 +56,10 @@ msgid "Backup Mode"
msgstr "Режим сохранения бекапа"
msgid "Blocklist Sources"
-msgstr "Источники списков блокировки"
+msgstr "Источники списков блокировок"
msgid "Blocklist not found!"
-msgstr ""
+msgstr "Список блокировок не найден!"
msgid ""
"Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
@@ -72,8 +74,8 @@ msgid ""
"timeout (default 30 sec.) or select another trigger interface."
msgstr ""
"Выберите 'none', чтобы отключить автоматический старт, 'timed', чтобы "
-"использовать дефолтную задержку (по умолчанию 30 сек.) или выберите другой "
-"интерфейс запуска."
+"использовать стандартную задержку (по умолчанию 30 сек.) или выберите другой "
+"интерфейс для запуска."
msgid "Collecting data..."
msgstr "Сбор данных..."
@@ -88,7 +90,7 @@ msgid ""
"Create compressed blocklist backups, they will be used in case of download "
"errors or during startup in backup mode."
msgstr ""
-"Создавайте сжатые резервные копии списков блокировки, они будут "
+"Создание сжатых резервных копий списков блокировок, они будут "
"использоваться в случае ошибок загрузки или при запуске в ручном режиме."
msgid "DNS Backend (DNS Directory)"
@@ -104,14 +106,14 @@ msgid ""
"Do not automatically update blocklists during startup, use blocklist backups "
"instead."
msgstr ""
-"Не обновляйте списки блокировок автоматически во время запуска, вместо этого "
-"используйте резервные копии списков блокировок."
+"Не обновлять списки блокировок автоматически во время запуска, вместо этого "
+"использовать резервные копии списков блокировок."
msgid "Download Utility"
-msgstr "Скачать утилиту"
+msgstr "Утилита для скачивания"
msgid "Download Utility (SSL Library)"
-msgstr "Загрузить утилиту (библиотека SSL)"
+msgstr "Утилита для скачивания (с библиотекой SSL)"
msgid "Edit Blacklist"
msgstr "Редактировать Черный список"
@@ -123,26 +125,26 @@ msgid "Edit Whitelist"
msgstr "Редактировать Белый список"
msgid "Email Notification"
-msgstr "Уведомление на email"
+msgstr "Email уведомления"
msgid "Email Notification Count"
-msgstr "Кол-во уведомлений на email"
+msgstr "Кол-во email уведомлений"
msgid "Enable Adblock"
msgstr "Включить Adblock"
msgid "Enable Blocklist Backup"
-msgstr "Включить сохранение<br />списка блокировок"
+msgstr "Бэкап списка блокировок"
msgid ""
"Enable memory intense overall sort / duplicate removal on low memory devices "
"(&lt; 64 MB free RAM)"
msgstr ""
-"Включите полную сортировку / удаление дубликатов памяти на устройствах с "
+"Включить полную сортировку / удаление дубликатов в памяти. Используйте на устройствах с "
"низким объемом памяти (&lt; 64 MB свободной оперативной памяти)."
msgid "Enable verbose debug logging in case of any processing error."
-msgstr "Включите подробное ведение журнала отладки в случае ошибки обработки."
+msgstr "Включить подробное ведение журнала отладки в случае ошибок обработки."
msgid "Enabled"
msgstr "Включено"
@@ -154,7 +156,7 @@ msgid "Flush DNS Cache"
msgstr "Очистка кэша DNS"
msgid "Flush DNS Cache after adblock processing."
-msgstr "Очистки DNS-кэша после обработки Adblock-ом."
+msgstr "Очистка DNS-кэша после обработки Adblock-ом."
msgid ""
"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
@@ -174,14 +176,14 @@ msgid ""
"For further performance improvements you can raise this value, e.g. '8' or "
"'16' should be safe."
msgstr ""
-"Для повышения производительности вы можете увеличить это значение, например "
-"значения '8' или '16' повысят безопасность."
+"Для дополнительного повышения производительности вы можете увеличить это значение, например "
+"значения '8' или '16' должны быть безопасными."
msgid "Force Local DNS"
-msgstr "Назначить локальный DNS"
+msgstr "Локальный DNS"
msgid "Force Overall Sort"
-msgstr "Назначить полную сортировку"
+msgstr "Принудительная полная сортировка"
msgid "Full path to the whitelist file."
msgstr "Полный путь к файлу Белого списка."
@@ -190,7 +192,7 @@ msgid "Input file not found, please check your configuration."
msgstr "Config файл не найден, настройте config файл."
msgid "Last Run"
-msgstr "Последнее время запуска"
+msgstr "Последний запуск"
msgid ""
"List of available network interfaces. Usually the startup will be triggered "
@@ -203,17 +205,20 @@ msgid ""
"List of supported DNS backends with their default list export directory.<br /"
">"
msgstr ""
-"Список поддерживаемых серверов DNS перемещается в папку по умолчанию.<br />"
+"Список поддерживаемых серверов DNS с их стандартными папками для экспорта списков.<br />"
msgid "List of supported and fully pre-configured download utilities."
msgstr ""
-"Список поддерживаемых и полностью предварительно настроенных утилит загрузки."
+"Список поддерживаемых и полностью предварительно настроенных утилит для скачивания."
msgid "Loading"
msgstr "Загрузка"
msgid "Max. Download Queue"
-msgstr "Максимальное значение очереди загрузки"
+msgstr "Максимальная очередь загрузки"
+
+msgid "Name"
+msgstr ""
msgid "No"
msgstr "Нет"
@@ -225,7 +230,7 @@ msgstr ""
"подходят для вас."
msgid "Overall Domains"
-msgstr "Итоговые домены"
+msgstr "Всего доменов"
msgid "Overview"
msgstr "Главное меню"
@@ -234,11 +239,11 @@ msgid ""
"Please add only one domain per line. Comments introduced with '#' are "
"allowed - ip addresses, wildcards and regex are not."
msgstr ""
-"Добавляйте только один домен в строке. Комментарии вводятся используя '#' "
-"разрешенные - ip адреса, метасимволы и нерегулярные выражения."
+"Добавляйте только один домен на строку. Комментарии вводятся используя '#'. "
+"IP адреса, wildcard и регулярные выражения запрещены."
msgid "Please edit this file directly in a terminal session."
-msgstr "Отредактируйте данный файл, строго в терминале."
+msgstr "Редактируйте данный файл только в терминале."
msgid ""
"Please note: this needs additional 'msmtp' package installation and setup."
@@ -254,7 +259,7 @@ msgid ""
"Raise the minimum email notification count, to get emails if the overall "
"count is less or equal to the given limit (default 0),<br />"
msgstr ""
-"Увеличьте количество уведомлений по email, чтобы получить сообщения, если "
+"Увеличьте количество email уведомлений, чтобы получить сообщения, если "
"общее количество меньше или равно заданному пределу (по умолчанию 0),<br />"
msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
@@ -277,18 +282,18 @@ msgid ""
"Send notification emails in case of a processing error or if domain count is "
"&le; 0.<br />"
msgstr ""
-"Отправлять по email уведомления в случае ошибки обработки или если домен "
-"&le; 0.<br />"
+"Отправлять email уведомления в случае ошибки обработки или если количество обработанных доменов равно"
+" 0.<br />"
msgid ""
"Size of the download queue to handle downloads &amp; list processing in "
"parallel (default '4').<br />"
msgstr ""
-"Значение очереди загрузки для выполнения параллельных загрузок (по умолчанию "
+"Количество потоков для скачивания списков блокировок (по умолчанию "
"'4').<br />"
msgid "Startup Trigger"
-msgstr "Назначить"
+msgstr "Триггер запуска"
msgid "Suspend"
msgstr "Приостановить"
@@ -300,39 +305,39 @@ msgid ""
"Target directory for adblock backups. Please use only non-volatile disks, e."
"g. an external usb stick."
msgstr ""
-"Назначить папку для резервного копирования Adblock. Используйте такие "
+"Папка для бэкапов списков блокировок. Используйте такие "
"накопители, как usb флешка."
msgid "Target directory for the generated blocklist 'adb_list.overall'."
-msgstr "Назначить папку для создания списка блокировки 'adb_list.overall'."
+msgstr "Папка для созданного списка блокировки 'adb_list.overall'."
msgid "The file size is too large for online editing in LuCI (&ge; 100 KB)."
-msgstr ""
+msgstr "Этот файл слишком большой для редактирования в Web-интерфейсе LuCI (&ge; 100 KB)."
msgid ""
"This form allows you to modify the content of the adblock blacklist (%s)."
"<br />"
msgstr ""
-"Страница позволяет изменять содержимое Черного списка Adblock (%s).<br />"
+"Данное поле позволяет изменять содержимое Черного списка Adblock (%s).<br />"
msgid ""
"This form allows you to modify the content of the adblock whitelist (%s)."
"<br />"
msgstr ""
-"Страница позволяет изменять содержимое Белого списка Adblock (%s).<br />"
+"Данное поле позволяет изменять содержимое Белого списка Adblock (%s).<br />"
msgid ""
"This form allows you to modify the content of the main adblock configuration "
"file (/etc/config/adblock)."
msgstr ""
-"Страница позволяет изменять содержимое главного config файла Adblock-a (/etc/"
+"Данное поле позволяет изменять содержимое config файла Adblock-a (/etc/"
"config/adblock)."
msgid ""
"This form allows you to query active block lists for certain domains, e.g. "
"for whitelisting."
msgstr ""
-"Страница позволяет запросить домены для конкретных списков, например для "
+"Данное поле позволяет запросить домены для конкретных списков, например для "
"Белого списка."
msgid ""
@@ -344,17 +349,17 @@ msgid ""
"To overwrite the default path use the 'DNS Directory' option in the extra "
"section below."
msgstr ""
-"Чтобы заменить дефолтный путь, используйте строку ниже 'Папка DNS' в разделе "
+"Чтобы заменить путь по умолчанию, используйте пункт 'Папка DNS' в разделе "
"'Дополнительные настройки'."
msgid "Trigger Delay"
msgstr "Задержка запуска"
msgid "Verbose Debug Logging"
-msgstr "Подробное ведение<br />журнала отладки"
+msgstr "Подробный журнал отладки"
msgid "View Logfile"
-msgstr "Показать системный журнал"
+msgstr "Системный журнал"
msgid "Waiting for command to complete..."
msgstr "Ожидание завершения выполнения команды..."
@@ -379,7 +384,7 @@ msgid ""
"e.g. to receive an email notification with every adblock update set this "
"value to 150000."
msgstr ""
-"например, чтобы получать уведомления по электронной почте при каждом "
+"например, чтобы получать email уведомления при каждом "
"обновлении Adblock-а установите значение 150000."
msgid "enabled"
@@ -392,48 +397,7 @@ msgid "n/a"
msgstr "нет данных"
msgid "paused"
-msgstr "остановлено"
+msgstr "приостановлено"
msgid "running"
msgstr "работает"
-
-#~ msgid "Invalid domain specified!"
-#~ msgstr "Задан недопустимый домен!"
-
-#~ msgid "Available blocklist sources."
-#~ msgstr "Источники списков блокировки. "
-
-#~ msgid ""
-#~ "Caution: To prevent OOM exceptions on low memory devices with less than "
-#~ "64 MB free RAM, please do not select more than five blocklist sources!"
-#~ msgstr ""
-#~ "ВНИМАНИЕ: Для предотвращения возможного программного сбоя и перезагрузки, "
-#~ "на устройствах с объемом оперативной памяти менее 64MB, не выбирайте "
-#~ "больше 5 списков."
-
-#~ msgid ""
-#~ "During opkg package installation use the '--force-maintainer' option to "
-#~ "overwrite the pre-existing config file or download a fresh default config "
-#~ "from <a href=\"%s\" target=\"_blank\">here</a>"
-#~ msgstr ""
-#~ "Устанавливая пакет с помощью opkg, используйте '--force-maintainer', "
-#~ "чтобы перезаписать существующий config файл или загрузить новый дефолтный "
-#~ "config файл <a href=\"%s\" target=\"_blank\">здесь</a>"
-
-#~ msgid ""
-#~ "List URLs and Shallalist category selections are configurable in the "
-#~ "'Advanced' section.<br />"
-#~ msgstr ""
-#~ "Список URL-адресов и настройка списка использования, настраиваются на "
-#~ "странице 'Дополнительно'.<br />"
-
-#~ msgid "Please update your adblock config file to use this package.<br />"
-#~ msgstr "Обновите config файл Adblock, чтобы использовать этот пакет.<br />"
-
-#~ msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
-#~ msgstr ""
-#~ "Размер файла слишком большой, для онлайн редактирования в LuCI (&gt; 512 "
-#~ "KB)."
-
-#~ msgid "This section contains no values yet"
-#~ msgstr "Здесь не содержатся необходимые значения"
diff --git a/applications/luci-app-adblock/po/sv/adblock.po b/applications/luci-app-adblock/po/sv/adblock.po
index 4a7ca4b73..3fb7bbe2e 100644
--- a/applications/luci-app-adblock/po/sv/adblock.po
+++ b/applications/luci-app-adblock/po/sv/adblock.po
@@ -185,6 +185,9 @@ msgstr "Laddar"
msgid "Max. Download Queue"
msgstr ""
+msgid "Name"
+msgstr ""
+
msgid "No"
msgstr "Nej"
diff --git a/applications/luci-app-adblock/po/templates/adblock.pot b/applications/luci-app-adblock/po/templates/adblock.pot
index a375d0edb..e4c2a7141 100644
--- a/applications/luci-app-adblock/po/templates/adblock.pot
+++ b/applications/luci-app-adblock/po/templates/adblock.pot
@@ -177,6 +177,9 @@ msgstr ""
msgid "Max. Download Queue"
msgstr ""
+msgid "Name"
+msgstr ""
+
msgid "No"
msgstr ""
diff --git a/applications/luci-app-adblock/po/zh-cn/adblock.po b/applications/luci-app-adblock/po/zh-cn/adblock.po
index 408d04055..f7d1833c8 100644
--- a/applications/luci-app-adblock/po/zh-cn/adblock.po
+++ b/applications/luci-app-adblock/po/zh-cn/adblock.po
@@ -25,7 +25,8 @@ msgid ""
"<b>Caution:</b> To prevent OOM exceptions on low memory devices with less "
"than 64 MB free RAM, please only select a few of them!"
msgstr ""
-"<b>注意:</b>为防止在小于 64M 空闲内存的设备上出现内存不足异常,请只选择其中的几个!"
+"<b>注意:</b>为防止在小于 64M 空闲内存的设备上出现内存不足异常,请只选择其中"
+"的几个!"
msgid "Adblock"
msgstr "Adblock"
@@ -82,8 +83,7 @@ msgstr "Adblock 配置工具,通过 DNS 来拦截广告和阻止域名。"
msgid ""
"Create compressed blocklist backups, they will be used in case of download "
"errors or during startup in backup mode."
-msgstr ""
-"创建压缩的拦截列表备份,它们将在下载错误或备份模式启动期间使用。"
+msgstr "创建压缩的拦截列表备份,它们将在下载错误或备份模式启动期间使用。"
msgid "DNS Backend (DNS Directory)"
msgstr "DNS 后端(DNS 目录)"
@@ -129,8 +129,7 @@ msgstr "启用 Blocklist 备份"
msgid ""
"Enable memory intense overall sort / duplicate removal on low memory devices "
"(&lt; 64 MB free RAM)"
-msgstr ""
-"在低内存设备上启用积极的内存整体排序/重复移除(&lt; 64 MB 空闲内存)"
+msgstr "在低内存设备上启用积极的内存整体排序/重复移除(&lt; 64 MB 空闲内存)"
msgid "Enable verbose debug logging in case of any processing error."
msgstr "在出现任何处理错误的情况下启用详细调试日志记录。"
@@ -157,14 +156,12 @@ msgstr ""
msgid ""
"For further information <a href=\"%s\" target=\"_blank\">check the online "
"documentation</a>"
-msgstr ""
-"进一步信息<a href=\"%s\" target=\"_blank\">请访问在线文档"
+msgstr "进一步信息<a href=\"%s\" target=\"_blank\">请访问在线文档"
msgid ""
"For further performance improvements you can raise this value, e.g. '8' or "
"'16' should be safe."
-msgstr ""
-"为了进一步提高性能,您可以提高此值,例如:8 或 16 应该是安全的。"
+msgstr "为了进一步提高性能,您可以提高此值,例如:8 或 16 应该是安全的。"
msgid "Force Local DNS"
msgstr "强制本地 DNS"
@@ -184,8 +181,7 @@ msgstr "最后运行"
msgid ""
"List of available network interfaces. Usually the startup will be triggered "
"by the 'wan' interface.<br />"
-msgstr ""
-"可用网络接口列表。通常启动将由 “wan” 接口触发。<br />"
+msgstr "可用网络接口列表。通常启动将由 “wan” 接口触发。<br />"
msgid ""
"List of supported DNS backends with their default list export directory.<br /"
@@ -201,6 +197,9 @@ msgstr "加载中"
msgid "Max. Download Queue"
msgstr "最大下载队列"
+msgid "Name"
+msgstr ""
+
msgid "No"
msgstr "否"
@@ -226,8 +225,7 @@ msgstr "请在终端会话中直接编辑此文件。"
msgid ""
"Please note: this needs additional 'msmtp' package installation and setup."
-msgstr ""
-"请注意:这需要额外的 “msmtp” 软件包安装和设置。"
+msgstr "请注意:这需要额外的 “msmtp” 软件包安装和设置。"
msgid "Query"
msgstr "查询"
@@ -239,7 +237,8 @@ msgid ""
"Raise the minimum email notification count, to get emails if the overall "
"count is less or equal to the given limit (default 0),<br />"
msgstr ""
-"如果总数小于或等于给定限制(默认为 0),请提高最小电子邮件通知数,以获取电子邮件。"
+"如果总数小于或等于给定限制(默认为 0),请提高最小电子邮件通知数,以获取电子"
+"邮件。"
msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
msgstr "将所有 DNS 查询从“lan”区域重定向到本地解析器。"
@@ -259,14 +258,12 @@ msgstr "保存"
msgid ""
"Send notification emails in case of a processing error or if domain count is "
"&le; 0.<br />"
-msgstr ""
-"如果发生错误或域计数 &le; 0,发送通知电子邮件。<br />"
+msgstr "如果发生错误或域计数 &le; 0,发送通知电子邮件。<br />"
msgid ""
"Size of the download queue to handle downloads &amp; list processing in "
"parallel (default '4').<br />"
-msgstr ""
-"处理下载队列的大小 &amp; 并行处理列表(默认 “4”)。<br />"
+msgstr "处理下载队列的大小 &amp; 并行处理列表(默认 “4”)。<br />"
msgid "Startup Trigger"
msgstr "启动触发器"
@@ -280,15 +277,13 @@ msgstr "暂停/恢复 Adblock"
msgid ""
"Target directory for adblock backups. Please use only non-volatile disks, e."
"g. an external usb stick."
-msgstr ""
-"adblock 备份的目标目录。 请仅使用非易失性磁盘,例如:一个外置 U 盘。"
+msgstr "adblock 备份的目标目录。 请仅使用非易失性磁盘,例如:一个外置 U 盘。"
msgid "Target directory for the generated blocklist 'adb_list.overall'."
msgstr "生成的 blocklist 'adb_list.overall'的目标目录。"
msgid "The file size is too large for online editing in LuCI (&ge; 100 KB)."
-msgstr ""
-"文件过大,无法使用 LuCI 的在线编辑(&ge; 100 KB)。"
+msgstr "文件过大,无法使用 LuCI 的在线编辑(&ge; 100 KB)。"
msgid ""
"This form allows you to modify the content of the adblock blacklist (%s)."
diff --git a/applications/luci-app-adblock/po/zh-tw/adblock.po b/applications/luci-app-adblock/po/zh-tw/adblock.po
index 45b19cdc8..ab3a1c4f4 100644
--- a/applications/luci-app-adblock/po/zh-tw/adblock.po
+++ b/applications/luci-app-adblock/po/zh-tw/adblock.po
@@ -193,6 +193,9 @@ msgstr "載入中"
msgid "Max. Download Queue"
msgstr ""
+msgid "Name"
+msgstr ""
+
msgid "No"
msgstr "否"
diff --git a/applications/luci-app-advanced-reboot/Makefile b/applications/luci-app-advanced-reboot/Makefile
index b1ecf677f..08919640d 100644
--- a/applications/luci-app-advanced-reboot/Makefile
+++ b/applications/luci-app-advanced-reboot/Makefile
@@ -1,4 +1,4 @@
-# Copyright (c) 2017 Stan Grishin (stangri@melmac.net)
+# Copyright 2017-2018 Stan Grishin (stangri@melmac.net)
# This is free software, licensed under the GNU General Public License v3.
include $(TOPDIR)/rules.mk
@@ -13,7 +13,7 @@ LUCI_DESCRIPTION:=Provides Web UI (found under System/Advanced Reboot) to reboot
LUCI_DEPENDS:=+luci-mod-admin-full
LUCI_PKGARCH:=all
-PKG_RELEASE:=32
+PKG_RELEASE:=33
include ../../luci.mk
diff --git a/applications/luci-app-advanced-reboot/luasrc/controller/advanced_reboot.lua b/applications/luci-app-advanced-reboot/luasrc/controller/advanced_reboot.lua
index f4d28145e..dd8071677 100644
--- a/applications/luci-app-advanced-reboot/luasrc/controller/advanced_reboot.lua
+++ b/applications/luci-app-advanced-reboot/luasrc/controller/advanced_reboot.lua
@@ -1,4 +1,4 @@
--- Copyright 2017 Stan Grishin <stangri@melmac.net>
+-- Copyright 2017-2018 Stan Grishin <stangri@melmac.net>
-- Licensed to the public under the Apache License 2.0.
module("luci.controller.advanced_reboot", package.seeall)
diff --git a/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm b/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm
index dcf51c749..5c14f52ff 100644
--- a/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm
+++ b/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm
@@ -1,7 +1,7 @@
<%#
Copyright 2008 Steven Barth <steven@midlink.org>
Copyright 2008-2015 Jo-Philipp Wich <jow@openwrt.org>
- Copyright 2017 Stan Grishin <stangri@melmac.net>
+ Copyright 2017-2018 Stan Grishin <stangri@melmac.net>
Licensed to the public under the Apache License 2.0.
-%>
@@ -42,12 +42,12 @@
<%- if boot_envvar1_partition_one == current_partition then -%>
<form method="post" action="<%=url('admin/system/advanced_reboot/reboot')%>">
<input type="hidden" name="token" value="<%=token%>" />
- <input id="reboot-button" type="submit" class="cbi-button cbi-button-apply" value="<%:Reboot to current partition%>" />
+ <input id="reboot-button" type="submit" class="cbi-button cbi-button-apply important" value="<%:Reboot to current partition%>" />
</form>
<%- else -%>
<form method="post" action="<%=url('admin/system/advanced_reboot/alternative_reboot')%>">
<input type="hidden" name="token" value="<%=token%>" />
- <input id="altreboot-button" type="submit" class="cbi-button cbi-button-apply" value="<%:Reboot to alternative partition...%>" />
+ <input id="altreboot-button" type="submit" class="cbi-button cbi-button-apply important" value="<%:Reboot to alternative partition...%>" />
</form>
<%- end -%>
</div>
@@ -66,12 +66,12 @@
<%- if boot_envvar1_partition_two == current_partition then -%>
<form method="post" action="<%=url('admin/system/advanced_reboot/reboot')%>">
<input type="hidden" name="token" value="<%=token%>" />
- <input id="reboot-button" type="submit" class="cbi-button cbi-button-apply" value="<%:Reboot to current partition%>" />
+ <input id="reboot-button" type="submit" class="cbi-button cbi-button-apply important" value="<%:Reboot to current partition%>" />
</form>
<%- else -%>
<form method="post" action="<%=url('admin/system/advanced_reboot/alternative_reboot')%>">
<input type="hidden" name="token" value="<%=token%>" />
- <input id="altreboot-button" type="submit" class="cbi-button cbi-button-apply" value="<%:Reboot to alternative partition...%>" />
+ <input id="altreboot-button" type="submit" class="cbi-button cbi-button-apply important" value="<%:Reboot to alternative partition...%>" />
</form>
<%- end -%>
</div>
@@ -82,7 +82,7 @@
<%- if rom_board_name then -%>
<p class="alert-message warning"><%=pcdata(translatef("Warning: Device (%s) is unknown or isn't a dual-partition device!", rom_board_name))%></p>
<%- else -%>
- <p class="alert-message warning"><%:Warning: Unable to obtain device information!%></p>
+ <p class="alert-message warning"><%=pcdata(translatef("Warning: Unable to obtain device information!"))%></p>
<%- end -%>
<%- end -%>
@@ -91,7 +91,7 @@
<%- if nixio.fs.access("/sbin/poweroff") then -%>
<form method="post" action="<%=url('admin/system/advanced_reboot/power_off')%>">
<input type="hidden" name="token" value="<%=token%>" />
- <input id="poweroff-button" type="submit" class="cbi-button cbi-button-apply" value="<%:Perform power off...%>" />
+ <input id="poweroff-button" type="submit" class="cbi-button cbi-button-apply important" value="<%:Perform power off...%>" />
</form>
<%- else -%>
<p class="alert-message warning"><%:Warning: This system does not support powering off!%></p>
diff --git a/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/alternative_reboot.htm b/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/alternative_reboot.htm
index 632593409..b15f16b0d 100644
--- a/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/alternative_reboot.htm
+++ b/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/alternative_reboot.htm
@@ -1,7 +1,7 @@
<%#
Copyright 2008 Steven Barth <steven@midlink.org>
Copyright 2008-2009 Jo-Philipp Wich <jow@openwrt.org>
- Copyright 2017 Stan Grishin <stangri@melmac.net>
+ Copyright 2017-2018 Stan Grishin <stangri@melmac.net>
Licensed to the public under the Apache License 2.0.
-%>
@@ -21,8 +21,8 @@
<form class="inline" action="<%=REQUEST_URI%>" method="post">
<input type="hidden" name="token" value="<%=token%>" />
<input type="hidden" name="step" value="2" />
- <input class="cbi-button cbi-button-reset" name="cancel" type="submit" value="<%:Cancel%>" />
- <input class="cbi-button cbi-button-apply" type="submit" value="<%:Proceed%>" />
+ <input class="cbi-button cbi-button-reset important" name="cancel" type="submit" value="<%:Cancel%>" />
+ <input class="cbi-button cbi-button-apply important" type="submit" value="<%:Proceed%>" />
</form>
</div>
diff --git a/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/power_off.htm b/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/power_off.htm
index 0ddea11e6..1acf01b99 100644
--- a/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/power_off.htm
+++ b/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/power_off.htm
@@ -1,7 +1,7 @@
<%#
Copyright 2008 Steven Barth <steven@midlink.org>
Copyright 2008-2009 Jo-Philipp Wich <jow@openwrt.org>
- Copyright 2017 Stan Grishin <stangri@melmac.net>
+ Copyright 2017-2018 Stan Grishin <stangri@melmac.net>
Licensed to the public under the Apache License 2.0.
-%>
@@ -17,8 +17,8 @@
<form class="inline" action="<%=REQUEST_URI%>" method="post">
<input type="hidden" name="token" value="<%=token%>" />
<input type="hidden" name="step" value="2" />
- <input class="cbi-button cbi-button-reset" name="cancel" type="submit" value="<%:Cancel%>" />
- <input class="cbi-button cbi-button-apply" type="submit" value="<%:Proceed%>" />
+ <input class="cbi-button cbi-button-reset important" name="cancel" type="submit" value="<%:Cancel%>" />
+ <input class="cbi-button cbi-button-apply important" type="submit" value="<%:Proceed%>" />
</form>
</div>
diff --git a/applications/luci-app-advanced-reboot/po/ru/advanced-reboot.po b/applications/luci-app-advanced-reboot/po/ru/advanced-reboot.po
index 75d463677..8ad352055 100644
--- a/applications/luci-app-advanced-reboot/po/ru/advanced-reboot.po
+++ b/applications/luci-app-advanced-reboot/po/ru/advanced-reboot.po
@@ -22,9 +22,6 @@ msgstr "Дополнительная перезагрузка"
msgid "Alternative"
msgstr "Альтернатива"
-msgid "Alternative reboot cancelled."
-msgstr "Альтернативная перезагрузка отменена."
-
msgid "Cancel"
msgstr "Отменить"
@@ -148,16 +145,25 @@ msgstr ""
"которое не поддерживает выключение питания.<br /><br /> Нажмите \"Продолжить"
"\" ниже, чтобы выключить устройство."
+msgid "Warning: Device (%s) is unknown or isn't a dual-partition device!"
+msgstr ""
+
msgid "Warning: There are unsaved changes that will get lost on reboot!"
msgstr ""
"Внимание: Есть несохраненные изменения, которые будут потеряны при "
"перезагрузке!"
-msgid "Warning: This system does not have two partitions!"
-msgstr "Внимание: Эта система не имеет двух разделов!"
-
msgid "Warning: This system does not support powering off!"
msgstr "Внимание: Эта система не поддерживает отключение питания!"
+msgid "Warning: Unable to obtain device information!"
+msgstr ""
+
msgid "to"
msgstr ""
+
+#~ msgid "Alternative reboot cancelled."
+#~ msgstr "Альтернативная перезагрузка отменена."
+
+#~ msgid "Warning: This system does not have two partitions!"
+#~ msgstr "Внимание: Эта система не имеет двух разделов!"
diff --git a/applications/luci-app-advanced-reboot/po/sv/advanced-reboot.po b/applications/luci-app-advanced-reboot/po/sv/advanced-reboot.po
index e0e13cfda..46008b132 100644
--- a/applications/luci-app-advanced-reboot/po/sv/advanced-reboot.po
+++ b/applications/luci-app-advanced-reboot/po/sv/advanced-reboot.po
@@ -10,9 +10,6 @@ msgstr "Avancerad omstart"
msgid "Alternative"
msgstr "Alternativ"
-msgid "Alternative reboot cancelled."
-msgstr ""
-
msgid "Cancel"
msgstr "Avbryt"
@@ -119,15 +116,21 @@ msgstr ""
"stöd för avstängning.<br /><br /> Klicka på \"Fortsätt\" nedanför för att "
"stänga av din enhet."
+msgid "Warning: Device (%s) is unknown or isn't a dual-partition device!"
+msgstr ""
+
msgid "Warning: There are unsaved changes that will get lost on reboot!"
msgstr ""
"Varning: Det finns osparade ändringar som kommer att förloras vid omstart!"
-msgid "Warning: This system does not have two partitions!"
-msgstr "Varning: Det här systemet har inte två partitioner!"
-
msgid "Warning: This system does not support powering off!"
msgstr "Varning: Det här systemet har inte stöd för avstängning!"
+msgid "Warning: Unable to obtain device information!"
+msgstr ""
+
msgid "to"
msgstr ""
+
+#~ msgid "Warning: This system does not have two partitions!"
+#~ msgstr "Varning: Det här systemet har inte två partitioner!"
diff --git a/applications/luci-app-advanced-reboot/po/templates/advanced-reboot.pot b/applications/luci-app-advanced-reboot/po/templates/advanced-reboot.pot
index edc8c2a06..8324ea4e2 100644
--- a/applications/luci-app-advanced-reboot/po/templates/advanced-reboot.pot
+++ b/applications/luci-app-advanced-reboot/po/templates/advanced-reboot.pot
@@ -1,9 +1,6 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
-msgid ") is unknown or isn't a dual-partition device!"
-msgstr ""
-
msgid "Action"
msgstr ""
@@ -113,7 +110,7 @@ msgid ""
"device."
msgstr ""
-msgid "Warning: Device ("
+msgid "Warning: Device (%s) is unknown or isn't a dual-partition device!"
msgstr ""
msgid "Warning: There are unsaved changes that will get lost on reboot!"
diff --git a/applications/luci-app-ddns/po/ru/ddns.po b/applications/luci-app-ddns/po/ru/ddns.po
index fae11275d..4731cc379 100644
--- a/applications/luci-app-ddns/po/ru/ddns.po
+++ b/applications/luci-app-ddns/po/ru/ddns.po
@@ -3,12 +3,12 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Project-Id-Version: LuCI: ddns\n"
"POT-Creation-Date: 2017-10-17 21:00+0300\n"
-"PO-Revision-Date: 2018-01-24 14:58+0300\n"
+"PO-Revision-Date: 2018-07-20 03:03+0300\n"
"Language-Team: http://cyber-place.ru\n"
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.8.7.1\n"
-"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Last-Translator: Anton Kikin <a.kikin@tano-systems.com>\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"
"Language: ru\n"
@@ -28,7 +28,7 @@ msgid "Advanced Settings"
msgstr "Дополнительные настройки"
msgid "Allow non-public IP's"
-msgstr "Разрешить<br />не публичные IP-адреса"
+msgstr "Разрешить не публичные IP-адреса"
msgid "Applying changes"
msgstr "Применение изменений"
@@ -56,25 +56,25 @@ msgid ""
"BusyBox's nslookup and Wget do not support to specify the IP version to use "
"for communication with DDNS Provider!"
msgstr ""
-"nslookup и Wget - BusyBox-а, не поддерживают указание IP-версии, "
-"используемой для связи с DDNS провайдером!"
+"Утилиты nslookup и wget из состава busybox не поддерживают указание IP-версии"
+", используемой для связи с DDNS провайдером!"
msgid ""
"BusyBox's nslookup and hostip do not support to specify to use TCP instead "
"of default UDP when requesting DNS server!"
msgstr ""
-"nslookup и hostip - BusyBox-а, не поддерживают указание использовать TCP "
-"вместо UDP по умолчанию при запросе DNS сервера!"
+"Утилиты nslookup и hostip из состава busybox не поддерживают указание использ"
+"овать TCP вместо UDP по умолчанию при запросе DNS сервера!"
msgid ""
"BusyBox's nslookup in the current compiled version does not handle given DNS "
"Servers correctly!"
msgstr ""
-"Благодаря текущей скомпилированной версии nslookup, BusyBox не обрабатывает "
-"данные DNS сервера правильно!"
+"Благодаря текущей скомпилированной версии busybox, утилита nslookup не обраба"
+"тывает данные DNS сервера правильно!"
msgid "Casual users should not change this setting"
-msgstr "Случайные пользователи, не должны изменять эти настройки"
+msgstr "Обычный пользователь не должен изменять данную опцию"
msgid "Change provider"
msgstr "Сменить провайдера"
@@ -108,7 +108,7 @@ msgid ""
"force_interval set to '0')"
msgstr ""
"В настоящее время, обновления DDNS не запускаются при загрузке или при "
-"событиях интерфейса.<br />по умолчанию, если вы запускаете DDNS скрипты сами "
+"событиях интерфейса.<br />По умолчанию, если вы запускаете DDNS скрипты сами "
"(т.е. через cron с force_interval set to '0')"
msgid ""
@@ -116,7 +116,7 @@ msgid ""
">You can start/stop each configuration here. It will run until next reboot."
msgstr ""
"В настоящее время, обновления DDNS не запускаются при загрузке или при "
-"событиях интерфейса.<br />.<br />Вы можете запустить/остановить каждый "
+"событиях интерфейса.<br />Вы можете запустить/остановить каждый "
"config здесь. Он будет работать до следующей перезагрузки."
msgid "Custom update script to be used for updating your DDNS Provider."
@@ -125,10 +125,10 @@ msgstr ""
"провайдера DDNS."
msgid "Custom update-URL"
-msgstr "Пользовательский<br />URL обновления"
+msgstr "Пользовательский URL обновления"
msgid "Custom update-script"
-msgstr "Пользовательский<br />скрипт обновления"
+msgstr "Пользовательский скрипт обновления"
msgid "DDNS Autostart disabled"
msgstr "Автостарт DDNS отключен"
@@ -140,7 +140,7 @@ msgid "DDNS Client Documentation"
msgstr "Информация для клиента DDNS"
msgid "DDNS Service provider"
-msgstr "Провайдер службы<br />DDNS"
+msgstr "Провайдер службы DDNS"
msgid "DNS requests via TCP not supported"
msgstr "DNS запросы по протоколу TCP не поддерживаются"
@@ -161,38 +161,38 @@ msgid "Defines the interface to read systems IP-Address from"
msgstr "Задайте интерфейс для чтения системного IP-адреса из"
msgid "Defines the network to read systems IPv4-Address from"
-msgstr "Задайте сеть для связи с системным IPv4-адресом из."
+msgstr "Задайте сеть для связи с системным IPv4-адресом из"
msgid "Defines the network to read systems IPv6-Address from"
-msgstr "Задайте сеть для связи с системным IPv6-адреса из."
+msgstr "Задайте сеть для связи с системным IPv6-адреса из"
msgid ""
"Defines the source to read systems IPv4-Address from, that will be send to "
"the DDNS provider"
msgstr ""
"Задайте источник для связи с системным IPv4-адресом, который будет отправлен "
-"DDNS провайдеру."
+"DDNS провайдеру"
msgid ""
"Defines the source to read systems IPv6-Address from, that will be send to "
"the DDNS provider"
msgstr ""
"Задайте источник для связи с системным IPv6-адресом, который будет отправлен "
-"DDNS провайдеру."
+"DDNS провайдеру"
msgid "Defines which IP address 'IPv4/IPv6' is send to the DDNS provider"
msgstr ""
-"Задайте версию протокола IP-адреса 'IPv4/IPv6' отправляется провайдеру DDNS."
+"Задайте версию протокола IP-адреса 'IPv4/IPv6' отправляется провайдеру DDNS"
msgid "Details for"
msgstr "Подробности для"
msgid "Directory contains Log files for each running section"
-msgstr "Папка содержит файлы системного журнала для каждого запуска."
+msgstr "Папка содержит файлы системного журнала для каждого запуска"
msgid ""
"Directory contains PID and other status information for each running section"
-msgstr "Папка содержит PID и прочую информацию о состояниии каждого запуска."
+msgstr "Папка содержит PID и прочую информацию о состояниии каждого запуска"
msgid "Disabled"
msgstr "Отключено"
@@ -211,7 +211,7 @@ msgstr ""
"динамически изменяемом IP-адресе."
msgid "Enable secure communication with DDNS provider"
-msgstr "Включить безопасное соединение с провайдером DDNS."
+msgstr "Включить безопасное соединение с провайдером DDNS"
msgid "Enabled"
msgstr "Включено"
@@ -220,10 +220,10 @@ msgid "Error"
msgstr "Ошибка"
msgid "Error Retry Counter"
-msgstr "Учет попыток повтора<br />при ошибке"
+msgstr "Учет попыток повтора при ошибке"
msgid "Error Retry Interval"
-msgstr "Интервал попытки<br />повтора при ошибке"
+msgstr "Интервал попытки повтора при ошибке"
msgid "Event Network"
msgstr "Событие сети"
@@ -241,21 +241,21 @@ msgid ""
"Follow this link<br />You will find more hints to optimize your system to "
"run DDNS scripts with all options"
msgstr ""
-"Пройдите по этой ссылке<br />там вы найдете больше информации, как настроить "
+"Пройдите по этой ссылке<br />Там вы найдете больше информации, как настроить "
"вашу систему с использованием DDNS скриптов с наиболее полным функционалом."
msgid "For detailed information about parameter settings look here."
msgstr ""
-"Здесь вы сможете получить, более подробную информацию о параметрах настройки."
+"Здесь вы сможете получить более подробную информацию о параметрах настройки."
msgid "For supported codes look here"
-msgstr "С поддерживаемыми кодами, вы сможете ознакомится здесь."
+msgstr "С поддерживаемыми кодами вы можете ознакомится здесь"
msgid "Force IP Version"
-msgstr "Назначенная версия<br />IP-адреса"
+msgstr "Назначенная версия IP протокола"
msgid "Force IP Version not supported"
-msgstr "Назначенная версия протокола IP-адреса, не поддерживается"
+msgstr "Назначенная версия IP протокола не поддерживается"
msgid "Force Interval"
msgstr "Назначить интервал"
@@ -264,19 +264,19 @@ msgid "Force TCP on DNS"
msgstr "Выбрать протокол TCP для DNS"
msgid "Forced IP Version don't matched"
-msgstr "Назначенная версия протокола IP-адреса не проверялась"
+msgstr "Назначенная версия IP протокола не соответствует"
msgid "Format"
msgstr "Формат"
msgid "Format: IP or FQDN"
-msgstr "В виде: IP-адрес или полное доменное имя."
+msgstr "В виде: IP-адрес или полное доменное имя"
msgid ""
"GNU Wget will use the IP of given network, cURL will use the physical "
"interface."
msgstr ""
-"GNU wget будет использовать IP присвоенный сетью, cURL будет использовать "
+"GNU wget будет использовать IP заданной сети, cURL будет использовать "
"физический интерфейс."
msgid "Global Settings"
@@ -291,10 +291,10 @@ msgstr "Подсказки"
msgid "Hostname/FQDN to validate, if IP update happen or necessary"
msgstr ""
"Имя хоста/полное доменное имя для проверки, если происходит обновление IP-"
-"адреса или оно необходимо."
+"адреса или оно необходимо"
msgid "IP address source"
-msgstr "IP адрес источника"
+msgstr "IP-адрес источника"
msgid "IP address version"
msgstr "Версия IP-адреса"
@@ -303,16 +303,16 @@ msgid "IPv4-Address"
msgstr "IPv4-адрес"
msgid "IPv6 address must be given in square brackets"
-msgstr "IPv6 адрес должен быть указан в квадратных скобках"
+msgstr "IPv6-адрес должен быть указан в квадратных скобках"
msgid ""
"IPv6 is currently not (fully) supported by this system<br />Please follow "
"the instructions on OpenWrt's homepage to enable IPv6 support<br />or update "
"your system to the latest OpenWrt Release"
msgstr ""
-"IPv6 не поддерживается вашей прошивкой < br />, следуйте инструкциям на "
+"IPv6 не поддерживается вашей прошивкой.<br />Следуйте инструкциям на "
"главной странице OpenWrt, чтобы включить поддержку IPv6<br / >или обновить "
-"прошивку до последнего выпуска OpenWrt с включением поддержки IPv6."
+"прошивку до последнего выпуска OpenWrt с включенной поддержкой IPv6"
msgid "IPv6 not supported"
msgstr "IPv6 не поддерживается"
@@ -322,15 +322,15 @@ msgstr "IPv6-адрес"
msgid "If both cURL and GNU Wget are installed, Wget is used by default."
msgstr ""
-"Если установлены cURL и GNU Wget вместе, Wget будет использоваться по "
-"умолчанию."
+"Если установлены и cURL и GNU wget, по умолчанию будет использоваться "
+"wget."
msgid ""
"If this service section is disabled it could not be started.<br />Neither "
"from LuCI interface nor from console"
msgstr ""
-"Если этот режим службы отключен, его нельзя будет запустить. Не с веб-"
-"интерфейса LuCI, ни с консоли."
+"Если этот режим службы отключен, её нельзя будет запустить ни с веб-"
+"интерфейса LuCI, ни с консоли"
msgid "If using secure communication you should verify server certificates!"
msgstr ""
@@ -341,13 +341,13 @@ msgid ""
"If you want to send updates for IPv4 and IPv6 you need to define two "
"separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'"
msgstr ""
-"Версии протоколов IPv4 и IPv6 необходимо настроить раздельно , т. е. "
+"Версии протоколов IPv4 и IPv6 необходимо настроить раздельно, т.е. "
"'myddns_ipv4' и 'myddns_ipv6'."
msgid ""
"In some versions cURL/libcurl in OpenWrt is compiled without proxy support."
msgstr ""
-"В некоторых случаях cURL/libcurl, если OpenWrt скомпилирован без поддержки "
+"В некоторых версиях OpenWrt пакеты cURL/libcurl скомпилированы без поддержки "
"прокси."
msgid "Info"
@@ -357,8 +357,8 @@ msgid ""
"Install 'ca-certificates' package or needed certificates by hand into /etc/"
"ssl/certs default directory"
msgstr ""
-"Установите 'ca-certificates' или пакет необходимых сертификатов вручную в "
-"папку/etc/ssl/certs"
+"Установите пакет 'ca-certificates' или необходимые сертификаты вручную в "
+"папку /etc/ssl/certs"
msgid "Interface"
msgstr "Интерфейс"
@@ -367,8 +367,8 @@ msgid ""
"Interval to check for changed IP<br />Values below 5 minutes == 300 seconds "
"are not supported"
msgstr ""
-"Интервал для проверки измененных IP-адресов.<br />ниже 5 минут = = 300 "
-"секунд не поддерживаются."
+"Интервал для проверки измененных IP-адресов.<br />Значения ниже 5 минут (300 "
+"секунд) не поддерживаются"
msgid ""
"Interval to force updates send to DDNS Provider<br />Setting this parameter "
@@ -376,13 +376,13 @@ msgid ""
"Interval' except '0' are not supported"
msgstr ""
"Интервал для назначения отправки обновлений провайдеру DDNS.<br />Установка "
-"значения '0', заставит сценарий отработать только один раз, значения ниже "
-"'Интервал проверки' за исключением '0' не поддерживаются."
+"значения '0' заставит сценарий отработать только один раз, значения ниже "
+"'Интервал проверки', за исключением '0', не поддерживаются"
msgid "It is NOT recommended for casual users to change settings on this page."
msgstr ""
-"Не рекомендуется случайным пользователям, изменять настройки на этой "
-"странице."
+"Настройки на данной странице не рекомендуется изменять обычным "
+"пользователям."
msgid "Last Update"
msgstr "Последнее обновление"
@@ -394,7 +394,7 @@ msgid "Log File Viewer"
msgstr "Просмотр системного журнала"
msgid "Log directory"
-msgstr "Папка системного<br />журнала"
+msgstr "Папка системного журнала"
msgid "Log length"
msgstr "Просмотр журнала"
@@ -409,19 +409,20 @@ msgid "Lookup Hostname"
msgstr "Поиск имени хоста"
msgid "NOT installed"
-msgstr "Не установлена"
+msgstr "Не установлено"
msgid ""
"Neither GNU Wget with SSL nor cURL installed to select a network to use for "
"communication."
-msgstr "Neither GNU Wget с SSL nor cURL установлены для выбора сети для связи."
+msgstr "Не установлены пакеты GNU wget c SSL или cURL для возможности выбора "
+"сети для связи."
msgid ""
"Neither GNU Wget with SSL nor cURL installed to support secure updates via "
"HTTPS protocol."
msgstr ""
-"Neither GNU Wget с SSL nor cURL установлены для поддержки безопасных "
-"обновлений по протоколу HTTPS."
+"Не установлены пакеты GNU wget с SSL или cURL для поддержки безопасных "
+"обновлений по протоколу HTTPS."
msgid "Network"
msgstr "Сеть"
@@ -442,44 +443,44 @@ msgid "No data"
msgstr "Нет данных"
msgid "No logging"
-msgstr "Нет записи в системный журнал"
+msgstr "Отключить журналирование"
msgid "Non-public and by default blocked IP's"
-msgstr "Непубличные и по умолчанию заблокированные IP-адреса"
+msgstr "Непубличные и заблокированные по умолчанию IP-адреса"
msgid "Notice"
msgstr "Заметка"
msgid "Number of last lines stored in log files"
-msgstr "Число последних строк, системного журнала."
+msgstr "Число последних строк, для хранения в системном журнале"
msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication."
-msgstr "Необязательно: Назначить использование версии протоколов IPv4/IPv6."
+msgstr "Необязательно: использовать только чистые версий протоколов IPv4/IPv6."
msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests."
msgstr ""
-"Необязательно: Назначить использование протокола TCP вместо UDP по умолчанию "
+"Необязательно: использовать протокол TCP вместо UDP по умолчанию "
"для DNS-запросов."
msgid "OPTIONAL: Network to use for communication"
-msgstr "Необязательно: Сеть для связи"
+msgstr "Необязательно: сеть для связи"
msgid "OPTIONAL: Proxy-Server for detection and updates."
-msgstr "Необязательно: Прокси-сервер для обнаружения и обновления."
+msgstr "Необязательно: прокси-сервер для обнаружения и обновления."
msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'."
msgstr ""
-"Необязательно: Использовать по умолчанию DNS сервер, чтобы обнаружить "
-"'Зарегистрированный IP-адрес'."
+"Необязательно: использовать DNS сервер не используемый по умолчанию, "
+"для обнаружения 'Зарегистрированного IP-адреса'."
msgid "On Error the script will retry the failed action after given time"
msgstr ""
-"В случае ошибки, скрипт повторит неудавшееся действие по истечении заданного "
+"В случае ошибки, скрипт повторит требуемые действия по истечении заданного "
"времени."
msgid "On Error the script will stop execution after given number of retrys"
msgstr ""
-"В случае ошибки, скрипт прекратит выполнение, после заданного количества "
+"В случае ошибки, скрипт прекратит выполнение после заданного количества "
"повторных попыток."
msgid "OpenWrt Wiki"
@@ -489,17 +490,17 @@ msgid "Optional Encoded Parameter"
msgstr "Необязательный кодированный параметр"
msgid "Optional Parameter"
-msgstr "Необязательный<br />параметр"
+msgstr "Необязательный параметр"
msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)"
-msgstr "Необязательно: заменяет [PARAMENC] в Update-URL-адрес (URL-encoded)."
+msgstr "Необязательно: заменяет [PARAMENC] в Update-URL (URL-encoded)"
msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)"
msgstr ""
-"Необязательно: заменяет [PARAMOPT] в Update-URL-адрес (не URL-encoded)."
+"Необязательно: заменяет [PARAMOPT] в Update-URL (не URL-encoded)"
msgid "Overview"
-msgstr "Главное меню"
+msgstr "Обзор"
msgid "PROXY-Server"
msgstr "Прокси сервер"
@@ -511,10 +512,10 @@ msgid "Password"
msgstr "Пароль"
msgid "Path to CA-Certificate"
-msgstr "Путь к CA-Сертификату"
+msgstr "Путь к CA-сертификату"
msgid "Please [Save & Apply] your changes first"
-msgstr "Нажмите [Сохранить и применить] чтобы сохранить ваши настройки."
+msgstr "Нажмите [Сохранить и применить] чтобы сохранить ваши настройки"
msgid "Please press [Read] button"
msgstr "Нажмите кнопку [Читать / Перечитывать системный журнал]"
@@ -532,19 +533,19 @@ msgid "Really change DDNS provider?"
msgstr "Действительно сменить DDNS провайдера?"
msgid "Registered IP"
-msgstr "Зарегистрированный<br />IP-адрес"
+msgstr "Зарегистрированный IP-адрес"
msgid "Replaces [DOMAIN] in Update-URL"
-msgstr "Заменяет [ДОМЕН] в Update-URL."
+msgstr "Заменяет [ДОМЕН] в Update-URL"
msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)"
-msgstr "Заменяет [ПАРОЛЬ] в Update-URL (URL-encoded)."
+msgstr "Заменяет [ПАРОЛЬ] в Update-URL (URL-encoded)"
msgid "Replaces [USERNAME] in Update-URL (URL-encoded)"
-msgstr "Заменяет [ЛОГИН] in Update-URL (URL-encoded)."
+msgstr "Заменяет [ЛОГИН] in Update-URL (URL-encoded)"
msgid "Run once"
-msgstr "Запуск один раз"
+msgstr "Запустить один раз"
msgid "Script"
msgstr "Скрипт"
@@ -553,7 +554,7 @@ msgid "Show more"
msgstr "Показать больше"
msgid "Software update required"
-msgstr "Требуется обновление программного обеспечения."
+msgstr "Требуется обновление программного обеспечения"
msgid "Specifying a DNS-Server is not supported"
msgstr "Указанный DNS сервер не поддерживается"
@@ -574,28 +575,28 @@ msgid ""
"The currently installed 'ddns-scripts' package did not support all available "
"settings."
msgstr ""
-"Пакет установленных 'ddns-scripts' не поддерживает все доступные настройки."
+"Установленный пакет 'ddns-scripts' не поддерживает все доступные настройки"
msgid "The default setting of '0' will retry infinite."
-msgstr "Значение по умолчанию '0' будет повторяться бесконечно."
+msgstr "Значение по умолчанию '0' используется для бесконечного повтора."
msgid "There is no service configured."
-msgstr "Сервис не настроен."
+msgstr "Сервис не настроен"
msgid "Timer Settings"
msgstr "Настройка таймера"
msgid "To change global settings click here"
-msgstr "Чтобы изменить основные настройки, нажмите здесь."
+msgstr "Чтобы изменить основные настройки, нажмите здесь"
msgid "To use cURL activate this option."
-msgstr "Для использования cURL активируйте режим."
+msgstr "Для использования cURL активируйте эту опцию."
msgid "URL"
msgstr "URL"
msgid "URL to detect"
-msgstr "обнаружен URL"
+msgstr "URL для обнаружения"
msgid "Unknown error"
msgstr "Неизвестная ошибка"
@@ -604,8 +605,8 @@ msgid ""
"Update URL to be used for updating your DDNS Provider.<br />Follow "
"instructions you will find on their WEB page."
msgstr ""
-"Update URL используется для обновления DDNS-провайдера.<br />Следуйте "
-"инструкциям, вы найдете их на веб-странице."
+"URL обновления используется для обновления вашего DDNS-провайдера.<br />Следуйте "
+"инструкциям, которые вы найдете на их на веб-странице."
msgid "Update error"
msgstr "Ошибка обновления"
@@ -617,13 +618,13 @@ msgid "Use cURL"
msgstr "Использовать cURL"
msgid "User defined script to read systems IP-Address"
-msgstr "Заданный пользователем скрипт для чтения системного IP-адреса."
+msgstr "Заданный пользователем скрипт для чтения системного IP-адреса"
msgid "Username"
msgstr "Имя пользователя"
msgid "Using specific DNS Server not supported"
-msgstr "Использование определенного DNS сервера не поддерживается."
+msgstr "Использование определенного DNS сервера не поддерживается"
msgid "Verify"
msgstr "Проверить"
@@ -644,44 +645,44 @@ msgid ""
"Writes detailed messages to log file. File will be truncated automatically."
msgstr ""
"Записывать подробные сообщения в системный журнал. Файл будет автоматически "
-"обрезан."
+"обрезан "
msgid ""
"Writes log messages to syslog. Critical Errors will always be written to "
"syslog."
msgstr ""
-"Задайте уровень журналирования. Критические ошибки, всегда будут записаны в "
+"Задайте уровень журналирования. Критические ошибки всегда будут записаны в "
"системный журнал."
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 ""
-"Установите 'bind-host' или 'knot-host' или 'drill' или 'hostip' пакеты если "
+"Установите пакет 'bind-host', 'knot-host', 'drill' или 'hostip' если "
"вам нужно указать DNS сервер для обнаружения вашего зарегистрированного IP-"
"адреса."
msgid ""
"You should install 'bind-host' or 'knot-host' or 'drill' package for DNS "
"requests."
-msgstr "Установите 'bind-host' или 'knot-host' или 'drill' для DNS запросов."
+msgstr "Установите пакет 'bind-host', 'knot-host' или 'drill' для DNS запросов."
msgid "You should install 'wget' or 'curl' or 'uclient-fetch' package."
-msgstr "Установите 'wget' или 'curl' или 'uclient-fetch' пакет."
+msgstr "Установите пакет 'wget', 'curl' или 'uclient-fetch'."
msgid ""
"You should install 'wget' or 'curl' or 'uclient-fetch' with 'libustream-"
"*ssl' package."
msgstr ""
-"Установите 'wget' или 'curl' или 'uclient-fetch' с 'libustream-*ssl' пакетом."
+"Установите пакет 'wget', 'curl' или 'uclient-fetch' с 'libustream-*ssl'."
msgid "You should install 'wget' or 'curl' package."
-msgstr "Установите 'wget' или 'curl' пакеты."
+msgstr "Установите пакет 'wget' или 'curl'."
msgid ""
"You should install 'wget' or 'uclient-fetch' package or replace libcurl."
msgstr ""
-"Вы должны установить 'wget' или пакет 'uclient-fetch' или заменить libcurl."
+"Вы должны установить пакет 'wget' или 'uclient-fetch' или заменить 'libcurl'."
msgid "cURL is installed, but libcurl was compiled without proxy support."
msgstr "cURL установлен, но libcurl был скомпилирован без поддержки прокси."
@@ -690,28 +691,28 @@ msgid "cURL without Proxy Support"
msgstr "cURL без поддержки прокси"
msgid "can not detect local IP. Please select a different Source combination"
-msgstr "не может определить локальный IP-адрес. Выберите другой вариант"
+msgstr "Невозможно определить локальный IP-адрес. Выберите другой источник"
msgid "can not resolve host:"
-msgstr "не может разрешить хост:"
+msgstr "Невозможно разрешить хост:"
msgid "config error"
-msgstr "ошибка в config файле"
+msgstr "Ошибка в config файле"
msgid "days"
msgstr "дни"
msgid "directory or path/file"
-msgstr "папка или путь/к файлу"
+msgstr "папка или путь/файл"
msgid "either url or script could be set"
-msgstr "или url или скрипт смог быть установлен"
+msgstr "URL или скрипт должны быть установлены"
msgid "enable here"
msgstr "Включить здесь"
msgid "file or directory not found or not 'IGNORE'"
-msgstr "файл или папка не найдена или не 'Игнорировать'"
+msgstr "Файл или папка не найдены (не установлено 'Игнорировать')"
msgid "help"
msgstr "помощь"
@@ -723,31 +724,31 @@ msgid "installed"
msgstr "установлено"
msgid "invalid FQDN / required - Sample"
-msgstr "недопустимое полное доменное имя / обязательный образец"
+msgstr "Недопустимое полное доменное имя (обязательное поле) — пример"
msgid "minimum value '0'"
-msgstr "минимальное значение '0'"
+msgstr "Минимальное значение '0'"
msgid "minimum value '1'"
-msgstr "минимальное значение '1'"
+msgstr "Минимальное значение '1'"
msgid "minimum value 5 minutes == 300 seconds"
-msgstr "минимальное значение 5 минут == 300 секунд"
+msgstr "Минимальное значение 5 минут (300 секунд)"
msgid "minutes"
msgstr "минут(ы)"
msgid "missing / required"
-msgstr "отсутствует / не требуется"
+msgstr "отсутствует (обязательное поле)"
msgid "must be greater or equal 'Check Interval'"
-msgstr "должно быть больше или равно 'Интервал проверки'"
+msgstr "Должно быть больше или равно 'Интервал проверки'"
msgid "must start with 'http://'"
-msgstr "должны начинаться с 'http://'"
+msgstr "Должны начинаться с 'http://'"
msgid "nc (netcat) can not connect"
-msgstr "NC (netcat) не может подключиться"
+msgstr "Утилита nc (netcat) не может подключиться"
msgid "never"
msgstr "никогда"
@@ -757,10 +758,10 @@ msgstr "нет данных"
msgid "not found or not executable - Sample: '/path/to/script.sh'"
msgstr ""
-"не найден или не является исполнительным, например: '/path/to/script.sh'"
+"Не найден или не является исполняемым — пример: '/path/to/script.sh'"
msgid "nslookup can not resolve host"
-msgstr "nslookup не может разрешить хост"
+msgstr "Утилита nslookup не может разрешить хост"
msgid "or"
msgstr "или"
@@ -772,7 +773,7 @@ msgid "please disable"
msgstr "отключите"
msgid "please remove entry"
-msgstr "удалите эту запись"
+msgstr "удалите запись"
msgid "please select 'IPv4' address version"
msgstr "выберите версию протокола 'IPv4' адреса"
@@ -784,10 +785,10 @@ msgid "please set to 'default'"
msgstr "установите режим 'по умолчанию'"
msgid "proxy port missing"
-msgstr "отсутствует прокси порт"
+msgstr "отсутствует порт прокси"
msgid "required"
-msgstr "требовать"
+msgstr "требуется"
msgid "seconds"
msgstr "секунд(ы)"
diff --git a/applications/luci-app-ocserv/luasrc/view/ocserv_status.htm b/applications/luci-app-ocserv/luasrc/view/ocserv_status.htm
index 66e44e967..c8f3f33d6 100644
--- a/applications/luci-app-ocserv/luasrc/view/ocserv_status.htm
+++ b/applications/luci-app-ocserv/luasrc/view/ocserv_status.htm
@@ -17,29 +17,28 @@
var tb = document.getElementById('ocserv_status_table');
if (st && tb)
{
- /* clear all rows */
- while (tb.firstElementChild !== tb.lastElementChild)
- tb.removeChild(tb.lastElementChild);
+ var rows = [];
for (var i = 0; i < st.length; i++)
{
- tb.appendChild(E('<div class="tr cbi-section-table-row cbi-rowstyle-%d">'.format((i % 2) + 1), [
- E('<div class="td">', st[i].user),
- E('<div class="td">', st[i].group),
- E('<div class="td">', st[i].vpn_ip),
- E('<div class="td">', st[i].ip),
- E('<div class="td">', st[i].device),
- E('<div class="td">', st[i].time),
- E('<div class="td">', st[i].cipher),
- E('<div class="td">', st[i].status),
- E('<div class="td">',
- E('<input class="cbi-button cbi-input-remove" type="button" value="<%:Disconnect%>" onclick="ocserv_disconnect(%d)" />'
- .format(st[i].id)))
- ]));
+ rows.push([
+ st[i].user,
+ st[i].group,
+ st[i].vpn_ip,
+ st[i].ip,
+ st[i].device,
+ st[i].time,
+ st[i].cipher,
+ st[i].status,
+ E('input', {
+ type: 'button',
+ class: 'cbi-button cbi-button-remove',
+ onclick: 'ocserv_disconnect(%d)'.format(st[i].id)
+ })
+ ]);
}
- if (tb.firstElementChild === tb.lastElementChild)
- tb.appendChild(E('<div class="tr cbi-section-table-row"><div class="td"><em><br /><%:There are no active users.%></em></div></div>'));
+ cbi_update_table(tb, rows, '<em><%:There are no active users.%></em>');
}
}
);
@@ -47,20 +46,20 @@
<fieldset class="cbi-section">
<legend><%:Active OpenConnect Users%></legend>
- <div class="table cbi-section-table" id="ocserv_status_table">
- <div class="tr cbi-section-table-titles">
- <div class="th cbi-section-table-cell"><%:User%></div>
- <div class="th cbi-section-table-cell"><%:Group%></div>
- <div class="th cbi-section-table-cell"><%:IP Address%></div>
- <div class="th cbi-section-table-cell"><%:VPN IP Address%></div>
- <div class="th cbi-section-table-cell"><%:Device%></div>
- <div class="th cbi-section-table-cell"><%:Time%></div>
- <div class="th cbi-section-table-cell"><%:Cipher%></div>
- <div class="th cbi-section-table-cell"><%:Status%></div>
- <div class="th cbi-section-table-cell">&#160;</div>
+ <div class="table" id="ocserv_status_table">
+ <div class="tr table-titles">
+ <div class="th"><%:User%></div>
+ <div class="th"><%:Group%></div>
+ <div class="th"><%:IP Address%></div>
+ <div class="th"><%:VPN IP Address%></div>
+ <div class="th"><%:Device%></div>
+ <div class="th"><%:Time%></div>
+ <div class="th"><%:Cipher%></div>
+ <div class="th"><%:Status%></div>
+ <div class="th">&#160;</div>
</div>
- <div class="tr cbi-section-table-row">
- <div class="td" colspan="5"><em><br /><%:Collecting data...%></em></div>
+ <div class="tr placeholder">
+ <div class="td"><em><%:Collecting data...%></em></div>
</div>
</div>
</fieldset>
diff --git a/applications/luci-app-samba4/Makefile b/applications/luci-app-samba4/Makefile
new file mode 100644
index 000000000..08403fb2f
--- /dev/null
+++ b/applications/luci-app-samba4/Makefile
@@ -0,0 +1,10 @@
+# This is free software, licensed under the Apache License, Version 2.0 .
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=Network Shares - Samba 4 SMB/CIFS module
+LUCI_DEPENDS:=+samba4-server
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-samba4/luasrc/controller/samba4.lua b/applications/luci-app-samba4/luasrc/controller/samba4.lua
new file mode 100644
index 000000000..8ad0e52e3
--- /dev/null
+++ b/applications/luci-app-samba4/luasrc/controller/samba4.lua
@@ -0,0 +1,14 @@
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.controller.samba4", package.seeall)
+
+function index()
+ if not nixio.fs.access("/etc/config/samba4") then
+ return
+ end
+
+ local page
+
+ page = entry({"admin", "services", "samba4"}, cbi("samba4"), _("Network Shares"))
+ page.dependent = true
+end
diff --git a/applications/luci-app-samba4/luasrc/model/cbi/samba4.lua b/applications/luci-app-samba4/luasrc/model/cbi/samba4.lua
new file mode 100644
index 000000000..e5c0a1bed
--- /dev/null
+++ b/applications/luci-app-samba4/luasrc/model/cbi/samba4.lua
@@ -0,0 +1,90 @@
+-- Licensed to the public under the Apache License 2.0.
+
+m = Map("samba4", translate("Network Shares"))
+
+s = m:section(TypedSection, "samba", "Samba")
+s.anonymous = true
+
+s:tab("general", translate("General Settings"))
+s:tab("template", translate("Edit Template"))
+
+s:taboption("general", Value, "name", translate("Hostname"))
+s:taboption("general", Value, "description", translate("Description"))
+s:taboption("general", Value, "workgroup", translate("Workgroup"))
+h = s:taboption("general", Flag, "homes", translate("Share home-directories"),
+ translate("Allow system users to reach their home directories via " ..
+ "network shares"))
+h.rmempty = false
+s:taboption("general", Flag, "disable_netbios", translate("Disable Netbios"))
+s:taboption("general", Flag, "disable_ad_dc", translate("Disable Active Directory Domain Controller"))
+s:taboption("general", Flag, "disable_winbind", translate("Disable Winbind"))
+
+tmpl = s:taboption("template", Value, "_tmpl",
+ translate("Edit the template that is used for generating the samba configuration."),
+ translate("This is the content of the file '/etc/samba/smb.conf.template' from which your samba configuration will be generated. " ..
+ "Values enclosed by pipe symbols ('|') should not be changed. They get their values from the 'General Settings' tab."))
+
+tmpl.template = "cbi/tvalue"
+tmpl.rows = 20
+
+function tmpl.cfgvalue(self, section)
+ return nixio.fs.readfile("/etc/samba/smb.conf.template")
+end
+
+function tmpl.write(self, section, value)
+ value = value:gsub("\r\n?", "\n")
+ nixio.fs.writefile("/etc/samba/smb.conf.template", value)
+end
+
+
+s = m:section(TypedSection, "sambashare", translate("Shared Directories")
+ , translate("Please add directories to share. Each directory refers to a folder on a mounted device."))
+s.anonymous = true
+s.addremove = true
+s.template = "cbi/tblsection"
+
+s:option(Value, "name", translate("Name"))
+pth = s:option(Value, "path", translate("Path"))
+if nixio.fs.access("/etc/config/fstab") then
+ pth.titleref = luci.dispatcher.build_url("admin", "system", "fstab")
+end
+
+s:option(Value, "users", translate("Allowed users")).rmempty = true
+
+ro = s:option(Flag, "read_only", translate("Read-only"))
+ro.rmempty = false
+ro.enabled = "yes"
+ro.disabled = "no"
+
+br = s:option(Flag, "browseable", translate("Browseable"))
+br.rmempty = false
+br.default = "yes"
+br.enabled = "yes"
+br.disabled = "no"
+
+go = s:option(Flag, "guest_ok", translate("Allow guests"))
+go.rmempty = false
+go.enabled = "yes"
+go.disabled = "no"
+
+gon = s:option(Flag, "guest_only", translate("Guests only"))
+gon.rmempty = false
+gon.enabled = "yes"
+gon.disabled = "no"
+
+io = s:option(Flag, "inherit_owner", translate("Inherit owner"))
+io.rmempty = false
+io.enabled = "yes"
+io.disabled = "no"
+
+cm = s:option(Value, "create_mask", translate("Create mask"))
+cm.rmempty = true
+cm.size = 4
+
+dm = s:option(Value, "dir_mask", translate("Directory mask"))
+dm.rmempty = true
+dm.size = 4
+
+s:option(Value, "vfs_objects", translate("Vfs objects")).rmempty = true
+
+return m
diff --git a/applications/luci-app-samba4/po/ca/samba4.po b/applications/luci-app-samba4/po/ca/samba4.po
new file mode 100644
index 000000000..ddd306d07
--- /dev/null
+++ b/applications/luci-app-samba4/po/ca/samba4.po
@@ -0,0 +1,121 @@
+# samba.pot
+# generated from ./applications/luci-samba/luasrc/i18n/samba.en.lua
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-10 03:40+0200\n"
+"PO-Revision-Date: 2014-07-01 05:47+0200\n"
+"Last-Translator: Alex <alexhenrie24@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: ca\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.0.6\n"
+
+msgid "Allow guests"
+msgstr "Permet convidats"
+
+msgid "Allow system users to reach their home directories via network shares"
+msgstr ""
+"Permet que els usuaris del sistema pugin arribar als seus directoris d'inici "
+"via comparticions de xarxa"
+
+msgid "Allowed users"
+msgstr "Usuaris permesos"
+
+msgid "Browseable"
+msgstr ""
+
+msgid "Create mask"
+msgstr "Crea màscara"
+
+msgid "Description"
+msgstr "Descripció"
+
+msgid "Directory mask"
+msgstr "Màscara de directori"
+
+msgid "Disable Active Directory Domain Controller"
+msgstr ""
+
+msgid "Disable Netbios"
+msgstr ""
+
+msgid "Disable Winbind"
+msgstr ""
+
+msgid "Edit Template"
+msgstr "Edita plantilla"
+
+msgid "Edit the template that is used for generating the samba configuration."
+msgstr "Edita la plantilla que s'usa per generar la configuració de samba."
+
+msgid "General Settings"
+msgstr "Ajusts generals"
+
+msgid "Guests only"
+msgstr ""
+
+msgid "Hostname"
+msgstr "Nom de màquina"
+
+msgid "Inherit owner"
+msgstr ""
+
+msgid "Name"
+msgstr "Nom"
+
+msgid "Network Shares"
+msgstr "Comparticions de xarxa"
+
+msgid "Path"
+msgstr "Ruta"
+
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
+msgid "Read-only"
+msgstr "Només lectura"
+
+msgid "Share home-directories"
+msgstr "Comparteix directoris d'inici"
+
+msgid "Shared Directories"
+msgstr "Directoris compartits"
+
+msgid ""
+"This is the content of the file '/etc/samba/smb.conf.template' from which "
+"your samba configuration will be generated. Values enclosed by pipe symbols "
+"('|') should not be changed. They get their values from the 'General "
+"Settings' tab."
+msgstr ""
+"Això és el contingut del fitxer '/etc/samba/smb.conf.template' del qual la "
+"vostra configuració de samba es generarà. Valors encerclats per símbols de "
+"barra ('|') no es deuen canviar. Reben els seus valors de la pestanya "
+"'Ajusts generals'."
+
+msgid "Vfs objects"
+msgstr ""
+
+msgid "Workgroup"
+msgstr "Grup de treball"
+
+#~ msgid "Mask for new directories"
+#~ msgstr "Màscara per directoris nous"
+
+#~ msgid "Mask for new files"
+#~ msgstr "Màscara per fitxers nous"
+
+#~ msgid "Shared Directory"
+#~ msgstr "Directori compartit"
+
+#~ msgid "Physical Path"
+#~ msgstr "Ruta física"
+
+#~ msgid "optional"
+#~ msgstr "opcional"
diff --git a/applications/luci-app-samba4/po/cs/samba4.po b/applications/luci-app-samba4/po/cs/samba4.po
new file mode 100644
index 000000000..a013bcc13
--- /dev/null
+++ b/applications/luci-app-samba4/po/cs/samba4.po
@@ -0,0 +1,109 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2014-05-31 13:56+0200\n"
+"Last-Translator: koli <lukas.koluch@gmail.com>\n"
+"Language-Team: none\n"
+"Language: cs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+"X-Generator: Pootle 2.0.6\n"
+
+msgid "Allow guests"
+msgstr "Povolení hosté"
+
+msgid "Allow system users to reach their home directories via network shares"
+msgstr ""
+"Povoluje systémovým uživatelům přístup do jejich domácích adresářů skrze "
+"sdílení přes síť."
+
+msgid "Allowed users"
+msgstr "Povolení uživatelé"
+
+msgid "Browseable"
+msgstr ""
+
+msgid "Create mask"
+msgstr "Vytvořit masku"
+
+msgid "Description"
+msgstr "Popis"
+
+msgid "Directory mask"
+msgstr "Maska adresáře"
+
+msgid "Disable Active Directory Domain Controller"
+msgstr ""
+
+msgid "Disable Netbios"
+msgstr ""
+
+msgid "Disable Winbind"
+msgstr ""
+
+msgid "Edit Template"
+msgstr "Editovat šablonu"
+
+msgid "Edit the template that is used for generating the samba configuration."
+msgstr ""
+"Editovat šablonu, která je použita pro generování konfiguračního souboru pro "
+"sambu."
+
+msgid "General Settings"
+msgstr "Obecné nastavení"
+
+msgid "Guests only"
+msgstr ""
+
+msgid "Hostname"
+msgstr "Název počítače."
+
+msgid "Inherit owner"
+msgstr ""
+
+msgid "Name"
+msgstr "Jméno"
+
+msgid "Network Shares"
+msgstr "Síťová sdílení"
+
+msgid "Path"
+msgstr "Cesta"
+
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
+msgid "Read-only"
+msgstr "Pouze pro čtení"
+
+msgid "Share home-directories"
+msgstr "Sdílet domácí adresáře"
+
+msgid "Shared Directories"
+msgstr "Sdílené adresáře"
+
+msgid ""
+"This is the content of the file '/etc/samba/smb.conf.template' from which "
+"your samba configuration will be generated. Values enclosed by pipe symbols "
+"('|') should not be changed. They get their values from the 'General "
+"Settings' tab."
+msgstr ""
+"Toto je obsah souboru \"/etc/samba/smb.conf.template\", ze kterého je "
+"konfigurace samby generována. Hodnoty uzavřené rourou (\"|\"), by se neměly "
+"měnit. Tyto hodnoty jsou brány ze záložky \"Obecná nastavení\"."
+
+msgid "Vfs objects"
+msgstr ""
+
+msgid "Workgroup"
+msgstr "Skupina"
+
+#~ msgid "Mask for new directories"
+#~ msgstr "Maska pro nové adresáře"
+
+#~ msgid "Mask for new files"
+#~ msgstr "Maska pro nové soubory"
diff --git a/applications/luci-app-samba4/po/de/samba4.po b/applications/luci-app-samba4/po/de/samba4.po
new file mode 100644
index 000000000..b9caa61d1
--- /dev/null
+++ b/applications/luci-app-samba4/po/de/samba4.po
@@ -0,0 +1,113 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-26 17:57+0200\n"
+"PO-Revision-Date: 2011-10-18 13:13+0200\n"
+"Last-Translator: Manuel <freifunk@somakoma.de>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.0.4\n"
+
+msgid "Allow guests"
+msgstr "Gastzugang"
+
+msgid "Allow system users to reach their home directories via network shares"
+msgstr ""
+"Systembenutzer dürfen ihre Heimatverzeichnis über Netzwerkfreigaben "
+"erreichen."
+
+msgid "Allowed users"
+msgstr "Legitimierte Benutzer"
+
+msgid "Browseable"
+msgstr "Suchbar"
+
+msgid "Create mask"
+msgstr "Berechtigungsmaske für neue Dateien"
+
+msgid "Description"
+msgstr "Beschreibung"
+
+msgid "Directory mask"
+msgstr "Verzeichnismaske"
+
+msgid "Disable Active Directory Domain Controller"
+msgstr "Deaktiviere Active Directory Domain Controller"
+
+msgid "Disable Netbios"
+msgstr "Deaktiviere Netbios"
+
+msgid "Disable Winbind"
+msgstr "Deaktiviere Winbind"
+
+msgid "Edit Template"
+msgstr "Template bearbeiten"
+
+msgid "Edit the template that is used for generating the samba configuration."
+msgstr ""
+"Hier kann das Template bearbeitet werden, das zur Erstellung der Samba-"
+"Konfigurationsdateien verwendet wird."
+
+msgid "General Settings"
+msgstr "Allgemeine Einstellungen"
+
+msgid "Guests only"
+msgstr "Nur Gaeste"
+
+msgid "Hostname"
+msgstr "Hostname"
+
+msgid "Inherit owner"
+msgstr "Besitzer Erben"
+
+msgid "Name"
+msgstr "Name"
+
+msgid "Network Shares"
+msgstr "Netzwerkfreigaben"
+
+msgid "Path"
+msgstr "Pfad"
+
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
+msgid "Read-only"
+msgstr "Nur Lesen"
+
+msgid "Share home-directories"
+msgstr "Heimatverzeichnisse freigeben"
+
+msgid "Shared Directories"
+msgstr "Freigegebene Verzeichnisse"
+
+msgid ""
+"This is the content of the file '/etc/samba/smb.conf.template' from which "
+"your samba configuration will be generated. Values enclosed by pipe symbols "
+"('|') should not be changed. They get their values from the 'General "
+"Settings' tab."
+msgstr ""
+"Dieses Fenster zeigt den Inhalt der Datei '/etc/samba/smb.conf.template', "
+"die als Template zum Erstellen der Samba-Konfiguration verwendet wird. Werte "
+"die von Pipe Symbolen (|) eingeschlossen sind sollten nicht verändert "
+"werden, da diese beim Erstellen der Konfiguration mit den Werten aus dem Tab "
+"'Allgemeine Einstellungen' ersetzt werden."
+
+msgid "Vfs objects"
+msgstr "Virtuelle Filesystem Module"
+
+msgid "Workgroup"
+msgstr "Arbeitsgruppe"
+
+#~ msgid "Mask for new directories"
+#~ msgstr "Maske für neue Verzeichnisse"
+
+#~ msgid "Mask for new files"
+#~ msgstr "Maske für neue Dateien"
diff --git a/applications/luci-app-samba4/po/el/samba4.po b/applications/luci-app-samba4/po/el/samba4.po
new file mode 100644
index 000000000..946915f74
--- /dev/null
+++ b/applications/luci-app-samba4/po/el/samba4.po
@@ -0,0 +1,98 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-28 02:08+0200\n"
+"PO-Revision-Date: 2012-03-18 15:31+0200\n"
+"Last-Translator: Vasilis <acinonyx@openwrt.gr>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: el\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.0.4\n"
+
+msgid "Allow guests"
+msgstr ""
+
+msgid "Allow system users to reach their home directories via network shares"
+msgstr ""
+
+msgid "Allowed users"
+msgstr ""
+
+msgid "Browseable"
+msgstr ""
+
+msgid "Create mask"
+msgstr ""
+
+msgid "Description"
+msgstr ""
+
+msgid "Directory mask"
+msgstr ""
+
+msgid "Disable Active Directory Domain Controller"
+msgstr ""
+
+msgid "Disable Netbios"
+msgstr ""
+
+msgid "Disable Winbind"
+msgstr ""
+
+msgid "Edit Template"
+msgstr ""
+
+msgid "Edit the template that is used for generating the samba configuration."
+msgstr ""
+
+msgid "General Settings"
+msgstr ""
+
+msgid "Guests only"
+msgstr ""
+
+msgid "Hostname"
+msgstr ""
+
+msgid "Inherit owner"
+msgstr ""
+
+msgid "Name"
+msgstr "Όνομα"
+
+msgid "Network Shares"
+msgstr ""
+
+msgid "Path"
+msgstr ""
+
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
+msgid "Read-only"
+msgstr ""
+
+msgid "Share home-directories"
+msgstr ""
+
+msgid "Shared Directories"
+msgstr ""
+
+msgid ""
+"This is the content of the file '/etc/samba/smb.conf.template' from which "
+"your samba configuration will be generated. Values enclosed by pipe symbols "
+"('|') should not be changed. They get their values from the 'General "
+"Settings' tab."
+msgstr ""
+
+msgid "Vfs objects"
+msgstr ""
+
+msgid "Workgroup"
+msgstr ""
diff --git a/applications/luci-app-samba4/po/en/samba4.po b/applications/luci-app-samba4/po/en/samba4.po
new file mode 100644
index 000000000..75ef0f96e
--- /dev/null
+++ b/applications/luci-app-samba4/po/en/samba4.po
@@ -0,0 +1,108 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-03-22 15:23+0100\n"
+"PO-Revision-Date: 2011-10-25 21:26+0200\n"
+"Last-Translator: awm1 <awm1klimes8vladimir@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: en\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.0.4\n"
+
+msgid "Allow guests"
+msgstr "Allow guests"
+
+msgid "Allow system users to reach their home directories via network shares"
+msgstr "Allow system users to reach their home directories via network shares"
+
+msgid "Allowed users"
+msgstr "Allowed users"
+
+msgid "Browseable"
+msgstr ""
+
+msgid "Create mask"
+msgstr "Create mask"
+
+msgid "Description"
+msgstr "Description"
+
+msgid "Directory mask"
+msgstr "Directory mask"
+
+msgid "Disable Active Directory Domain Controller"
+msgstr ""
+
+msgid "Disable Netbios"
+msgstr ""
+
+msgid "Disable Winbind"
+msgstr ""
+
+msgid "Edit Template"
+msgstr "Edit template"
+
+msgid "Edit the template that is used for generating the samba configuration."
+msgstr "Edit the template that is used for generating the Samba configuration."
+
+msgid "General Settings"
+msgstr "General settings"
+
+msgid "Guests only"
+msgstr ""
+
+msgid "Hostname"
+msgstr "Hostname"
+
+msgid "Inherit owner"
+msgstr ""
+
+msgid "Name"
+msgstr "Name"
+
+msgid "Network Shares"
+msgstr "Network Shares"
+
+msgid "Path"
+msgstr "Path"
+
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
+msgid "Read-only"
+msgstr "Read-only"
+
+msgid "Share home-directories"
+msgstr "Share home-directories"
+
+msgid "Shared Directories"
+msgstr "Shared Directories"
+
+msgid ""
+"This is the content of the file '/etc/samba/smb.conf.template' from which "
+"your samba configuration will be generated. Values enclosed by pipe symbols "
+"('|') should not be changed. They get their values from the 'General "
+"Settings' tab."
+msgstr ""
+"This is the content of the file '/etc/samba/smb.conf.template' from which "
+"your Samba configuration will be generated. Values enclosed by pipe symbols "
+"('|') should not be changed. They get their values from the 'General "
+"settings' tab."
+
+msgid "Vfs objects"
+msgstr ""
+
+msgid "Workgroup"
+msgstr "Workgroup"
+
+#~ msgid "Mask for new directories"
+#~ msgstr "Mask for new directories"
+
+#~ msgid "Mask for new files"
+#~ msgstr "Mask for new files"
diff --git a/applications/luci-app-samba4/po/es/samba4.po b/applications/luci-app-samba4/po/es/samba4.po
new file mode 100644
index 000000000..1e6b8fd36
--- /dev/null
+++ b/applications/luci-app-samba4/po/es/samba4.po
@@ -0,0 +1,118 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-10 03:41+0200\n"
+"PO-Revision-Date: 2012-08-22 17:45+0200\n"
+"Last-Translator: José Vicente <josevteg@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.0.6\n"
+
+msgid "Allow guests"
+msgstr "Permitir invitados"
+
+msgid "Allow system users to reach their home directories via network shares"
+msgstr ""
+"Permitir a los usuarios acceder a sus directorios de inicio vía "
+"comparticiones de red"
+
+msgid "Allowed users"
+msgstr "Usuarios permitidos"
+
+msgid "Browseable"
+msgstr ""
+
+msgid "Create mask"
+msgstr "Crear máscara"
+
+msgid "Description"
+msgstr "Descripción"
+
+msgid "Directory mask"
+msgstr "Máscara de directorio"
+
+msgid "Disable Active Directory Domain Controller"
+msgstr ""
+
+msgid "Disable Netbios"
+msgstr ""
+
+msgid "Disable Winbind"
+msgstr ""
+
+msgid "Edit Template"
+msgstr "Editar plantilla"
+
+msgid "Edit the template that is used for generating the samba configuration."
+msgstr "Editar la plantilla usada para generar la configuración de samba."
+
+msgid "General Settings"
+msgstr "Configuración general"
+
+msgid "Guests only"
+msgstr ""
+
+msgid "Hostname"
+msgstr "Nombre de máquina"
+
+msgid "Inherit owner"
+msgstr ""
+
+msgid "Name"
+msgstr "Nombre"
+
+msgid "Network Shares"
+msgstr "Comparticiones de red"
+
+msgid "Path"
+msgstr "Dirección"
+
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
+msgid "Read-only"
+msgstr "Solo lectura"
+
+msgid "Share home-directories"
+msgstr "Compartir directorios personales"
+
+msgid "Shared Directories"
+msgstr "Directorios compartidos"
+
+msgid ""
+"This is the content of the file '/etc/samba/smb.conf.template' from which "
+"your samba configuration will be generated. Values enclosed by pipe symbols "
+"('|') should not be changed. They get their values from the 'General "
+"Settings' tab."
+msgstr ""
+"Contenido del fichero '/etc/samba/smb.conf.template' desde el que se "
+"generará la configuración de samba. Los valores entre tuberías ('|') no "
+"deben cambiarse. Su valor se toma desde la pestaña 'Configuración General'."
+
+msgid "Vfs objects"
+msgstr ""
+
+msgid "Workgroup"
+msgstr "Grupo de trabajo"
+
+#~ msgid "Mask for new directories"
+#~ msgstr "Máscara para directorios nuevos"
+
+#~ msgid "Mask for new files"
+#~ msgstr "Máscara para archivos nuevos"
+
+#~ msgid "Shared Directory"
+#~ msgstr "Directorio compatido"
+
+#~ msgid "Physical Path"
+#~ msgstr "Ruta Física"
+
+#~ msgid "optional"
+#~ msgstr "opcional"
diff --git a/applications/luci-app-samba4/po/fr/samba4.po b/applications/luci-app-samba4/po/fr/samba4.po
new file mode 100644
index 000000000..53212311c
--- /dev/null
+++ b/applications/luci-app-samba4/po/fr/samba4.po
@@ -0,0 +1,110 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-19 19:36+0200\n"
+"PO-Revision-Date: 2011-11-23 22:36+0200\n"
+"Last-Translator: fredb <fblistes+luci@free.fr>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Pootle 2.0.4\n"
+
+msgid "Allow guests"
+msgstr "Invités autorisés"
+
+msgid "Allow system users to reach their home directories via network shares"
+msgstr ""
+"Autoriser les utilisateurs système à atteindre leurs dossiers personnels via "
+"les partages réseau"
+
+msgid "Allowed users"
+msgstr "Utilisateurs autorisés"
+
+msgid "Browseable"
+msgstr ""
+
+msgid "Create mask"
+msgstr "Maque de création"
+
+msgid "Description"
+msgstr "Description"
+
+msgid "Directory mask"
+msgstr "Masque des dossiers"
+
+msgid "Disable Active Directory Domain Controller"
+msgstr ""
+
+msgid "Disable Netbios"
+msgstr ""
+
+msgid "Disable Winbind"
+msgstr ""
+
+msgid "Edit Template"
+msgstr "Éditer le modèle"
+
+msgid "Edit the template that is used for generating the samba configuration."
+msgstr "Éditer le modèle utilisé pour générer la configuration Samba."
+
+msgid "General Settings"
+msgstr "Paramètres généraux"
+
+msgid "Guests only"
+msgstr ""
+
+msgid "Hostname"
+msgstr "Nom d'hôte"
+
+msgid "Inherit owner"
+msgstr ""
+
+msgid "Name"
+msgstr "Nom"
+
+msgid "Network Shares"
+msgstr "Partages réseau"
+
+msgid "Path"
+msgstr "Chemin"
+
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
+msgid "Read-only"
+msgstr "Lecture seule"
+
+msgid "Share home-directories"
+msgstr "Partager les dossiers personnels"
+
+msgid "Shared Directories"
+msgstr "Dossiers partagés"
+
+msgid ""
+"This is the content of the file '/etc/samba/smb.conf.template' from which "
+"your samba configuration will be generated. Values enclosed by pipe symbols "
+"('|') should not be changed. They get their values from the 'General "
+"Settings' tab."
+msgstr ""
+"Voici le contenu du fichier '/etc/samba/smb.conf.template' d'où sera généré "
+"votre configuration Samba. Les valeurs entre les symboles barre-verticale "
+" (« | ») ne doivent pas être modifiées, elles proviennent de l'onglet "
+"« Paramètres généraux »."
+
+msgid "Vfs objects"
+msgstr ""
+
+msgid "Workgroup"
+msgstr "Groupe de travail"
+
+#~ msgid "Mask for new directories"
+#~ msgstr "Masque pour les nouveaux dossiers"
+
+#~ msgid "Mask for new files"
+#~ msgstr "Masque pour les nouveaux fichiers"
diff --git a/applications/luci-app-samba4/po/he/samba4.po b/applications/luci-app-samba4/po/he/samba4.po
new file mode 100644
index 000000000..3f670e6c2
--- /dev/null
+++ b/applications/luci-app-samba4/po/he/samba4.po
@@ -0,0 +1,93 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "Allow guests"
+msgstr ""
+
+msgid "Allow system users to reach their home directories via network shares"
+msgstr ""
+
+msgid "Allowed users"
+msgstr ""
+
+msgid "Browseable"
+msgstr ""
+
+msgid "Create mask"
+msgstr ""
+
+msgid "Description"
+msgstr ""
+
+msgid "Directory mask"
+msgstr ""
+
+msgid "Disable Active Directory Domain Controller"
+msgstr ""
+
+msgid "Disable Netbios"
+msgstr ""
+
+msgid "Disable Winbind"
+msgstr ""
+
+msgid "Edit Template"
+msgstr ""
+
+msgid "Edit the template that is used for generating the samba configuration."
+msgstr ""
+
+msgid "General Settings"
+msgstr ""
+
+msgid "Guests only"
+msgstr ""
+
+msgid "Hostname"
+msgstr ""
+
+msgid "Inherit owner"
+msgstr ""
+
+msgid "Name"
+msgstr ""
+
+msgid "Network Shares"
+msgstr ""
+
+msgid "Path"
+msgstr ""
+
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
+msgid "Read-only"
+msgstr ""
+
+msgid "Share home-directories"
+msgstr ""
+
+msgid "Shared Directories"
+msgstr ""
+
+msgid ""
+"This is the content of the file '/etc/samba/smb.conf.template' from which "
+"your samba configuration will be generated. Values enclosed by pipe symbols "
+"('|') should not be changed. They get their values from the 'General "
+"Settings' tab."
+msgstr ""
+
+msgid "Vfs objects"
+msgstr ""
+
+msgid "Workgroup"
+msgstr ""
diff --git a/applications/luci-app-samba4/po/hu/samba4.po b/applications/luci-app-samba4/po/hu/samba4.po
new file mode 100644
index 000000000..08ff729f4
--- /dev/null
+++ b/applications/luci-app-samba4/po/hu/samba4.po
@@ -0,0 +1,110 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2012-04-06 10:56+0200\n"
+"Last-Translator: juhosg <juhosg@openwrt.org>\n"
+"Language-Team: none\n"
+"Language: hu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.0.4\n"
+
+msgid "Allow guests"
+msgstr "Vendég hozzáférés"
+
+msgid "Allow system users to reach their home directories via network shares"
+msgstr ""
+"A rendszerfelhasználók hálózati megosztáson keresztül hozzáférhetnek a home "
+"könyvtárukhoz."
+
+msgid "Allowed users"
+msgstr "Engedélyezett felhasználók"
+
+msgid "Browseable"
+msgstr ""
+
+msgid "Create mask"
+msgstr "Létrehozási maszk"
+
+msgid "Description"
+msgstr "Leírás"
+
+msgid "Directory mask"
+msgstr "Könyvtár maszk"
+
+msgid "Disable Active Directory Domain Controller"
+msgstr ""
+
+msgid "Disable Netbios"
+msgstr ""
+
+msgid "Disable Winbind"
+msgstr ""
+
+msgid "Edit Template"
+msgstr "Sablon szerkesztése"
+
+msgid "Edit the template that is used for generating the samba configuration."
+msgstr ""
+"Itt szerkesztheti a sablont, ami a végleges samba konfiguráció "
+"elkészítéséhez kerül felhasználásra."
+
+msgid "General Settings"
+msgstr "Általános beállítások"
+
+msgid "Guests only"
+msgstr ""
+
+msgid "Hostname"
+msgstr "Gépnév"
+
+msgid "Inherit owner"
+msgstr ""
+
+msgid "Name"
+msgstr "Név"
+
+msgid "Network Shares"
+msgstr "Hálózati megosztások"
+
+msgid "Path"
+msgstr "Elérési út"
+
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
+msgid "Read-only"
+msgstr "Csak olvasható"
+
+msgid "Share home-directories"
+msgstr "Home könyvtárak megosztása"
+
+msgid "Shared Directories"
+msgstr "Megosztott könyvtárak"
+
+msgid ""
+"This is the content of the file '/etc/samba/smb.conf.template' from which "
+"your samba configuration will be generated. Values enclosed by pipe symbols "
+"('|') should not be changed. They get their values from the 'General "
+"Settings' tab."
+msgstr ""
+"Itt látható a /etc/samba/smb.conf.template file tartalma, ami a samba "
+"konfiguráció előállításához kerül felhasználásra. A pipe szimbólumok ('|') "
+"közé zárt értékek módosítása nem szükséges, az értéküket az általános "
+"beállítások fülről kapják."
+
+msgid "Vfs objects"
+msgstr ""
+
+msgid "Workgroup"
+msgstr "Munkacsoport"
+
+#~ msgid "Mask for new directories"
+#~ msgstr "Új könyvtárak maszkja"
+
+#~ msgid "Mask for new files"
+#~ msgstr "Új fájlok maszkja"
diff --git a/applications/luci-app-samba4/po/it/samba4.po b/applications/luci-app-samba4/po/it/samba4.po
new file mode 100644
index 000000000..93359d7ba
--- /dev/null
+++ b/applications/luci-app-samba4/po/it/samba4.po
@@ -0,0 +1,113 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-19 19:36+0200\n"
+"PO-Revision-Date: 2017-09-06 01:28+0200\n"
+"Last-Translator: bubu83 <bubu83@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.0.4\n"
+
+msgid "Allow guests"
+msgstr "Permetti ospiti"
+
+msgid "Allow system users to reach their home directories via network shares"
+msgstr ""
+"Autorizza gli utenti del sistema a raggiungere la loro cartella home "
+"attraverso le condivisioni di rete"
+
+msgid "Allowed users"
+msgstr "Utenti ammessi"
+
+msgid "Browseable"
+msgstr "Sfogliabile"
+
+msgid "Create mask"
+msgstr "Crea maschera"
+
+msgid "Description"
+msgstr "Descrizione"
+
+msgid "Directory mask"
+msgstr "Maschera della cartella"
+
+msgid "Disable Active Directory Domain Controller"
+msgstr ""
+
+msgid "Disable Netbios"
+msgstr ""
+
+msgid "Disable Winbind"
+msgstr ""
+
+msgid "Edit Template"
+msgstr "Modifica Template"
+
+msgid "Edit the template that is used for generating the samba configuration."
+msgstr ""
+"Modifica il template utilizzato per generare la configurazione di samba."
+
+msgid "General Settings"
+msgstr "Opzioni Generali"
+
+msgid "Guests only"
+msgstr ""
+
+msgid "Hostname"
+msgstr "Hostname"
+
+msgid "Inherit owner"
+msgstr ""
+
+msgid "Name"
+msgstr "Nome"
+
+msgid "Network Shares"
+msgstr "Condivisioni di rete"
+
+msgid "Path"
+msgstr "Percorso"
+
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+"Per favore aggiungi le directory da condividere. Ogni directory si riferisce "
+"a una cartella su un dispositivo montato."
+
+msgid "Read-only"
+msgstr "Solo lettura"
+
+msgid "Share home-directories"
+msgstr "Condividi cartelle home"
+
+msgid "Shared Directories"
+msgstr "Cartelle Condivise"
+
+msgid ""
+"This is the content of the file '/etc/samba/smb.conf.template' from which "
+"your samba configuration will be generated. Values enclosed by pipe symbols "
+"('|') should not be changed. They get their values from the 'General "
+"Settings' tab."
+msgstr ""
+"Questo è il contenuto del file '/etc/samba/smb.conf.template' dal quale sarà "
+"generata la tua configurazione di samba. I valori racchiusi tra il simbolo "
+"('|') non dovrebbero essere toccati. Essi vengono generati dalla schermata "
+"'Opzioni Generali'."
+
+msgid "Vfs objects"
+msgstr ""
+
+msgid "Workgroup"
+msgstr "Gruppo di lavoro"
+
+#~ msgid "Mask for new directories"
+#~ msgstr "Maschera per le nuove cartelle"
+
+#~ msgid "Mask for new files"
+#~ msgstr "Maschera per i nuovi files"
diff --git a/applications/luci-app-samba4/po/ja/samba4.po b/applications/luci-app-samba4/po/ja/samba4.po
new file mode 100644
index 000000000..3c75275c0
--- /dev/null
+++ b/applications/luci-app-samba4/po/ja/samba4.po
@@ -0,0 +1,109 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-19 19:36+0200\n"
+"PO-Revision-Date: 2017-08-16 00:41+0900\n"
+"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 2.0.3\n"
+"Language-Team: \n"
+
+msgid "Allow guests"
+msgstr "ゲストアクセスを許可"
+
+msgid "Allow system users to reach their home directories via network shares"
+msgstr "sambaを介してユーザーのホームディレクトリへのアクセスを許可します"
+
+msgid "Allowed users"
+msgstr "許可されたユーザー"
+
+msgid "Browseable"
+msgstr ""
+
+msgid "Create mask"
+msgstr "マスクの作成"
+
+msgid "Description"
+msgstr "説明"
+
+msgid "Directory mask"
+msgstr "ディレクトリのマスク"
+
+msgid "Disable Active Directory Domain Controller"
+msgstr ""
+
+msgid "Disable Netbios"
+msgstr ""
+
+msgid "Disable Winbind"
+msgstr ""
+
+msgid "Edit Template"
+msgstr "テンプレートの編集"
+
+msgid "Edit the template that is used for generating the samba configuration."
+msgstr "samba設定を生成するテンプレートを編集します。"
+
+msgid "General Settings"
+msgstr "一般設定"
+
+msgid "Guests only"
+msgstr ""
+
+msgid "Hostname"
+msgstr "ホスト名"
+
+msgid "Inherit owner"
+msgstr ""
+
+msgid "Name"
+msgstr "名前"
+
+msgid "Network Shares"
+msgstr "ネットワーク共有"
+
+msgid "Path"
+msgstr "パス"
+
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+"共有するディレクトリを追加してください。マウントされたデバイス等のディレクト"
+"リを設定し、公開することができます。"
+
+msgid "Read-only"
+msgstr "読み込みのみ"
+
+msgid "Share home-directories"
+msgstr "ホームディレクトリの共有"
+
+msgid "Shared Directories"
+msgstr "共有ディレクトリ"
+
+msgid ""
+"This is the content of the file '/etc/samba/smb.conf.template' from which "
+"your samba configuration will be generated. Values enclosed by pipe symbols "
+"('|') should not be changed. They get their values from the 'General "
+"Settings' tab."
+msgstr ""
+"これは、samba設定を生成するための'/etc/samba/smb.conf.template' ファイルの内"
+"容です。パイプ('|')で閉じられた値は変更しないでください。これらの値は'一般設"
+"定'タブ内の値によって置き換えられます。"
+
+msgid "Vfs objects"
+msgstr ""
+
+msgid "Workgroup"
+msgstr "ワークグループ"
+
+#~ msgid "Mask for new directories"
+#~ msgstr "新規ディレクトリのマスク"
+
+#~ msgid "Mask for new files"
+#~ msgstr "新規ファイルのマスク"
diff --git a/applications/luci-app-samba4/po/ms/samba4.po b/applications/luci-app-samba4/po/ms/samba4.po
new file mode 100644
index 000000000..9e138471d
--- /dev/null
+++ b/applications/luci-app-samba4/po/ms/samba4.po
@@ -0,0 +1,92 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "Allow guests"
+msgstr ""
+
+msgid "Allow system users to reach their home directories via network shares"
+msgstr ""
+
+msgid "Allowed users"
+msgstr ""
+
+msgid "Browseable"
+msgstr ""
+
+msgid "Create mask"
+msgstr ""
+
+msgid "Description"
+msgstr ""
+
+msgid "Directory mask"
+msgstr ""
+
+msgid "Disable Active Directory Domain Controller"
+msgstr ""
+
+msgid "Disable Netbios"
+msgstr ""
+
+msgid "Disable Winbind"
+msgstr ""
+
+msgid "Edit Template"
+msgstr ""
+
+msgid "Edit the template that is used for generating the samba configuration."
+msgstr ""
+
+msgid "General Settings"
+msgstr ""
+
+msgid "Guests only"
+msgstr ""
+
+msgid "Hostname"
+msgstr ""
+
+msgid "Inherit owner"
+msgstr ""
+
+msgid "Name"
+msgstr ""
+
+msgid "Network Shares"
+msgstr ""
+
+msgid "Path"
+msgstr ""
+
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
+msgid "Read-only"
+msgstr ""
+
+msgid "Share home-directories"
+msgstr ""
+
+msgid "Shared Directories"
+msgstr ""
+
+msgid ""
+"This is the content of the file '/etc/samba/smb.conf.template' from which "
+"your samba configuration will be generated. Values enclosed by pipe symbols "
+"('|') should not be changed. They get their values from the 'General "
+"Settings' tab."
+msgstr ""
+
+msgid "Vfs objects"
+msgstr ""
+
+msgid "Workgroup"
+msgstr ""
diff --git a/applications/luci-app-samba4/po/no/samba4.po b/applications/luci-app-samba4/po/no/samba4.po
new file mode 100644
index 000000000..6e8425933
--- /dev/null
+++ b/applications/luci-app-samba4/po/no/samba4.po
@@ -0,0 +1,98 @@
+msgid ""
+msgstr ""
+"Last-Translator: Lars Hardy <lars.hardy@gmail.com>\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "Allow guests"
+msgstr "Tillat gjester"
+
+msgid "Allow system users to reach their home directories via network shares"
+msgstr "Tillat systembrukere å nå sine hjemmekataloger via nettverks mapper."
+
+msgid "Allowed users"
+msgstr "Tillatte brukere"
+
+msgid "Browseable"
+msgstr ""
+
+msgid "Create mask"
+msgstr "Opprett Maske"
+
+msgid "Description"
+msgstr "Beskrivelse"
+
+msgid "Directory mask"
+msgstr "Katalog maske"
+
+msgid "Disable Active Directory Domain Controller"
+msgstr ""
+
+msgid "Disable Netbios"
+msgstr ""
+
+msgid "Disable Winbind"
+msgstr ""
+
+msgid "Edit Template"
+msgstr "Rediger Mal"
+
+msgid "Edit the template that is used for generating the samba configuration."
+msgstr "Rediger malen som brukes til å generere samba konfigurasjonen."
+
+msgid "General Settings"
+msgstr "Generelle Innstillinger"
+
+msgid "Guests only"
+msgstr ""
+
+msgid "Hostname"
+msgstr "Vertsnavn"
+
+msgid "Inherit owner"
+msgstr ""
+
+msgid "Name"
+msgstr "Navn"
+
+msgid "Network Shares"
+msgstr "Nettverks Mapper"
+
+msgid "Path"
+msgstr "Fysisk bane"
+
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
+msgid "Read-only"
+msgstr "Skrivebeskyttet"
+
+msgid "Share home-directories"
+msgstr "Del Hjemmekataloger"
+
+msgid "Shared Directories"
+msgstr "Delte Kataloger"
+
+msgid ""
+"This is the content of the file '/etc/samba/smb.conf.template' from which "
+"your samba configuration will be generated. Values enclosed by pipe symbols "
+"('|') should not be changed. They get their values from the 'General "
+"Settings' tab."
+msgstr ""
+"Dette er innholdet av filen '/etc/samba/smb.conf.template' som din samba "
+"konfigurasjon vil bli generert fra. Verdier omsluttet av ('|') bør ikke "
+"endres. De får sine verdier fra 'Generelle Innstillinger' fanen."
+
+msgid "Vfs objects"
+msgstr ""
+
+msgid "Workgroup"
+msgstr "Arbeidsgruppe"
+
+#~ msgid "Mask for new directories"
+#~ msgstr "Maske for nye kataloger"
+
+#~ msgid "Mask for new files"
+#~ msgstr "Maske for nye filer"
diff --git a/applications/luci-app-samba4/po/pl/samba4.po b/applications/luci-app-samba4/po/pl/samba4.po
new file mode 100644
index 000000000..aec7082d5
--- /dev/null
+++ b/applications/luci-app-samba4/po/pl/samba4.po
@@ -0,0 +1,109 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2011-08-26 09:51+0200\n"
+"Last-Translator: Staszek <fistaszek@tlen.pl>\n"
+"Language-Team: none\n"
+"Language: pl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
+"X-Generator: Pootle 2.0.4\n"
+
+msgid "Allow guests"
+msgstr "Zezwalaj Gościom"
+
+msgid "Allow system users to reach their home directories via network shares"
+msgstr ""
+"Użytkownicy systemu mogą dostać się do swoich katalogów domowych za "
+"pośrednictwem udziałów sieciowych."
+
+msgid "Allowed users"
+msgstr "Użytkownicy z prawem dostępu"
+
+msgid "Browseable"
+msgstr ""
+
+msgid "Create mask"
+msgstr "Utwórz maskę"
+
+msgid "Description"
+msgstr "Opis"
+
+msgid "Directory mask"
+msgstr "Maska katalogu"
+
+msgid "Disable Active Directory Domain Controller"
+msgstr ""
+
+msgid "Disable Netbios"
+msgstr ""
+
+msgid "Disable Winbind"
+msgstr ""
+
+msgid "Edit Template"
+msgstr "Edytuj szablon"
+
+msgid "Edit the template that is used for generating the samba configuration."
+msgstr "Edytuj szablon, który jest używany do generowania konfiguracji samby."
+
+msgid "General Settings"
+msgstr "Ustawienia ogólne"
+
+msgid "Guests only"
+msgstr ""
+
+msgid "Hostname"
+msgstr "Nazwa hosta"
+
+msgid "Inherit owner"
+msgstr ""
+
+msgid "Name"
+msgstr "Nazwa"
+
+msgid "Network Shares"
+msgstr "Udziały sieciowe"
+
+msgid "Path"
+msgstr "Ścieżka"
+
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
+msgid "Read-only"
+msgstr "Tylko do odczytu"
+
+msgid "Share home-directories"
+msgstr "Udostępniaj katalogi domowe"
+
+msgid "Shared Directories"
+msgstr "Udostępniane katalogi"
+
+msgid ""
+"This is the content of the file '/etc/samba/smb.conf.template' from which "
+"your samba configuration will be generated. Values enclosed by pipe symbols "
+"('|') should not be changed. They get their values from the 'General "
+"Settings' tab."
+msgstr ""
+"To jest zawartość pliku '/etc/samba/smb.conf.template\", na podstawie "
+"którego zostanie wygenerowana konfiguracja samby. Wartości otoczone symbolem "
+"kreski pionowej ('|') nie powinny być zmieniane. Wartości ich zostaną "
+"pobrane z zakładki \"Ustawienia ogólne\"."
+
+msgid "Vfs objects"
+msgstr ""
+
+msgid "Workgroup"
+msgstr "Grupa robocza"
+
+#~ msgid "Mask for new directories"
+#~ msgstr "Maska dla nowych katalogów"
+
+#~ msgid "Mask for new files"
+#~ msgstr "Maska dla nowych plików"
diff --git a/applications/luci-app-samba4/po/pt-br/samba4.po b/applications/luci-app-samba4/po/pt-br/samba4.po
new file mode 100644
index 000000000..8f6dbb6c9
--- /dev/null
+++ b/applications/luci-app-samba4/po/pt-br/samba4.po
@@ -0,0 +1,119 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-10 03:41+0200\n"
+"PO-Revision-Date: 2013-04-06 22:54+0200\n"
+"Last-Translator: Luiz Angelo <luizluca@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: pt_BR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Pootle 2.0.6\n"
+
+msgid "Allow guests"
+msgstr "Permitir convidados"
+
+msgid "Allow system users to reach their home directories via network shares"
+msgstr ""
+"Usuários do sistema poderão acessar seu diretório home através dos "
+"compartilhamentos de rede"
+
+msgid "Allowed users"
+msgstr "Usuários permitidos"
+
+msgid "Browseable"
+msgstr ""
+
+msgid "Create mask"
+msgstr "Máscara de criação"
+
+msgid "Description"
+msgstr "Descrição"
+
+msgid "Directory mask"
+msgstr "Máscara do diretório"
+
+msgid "Disable Active Directory Domain Controller"
+msgstr ""
+
+msgid "Disable Netbios"
+msgstr ""
+
+msgid "Disable Winbind"
+msgstr ""
+
+msgid "Edit Template"
+msgstr "Editar modelo"
+
+msgid "Edit the template that is used for generating the samba configuration."
+msgstr "Edita o modelo que é usado para gerar a configuração do samba."
+
+msgid "General Settings"
+msgstr "Configurações Gerais"
+
+msgid "Guests only"
+msgstr ""
+
+msgid "Hostname"
+msgstr "Nome do equipamento"
+
+msgid "Inherit owner"
+msgstr ""
+
+msgid "Name"
+msgstr "Nome"
+
+msgid "Network Shares"
+msgstr "Compartilhamentos de Rede"
+
+msgid "Path"
+msgstr "Caminho"
+
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
+msgid "Read-only"
+msgstr "Somente leitura"
+
+msgid "Share home-directories"
+msgstr "Compartilhar diretórios home"
+
+msgid "Shared Directories"
+msgstr "Diretórios Compartilhados"
+
+msgid ""
+"This is the content of the file '/etc/samba/smb.conf.template' from which "
+"your samba configuration will be generated. Values enclosed by pipe symbols "
+"('|') should not be changed. They get their values from the 'General "
+"Settings' tab."
+msgstr ""
+"Este é o conteúdo do arquivo '/etc/samba/smb.conf.template' a partir do qual "
+"sua configuração do samba será gerada. Valores entre simbolos de pipe ('|') "
+"não devem ser alterados. Estes valores serão obtidos a partir da aba "
+"'Configurações Gerais'."
+
+msgid "Vfs objects"
+msgstr ""
+
+msgid "Workgroup"
+msgstr "Grupo de trabalho"
+
+#~ msgid "Mask for new directories"
+#~ msgstr "Máscara para novos diretórios"
+
+#~ msgid "Mask for new files"
+#~ msgstr "Máscara para novos arquivos"
+
+#~ msgid "Shared Directory"
+#~ msgstr "Diretório Compartilhado"
+
+#~ msgid "Physical Path"
+#~ msgstr "Caminho Físico"
+
+#~ msgid "optional"
+#~ msgstr "opcional"
diff --git a/applications/luci-app-samba4/po/pt/samba4.po b/applications/luci-app-samba4/po/pt/samba4.po
new file mode 100644
index 000000000..2f8f2dafc
--- /dev/null
+++ b/applications/luci-app-samba4/po/pt/samba4.po
@@ -0,0 +1,119 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-26 19:03+0200\n"
+"PO-Revision-Date: 2013-05-01 01:13+0200\n"
+"Last-Translator: pedromrgoncalves <pedromrgoncalves@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: pt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.0.6\n"
+
+msgid "Allow guests"
+msgstr "Permitir Convidados"
+
+msgid "Allow system users to reach their home directories via network shares"
+msgstr ""
+"Utilizadores do sistema poderão aceder ao seu directório home através das "
+"partilhas de rede."
+
+msgid "Allowed users"
+msgstr "Utilizadores Permitidos"
+
+msgid "Browseable"
+msgstr ""
+
+msgid "Create mask"
+msgstr "Criar Máscara"
+
+msgid "Description"
+msgstr "Descrição"
+
+msgid "Directory mask"
+msgstr "Máscara do Directório"
+
+msgid "Disable Active Directory Domain Controller"
+msgstr ""
+
+msgid "Disable Netbios"
+msgstr ""
+
+msgid "Disable Winbind"
+msgstr ""
+
+msgid "Edit Template"
+msgstr "Editar Template"
+
+msgid "Edit the template that is used for generating the samba configuration."
+msgstr "Editar a template que é utilizada para gerar a configuração samba"
+
+msgid "General Settings"
+msgstr "Definições Gerais"
+
+msgid "Guests only"
+msgstr ""
+
+msgid "Hostname"
+msgstr "Nome do host"
+
+msgid "Inherit owner"
+msgstr ""
+
+msgid "Name"
+msgstr "Nome"
+
+msgid "Network Shares"
+msgstr "Partilhas da Rede"
+
+msgid "Path"
+msgstr "Caminho"
+
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
+msgid "Read-only"
+msgstr "Apenas Leitura"
+
+msgid "Share home-directories"
+msgstr "Partilha de directórios home"
+
+msgid "Shared Directories"
+msgstr "Directórios Partilhados"
+
+msgid ""
+"This is the content of the file '/etc/samba/smb.conf.template' from which "
+"your samba configuration will be generated. Values enclosed by pipe symbols "
+"('|') should not be changed. They get their values from the 'General "
+"Settings' tab."
+msgstr ""
+"Isto é o conteúdo do ficheiro 'etc/samba/smb.conf.template' a partir do qual "
+"será gerado o ficheiro de configuração do samba. Os valores entre o símbolo "
+"| não devem ser alterados. Eles recebem os valores do separador 'Definições "
+"Gerais'."
+
+msgid "Vfs objects"
+msgstr ""
+
+msgid "Workgroup"
+msgstr "Grupo de trabalho"
+
+#~ msgid "Mask for new directories"
+#~ msgstr "Máscara para novos directórios"
+
+#~ msgid "Mask for new files"
+#~ msgstr "Máscara para novos ficheiros"
+
+#~ msgid "Shared Directory"
+#~ msgstr "Diretório Compartilhado"
+
+#~ msgid "Physical Path"
+#~ msgstr "Caminho Físico"
+
+#~ msgid "optional"
+#~ msgstr "opcional"
diff --git a/applications/luci-app-samba4/po/ro/samba4.po b/applications/luci-app-samba4/po/ro/samba4.po
new file mode 100644
index 000000000..d9f698971
--- /dev/null
+++ b/applications/luci-app-samba4/po/ro/samba4.po
@@ -0,0 +1,108 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2011-10-07 17:16+0200\n"
+"Last-Translator: Daniel <daniel.petre@pitesti.rcs-rds.ro>\n"
+"Language-Team: none\n"
+"Language: ro\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
+"20)) ? 1 : 2);;\n"
+"X-Generator: Pootle 2.0.4\n"
+
+msgid "Allow guests"
+msgstr "Permite oaspeti"
+
+msgid "Allow system users to reach their home directories via network shares"
+msgstr ""
+"Permite utilizatorii de sistem sa acceseze directoarele lor peste "
+"partajarile de retea"
+
+msgid "Allowed users"
+msgstr "Utilizatori acceptati"
+
+msgid "Browseable"
+msgstr ""
+
+msgid "Create mask"
+msgstr "Creaza masca"
+
+msgid "Description"
+msgstr "Descriere"
+
+msgid "Directory mask"
+msgstr "Masca director"
+
+msgid "Disable Active Directory Domain Controller"
+msgstr ""
+
+msgid "Disable Netbios"
+msgstr ""
+
+msgid "Disable Winbind"
+msgstr ""
+
+msgid "Edit Template"
+msgstr "Editeaza sablon"
+
+msgid "Edit the template that is used for generating the samba configuration."
+msgstr "Editeaza sablonul care e folosit pentru generarea configuratiei samba."
+
+msgid "General Settings"
+msgstr "Setari generale"
+
+msgid "Guests only"
+msgstr ""
+
+msgid "Hostname"
+msgstr "Numele de host"
+
+msgid "Inherit owner"
+msgstr ""
+
+msgid "Name"
+msgstr "Nume"
+
+msgid "Network Shares"
+msgstr "Partajari pe retea"
+
+msgid "Path"
+msgstr "Cale"
+
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
+msgid "Read-only"
+msgstr "Doar citire"
+
+msgid "Share home-directories"
+msgstr "Partajeaza directoarele proprii"
+
+msgid "Shared Directories"
+msgstr "Directoare partajate"
+
+msgid ""
+"This is the content of the file '/etc/samba/smb.conf.template' from which "
+"your samba configuration will be generated. Values enclosed by pipe symbols "
+"('|') should not be changed. They get their values from the 'General "
+"Settings' tab."
+msgstr ""
+"Acesta este continutul fisierului '/etc/samba/smb.conf.template' din care se "
+"genereaza configuratia samba. Valorile dintre liniuta verticala ('|') n-ar "
+"trebui schimbate, ele iau valorile direct din tab-ul de \"Setari generale\"."
+
+msgid "Vfs objects"
+msgstr ""
+
+msgid "Workgroup"
+msgstr "Workgroup"
+
+#~ msgid "Mask for new directories"
+#~ msgstr "Masca pentru directoarele noi"
+
+#~ msgid "Mask for new files"
+#~ msgstr "Masca pentru fisierele noi"
diff --git a/applications/luci-app-samba4/po/ru/samba4.po b/applications/luci-app-samba4/po/ru/samba4.po
new file mode 100644
index 000000000..f588424d9
--- /dev/null
+++ b/applications/luci-app-samba4/po/ru/samba4.po
@@ -0,0 +1,114 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: samba\n"
+"POT-Creation-Date: 2009-05-19 19:36+0200\n"
+"PO-Revision-Date: 2018-01-14 11:43+0300\n"
+"Language-Team: http://cyber-place.ru\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\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"
+"Language: ru\n"
+"Project-Info: Это технический перевод, не дословный. Главное-удобный русский "
+"интерфейс, все проверялось в графическом режиме, совместим с другими apps\n"
+
+msgid "Allow guests"
+msgstr "Разрешить гостевой вход"
+
+msgid "Allow system users to reach their home directories via network shares"
+msgstr ""
+"Разрешить пользователям получать доступ к их домашним папкам, через "
+"локальную сеть."
+
+msgid "Allowed users"
+msgstr "Разрешенные пользователи"
+
+msgid "Browseable"
+msgstr "Виден в списке доступных ресурсов"
+
+msgid "Create mask"
+msgstr "Создать маску"
+
+msgid "Description"
+msgstr "Описание"
+
+msgid "Directory mask"
+msgstr "Маска папок"
+
+msgid "Disable Active Directory Domain Controller"
+msgstr ""
+
+msgid "Disable Netbios"
+msgstr ""
+
+msgid "Disable Winbind"
+msgstr ""
+
+msgid "Edit Template"
+msgstr "Настройка config файла"
+
+msgid "Edit the template that is used for generating the samba configuration."
+msgstr "Настройка config<br />файла samba."
+
+msgid "General Settings"
+msgstr "Основные настройки"
+
+msgid "Guests only"
+msgstr ""
+
+msgid "Hostname"
+msgstr "Имя хоста"
+
+msgid "Inherit owner"
+msgstr ""
+
+msgid "Name"
+msgstr "Имя"
+
+msgid "Network Shares"
+msgstr "Сетевые ресурсы"
+
+msgid "Path"
+msgstr "Путь"
+
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+"Добавьте папки для совместного доступа. Каждая папка - соответствует разделу "
+"на подключенном устройстве."
+
+msgid "Read-only"
+msgstr "Только для чтения"
+
+msgid "Share home-directories"
+msgstr "Совместно использовать домашние папки"
+
+msgid "Shared Directories"
+msgstr "Совместно используемые папки"
+
+msgid ""
+"This is the content of the file '/etc/samba/smb.conf.template' from which "
+"your samba configuration will be generated. Values enclosed by pipe symbols "
+"('|') should not be changed. They get their values from the 'General "
+"Settings' tab."
+msgstr ""
+"Это содержимое файла '/etc/samba/smb.conf.template', из которого "
+"генерируется config файл - samba.<br />Значения, заключенные в символы "
+"('|'), не должны быть изменены.<br />Они будут автоматически заменены на "
+"значения со страницы 'Основные настройки'."
+
+msgid "Vfs objects"
+msgstr ""
+
+msgid "Workgroup"
+msgstr "Рабочая группа"
+
+#~ msgid "Mask for new directories"
+#~ msgstr "Маска для новых папок"
+
+#~ msgid "Mask for new files"
+#~ msgstr "Маска для новых файлов"
diff --git a/applications/luci-app-samba4/po/sk/samba4.po b/applications/luci-app-samba4/po/sk/samba4.po
new file mode 100644
index 000000000..53e8e214e
--- /dev/null
+++ b/applications/luci-app-samba4/po/sk/samba4.po
@@ -0,0 +1,93 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+msgid "Allow guests"
+msgstr ""
+
+msgid "Allow system users to reach their home directories via network shares"
+msgstr ""
+
+msgid "Allowed users"
+msgstr ""
+
+msgid "Browseable"
+msgstr ""
+
+msgid "Create mask"
+msgstr ""
+
+msgid "Description"
+msgstr ""
+
+msgid "Directory mask"
+msgstr ""
+
+msgid "Disable Active Directory Domain Controller"
+msgstr ""
+
+msgid "Disable Netbios"
+msgstr ""
+
+msgid "Disable Winbind"
+msgstr ""
+
+msgid "Edit Template"
+msgstr ""
+
+msgid "Edit the template that is used for generating the samba configuration."
+msgstr ""
+
+msgid "General Settings"
+msgstr ""
+
+msgid "Guests only"
+msgstr ""
+
+msgid "Hostname"
+msgstr ""
+
+msgid "Inherit owner"
+msgstr ""
+
+msgid "Name"
+msgstr ""
+
+msgid "Network Shares"
+msgstr ""
+
+msgid "Path"
+msgstr ""
+
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
+msgid "Read-only"
+msgstr ""
+
+msgid "Share home-directories"
+msgstr ""
+
+msgid "Shared Directories"
+msgstr ""
+
+msgid ""
+"This is the content of the file '/etc/samba/smb.conf.template' from which "
+"your samba configuration will be generated. Values enclosed by pipe symbols "
+"('|') should not be changed. They get their values from the 'General "
+"Settings' tab."
+msgstr ""
+
+msgid "Vfs objects"
+msgstr ""
+
+msgid "Workgroup"
+msgstr ""
diff --git a/applications/luci-app-samba4/po/sv/samba4.po b/applications/luci-app-samba4/po/sv/samba4.po
new file mode 100644
index 000000000..d9c0cc0df
--- /dev/null
+++ b/applications/luci-app-samba4/po/sv/samba4.po
@@ -0,0 +1,101 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: sv\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "Allow guests"
+msgstr "Tillåt gäster"
+
+msgid "Allow system users to reach their home directories via network shares"
+msgstr "Tillåt systemanvändare att nå deras hem-mappar via nätverksdelningar"
+
+msgid "Allowed users"
+msgstr "Tillåtna användare"
+
+msgid "Browseable"
+msgstr ""
+
+msgid "Create mask"
+msgstr "Skapa mask"
+
+msgid "Description"
+msgstr "Beskrivning"
+
+msgid "Directory mask"
+msgstr "Mask för mapp"
+
+msgid "Disable Active Directory Domain Controller"
+msgstr ""
+
+msgid "Disable Netbios"
+msgstr ""
+
+msgid "Disable Winbind"
+msgstr ""
+
+msgid "Edit Template"
+msgstr "Redigera mall"
+
+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."
+
+msgid "General Settings"
+msgstr "Generella inställningar"
+
+msgid "Guests only"
+msgstr ""
+
+msgid "Hostname"
+msgstr "Värdnamn"
+
+msgid "Inherit owner"
+msgstr ""
+
+msgid "Name"
+msgstr "Namn"
+
+msgid "Network Shares"
+msgstr "Nätverksdelningar"
+
+msgid "Path"
+msgstr "Genväg"
+
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
+msgid "Read-only"
+msgstr "Endast läsbar"
+
+msgid "Share home-directories"
+msgstr "Dela hem-mappar"
+
+msgid "Shared Directories"
+msgstr "Delade mappar"
+
+msgid ""
+"This is the content of the file '/etc/samba/smb.conf.template' from which "
+"your samba configuration will be generated. Values enclosed by pipe symbols "
+"('|') should not be changed. They get their values from the 'General "
+"Settings' tab."
+msgstr ""
+
+msgid "Vfs objects"
+msgstr ""
+
+msgid "Workgroup"
+msgstr "Arbetsgrupp"
+
+#~ msgid "Mask for new directories"
+#~ msgstr "Mask för nya mappar"
+
+#~ msgid "Mask for new files"
+#~ msgstr "Mask för nya filer"
diff --git a/applications/luci-app-samba4/po/templates/samba4.pot b/applications/luci-app-samba4/po/templates/samba4.pot
new file mode 100644
index 000000000..3041807b1
--- /dev/null
+++ b/applications/luci-app-samba4/po/templates/samba4.pot
@@ -0,0 +1,86 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "Allow guests"
+msgstr ""
+
+msgid "Allow system users to reach their home directories via network shares"
+msgstr ""
+
+msgid "Allowed users"
+msgstr ""
+
+msgid "Browseable"
+msgstr ""
+
+msgid "Create mask"
+msgstr ""
+
+msgid "Description"
+msgstr ""
+
+msgid "Directory mask"
+msgstr ""
+
+msgid "Disable Active Directory Domain Controller"
+msgstr ""
+
+msgid "Disable Netbios"
+msgstr ""
+
+msgid "Disable Winbind"
+msgstr ""
+
+msgid "Edit Template"
+msgstr ""
+
+msgid "Edit the template that is used for generating the samba configuration."
+msgstr ""
+
+msgid "General Settings"
+msgstr ""
+
+msgid "Guests only"
+msgstr ""
+
+msgid "Hostname"
+msgstr ""
+
+msgid "Inherit owner"
+msgstr ""
+
+msgid "Name"
+msgstr ""
+
+msgid "Network Shares"
+msgstr ""
+
+msgid "Path"
+msgstr ""
+
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
+msgid "Read-only"
+msgstr ""
+
+msgid "Share home-directories"
+msgstr ""
+
+msgid "Shared Directories"
+msgstr ""
+
+msgid ""
+"This is the content of the file '/etc/samba/smb.conf.template' from which "
+"your samba configuration will be generated. Values enclosed by pipe symbols "
+"('|') should not be changed. They get their values from the 'General "
+"Settings' tab."
+msgstr ""
+
+msgid "Vfs objects"
+msgstr ""
+
+msgid "Workgroup"
+msgstr ""
diff --git a/applications/luci-app-samba4/po/tr/samba4.po b/applications/luci-app-samba4/po/tr/samba4.po
new file mode 100644
index 000000000..1c233f1ec
--- /dev/null
+++ b/applications/luci-app-samba4/po/tr/samba4.po
@@ -0,0 +1,93 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+msgid "Allow guests"
+msgstr ""
+
+msgid "Allow system users to reach their home directories via network shares"
+msgstr ""
+
+msgid "Allowed users"
+msgstr ""
+
+msgid "Browseable"
+msgstr ""
+
+msgid "Create mask"
+msgstr ""
+
+msgid "Description"
+msgstr ""
+
+msgid "Directory mask"
+msgstr ""
+
+msgid "Disable Active Directory Domain Controller"
+msgstr ""
+
+msgid "Disable Netbios"
+msgstr ""
+
+msgid "Disable Winbind"
+msgstr ""
+
+msgid "Edit Template"
+msgstr ""
+
+msgid "Edit the template that is used for generating the samba configuration."
+msgstr ""
+
+msgid "General Settings"
+msgstr ""
+
+msgid "Guests only"
+msgstr ""
+
+msgid "Hostname"
+msgstr ""
+
+msgid "Inherit owner"
+msgstr ""
+
+msgid "Name"
+msgstr ""
+
+msgid "Network Shares"
+msgstr ""
+
+msgid "Path"
+msgstr ""
+
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
+msgid "Read-only"
+msgstr ""
+
+msgid "Share home-directories"
+msgstr ""
+
+msgid "Shared Directories"
+msgstr ""
+
+msgid ""
+"This is the content of the file '/etc/samba/smb.conf.template' from which "
+"your samba configuration will be generated. Values enclosed by pipe symbols "
+"('|') should not be changed. They get their values from the 'General "
+"Settings' tab."
+msgstr ""
+
+msgid "Vfs objects"
+msgstr ""
+
+msgid "Workgroup"
+msgstr ""
diff --git a/applications/luci-app-samba4/po/uk/samba4.po b/applications/luci-app-samba4/po/uk/samba4.po
new file mode 100644
index 000000000..e228baec2
--- /dev/null
+++ b/applications/luci-app-samba4/po/uk/samba4.po
@@ -0,0 +1,110 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2012-03-18 20:35+0200\n"
+"Last-Translator: YuriPet <yuripet@gmail.com>\n"
+"Language-Team: none\n"
+"Language: uk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Pootle 2.0.4\n"
+
+msgid "Allow guests"
+msgstr "Дозволити гостьовий вхід"
+
+msgid "Allow system users to reach their home directories via network shares"
+msgstr ""
+"Дозволити користувачам системи досягати своїх домашніх каталогів через "
+"загальні мережеві ресурси"
+
+msgid "Allowed users"
+msgstr "Дозволені користувачі"
+
+msgid "Browseable"
+msgstr ""
+
+msgid "Create mask"
+msgstr "Створити маску"
+
+msgid "Description"
+msgstr "Опис"
+
+msgid "Directory mask"
+msgstr "Маска каталогу"
+
+msgid "Disable Active Directory Domain Controller"
+msgstr ""
+
+msgid "Disable Netbios"
+msgstr ""
+
+msgid "Disable Winbind"
+msgstr ""
+
+msgid "Edit Template"
+msgstr "Редагувати шаблон"
+
+msgid "Edit the template that is used for generating the samba configuration."
+msgstr ""
+"Редагувати шаблон, який використовується для створення конфігурації samba."
+
+msgid "General Settings"
+msgstr "Загальні настройки"
+
+msgid "Guests only"
+msgstr ""
+
+msgid "Hostname"
+msgstr "Назва (ім'я) вузла"
+
+msgid "Inherit owner"
+msgstr ""
+
+msgid "Name"
+msgstr "Ім'я"
+
+msgid "Network Shares"
+msgstr "Загальні мережеві ресурси"
+
+msgid "Path"
+msgstr "Шлях"
+
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
+msgid "Read-only"
+msgstr "Тільки читання"
+
+msgid "Share home-directories"
+msgstr "Спільно використовувати домашні каталоги"
+
+msgid "Shared Directories"
+msgstr "Загальні каталоги"
+
+msgid ""
+"This is the content of the file '/etc/samba/smb.conf.template' from which "
+"your samba configuration will be generated. Values enclosed by pipe symbols "
+"('|') should not be changed. They get their values from the 'General "
+"Settings' tab."
+msgstr ""
+"Це вміст файлу '/etc/samba/smb.conf.template', з якого буде генеруватися "
+"ваша конфігурація samba. Значення, укладені в символи \"вертикальна риска"
+"\" (\"|\") не повинні змінюватися. Вони отримують свої значення з вкладки "
+"\"Загальні налаштування\"."
+
+msgid "Vfs objects"
+msgstr ""
+
+msgid "Workgroup"
+msgstr "Робоча група"
+
+#~ msgid "Mask for new directories"
+#~ msgstr "Маска для нових каталогів"
+
+#~ msgid "Mask for new files"
+#~ msgstr "Маска для нових файлів"
diff --git a/applications/luci-app-samba4/po/vi/samba4.po b/applications/luci-app-samba4/po/vi/samba4.po
new file mode 100644
index 000000000..b176471b0
--- /dev/null
+++ b/applications/luci-app-samba4/po/vi/samba4.po
@@ -0,0 +1,122 @@
+# samba.pot
+# generated from ./applications/luci-samba/luasrc/i18n/samba.en.lua
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-16 06:59+0200\n"
+"PO-Revision-Date: 2009-08-13 03:54+0200\n"
+"Last-Translator: Hong Phuc Dang <dhppat@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 1.1.0\n"
+
+#, fuzzy
+msgid "Allow guests"
+msgstr "Cho phép khách"
+
+#, fuzzy
+msgid "Allow system users to reach their home directories via network shares"
+msgstr ""
+"Những người sử dụng hệ thống có thể tiếp cận những thư mục tại nhà thông qua "
+"mạng lưới chia sẻ trực tuyến."
+
+#, fuzzy
+msgid "Allowed users"
+msgstr "Người sử dụng được cho phép"
+
+msgid "Browseable"
+msgstr ""
+
+#, fuzzy
+msgid "Create mask"
+msgstr "Tạo Mask"
+
+msgid "Description"
+msgstr "Mô tả"
+
+#, fuzzy
+msgid "Directory mask"
+msgstr "Thư mục Mask"
+
+msgid "Disable Active Directory Domain Controller"
+msgstr ""
+
+msgid "Disable Netbios"
+msgstr ""
+
+msgid "Disable Winbind"
+msgstr ""
+
+msgid "Edit Template"
+msgstr ""
+
+msgid "Edit the template that is used for generating the samba configuration."
+msgstr ""
+
+msgid "General Settings"
+msgstr ""
+
+msgid "Guests only"
+msgstr ""
+
+msgid "Hostname"
+msgstr "tên máy chủ"
+
+msgid "Inherit owner"
+msgstr ""
+
+msgid "Name"
+msgstr ""
+
+msgid "Network Shares"
+msgstr "Mạng chia sẻ"
+
+msgid "Path"
+msgstr ""
+
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
+#, fuzzy
+msgid "Read-only"
+msgstr "Chỉ đọc "
+
+msgid "Share home-directories"
+msgstr "Chia sẻ danh bạ chính"
+
+msgid "Shared Directories"
+msgstr "Thư mục chia sẻ"
+
+msgid ""
+"This is the content of the file '/etc/samba/smb.conf.template' from which "
+"your samba configuration will be generated. Values enclosed by pipe symbols "
+"('|') should not be changed. They get their values from the 'General "
+"Settings' tab."
+msgstr ""
+
+msgid "Vfs objects"
+msgstr ""
+
+msgid "Workgroup"
+msgstr "Nhóm làm việc "
+
+#~ msgid "Mask for new directories"
+#~ msgstr "Mask cho thư mục mới"
+
+#~ msgid "Mask for new files"
+#~ msgstr "Mask cho tập tin mới"
+
+#~ msgid "Shared Directory"
+#~ msgstr "Đã chia sẻ thư mục"
+
+#~ msgid "Physical Path"
+#~ msgstr "Đường dẫn vật lý"
+
+#~ msgid "optional"
+#~ msgstr "Tùy thích"
diff --git a/applications/luci-app-samba4/po/zh-cn/samba4.po b/applications/luci-app-samba4/po/zh-cn/samba4.po
new file mode 100644
index 000000000..3790355d9
--- /dev/null
+++ b/applications/luci-app-samba4/po/zh-cn/samba4.po
@@ -0,0 +1,112 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-10 03:40+0200\n"
+"PO-Revision-Date: 2017-10-29 15:36+0800\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team: <debian-l10n-chinese@lists.debian.org>\n"
+"Language: zh_CN\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Gtranslator 2.91.7\n"
+
+msgid "Allow guests"
+msgstr "允许匿名用户"
+
+msgid "Allow system users to reach their home directories via network shares"
+msgstr "允许系统用户通过网络共享访问他们的家目录"
+
+msgid "Allowed users"
+msgstr "允许用户"
+
+msgid "Browseable"
+msgstr "可浏览"
+
+msgid "Create mask"
+msgstr "创建权限掩码"
+
+msgid "Description"
+msgstr "描述"
+
+msgid "Directory mask"
+msgstr "目录权限掩码"
+
+msgid "Disable Active Directory Domain Controller"
+msgstr ""
+
+msgid "Disable Netbios"
+msgstr ""
+
+msgid "Disable Winbind"
+msgstr ""
+
+msgid "Edit Template"
+msgstr "编辑模板"
+
+msgid "Edit the template that is used for generating the samba configuration."
+msgstr "编辑用来生成 samba 设置的模板"
+
+msgid "General Settings"
+msgstr "基本设置"
+
+msgid "Guests only"
+msgstr ""
+
+msgid "Hostname"
+msgstr "主机名"
+
+msgid "Inherit owner"
+msgstr ""
+
+msgid "Name"
+msgstr "共享名"
+
+msgid "Network Shares"
+msgstr "网络共享"
+
+msgid "Path"
+msgstr "目录"
+
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr "请添加要共享的目录。每个目录指到已挂载设备上的文件夹。"
+
+msgid "Read-only"
+msgstr "只读"
+
+msgid "Share home-directories"
+msgstr "共享家目录"
+
+msgid "Shared Directories"
+msgstr "共享目录"
+
+msgid ""
+"This is the content of the file '/etc/samba/smb.conf.template' from which "
+"your samba configuration will be generated. Values enclosed by pipe symbols "
+"('|') should not be changed. They get their values from the 'General "
+"Settings' tab."
+msgstr ""
+"这是将从其上生成 samba 配置的文件“/etc/samba/smb.conf.template”的内容。由管道"
+"符(“|”)包围的值不应更改。它们将从“常规设置”标签中获取其值。"
+
+msgid "Vfs objects"
+msgstr ""
+
+msgid "Workgroup"
+msgstr "工作组"
+
+#~ msgid "Mask for new directories"
+#~ msgstr "新目录权限掩码"
+
+#~ msgid "Mask for new files"
+#~ msgstr "新文件权限掩码"
+
+#~ msgid "Physical Path"
+#~ msgstr "物理路径"
diff --git a/applications/luci-app-samba4/po/zh-tw/samba4.po b/applications/luci-app-samba4/po/zh-tw/samba4.po
new file mode 100644
index 000000000..a897f8957
--- /dev/null
+++ b/applications/luci-app-samba4/po/zh-tw/samba4.po
@@ -0,0 +1,112 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-10 03:40+0200\n"
+"PO-Revision-Date: 2017-10-29 15:36+0800\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team: <debian-l10n-chinese@lists.debian.org>\n"
+"Language: zh_TW\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Gtranslator 2.91.7\n"
+
+msgid "Allow guests"
+msgstr "允許匿名使用者"
+
+msgid "Allow system users to reach their home directories via network shares"
+msgstr "允許系統使用者通過網路共享訪問他們的家目錄"
+
+msgid "Allowed users"
+msgstr "允許使用者"
+
+msgid "Browseable"
+msgstr "可瀏覽"
+
+msgid "Create mask"
+msgstr "建立權限掩碼"
+
+msgid "Description"
+msgstr "描述"
+
+msgid "Directory mask"
+msgstr "目錄權限掩碼"
+
+msgid "Disable Active Directory Domain Controller"
+msgstr ""
+
+msgid "Disable Netbios"
+msgstr ""
+
+msgid "Disable Winbind"
+msgstr ""
+
+msgid "Edit Template"
+msgstr "編輯模板"
+
+msgid "Edit the template that is used for generating the samba configuration."
+msgstr "編輯用來生成 samba 設定的模板"
+
+msgid "General Settings"
+msgstr "基本設定"
+
+msgid "Guests only"
+msgstr ""
+
+msgid "Hostname"
+msgstr "主機名"
+
+msgid "Inherit owner"
+msgstr ""
+
+msgid "Name"
+msgstr "共享名"
+
+msgid "Network Shares"
+msgstr "網路共享"
+
+msgid "Path"
+msgstr "目錄"
+
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr "請新增要共享的目錄。每個目錄指到已掛載裝置上的資料夾。"
+
+msgid "Read-only"
+msgstr "只讀"
+
+msgid "Share home-directories"
+msgstr "共享家目錄"
+
+msgid "Shared Directories"
+msgstr "共享目錄"
+
+msgid ""
+"This is the content of the file '/etc/samba/smb.conf.template' from which "
+"your samba configuration will be generated. Values enclosed by pipe symbols "
+"('|') should not be changed. They get their values from the 'General "
+"Settings' tab."
+msgstr ""
+"這是將從其上生成 samba 配置的檔案“/etc/samba/smb.conf.template”的內容。由管道"
+"符(“|”)包圍的值不應更改。它們將從“常規設定”標籤中獲取其值。"
+
+msgid "Vfs objects"
+msgstr ""
+
+msgid "Workgroup"
+msgstr "工作組"
+
+#~ msgid "Mask for new directories"
+#~ msgstr "新目錄權限掩碼"
+
+#~ msgid "Mask for new files"
+#~ msgstr "新檔案權限掩碼"
+
+#~ msgid "Physical Path"
+#~ msgstr "物理路徑"
diff --git a/applications/luci-app-simple-adblock/Makefile b/applications/luci-app-simple-adblock/Makefile
index fa98f8e0f..2471078fc 100644
--- a/applications/luci-app-simple-adblock/Makefile
+++ b/applications/luci-app-simple-adblock/Makefile
@@ -10,7 +10,7 @@ LUCI_TITLE:=Simple Adblock Web UI
LUCI_DESCRIPTION:=Provides Web UI for simple-adblock service.
LUCI_DEPENDS:=+luci-mod-admin-full +simple-adblock
LUCI_PKGARCH:=all
-PKG_RELEASE:=14
+PKG_RELEASE:=16
include ../../luci.mk
diff --git a/applications/luci-app-simple-adblock/luasrc/controller/simpleadblock.lua b/applications/luci-app-simple-adblock/luasrc/controller/simpleadblock.lua
deleted file mode 100644
index 46125b309..000000000
--- a/applications/luci-app-simple-adblock/luasrc/controller/simpleadblock.lua
+++ /dev/null
@@ -1,7 +0,0 @@
-module("luci.controller.simpleadblock", package.seeall)
-function index()
- if not nixio.fs.access("/etc/config/simple-adblock") then
- return
- end
- entry({"admin", "services", "simpleadblock"}, cbi("simpleadblock"), _("Simple AdBlock"))
-end
diff --git a/applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua b/applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua
index aa62ff56c..4dbb21c6e 100644
--- a/applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua
+++ b/applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua
@@ -24,7 +24,7 @@ else
if enabledFlag ~= "1" or status:match("Stopped") then
en.title = translate("Service is disabled/stopped")
en.inputtitle = translate("Enable/Start")
- en.inputstyle = "apply"
+ en.inputstyle = "apply important"
if nixio.fs.access("/var/simple-adblock.cache") then
ds = h:option(DummyValue, "_dummy", translate("Service Status"))
ds.template = "simple-adblock/status"
@@ -33,7 +33,7 @@ else
else
en.title = translate("Service is enabled/started")
en.inputtitle = translate("Stop/Disable")
- en.inputstyle = "reset"
+ en.inputstyle = "reset important"
ds = h:option(DummyValue, "_dummy", translate("Service Status"))
ds.template = "simple-adblock/status"
ds.value = status
@@ -41,7 +41,7 @@ else
reload = h:option(Button, "__reload")
reload.title = translate("Service started with error")
reload.inputtitle = translate("Reload")
- reload.inputstyle = "apply"
+ reload.inputstyle = "apply important"
function reload.write()
luci.sys.exec("/etc/init.d/simple-adblock reload")
luci.http.redirect(luci.dispatcher.build_url("admin/services/" .. packageName))
diff --git a/applications/luci-app-simple-adblock/po/ja/simple-adblock.po b/applications/luci-app-simple-adblock/po/ja/simple-adblock.po
index 6c98eb6ce..21e34d5bc 100644
--- a/applications/luci-app-simple-adblock/po/ja/simple-adblock.po
+++ b/applications/luci-app-simple-adblock/po/ja/simple-adblock.po
@@ -12,6 +12,12 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"Language: ja\n"
+msgid "Advanced Configuration"
+msgstr ""
+
+msgid "Basic Configuration"
+msgstr ""
+
msgid "Blacklisted Domain URLs"
msgstr "ドメイン ブラックリストのURL"
@@ -21,9 +27,30 @@ msgstr "ブラックリスト ドメイン"
msgid "Blacklisted Hosts URLs"
msgstr "hosts ブラックリストのURL"
+msgid "Configuration"
+msgstr ""
+
msgid "Controls system log and console output verbosity"
msgstr "システム ログとコンソール出力の冗長性を設定します。"
+msgid "Delay (in seconds) for on-boot start"
+msgstr ""
+
+msgid "Disable Debugging"
+msgstr ""
+
+msgid "Download time-out (in seconds)"
+msgstr ""
+
+msgid "Enable Debugging"
+msgstr ""
+
+msgid "Enable/Start"
+msgstr ""
+
+msgid "Enables debug output to /tmp/simple-adblock.log"
+msgstr ""
+
msgid "Force Router DNS"
msgstr "ルーターDNSの強制"
@@ -53,6 +80,24 @@ msgstr "出力詳細度の設定"
msgid "Pick the LED not already used in"
msgstr "右の設定で既に使用されていないLEDを選択します"
+msgid "Reload"
+msgstr ""
+
+msgid "Run service after set delay on boot"
+msgstr ""
+
+msgid "Service Status"
+msgstr ""
+
+msgid "Service is disabled/stopped"
+msgstr ""
+
+msgid "Service is enabled/started"
+msgstr ""
+
+msgid "Service started with error"
+msgstr ""
+
msgid "Simple AdBlock"
msgstr "Simple AdBlock"
@@ -65,6 +110,12 @@ msgstr "軽量出力"
msgid "Start Simple Adblock service"
msgstr ""
+msgid "Stop the download if it is stalled for set number of seconds"
+msgstr ""
+
+msgid "Stop/Disable"
+msgstr ""
+
msgid "Suppress output"
msgstr "出力の抑制"
@@ -83,6 +134,9 @@ msgstr "ブラックリストに登録するドメインが列挙された、hos
msgid "Verbose output"
msgstr "詳細出力"
+msgid "Whitelist and Blocklist Management"
+msgstr ""
+
msgid "Whitelisted Domain URLs"
msgstr "ドメイン ホワイトリストのURL"
diff --git a/applications/luci-app-simple-adblock/po/pt-br/simple-adblock.po b/applications/luci-app-simple-adblock/po/pt-br/simple-adblock.po
index d298e9490..7c55805fa 100644
--- a/applications/luci-app-simple-adblock/po/pt-br/simple-adblock.po
+++ b/applications/luci-app-simple-adblock/po/pt-br/simple-adblock.po
@@ -1,6 +1,12 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8\n"
+msgid "Advanced Configuration"
+msgstr ""
+
+msgid "Basic Configuration"
+msgstr ""
+
msgid "Blacklisted Domain URLs"
msgstr "Endereço com lista de Domínio para a Lista Negra"
@@ -10,11 +16,32 @@ msgstr "Domínios para a Lista Negra"
msgid "Blacklisted Hosts URLs"
msgstr "Endereços de Hosts para a Lista Negra"
+msgid "Configuration"
+msgstr ""
+
msgid "Controls system log and console output verbosity"
msgstr ""
"Controla o sistema de registro e o detalhamento das mensagens de saída do "
"console"
+msgid "Delay (in seconds) for on-boot start"
+msgstr ""
+
+msgid "Disable Debugging"
+msgstr ""
+
+msgid "Download time-out (in seconds)"
+msgstr ""
+
+msgid "Enable Debugging"
+msgstr ""
+
+msgid "Enable/Start"
+msgstr ""
+
+msgid "Enables debug output to /tmp/simple-adblock.log"
+msgstr ""
+
msgid "Force Router DNS"
msgstr "Forçar o DNS do Roteador"
@@ -46,6 +73,24 @@ msgstr "Definição do detalhamento do registro"
msgid "Pick the LED not already used in"
msgstr "Escolha um LED não usando em"
+msgid "Reload"
+msgstr ""
+
+msgid "Run service after set delay on boot"
+msgstr ""
+
+msgid "Service Status"
+msgstr ""
+
+msgid "Service is disabled/stopped"
+msgstr ""
+
+msgid "Service is enabled/started"
+msgstr ""
+
+msgid "Service started with error"
+msgstr ""
+
msgid "Simple AdBlock"
msgstr "Simple AdBlock"
@@ -58,6 +103,12 @@ msgstr "Pouco detalhado"
msgid "Start Simple Adblock service"
msgstr ""
+msgid "Stop the download if it is stalled for set number of seconds"
+msgstr ""
+
+msgid "Stop/Disable"
+msgstr ""
+
msgid "Suppress output"
msgstr "Suprimir"
@@ -76,6 +127,9 @@ msgstr "Endereço da lista dos hosts para a Lista Negra"
msgid "Verbose output"
msgstr "Detalhado"
+msgid "Whitelist and Blocklist Management"
+msgstr ""
+
msgid "Whitelisted Domain URLs"
msgstr "Endereço com lista de domínio para a Lista Branca"
diff --git a/applications/luci-app-simple-adblock/po/pt/simple-adblock.po b/applications/luci-app-simple-adblock/po/pt/simple-adblock.po
index d298e9490..7c55805fa 100644
--- a/applications/luci-app-simple-adblock/po/pt/simple-adblock.po
+++ b/applications/luci-app-simple-adblock/po/pt/simple-adblock.po
@@ -1,6 +1,12 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8\n"
+msgid "Advanced Configuration"
+msgstr ""
+
+msgid "Basic Configuration"
+msgstr ""
+
msgid "Blacklisted Domain URLs"
msgstr "Endereço com lista de Domínio para a Lista Negra"
@@ -10,11 +16,32 @@ msgstr "Domínios para a Lista Negra"
msgid "Blacklisted Hosts URLs"
msgstr "Endereços de Hosts para a Lista Negra"
+msgid "Configuration"
+msgstr ""
+
msgid "Controls system log and console output verbosity"
msgstr ""
"Controla o sistema de registro e o detalhamento das mensagens de saída do "
"console"
+msgid "Delay (in seconds) for on-boot start"
+msgstr ""
+
+msgid "Disable Debugging"
+msgstr ""
+
+msgid "Download time-out (in seconds)"
+msgstr ""
+
+msgid "Enable Debugging"
+msgstr ""
+
+msgid "Enable/Start"
+msgstr ""
+
+msgid "Enables debug output to /tmp/simple-adblock.log"
+msgstr ""
+
msgid "Force Router DNS"
msgstr "Forçar o DNS do Roteador"
@@ -46,6 +73,24 @@ msgstr "Definição do detalhamento do registro"
msgid "Pick the LED not already used in"
msgstr "Escolha um LED não usando em"
+msgid "Reload"
+msgstr ""
+
+msgid "Run service after set delay on boot"
+msgstr ""
+
+msgid "Service Status"
+msgstr ""
+
+msgid "Service is disabled/stopped"
+msgstr ""
+
+msgid "Service is enabled/started"
+msgstr ""
+
+msgid "Service started with error"
+msgstr ""
+
msgid "Simple AdBlock"
msgstr "Simple AdBlock"
@@ -58,6 +103,12 @@ msgstr "Pouco detalhado"
msgid "Start Simple Adblock service"
msgstr ""
+msgid "Stop the download if it is stalled for set number of seconds"
+msgstr ""
+
+msgid "Stop/Disable"
+msgstr ""
+
msgid "Suppress output"
msgstr "Suprimir"
@@ -76,6 +127,9 @@ msgstr "Endereço da lista dos hosts para a Lista Negra"
msgid "Verbose output"
msgstr "Detalhado"
+msgid "Whitelist and Blocklist Management"
+msgstr ""
+
msgid "Whitelisted Domain URLs"
msgstr "Endereço com lista de domínio para a Lista Branca"
diff --git a/applications/luci-app-simple-adblock/po/ru/simple-adblock.po b/applications/luci-app-simple-adblock/po/ru/simple-adblock.po
index 01e07ddd2..bb536b230 100644
--- a/applications/luci-app-simple-adblock/po/ru/simple-adblock.po
+++ b/applications/luci-app-simple-adblock/po/ru/simple-adblock.po
@@ -15,6 +15,12 @@ msgstr ""
"Project-Info: Это технический перевод, не дословный. Главное-удобный русский интерфейс, все проверялось в "
"графическом режиме, совместим с другими apps\n"
+msgid "Advanced Configuration"
+msgstr ""
+
+msgid "Basic Configuration"
+msgstr ""
+
msgid "Blacklisted Domain URLs"
msgstr "URL ссылки Черных<br />списков доменов"
@@ -24,9 +30,30 @@ msgstr "Черный список доменов"
msgid "Blacklisted Hosts URLs"
msgstr "URL ссылки Черных<br />списков хостов"
+msgid "Configuration"
+msgstr ""
+
msgid "Controls system log and console output verbosity"
msgstr "Детальная настройка записи событий в системный журнал."
+msgid "Delay (in seconds) for on-boot start"
+msgstr ""
+
+msgid "Disable Debugging"
+msgstr ""
+
+msgid "Download time-out (in seconds)"
+msgstr ""
+
+msgid "Enable Debugging"
+msgstr ""
+
+msgid "Enable/Start"
+msgstr ""
+
+msgid "Enables debug output to /tmp/simple-adblock.log"
+msgstr ""
+
msgid "Force Router DNS"
msgstr "Назначить DNS роутера"
@@ -57,6 +84,24 @@ msgstr "Настройка журнала"
msgid "Pick the LED not already used in"
msgstr "Выберите LED не используется на странице"
+msgid "Reload"
+msgstr ""
+
+msgid "Run service after set delay on boot"
+msgstr ""
+
+msgid "Service Status"
+msgstr ""
+
+msgid "Service is disabled/stopped"
+msgstr ""
+
+msgid "Service is enabled/started"
+msgstr ""
+
+msgid "Service started with error"
+msgstr ""
+
msgid "Simple AdBlock"
msgstr "Simple AdBlock"
@@ -69,6 +114,12 @@ msgstr "Частичная запись"
msgid "Start Simple Adblock service"
msgstr "Запуск сервиса Simple Adblock"
+msgid "Stop the download if it is stalled for set number of seconds"
+msgstr ""
+
+msgid "Stop/Disable"
+msgstr ""
+
msgid "Suppress output"
msgstr "Запретить запись"
@@ -87,6 +138,9 @@ msgstr "URL ссылки Черных списков хостов."
msgid "Verbose output"
msgstr "Подробная запись"
+msgid "Whitelist and Blocklist Management"
+msgstr ""
+
msgid "Whitelisted Domain URLs"
msgstr "URL ссылки Белых списков доменов"
diff --git a/applications/luci-app-simple-adblock/po/sv/simple-adblock.po b/applications/luci-app-simple-adblock/po/sv/simple-adblock.po
index 33408e183..5d9b9c4ad 100644
--- a/applications/luci-app-simple-adblock/po/sv/simple-adblock.po
+++ b/applications/luci-app-simple-adblock/po/sv/simple-adblock.po
@@ -1,6 +1,12 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8\n"
+msgid "Advanced Configuration"
+msgstr ""
+
+msgid "Basic Configuration"
+msgstr ""
+
msgid "Blacklisted Domain URLs"
msgstr "Svartlistade domänadresser"
@@ -10,9 +16,30 @@ msgstr "Svartlistade domäner"
msgid "Blacklisted Hosts URLs"
msgstr "Svartlistade värdadresser"
+msgid "Configuration"
+msgstr ""
+
msgid "Controls system log and console output verbosity"
msgstr "Kontrollerar systemloggar och detaljnivån för konsoll-utmatningen"
+msgid "Delay (in seconds) for on-boot start"
+msgstr ""
+
+msgid "Disable Debugging"
+msgstr ""
+
+msgid "Download time-out (in seconds)"
+msgstr ""
+
+msgid "Enable Debugging"
+msgstr ""
+
+msgid "Enable/Start"
+msgstr ""
+
+msgid "Enables debug output to /tmp/simple-adblock.log"
+msgstr ""
+
msgid "Force Router DNS"
msgstr ""
@@ -40,6 +67,24 @@ msgstr ""
msgid "Pick the LED not already used in"
msgstr ""
+msgid "Reload"
+msgstr ""
+
+msgid "Run service after set delay on boot"
+msgstr ""
+
+msgid "Service Status"
+msgstr ""
+
+msgid "Service is disabled/stopped"
+msgstr ""
+
+msgid "Service is enabled/started"
+msgstr ""
+
+msgid "Service started with error"
+msgstr ""
+
msgid "Simple AdBlock"
msgstr "Simple AdBlock"
@@ -52,6 +97,12 @@ msgstr "Viss utmatning"
msgid "Start Simple Adblock service"
msgstr ""
+msgid "Stop the download if it is stalled for set number of seconds"
+msgstr ""
+
+msgid "Stop/Disable"
+msgstr ""
+
msgid "Suppress output"
msgstr "Förträng utmatning"
@@ -70,6 +121,9 @@ msgstr ""
msgid "Verbose output"
msgstr "Utförlig utmatning"
+msgid "Whitelist and Blocklist Management"
+msgstr ""
+
msgid "Whitelisted Domain URLs"
msgstr "Vitlistade domänadresser"
diff --git a/applications/luci-app-simple-adblock/po/templates/simple-adblock.pot b/applications/luci-app-simple-adblock/po/templates/simple-adblock.pot
index 8414e4a2c..38baf58a4 100644
--- a/applications/luci-app-simple-adblock/po/templates/simple-adblock.pot
+++ b/applications/luci-app-simple-adblock/po/templates/simple-adblock.pot
@@ -1,6 +1,12 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
+msgid "Advanced Configuration"
+msgstr ""
+
+msgid "Basic Configuration"
+msgstr ""
+
msgid "Blacklisted Domain URLs"
msgstr ""
@@ -10,12 +16,30 @@ msgstr ""
msgid "Blacklisted Hosts URLs"
msgstr ""
+msgid "Configuration"
+msgstr ""
+
msgid "Controls system log and console output verbosity"
msgstr ""
+msgid "Delay (in seconds) for on-boot start"
+msgstr ""
+
+msgid "Disable Debugging"
+msgstr ""
+
+msgid "Download time-out (in seconds)"
+msgstr ""
+
+msgid "Enable Debugging"
+msgstr ""
+
msgid "Enable/Start"
msgstr ""
+msgid "Enables debug output to /tmp/simple-adblock.log"
+msgstr ""
+
msgid "Force Router DNS"
msgstr ""
@@ -43,12 +67,24 @@ msgstr ""
msgid "Pick the LED not already used in"
msgstr ""
+msgid "Reload"
+msgstr ""
+
+msgid "Run service after set delay on boot"
+msgstr ""
+
+msgid "Service Status"
+msgstr ""
+
msgid "Service is disabled/stopped"
msgstr ""
msgid "Service is enabled/started"
msgstr ""
+msgid "Service started with error"
+msgstr ""
+
msgid "Simple AdBlock"
msgstr ""
@@ -58,6 +94,9 @@ msgstr ""
msgid "Some output"
msgstr ""
+msgid "Stop the download if it is stalled for set number of seconds"
+msgstr ""
+
msgid "Stop/Disable"
msgstr ""
@@ -79,6 +118,9 @@ msgstr ""
msgid "Verbose output"
msgstr ""
+msgid "Whitelist and Blocklist Management"
+msgstr ""
+
msgid "Whitelisted Domain URLs"
msgstr ""
diff --git a/applications/luci-app-transmission/luasrc/model/cbi/transmission.lua b/applications/luci-app-transmission/luasrc/model/cbi/transmission.lua
index ec19f477b..fd4deba97 100644
--- a/applications/luci-app-transmission/luasrc/model/cbi/transmission.lua
+++ b/applications/luci-app-transmission/luasrc/model/cbi/transmission.lua
@@ -8,7 +8,7 @@ require("luci.model.ipkg")
local uci = require "luci.model.uci".cursor()
local trport = uci:get_first("transmission", "transmission", "rpc_port") or 9091
local running = (luci.sys.call("pidof transmission-daemon > /dev/null") == 0)
-local webinstalled = luci.model.ipkg.installed("transmission-web")
+local webinstalled = luci.model.ipkg.installed("transmission-web") or uci:get_first("transmission", "transmission", "web_home")
local button = ""
if running and webinstalled then
button = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=\"button\" value=\" " .. translate("Open Web Interface") .. " \" onclick=\"window.open('http://'+window.location.hostname+':" .. trport .. "')\"/>"
@@ -29,6 +29,7 @@ for _, p_user in luci.util.vspairs(luci.util.split(luci.sys.exec("cat /etc/passw
user:value(p_user)
end
cache_size_mb=s:option(Value, "cache_size_mb", translate("Cache size in MB"))
+web_home=s:option(Value, "web_home", translate("Custom WEB UI directory"))
bandwidth=m:section(TypedSection, "transmission", translate("Bandwidth settings"))
bandwidth.anonymous=true
diff --git a/applications/luci-app-unbound/luasrc/controller/unbound.lua b/applications/luci-app-unbound/luasrc/controller/unbound.lua
index 730ca724a..ea3d26b91 100644
--- a/applications/luci-app-unbound/luasrc/controller/unbound.lua
+++ b/applications/luci-app-unbound/luasrc/controller/unbound.lua
@@ -1,151 +1,200 @@
-- Copyright 2008 Steven Barth <steven@midlink.org>
-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
--- Copyright 2017 Eric Luehrsen <ericluehrsen@hotmail.com>
+-- Copyright 2017 Eric Luehrsen <ericluehrsen@gmail.com>
-- Licensed to the public under the Apache License 2.0.
module("luci.controller.unbound", package.seeall)
function index()
- local ucl = luci.model.uci.cursor()
- local valexp = ucl:get_first("unbound", "unbound", "extended_luci")
- local valman = ucl:get_first("unbound", "unbound", "manual_conf")
+ local fs = require "nixio.fs"
+ local ucl = luci.model.uci.cursor()
+ local valman = ucl:get_first("unbound", "unbound", "manual_conf")
- if not nixio.fs.access("/etc/config/unbound") then
- return
- end
+ if not fs.access("/etc/config/unbound") then
+ return
+ end
- if valexp == "1" then
-- Expanded View
- entry({"admin", "services", "unbound"}, firstchild(), _("Recursive DNS")).dependent = false
+ entry({"admin", "services", "unbound"},
+ firstchild(), _("Recursive DNS")).dependent = false
-- UCI Tab(s)
- entry({"admin", "services", "unbound", "configure"}, cbi("unbound/configure"), _("Settings"), 10)
+ entry({"admin", "services", "unbound", "configure"},
+ cbi("unbound/configure"), _("Unbound"), 10)
+
+
+ if (valman == "0") then
+ entry({"admin", "services", "unbound", "zones"},
+ cbi("unbound/zones"), _("Zones"), 15)
+ end
+
-- Status Tab(s)
- entry({"admin", "services", "unbound", "status"}, firstchild(), _("Status"), 20)
- entry({"admin", "services", "unbound", "status", "syslog"}, call("QuerySysLog"), _("Log"), 50).leaf = true
+ entry({"admin", "services", "unbound", "status"},
+ firstchild(), _("Status"), 20)
+
+ entry({"admin", "services", "unbound", "status", "syslog"},
+ call("QuerySysLog"), _("Log"), 50).leaf = true
+
+
+ if fs.access("/usr/sbin/unbound-control") then
+ -- Require unbound-control to execute
+ entry({"admin", "services", "unbound", "status", "statistics"},
+ call("QueryStatistics"), _("Statistics"), 10).leaf = true
+ entry({"admin", "services", "unbound", "status", "localdata"},
+ call("QueryLocalData"), _("Local Data"), 20).leaf = true
- if nixio.fs.access("/usr/sbin/unbound-control") then
- -- Require unbound-control to execute
- entry({"admin", "services", "unbound", "status", "statistics"}, call("QueryStatistics"), _("Statistics"), 10).leaf = true
- entry({"admin", "services", "unbound", "status", "localdata"}, call("QueryLocalData"), _("Local Data"), 20).leaf = true
- entry({"admin", "services", "unbound", "status", "localzone"}, call("QueryLocalZone"), _("Local Zones"), 30).leaf = true
+ entry({"admin", "services", "unbound", "status", "localzone"},
+ call("QueryLocalZone"), _("Local Zones"), 30).leaf = true
else
- entry({"admin", "services", "unbound", "status", "statistics"}, call("ShowEmpty"), _("Statistics"), 10).leaf = true
+ entry({"admin", "services", "unbound", "status", "statistics"},
+ call("ShowEmpty"), _("Statistics"), 10).leaf = true
end
-- Raw File Tab(s)
- entry({"admin", "services", "unbound", "files"}, firstchild(), _("Files"), 30)
+ entry({"admin", "services", "unbound", "files"},
+ firstchild(), _("Files"), 30)
- if valman ~= "1" then
- entry({"admin", "services", "unbound", "files", "base"}, call("ShowUnboundConf"), _("UCI: Unbound"), 10).leaf = true
+ if (valman == "0") then
+ entry({"admin", "services", "unbound", "files", "uci"},
+ form("unbound/uciedit"), _("Edit: UCI"), 5).leaf = true
+
+ entry({"admin", "services", "unbound", "files", "base"},
+ call("ShowUnboundConf"), _("Show: Unbound"), 10).leaf = true
+
else
- entry({"admin", "services", "unbound", "files", "base"}, form("unbound/manual"), _("Edit: Unbound"), 10).leaf = true
+ entry({"admin", "services", "unbound", "files", "base"},
+ form("unbound/manual"), _("Edit: Unbound"), 10).leaf = true
end
- entry({"admin", "services", "unbound", "files", "server"}, form("unbound/server"), _("Edit: Server"), 20).leaf = true
- entry({"admin", "services", "unbound", "files", "extended"}, form("unbound/extended"), _("Edit: Extended"), 30).leaf = true
+ entry({"admin", "services", "unbound", "files", "server"},
+ form("unbound/server"), _("Edit: Server"), 20).leaf = true
+ entry({"admin", "services", "unbound", "files", "extended"},
+ form("unbound/extended"), _("Edit: Extended"), 30).leaf = true
- if nixio.fs.access("/var/lib/unbound/unbound_dhcp.conf") then
- entry({"admin", "services", "unbound", "files", "dhcp"}, call("ShowDHCPConf"), _("Include: DHCP"), 40).leaf = true
+
+ if fs.access("/var/lib/unbound/dhcp.conf") then
+ entry({"admin", "services", "unbound", "files", "dhcp"},
+ call("ShowDHCPConf"), _("Show: DHCP"), 40).leaf = true
end
- if nixio.fs.access("/var/lib/unbound/adb_list.overall") then
- entry({"admin", "services", "unbound", "files", "adblock"}, call("ShowAdblock"), _("Include: Adblock"), 50).leaf = true
+ if fs.access("/var/lib/unbound/adb_list.overall") then
+ entry({"admin", "services", "unbound", "files", "adblock"},
+ call("ShowAdblock"), _("Show: Adblock"), 50).leaf = true
end
-
- else
- -- Simple View to UCI only
- entry({"admin", "services", "unbound"}, cbi("unbound/configure"), _("Recursive DNS")).dependent = false
- end
end
function ShowEmpty()
- local lclhead = "Unbound Control"
- local lcldesc = luci.i18n.translate("This could display more statistics with the unbound-control package.")
- luci.template.render("unbound/show-empty", {heading = lclhead, description = lcldesc})
+ local lclhead = "Unbound Control"
+ local lcldesc = luci.i18n.translate(
+ "This could display more statistics with the unbound-control package.")
+
+ luci.template.render("unbound/show-empty",
+ {heading = lclhead, description = lcldesc})
end
function QuerySysLog()
- local lclhead = "System Log"
- local lcldata = luci.util.exec("logread | grep -i unbound")
- local lcldesc = luci.i18n.translate("This shows syslog filtered for events involving Unbound.")
- luci.template.render("unbound/show-textbox", {heading = lclhead, description = lcldesc, content = lcldata})
+ local lcldata = luci.util.exec("logread | grep -i unbound")
+ local lcldesc = luci.i18n.translate(
+ "This shows syslog filtered for events involving Unbound.")
+
+ luci.template.render("unbound/show-textbox",
+ {heading = "", description = lcldesc, content = lcldata})
end
function QueryStatistics()
- local lclhead = "Unbound Control Stats"
- local lcldata = luci.util.exec("unbound-control -c /var/lib/unbound/unbound.conf stats_noreset")
- local lcldesc = luci.i18n.translate("This shows some performance statistics tracked by Unbound.")
- luci.template.render("unbound/show-textbox", {heading = lclhead, description = lcldesc, content = lcldata})
+ local lcldata = luci.util.exec(
+ "unbound-control -c /var/lib/unbound/unbound.conf stats_noreset")
+
+ local lcldesc = luci.i18n.translate(
+ "This shows Unbound self reported performance statistics.")
+
+ luci.template.render("unbound/show-textbox",
+ {heading = "", description = lcldesc, content = lcldata})
end
function QueryLocalData()
- local lclhead = "Unbound Control Local Data"
- local lcldata = luci.util.exec("unbound-control -c /var/lib/unbound/unbound.conf list_local_data")
- local lcldesc = luci.i18n.translate("This shows local host records that shortcut recursion.")
- luci.template.render("unbound/show-textbox", {heading = lclhead, description = lcldesc, content = lcldata})
+ local lcldata = luci.util.exec(
+ "unbound-control -c /var/lib/unbound/unbound.conf list_local_data")
+
+ local lcldesc = luci.i18n.translate(
+ "This shows Unbound 'local-data:' entries from default, .conf, or control.")
+
+ luci.template.render("unbound/show-textbox",
+ {heading = "", description = lcldesc, content = lcldata})
end
function QueryLocalZone()
- local lclhead = "Unbound Control Local Zones"
- local lcldata = luci.util.exec("unbound-control -c /var/lib/unbound/unbound.conf list_local_zones")
- local lcldesc = luci.i18n.translate("This shows local zone definitions that affect recursion routing or processing. ")
- luci.template.render("unbound/show-textbox", {heading = lclhead, description = lcldesc, content = lcldata})
+ local lcldata = luci.util.exec(
+ "unbound-control -c /var/lib/unbound/unbound.conf list_local_zones")
+
+ local lcldesc = luci.i18n.translate(
+ "This shows Unbound 'local-zone:' entries from default, .conf, or control.")
+
+ luci.template.render("unbound/show-textbox",
+ {heading = "", description = lcldesc, content = lcldata})
end
function ShowUnboundConf()
- local unboundfile = "/var/lib/unbound/unbound.conf"
- local lclhead = "Unbound Conf"
- local lcldata = nixio.fs.readfile(unboundfile)
- local lcldesc = luci.i18n.translate("This shows configuration generated by UCI:")
- lcldesc = lcldesc .. " (" .. unboundfile .. ")"
- luci.template.render("unbound/show-textbox", {heading = lclhead, description = lcldesc, content = lcldata})
+ local unboundfile = "/var/lib/unbound/unbound.conf"
+ local lcldata = nixio.fs.readfile(unboundfile)
+ local lcldesc = luci.i18n.translate(
+ "This shows '" .. unboundfile .. "' generated from UCI configuration.")
+
+ luci.template.render("unbound/show-textbox",
+ {heading = "", description = lcldesc, content = lcldata})
end
function ShowDHCPConf()
- local dhcpfile = "/var/lib/unbound/unbound_dhcp.conf"
- local lclhead = "DHCP Conf"
- local lcldata = nixio.fs.readfile(dhcpfile)
- local lcldesc = luci.i18n.translate("This shows LAN hosts added by DHCP hook scripts:")
- lcldesc = lcldesc .. " (" .. dhcpfile .. ")"
- luci.template.render("unbound/show-textbox", {heading = lclhead, description = lcldesc, content = lcldata})
+ local dhcpfile = "/var/lib/unbound/dhcp.conf"
+ local lcldata = nixio.fs.readfile(dhcpfile)
+ local lcldesc = luci.i18n.translate(
+ "This shows '" .. dhcpfile .. "' list of hosts from DHCP hook scripts.")
+
+ luci.template.render("unbound/show-textbox",
+ {heading = "", description = lcldesc, content = lcldata})
end
function ShowAdblock()
- local adblockfile = "/var/lib/unbound/adb_list.overall"
- local lclhead = "Adblock Conf"
- local lcldata, lcldesc
-
-
- if nixio.fs.stat(adblockfile).size > 262144 then
- lcldesc = luci.i18n.translate("Adblock domain list is too large for LuCI:")
- lcldesc = lcldesc .. " (" .. adblockfile .. ")"
- luci.template.render("unbound/show-empty", {heading = lclhead, description = lcldesc})
-
- else
- lcldata = nixio.fs.readfile(adblockfile)
- lcldesc = luci.i18n.translate("This shows blocked domains provided by Adblock scripts:")
- lcldesc = lcldesc .. " (" .. adblockfile .. ")"
- luci.template.render("unbound/show-textbox", {heading = lclhead, description = lcldesc, content = lcldata})
- end
+ local fs = require "nixio.fs"
+ local tp = require "luci.template"
+ local tr = require "luci.i18n"
+ local adblockfile = "/var/lib/unbound/adb_list.overall"
+ local lcldata, lcldesc
+
+
+ if fs.stat(adblockfile).size > 262144 then
+ lcldesc = tr.translate(
+ "Adblock domain list '" .. adblockfile .. "' is too large for LuCI.")
+
+ tp.render("unbound/show-empty",
+ {heading = "", description = lcldesc})
+
+ else
+ lcldata = fs.readfile(adblockfile)
+ lcldesc = tr.translate(
+ "This shows '" .. adblockfile .. "' list of adblock domains." )
+
+ tp.render("unbound/show-textbox",
+ {heading = "", description = lcldesc, content = lcldata})
+ end
end
diff --git a/applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua b/applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua
index 256bbb839..f665a2c9d 100644
--- a/applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua
+++ b/applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua
@@ -1,5 +1,5 @@
-- Copyright 2008 Steven Barth <steven@midlink.org>
--- Copyright 2016 Eric Luehrsen <ericluehrsen@hotmail.com>
+-- Copyright 2016 Eric Luehrsen <ericluehrsen@gmail.com>
-- Copyright 2016 Dan Luedtke <mail@danrl.com>
-- Licensed to the public under the Apache License 2.0.
@@ -9,307 +9,312 @@ local rlh, rpv, vld, nvd, eds, prt, tlm
local ctl, dlk, dom, dty, lfq, wfq, exa
local dp6, d64, pfx, qry, qrs
local pro, tgr, rsc, rsn, ag2, stt
-local rpn, din, dfw, ath
+local rpn, din, ath
+
+local ut = require "luci.util"
+local sy = require "luci.sys"
+local ht = require "luci.http"
+local ds = require "luci.dispatcher"
local ucl = luci.model.uci.cursor()
local valman = ucl:get_first("unbound", "unbound", "manual_conf")
m1 = Map("unbound")
+s1 = m1:section(TypedSection, "unbound", translate("DNS Resolver"),
+ translatef("Unbound <a href=\"%s\" target=\"_blank\">(NLnet Labs)</a>"
+ .. " is a validating, recursive, and caching DNS resolver.",
+ "https://www.unbound.net/"))
-s1 = m1:section(TypedSection, "unbound")
s1.addremove = false
s1.anonymous = true
--LuCI, Unbound, or Not
-s1:tab("basic", translate("Basic"),
- translatef("<h3>Unbound Basic Settings</h3>\n"
- .. "<a href=\"%s\" target=\"_blank\">Unbound (link)</a>"
- .. " is a validating, recursive, and caching DNS resolver. "
- .. "UCI documentation can be found on "
- .. "<a href=\"%s\" target=\"_blank\">github (link)</a>.",
- "https://www.unbound.net/",
- "https://github.com/openwrt/packages/blob/master/net/unbound/files/README.md"))
-
-
-if valman ~= "1" then
- -- Not in manual configuration mode; show UCI
- s1:tab("advanced", translate("Advanced"),
- translatef("<h3>Unbound Advanced Settings</h3>\n"
- .. "Domain manipulation, lookup protection, and workarounds for "
- .. "<a href=\"%s\" target=\"_blank\">Unbound </a>"
- .. " DNS resolver.", "https://www.unbound.net/"))
-
- s1:tab("DHCP", translate("DHCP"),
- translatef("<h3>Unbound DHCP Settings</h3>\n"
- .. "Link your DHCP server to "
- .. "<a href=\"%s\" target=\"_blank\">Unbound </a>"
- .. " DNS resolver.", "https://www.unbound.net/ "))
-
- s1:tab("resource", translate("Resource"),
- translatef("<h3>Unbound Resource Settings</h3>\n"
- .. "Memory and protocol setttings for "
- .. "<a href=\"%s\" target=\"_blank\">Unbound </a>"
- .. " DNS resolver.", "https://www.unbound.net/"))
-end
+s1:tab("basic", translate("Basic"))
-s1:tab("trigger", translate("Trigger"),
- translatef("<h3>Unbound Event Trigger Settings</h3>\n"
- .. "Start, reload, and save RFC5011 DNSKEY records for "
- .. "<a href=\"%s\" target=\"_blank\">Unbound </a>"
- .. " DNS resolver.", "https://www.unbound.net/"))
+if (valman == "0") then
+ -- Not in manual configuration mode; show UCI
+ s1:tab("advanced", translate("Advanced"))
+ s1:tab("DHCP", translate("DHCP"))
+ s1:tab("resource", translate("Resource"))
+end
--Basic Tab, unconditional pieces
ena = s1:taboption("basic", Flag, "enabled", translate("Enable Unbound:"),
- translate("Enable the initialization scripts for Unbound"))
+ translate("Enable the initialization scripts for Unbound"))
ena.rmempty = false
mcf = s1:taboption("basic", Flag, "manual_conf", translate("Manual Conf:"),
- translate("Skip UCI and use /etc/unbound/unbound.conf"))
+ translate("Skip UCI and use /etc/unbound/unbound.conf"))
mcf.rmempty = false
-lci = s1:taboption("basic", Flag, "extended_luci", translate("Extended Tabs:"),
- translate("See detailed tabs for statistics, debug, and manual configuration"))
-lci.rmempty = false
-
-
-if valman ~= "1" then
- -- Not in manual configuration mode; show UCI
- --Basic Tab
- lsv = s1:taboption("basic", Flag, "localservice", translate("Local Service:"),
- translate("Accept queries only from local subnets"))
- lsv.rmempty = false
-
- vld = s1:taboption("basic", Flag, "validator", translate("Enable DNSSEC:"),
- translate("Enable the DNSSEC validator module"))
- vld.rmempty = false
-
- nvd = s1:taboption("basic", Flag, "validator_ntp", translate("DNSSEC NTP Fix:"),
- translate("Break the loop where DNSSEC needs NTP and NTP needs DNS"))
- nvd.rmempty = false
- nvd:depends({ validator = true })
-
- d64 = s1:taboption("basic", Flag, "dns64", translate("Enable DNS64:"),
- translate("Enable the DNS64 module"))
- d64.rmempty = false
-
- pfx = s1:taboption("basic", Value, "dns64_prefix", translate("DNS64 Prefix:"),
- translate("Prefix for generated DNS64 addresses"))
- pfx.datatype = "ip6addr"
- pfx.placeholder = "64:ff9b::/96"
- pfx.optional = true
- pfx:depends({ dns64 = true })
-
- prt = s1:taboption("basic", Value, "listen_port", translate("Listening Port:"),
- translate("Choose Unbounds listening port"))
- prt.datatype = "port"
- prt.rmempty = false
-
- --Avanced Tab
- din = s1:taboption("advanced", DynamicList, "domain_insecure",
- translate("Domain Insecure:"),
- translate("List domains to bypass checks of DNSSEC"))
- din:depends({ validator = true })
-
- dfw = s1:taboption("advanced", DynamicList, "domain_forward",
- translate("Domain Forward:"),
- translate("List domains to simply forward to stub resolvers in /tmp/resolve.auto"))
-
- rlh = s1:taboption("advanced", Flag, "rebind_localhost", translate("Filter Localhost Rebind:"),
- translate("Protect against upstream response of 127.0.0.0/8"))
- rlh.rmempty = false
-
- rpv = s1:taboption("advanced", ListValue, "rebind_protection", translate("Filter Private Rebind:"),
- translate("Protect against upstream responses within local subnets"))
- rpv:value("0", translate("No Filter"))
- rpv:value("1", translate("Filter RFC1918/4193"))
- rpv:value("2", translate("Filter Entire Subnet"))
- rpv.rmempty = false
-
- rpn = s1:taboption("advanced", Value, "rebind_interface", translate("Rebind Network Filter:"),
- translate("Network subnets to filter from upstream responses"))
- rpn.template = "cbi/network_netlist"
- rpn.widget = "checkbox"
- rpn.rmempty = true
- rpn.cast = "string"
- rpn.nocreate = true
- rpn:depends({ rebind_protection = 2 })
- rpn:depends({ rebind_protection = 3 })
-
- --DHCP Tab
- dlk = s1:taboption("DHCP", ListValue, "dhcp_link", translate("DHCP Link:"),
- translate("Link to supported programs to load DHCP into DNS"))
- dlk:value("none", translate("No Link"))
- dlk:value("dnsmasq", "dnsmasq")
- dlk:value("odhcpd", "odhcpd")
- dlk.rmempty = false
-
- dp6 = s1:taboption("DHCP", Flag, "dhcp4_slaac6", translate("DHCPv4 to SLAAC:"),
- translate("Use DHCPv4 MAC to discover IP6 hosts SLAAC (EUI64)"))
- dp6.rmempty = false
- dp6:depends({ dhcp_link = "odhcpd" })
-
- dom = s1:taboption("DHCP", Value, "domain", translate("Local Domain:"),
- translate("Domain suffix for this router and DHCP clients"))
- dom.placeholder = "lan"
- dom:depends({ dhcp_link = "none" })
- dom:depends({ dhcp_link = "odhcpd" })
-
- dty = s1:taboption("DHCP", ListValue, "domain_type", translate("Local Domain Type:"),
- translate("How to treat queries of this local domain"))
- dty:value("deny", translate("Ignored"))
- dty:value("refuse", translate("Refused"))
- dty:value("static", translate("Only Local"))
- dty:value("transparent", translate("Also Forwarded"))
- dty:depends({ dhcp_link = "none" })
- dty:depends({ dhcp_link = "odhcpd" })
-
- lfq = s1:taboption("DHCP", ListValue, "add_local_fqdn", translate("LAN DNS:"),
- translate("How to enter the LAN or local network router in DNS"))
- lfq:value("0", translate("No Entry"))
- lfq:value("1", translate("Hostname, Primary Address"))
- lfq:value("2", translate("Hostname, All Addresses"))
- lfq:value("3", translate("Host FQDN, All Addresses"))
- lfq:value("4", translate("Interface FQDN, All Addresses"))
- lfq:depends({ dhcp_link = "none" })
- lfq:depends({ dhcp_link = "odhcpd" })
-
- wfq = s1:taboption("DHCP", ListValue, "add_wan_fqdn", translate("WAN DNS:"),
- translate("Override the WAN side router entry in DNS"))
- wfq:value("0", translate("Use Upstream"))
- wfq:value("1", translate("Hostname, Primary Address"))
- wfq:value("2", translate("Hostname, All Addresses"))
- wfq:value("3", translate("Host FQDN, All Addresses"))
- wfq:value("4", translate("Interface FQDN, All Addresses"))
- wfq:depends({ dhcp_link = "none" })
- wfq:depends({ dhcp_link = "odhcpd" })
-
- exa = s1:taboption("DHCP", ListValue, "add_extra_dns", translate("Extra DNS:"),
- translate("Use extra DNS entries found in /etc/config/dhcp"))
- exa:value("0", translate("Ignore"))
- exa:value("1", translate("Include Network/Hostnames"))
- exa:value("2", translate("Advanced MX/SRV RR"))
- exa:value("3", translate("Advanced CNAME RR"))
- exa:depends({ dhcp_link = "none" })
- exa:depends({ dhcp_link = "odhcpd" })
-
- --TODO: dnsmasq needs to not reference resolve-file and get off port 53.
-
- --Resource Tuning Tab
- ctl = s1:taboption("resource", ListValue, "unbound_control", translate("Unbound Control App:"),
- translate("Enable access for unbound-control"))
- ctl.rmempty = false
- ctl:value("0", translate("No Remote Control"))
- ctl:value("1", translate("Local Host, No Encryption"))
- ctl:value("2", translate("Local Host, Encrypted"))
- ctl:value("3", translate("Local Subnet, Encrypted"))
- ctl:value("4", translate("Local Subnet, Static Encryption"))
-
- pro = s1:taboption("resource", ListValue, "protocol", translate("Recursion Protocol:"),
- translate("Chose the protocol recursion queries leave on"))
- pro:value("default", translate("Default"))
- pro:value("ip4_only", translate("IP4 Only"))
- pro:value("ip6_only", translate("IP6 Only"))
- pro:value("ip6_prefer", translate("IP6 Preferred"))
- pro:value("mixed", translate("IP4 and IP6"))
- pro.rmempty = false
-
- rsc = s1:taboption("resource", ListValue, "resource", translate("Memory Resource:"),
- translate("Use menu System/Processes to observe any memory growth"))
- rsc:value("default", translate("Default"))
- rsc:value("tiny", translate("Tiny"))
- rsc:value("small", translate("Small"))
- rsc:value("medium", translate("Medium"))
- rsc:value("large", translate("Large"))
- rsc.rmempty = false
-
- rsn = s1:taboption("resource", ListValue, "recursion", translate("Recursion Strength:"),
- translate("Recursion activity affects memory growth and CPU load"))
- rsn:value("default", translate("Default"))
- rsn:value("passive", translate("Passive"))
- rsn:value("aggressive", translate("Aggressive"))
- rsn.rmempty = false
-
- qry = s1:taboption("resource", Flag, "query_minimize", translate("Query Minimize:"),
- translate("Break down query components for limited added privacy"))
- qry.rmempty = false
- qry:depends({ recursion = "passive" })
- qry:depends({ recursion = "aggressive" })
-
- qrs = s1:taboption("resource", Flag, "query_min_strict", translate("Strict Minimize:"),
- translate("Strict version of 'query minimize' but it can break DNS"))
- qrs.rmempty = false
- qrs:depends({ query_minimize = true })
-
- ath = s1:taboption("resource", Flag, "prefetch_root", translate("Prefetch Root:"),
- translate("Obtain complete root zone files and install in auth-zone: clause"))
- ath.rmempty = false
-
- eds = s1:taboption("resource", Value, "edns_size", translate("EDNS Size:"),
- translate("Limit extended DNS packet size"))
- eds.datatype = "and(uinteger,min(512),max(4096))"
- eds.rmempty = false
-
- tlm = s1:taboption("resource", Value, "ttl_min", translate("TTL Minimum:"),
- translate("Prevent excessively short cache periods"))
- tlm.datatype = "and(uinteger,min(0),max(600))"
- tlm.rmempty = false
-
- stt = s1:taboption("resource", Flag, "extended_stats", translate("Extended Statistics:"),
- translate("Extended statistics are printed from unbound-control"))
- stt.rmempty = false
-end
-
-
---Trigger Tab, always unconditional
-ag2 = s1:taboption("trigger", Value, "root_age", translate("Root DSKEY Age:"),
- translate("Limit days between RFC5011 copies to reduce flash writes"))
-ag2.datatype = "and(uinteger,min(1),max(99))"
-ag2:value("3", "3")
-ag2:value("9", "9 ("..translate("default")..")")
-ag2:value("12", "12")
-ag2:value("24", "24")
-ag2:value("99", "99 ("..translate("never")..")")
-tgr = s1:taboption("trigger", Value, "trigger_interface", translate("Trigger Networks:"),
- translate("Networks that may trigger Unbound to reload (avoid wan6)"))
-tgr.template = "cbi/network_netlist"
-tgr.widget = "checkbox"
-tgr.rmempty = true
-tgr.cast = "string"
-tgr.nocreate = true
+if (valman == "0") then
+ -- Not in manual configuration mode; show UCI
+ --Basic Tab
+ lsv = s1:taboption("basic", Flag, "localservice",
+ translate("Local Service:"),
+ translate("Accept queries only from local subnets"))
+ lsv.rmempty = false
+
+ vld = s1:taboption("basic", Flag, "validator",
+ translate("Enable DNSSEC:"),
+ translate("Enable the DNSSEC validator module"))
+ vld.rmempty = false
+
+ nvd = s1:taboption("basic", Flag, "validator_ntp",
+ translate("DNSSEC NTP Fix:"),
+ translate("Break the loop where DNSSEC needs NTP and NTP needs DNS"))
+ nvd.rmempty = false
+ nvd:depends({ validator = true })
+
+ prt = s1:taboption("basic", Value, "listen_port",
+ translate("Listening Port:"),
+ translate("Choose Unbounds listening port"))
+ prt.datatype = "port"
+ prt.rmempty = false
+
+ --Avanced Tab
+ rlh = s1:taboption("advanced", Flag, "rebind_localhost",
+ translate("Filter Localhost Rebind:"),
+ translate("Protect against upstream response of 127.0.0.0/8"))
+ rlh.rmempty = false
+
+ rpv = s1:taboption("advanced", ListValue, "rebind_protection",
+ translate("Filter Private Rebind:"),
+ translate("Protect against upstream responses within local subnets"))
+ rpv:value("0", translate("No Filter"))
+ rpv:value("1", translate("Filter RFC1918/4193"))
+ rpv:value("2", translate("Filter Entire Subnet"))
+ rpv.rmempty = false
+
+ d64 = s1:taboption("advanced", Flag, "dns64", translate("Enable DNS64:"),
+ translate("Enable the DNS64 module"))
+ d64.rmempty = false
+
+ pfx = s1:taboption("advanced", Value, "dns64_prefix",
+ translate("DNS64 Prefix:"),
+ translate("Prefix for generated DNS64 addresses"))
+ pfx.datatype = "ip6addr"
+ pfx.placeholder = "64:ff9b::/96"
+ pfx.optional = true
+ pfx:depends({ dns64 = true })
+
+ din = s1:taboption("advanced", DynamicList, "domain_insecure",
+ translate("Domain Insecure:"),
+ translate("List domains to bypass checks of DNSSEC"))
+ din:depends({ validator = true })
+
+ ag2 = s1:taboption("advanced", Value, "root_age",
+ translate("Root DSKEY Age:"),
+ translate("Limit days between RFC5011 copies to reduce flash writes"))
+ ag2.datatype = "and(uinteger,min(1),max(99))"
+ ag2:value("3", "3")
+ ag2:value("9", "9 ("..translate("default")..")")
+ ag2:value("12", "12")
+ ag2:value("24", "24")
+ ag2:value("99", "99 ("..translate("never")..")")
+
+ tgr = s1:taboption("advanced", Value, "trigger_interface",
+ translate("Trigger Networks:"),
+ translate("Networks that may trigger Unbound to reload (avoid wan6)"))
+ tgr.template = "cbi/network_netlist"
+ tgr.widget = "checkbox"
+ tgr.rmempty = true
+ tgr.cast = "string"
+ tgr.nocreate = true
+
+ --DHCP Tab
+ dlk = s1:taboption("DHCP", ListValue, "dhcp_link",
+ translate("DHCP Link:"),
+ translate("Link to supported programs to load DHCP into DNS"))
+ dlk:value("none", translate("No Link"))
+ dlk:value("dnsmasq", "dnsmasq")
+ dlk:value("odhcpd", "odhcpd")
+ dlk.rmempty = false
+
+ dp6 = s1:taboption("DHCP", Flag, "dhcp4_slaac6",
+ translate("DHCPv4 to SLAAC:"),
+ translate("Use DHCPv4 MAC to discover IP6 hosts SLAAC (EUI64)"))
+ dp6.rmempty = false
+ dp6:depends({ dhcp_link = "odhcpd" })
+
+ dom = s1:taboption("DHCP", Value, "domain",
+ translate("Local Domain:"),
+ translate("Domain suffix for this router and DHCP clients"))
+ dom.placeholder = "lan"
+ dom:depends({ dhcp_link = "none" })
+ dom:depends({ dhcp_link = "odhcpd" })
+
+ dty = s1:taboption("DHCP", ListValue, "domain_type",
+ translate("Local Domain Type:"),
+ translate("How to treat queries of this local domain"))
+ dty:value("deny", translate("Denied (nxdomain)"))
+ dty:value("refuse", translate("Refused"))
+ dty:value("static", translate("Static (local only)"))
+ dty:value("transparent", translate("Transparent (local/global)"))
+ dty:depends({ dhcp_link = "none" })
+ dty:depends({ dhcp_link = "odhcpd" })
+
+ lfq = s1:taboption("DHCP", ListValue, "add_local_fqdn",
+ translate("LAN DNS:"),
+ translate("How to enter the LAN or local network router in DNS"))
+ lfq:value("0", translate("No Entry"))
+ lfq:value("1", translate("Hostname, Primary Address"))
+ lfq:value("2", translate("Hostname, All Addresses"))
+ lfq:value("3", translate("Host FQDN, All Addresses"))
+ lfq:value("4", translate("Interface FQDN, All Addresses"))
+ lfq:depends({ dhcp_link = "none" })
+ lfq:depends({ dhcp_link = "odhcpd" })
+
+ wfq = s1:taboption("DHCP", ListValue, "add_wan_fqdn",
+ translate("WAN DNS:"),
+ translate("Override the WAN side router entry in DNS"))
+ wfq:value("0", translate("Use Upstream"))
+ wfq:value("1", translate("Hostname, Primary Address"))
+ wfq:value("2", translate("Hostname, All Addresses"))
+ wfq:value("3", translate("Host FQDN, All Addresses"))
+ wfq:value("4", translate("Interface FQDN, All Addresses"))
+ wfq:depends({ dhcp_link = "none" })
+ wfq:depends({ dhcp_link = "odhcpd" })
+
+ exa = s1:taboption("DHCP", ListValue, "add_extra_dns",
+ translate("Extra DNS:"),
+ translate("Use extra DNS entries found in /etc/config/dhcp"))
+ exa:value("0", translate("Ignore"))
+ exa:value("1", translate("Host Records"))
+ exa:value("2", translate("Host/MX/SRV RR"))
+ exa:value("3", translate("Host/MX/SRV/CNAME RR"))
+ exa:depends({ dhcp_link = "none" })
+ exa:depends({ dhcp_link = "odhcpd" })
+
+ --TODO: dnsmasq needs to not reference resolve-file and get off port 53.
+
+ --Resource Tuning Tab
+ ctl = s1:taboption("resource", ListValue, "unbound_control",
+ translate("Unbound Control App:"),
+ translate("Enable access for unbound-control"))
+ ctl.rmempty = false
+ ctl:value("0", translate("No Remote Control"))
+ ctl:value("1", translate("Local Host, No Encryption"))
+ ctl:value("2", translate("Local Host, Encrypted"))
+ ctl:value("3", translate("Local Subnet, Encrypted"))
+ ctl:value("4", translate("Local Subnet, Static Encryption"))
+
+ pro = s1:taboption("resource", ListValue, "protocol",
+ translate("Recursion Protocol:"),
+ translate("Chose the protocol recursion queries leave on"))
+ pro:value("default", translate("Default"))
+ pro:value("ip4_only", translate("IP4 Only"))
+ pro:value("ip6_only", translate("IP6 Only"))
+ pro:value("ip6_prefer", translate("IP6 Preferred"))
+ pro:value("mixed", translate("IP4 and IP6"))
+ pro.rmempty = false
+
+ rsc = s1:taboption("resource", ListValue, "resource",
+ translate("Memory Resource:"),
+ translate("Use menu System/Processes to observe any memory growth"))
+ rsc:value("default", translate("Default"))
+ rsc:value("tiny", translate("Tiny"))
+ rsc:value("small", translate("Small"))
+ rsc:value("medium", translate("Medium"))
+ rsc:value("large", translate("Large"))
+ rsc.rmempty = false
+
+ rsn = s1:taboption("resource", ListValue, "recursion",
+ translate("Recursion Strength:"),
+ translate("Recursion activity affects memory growth and CPU load"))
+ rsn:value("default", translate("Default"))
+ rsn:value("passive", translate("Passive"))
+ rsn:value("aggressive", translate("Aggressive"))
+ rsn.rmempty = false
+
+ qry = s1:taboption("resource", Flag, "query_minimize",
+ translate("Query Minimize:"),
+ translate("Break down query components for limited added privacy"))
+ qry.rmempty = false
+ qry:depends({ recursion = "passive" })
+ qry:depends({ recursion = "aggressive" })
+
+ qrs = s1:taboption("resource", Flag, "query_min_strict",
+ translate("Strict Minimize:"),
+ translate("Strict version of 'query minimize' but it can break DNS"))
+ qrs.rmempty = false
+ qrs:depends({ query_minimize = true })
+
+ eds = s1:taboption("resource", Value, "edns_size",
+ translate("EDNS Size:"),
+ translate("Limit extended DNS packet size"))
+ eds.datatype = "and(uinteger,min(512),max(4096))"
+ eds.rmempty = false
+
+ tlm = s1:taboption("resource", Value, "ttl_min",
+ translate("TTL Minimum:"),
+ translate("Prevent excessively short cache periods"))
+ tlm.datatype = "and(uinteger,min(0),max(600))"
+ tlm.rmempty = false
+
+ stt = s1:taboption("resource", Flag, "extended_stats",
+ translate("Extended Statistics:"),
+ translate("Extended statistics are printed from unbound-control"))
+ stt.rmempty = false
+
+else
+ ag2 = s1:taboption("basic", Value, "root_age",
+ translate("Root DSKEY Age:"),
+ translate("Limit days between RFC5011 copies to reduce flash writes"))
+ ag2.datatype = "and(uinteger,min(1),max(99))"
+ ag2:value("3", "3")
+ ag2:value("9", "9 ("..translate("default")..")")
+ ag2:value("12", "12")
+ ag2:value("24", "24")
+ ag2:value("99", "99 ("..translate("never")..")")
+
+ tgr = s1:taboption("basic", Value, "trigger_interface",
+ translate("Trigger Networks:"),
+ translate("Networks that may trigger Unbound to reload (avoid wan6)"))
+ tgr.template = "cbi/network_netlist"
+ tgr.widget = "checkbox"
+ tgr.rmempty = true
+ tgr.cast = "string"
+ tgr.nocreate = true
+end
function ena.cfgvalue(self, section)
- return luci.sys.init.enabled("unbound") and self.enabled or self.disabled
+ return sy.init.enabled("unbound") and self.enabled or self.disabled
end
function ena.write(self, section, value)
- if value == "1" then
- luci.sys.init.enable("unbound")
- luci.sys.call("/etc/init.d/unbound start >/dev/null")
- else
- luci.sys.call("/etc/init.d/unbound stop >/dev/null")
- luci.sys.init.disable("unbound")
- end
-
- return Flag.write(self, section, value)
+ if (value == "1") then
+ sy.init.enable("unbound")
+ sy.call("/etc/init.d/unbound start >/dev/null 2>&1")
+
+ else
+ sy.call("/etc/init.d/unbound stop >/dev/null 2>&1")
+ sy.init.disable("unbound")
+ end
+
+
+ return Flag.write(self, section, value)
end
-function m1.on_apply(self)
- function ena.validate(self, value)
- if value ~= "0" then
- luci.sys.call("/etc/init.d/unbound restart >/dev/null 2>&1")
+function m1.on_commit(self)
+ if sy.init.enabled("unbound") then
+ -- Restart Unbound with configuration
+ sy.call("/etc/init.d/unbound restart >/dev/null 2>&1")
+
else
- luci.sys.call("/etc/init.d/unbound stop >/dev/null 2>&1")
+ sy.call("/etc/init.d/unbound stop >/dev/null 2>&1")
end
- end
+end
- -- Restart Unbound with configuration and reload the page (some options hide)
- luci.http.redirect(luci.dispatcher.build_url("admin", "services", "unbound"))
+function m1.on_apply(self)
+ -- reload the page because some options hide
+ ht.redirect(ds.build_url("admin", "services", "unbound", "configure"))
end
diff --git a/applications/luci-app-unbound/luasrc/model/cbi/unbound/extended.lua b/applications/luci-app-unbound/luasrc/model/cbi/unbound/extended.lua
index 67d2ec6c6..6c5e8c23e 100644
--- a/applications/luci-app-unbound/luasrc/model/cbi/unbound/extended.lua
+++ b/applications/luci-app-unbound/luasrc/model/cbi/unbound/extended.lua
@@ -1,28 +1,31 @@
--- Copyright 2016 Eric Luehrsen <ericluehrsen@hotmail.com>
+-- Copyright 2016 Eric Luehrsen <ericluehrsen@gmail.com>
-- Licensed to the public under the Apache License 2.0.
local m4, s4, frm
local filename = "/etc/unbound/unbound_ext.conf"
-local description = translatef("Here you may edit 'forward:' and 'remote-control:' in an extended 'include:'")
-description = description .. " (" .. filename .. ")"
+local fs = require "nixio.fs"
+local ut = require "luci.util"
m4 = SimpleForm("editing", nil)
m4:append(Template("unbound/css-editing"))
m4.submit = translate("Save")
m4.reset = false
-s4 = m4:section(SimpleSection, "Unbound Extended Conf", description)
+s4 = m4:section(SimpleSection, "",
+ translatef(
+ "Edit clauses such as 'forward-zone:' for 'include: " .. filename .. "'"))
+
frm = s4:option(TextValue, "data")
frm.datatype = "string"
frm.rows = 20
function frm.cfgvalue()
- return nixio.fs.readfile(filename) or ""
+ return fs.readfile(filename) or ""
end
function frm.write(self, section, data)
- return nixio.fs.writefile(filename, luci.util.trim(data:gsub("\r\n", "\n")))
+ return fs.writefile(filename, ut.trim(data:gsub("\r\n", "\n")))
end
diff --git a/applications/luci-app-unbound/luasrc/model/cbi/unbound/manual.lua b/applications/luci-app-unbound/luasrc/model/cbi/unbound/manual.lua
index 5cfb9c32c..317c23fda 100644
--- a/applications/luci-app-unbound/luasrc/model/cbi/unbound/manual.lua
+++ b/applications/luci-app-unbound/luasrc/model/cbi/unbound/manual.lua
@@ -1,28 +1,31 @@
--- Copyright 2016 Eric Luehrsen <ericluehrsen@hotmail.com>
+-- Copyright 2016 Eric Luehrsen <ericluehrsen@gmail.com>
-- Licensed to the public under the Apache License 2.0.
local m2, s2, frm
local filename = "/etc/unbound/unbound.conf"
-local description = translatef("Here you may edit raw 'unbound.conf' when you don't use UCI:")
-description = description .. " (" .. filename .. ")"
+local fs = require "nixio.fs"
+local ut = require "luci.util"
m2 = SimpleForm("editing", nil)
m2:append(Template("unbound/css-editing"))
m2.submit = translate("Save")
m2.reset = false
-s2 = m2:section(SimpleSection, "Unbound Conf", description)
+s2 = m2:section(SimpleSection, "",
+ translatef(
+ "Edit '" .. filename .. "' when you do not use UCI."))
+
frm = s2:option(TextValue, "data")
frm.datatype = "string"
frm.rows = 20
function frm.cfgvalue()
- return nixio.fs.readfile(filename) or ""
+ return fs.readfile(filename) or ""
end
function frm.write(self, section, data)
- return nixio.fs.writefile(filename, luci.util.trim(data:gsub("\r\n", "\n")))
+ return fs.writefile(filename, ut.trim(data:gsub("\r\n", "\n")))
end
diff --git a/applications/luci-app-unbound/luasrc/model/cbi/unbound/server.lua b/applications/luci-app-unbound/luasrc/model/cbi/unbound/server.lua
index d0ac40784..5cef2a67b 100644
--- a/applications/luci-app-unbound/luasrc/model/cbi/unbound/server.lua
+++ b/applications/luci-app-unbound/luasrc/model/cbi/unbound/server.lua
@@ -1,28 +1,31 @@
--- Copyright 2016 Eric Luehrsen <ericluehrsen@hotmail.com>
+-- Copyright 2016 Eric Luehrsen <ericluehrsen@gmail.com>
-- Licensed to the public under the Apache License 2.0.
local m3, s3, frm
local filename = "/etc/unbound/unbound_srv.conf"
-local description = translatef("Here you may edit the 'server:' clause in an internal 'include:'")
-description = description .. " (" .. filename .. ")"
+local fs = require "nixio.fs"
+local ut = require "luci.util"
m3 = SimpleForm("editing", nil)
m3:append(Template("unbound/css-editing"))
m3.submit = translate("Save")
m3.reset = false
-s3 = m3:section(SimpleSection, "Unbound Server Conf", description)
+s3 = m3:section(SimpleSection, "",
+ translatef(
+ "Edit 'server:' clause options for 'include: " .. filename .. "'"))
+
frm = s3:option(TextValue, "data")
frm.datatype = "string"
frm.rows = 20
function frm.cfgvalue()
- return nixio.fs.readfile(filename) or ""
+ return fs.readfile(filename) or ""
end
function frm.write(self, section, data)
- return nixio.fs.writefile(filename, luci.util.trim(data:gsub("\r\n", "\n")))
+ return fs.writefile(filename, ut.trim(data:gsub("\r\n", "\n")))
end
diff --git a/applications/luci-app-unbound/luasrc/model/cbi/unbound/uciedit.lua b/applications/luci-app-unbound/luasrc/model/cbi/unbound/uciedit.lua
new file mode 100644
index 000000000..3aef18965
--- /dev/null
+++ b/applications/luci-app-unbound/luasrc/model/cbi/unbound/uciedit.lua
@@ -0,0 +1,37 @@
+-- Copyright 2016 Eric Luehrsen <ericluehrsen@gmail.com>
+-- Licensed to the public under the Apache License 2.0.
+
+local m6, s6, frm
+local filename = "/etc/config/unbound"
+local fs = require "nixio.fs"
+local ut = require "luci.util"
+
+m6 = SimpleForm("editing", nil)
+m6:append(Template("unbound/css-editing"))
+m6.submit = translate("Save")
+m6.reset = false
+s6 = m6:section(SimpleSection, "",
+ translatef("Edit '" .. filename .. "' "
+ .. "and help can be found in OpenWrt "
+ .. "<a href=\"%s\" target=\"_blank\">Guides</a> "
+ .. "and <a href=\"%s\" target=\"_blank\">Github</a>.",
+ "https://openwrt.org/docs/guide-user/services/dns/unbound",
+ "https://github.com/openwrt/packages/blob/master/net/unbound/files/README.md"))
+
+frm = s6:option(TextValue, "data")
+frm.datatype = "string"
+frm.rows = 20
+
+
+function frm.cfgvalue()
+ return fs.readfile(filename) or ""
+end
+
+
+function frm.write(self, section, data)
+ return fs.writefile(filename, ut.trim(data:gsub("\r\n", "\n")))
+end
+
+
+return m6
+
diff --git a/applications/luci-app-unbound/luasrc/model/cbi/unbound/zones.lua b/applications/luci-app-unbound/luasrc/model/cbi/unbound/zones.lua
new file mode 100644
index 000000000..bbc0e2335
--- /dev/null
+++ b/applications/luci-app-unbound/luasrc/model/cbi/unbound/zones.lua
@@ -0,0 +1,207 @@
+-- Copyright 2017 Eric Luehrsen <ericluehrsen@gmail.com>
+-- Licensed to the public under the Apache License 2.0.
+
+local m5, s5
+local ztype, zones, servers, fallback, enabled
+
+local fs = require "nixio.fs"
+local ut = require "luci.util"
+local sy = require "luci.sys"
+local resolvfile = "/tmp/resolv.conf.auto"
+
+m5 = Map("unbound")
+s5 = m5:section(TypedSection, "zone", "Zones",
+ translatef("This shows extended zones and more details can be "
+ .. "changed in Files tab and <a href=\"%s\">Edit:UCI</a> subtab.",
+ "/cgi-bin/luci/admin/services/unbound/files" ))
+
+s5.addremove = false
+s5.anonymous = true
+s5.sortable = true
+s5.template = "cbi/tblsection"
+
+ztype = s5:option(DummyValue, "DummyType", translate("Type"))
+ztype.rawhtml = true
+
+zones = s5:option(DummyValue, "DummyZones", translate("Zones"))
+zones.rawhtml = true
+
+servers = s5:option(DummyValue, "DummyServers", translate("Servers"))
+servers.rawhtml = true
+
+fallback = s5:option(Flag, "fallback", translate("Fallback"))
+fallback.rmempty = false
+
+enabled = s5:option(Flag, "enabled", translate("Enable"))
+enabled.rmempty = false
+
+
+function ztype.cfgvalue(self, s)
+ -- Format a meaninful tile for the Zone Type column
+ local itxt = self.map:get(s, "zone_type")
+ local itls = self.map:get(s, "tls_upstream")
+
+
+ if itxt and itxt:match("forward") then
+ if itls and (itls == "1") then
+ return translate("Forward TLS")
+
+ else
+ return translate("Forward")
+ end
+
+ elseif itxt and itxt:match("stub") then
+ return translate("Recurse")
+
+ elseif itxt and itxt:match("auth") then
+ return translate("AXFR")
+
+ else
+ return translate("Error")
+ end
+end
+
+
+function zones.cfgvalue(self, s)
+ -- Format a meaninful sentence for the Zones viewed column
+ local xtxt, otxt
+ local itxt = self.map:get(s, "zone_name")
+ local itype = self.map:get(s, "zone_type")
+
+
+ for xtxt in ut.imatch(itxt) do
+ if (xtxt == ".") then
+ -- zone_name lists
+ xtxt = translate("(root)")
+ end
+
+
+ if otxt and (#otxt > 0) then
+ otxt = otxt .. ", <var>%s</var>" % xtxt
+
+ else
+ otxt = "<var>%s</var>" % xtxt
+ end
+ end
+
+
+ if itype and itype:match("forward") then
+ -- from zone_type create a readable hint for the action
+ otxt = translate("accept upstream results for ") .. otxt
+
+ elseif itype and itype:match("stub") then
+ otxt = translate("select recursion for ") .. otxt
+
+ elseif itype and itype:match("auth") then
+ otxt = translate("prefetch zone files for ") .. otxt
+
+ else
+ otxt = translate("unknown action for ") .. otxt
+ end
+
+
+ if otxt and (#otxt > 0) then
+ return otxt
+
+ else
+ return "(empty)"
+ end
+end
+
+
+function servers.cfgvalue(self, s)
+ -- Format a meaninful sentence for the Servers (and URL) column
+ local xtxt, otxt, rtxt, found
+ local itxt = self.map:get(s, "server")
+ local iurl = self.map:get(s, "url_dir")
+ local itype = self.map:get(s, "zone_type")
+ local itls = self.map:get(s, "tls_upstream")
+ local iidx = self.map:get(s, "tls_index")
+ local irslv = self.map:get(s, "resolv_conf")
+
+
+ for xtxt in ut.imatch(itxt) do
+ if otxt and (#otxt > 0) then
+ -- bundle and make pretty the server list
+ otxt = otxt .. ", <var>%s</var>" % xtxt
+
+ else
+ otxt = "<var>%s</var>" % xtxt
+ end
+ end
+
+
+ if otxt and (#otxt > 0)
+ and itls and (itls == "1")
+ and iidx and (#iidx > 0) then
+ -- show TLS certificate name index if provided
+ otxt = translatef("use nameservers by <var>%s</var> at ", iidx) .. otxt
+
+ elseif otxt and (#otxt > 0) then
+ otxt = translate("use nameservers ") .. otxt
+ end
+
+
+ if iurl and (#iurl > 0) and itype and itype:match("auth") then
+ if otxt and (#otxt > 0) then
+ -- include optional URL filed for auth-zone: type
+ otxt = otxt .. translatef(", and try <var>%s</var>", iurl)
+
+ else
+ otxt = translatef("download from <var>%s</var>", iurl)
+ end
+ end
+
+
+ if irslv and (irslv == "1") and itype and itype:match("forward") then
+ for xtxt in ut.imatch(fs.readfile(resolvfile)) do
+ if xtxt:match("nameserver") then
+ found = true
+
+ elseif (found == true) then
+ if rtxt and (#rtxt > 0) then
+ -- fetch name servers from resolv.conf
+ rtxt = rtxt .. ", <var>%s</var>" % xtxt
+
+ else
+ rtxt = "<var>%s</var>" % xtxt
+ end
+
+
+ found = false
+ end
+ end
+
+
+ if otxt and (#otxt > 0) and rtxt and (#rtxt > 0) then
+ otxt = otxt
+ .. translatef(", and <var>%s</var> entries ", resolvfile) .. rtxt
+
+ elseif rtxt and (#rtxt > 0) then
+ otxt = translatef("use <var>%s</var> nameservers ", resolvfile) .. rtxt
+ end
+ end
+
+
+ if otxt and (#otxt > 0) then
+ return otxt
+
+ else
+ return "(empty)"
+ end
+end
+
+
+function m5.on_commit(self)
+ if sy.init.enabled("unbound") then
+ -- Restart Unbound with configuration
+ sy.call("/etc/init.d/unbound restart >/dev/null 2>&1")
+
+ else
+ sy.call("/etc/init.d/unbound stop >/dev/null 2>&1")
+ end
+end
+
+
+return m5
+
diff --git a/applications/luci-app-upnp/po/ca/upnp.po b/applications/luci-app-upnp/po/ca/upnp.po
index 398c87ecb..0248b669b 100644
--- a/applications/luci-app-upnp/po/ca/upnp.po
+++ b/applications/luci-app-upnp/po/ca/upnp.po
@@ -97,6 +97,9 @@ msgstr "Ports externs"
msgid "General Settings"
msgstr "Ajusts generals"
+msgid "Host"
+msgstr ""
+
msgid "Internal addresses"
msgstr "Adreces internes"
@@ -149,6 +152,9 @@ msgstr "Fitxer d'arrendament UPnP"
msgid "Universal Plug & Play"
msgstr "Universal Plug & Play"
+msgid "Unknown"
+msgstr ""
+
msgid "Uplink"
msgstr "Enllaç de pujada"
diff --git a/applications/luci-app-upnp/po/cs/upnp.po b/applications/luci-app-upnp/po/cs/upnp.po
index adb4d19ab..4757826cc 100644
--- a/applications/luci-app-upnp/po/cs/upnp.po
+++ b/applications/luci-app-upnp/po/cs/upnp.po
@@ -93,6 +93,9 @@ msgstr "Vnější porty"
msgid "General Settings"
msgstr "Obecné nastavení"
+msgid "Host"
+msgstr ""
+
msgid "Internal addresses"
msgstr "Vnitřní adresy"
@@ -144,6 +147,9 @@ msgstr "Soubor UPnP výpůjček"
msgid "Universal Plug & Play"
msgstr "Univerzální Plug & Play"
+msgid "Unknown"
+msgstr ""
+
msgid "Uplink"
msgstr "Uplink"
diff --git a/applications/luci-app-upnp/po/de/upnp.po b/applications/luci-app-upnp/po/de/upnp.po
index bdafbf105..8609f1870 100644
--- a/applications/luci-app-upnp/po/de/upnp.po
+++ b/applications/luci-app-upnp/po/de/upnp.po
@@ -95,6 +95,9 @@ msgstr "Externe Ports"
msgid "General Settings"
msgstr "Allgemeine Einstellungen"
+msgid "Host"
+msgstr ""
+
msgid "Internal addresses"
msgstr "Interne Adressen"
@@ -147,6 +150,9 @@ msgstr "UPnP Lease-Datei"
msgid "Universal Plug & Play"
msgstr "Universal Plug & Play"
+msgid "Unknown"
+msgstr ""
+
msgid "Uplink"
msgstr "Uplink"
diff --git a/applications/luci-app-upnp/po/el/upnp.po b/applications/luci-app-upnp/po/el/upnp.po
index c02b0ce29..74035ff92 100644
--- a/applications/luci-app-upnp/po/el/upnp.po
+++ b/applications/luci-app-upnp/po/el/upnp.po
@@ -92,6 +92,9 @@ msgstr ""
msgid "General Settings"
msgstr ""
+msgid "Host"
+msgstr ""
+
msgid "Internal addresses"
msgstr ""
@@ -142,6 +145,9 @@ msgstr ""
msgid "Universal Plug & Play"
msgstr ""
+msgid "Unknown"
+msgstr ""
+
msgid "Uplink"
msgstr ""
diff --git a/applications/luci-app-upnp/po/en/upnp.po b/applications/luci-app-upnp/po/en/upnp.po
index eae23a13a..462e82522 100644
--- a/applications/luci-app-upnp/po/en/upnp.po
+++ b/applications/luci-app-upnp/po/en/upnp.po
@@ -92,6 +92,9 @@ msgstr ""
msgid "General Settings"
msgstr ""
+msgid "Host"
+msgstr ""
+
msgid "Internal addresses"
msgstr ""
@@ -142,6 +145,9 @@ msgstr ""
msgid "Universal Plug & Play"
msgstr "Universal Plug & Play"
+msgid "Unknown"
+msgstr ""
+
msgid "Uplink"
msgstr "Uplink"
diff --git a/applications/luci-app-upnp/po/es/upnp.po b/applications/luci-app-upnp/po/es/upnp.po
index 6c9c26260..bc2f341fa 100644
--- a/applications/luci-app-upnp/po/es/upnp.po
+++ b/applications/luci-app-upnp/po/es/upnp.po
@@ -95,6 +95,9 @@ msgstr "Puertos externos"
msgid "General Settings"
msgstr "Configuración general"
+msgid "Host"
+msgstr ""
+
msgid "Internal addresses"
msgstr "Direcciones internas"
@@ -147,6 +150,9 @@ msgstr "Tiempo de cesión UPnP"
msgid "Universal Plug & Play"
msgstr "Plug & Play universal"
+msgid "Unknown"
+msgstr ""
+
msgid "Uplink"
msgstr "Enlace de subida"
diff --git a/applications/luci-app-upnp/po/fr/upnp.po b/applications/luci-app-upnp/po/fr/upnp.po
index f8b2a8536..eb6cc8476 100644
--- a/applications/luci-app-upnp/po/fr/upnp.po
+++ b/applications/luci-app-upnp/po/fr/upnp.po
@@ -97,6 +97,9 @@ msgstr "Ports externes"
msgid "General Settings"
msgstr "Paramètres généraux"
+msgid "Host"
+msgstr ""
+
msgid "Internal addresses"
msgstr "Adresses internes"
@@ -150,6 +153,9 @@ msgstr "Fichier des baux UPnP"
msgid "Universal Plug & Play"
msgstr "Universal Plug & Play"
+msgid "Unknown"
+msgstr ""
+
msgid "Uplink"
msgstr "Lien remontant"
diff --git a/applications/luci-app-upnp/po/he/upnp.po b/applications/luci-app-upnp/po/he/upnp.po
index 387444f15..9d5e30b82 100644
--- a/applications/luci-app-upnp/po/he/upnp.po
+++ b/applications/luci-app-upnp/po/he/upnp.po
@@ -88,6 +88,9 @@ msgstr ""
msgid "General Settings"
msgstr ""
+msgid "Host"
+msgstr ""
+
msgid "Internal addresses"
msgstr ""
@@ -138,6 +141,9 @@ msgstr ""
msgid "Universal Plug & Play"
msgstr ""
+msgid "Unknown"
+msgstr ""
+
msgid "Uplink"
msgstr ""
diff --git a/applications/luci-app-upnp/po/hu/upnp.po b/applications/luci-app-upnp/po/hu/upnp.po
index 21bc7b59c..7e08cc096 100644
--- a/applications/luci-app-upnp/po/hu/upnp.po
+++ b/applications/luci-app-upnp/po/hu/upnp.po
@@ -95,6 +95,9 @@ msgstr "Külső portok"
msgid "General Settings"
msgstr "Általános beállítások"
+msgid "Host"
+msgstr ""
+
msgid "Internal addresses"
msgstr "Belső címek"
@@ -147,6 +150,9 @@ msgstr "UPnP bérlet fájl"
msgid "Universal Plug & Play"
msgstr "Univerzális Plug and Play"
+msgid "Unknown"
+msgstr ""
+
msgid "Uplink"
msgstr "Feltöltés"
diff --git a/applications/luci-app-upnp/po/it/upnp.po b/applications/luci-app-upnp/po/it/upnp.po
index 8e498c34b..6c419aa6e 100644
--- a/applications/luci-app-upnp/po/it/upnp.po
+++ b/applications/luci-app-upnp/po/it/upnp.po
@@ -95,6 +95,9 @@ msgstr "Porte Esterne"
msgid "General Settings"
msgstr "Opzioni Generali"
+msgid "Host"
+msgstr ""
+
msgid "Internal addresses"
msgstr "Indirizzi Interni"
@@ -147,6 +150,9 @@ msgstr "UPnP lease file"
msgid "Universal Plug & Play"
msgstr "Universal Plug & Play"
+msgid "Unknown"
+msgstr ""
+
msgid "Uplink"
msgstr "Uplink"
diff --git a/applications/luci-app-upnp/po/ja/upnp.po b/applications/luci-app-upnp/po/ja/upnp.po
index 4e6f879dc..cb4608a31 100644
--- a/applications/luci-app-upnp/po/ja/upnp.po
+++ b/applications/luci-app-upnp/po/ja/upnp.po
@@ -95,6 +95,9 @@ msgstr "外部ポート"
msgid "General Settings"
msgstr "一般設定"
+msgid "Host"
+msgstr ""
+
msgid "Internal addresses"
msgstr "内部アドレス"
@@ -147,6 +150,9 @@ msgstr "UPnP リースファイル"
msgid "Universal Plug & Play"
msgstr "ユニバーサル プラグ & プレイ"
+msgid "Unknown"
+msgstr ""
+
msgid "Uplink"
msgstr "アップリンク"
diff --git a/applications/luci-app-upnp/po/ms/upnp.po b/applications/luci-app-upnp/po/ms/upnp.po
index 834d6546a..07f975716 100644
--- a/applications/luci-app-upnp/po/ms/upnp.po
+++ b/applications/luci-app-upnp/po/ms/upnp.po
@@ -87,6 +87,9 @@ msgstr ""
msgid "General Settings"
msgstr ""
+msgid "Host"
+msgstr ""
+
msgid "Internal addresses"
msgstr ""
@@ -137,6 +140,9 @@ msgstr ""
msgid "Universal Plug & Play"
msgstr ""
+msgid "Unknown"
+msgstr ""
+
msgid "Uplink"
msgstr ""
diff --git a/applications/luci-app-upnp/po/no/upnp.po b/applications/luci-app-upnp/po/no/upnp.po
index f313b42ee..e4800e897 100644
--- a/applications/luci-app-upnp/po/no/upnp.po
+++ b/applications/luci-app-upnp/po/no/upnp.po
@@ -86,6 +86,9 @@ msgstr "Eksterne porter"
msgid "General Settings"
msgstr "Generelle Innstillinger"
+msgid "Host"
+msgstr ""
+
msgid "Internal addresses"
msgstr "Interne adresser"
@@ -138,6 +141,9 @@ msgstr "UPnP leie fil"
msgid "Universal Plug & Play"
msgstr "Universal Plug & Play"
+msgid "Unknown"
+msgstr ""
+
msgid "Uplink"
msgstr "Opplinje"
diff --git a/applications/luci-app-upnp/po/pl/upnp.po b/applications/luci-app-upnp/po/pl/upnp.po
index fb1f0a4bd..0b282ea24 100644
--- a/applications/luci-app-upnp/po/pl/upnp.po
+++ b/applications/luci-app-upnp/po/pl/upnp.po
@@ -94,6 +94,9 @@ msgstr "Porty zewnętrzne"
msgid "General Settings"
msgstr "Ustawienia główne"
+msgid "Host"
+msgstr ""
+
msgid "Internal addresses"
msgstr "Adresy wewnętrzne"
@@ -145,6 +148,9 @@ msgstr "Plik dzierżawy UPnP"
msgid "Universal Plug & Play"
msgstr "Universal Plug & Play"
+msgid "Unknown"
+msgstr ""
+
msgid "Uplink"
msgstr "Uplink"
diff --git a/applications/luci-app-upnp/po/pt-br/upnp.po b/applications/luci-app-upnp/po/pt-br/upnp.po
index 705bbde61..0fcf6eb36 100644
--- a/applications/luci-app-upnp/po/pt-br/upnp.po
+++ b/applications/luci-app-upnp/po/pt-br/upnp.po
@@ -96,6 +96,9 @@ msgstr "Portas Externas"
msgid "General Settings"
msgstr "Configurações Gerais"
+msgid "Host"
+msgstr ""
+
msgid "Internal addresses"
msgstr "Endereços internos"
@@ -148,6 +151,9 @@ msgstr "Arquivo de concessão do UPnP"
msgid "Universal Plug & Play"
msgstr "Plug & Play Universal"
+msgid "Unknown"
+msgstr ""
+
msgid "Uplink"
msgstr "Velocidade de envio do enlace (uplink)"
diff --git a/applications/luci-app-upnp/po/pt/upnp.po b/applications/luci-app-upnp/po/pt/upnp.po
index e1ee340e3..a46d5e629 100644
--- a/applications/luci-app-upnp/po/pt/upnp.po
+++ b/applications/luci-app-upnp/po/pt/upnp.po
@@ -92,6 +92,9 @@ msgstr ""
msgid "General Settings"
msgstr ""
+msgid "Host"
+msgstr ""
+
msgid "Internal addresses"
msgstr ""
@@ -142,6 +145,9 @@ msgstr ""
msgid "Universal Plug & Play"
msgstr "Plug & Play Universal"
+msgid "Unknown"
+msgstr ""
+
msgid "Uplink"
msgstr "Link para Upload"
diff --git a/applications/luci-app-upnp/po/ro/upnp.po b/applications/luci-app-upnp/po/ro/upnp.po
index 8525279d0..12623db65 100644
--- a/applications/luci-app-upnp/po/ro/upnp.po
+++ b/applications/luci-app-upnp/po/ro/upnp.po
@@ -94,6 +94,9 @@ msgstr "Porturi externe"
msgid "General Settings"
msgstr "Setari generale"
+msgid "Host"
+msgstr ""
+
msgid "Internal addresses"
msgstr "Adrese interne"
@@ -145,6 +148,9 @@ msgstr "Fisierul de conexiuni UPnP"
msgid "Universal Plug & Play"
msgstr "Universal Plug & Play"
+msgid "Unknown"
+msgstr ""
+
msgid "Uplink"
msgstr "Uplink"
diff --git a/applications/luci-app-upnp/po/ru/upnp.po b/applications/luci-app-upnp/po/ru/upnp.po
index 878f83eaf..5e0074534 100644
--- a/applications/luci-app-upnp/po/ru/upnp.po
+++ b/applications/luci-app-upnp/po/ru/upnp.po
@@ -8,7 +8,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.8.7.1\n"
-"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Last-Translator: Olimjon aka Kobin23 <olimko98@gmail.com>\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"
"Language: ru\n"
@@ -32,7 +32,7 @@ msgid "Advanced Settings"
msgstr "Дополнительные настройки"
msgid "Advertise as IGDv1 device instead of IGDv2"
-msgstr ""
+msgstr "Объявить как IGDv1 устройство вместо IGDv2"
msgid "Allow adding forwards only to requesting ip addresses"
msgstr "Разрешить перенаправление только для запрашивающих IP-адресов."
@@ -74,7 +74,7 @@ msgid "Downlink"
msgstr "Внутреннее соединение"
msgid "Enable IGDv1 mode"
-msgstr ""
+msgstr "IGDv1 режим"
msgid "Enable NAT-PMP functionality"
msgstr "Включить NAT-PMP"
@@ -83,10 +83,10 @@ msgid "Enable UPnP functionality"
msgstr "Включить UPnP"
msgid "Enable additional logging"
-msgstr "Включить дополнительное журналирование"
+msgstr "Дополнительное журналирование"
msgid "Enable secure mode"
-msgstr "Использовать<br />защищённый режим"
+msgstr "Защищённый режим"
msgid "External Port"
msgstr "Внешний порт"
@@ -97,6 +97,9 @@ msgstr "Внешние порты"
msgid "General Settings"
msgstr "Основные настройки"
+msgid "Host"
+msgstr "Хост"
+
msgid "Internal addresses"
msgstr "Внутренние адреса"
@@ -125,7 +128,7 @@ msgid "Puts extra debugging information into the system log"
msgstr "Добавлять дополнительную отладочную информацию в системный журнал."
msgid "Report system instead of daemon uptime"
-msgstr "Сообщать время работы системы вместо сервиса"
+msgstr "Сообщать время работы системы вместо службы"
msgid "Start UPnP and NAT-PMP service"
msgstr "Запустить службы<br />UPnP и NAT-PMP"
@@ -149,6 +152,9 @@ msgstr "Файл аренды UPnP"
msgid "Universal Plug & Play"
msgstr "Universal Plug & Play"
+msgid "Unknown"
+msgstr ""
+
msgid "Uplink"
msgstr "Внешнее соединение"
diff --git a/applications/luci-app-upnp/po/sk/upnp.po b/applications/luci-app-upnp/po/sk/upnp.po
index 81ded2220..fda2e6be7 100644
--- a/applications/luci-app-upnp/po/sk/upnp.po
+++ b/applications/luci-app-upnp/po/sk/upnp.po
@@ -88,6 +88,9 @@ msgstr ""
msgid "General Settings"
msgstr ""
+msgid "Host"
+msgstr ""
+
msgid "Internal addresses"
msgstr ""
@@ -138,6 +141,9 @@ msgstr ""
msgid "Universal Plug & Play"
msgstr ""
+msgid "Unknown"
+msgstr ""
+
msgid "Uplink"
msgstr ""
diff --git a/applications/luci-app-upnp/po/sv/upnp.po b/applications/luci-app-upnp/po/sv/upnp.po
index c2d1c6b0b..c19eaa184 100644
--- a/applications/luci-app-upnp/po/sv/upnp.po
+++ b/applications/luci-app-upnp/po/sv/upnp.po
@@ -91,6 +91,9 @@ msgstr "Externa portar"
msgid "General Settings"
msgstr "Generella inställningar"
+msgid "Host"
+msgstr ""
+
msgid "Internal addresses"
msgstr "Interna adresser"
@@ -143,6 +146,9 @@ msgstr "Hyr-fil för UPnP"
msgid "Universal Plug & Play"
msgstr "Universiell Plug & Play"
+msgid "Unknown"
+msgstr ""
+
msgid "Uplink"
msgstr "Upplänk"
diff --git a/applications/luci-app-upnp/po/templates/upnp.pot b/applications/luci-app-upnp/po/templates/upnp.pot
index e3b1f1a26..3ffad7a70 100644
--- a/applications/luci-app-upnp/po/templates/upnp.pot
+++ b/applications/luci-app-upnp/po/templates/upnp.pot
@@ -81,6 +81,9 @@ msgstr ""
msgid "General Settings"
msgstr ""
+msgid "Host"
+msgstr ""
+
msgid "Internal addresses"
msgstr ""
@@ -131,6 +134,9 @@ msgstr ""
msgid "Universal Plug & Play"
msgstr ""
+msgid "Unknown"
+msgstr ""
+
msgid "Uplink"
msgstr ""
diff --git a/applications/luci-app-upnp/po/tr/upnp.po b/applications/luci-app-upnp/po/tr/upnp.po
index 2a997a79b..8415d3117 100644
--- a/applications/luci-app-upnp/po/tr/upnp.po
+++ b/applications/luci-app-upnp/po/tr/upnp.po
@@ -88,6 +88,9 @@ msgstr ""
msgid "General Settings"
msgstr ""
+msgid "Host"
+msgstr ""
+
msgid "Internal addresses"
msgstr ""
@@ -138,6 +141,9 @@ msgstr ""
msgid "Universal Plug & Play"
msgstr ""
+msgid "Unknown"
+msgstr ""
+
msgid "Uplink"
msgstr ""
diff --git a/applications/luci-app-upnp/po/uk/upnp.po b/applications/luci-app-upnp/po/uk/upnp.po
index 478ac7eab..7a843960e 100644
--- a/applications/luci-app-upnp/po/uk/upnp.po
+++ b/applications/luci-app-upnp/po/uk/upnp.po
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"PO-Revision-Date: 2018-07-16 15:50+0300\n"
+"PO-Revision-Date: 2018-07-20 10:30+0300\n"
"Last-Translator: Yurii <yuripet@gmail.com>\n"
"Language-Team: none\n"
"Language: uk\n"
@@ -94,6 +94,9 @@ msgstr "Зовнішні порти"
msgid "General Settings"
msgstr "Загальні настройки"
+msgid "Host"
+msgstr "Вузол"
+
msgid "Internal addresses"
msgstr "Внутрішні адреси"
@@ -146,6 +149,9 @@ msgstr "Файл оренд UPnP"
msgid "Universal Plug & Play"
msgstr "Universal Plug & Play"
+msgid "Unknown"
+msgstr "Невідомо"
+
msgid "Uplink"
msgstr "Висхідне з’єднання"
diff --git a/applications/luci-app-upnp/po/vi/upnp.po b/applications/luci-app-upnp/po/vi/upnp.po
index c93377747..d128bb6bb 100644
--- a/applications/luci-app-upnp/po/vi/upnp.po
+++ b/applications/luci-app-upnp/po/vi/upnp.po
@@ -93,6 +93,9 @@ msgstr ""
msgid "General Settings"
msgstr ""
+msgid "Host"
+msgstr ""
+
msgid "Internal addresses"
msgstr ""
@@ -143,6 +146,9 @@ msgstr ""
msgid "Universal Plug & Play"
msgstr "Universal Plug & Play"
+msgid "Unknown"
+msgstr ""
+
msgid "Uplink"
msgstr "Uplink"
diff --git a/applications/luci-app-upnp/po/zh-cn/upnp.po b/applications/luci-app-upnp/po/zh-cn/upnp.po
index 588ad2cf1..e2e5ea12d 100644
--- a/applications/luci-app-upnp/po/zh-cn/upnp.po
+++ b/applications/luci-app-upnp/po/zh-cn/upnp.po
@@ -93,6 +93,9 @@ msgstr "外部端口"
msgid "General Settings"
msgstr "基本设置"
+msgid "Host"
+msgstr ""
+
msgid "Internal addresses"
msgstr "内部地址"
@@ -143,6 +146,9 @@ msgstr "UPnP 租约文件"
msgid "Universal Plug & Play"
msgstr "通用即插即用(UPnP)"
+msgid "Unknown"
+msgstr ""
+
msgid "Uplink"
msgstr "上行速率"
diff --git a/applications/luci-app-upnp/po/zh-tw/upnp.po b/applications/luci-app-upnp/po/zh-tw/upnp.po
index 57edb9e46..fdbae8009 100644
--- a/applications/luci-app-upnp/po/zh-tw/upnp.po
+++ b/applications/luci-app-upnp/po/zh-tw/upnp.po
@@ -91,6 +91,9 @@ msgstr "外部埠號範圍"
msgid "General Settings"
msgstr "一般設定"
+msgid "Host"
+msgstr ""
+
msgid "Internal addresses"
msgstr "內部位址"
@@ -141,6 +144,9 @@ msgstr "UPnP租賃文件"
msgid "Universal Plug & Play"
msgstr "通用序列埠隨插隨用"
+msgid "Unknown"
+msgstr ""
+
msgid "Uplink"
msgstr "上傳"
diff --git a/applications/luci-app-wol/po/uk/wol.po b/applications/luci-app-wol/po/uk/wol.po
index 703cd370f..d1fd7c7e2 100644
--- a/applications/luci-app-wol/po/uk/wol.po
+++ b/applications/luci-app-wol/po/uk/wol.po
@@ -1,37 +1,32 @@
-# Generated from applications/luci-wol/luasrc/model/cbi/wol.lua
-#
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-04-19 00:29+0200\n"
-"PO-Revision-Date: 2013-05-26 19:00+0200\n"
+"Project-Id-Version: \n"
+"PO-Revision-Date: 2018-07-20 10:10+0300\n"
"Last-Translator: Yurii <yuripet@gmail.com>\n"
"Language-Team: none\n"
"Language: uk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Pootle 2.0.6\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"
msgid "Broadcast on all interfaces"
msgstr "Широкомовна трансляція на всіх інтерфейсах"
msgid "Choose the host to wake up or enter a custom MAC address to use"
msgstr ""
-"Виберіть комп'ютер, який необхідно розбудити або введіть користувацьку MAC-"
+"Виберіть комп’ютер, який необхідно розбудити або введіть користувацьку MAC-"
"адресу"
msgid "Host to wake up"
-msgstr "Комп'ютер, який необхідно розбудити"
+msgstr "Комп’ютер, який необхідно розбудити"
msgid "Network interface to use"
msgstr "Використовувати мережевий інтерфейс"
msgid "Send to broadcast address"
-msgstr ""
+msgstr "Надіслати на широкомовну адресу"
#, fuzzy
msgid ""
@@ -53,10 +48,10 @@ msgid ""
"Wake on LAN is a mechanism to remotely boot computers in the local network."
msgstr ""
"Пробудження через LAN (Wake on LAN) є технологією, що дає змогу віддалено "
-"\"будити\" (вмикати) комп'ютери у локальній мережі."
+"\"будити\" (вмикати) комп’ютери у локальній мережі."
msgid "Wake up host"
-msgstr "Розбудити комп'ютер"
+msgstr "Розбудити комп’ютер"
msgid "WoL program"
msgstr "Программа WoL"
diff --git a/collections/luci/Makefile b/collections/luci/Makefile
index 3c765c396..c3174e8b9 100644
--- a/collections/luci/Makefile
+++ b/collections/luci/Makefile
@@ -12,7 +12,7 @@ LUCI_BASENAME:=luci
LUCI_TITLE:=LuCI interface with Uhttpd as Webserver (default)
LUCI_DESCRIPTION:=Standard OpenWrt set including full admin with ppp support and the default Bootstrap theme
LUCI_DEPENDS:= \
- +uhttpd +uhttpd-mod-ubus +luci-mod-admin-full +luci-theme-bootstrap \
+ +uhttpd +luci-mod-admin-full +luci-theme-bootstrap \
+luci-app-firewall +luci-proto-ppp +libiwinfo-lua +IPV6:luci-proto-ipv6 \
+rpcd-mod-rrdns
diff --git a/contrib/package/freifunk-common/files/usr/sbin/ff_olsr_watchdog b/contrib/package/freifunk-common/files/usr/sbin/ff_olsr_watchdog
index 069f4c321..8ac803d30 100755
--- a/contrib/package/freifunk-common/files/usr/sbin/ff_olsr_watchdog
+++ b/contrib/package/freifunk-common/files/usr/sbin/ff_olsr_watchdog
@@ -23,6 +23,15 @@ if fs.access("/var/run/olsrd.pid") or fs.access("/var/run/olsrd4.pid") then
if not wdgtime or ( systime - wdgtime ) > ( intv * 2 ) then
os.execute("logger -t 'OLSR watchdog' 'Process died - restarting!'")
+ local tnls = io.popen("ip tunnel show | cut -d : -f 1")
+ while true do
+ tnl = tnls:read("*line")
+ if tnl == nil then break end
+ if string.find(tnl, "tnl_") == 1 then
+ os.execute(string.format("logger -t 'OLSR watchdog' 'Deleting stale tunnel %s'", tnl))
+ os.execute(string.format("ip link del %s", tnl))
+ end
+ end
os.execute("/etc/init.d/olsrd restart")
end
end
diff --git a/luci.mk b/luci.mk
index 6ece81c3d..f9153819e 100644
--- a/luci.mk
+++ b/luci.mk
@@ -153,7 +153,7 @@ LUCI_LIBRARYDIR = $(LUA_LIBRARYDIR)/luci
define SrcDiet
$(FIND) $(1) -type f -name '*.lua' | while read src; do \
- if luasrcdiet --noopt-binequiv -o "$$$$src.o" "$$$$src"; \
+ if LUA_PATH="$(STAGING_DIR_HOSTPKG)/lib/lua/5.1/?.lua" luasrcdiet --noopt-binequiv -o "$$$$src.o" "$$$$src"; \
then mv "$$$$src.o" "$$$$src"; fi; \
done
endef
diff --git a/modules/luci-base/Makefile b/modules/luci-base/Makefile
index 5c38d99c5..06ee7985e 100644
--- a/modules/luci-base/Makefile
+++ b/modules/luci-base/Makefile
@@ -37,13 +37,14 @@ endef
define Host/Compile
$(MAKE) -C src/ clean po2lmo
- $(MAKE) -C $(HOST_BUILD_DIR) bin/luasrcdiet
endef
define Host/Install
$(INSTALL_DIR) $(1)/bin
+ $(INSTALL_DIR) $(1)/lib/lua/5.1
$(INSTALL_BIN) src/po2lmo $(1)/bin/po2lmo
$(INSTALL_BIN) $(HOST_BUILD_DIR)/bin/luasrcdiet $(1)/bin/luasrcdiet
+ $(CP) $(HOST_BUILD_DIR)/luasrcdiet $(1)/lib/lua/5.1/
endef
$(eval $(call HostBuild))
diff --git a/modules/luci-base/htdocs/luci-static/resources/cbi.js b/modules/luci-base/htdocs/luci-static/resources/cbi.js
index 89dfac9e4..fcfc50694 100644
--- a/modules/luci-base/htdocs/luci-static/resources/cbi.js
+++ b/modules/luci-base/htdocs/luci-static/resources/cbi.js
@@ -627,6 +627,18 @@ function cbi_init() {
s.parentNode.classList.add('cbi-tooltip-container');
});
+ document.querySelectorAll('.cbi-section-remove > input[name^="cbi.rts"]').forEach(function(i) {
+ var handler = function(ev) {
+ var bits = this.name.split(/\./),
+ section = document.getElementById('cbi-' + bits[2] + '-' + bits[3]);
+
+ section.style.opacity = (ev.type === 'mouseover') ? 0.5 : '';
+ };
+
+ i.addEventListener('mouseover', handler);
+ i.addEventListener('mouseout', handler);
+ });
+
cbi_d_update();
}
@@ -818,9 +830,9 @@ function cbi_dynlist_init(parent, datatype, optional, choices)
t.placeholder = holder;
}
- var b = document.createElement('img');
- b.src = cbi_strings.path.resource + ((i+1) < values.length ? '/cbi/remove.gif' : '/cbi/add.gif');
- b.className = 'cbi-image-button';
+ var b = E('div', {
+ class: 'cbi-button cbi-button-' + ((i+1) < values.length ? 'remove' : 'add')
+ }, (i+1) < values.length ? '×' : '+');
parent.appendChild(t);
parent.appendChild(b);
@@ -986,8 +998,7 @@ function cbi_dynlist_init(parent, datatype, optional, choices)
input = input.previousSibling;
}
- if (se.src.indexOf('remove') > -1)
- {
+ if (se.classList.contains('cbi-button-remove')) {
input.value = '';
cbi_dynlist_keydown({
@@ -995,8 +1006,7 @@ function cbi_dynlist_init(parent, datatype, optional, choices)
keyCode: 8
});
}
- else
- {
+ else {
cbi_dynlist_keydown({
target: input,
keyCode: 13
diff --git a/modules/luci-base/htdocs/luci-static/resources/xhr.js b/modules/luci-base/htdocs/luci-static/resources/xhr.js
index 62b525ebb..25a90e725 100644
--- a/modules/luci-base/htdocs/luci-static/resources/xhr.js
+++ b/modules/luci-base/htdocs/luci-static/resources/xhr.js
@@ -65,12 +65,8 @@ XHR = function()
if (xhr.readyState == 4) {
var json = null;
if (xhr.getResponseHeader("Content-Type") == "application/json") {
- try {
- json = JSON.parse(xhr.responseText);
- }
- catch(e) {
- json = null;
- }
+ try { json = JSON.parse(xhr.responseText); }
+ catch(e) { json = null; }
}
callback(xhr, json, Date.now() - ts);
@@ -90,8 +86,15 @@ XHR = function()
xhr.onreadystatechange = function()
{
- if (xhr.readyState == 4)
- callback(xhr, null, Date.now() - ts);
+ if (xhr.readyState == 4) {
+ var json = null;
+ if (xhr.getResponseHeader("Content-Type") == "application/json") {
+ try { json = JSON.parse(xhr.responseText); }
+ catch(e) { json = null; }
+ }
+
+ callback(xhr, json, Date.now() - ts);
+ }
}
xhr.open('POST', url, true);
diff --git a/modules/luci-base/luasrc/dispatcher.lua b/modules/luci-base/luasrc/dispatcher.lua
index 6d5a8f4d3..6cf2712eb 100644
--- a/modules/luci-base/luasrc/dispatcher.lua
+++ b/modules/luci-base/luasrc/dispatcher.lua
@@ -893,8 +893,6 @@ local function _cbi(self, ...)
local pageaction = true
local parsechain = { }
- local is_rollback, time_remaining = uci:rollback_pending()
-
for i, res in ipairs(maps) do
if res.apply_needed and res.parsechain then
local c
@@ -921,8 +919,6 @@ local function _cbi(self, ...)
for i, res in ipairs(maps) do
res:render({
firstmap = (i == 1),
- applymap = applymap,
- confirmmap = (is_rollback and time_remaining or nil),
redirect = redirect,
messages = messages,
pageaction = pageaction,
@@ -932,11 +928,12 @@ local function _cbi(self, ...)
if not config.nofooter then
tpl.render("cbi/footer", {
- flow = config,
- pageaction = pageaction,
- redirect = redirect,
- state = state,
- autoapply = config.autoapply
+ flow = config,
+ pageaction = pageaction,
+ redirect = redirect,
+ state = state,
+ autoapply = config.autoapply,
+ trigger_apply = applymap
})
end
end
diff --git a/modules/luci-base/luasrc/model/uci.lua b/modules/luci-base/luasrc/model/uci.lua
index 92c0d8f69..b2c1e463b 100644
--- a/modules/luci-base/luasrc/model/uci.lua
+++ b/modules/luci-base/luasrc/model/uci.lua
@@ -147,19 +147,31 @@ function apply(self, rollback)
local _, err
if rollback then
+ local sys = require "luci.sys"
local conf = require "luci.config"
- local timeout = tonumber(conf and conf.apply and conf.apply.rollback or "") or 0
+ local timeout = tonumber(conf and conf.apply and conf.apply.rollback or 30) or 0
_, err = call("apply", {
- timeout = (timeout > 30) and timeout or 30,
+ timeout = (timeout > 30) and timeout or 30,
rollback = true
})
if not err then
+ local now = os.time()
+ local token = sys.uniqueid(16)
+
util.ubus("session", "set", {
- ubus_rpc_session = session_id,
- values = { rollback = os.time() + timeout }
+ ubus_rpc_session = "00000000000000000000000000000000",
+ values = {
+ rollback = {
+ token = token,
+ session = session_id,
+ timeout = now + timeout
+ }
+ }
})
+
+ return token
end
else
_, err = call("changes", {})
@@ -184,40 +196,72 @@ function apply(self, rollback)
return (err == nil), ERRSTR[err]
end
-function confirm(self)
- local _, err = call("confirm", {})
- if not err then
- util.ubus("session", "set", {
- ubus_rpc_session = session_id,
- values = { rollback = 0 }
+function confirm(self, token)
+ local is_pending, time_remaining, rollback_sid, rollback_token = self:rollback_pending()
+
+ if is_pending then
+ if token ~= rollback_token then
+ return false, "Permission denied"
+ end
+
+ local _, err = util.ubus("uci", "confirm", {
+ ubus_rpc_session = rollback_sid
})
+
+ if not err then
+ util.ubus("session", "set", {
+ ubus_rpc_session = "00000000000000000000000000000000",
+ values = { rollback = {} }
+ })
+ end
+
+ return (err == nil), ERRSTR[err]
end
- return (err == nil), ERRSTR[err]
+
+ return false, "No data"
end
function rollback(self)
- local _, err = call("rollback", {})
- if not err then
- util.ubus("session", "set", {
- ubus_rpc_session = session_id,
- values = { rollback = 0 }
+ local is_pending, time_remaining, rollback_sid = self:rollback_pending()
+
+ if is_pending then
+ local _, err = util.ubus("uci", "rollback", {
+ ubus_rpc_session = rollback_sid
})
+
+ if not err then
+ util.ubus("session", "set", {
+ ubus_rpc_session = "00000000000000000000000000000000",
+ values = { rollback = {} }
+ })
+ end
+
+ return (err == nil), ERRSTR[err]
end
- return (err == nil), ERRSTR[err]
+
+ return false, "No data"
end
function rollback_pending(self)
- local deadline, err = util.ubus("session", "get", {
- ubus_rpc_session = session_id,
+ local rv, err = util.ubus("session", "get", {
+ ubus_rpc_session = "00000000000000000000000000000000",
keys = { "rollback" }
})
- if type(deadline) == "table" and
- type(deadline.values) == "table" and
- type(deadline.values.rollback) == "number" and
- deadline.values.rollback > os.time()
+ local now = os.time()
+
+ if type(rv) == "table" and
+ type(rv.values) == "table" and
+ type(rv.values.rollback) == "table" and
+ type(rv.values.rollback.token) == "string" and
+ type(rv.values.rollback.session) == "string" and
+ type(rv.values.rollback.timeout) == "number" and
+ rv.values.rollback.timeout > now
then
- return true, deadline.values.rollback - os.time()
+ return true,
+ rv.values.rollback.timeout - now,
+ rv.values.rollback.session,
+ rv.values.rollback.token
end
return false, ERRSTR[err]
diff --git a/modules/luci-base/luasrc/util.lua b/modules/luci-base/luasrc/util.lua
index 10428b0b3..f16b3afb2 100644
--- a/modules/luci-base/luasrc/util.lua
+++ b/modules/luci-base/luasrc/util.lua
@@ -16,7 +16,7 @@ local _ubus = require "ubus"
local _ubus_connection = nil
local getmetatable, setmetatable = getmetatable, setmetatable
-local rawget, rawset, unpack = rawget, rawset, unpack
+local rawget, rawset, unpack, select = rawget, rawset, unpack, select
local tostring, type, assert, error = tostring, type, assert, error
local ipairs, pairs, next, loadstring = ipairs, pairs, next, loadstring
local require, pcall, xpcall = require, pcall, xpcall
@@ -647,6 +647,17 @@ local ubus_codes = {
"CONNECTION_FAILED"
}
+local function ubus_return(...)
+ if select('#', ...) == 2 then
+ local rv, err = select(1, ...), select(2, ...)
+ if rv == nil and type(err) == "number" then
+ return nil, err, ubus_codes[err]
+ end
+ end
+
+ return ...
+end
+
function ubus(object, method, data)
if not _ubus_connection then
_ubus_connection = _ubus.connect()
@@ -657,8 +668,7 @@ function ubus(object, method, data)
if type(data) ~= "table" then
data = { }
end
- local rv, err = _ubus_connection:call(object, method, data)
- return rv, err, ubus_codes[err]
+ return ubus_return(_ubus_connection:call(object, method, data))
elseif object then
return _ubus_connection:signatures(object)
else
diff --git a/modules/luci-base/luasrc/view/cbi/apply_widget.htm b/modules/luci-base/luasrc/view/cbi/apply_widget.htm
index f76846ee8..4d7e9c56e 100644
--- a/modules/luci-base/luasrc/view/cbi/apply_widget.htm
+++ b/modules/luci-base/luasrc/view/cbi/apply_widget.htm
@@ -1,4 +1,4 @@
-<% export("cbi_apply_widget", function(redirect_ok) -%>
+<% export("cbi_apply_widget", function(redirect_ok, rollback_token) -%>
<style type="text/css">
#cbi_apply_overlay {
position: absolute;
@@ -51,6 +51,7 @@
uci_apply_holdoff = <%=math.max(luci.config and luci.config.apply and luci.config.apply.holdoff or 4, 1)%>,
uci_apply_timeout = <%=math.max(luci.config and luci.config.apply and luci.config.apply.timeout or 5, 1)%>,
uci_apply_display = <%=math.max(luci.config and luci.config.apply and luci.config.apply.display or 1.5, 1)%>,
+ uci_confirm_auth = <% if rollback_token then %>{ token: '<%=rollback_token%>' }<% else %>null<% end %>,
was_xhr_poll_running = false;
function uci_status_message(type, content) {
@@ -148,7 +149,7 @@
var delay = isNaN(duration) ? 0 : Math.max(1000 - duration, 0);
window.setTimeout(function() {
- xhr.post('<%=url("admin/uci/confirm")%>', uci_apply_auth, call, uci_apply_timeout * 1000);
+ xhr.post('<%=url("admin/uci/confirm")%>', uci_confirm_auth, call, uci_apply_timeout * 1000);
}, delay);
};
@@ -177,8 +178,11 @@
'<img src="<%=resource%>/icons/loading.gif" alt="" style="vertical-align:middle" /> ' +
'<%:Starting configuration apply…%>');
- xhr.post('<%=url("admin/uci")%>/' + (checked ? 'apply_rollback' : 'apply_unchecked'), uci_apply_auth, function(r) {
+ xhr.post('<%=url("admin/uci")%>/' + (checked ? 'apply_rollback' : 'apply_unchecked'), uci_apply_auth, function(r, tok) {
if (r.status === (checked ? 200 : 204)) {
+ if (checked && tok !== null && typeof(tok) === 'object' && typeof(tok.token) === 'string')
+ uci_confirm_auth = tok;
+
uci_confirm(checked, Date.now() + uci_apply_rollback * 1000);
}
else if (checked && r.status === 204) {
diff --git a/modules/luci-base/luasrc/view/cbi/cell_valueheader.htm b/modules/luci-base/luasrc/view/cbi/cell_valueheader.htm
index dbb0e1120..ea0568f40 100644
--- a/modules/luci-base/luasrc/view/cbi/cell_valueheader.htm
+++ b/modules/luci-base/luasrc/view/cbi/cell_valueheader.htm
@@ -1,10 +1,12 @@
<%-
local title = luci.util.trim(striptags(self.title))
- local ftype = self.template and self.template:gsub("^.+/", "")
+ local descr = luci.util.trim(striptags(self.description))
+ local ftype = self.typename or (self.template and self.template:gsub("^.+/", ""))
-%>
<div class="td cbi-value-field<% if self.error and self.error[section] then %> cbi-value-error<% end %>"<%=
attr("data-name", self.option) ..
ifattr(ftype and #ftype > 0, "data-type", ftype) ..
- ifattr(title and #title > 0, "data-title", title)
+ ifattr(title and #title > 0, "data-title", title) ..
+ ifattr(descr and #descr > 0, "data-description", descr)
%>>
<div id="cbi-<%=self.config.."-"..section.."-"..self.option%>" data-index="<%=self.index%>" data-depends="<%=pcdata(self:deplist2json(section))%>">
diff --git a/modules/luci-base/luasrc/view/cbi/map.htm b/modules/luci-base/luasrc/view/cbi/map.htm
index 83c3cb217..d65a16167 100644
--- a/modules/luci-base/luasrc/view/cbi/map.htm
+++ b/modules/luci-base/luasrc/view/cbi/map.htm
@@ -5,21 +5,6 @@
<div class="cbi-map" id="cbi-<%=self.config%>">
<% if self.title and #self.title > 0 then %><h2 name="content"><%=self.title%></h2><% end %>
<% if self.description and #self.description > 0 then %><div class="cbi-map-descr"><%=self.description%></div><% end %>
- <%- if firstmap and (applymap or confirmmap) then -%>
- <%+cbi/apply_widget%>
- <% cbi_apply_widget(redirect) %>
- <div class="alert-message" id="cbi_apply_status" style="display:none"></div>
- <script type="text/javascript">
- document.addEventListener("DOMContentLoaded", function() {
- <% if confirmmap then -%>
- uci_confirm(true, Date.now() + <%=confirmmap%> * 1000);
- <%- else -%>
- uci_apply(true);
- <%- end %>
- });
- </script>
- <%- end -%>
-
<% if self.tabbed then %>
<ul class="cbi-tabmenu map">
<%- self.selected_tab = luci.http.formvalue("tab.m-" .. self.config) %>
diff --git a/modules/luci-base/luasrc/view/cbi/tblsection.htm b/modules/luci-base/luasrc/view/cbi/tblsection.htm
index 9505f4ac4..408dfa7fe 100644
--- a/modules/luci-base/luasrc/view/cbi/tblsection.htm
+++ b/modules/luci-base/luasrc/view/cbi/tblsection.htm
@@ -4,9 +4,9 @@ local rowcnt = 0
function rowstyle()
rowcnt = rowcnt + 1
if rowcnt % 2 == 0 then
- return "cbi-rowstyle-1"
+ return " cbi-rowstyle-1"
else
- return "cbi-rowstyle-2"
+ return " cbi-rowstyle-2"
end
end
diff --git a/modules/luci-base/luasrc/view/cbi/ucisection.htm b/modules/luci-base/luasrc/view/cbi/ucisection.htm
index 2cb1e75d0..8fa11d68f 100644
--- a/modules/luci-base/luasrc/view/cbi/ucisection.htm
+++ b/modules/luci-base/luasrc/view/cbi/ucisection.htm
@@ -32,25 +32,25 @@
<% if self.optionals[section] and #self.optionals[section] > 0 or self.dynamic then %>
<div class="cbi-optionals" data-index="<%=#self.children + 1%>">
- <%
+ <%-
if self.dynamic then
local keys, vals, name, opt = { }, { }
for name, opt in pairs(self.optionals[section]) do
keys[#keys+1] = name
vals[#vals+1] = opt.title
end
- %>
+ -%>
<input type="text" id="cbi.opt.<%=self.config%>.<%=section%>" name="cbi.opt.<%=self.config%>.<%=section%>" data-type="uciname" data-optional="true"<%=
ifattr(#keys > 0, "data-choices", luci.util.json_encode({keys, vals}))
%> />
- <% else %>
+ <%- else -%>
<select id="cbi.opt.<%=self.config%>.<%=section%>" name="cbi.opt.<%=self.config%>.<%=section%>" data-optionals="true">
<option><%: -- Additional Field -- %></option>
<% for key, val in pairs(self.optionals[section]) do -%>
<option id="cbi-<%=self.config.."-"..section.."-"..val.option%>" value="<%=val.option%>" data-index="<%=val.index%>" data-depends="<%=pcdata(val:deplist2json(section))%>"><%=striptags(val.title)%></option>
<%- end %>
</select>
- <% end %>
+ <%- end -%>
<input type="submit" class="cbi-button cbi-button-fieldadd" value="<%:Add%>" />
</div>
<% end %>
diff --git a/modules/luci-base/luasrc/view/cbi/value.htm b/modules/luci-base/luasrc/view/cbi/value.htm
index c8c905eb1..942ab72e7 100644
--- a/modules/luci-base/luasrc/view/cbi/value.htm
+++ b/modules/luci-base/luasrc/view/cbi/value.htm
@@ -1,10 +1,16 @@
<%+cbi/valueheader%>
+ <%- if self.password then -%>
+ <input type="password" style="position:absolute; left:-1000px"<%=
+ attr("name", "password." .. cbid)
+ %> />
+ <%- end -%>
<input data-update="change"<%=
attr("id", cbid) ..
attr("name", cbid) ..
attr("type", self.password and "password" or "text") ..
attr("class", self.password and "cbi-input-password" or "cbi-input-text") ..
attr("value", self:cfgvalue(section) or self.default) ..
+ ifattr(self.password, "autocomplete", "new-password") ..
ifattr(self.size, "size") ..
ifattr(self.placeholder, "placeholder") ..
ifattr(self.readonly, "readonly") ..
@@ -14,5 +20,7 @@
ifattr(self.combobox_manual, "data-manual", self.combobox_manual) ..
ifattr(#self.keylist > 0, "data-choices", { self.keylist, self.vallist })
%> />
- <% if self.password then %><img src="<%=resource%>/cbi/reload.gif" style="vertical-align:middle" title="<%:Reveal/hide password%>" onclick="var e = document.getElementById('<%=cbid%>'); e.type = (e.type=='password') ? 'text' : 'password';" /><% end %>
+ <%- if self.password then -%>
+ <div class="cbi-button cbi-button-neutral" title="<%:Reveal/hide password%>" onclick="var e = this.previousElementSibling; e.type = (e.type === 'password') ? 'text' : 'password'">∗</div>
+ <% end %>
<%+cbi/valuefooter%>
diff --git a/modules/luci-base/luasrc/view/footer.htm b/modules/luci-base/luasrc/view/footer.htm
index f3574b6b1..1667d3aa9 100644
--- a/modules/luci-base/luasrc/view/footer.htm
+++ b/modules/luci-base/luasrc/view/footer.htm
@@ -4,4 +4,27 @@
Licensed to the public under the Apache License 2.0.
-%>
-<% include("themes/" .. theme .. "/footer") %> \ No newline at end of file
+<%
+ local is_rollback_pending, rollback_time_remaining, rollback_session, rollback_token = luci.model.uci:rollback_pending()
+
+ if is_rollback_pending or trigger_apply or trigger_revert then
+ include("cbi/apply_widget")
+ cbi_apply_widget(redirect, rollback_token)
+%>
+ <div class="alert-message" id="cbi_apply_status" style="display:none"></div>
+ <script type="text/javascript">
+ document.addEventListener("DOMContentLoaded", function() {
+ <% if trigger_apply then -%>
+ uci_apply(true);
+ <%- elseif trigger_revert then -%>
+ uci_revert();
+ <%- else -%>
+ uci_confirm(true, Date.now() + <%=rollback_time_remaining%> * 1000);
+ <%- end %>
+ });
+ </script>
+<%
+ end
+
+ include("themes/" .. theme .. "/footer")
+%>
diff --git a/modules/luci-base/po/ca/base.po b/modules/luci-base/po/ca/base.po
index f3a1cf26d..588589449 100644
--- a/modules/luci-base/po/ca/base.po
+++ b/modules/luci-base/po/ca/base.po
@@ -158,9 +158,6 @@ msgstr ""
msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
msgstr "Consultes concurrents <abbr title=\"màximes\">max.</abbr>"
-msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-msgstr "<abbr title='Parella: %s / Grup: %s'>%s - %s</abbr>"
-
msgid ""
"<br/>Note: you need to manually restart the cron service if the crontab file "
"was empty before editing."
@@ -274,7 +271,13 @@ msgstr ""
msgid "Alert"
msgstr "Alerta"
-msgid "Alias interface"
+msgid "Alias Interface"
+msgstr ""
+
+msgid "Alias of \"%s\""
+msgstr ""
+
+msgid "All Servers"
msgstr ""
msgid ""
@@ -290,6 +293,9 @@ msgstr ""
"Permetre l'autenticació <abbr title=\"Secure Shell\">SSH</abbr> amb "
"contrasenya"
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
msgid "Allow all except listed"
msgstr "Permet-les totes menys les llistades"
@@ -323,6 +329,11 @@ msgstr ""
msgid "Always announce default router"
msgstr ""
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
msgid "Annex"
msgstr ""
@@ -515,6 +526,9 @@ msgstr "Adreça mal especificada!"
msgid "Band"
msgstr ""
+msgid "Beacon Interval"
+msgstr ""
+
msgid ""
"Below is the determined list of files to backup. It consists of changed "
"configuration files marked by opkg, essential base files and the user "
@@ -821,6 +835,9 @@ msgstr ""
msgid "DSL line mode"
msgstr ""
+msgid "DTIM Interval"
+msgstr ""
+
msgid "DUID"
msgstr "DUID"
@@ -857,6 +874,9 @@ msgstr "Suprimeix"
msgid "Delete this network"
msgstr "Suprimeix aquesta xarxa"
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
msgid "Description"
msgstr "Descripció"
@@ -915,6 +935,9 @@ msgstr "Inhabilitat"
msgid "Disabled (default)"
msgstr ""
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
msgid "Discard upstream RFC1918 responses"
msgstr "Descarta les respostes RFC1918 des de dalt"
@@ -1267,6 +1290,9 @@ msgstr "Escrivint a la memòria flaix..."
msgid "Force"
msgstr "Força"
+msgid "Force 40MHz mode"
+msgstr ""
+
msgid "Force CCMP (AES)"
msgstr "Força el CCMP (AES)"
@@ -1925,6 +1951,9 @@ msgstr ""
msgid "Lowest leased address as offset from the network address."
msgstr ""
+msgid "MAC"
+msgstr ""
+
msgid "MAC-Address"
msgstr "Adreça MAC"
@@ -2167,6 +2196,9 @@ msgstr "No hi ha cap contrasenya establerta!"
msgid "No rules in this chain"
msgstr "No hi ha regles en aquesta cadena"
+msgid "No scan results available yet..."
+msgstr ""
+
msgid "No zone assigned"
msgstr "Cap zona assignada"
@@ -2591,6 +2623,11 @@ msgstr ""
msgid "Quality"
msgstr "Calidad"
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
msgid "R0 Key Lifetime"
msgstr ""
@@ -2877,6 +2914,9 @@ msgstr "Desa i aplica"
msgid "Scan"
msgstr "Escaneja"
+msgid "Scan request failed"
+msgstr ""
+
msgid "Scheduled Tasks"
msgstr "Tasques programades"
@@ -2933,6 +2973,9 @@ msgstr ""
msgid "Short GI"
msgstr ""
+msgid "Short Preamble"
+msgstr ""
+
msgid "Show current backup file list"
msgstr ""
@@ -3034,6 +3077,9 @@ msgstr "Prioritat d'inici"
msgid "Starting configuration apply…"
msgstr ""
+msgid "Starting wireless scan..."
+msgstr ""
+
msgid "Startup"
msgstr "Arrencada"
@@ -3858,6 +3904,9 @@ msgstr "fitxer <abbr title=\"Domain Name System\">DNS</abbr> local"
msgid "minutes"
msgstr ""
+msgid "mixed WPA/WPA2"
+msgstr ""
+
msgid "no"
msgstr "no"
@@ -3933,6 +3982,9 @@ msgstr "sí"
msgid "« Back"
msgstr "« Enrere"
+#~ msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+#~ msgstr "<abbr title='Parella: %s / Grup: %s'>%s - %s</abbr>"
+
#~ msgid "Activate this network"
#~ msgstr "Activa aquesta xarxa"
diff --git a/modules/luci-base/po/cs/base.po b/modules/luci-base/po/cs/base.po
index 96c610e4c..4075c5b06 100644
--- a/modules/luci-base/po/cs/base.po
+++ b/modules/luci-base/po/cs/base.po
@@ -155,9 +155,6 @@ msgstr ""
msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
msgstr "Nejvyšší počet souběžných dotazů"
-msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-msgstr "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-
msgid ""
"<br/>Note: you need to manually restart the cron service if the crontab file "
"was empty before editing."
@@ -272,7 +269,13 @@ msgstr ""
msgid "Alert"
msgstr "Upozornění"
-msgid "Alias interface"
+msgid "Alias Interface"
+msgstr ""
+
+msgid "Alias of \"%s\""
+msgstr ""
+
+msgid "All Servers"
msgstr ""
msgid ""
@@ -286,6 +289,9 @@ msgstr ""
msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
msgstr "Povolit <abbr title=\"Secure Shell\">SSH</abbr> autentizaci heslem"
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
msgid "Allow all except listed"
msgstr "Povolit vše mimo uvedené"
@@ -319,6 +325,11 @@ msgstr ""
msgid "Always announce default router"
msgstr ""
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
msgid "Annex"
msgstr ""
@@ -510,6 +521,9 @@ msgstr "Zadána neplatná adresa!"
msgid "Band"
msgstr ""
+msgid "Beacon Interval"
+msgstr ""
+
msgid ""
"Below is the determined list of files to backup. It consists of changed "
"configuration files marked by opkg, essential base files and the user "
@@ -815,6 +829,9 @@ msgstr ""
msgid "DSL line mode"
msgstr ""
+msgid "DTIM Interval"
+msgstr ""
+
msgid "DUID"
msgstr "DUID"
@@ -853,6 +870,9 @@ msgstr "Odstranit"
msgid "Delete this network"
msgstr "Odstranit tuto síť"
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
msgid "Description"
msgstr "Popis"
@@ -911,6 +931,9 @@ msgstr "Zakázáno"
msgid "Disabled (default)"
msgstr ""
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
msgid "Discard upstream RFC1918 responses"
msgstr "Vyřadit upstream RFC1918 odpovědi"
@@ -1269,6 +1292,9 @@ msgstr "Nahrávám..."
msgid "Force"
msgstr "Vynutit"
+msgid "Force 40MHz mode"
+msgstr ""
+
msgid "Force CCMP (AES)"
msgstr "Vynutit CCMP (AES)"
@@ -1933,6 +1959,9 @@ msgstr ""
msgid "Lowest leased address as offset from the network address."
msgstr "Nejnižší zapůjčenou adresu použít jako offset síťové adresy."
+msgid "MAC"
+msgstr ""
+
msgid "MAC-Address"
msgstr "MAC-Adresa"
@@ -2175,6 +2204,9 @@ msgstr "Žádné heslo!"
msgid "No rules in this chain"
msgstr "Žádná pravidla v tomto řetězci"
+msgid "No scan results available yet..."
+msgstr ""
+
msgid "No zone assigned"
msgstr "Žádná zóna nepřiřazena"
@@ -2602,6 +2634,11 @@ msgstr ""
msgid "Quality"
msgstr "Kvalita"
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
msgid "R0 Key Lifetime"
msgstr ""
@@ -2891,6 +2928,9 @@ msgstr "Uložit & použít"
msgid "Scan"
msgstr "Skenovat"
+msgid "Scan request failed"
+msgstr ""
+
msgid "Scheduled Tasks"
msgstr "Naplánované úlohy"
@@ -2949,6 +2989,9 @@ msgstr ""
msgid "Short GI"
msgstr ""
+msgid "Short Preamble"
+msgstr ""
+
msgid "Show current backup file list"
msgstr "Ukázat aktuální seznam záložních souborů"
@@ -3055,6 +3098,9 @@ msgstr "Priorita spouštění"
msgid "Starting configuration apply…"
msgstr ""
+msgid "Starting wireless scan..."
+msgstr ""
+
msgid "Startup"
msgstr "Po spuštění"
@@ -3888,6 +3934,9 @@ msgstr "místní <abbr title=\"Domain Name System\">DNS</abbr> soubor"
msgid "minutes"
msgstr ""
+msgid "mixed WPA/WPA2"
+msgstr ""
+
msgid "no"
msgstr "ne"
@@ -3963,6 +4012,9 @@ msgstr "ano"
msgid "« Back"
msgstr "« Zpět"
+#~ msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+#~ msgstr "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+
#~ msgid "Activate this network"
#~ msgstr "Aktivovat tuto síť"
diff --git a/modules/luci-base/po/de/base.po b/modules/luci-base/po/de/base.po
index 9ea443751..fd7bb4c38 100644
--- a/modules/luci-base/po/de/base.po
+++ b/modules/luci-base/po/de/base.po
@@ -158,9 +158,6 @@ msgstr ""
msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
msgstr "<abbr title=\"maximal\">Max.</abbr> Anzahl gleichzeitiger Abfragen"
-msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-msgstr "<abbr title='Paarweise: %s / Gruppe: %s'>%s - %s</abbr>"
-
msgid ""
"<br/>Note: you need to manually restart the cron service if the crontab file "
"was empty before editing."
@@ -273,9 +270,15 @@ msgstr "Vollständige Sendeleistung (ACTATP)"
msgid "Alert"
msgstr "Alarm"
-msgid "Alias interface"
+msgid "Alias Interface"
msgstr "Alias-Schnittstelle"
+msgid "Alias of \"%s\""
+msgstr ""
+
+msgid "All Servers"
+msgstr ""
+
msgid ""
"Allocate IP addresses sequentially, starting from the lowest available "
"address"
@@ -289,6 +292,9 @@ msgstr "IPs sequenziell vergeben"
msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
msgstr "Erlaube Anmeldung per Passwort"
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
msgid "Allow all except listed"
msgstr "Alle außer gelistete erlauben"
@@ -324,6 +330,11 @@ msgstr "Erlaubte IP-Adressen"
msgid "Always announce default router"
msgstr "Immer Defaultrouter ankündigen"
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
msgid "Annex"
msgstr ""
@@ -523,6 +534,9 @@ msgstr "Ungültige Adresse angegeben!"
msgid "Band"
msgstr "Frequenztyp"
+msgid "Beacon Interval"
+msgstr ""
+
msgid ""
"Below is the determined list of files to backup. It consists of changed "
"configuration files marked by opkg, essential base files and the user "
@@ -850,6 +864,9 @@ msgstr ""
msgid "DSL line mode"
msgstr "DSL Leitungsmodus"
+msgid "DTIM Interval"
+msgstr ""
+
msgid "DUID"
msgstr "DUID"
@@ -888,6 +905,9 @@ msgstr "Löschen"
msgid "Delete this network"
msgstr "Dieses Netzwerk löschen"
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
msgid "Description"
msgstr "Beschreibung"
@@ -946,6 +966,9 @@ msgstr "Deaktiviert"
msgid "Disabled (default)"
msgstr "Deaktiviert (Standard)"
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
msgid "Discard upstream RFC1918 responses"
msgstr "Eingehende RFC1918-Antworten verwerfen"
@@ -1317,6 +1340,9 @@ msgstr "Firmware wird installiert..."
msgid "Force"
msgstr "Start erzwingen"
+msgid "Force 40MHz mode"
+msgstr ""
+
msgid "Force CCMP (AES)"
msgstr "CCMP (AES) erzwingen"
@@ -2010,6 +2036,9 @@ msgstr "Signalverlustsekunden (LOSS)"
msgid "Lowest leased address as offset from the network address."
msgstr "Kleinste vergebene Adresse (Netzwerkadresse + x)"
+msgid "MAC"
+msgstr ""
+
msgid "MAC-Address"
msgstr "MAC-Adresse"
@@ -2256,6 +2285,9 @@ msgstr "Kein Passwort gesetzt!"
msgid "No rules in this chain"
msgstr "Keine Regeln in dieser Kette"
+msgid "No scan results available yet..."
+msgstr ""
+
msgid "No zone assigned"
msgstr "Keine Zone zugewiesen"
@@ -2702,6 +2734,11 @@ msgstr ""
msgid "Quality"
msgstr "Qualität"
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
msgid "R0 Key Lifetime"
msgstr "R0-Schlüsselgültigkeit"
@@ -3005,6 +3042,9 @@ msgstr "Speichern & Anwenden"
msgid "Scan"
msgstr "Scan"
+msgid "Scan request failed"
+msgstr ""
+
msgid "Scheduled Tasks"
msgstr "Geplante Aufgaben"
@@ -3066,6 +3106,9 @@ msgstr "schwerwiegende Fehlersekunden (SES)"
msgid "Short GI"
msgstr "kurzes Guardintervall"
+msgid "Short Preamble"
+msgstr ""
+
msgid "Show current backup file list"
msgstr "Zeige aktuelle Liste der gesicherten Dateien"
@@ -3179,6 +3222,9 @@ msgstr "Startpriorität"
msgid "Starting configuration apply…"
msgstr "Starte Anwendung der Konfigurationsänderungen..."
+msgid "Starting wireless scan..."
+msgstr ""
+
msgid "Startup"
msgstr "Systemstart"
@@ -4056,6 +4102,9 @@ msgstr "Lokale DNS-Datei"
msgid "minutes"
msgstr "Minuten"
+msgid "mixed WPA/WPA2"
+msgstr ""
+
msgid "no"
msgstr "nein"
@@ -4131,6 +4180,9 @@ msgstr "ja"
msgid "« Back"
msgstr "« Zurück"
+#~ msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+#~ msgstr "<abbr title='Paarweise: %s / Gruppe: %s'>%s - %s</abbr>"
+
#~ msgid "Activate this network"
#~ msgstr "Dieses Netzwerk aktivieren"
diff --git a/modules/luci-base/po/el/base.po b/modules/luci-base/po/el/base.po
index 94657c60f..cb5706930 100644
--- a/modules/luci-base/po/el/base.po
+++ b/modules/luci-base/po/el/base.po
@@ -158,9 +158,6 @@ msgstr ""
msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
msgstr "<abbr title=\"μέγιστο\">Μεγ.</abbr> πλήθος ταυτόχρονων ερωτηματων"
-msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-msgstr ""
-
msgid ""
"<br/>Note: you need to manually restart the cron service if the crontab file "
"was empty before editing."
@@ -274,7 +271,13 @@ msgstr ""
msgid "Alert"
msgstr "Ειδοποίηση"
-msgid "Alias interface"
+msgid "Alias Interface"
+msgstr ""
+
+msgid "Alias of \"%s\""
+msgstr ""
+
+msgid "All Servers"
msgstr ""
msgid ""
@@ -290,6 +293,9 @@ msgstr ""
"Επιτρέπει την εξουσιοδότηση <abbr title=\"Secure Shell\">SSH</abbr> με "
"κωδικό πρόσβασης"
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
msgid "Allow all except listed"
msgstr "Να επιτρέπονται όλες, εκτός από αυτές στη λίστα"
@@ -326,6 +332,11 @@ msgstr ""
msgid "Always announce default router"
msgstr ""
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
msgid "Annex"
msgstr ""
@@ -518,6 +529,9 @@ msgstr "Μη έγκυρη διεύθυνση!"
msgid "Band"
msgstr ""
+msgid "Beacon Interval"
+msgstr ""
+
msgid ""
"Below is the determined list of files to backup. It consists of changed "
"configuration files marked by opkg, essential base files and the user "
@@ -824,6 +838,9 @@ msgstr ""
msgid "DSL line mode"
msgstr ""
+msgid "DTIM Interval"
+msgstr ""
+
msgid "DUID"
msgstr ""
@@ -862,6 +879,9 @@ msgstr "Διαγραφή"
msgid "Delete this network"
msgstr "Διαγραφή αυτού του δικτύου"
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
msgid "Description"
msgstr "Περιγραφή"
@@ -920,6 +940,9 @@ msgstr "Απενεργοποιημένο"
msgid "Disabled (default)"
msgstr ""
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
msgid "Discard upstream RFC1918 responses"
msgstr "Αγνόησε τις απαντήσεις ανοδικής ροής RFC1918"
@@ -1282,6 +1305,9 @@ msgstr "Φλασάρεται..."
msgid "Force"
msgstr "Επιβολή"
+msgid "Force 40MHz mode"
+msgstr ""
+
msgid "Force CCMP (AES)"
msgstr "Επιβολή CCMP (AES)"
@@ -1939,6 +1965,9 @@ msgstr ""
msgid "Lowest leased address as offset from the network address."
msgstr ""
+msgid "MAC"
+msgstr ""
+
msgid "MAC-Address"
msgstr "MAC-Διεύθυνση"
@@ -2183,6 +2212,9 @@ msgstr "Δεν έχει οριστεί κωδικός πρόσβασης!"
msgid "No rules in this chain"
msgstr "Δεν υπάρχει κανόνας σε αυτή την αλυσίδα"
+msgid "No scan results available yet..."
+msgstr ""
+
msgid "No zone assigned"
msgstr "Δεν έχει ανατεθεί ζώνη"
@@ -2608,6 +2640,11 @@ msgstr ""
msgid "Quality"
msgstr ""
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
msgid "R0 Key Lifetime"
msgstr ""
@@ -2895,6 +2932,9 @@ msgstr "Αποθήκευση & Εφαρμογή"
msgid "Scan"
msgstr "Σάρωση"
+msgid "Scan request failed"
+msgstr ""
+
msgid "Scheduled Tasks"
msgstr "Προγραμματισμένες Εργασίες"
@@ -2951,6 +2991,9 @@ msgstr ""
msgid "Short GI"
msgstr ""
+msgid "Short Preamble"
+msgstr ""
+
msgid "Show current backup file list"
msgstr ""
@@ -3054,6 +3097,9 @@ msgstr "Προτεραιότητα εκκίνησης"
msgid "Starting configuration apply…"
msgstr ""
+msgid "Starting wireless scan..."
+msgstr ""
+
msgid "Startup"
msgstr "Εκκίνηση"
@@ -3853,6 +3899,9 @@ msgstr "τοπικό αρχείο <abbr title=\"Domain Name System\">DNS</abbr>"
msgid "minutes"
msgstr ""
+msgid "mixed WPA/WPA2"
+msgstr ""
+
msgid "no"
msgstr "όχι"
diff --git a/modules/luci-base/po/en/base.po b/modules/luci-base/po/en/base.po
index 3aaaca2b5..dc5c22a65 100644
--- a/modules/luci-base/po/en/base.po
+++ b/modules/luci-base/po/en/base.po
@@ -158,9 +158,6 @@ msgstr ""
msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
msgstr "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
-msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-msgstr ""
-
msgid ""
"<br/>Note: you need to manually restart the cron service if the crontab file "
"was empty before editing."
@@ -271,7 +268,13 @@ msgstr ""
msgid "Alert"
msgstr "Alert"
-msgid "Alias interface"
+msgid "Alias Interface"
+msgstr ""
+
+msgid "Alias of \"%s\""
+msgstr ""
+
+msgid "All Servers"
msgstr ""
msgid ""
@@ -285,6 +288,9 @@ msgstr ""
msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
msgstr "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
msgid "Allow all except listed"
msgstr "Allow all except listed"
@@ -317,6 +323,11 @@ msgstr ""
msgid "Always announce default router"
msgstr ""
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
msgid "Annex"
msgstr ""
@@ -508,6 +519,9 @@ msgstr "Bad address specified!"
msgid "Band"
msgstr ""
+msgid "Beacon Interval"
+msgstr ""
+
msgid ""
"Below is the determined list of files to backup. It consists of changed "
"configuration files marked by opkg, essential base files and the user "
@@ -812,6 +826,9 @@ msgstr ""
msgid "DSL line mode"
msgstr ""
+msgid "DTIM Interval"
+msgstr ""
+
msgid "DUID"
msgstr ""
@@ -851,6 +868,9 @@ msgstr "Delete"
msgid "Delete this network"
msgstr "Delete this network"
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
msgid "Description"
msgstr "Description"
@@ -907,6 +927,9 @@ msgstr "Disabled"
msgid "Disabled (default)"
msgstr ""
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
msgid "Discard upstream RFC1918 responses"
msgstr ""
@@ -1259,6 +1282,9 @@ msgstr ""
msgid "Force"
msgstr "Force"
+msgid "Force 40MHz mode"
+msgstr ""
+
msgid "Force CCMP (AES)"
msgstr ""
@@ -1909,6 +1935,9 @@ msgstr ""
msgid "Lowest leased address as offset from the network address."
msgstr ""
+msgid "MAC"
+msgstr ""
+
msgid "MAC-Address"
msgstr ""
@@ -2151,6 +2180,9 @@ msgstr ""
msgid "No rules in this chain"
msgstr "No rules in this chain"
+msgid "No scan results available yet..."
+msgstr ""
+
msgid "No zone assigned"
msgstr ""
@@ -2575,6 +2607,11 @@ msgstr ""
msgid "Quality"
msgstr ""
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
msgid "R0 Key Lifetime"
msgstr ""
@@ -2861,6 +2898,9 @@ msgstr "Save & Apply"
msgid "Scan"
msgstr "Scan"
+msgid "Scan request failed"
+msgstr ""
+
msgid "Scheduled Tasks"
msgstr "Scheduled Tasks"
@@ -2916,6 +2956,9 @@ msgstr ""
msgid "Short GI"
msgstr ""
+msgid "Short Preamble"
+msgstr ""
+
msgid "Show current backup file list"
msgstr ""
@@ -3017,6 +3060,9 @@ msgstr "Start priority"
msgid "Starting configuration apply…"
msgstr ""
+msgid "Starting wireless scan..."
+msgstr ""
+
msgid "Startup"
msgstr ""
@@ -3810,6 +3856,9 @@ msgstr "local <abbr title=\"Domain Name System\">DNS</abbr> file"
msgid "minutes"
msgstr ""
+msgid "mixed WPA/WPA2"
+msgstr ""
+
msgid "no"
msgstr ""
diff --git a/modules/luci-base/po/es/base.po b/modules/luci-base/po/es/base.po
index 0b5f85b9a..635dc1160 100644
--- a/modules/luci-base/po/es/base.po
+++ b/modules/luci-base/po/es/base.po
@@ -160,9 +160,6 @@ msgstr "Tamaño máximo de paquetes EDNS0"
msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
msgstr "Máximo número de consultas concurrentes"
-msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-msgstr "<abbr title='Pairwise: %s / Grupo: %s'>%s - %s</abbr>"
-
msgid ""
"<br/>Note: you need to manually restart the cron service if the crontab file "
"was empty before editing."
@@ -275,7 +272,13 @@ msgstr ""
msgid "Alert"
msgstr "Alerta"
-msgid "Alias interface"
+msgid "Alias Interface"
+msgstr ""
+
+msgid "Alias of \"%s\""
+msgstr ""
+
+msgid "All Servers"
msgstr ""
msgid ""
@@ -291,6 +294,9 @@ msgstr ""
"Permitir autenticación de contraseña via <abbr title=\"Secure Shell\">SSH</"
"abbr>"
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
msgid "Allow all except listed"
msgstr "Permitir a todos excepto a los de la lista"
@@ -323,6 +329,11 @@ msgstr ""
msgid "Always announce default router"
msgstr ""
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
msgid "Annex"
msgstr ""
@@ -514,6 +525,9 @@ msgstr "¡Dirección no válida!"
msgid "Band"
msgstr ""
+msgid "Beacon Interval"
+msgstr ""
+
msgid ""
"Below is the determined list of files to backup. It consists of changed "
"configuration files marked by opkg, essential base files and the user "
@@ -821,6 +835,9 @@ msgstr ""
msgid "DSL line mode"
msgstr ""
+msgid "DTIM Interval"
+msgstr ""
+
msgid "DUID"
msgstr "DUID"
@@ -860,6 +877,9 @@ msgstr "Eliminar"
msgid "Delete this network"
msgstr "Borrar esta red"
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
msgid "Description"
msgstr "Descripción"
@@ -918,6 +938,9 @@ msgstr "Desactivar"
msgid "Disabled (default)"
msgstr ""
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
msgid "Discard upstream RFC1918 responses"
msgstr "Descartar respuestas RFC1918 salientes"
@@ -1277,6 +1300,9 @@ msgstr "Grabando..."
msgid "Force"
msgstr "Forzar"
+msgid "Force 40MHz mode"
+msgstr ""
+
msgid "Force CCMP (AES)"
msgstr "Forzar CCMP (AES)"
@@ -1948,6 +1974,9 @@ msgstr ""
msgid "Lowest leased address as offset from the network address."
msgstr "Dirección cedida más baja como diferencia de la dirección de red."
+msgid "MAC"
+msgstr ""
+
msgid "MAC-Address"
msgstr "Dirección MAC"
@@ -2190,6 +2219,9 @@ msgstr "¡Sin contraseña!"
msgid "No rules in this chain"
msgstr "No hay reglas en esta cadena"
+msgid "No scan results available yet..."
+msgstr ""
+
msgid "No zone assigned"
msgstr "Sin zona asignada"
@@ -2617,6 +2649,11 @@ msgstr ""
msgid "Quality"
msgstr "Calidad"
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
msgid "R0 Key Lifetime"
msgstr ""
@@ -2906,6 +2943,9 @@ msgstr "Guardar y aplicar"
msgid "Scan"
msgstr "Explorar"
+msgid "Scan request failed"
+msgstr ""
+
msgid "Scheduled Tasks"
msgstr "Tareas programadas"
@@ -2964,6 +3004,9 @@ msgstr ""
msgid "Short GI"
msgstr ""
+msgid "Short Preamble"
+msgstr ""
+
msgid "Show current backup file list"
msgstr "Mostrar lista de ficheros a salvar"
@@ -3073,6 +3116,9 @@ msgstr "Prioridad de arranque"
msgid "Starting configuration apply…"
msgstr ""
+msgid "Starting wireless scan..."
+msgstr ""
+
msgid "Startup"
msgstr "Arranque"
@@ -3917,6 +3963,9 @@ msgstr "Archvo <abbr title=\"Domain Name System\">DNS</abbr> local"
msgid "minutes"
msgstr ""
+msgid "mixed WPA/WPA2"
+msgstr ""
+
msgid "no"
msgstr "no"
@@ -3992,6 +4041,9 @@ msgstr "sí"
msgid "« Back"
msgstr "« Volver"
+#~ msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+#~ msgstr "<abbr title='Pairwise: %s / Grupo: %s'>%s - %s</abbr>"
+
#~ msgid "Activate this network"
#~ msgstr "Activar esta red"
diff --git a/modules/luci-base/po/fr/base.po b/modules/luci-base/po/fr/base.po
index 72fbbecb7..3805627b6 100644
--- a/modules/luci-base/po/fr/base.po
+++ b/modules/luci-base/po/fr/base.po
@@ -159,9 +159,6 @@ msgstr ""
msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
msgstr "Maximum de requêtes concurrentes"
-msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-msgstr "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-
msgid ""
"<br/>Note: you need to manually restart the cron service if the crontab file "
"was empty before editing."
@@ -277,7 +274,13 @@ msgstr ""
msgid "Alert"
msgstr "Alerte"
-msgid "Alias interface"
+msgid "Alias Interface"
+msgstr ""
+
+msgid "Alias of \"%s\""
+msgstr ""
+
+msgid "All Servers"
msgstr ""
msgid ""
@@ -293,6 +296,9 @@ msgstr ""
"Autoriser l'authentification <abbr title=\"Secure Shell\">SSH</abbr> par mot "
"de passe"
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
msgid "Allow all except listed"
msgstr "Autoriser tout sauf ce qui est listé"
@@ -329,6 +335,11 @@ msgstr ""
msgid "Always announce default router"
msgstr ""
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
msgid "Annex"
msgstr ""
@@ -520,6 +531,9 @@ msgstr "Adresse spécifiée incorrecte!"
msgid "Band"
msgstr ""
+msgid "Beacon Interval"
+msgstr ""
+
msgid ""
"Below is the determined list of files to backup. It consists of changed "
"configuration files marked by opkg, essential base files and the user "
@@ -827,6 +841,9 @@ msgstr ""
msgid "DSL line mode"
msgstr ""
+msgid "DTIM Interval"
+msgstr ""
+
msgid "DUID"
msgstr "DUID"
@@ -866,6 +883,9 @@ msgstr "Effacer"
msgid "Delete this network"
msgstr "Supprimer ce réseau"
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
msgid "Description"
msgstr "Description"
@@ -924,6 +944,9 @@ msgstr "Désactivé"
msgid "Disabled (default)"
msgstr ""
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
msgid "Discard upstream RFC1918 responses"
msgstr "Jeter les réponses en RFC1918 amont"
@@ -1288,6 +1311,9 @@ msgstr "Écriture…"
msgid "Force"
msgstr "Forcer"
+msgid "Force 40MHz mode"
+msgstr ""
+
msgid "Force CCMP (AES)"
msgstr "Forcer CCMP (AES)"
@@ -1961,6 +1987,9 @@ msgstr ""
"Adresse allouée la plus basse, spécifiée par un décalage à partir de "
"l'adresse réseau."
+msgid "MAC"
+msgstr ""
+
msgid "MAC-Address"
msgstr "Adresse MAC"
@@ -2203,6 +2232,9 @@ msgstr "Pas de mot de passe positionné !"
msgid "No rules in this chain"
msgstr "Aucune règle dans cette chaîne"
+msgid "No scan results available yet..."
+msgstr ""
+
msgid "No zone assigned"
msgstr "Aucune zone attribuée"
@@ -2629,6 +2661,11 @@ msgstr ""
msgid "Quality"
msgstr "Qualitée"
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
msgid "R0 Key Lifetime"
msgstr ""
@@ -2918,6 +2955,9 @@ msgstr "Sauvegarder et Appliquer"
msgid "Scan"
msgstr "Scan"
+msgid "Scan request failed"
+msgstr ""
+
msgid "Scheduled Tasks"
msgstr "Tâches Régulières"
@@ -2976,6 +3016,9 @@ msgstr ""
msgid "Short GI"
msgstr ""
+msgid "Short Preamble"
+msgstr ""
+
msgid "Show current backup file list"
msgstr "Afficher la liste des fichiers de la sauvegarde actuelle"
@@ -3083,6 +3126,9 @@ msgstr "Priorité de démarrage"
msgid "Starting configuration apply…"
msgstr ""
+msgid "Starting wireless scan..."
+msgstr ""
+
msgid "Startup"
msgstr "Démarrage"
@@ -3934,6 +3980,9 @@ msgstr "fichier de résolution local"
msgid "minutes"
msgstr ""
+msgid "mixed WPA/WPA2"
+msgstr ""
+
msgid "no"
msgstr "non"
@@ -4009,6 +4058,9 @@ msgstr "oui"
msgid "« Back"
msgstr "« Retour"
+#~ msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+#~ msgstr "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+
#~ msgid "Activate this network"
#~ msgstr "Activer ce réseau"
diff --git a/modules/luci-base/po/he/base.po b/modules/luci-base/po/he/base.po
index 235e80dcf..6a5be78fe 100644
--- a/modules/luci-base/po/he/base.po
+++ b/modules/luci-base/po/he/base.po
@@ -149,9 +149,6 @@ msgstr ""
msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
msgstr ""
-msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-msgstr ""
-
msgid ""
"<br/>Note: you need to manually restart the cron service if the crontab file "
"was empty before editing."
@@ -269,7 +266,13 @@ msgstr ""
msgid "Alert"
msgstr "אזעקה"
-msgid "Alias interface"
+msgid "Alias Interface"
+msgstr ""
+
+msgid "Alias of \"%s\""
+msgstr ""
+
+msgid "All Servers"
msgstr ""
msgid ""
@@ -283,6 +286,9 @@ msgstr ""
msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
msgstr ""
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
#, fuzzy
msgid "Allow all except listed"
msgstr "אפשר הכל חוץ מהרשומים"
@@ -316,6 +322,11 @@ msgstr ""
msgid "Always announce default router"
msgstr ""
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
msgid "Annex"
msgstr ""
@@ -509,6 +520,9 @@ msgstr "פורטה כתובת לא תקינה"
msgid "Band"
msgstr ""
+msgid "Beacon Interval"
+msgstr ""
+
msgid ""
"Below is the determined list of files to backup. It consists of changed "
"configuration files marked by opkg, essential base files and the user "
@@ -806,6 +820,9 @@ msgstr ""
msgid "DSL line mode"
msgstr ""
+msgid "DTIM Interval"
+msgstr ""
+
msgid "DUID"
msgstr ""
@@ -844,6 +861,9 @@ msgstr "למחוק"
msgid "Delete this network"
msgstr "מחק רשת זו"
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
msgid "Description"
msgstr "תיאור"
@@ -900,6 +920,9 @@ msgstr ""
msgid "Disabled (default)"
msgstr ""
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
msgid "Discard upstream RFC1918 responses"
msgstr ""
@@ -1245,6 +1268,9 @@ msgstr ""
msgid "Force"
msgstr ""
+msgid "Force 40MHz mode"
+msgstr ""
+
msgid "Force CCMP (AES)"
msgstr ""
@@ -1885,6 +1911,9 @@ msgstr ""
msgid "Lowest leased address as offset from the network address."
msgstr ""
+msgid "MAC"
+msgstr ""
+
msgid "MAC-Address"
msgstr ""
@@ -2125,6 +2154,9 @@ msgstr "לא הוגדרה סיסמה!"
msgid "No rules in this chain"
msgstr ""
+msgid "No scan results available yet..."
+msgstr ""
+
msgid "No zone assigned"
msgstr ""
@@ -2543,6 +2575,11 @@ msgstr ""
msgid "Quality"
msgstr ""
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
msgid "R0 Key Lifetime"
msgstr ""
@@ -2825,6 +2862,9 @@ msgstr ""
msgid "Scan"
msgstr ""
+msgid "Scan request failed"
+msgstr ""
+
msgid "Scheduled Tasks"
msgstr ""
@@ -2881,6 +2921,9 @@ msgstr ""
msgid "Short GI"
msgstr ""
+msgid "Short Preamble"
+msgstr ""
+
msgid "Show current backup file list"
msgstr ""
@@ -2984,6 +3027,9 @@ msgstr ""
msgid "Starting configuration apply…"
msgstr ""
+msgid "Starting wireless scan..."
+msgstr ""
+
msgid "Startup"
msgstr "אתחול"
@@ -3756,6 +3802,9 @@ msgstr ""
msgid "minutes"
msgstr ""
+msgid "mixed WPA/WPA2"
+msgstr ""
+
msgid "no"
msgstr "לא"
diff --git a/modules/luci-base/po/hu/base.po b/modules/luci-base/po/hu/base.po
index 8f981a1b9..4b66806a8 100644
--- a/modules/luci-base/po/hu/base.po
+++ b/modules/luci-base/po/hu/base.po
@@ -156,9 +156,6 @@ msgstr ""
msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
msgstr "<abbr title=\"maximal\">Max.</abbr> párhuzamos lekérdezés"
-msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-msgstr "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-
msgid ""
"<br/>Note: you need to manually restart the cron service if the crontab file "
"was empty before editing."
@@ -272,7 +269,13 @@ msgstr ""
msgid "Alert"
msgstr "Riasztás"
-msgid "Alias interface"
+msgid "Alias Interface"
+msgstr ""
+
+msgid "Alias of \"%s\""
+msgstr ""
+
+msgid "All Servers"
msgstr ""
msgid ""
@@ -287,6 +290,9 @@ msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
msgstr ""
"<abbr title=\"Secure Shell\">SSH</abbr> jelszó hitelesítés engedélyezése"
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
msgid "Allow all except listed"
msgstr "Összes engedélyezése a felsoroltakon kívül"
@@ -322,6 +328,11 @@ msgstr ""
msgid "Always announce default router"
msgstr ""
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
msgid "Annex"
msgstr ""
@@ -513,6 +524,9 @@ msgstr "Hibás címet adott meg!"
msgid "Band"
msgstr ""
+msgid "Beacon Interval"
+msgstr ""
+
msgid ""
"Below is the determined list of files to backup. It consists of changed "
"configuration files marked by opkg, essential base files and the user "
@@ -822,6 +836,9 @@ msgstr ""
msgid "DSL line mode"
msgstr ""
+msgid "DTIM Interval"
+msgstr ""
+
msgid "DUID"
msgstr "DUID"
@@ -860,6 +877,9 @@ msgstr "Törlés"
msgid "Delete this network"
msgstr "Hálózat törlése"
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
msgid "Description"
msgstr "Leírás"
@@ -918,6 +938,9 @@ msgstr "Letiltva"
msgid "Disabled (default)"
msgstr ""
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
msgid "Discard upstream RFC1918 responses"
msgstr "Beérkező RFC1918 DHCP válaszok elvetése. "
@@ -1277,6 +1300,9 @@ msgstr "Flash-elés..."
msgid "Force"
msgstr "Kényszerítés"
+msgid "Force 40MHz mode"
+msgstr ""
+
msgid "Force CCMP (AES)"
msgstr "CCMP (AES) kényszerítése"
@@ -1950,6 +1976,9 @@ msgstr ""
msgid "Lowest leased address as offset from the network address."
msgstr "A legalacsonyabb bérleti címnek az interfész címétől való távolsága"
+msgid "MAC"
+msgstr ""
+
msgid "MAC-Address"
msgstr "MAC-cím"
@@ -2192,6 +2221,9 @@ msgstr "Nincs jelszó!"
msgid "No rules in this chain"
msgstr "Ez a lánc nem tartalmaz szabályokat"
+msgid "No scan results available yet..."
+msgstr ""
+
msgid "No zone assigned"
msgstr "Nincs hozzárendelt zóna"
@@ -2619,6 +2651,11 @@ msgstr ""
msgid "Quality"
msgstr "Minőség"
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
msgid "R0 Key Lifetime"
msgstr ""
@@ -2909,6 +2946,9 @@ msgstr "Mentés & Alkalmazás"
msgid "Scan"
msgstr "Felderítés"
+msgid "Scan request failed"
+msgstr ""
+
msgid "Scheduled Tasks"
msgstr "Ütemezett feladatok"
@@ -2967,6 +3007,9 @@ msgstr ""
msgid "Short GI"
msgstr ""
+msgid "Short Preamble"
+msgstr ""
+
msgid "Show current backup file list"
msgstr "Mentendő fájlok aktuális listájának megjelenítése"
@@ -3074,6 +3117,9 @@ msgstr "Indítás prioritása"
msgid "Starting configuration apply…"
msgstr ""
+msgid "Starting wireless scan..."
+msgstr ""
+
msgid "Startup"
msgstr "Rendszerindítás"
@@ -3923,6 +3969,9 @@ msgstr "helyi <abbr title=\"Domain Name System\">DNS</abbr> fájl"
msgid "minutes"
msgstr ""
+msgid "mixed WPA/WPA2"
+msgstr ""
+
msgid "no"
msgstr "nem"
@@ -3998,6 +4047,9 @@ msgstr "igen"
msgid "« Back"
msgstr "« Vissza"
+#~ msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+#~ msgstr "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+
#~ msgid "Activate this network"
#~ msgstr "Hálózat aktiválása"
diff --git a/modules/luci-base/po/it/base.po b/modules/luci-base/po/it/base.po
index 6f7494124..1fe6d06cb 100644
--- a/modules/luci-base/po/it/base.po
+++ b/modules/luci-base/po/it/base.po
@@ -161,9 +161,6 @@ msgstr ""
msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
msgstr "<abbr title=\"maximal\">Max.</abbr> Richiesta in uso"
-msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-msgstr "<abbr title='Accoppiata: %s / Gruppo: %s'>%s - %s</abbr>"
-
msgid ""
"<br/>Note: you need to manually restart the cron service if the crontab file "
"was empty before editing."
@@ -281,7 +278,13 @@ msgstr ""
msgid "Alert"
msgstr "Allerta"
-msgid "Alias interface"
+msgid "Alias Interface"
+msgstr ""
+
+msgid "Alias of \"%s\""
+msgstr ""
+
+msgid "All Servers"
msgstr ""
msgid ""
@@ -297,6 +300,9 @@ msgstr ""
"Permetti autenticazione <abbr title=\"Secure Shell\">SSH</abbr> tramite "
"password"
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
msgid "Allow all except listed"
msgstr "Consenti tutti tranne quelli nell'elenco"
@@ -331,6 +337,11 @@ msgstr ""
msgid "Always announce default router"
msgstr ""
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
msgid "Annex"
msgstr ""
@@ -522,6 +533,9 @@ msgstr "E' stato specificato un indirizzo errato!"
msgid "Band"
msgstr ""
+msgid "Beacon Interval"
+msgstr ""
+
msgid ""
"Below is the determined list of files to backup. It consists of changed "
"configuration files marked by opkg, essential base files and the user "
@@ -828,6 +842,9 @@ msgstr ""
msgid "DSL line mode"
msgstr ""
+msgid "DTIM Interval"
+msgstr ""
+
msgid "DUID"
msgstr "DUID"
@@ -867,6 +884,9 @@ msgstr "Elimina"
msgid "Delete this network"
msgstr "Rimuovi questa rete"
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
msgid "Description"
msgstr "Descrizione"
@@ -925,6 +945,9 @@ msgstr "Disabilitato"
msgid "Disabled (default)"
msgstr "Disabilitato (default)"
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
msgid "Discard upstream RFC1918 responses"
msgstr "Ignora risposte RFC1918 upstream"
@@ -1282,6 +1305,9 @@ msgstr "Flashing..."
msgid "Force"
msgstr "Forza"
+msgid "Force 40MHz mode"
+msgstr ""
+
msgid "Force CCMP (AES)"
msgstr "Forza CCMP (AES)"
@@ -1951,6 +1977,9 @@ msgstr ""
msgid "Lowest leased address as offset from the network address."
msgstr ""
+msgid "MAC"
+msgstr ""
+
msgid "MAC-Address"
msgstr ""
@@ -2193,6 +2222,9 @@ msgstr "Nessuna password immessa!"
msgid "No rules in this chain"
msgstr "Nessuna regola in questa catena"
+msgid "No scan results available yet..."
+msgstr ""
+
msgid "No zone assigned"
msgstr "Nessuna zona assegnata"
@@ -2618,6 +2650,11 @@ msgstr ""
msgid "Quality"
msgstr "Qualità"
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
msgid "R0 Key Lifetime"
msgstr ""
@@ -2907,6 +2944,9 @@ msgstr "Salva & applica"
msgid "Scan"
msgstr "Scan"
+msgid "Scan request failed"
+msgstr ""
+
msgid "Scheduled Tasks"
msgstr "Operazioni programmate"
@@ -2962,6 +3002,9 @@ msgstr ""
msgid "Short GI"
msgstr ""
+msgid "Short Preamble"
+msgstr ""
+
msgid "Show current backup file list"
msgstr ""
@@ -3071,6 +3114,9 @@ msgstr "Priorità di avvio"
msgid "Starting configuration apply…"
msgstr ""
+msgid "Starting wireless scan..."
+msgstr ""
+
msgid "Startup"
msgstr "Avvio"
@@ -3893,6 +3939,9 @@ msgstr "File <abbr title=\"Sistema Nome Dominio\">DNS</abbr> locale"
msgid "minutes"
msgstr ""
+msgid "mixed WPA/WPA2"
+msgstr ""
+
msgid "no"
msgstr "no"
@@ -3968,6 +4017,9 @@ msgstr "Sì"
msgid "« Back"
msgstr "« Indietro"
+#~ msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+#~ msgstr "<abbr title='Accoppiata: %s / Gruppo: %s'>%s - %s</abbr>"
+
#~ msgid "Activate this network"
#~ msgstr "Attiva questa rete"
diff --git a/modules/luci-base/po/ja/base.po b/modules/luci-base/po/ja/base.po
index 602963ab0..fd60f84da 100644
--- a/modules/luci-base/po/ja/base.po
+++ b/modules/luci-base/po/ja/base.po
@@ -3,14 +3,14 @@ msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-06-10 03:40+0200\n"
-"PO-Revision-Date: 2018-07-07 17:55+0900\n"
+"PO-Revision-Date: 2018-07-20 15:27+0900\n"
"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 2.0.7\n"
+"X-Generator: Poedit 2.0.8\n"
"Language-Team: \n"
msgid "%.1f dB"
@@ -159,9 +159,6 @@ msgstr ""
msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
msgstr "<abbr title=\"maximal\">最大</abbr> 並列処理クエリ"
-msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-msgstr ""
-
msgid ""
"<br/>Note: you need to manually restart the cron service if the crontab file "
"was empty before editing."
@@ -275,9 +272,15 @@ msgstr ""
msgid "Alert"
msgstr "警告"
-msgid "Alias interface"
+msgid "Alias Interface"
+msgstr ""
+
+msgid "Alias of \"%s\""
msgstr ""
+msgid "All Servers"
+msgstr "全てのサーバー"
+
msgid ""
"Allocate IP addresses sequentially, starting from the lowest available "
"address"
@@ -289,11 +292,14 @@ msgstr ""
msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
msgstr "<abbr title=\"Secure Shell\">SSH</abbr> パスワード認証を許可します。"
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr "AP モード動作時に、低 ACK(確認応答)状態の STA の切断を許可します。"
+
msgid "Allow all except listed"
msgstr "リスト内の端末からのアクセスを禁止"
msgid "Allow legacy 802.11b rates"
-msgstr ""
+msgstr "レガシー 802.11b レートを許可"
msgid "Allow listed only"
msgstr "リスト内の端末からのアクセスを許可"
@@ -319,7 +325,14 @@ msgid "Allowed IPs"
msgstr "許可されるIP"
msgid "Always announce default router"
-msgstr "常にデフォルト ルーターとして通知する"
+msgstr "常にデフォルト ルーターを通知する"
+
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+"セカンダリ チャンネルの重複にかかわらず、常に 40MHz チャンネルを使用します。"
+"このオプションの使用は、 IEEE 802.11n-2009 に準拠しません!"
msgid "Annex"
msgstr ""
@@ -419,7 +432,7 @@ msgid ""
msgstr ""
msgid "Associated Stations"
-msgstr "認証済み端末"
+msgstr "アソシエーション済み端末"
msgid "Associations"
msgstr "アソシエーション数"
@@ -514,6 +527,9 @@ msgstr "無効なアドレスです!"
msgid "Band"
msgstr ""
+msgid "Beacon Interval"
+msgstr "ビーコン間隔"
+
msgid ""
"Below is the determined list of files to backup. It consists of changed "
"configuration files marked by opkg, essential base files and the user "
@@ -715,7 +731,7 @@ msgid "Connection Limit"
msgstr "接続制限"
msgid "Connection attempt failed"
-msgstr ""
+msgstr "接続の試行が失敗しました"
msgid "Connections"
msgstr "ネットワーク接続"
@@ -837,6 +853,9 @@ msgstr "DSL ステータス"
msgid "DSL line mode"
msgstr ""
+msgid "DTIM Interval"
+msgstr "DTIM インターバル"
+
msgid "DUID"
msgstr "DUID"
@@ -875,6 +894,9 @@ msgstr "削除"
msgid "Delete this network"
msgstr "ネットワークを削除します"
+msgid "Delivery Traffic Indication Message Interval"
+msgstr "Delivery Traffic Indication Message インターバル"
+
msgid "Description"
msgstr "詳細"
@@ -925,7 +947,7 @@ msgid "Disable Encryption"
msgstr "暗号化を無効にする"
msgid "Disable this network"
-msgstr ""
+msgstr "このネットワークを無効化"
msgid "Disabled"
msgstr "無効"
@@ -933,11 +955,14 @@ msgstr "無効"
msgid "Disabled (default)"
msgstr "無効(デフォルト)"
+msgid "Disassociate On Low Acknowledgement"
+msgstr "低 Acknowledgement 時のアソシエーション解除"
+
msgid "Discard upstream RFC1918 responses"
msgstr "RFC1918の応答を破棄します"
msgid "Disconnection attempt failed"
-msgstr ""
+msgstr "切断の試行が失敗しました"
msgid "Dismiss"
msgstr "警告の除去"
@@ -1046,6 +1071,8 @@ msgid ""
"Edit the raw configuration data above to fix any error and hit \"Save\" to "
"reload the page."
msgstr ""
+"上記の設定データを直接編集してエラーを修正し、 \"保存\" ボタンを押してこの"
+"ページをリロードします。"
msgid "Edit this interface"
msgstr "インターフェースを編集"
@@ -1115,7 +1142,7 @@ msgid "Enable this mount"
msgstr "マウント設定を有効にする"
msgid "Enable this network"
-msgstr ""
+msgstr "このネットワークを有効化"
msgid "Enable this swap"
msgstr "スワップ設定を有効にする"
@@ -1133,6 +1160,8 @@ msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
"Domain"
msgstr ""
+"同一のモビリティ ドメイン(モビリティ グループ)に属するアクセスポイント間の"
+"高速ローミングを有効にします。"
msgid "Enables the Spanning Tree Protocol on this bridge"
msgstr "スパニングツリー プロトコルを有効にする"
@@ -1150,10 +1179,10 @@ msgid "Endpoint Port"
msgstr "エンドポイント ポート"
msgid "Enter custom value"
-msgstr ""
+msgstr "カスタム値を入力"
msgid "Enter custom values"
-msgstr ""
+msgstr "カスタム値を入力"
msgid "Erasing..."
msgstr "消去中..."
@@ -1294,6 +1323,9 @@ msgstr "更新中..."
msgid "Force"
msgstr "強制"
+msgid "Force 40MHz mode"
+msgstr "強制 40MHz モード"
+
msgid "Force CCMP (AES)"
msgstr "CCMP (AES) を使用"
@@ -1360,7 +1392,7 @@ msgid "Gateway"
msgstr "ゲートウェイ"
msgid "Gateway address is invalid"
-msgstr ""
+msgstr "無効なゲートウェイ アドレスです"
msgid "Gateway ports"
msgstr "ゲートウェイ ポート"
@@ -1474,10 +1506,10 @@ msgid "IP address"
msgstr "IPアドレス"
msgid "IP address in invalid"
-msgstr ""
+msgstr "無効な IP アドレスです"
msgid "IP address is missing"
-msgstr ""
+msgstr "IP アドレスがありません"
msgid "IPv4"
msgstr "IPv4"
@@ -1892,7 +1924,7 @@ msgid "Loading"
msgstr "ロード中"
msgid "Local IP address is invalid"
-msgstr ""
+msgstr "無効なローカル IP アドレスです"
msgid "Local IP address to assign"
msgstr "割り当てるローカル IPアドレス"
@@ -1963,6 +1995,9 @@ msgid "Lowest leased address as offset from the network address."
msgstr ""
"ネットワークアドレスをオフセットとして、最小のアドレスを設定してください"
+msgid "MAC"
+msgstr ""
+
msgid "MAC-Address"
msgstr "MAC-アドレス"
@@ -1979,7 +2014,7 @@ msgid "MAP / LW4over6"
msgstr "MAP / LW4over6"
msgid "MAP rule is invalid"
-msgstr ""
+msgstr "無効な MAP ルールです"
msgid "MB/s"
msgstr "MB/s"
@@ -2052,7 +2087,7 @@ msgid "Missing protocol extension for proto %q"
msgstr "プロトコル %qのプロトコル拡張が見つかりません"
msgid "Mobility Domain"
-msgstr ""
+msgstr "モビリティ ドメイン"
msgid "Mode"
msgstr "モード"
@@ -2164,7 +2199,7 @@ msgid "Network boot image"
msgstr "ネットワークブート用イメージ"
msgid "Network device is not present"
-msgstr ""
+msgstr "ネットワーク デバイスが存在しません"
msgid "Network without interfaces."
msgstr "インターフェースの無いネットワークです。"
@@ -2208,6 +2243,9 @@ msgstr "パスワードが設定されていません!"
msgid "No rules in this chain"
msgstr "チェイン内にルールがありません"
+msgid "No scan results available yet..."
+msgstr "利用可能なスキャン結果はまだありません..."
+
msgid "No zone assigned"
msgstr "ゾーンが設定されていません"
@@ -2432,7 +2470,7 @@ msgid "PIN"
msgstr "PIN"
msgid "PIN code rejected"
-msgstr ""
+msgstr "PIN コードが拒否されました"
msgid "PMK R1 Push"
msgstr ""
@@ -2522,7 +2560,7 @@ msgid "Peer IP address to assign"
msgstr ""
msgid "Peer address is missing"
-msgstr ""
+msgstr "ピアのアドレスがありません"
msgid "Peers"
msgstr "ピア"
@@ -2642,6 +2680,13 @@ msgstr ""
msgid "Quality"
msgstr "クオリティ"
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+"アップストリームの利用可能な全 <abbr title=\"Domain Name System\">DNS</abbr> "
+"サーバを問い合わせます"
+
msgid "R0 Key Lifetime"
msgstr ""
@@ -2845,7 +2890,7 @@ msgid "Restart Firewall"
msgstr "ファイアウォールの再起動"
msgid "Restart radio interface"
-msgstr ""
+msgstr "無線インターフェースの再起動"
msgid "Restore"
msgstr "復元"
@@ -2938,6 +2983,9 @@ msgstr "保存 & 適用"
msgid "Scan"
msgstr "スキャン"
+msgid "Scan request failed"
+msgstr "スキャン要求が失敗しました"
+
msgid "Scheduled Tasks"
msgstr "スケジュールタスク"
@@ -2995,6 +3043,9 @@ msgstr ""
msgid "Short GI"
msgstr "Short GI"
+msgid "Short Preamble"
+msgstr "Short Preamble"
+
msgid "Show current backup file list"
msgstr "現在のバックアップファイルのリストを表示する"
@@ -3099,6 +3150,9 @@ msgstr "優先順位"
msgid "Starting configuration apply…"
msgstr "設定の適用を開始しています..."
+msgid "Starting wireless scan..."
+msgstr "無線LANのスキャンを開始しています..."
+
msgid "Startup"
msgstr "スタートアップ"
@@ -3565,13 +3619,13 @@ msgid "UUID"
msgstr "UUID"
msgid "Unable to determine device name"
-msgstr ""
+msgstr "デバイス名を確定できません"
msgid "Unable to determine external IP address"
-msgstr ""
+msgstr "外部 IP アドレスを確定できません"
msgid "Unable to determine upstream interface"
-msgstr ""
+msgstr "アップストリーム インターフェースを確定できません"
msgid "Unable to dispatch"
msgstr "ディスパッチできません"
@@ -3580,10 +3634,10 @@ msgid "Unable to obtain client ID"
msgstr ""
msgid "Unable to resolve AFTR host name"
-msgstr ""
+msgstr "AFTR ホスト名を解決できません"
msgid "Unable to resolve peer host name"
-msgstr ""
+msgstr "ピアのホスト名を解決できません"
msgid "Unavailable Seconds (UAS)"
msgstr ""
@@ -3595,7 +3649,7 @@ msgid "Unknown Error, password not changed!"
msgstr "不明なエラーです。パスワードは変更されていません!"
msgid "Unknown error (%s)"
-msgstr ""
+msgstr "不明なエラー (%s)"
msgid "Unmanaged"
msgstr "Unmanaged"
@@ -3607,7 +3661,7 @@ msgid "Unsaved Changes"
msgstr "保存されていない変更"
msgid "Unsupported MAP type"
-msgstr ""
+msgstr "非対応の MAP タイプです"
msgid "Unsupported modem"
msgstr ""
@@ -3757,7 +3811,7 @@ msgid "Version"
msgstr "バージョン"
msgid "Virtual dynamic interface"
-msgstr ""
+msgstr "仮想ダイナミックインターフェース"
msgid "WDS"
msgstr "WDS"
@@ -3830,7 +3884,7 @@ msgid "Wireless Security"
msgstr "無線LANセキュリティ"
msgid "Wireless is disabled"
-msgstr "無線LAN機能が無効になっている"
+msgstr "無線LAN機能は無効になっています"
msgid "Wireless is not associated"
msgstr "無線LAN機能がアソシエーションされていません"
@@ -3952,6 +4006,9 @@ msgstr "ローカル <abbr title=\"Domain Name System\">DNS</abbr>ファイル"
msgid "minutes"
msgstr "分"
+msgid "mixed WPA/WPA2"
+msgstr "mixed WPA/WPA2"
+
msgid "no"
msgstr "いいえ"
diff --git a/modules/luci-base/po/ko/base.po b/modules/luci-base/po/ko/base.po
index e598e15a4..2d53437db 100644
--- a/modules/luci-base/po/ko/base.po
+++ b/modules/luci-base/po/ko/base.po
@@ -154,9 +154,6 @@ msgstr ""
msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
msgstr "<abbr title=\"maximal\">최대</abbr> 동시 처리 query 수"
-msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-msgstr ""
-
msgid ""
"<br/>Note: you need to manually restart the cron service if the crontab file "
"was empty before editing."
@@ -266,7 +263,13 @@ msgstr ""
msgid "Alert"
msgstr ""
-msgid "Alias interface"
+msgid "Alias Interface"
+msgstr ""
+
+msgid "Alias of \"%s\""
+msgstr ""
+
+msgid "All Servers"
msgstr ""
msgid ""
@@ -280,6 +283,9 @@ msgstr ""
msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
msgstr "<abbr title=\"Secure Shell\">SSH</abbr> 암호 인증을 허용합니다"
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
msgid "Allow all except listed"
msgstr ""
@@ -311,6 +317,11 @@ msgstr ""
msgid "Always announce default router"
msgstr ""
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
msgid "Annex"
msgstr ""
@@ -502,6 +513,9 @@ msgstr ""
msgid "Band"
msgstr ""
+msgid "Beacon Interval"
+msgstr ""
+
msgid ""
"Below is the determined list of files to backup. It consists of changed "
"configuration files marked by opkg, essential base files and the user "
@@ -810,6 +824,9 @@ msgstr ""
msgid "DSL line mode"
msgstr ""
+msgid "DTIM Interval"
+msgstr ""
+
msgid "DUID"
msgstr ""
@@ -849,6 +866,9 @@ msgstr "삭제"
msgid "Delete this network"
msgstr "이 네트워크를 삭제합니다"
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
msgid "Description"
msgstr "설명"
@@ -907,6 +927,9 @@ msgstr ""
msgid "Disabled (default)"
msgstr ""
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
msgid "Discard upstream RFC1918 responses"
msgstr ""
@@ -1257,6 +1280,9 @@ msgstr ""
msgid "Force"
msgstr "강제하기"
+msgid "Force 40MHz mode"
+msgstr ""
+
msgid "Force CCMP (AES)"
msgstr ""
@@ -1902,6 +1928,9 @@ msgstr ""
msgid "Lowest leased address as offset from the network address."
msgstr "임대되는 주소의 최소 시작점. (네트워크 주소로 부터의 offset)"
+msgid "MAC"
+msgstr ""
+
msgid "MAC-Address"
msgstr "MAC-주소"
@@ -2142,6 +2171,9 @@ msgstr "암호 설정을 해주세요!"
msgid "No rules in this chain"
msgstr ""
+msgid "No scan results available yet..."
+msgstr ""
+
msgid "No zone assigned"
msgstr ""
@@ -2568,6 +2600,11 @@ msgstr ""
msgid "Quality"
msgstr ""
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
msgid "R0 Key Lifetime"
msgstr ""
@@ -2854,6 +2891,9 @@ msgstr "저장 & 적용"
msgid "Scan"
msgstr "Scan 하기"
+msgid "Scan request failed"
+msgstr ""
+
msgid "Scheduled Tasks"
msgstr "작업 관리"
@@ -2909,6 +2949,9 @@ msgstr ""
msgid "Short GI"
msgstr ""
+msgid "Short Preamble"
+msgstr ""
+
msgid "Show current backup file list"
msgstr "현재 백업 파일 목록 보기"
@@ -3010,6 +3053,9 @@ msgstr "시작 우선순위"
msgid "Starting configuration apply…"
msgstr ""
+msgid "Starting wireless scan..."
+msgstr ""
+
msgid "Startup"
msgstr "시작 프로그램"
@@ -3815,6 +3861,9 @@ msgstr "local <abbr title=\"Domain Name System\">DNS</abbr> 파일"
msgid "minutes"
msgstr ""
+msgid "mixed WPA/WPA2"
+msgstr ""
+
msgid "no"
msgstr ""
diff --git a/modules/luci-base/po/ms/base.po b/modules/luci-base/po/ms/base.po
index 59f6e6cd4..891db2e41 100644
--- a/modules/luci-base/po/ms/base.po
+++ b/modules/luci-base/po/ms/base.po
@@ -151,9 +151,6 @@ msgstr ""
msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
msgstr ""
-msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-msgstr ""
-
msgid ""
"<br/>Note: you need to manually restart the cron service if the crontab file "
"was empty before editing."
@@ -261,7 +258,13 @@ msgstr ""
msgid "Alert"
msgstr ""
-msgid "Alias interface"
+msgid "Alias Interface"
+msgstr ""
+
+msgid "Alias of \"%s\""
+msgstr ""
+
+msgid "All Servers"
msgstr ""
msgid ""
@@ -275,6 +278,9 @@ msgstr ""
msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
msgstr "Membenarkan pengesahan kata laluan SSH"
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
msgid "Allow all except listed"
msgstr "Izinkan semua kecualian yang disenaraikan"
@@ -306,6 +312,11 @@ msgstr ""
msgid "Always announce default router"
msgstr ""
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
msgid "Annex"
msgstr ""
@@ -497,6 +508,9 @@ msgstr ""
msgid "Band"
msgstr ""
+msgid "Beacon Interval"
+msgstr ""
+
msgid ""
"Below is the determined list of files to backup. It consists of changed "
"configuration files marked by opkg, essential base files and the user "
@@ -789,6 +803,9 @@ msgstr ""
msgid "DSL line mode"
msgstr ""
+msgid "DTIM Interval"
+msgstr ""
+
msgid "DUID"
msgstr ""
@@ -825,6 +842,9 @@ msgstr "Padam"
msgid "Delete this network"
msgstr ""
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
msgid "Description"
msgstr "Keterangan"
@@ -881,6 +901,9 @@ msgstr ""
msgid "Disabled (default)"
msgstr ""
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
msgid "Discard upstream RFC1918 responses"
msgstr ""
@@ -1230,6 +1253,9 @@ msgstr ""
msgid "Force"
msgstr "Paksa"
+msgid "Force 40MHz mode"
+msgstr ""
+
msgid "Force CCMP (AES)"
msgstr ""
@@ -1881,6 +1907,9 @@ msgstr ""
msgid "Lowest leased address as offset from the network address."
msgstr ""
+msgid "MAC"
+msgstr ""
+
msgid "MAC-Address"
msgstr ""
@@ -2123,6 +2152,9 @@ msgstr ""
msgid "No rules in this chain"
msgstr "Tidak ada peraturan dalam rantai ini"
+msgid "No scan results available yet..."
+msgstr ""
+
msgid "No zone assigned"
msgstr ""
@@ -2546,6 +2578,11 @@ msgstr ""
msgid "Quality"
msgstr ""
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
msgid "R0 Key Lifetime"
msgstr ""
@@ -2831,6 +2868,9 @@ msgstr "Simpan & Melaksanakan"
msgid "Scan"
msgstr "Scan"
+msgid "Scan request failed"
+msgstr ""
+
msgid "Scheduled Tasks"
msgstr "Tugas Jadual"
@@ -2886,6 +2926,9 @@ msgstr ""
msgid "Short GI"
msgstr ""
+msgid "Short Preamble"
+msgstr ""
+
msgid "Show current backup file list"
msgstr ""
@@ -2987,6 +3030,9 @@ msgstr ""
msgid "Starting configuration apply…"
msgstr ""
+msgid "Starting wireless scan..."
+msgstr ""
+
msgid "Startup"
msgstr ""
@@ -3776,6 +3822,9 @@ msgstr "Fail DNS tempatan"
msgid "minutes"
msgstr ""
+msgid "mixed WPA/WPA2"
+msgstr ""
+
msgid "no"
msgstr ""
diff --git a/modules/luci-base/po/no/base.po b/modules/luci-base/po/no/base.po
index 16ea03fde..d5c65659e 100644
--- a/modules/luci-base/po/no/base.po
+++ b/modules/luci-base/po/no/base.po
@@ -153,9 +153,6 @@ msgstr ""
msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
msgstr "<abbr title=\"Maksimal\">Maks.</abbr> samtidige spørringer"
-msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-msgstr "<abbr title='Parvis: %s / Gruppe: %s'>%s - %s</abbr>"
-
msgid ""
"<br/>Note: you need to manually restart the cron service if the crontab file "
"was empty before editing."
@@ -270,7 +267,13 @@ msgstr ""
msgid "Alert"
msgstr "Varsle"
-msgid "Alias interface"
+msgid "Alias Interface"
+msgstr ""
+
+msgid "Alias of \"%s\""
+msgstr ""
+
+msgid "All Servers"
msgstr ""
msgid ""
@@ -284,6 +287,9 @@ msgstr ""
msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
msgstr "Tillat <abbr title=\"Secure Shell\">SSH</abbr> passord godkjenning"
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
msgid "Allow all except listed"
msgstr "Tillat alle unntatt oppførte"
@@ -315,6 +321,11 @@ msgstr ""
msgid "Always announce default router"
msgstr ""
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
msgid "Annex"
msgstr ""
@@ -506,6 +517,9 @@ msgstr "Ugyldig adresse oppgitt!"
msgid "Band"
msgstr ""
+msgid "Beacon Interval"
+msgstr ""
+
msgid ""
"Below is the determined list of files to backup. It consists of changed "
"configuration files marked by opkg, essential base files and the user "
@@ -812,6 +826,9 @@ msgstr ""
msgid "DSL line mode"
msgstr ""
+msgid "DTIM Interval"
+msgstr ""
+
msgid "DUID"
msgstr "DUID"
@@ -850,6 +867,9 @@ msgstr "Fjern"
msgid "Delete this network"
msgstr "Fjern dette nettverket"
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
msgid "Description"
msgstr "Beskrivelse"
@@ -908,6 +928,9 @@ msgstr "Deaktivert"
msgid "Disabled (default)"
msgstr ""
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
msgid "Discard upstream RFC1918 responses"
msgstr "Forkast oppstrøms RFC1918 svar"
@@ -1265,6 +1288,9 @@ msgstr "Flasher..."
msgid "Force"
msgstr "Bruk"
+msgid "Force 40MHz mode"
+msgstr ""
+
msgid "Force CCMP (AES)"
msgstr "Bruk CCMP (AES)"
@@ -1925,6 +1951,9 @@ msgstr ""
msgid "Lowest leased address as offset from the network address."
msgstr "Laveste leide adresse, forskjøvet fra nettverks adressen."
+msgid "MAC"
+msgstr ""
+
msgid "MAC-Address"
msgstr "MAC-Adresse"
@@ -2167,6 +2196,9 @@ msgstr "Ruteren er ikke passordbeskyttet!"
msgid "No rules in this chain"
msgstr "Ingen regler i denne tabellen"
+msgid "No scan results available yet..."
+msgstr ""
+
msgid "No zone assigned"
msgstr "Ingen sone tilknyttet"
@@ -2595,6 +2627,11 @@ msgstr ""
msgid "Quality"
msgstr "Kvalitet"
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
msgid "R0 Key Lifetime"
msgstr ""
@@ -2883,6 +2920,9 @@ msgstr "Lagre & Aktiver"
msgid "Scan"
msgstr "Skann"
+msgid "Scan request failed"
+msgstr ""
+
msgid "Scheduled Tasks"
msgstr "Planlagte Oppgaver"
@@ -2941,6 +2981,9 @@ msgstr ""
msgid "Short GI"
msgstr ""
+msgid "Short Preamble"
+msgstr ""
+
msgid "Show current backup file list"
msgstr "Vis gjeldende liste med sikkerhetskopifiler"
@@ -3046,6 +3089,9 @@ msgstr "Start prioritet"
msgid "Starting configuration apply…"
msgstr ""
+msgid "Starting wireless scan..."
+msgstr ""
+
msgid "Startup"
msgstr "Oppstart"
@@ -3889,6 +3935,9 @@ msgstr "lokal <abbr title=\"Domain Navn System\">DNS</abbr>-fil"
msgid "minutes"
msgstr ""
+msgid "mixed WPA/WPA2"
+msgstr ""
+
msgid "no"
msgstr "nei"
@@ -3964,6 +4013,9 @@ msgstr "ja"
msgid "« Back"
msgstr "« Tilbake"
+#~ msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+#~ msgstr "<abbr title='Parvis: %s / Gruppe: %s'>%s - %s</abbr>"
+
#~ msgid "Activate this network"
#~ msgstr "Aktiver dette nettverket"
diff --git a/modules/luci-base/po/pl/base.po b/modules/luci-base/po/pl/base.po
index 3c3a16cec..d1b41e7c5 100644
--- a/modules/luci-base/po/pl/base.po
+++ b/modules/luci-base/po/pl/base.po
@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: LuCI\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-04-20 09:40+0200\n"
-"PO-Revision-Date: 2018-07-14 21:35+0200\n"
+"PO-Revision-Date: 2018-07-27 22:45+0200\n"
"Last-Translator: Rixerx <krystian.kozak20@gmail.com>\n"
"Language-Team: Polish\n"
"Language: pl\n"
@@ -158,9 +158,6 @@ msgstr ""
msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
msgstr "<abbr title=\"Maksymalna ilość\">Maks.</abbr> zapytań równoczesnych"
-msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-msgstr "<abbr title='Par: %s / Grup: %s'>%s - %s</abbr>"
-
msgid ""
"<br/>Note: you need to manually restart the cron service if the crontab file "
"was empty before editing."
@@ -213,11 +210,11 @@ msgid "ATM device number"
msgstr "Numer urządzenia ATM"
msgid "ATU-C System Vendor ID"
-msgstr ""
+msgstr "ID dostawcy systemu ATU-C"
# co to takiego?
msgid "Access Concentrator"
-msgstr "Koncentrator dostępowy ATM"
+msgstr "Koncentrator dostępowy (ATM)"
msgid "Access Point"
msgstr "Punkt dostępowy"
@@ -276,13 +273,19 @@ msgid "Advanced Settings"
msgstr "Ustawienia zaawansowane"
msgid "Aggregate Transmit Power(ACTATP)"
-msgstr ""
+msgstr "Agregacja siły transmisji (ACTATP)"
msgid "Alert"
msgstr "Alarm"
-msgid "Alias interface"
-msgstr "Alias interfejsu"
+msgid "Alias Interface"
+msgstr "Alias Interfejsu"
+
+msgid "Alias of \"%s\""
+msgstr "Alias \"%s\""
+
+msgid "All Servers"
+msgstr "Wszystkie serwery"
msgid ""
"Allocate IP addresses sequentially, starting from the lowest available "
@@ -296,6 +299,9 @@ msgstr "Przydzielaj adresy IP po kolei"
msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
msgstr "Pozwól na logowanie <abbr title=\"Secure Shell\">SSH</abbr>"
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr "Pozwól aby tryb AP rozłączał stacje STA w oparciu o niski stan ACK"
+
msgid "Allow all except listed"
msgstr "Pozwól wszystkim oprócz wymienionych"
@@ -329,6 +335,13 @@ msgstr "Dozwolone adresy IP"
msgid "Always announce default router"
msgstr "Zawsze rozgłaszaj domyślny router"
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+"Zawsze używaj kanału 40 MHz, nawet jeśli kanał dodatkowy nachodzi na inny. "
+"Używanie tej opcji nie jest zgodne z IEEE 802.11n-2009!"
+
msgid "Annex"
msgstr ""
@@ -526,6 +539,9 @@ msgstr "Wprowadzono zły adres"
msgid "Band"
msgstr ""
+msgid "Beacon Interval"
+msgstr "Interwał Beaconu"
+
msgid ""
"Below is the determined list of files to backup. It consists of changed "
"configuration files marked by opkg, essential base files and the user "
@@ -560,7 +576,6 @@ msgstr "Interfejs mostu"
msgid "Bridge unit number"
msgstr "Numer Mostu (urządzenia)"
-# Podejrzewam że chodzi o interfejs? mam rację?
msgid "Bring up on boot"
msgstr "Podnieś przy stracie"
@@ -669,7 +684,7 @@ msgid ""
"Close inactive connection after the given amount of seconds, use 0 to "
"persist connection"
msgstr ""
-"Zamykaj nieaktywne połączenia po określonym czasie podanym w sekundach, "
+"Zamknij nieaktywne połączenia po określonym czasie podanym w sekundach, "
"wpisz 0 aby uzyskać stałe połączenie."
msgid "Close list..."
@@ -767,7 +782,7 @@ msgid "Custom Interface"
msgstr "Interfejs niestandardowy"
msgid "Custom delegated IPv6-prefix"
-msgstr ""
+msgstr "Delegowany niestandardowy prefiks IPv6"
msgid ""
"Custom feed definitions, e.g. private feeds. This file can be preserved in a "
@@ -842,11 +857,14 @@ msgstr "Status DSL"
msgid "DSL line mode"
msgstr ""
+msgid "DTIM Interval"
+msgstr "Interwał DTIM"
+
msgid "DUID"
msgstr "DUID"
msgid "Data Rate"
-msgstr ""
+msgstr "Szybkość przesyłania danych"
msgid "Debug"
msgstr "Debug"
@@ -880,10 +898,12 @@ msgstr "Usuń"
msgid "Delete this network"
msgstr "Usuń tą sieć"
+msgid "Delivery Traffic Indication Message Interval"
+msgstr "Interwał komunikatu o wskazaniu dostawy ruchu"
+
msgid "Description"
msgstr "Opis"
-# Ktoś tłumaczył bez zobaczenia tego w gui. Dotyczy zmiany motywu ten opis.
msgid "Design"
msgstr "Motyw"
@@ -939,6 +959,9 @@ msgstr "Wyłączony"
msgid "Disabled (default)"
msgstr "Wyłączone (domyślnie)"
+msgid "Disassociate On Low Acknowledgement"
+msgstr "Rozłączaj przy niskim stanie ramek ACK"
+
msgid "Discard upstream RFC1918 responses"
msgstr "Odrzuć wychodzące odpowiedzi RFC1918"
@@ -964,15 +987,14 @@ msgstr ""
msgid "Diversity"
msgstr "Wielorakość"
-# Nie wiem czy nie zamotałem ja rozumiem;)
msgid ""
"Dnsmasq is a combined <abbr title=\"Dynamic Host Configuration Protocol"
"\">DHCP</abbr>-Server and <abbr title=\"Domain Name System\">DNS</abbr>-"
"Forwarder for <abbr title=\"Network Address Translation\">NAT</abbr> "
"firewalls"
msgstr ""
-"Dnsmasq jest to serwer <abbr title=\"Dynamic Host Configuration Protocol"
-"\">DHCP</abbr> połączony z serwerem <abbr title=\"Domain Name System\">DNS</"
+"Dnsmasq jest kombajnem serwera <abbr title=\"Dynamic Host Configuration Protocol"
+"\">DHCP</abbr> połączonym z serwerem <abbr title=\"Domain Name System\">DNS</"
"abbr>. Jest to serwer przekazujący (Fowarder) dla firewalli <abbr title="
"\"Network Address Translation\">NAT</abbr>"
@@ -1029,7 +1051,6 @@ msgstr ""
msgid "Dual-Stack Lite (RFC6333)"
msgstr ""
-# "n" brakowało...
msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
msgstr ""
"<abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> dynamiczne"
@@ -1177,7 +1198,7 @@ msgid "Error"
msgstr "Błąd"
msgid "Errored seconds (ES)"
-msgstr ""
+msgstr "Ilość błędów (ES)"
msgid "Ethernet Adapter"
msgstr "Karta Ethernet"
@@ -1307,6 +1328,9 @@ msgstr "Flashowanie..."
msgid "Force"
msgstr "Wymuś"
+msgid "Force 40MHz mode"
+msgstr "Wymuś tryb 40MHz"
+
msgid "Force CCMP (AES)"
msgstr "Wymuś CCMP (AES)"
@@ -1333,7 +1357,7 @@ msgid "Forward DHCP traffic"
msgstr "Przekazuj ruch DHCP"
msgid "Forward Error Correction Seconds (FECS)"
-msgstr ""
+msgstr "Próby korekcji błędów (FECS)"
msgid "Forward broadcast traffic"
msgstr "Przekazuj broadcast`y"
@@ -1433,7 +1457,7 @@ msgid "Hang Up"
msgstr "Rozłącz"
msgid "Header Error Code Errors (HEC)"
-msgstr ""
+msgstr "Błędy kodu nagłówka (HEC)"
msgid ""
"Here you can configure the basic aspects of your device like its hostname or "
@@ -1704,7 +1728,6 @@ msgstr ""
msgid "Interface Configuration"
msgstr "Konfiguracja Interfejsu"
-# Tam jest lista interfejsów....
msgid "Interface Overview"
msgstr "Przegląd Interfejsów"
@@ -1723,7 +1746,6 @@ msgstr "Interfejsy"
msgid "Internal"
msgstr ""
-# Nadużycie tagu abbr uważam za uzasadnione.
msgid "Internal Server Error"
msgstr "Wewnętrzny błąd serwera"
@@ -1790,7 +1812,7 @@ msgid "LCP echo failure threshold"
msgstr "Próg błędu echa LCP"
msgid "LCP echo interval"
-msgstr "Częstotliwość echa LCP"
+msgstr "Interwał echa LCP"
msgid "LLC"
msgstr "LLC"
@@ -1823,10 +1845,10 @@ msgid "Leasetime remaining"
msgstr "Pozostały czas dzierżawy"
msgid "Leave empty to autodetect"
-msgstr "Pozostaw niewypełnione dla autodetekcji"
+msgstr "Pozostaw puste, aby automatycznie wykryć"
msgid "Leave empty to use the current WAN address"
-msgstr "Pozostaw niewypełnione aby użyć bieżącego adresu WAN"
+msgstr "Pozostaw puste, aby użyć bieżącego adresu WAN"
msgid "Legend:"
msgstr "Legenda:"
@@ -1842,16 +1864,16 @@ msgid "Limit listening to these interfaces, and loopback."
msgstr "Ogranicz nasłuchiwanie do tych interfesjów, oraz loopbacku."
msgid "Line Attenuation (LATN)"
-msgstr ""
+msgstr "Tłumienie linii (LATN)"
msgid "Line Mode"
-msgstr ""
+msgstr "Tryb linii"
msgid "Line State"
-msgstr ""
+msgstr "Stan linii"
msgid "Line Uptime"
-msgstr ""
+msgstr "Czas działania linii"
msgid "Link On"
msgstr "Połączenie aktywne"
@@ -1978,11 +2000,14 @@ msgid "Logout"
msgstr "Wyloguj"
msgid "Loss of Signal Seconds (LOSS)"
-msgstr ""
+msgstr "Utrata sygnału (LOSS)"
msgid "Lowest leased address as offset from the network address."
msgstr "Najniższy wydzierżawiony adres jako offset dla adresu sieci."
+msgid "MAC"
+msgstr "MAC"
+
msgid "MAC-Address"
msgstr "Adres MAC"
@@ -2024,7 +2049,7 @@ msgid "Manual"
msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
-msgstr ""
+msgstr "Max. Osiągalna szybkość transmisji danych (ATTNDR)"
msgid "Maximum allowed number of active DHCP leases"
msgstr "Maksymalna dozwolona liczba aktywnych dzierżaw DHCP"
@@ -2227,6 +2252,9 @@ msgstr "Nie ustawiono hasła!"
msgid "No rules in this chain"
msgstr "Brak zasad w tym łańcuchu"
+msgid "No scan results available yet..."
+msgstr "Brak wyników skanowania..."
+
msgid "No zone assigned"
msgstr "Brak przypisanej strefy"
@@ -2240,7 +2268,7 @@ msgid "Noise:"
msgstr "Szum:"
msgid "Non Pre-emtive CRC errors (CRC_P)"
-msgstr ""
+msgstr "Nieprzewidziane błedy CRC (CRC_P)"
msgid "Non-wildcard"
msgstr "Bez symboli wieloznacznych"
@@ -2290,7 +2318,7 @@ msgid "Obfuscated Password"
msgstr ""
msgid "Obtain IPv6-Address"
-msgstr ""
+msgstr "Uzyskaj adres IPv6"
msgid "Off-State Delay"
msgstr "Zwłoka wyłączenia"
@@ -2585,7 +2613,7 @@ msgid "Power Management Mode"
msgstr "Tryb zarządzania energią"
msgid "Pre-emtive CRC errors (CRCP_P)"
-msgstr ""
+msgstr "Przewidziane błedy CRC (CRCP_P)"
msgid "Prefer LTE"
msgstr ""
@@ -2603,8 +2631,8 @@ msgid ""
"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
"ignore failures"
msgstr ""
-"Zakładaj że klient jest martwy po danej ilości błedów odpowiedzi echa LCP, "
-"wpisz 0 aby zignorować błędy"
+"Przypuszczaj że klient może być martwy po zadanej ilości błedów echa LCP, "
+"wpisz 0 aby zignorować te błędy"
msgid "Prevent listening on these interfaces."
msgstr "Zapobiegaj nasłuchiwaniu na tych interfejsach."
@@ -2660,6 +2688,12 @@ msgstr "Komórkowy QMI"
msgid "Quality"
msgstr "Jakość"
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+"Zapytaj o wszystkie dostępne serwery <abbr title=\"Domain Name System\">DNS</abbr> "
+
msgid "R0 Key Lifetime"
msgstr ""
@@ -2697,8 +2731,9 @@ msgid "Radius-Authentication-Server"
msgstr "Serwer Radius-Authentication"
msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this"
-msgstr "Surowe bajty kodowane szesnastkowo. Pozostaw puste, chyba że "
-"wymaga tego dostawca internetowy"
+msgstr ""
+"Surowe bajty kodowane szesnastkowo. Pozostaw puste, chyba że wymaga tego "
+"dostawca internetowy"
msgid ""
"Read <code>/etc/ethers</code> to configure the <abbr title=\"Dynamic Host "
@@ -2805,7 +2840,7 @@ msgid "Request IPv6-address"
msgstr "Zażądaj adresu IPv6"
msgid "Request IPv6-prefix of length"
-msgstr ""
+msgstr "Zażądaj długość prefiksu IPv6"
msgid "Required"
msgstr "Wymagany"
@@ -2953,9 +2988,11 @@ msgstr "Zapisz i zastosuj"
msgid "Scan"
msgstr "Skanuj"
-# Raczej nie stosuje się kilku dużych liter w tym samym
+msgid "Scan request failed"
+msgstr "Próba skanowania nie powiodła się"
+
msgid "Scheduled Tasks"
-msgstr "Zaplanowane zadania"
+msgstr "Zaplanowane Zadania"
msgid "Section added"
msgstr "Dodano sekcję"
@@ -2970,8 +3007,8 @@ msgid ""
"Send LCP echo requests at the given interval in seconds, only effective in "
"conjunction with failure threshold"
msgstr ""
-"Co podany czas (w sekundach) wyślij zapytania LCP echo, to ustawienie działa "
-"tylko gdy ustawiony jest próg błędu LCP echo"
+"Wysyłaj żądania echa LCP w określonym przedziale czasowym, "
+"efektywne tylko wtedy gdy jest ustawiony próg błedu LCP"
msgid "Separate Clients"
msgstr "Rozdziel klientów"
@@ -3009,11 +3046,14 @@ msgid "Setup DHCP Server"
msgstr "Ustawienia serwera DHCP"
msgid "Severely Errored Seconds (SES)"
-msgstr ""
+msgstr "Ilość poważnych błedów (SES)"
msgid "Short GI"
msgstr ""
+msgid "Short Preamble"
+msgstr "Krótki Wstęp"
+
msgid "Show current backup file list"
msgstr "Pokaż aktualną listę plików do backupu"
@@ -3024,7 +3064,7 @@ msgid "Signal"
msgstr "Sygnał"
msgid "Signal Attenuation (SATN)"
-msgstr ""
+msgstr "Tłumienie sygnału (SATN)"
msgid "Signal:"
msgstr "Sygnał:"
@@ -3119,7 +3159,10 @@ msgid "Start priority"
msgstr "Priorytet uruchomienia"
msgid "Starting configuration apply…"
-msgstr ""
+msgstr "Zatwierdzanie konfiguracji…"
+
+msgid "Starting wireless scan..."
+msgstr "Rozpoczynanie skanowania..."
msgid "Startup"
msgstr "Autostart"
@@ -3150,7 +3193,7 @@ msgstr ""
"odpowiednim dzierżawami."
msgid "Status"
-msgstr "Stan"
+msgstr "Status"
msgid "Stop"
msgstr "Stop"
@@ -3322,10 +3365,9 @@ msgid ""
"compare them with the original file to ensure data integrity.<br /> Click "
"\"Proceed\" below to start the flash procedure."
msgstr ""
-"Obraz flash`a został przesłany. Poniżej znajduje się suma kontrolna i "
-"rozmiar obrazu, porównaj je z sumą kontrolną i rozmiarem oryginału, aby "
-"upewnić się, że został przesłany poprawnie.<br /> Wciśnij \"Wykonaj\" aby "
-"kontynuować aktualizację."
+"Obraz flash został przesłany. Poniżej znajduje się suma kontrolna i "
+"rozmiar pliku, porównaj je z orginałem aby zapewnić integralność "
+"danych.<br /> Wciśnij \"Wykonaj\" aby kontynuować aktualizację."
msgid "The following changes have been reverted"
msgstr "Następujące zmiany zostały odrzucone"
@@ -3613,7 +3655,7 @@ msgid "Unable to resolve peer host name"
msgstr "Nie można rozpoznać nazwy peera"
msgid "Unavailable Seconds (UAS)"
-msgstr ""
+msgstr "Czas niedostępnośći (UAS)"
msgid "Unknown"
msgstr "Nieznany"
@@ -3886,7 +3928,7 @@ msgid ""
msgstr ""
"Tutaj można włączyć lub wyłączyć zainstalowane skrypty. Zmiany zostaną "
"zastosowane po ponownym uruchomieniu urządzenia.<br /><strong>Ostrzeżenie: "
-"Jeśli wyłączysz podstawowe skrypty typu \"networks\", urządzenie może stać "
+"Jeśli wyłączysz podstawowe skrypty typu \"network\", urządzenie może stać "
"się nieosiągalne!</strong>"
msgid ""
@@ -3983,6 +4025,9 @@ msgstr "lokalny plik <abbr title=\"Domain Name System\">DNS</abbr>"
msgid "minutes"
msgstr "minuty"
+msgid "mixed WPA/WPA2"
+msgstr "mieszany WPA/WPA2"
+
msgid "no"
msgstr "nie"
@@ -4059,6 +4104,9 @@ msgstr "tak"
msgid "« Back"
msgstr "« Wróć"
+#~ msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+#~ msgstr "<abbr title='Par: %s / Grup: %s'>%s - %s</abbr>"
+
#~ msgid "Activate this network"
#~ msgstr "Aktywuj tą sieć"
diff --git a/modules/luci-base/po/pt-br/base.po b/modules/luci-base/po/pt-br/base.po
index ad0b6a42c..63a8b2f34 100644
--- a/modules/luci-base/po/pt-br/base.po
+++ b/modules/luci-base/po/pt-br/base.po
@@ -169,9 +169,6 @@ msgstr ""
msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
msgstr "Número máximo de consultas concorrentes"
-msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-msgstr "<abbr title='Par: %s / Grupo: %s'>%s - %s</abbr>"
-
msgid ""
"<br/>Note: you need to manually restart the cron service if the crontab file "
"was empty before editing."
@@ -294,7 +291,13 @@ msgstr ""
msgid "Alert"
msgstr "Alerta"
-msgid "Alias interface"
+msgid "Alias Interface"
+msgstr ""
+
+msgid "Alias of \"%s\""
+msgstr ""
+
+msgid "All Servers"
msgstr ""
msgid ""
@@ -311,6 +314,9 @@ msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
msgstr ""
"Permitir autenticação <abbr title=\"Shell Seguro\">SSH</abbr> por senha"
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
msgid "Allow all except listed"
msgstr "Permitir todos, exceto os listados"
@@ -346,6 +352,11 @@ msgstr "Endereços IP autorizados"
msgid "Always announce default router"
msgstr "Sempre anuncie o roteador padrão"
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
msgid "Annex"
msgstr "Anexo"
@@ -546,6 +557,9 @@ msgstr "Endereço especificado está incorreto!"
msgid "Band"
msgstr "Banda"
+msgid "Beacon Interval"
+msgstr ""
+
msgid ""
"Below is the determined list of files to backup. It consists of changed "
"configuration files marked by opkg, essential base files and the user "
@@ -861,6 +875,9 @@ msgstr "Estado da DSL"
msgid "DSL line mode"
msgstr "Modo de linha DSL"
+msgid "DTIM Interval"
+msgstr ""
+
msgid "DUID"
msgstr "DUID"
@@ -900,6 +917,9 @@ msgstr "Apagar"
msgid "Delete this network"
msgstr "Apagar esta rede"
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
msgid "Description"
msgstr "Descrição"
@@ -958,6 +978,9 @@ msgstr "Desabilitado"
msgid "Disabled (default)"
msgstr "Desabilitado (padrão)"
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
msgid "Discard upstream RFC1918 responses"
msgstr ""
"Descartar respostas de servidores externos para redes privadas (RFC1918)"
@@ -1329,6 +1352,9 @@ msgstr "Gravando na flash..."
msgid "Force"
msgstr "Forçar"
+msgid "Force 40MHz mode"
+msgstr ""
+
msgid "Force CCMP (AES)"
msgstr "Forçar CCMP (AES)"
@@ -2037,6 +2063,9 @@ msgstr ""
msgid "Lowest leased address as offset from the network address."
msgstr "O endereço mais baixo concedido como deslocamento do endereço da rede."
+msgid "MAC"
+msgstr ""
+
msgid "MAC-Address"
msgstr "Endereço MAC"
@@ -2287,6 +2316,9 @@ msgstr "Nenhuma senha definida!"
msgid "No rules in this chain"
msgstr "Sem regras nesta cadeia"
+msgid "No scan results available yet..."
+msgstr ""
+
msgid "No zone assigned"
msgstr "Nenhuma zona definida"
@@ -2731,6 +2763,11 @@ msgstr "Celular QMI"
msgid "Quality"
msgstr "Qualidade"
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
msgid "R0 Key Lifetime"
msgstr "Validade da Chave R0"
@@ -3028,6 +3065,9 @@ msgstr "Salvar & Aplicar"
msgid "Scan"
msgstr "Procurar"
+msgid "Scan request failed"
+msgstr ""
+
msgid "Scheduled Tasks"
msgstr "Tarefas Agendadas"
@@ -3087,6 +3127,9 @@ msgstr ""
msgid "Short GI"
msgstr "Intervalo de guarda curto"
+msgid "Short Preamble"
+msgstr ""
+
msgid "Show current backup file list"
msgstr "Mostra a lista atual de arquivos para a cópia de segurança"
@@ -3199,6 +3242,9 @@ msgstr "Prioridade de iniciação"
msgid "Starting configuration apply…"
msgstr ""
+msgid "Starting wireless scan..."
+msgstr ""
+
msgid "Startup"
msgstr "Iniciação"
@@ -4069,6 +4115,9 @@ msgstr ""
msgid "minutes"
msgstr "minutos"
+msgid "mixed WPA/WPA2"
+msgstr ""
+
# Is this yes/no or no like in no one?
msgid "no"
msgstr "não"
@@ -4145,6 +4194,9 @@ msgstr "sim"
msgid "« Back"
msgstr "« Voltar"
+#~ msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+#~ msgstr "<abbr title='Par: %s / Grupo: %s'>%s - %s</abbr>"
+
#~ msgid "Activate this network"
#~ msgstr "Ativar esta rede"
diff --git a/modules/luci-base/po/pt/base.po b/modules/luci-base/po/pt/base.po
index c2b794ea3..d548b7c8d 100644
--- a/modules/luci-base/po/pt/base.po
+++ b/modules/luci-base/po/pt/base.po
@@ -163,9 +163,6 @@ msgstr ""
msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
msgstr "<abbr title=\"máximo\">Max.</abbr> consultas concorrentes"
-msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-msgstr "<abbr title='Emparelhada: %s / Grupo: %s'>%s - %s</abbr>"
-
msgid ""
"<br/>Note: you need to manually restart the cron service if the crontab file "
"was empty before editing."
@@ -280,7 +277,13 @@ msgstr ""
msgid "Alert"
msgstr "Alerta"
-msgid "Alias interface"
+msgid "Alias Interface"
+msgstr ""
+
+msgid "Alias of \"%s\""
+msgstr ""
+
+msgid "All Servers"
msgstr ""
msgid ""
@@ -295,6 +298,9 @@ msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
msgstr ""
"Permitir autenticação <abbr title=\"Shell Seguro\">SSH</abbr> por senha"
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
msgid "Allow all except listed"
msgstr "Permitir todos, excepto os listados"
@@ -328,6 +334,11 @@ msgstr ""
msgid "Always announce default router"
msgstr ""
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
msgid "Annex"
msgstr ""
@@ -519,6 +530,9 @@ msgstr "Endereço mal especificado!"
msgid "Band"
msgstr ""
+msgid "Beacon Interval"
+msgstr ""
+
msgid ""
"Below is the determined list of files to backup. It consists of changed "
"configuration files marked by opkg, essential base files and the user "
@@ -825,6 +839,9 @@ msgstr ""
msgid "DSL line mode"
msgstr ""
+msgid "DTIM Interval"
+msgstr ""
+
msgid "DUID"
msgstr "DUID"
@@ -864,6 +881,9 @@ msgstr "Apagar"
msgid "Delete this network"
msgstr "Apagar esta rede"
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
msgid "Description"
msgstr "Descrição"
@@ -922,6 +942,9 @@ msgstr "Desativado"
msgid "Disabled (default)"
msgstr ""
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
msgid "Discard upstream RFC1918 responses"
msgstr "Descartar respostas RFC1918 a montante"
@@ -1283,6 +1306,9 @@ msgstr "A programar...."
msgid "Force"
msgstr "Forçar"
+msgid "Force 40MHz mode"
+msgstr ""
+
msgid "Force CCMP (AES)"
msgstr "Forçar CCMP (AES)"
@@ -1949,6 +1975,9 @@ msgstr ""
msgid "Lowest leased address as offset from the network address."
msgstr ""
+msgid "MAC"
+msgstr ""
+
msgid "MAC-Address"
msgstr "Endereço-MAC"
@@ -2191,6 +2220,9 @@ msgstr "Sem password definida!"
msgid "No rules in this chain"
msgstr "Sem regras nesta cadeia"
+msgid "No scan results available yet..."
+msgstr ""
+
msgid "No zone assigned"
msgstr "Sem zona atribuída"
@@ -2615,6 +2647,11 @@ msgstr ""
msgid "Quality"
msgstr "Qualidade"
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
msgid "R0 Key Lifetime"
msgstr ""
@@ -2904,6 +2941,9 @@ msgstr "Salvar & Aplicar"
msgid "Scan"
msgstr "Procurar"
+msgid "Scan request failed"
+msgstr ""
+
msgid "Scheduled Tasks"
msgstr "Tarefas Agendadas"
@@ -2960,6 +3000,9 @@ msgstr ""
msgid "Short GI"
msgstr ""
+msgid "Short Preamble"
+msgstr ""
+
msgid "Show current backup file list"
msgstr "Mostrar lista ficheiros para backup"
@@ -3061,6 +3104,9 @@ msgstr "Prioridade de inicialização"
msgid "Starting configuration apply…"
msgstr ""
+msgid "Starting wireless scan..."
+msgstr ""
+
msgid "Startup"
msgstr ""
@@ -3885,6 +3931,9 @@ msgstr ""
msgid "minutes"
msgstr ""
+msgid "mixed WPA/WPA2"
+msgstr ""
+
msgid "no"
msgstr "não"
@@ -3960,6 +4009,9 @@ msgstr "sim"
msgid "« Back"
msgstr "« Voltar"
+#~ msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+#~ msgstr "<abbr title='Emparelhada: %s / Grupo: %s'>%s - %s</abbr>"
+
#~ msgid "Activate this network"
#~ msgstr "Ativar esta rede"
diff --git a/modules/luci-base/po/ro/base.po b/modules/luci-base/po/ro/base.po
index 9783e23a8..a28235bbd 100644
--- a/modules/luci-base/po/ro/base.po
+++ b/modules/luci-base/po/ro/base.po
@@ -154,9 +154,6 @@ msgstr ""
msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
msgstr "<abbr title=\"maximal\">Max.</abbr> interogari simultane"
-msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-msgstr "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-
msgid ""
"<br/>Note: you need to manually restart the cron service if the crontab file "
"was empty before editing."
@@ -267,7 +264,13 @@ msgstr ""
msgid "Alert"
msgstr "Alerta"
-msgid "Alias interface"
+msgid "Alias Interface"
+msgstr ""
+
+msgid "Alias of \"%s\""
+msgstr ""
+
+msgid "All Servers"
msgstr ""
msgid ""
@@ -282,6 +285,9 @@ msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
msgstr ""
"Permite autentificarea prin parola a <abbr title=\"Secure Shell\">SSH</abbr> "
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
msgid "Allow all except listed"
msgstr "Permite toate cu exceptia celor listate"
@@ -314,6 +320,11 @@ msgstr ""
msgid "Always announce default router"
msgstr ""
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
msgid "Annex"
msgstr ""
@@ -505,6 +516,9 @@ msgstr "Adresa specificata gresit !"
msgid "Band"
msgstr ""
+msgid "Beacon Interval"
+msgstr ""
+
msgid ""
"Below is the determined list of files to backup. It consists of changed "
"configuration files marked by opkg, essential base files and the user "
@@ -799,6 +813,9 @@ msgstr ""
msgid "DSL line mode"
msgstr ""
+msgid "DTIM Interval"
+msgstr ""
+
msgid "DUID"
msgstr ""
@@ -835,6 +852,9 @@ msgstr "Sterge"
msgid "Delete this network"
msgstr "Sterge aceasta retea"
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
msgid "Description"
msgstr "Descriere"
@@ -893,6 +913,9 @@ msgstr "Dezactivat"
msgid "Disabled (default)"
msgstr ""
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
msgid "Discard upstream RFC1918 responses"
msgstr ""
@@ -1236,6 +1259,9 @@ msgstr ""
msgid "Force"
msgstr "Forteaza"
+msgid "Force 40MHz mode"
+msgstr ""
+
msgid "Force CCMP (AES)"
msgstr "Forteaza CCMP (AES)"
@@ -1882,6 +1908,9 @@ msgstr ""
msgid "Lowest leased address as offset from the network address."
msgstr ""
+msgid "MAC"
+msgstr ""
+
msgid "MAC-Address"
msgstr ""
@@ -2122,6 +2151,9 @@ msgstr "Nici o parola setata !"
msgid "No rules in this chain"
msgstr ""
+msgid "No scan results available yet..."
+msgstr ""
+
msgid "No zone assigned"
msgstr ""
@@ -2540,6 +2572,11 @@ msgstr ""
msgid "Quality"
msgstr "Calitate"
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
msgid "R0 Key Lifetime"
msgstr ""
@@ -2824,6 +2861,9 @@ msgstr "Salveaza si aplica"
msgid "Scan"
msgstr "Scan"
+msgid "Scan request failed"
+msgstr ""
+
msgid "Scheduled Tasks"
msgstr "Operatiuni programate"
@@ -2880,6 +2920,9 @@ msgstr ""
msgid "Short GI"
msgstr ""
+msgid "Short Preamble"
+msgstr ""
+
msgid "Show current backup file list"
msgstr ""
@@ -2981,6 +3024,9 @@ msgstr ""
msgid "Starting configuration apply…"
msgstr ""
+msgid "Starting wireless scan..."
+msgstr ""
+
msgid "Startup"
msgstr "Pornire"
@@ -3752,6 +3798,9 @@ msgstr ""
msgid "minutes"
msgstr ""
+msgid "mixed WPA/WPA2"
+msgstr ""
+
msgid "no"
msgstr "nu"
@@ -3827,6 +3876,9 @@ msgstr "da"
msgid "« Back"
msgstr "« Inapoi"
+#~ msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+#~ msgstr "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+
#~ msgid "Activate this network"
#~ msgstr "Activeaza aceasta retea"
diff --git a/modules/luci-base/po/ru/base.po b/modules/luci-base/po/ru/base.po
index 65a6a01cf..8d542e601 100644
--- a/modules/luci-base/po/ru/base.po
+++ b/modules/luci-base/po/ru/base.po
@@ -3,7 +3,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Project-Id-Version: LuCI: base\n"
"POT-Creation-Date: 2010-05-09 01:01+0300\n"
-"PO-Revision-Date: 2018-07-17 11:24+0300\n"
+"PO-Revision-Date: 2018-07-21 08:10+0300\n"
"Language-Team: http://cyber-place.ru\n"
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -160,9 +160,6 @@ msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
msgstr ""
"<abbr title=\"максимальное\">Макс.</abbr> кол-во одновременных запросов"
-msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-msgstr "<abbr title='Парный: %s / Групповой: %s'>%s - %s</abbr>"
-
msgid ""
"<br/>Note: you need to manually restart the cron service if the crontab file "
"was empty before editing."
@@ -276,7 +273,13 @@ msgstr "Aggregate Transmit Power (ACTATP)"
msgid "Alert"
msgstr "Тревога"
-msgid "Alias interface"
+msgid "Alias Interface"
+msgstr ""
+
+msgid "Alias of \"%s\""
+msgstr ""
+
+msgid "All Servers"
msgstr ""
msgid ""
@@ -293,6 +296,9 @@ msgstr ""
"Разрешить <abbr title=\"Secure Shell\">SSH</abbr> аутентификацию с помощью "
"пароля."
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
msgid "Allow all except listed"
msgstr "Разрешить все, кроме перечисленных"
@@ -329,6 +335,11 @@ msgstr "Разрешенные IP-адреса"
msgid "Always announce default router"
msgstr "Объявлять всегда, как маршрутизатор по умолчанию"
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
msgid "Annex"
msgstr "Annex"
@@ -532,6 +543,9 @@ msgstr "Указан неправильный адрес!"
msgid "Band"
msgstr "Диапазон"
+msgid "Beacon Interval"
+msgstr ""
+
msgid ""
"Below is the determined list of files to backup. It consists of changed "
"configuration files marked by opkg, essential base files and the user "
@@ -624,8 +638,8 @@ msgid ""
"Channel %d is not available in the %s regulatory domain and has been auto-"
"adjusted to %d."
msgstr ""
-"Канал %d не доступен в регуляторном домене %s и был автоматически изменен "
-"на %d."
+"Канал %d не доступен в регуляторном домене %s и был автоматически изменен на "
+"%d."
msgid "Check"
msgstr "Проверить"
@@ -859,6 +873,9 @@ msgstr "Состояние DSL"
msgid "DSL line mode"
msgstr "DSL линейный режим"
+msgid "DTIM Interval"
+msgstr ""
+
msgid "DUID"
msgstr "DUID"
@@ -898,6 +915,9 @@ msgstr "Удалить"
msgid "Delete this network"
msgstr "Удалить эту сеть"
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
msgid "Description"
msgstr "Описание"
@@ -956,6 +976,9 @@ msgstr "Отключено"
msgid "Disabled (default)"
msgstr "Отключено (по умолчанию)"
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
msgid "Discard upstream RFC1918 responses"
msgstr "Отбрасывать ответы внешней сети RFC1918."
@@ -1031,7 +1054,7 @@ msgid "Downstream SNR offset"
msgstr "SNR offset внутренней сети"
msgid "Dropbear Instance"
-msgstr "Исключение Dropbear"
+msgstr "Экземпляр Dropbear"
msgid ""
"Dropbear offers <abbr title=\"Secure Shell\">SSH</abbr> network shell access "
@@ -1088,7 +1111,8 @@ msgstr "Включить"
msgid ""
"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
"snooping"
-msgstr "Включить <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+msgstr ""
+"Включить <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
"snooping"
msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
@@ -1243,7 +1267,8 @@ msgid "FT protocol"
msgstr "FT протокол"
msgid "Failed to confirm apply within %ds, waiting for rollback…"
-msgstr "Не удалось подтвердить применение в течении %d сек., ожидание отката..."
+msgstr ""
+"Не удалось подтвердить применение в течении %d сек., ожидание отката..."
msgid "File"
msgstr "Файл"
@@ -1322,6 +1347,9 @@ msgstr "Прошивка..."
msgid "Force"
msgstr "Назначить"
+msgid "Force 40MHz mode"
+msgstr ""
+
msgid "Force CCMP (AES)"
msgstr "Назначить CCMP (AES)"
@@ -1622,8 +1650,8 @@ msgstr "Если выбрано, то шифрование выключено"
msgid ""
"If specified, mount the device by its UUID instead of a fixed device node"
msgstr ""
-"Если выбрано, монтировать устройство используя его UUID, а не "
-"фиксированный файл устройства."
+"Если выбрано, монтировать устройство используя его UUID, а не фиксированный "
+"файл устройства."
msgid ""
"If specified, mount the device by the partition label instead of a fixed "
@@ -1647,8 +1675,8 @@ msgid ""
msgstr ""
"Если физической памяти не достаточно, то неиспользуемые данные могут быть "
"временно перемещены в раздел подкачки, что в свою очередь приведет к "
-"увеличению объёму свободной <abbr title=\"Random Access Memory\">RAM</abbr>."
-" Однако, перемещение в файл — это достаточно долгий процесс, так как "
+"увеличению объёму свободной <abbr title=\"Random Access Memory\">RAM</abbr>. "
+"Однако, перемещение в файл — это достаточно долгий процесс, так как "
"устройство, на котором располагается раздел подкачки, работает гораздо "
"медленнее, чем <abbr title=\"Random Access Memory\">RAM</abbr>."
@@ -1961,8 +1989,8 @@ msgid ""
"and are resolved from DHCP or hosts files only"
msgstr ""
"Согласно требованиям, имена соответствующие этому домену, никогда не "
-"передаются. И разрешаются только из файла DHCP (/etc/config/dhcp) или "
-"файла хостов (/etc/hosts)."
+"передаются. И разрешаются только из файла DHCP (/etc/config/dhcp) или файла "
+"хостов (/etc/hosts)."
msgid "Local domain suffix appended to DHCP names and hosts file entries"
msgstr ""
@@ -2006,6 +2034,9 @@ msgstr "Потеря сигнала в секундах (LOSS)"
msgid "Lowest leased address as offset from the network address."
msgstr "Минимальный адрес аренды."
+msgid "MAC"
+msgstr ""
+
msgid "MAC-Address"
msgstr "MAC-адрес"
@@ -2040,8 +2071,8 @@ msgid ""
"Make sure to clone the root filesystem using something like the commands "
"below:"
msgstr ""
-"Прежде чем перенести корневую файловую систему на внешний носитель, исполь"
-"зуйте команды приведенные ниже:"
+"Прежде чем перенести корневую файловую систему на внешний носитель, "
+"используйте команды приведенные ниже:"
msgid "Manual"
msgstr "Вручную"
@@ -2252,6 +2283,9 @@ msgstr "Пароль не установлен!"
msgid "No rules in this chain"
msgstr "Нет правил в данной цепочке"
+msgid "No scan results available yet..."
+msgstr ""
+
msgid "No zone assigned"
msgstr "Зона не присвоена"
@@ -2299,8 +2333,8 @@ msgstr "DNS-запрос"
msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
msgstr ""
-"Количество кэшированных DNS записей (максимум — 10000, 0 — "
-"отключить кэширование)"
+"Количество кэшированных DNS записей (максимум — 10000, 0 — отключить "
+"кэширование)"
msgid "OK"
msgstr "OK"
@@ -2382,9 +2416,9 @@ msgid ""
"for the interface."
msgstr ""
"Необязательно. Допустимые значения: 'eui64', 'random', фиксированное "
-"значение например '::1' или '::1:2'. Когда IPv6 префикс такой как — ('a:"
-"b:c:d::'), используйте суффикс на вроде ('::1') для этого IPv6 адреса ('a:b:"
-"c:d::1') для этого интерфейса."
+"значение например '::1' или '::1:2'. Когда IPv6 префикс такой как — ('a:b:c:"
+"d::'), используйте суффикс на вроде ('::1') для этого IPv6 адреса ('a:b:c:"
+"d::1') для этого интерфейса."
msgid ""
"Optional. Base64-encoded preshared key. Adds in an additional layer of "
@@ -2698,6 +2732,11 @@ msgstr "QMI сотовый"
msgid "Quality"
msgstr "Качество"
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
msgid "R0 Key Lifetime"
msgstr "R0 Key время жизни"
@@ -2736,8 +2775,8 @@ msgstr "Сервер Radius-Authentication"
msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this"
msgstr ""
-"Строка в шестнадцатеричном коде. Оставьте пустой, если ваш провайдер "
-"не требует этого"
+"Строка в шестнадцатеричном коде. Оставьте пустой, если ваш провайдер не "
+"требует этого"
msgid ""
"Read <code>/etc/ethers</code> to configure the <abbr title=\"Dynamic Host "
@@ -2750,9 +2789,9 @@ msgid ""
"Really delete this interface? The deletion cannot be undone! You might lose "
"access to this device if you are connected via this interface"
msgstr ""
-"Действительно удалить этот интерфейс? Удаление не может быть отменено! "
-"Вы можете потерять доступ к этому устройству, если вы подключены через "
-"данный интерфейс."
+"Действительно удалить этот интерфейс? Удаление не может быть отменено! Вы "
+"можете потерять доступ к этому устройству, если вы подключены через данный "
+"интерфейс."
msgid ""
"Really delete this wireless network? The deletion cannot be undone! You "
@@ -3001,6 +3040,9 @@ msgstr "Сохранить и применить"
msgid "Scan"
msgstr "Поиск"
+msgid "Scan request failed"
+msgstr ""
+
msgid "Scheduled Tasks"
msgstr "Запланированные задания"
@@ -3059,6 +3101,9 @@ msgstr "Секунды с большим числом ошибок (SES)."
msgid "Short GI"
msgstr "Short GI"
+msgid "Short Preamble"
+msgstr ""
+
msgid "Show current backup file list"
msgstr "Показать текущий список файлов резервной копии"
@@ -3170,6 +3215,9 @@ msgstr "Приоритет"
msgid "Starting configuration apply…"
msgstr "Применение конфигурации..."
+msgid "Starting wireless scan..."
+msgstr ""
+
msgid "Startup"
msgstr "Загрузка"
@@ -3300,9 +3348,8 @@ msgstr ""
"Вкладка меню <em>'Настройка устройства'</em> содержит физические настройки "
"радиооборудования, такие как канал, мощность передачи или выбор антенны, "
"которые совместно используются всеми настроенными беспроводными сетями (если "
-"радиооборудование поддерживает несколько SSID). Параметры сети, такие "
-"как шифрование или режим работы, смотрите на вкладке <em>'Настройка сети'</"
-"em>."
+"радиооборудование поддерживает несколько SSID). Параметры сети, такие как "
+"шифрование или режим работы, смотрите на вкладке <em>'Настройка сети'</em>."
msgid ""
"The <em>libiwinfo-lua</em> package is not installed. You must install this "
@@ -3335,7 +3382,7 @@ msgstr ""
"<code>_</code>"
msgid "The backup archive does not appear to be a valid gzip file."
-msgstr "Архив резервной копии не являетсяg правильным gzip файлом."
+msgstr "Архив резервной копии не является правильным gzip файлом."
msgid "The configuration file could not be loaded due to the following error:"
msgstr "Не удалось загрузить config файл из-за следующей ошибки:"
@@ -3349,12 +3396,12 @@ msgid ""
"or revert all pending changes to keep the currently working configuration "
"state."
msgstr ""
-"Устройство недоступно в течение %d секунд после применения изменений. "
-"Это привело к откату конфигурации из соображений безопасности. Если вы "
-"считаете, что конфигурация верна, выполните настройку без проверки. "
-"Кроме того, вы можете отклонить это предупреждение и отредактировать "
-"изменения перед попыткой применить конфигурацию снова или отктить все "
-"изменения чтобы сохранить рабочее состояние конфигурации."
+"Устройство недоступно в течение %d секунд после применения изменений. Это "
+"привело к откату конфигурации из соображений безопасности. Если вы считаете, "
+"что конфигурация верна, выполните настройку без проверки. Кроме того, вы "
+"можете отклонить это предупреждение и отредактировать изменения перед "
+"попыткой применить конфигурацию снова или отктить все изменения чтобы "
+"сохранить рабочее состояние конфигурации."
msgid ""
"The device file of the memory or partition (<abbr title=\"for example\">e.g."
@@ -3418,8 +3465,8 @@ msgid ""
msgstr ""
"Сетевые порты этого устройства могут быть объединены в несколько <abbr title="
"\"Virtual Local Area Network\">VLAN</abbr>ов, в которых компьютеры могут "
-"связываться напрямую между собой. <abbr title=\"Виртуальные локальные "
-"сети\">VLAN</abbr>ы часто используются для разделения нескольких сетевых "
+"связываться напрямую между собой. <abbr title=\"Виртуальные локальные сети"
+"\">VLAN</abbr>ы часто используются для разделения нескольких сетевых "
"сегментов. Обычно по умолчанию используется один порт для подключения к "
"внешней сети, например к Интернету и другие порты предназначенные для "
"внутренней — локальной сети."
@@ -3539,8 +3586,8 @@ msgstr ""
msgid "This is the system crontab in which scheduled tasks can be defined."
msgstr ""
-"Содержимое файла /etc/crontabs/root (задания crontab). Здесь "
-"вы можете запланировать ваши задания."
+"Содержимое файла /etc/crontabs/root (задания crontab). Здесь вы можете "
+"запланировать ваши задания."
msgid ""
"This is usually the address of the nearest PoP operated by the tunnel broker"
@@ -3771,8 +3818,8 @@ msgstr ""
"Нажмите кнопку <em>'Добавить'</em>, чтобы добавить новую запись аренды. "
"<em>'MAC-адрес'</em> идентифицирует хост, <em>'IPv4-адрес'</em> указывает "
"фиксированный адрес, а <em>'Имя хоста'</em> присваивается в качестве "
-"символьного имени для запрашивающего хоста. Необязательно <em>'Время "
-"аренды адреса'</em> может быть использовано для того, чтобы установить "
+"символьного имени для запрашивающего хоста. Необязательно <em>'Время аренды "
+"адреса'</em> может быть использовано для того, чтобы установить "
"индивидуальное время аренды, например 12h, 3d или бесконечное."
msgid "Used"
@@ -3941,9 +3988,9 @@ msgid ""
"scripts like \"network\", your device might become inaccessible!</strong>"
msgstr ""
"Здесь вы можете включить или выключить установленные скрипты инициализации. "
-"Изменения вступят в силу после перезагрузки устройства."
-" <strong>Внимание: если вы выключите один из основных скриптов инициализации "
-"(например 'network'), ваше устройство может оказаться недоступным!</strong>"
+"Изменения вступят в силу после перезагрузки устройства. <strong>Внимание: "
+"если вы выключите один из основных скриптов инициализации (например "
+"'network'), ваше устройство может оказаться недоступным!</strong>"
msgid ""
"You must enable JavaScript in your browser or LuCI will not work properly."
@@ -4039,6 +4086,9 @@ msgstr "Локальный <abbr title=\"Служба доменных имён\
msgid "minutes"
msgstr "минут(ы)"
+msgid "mixed WPA/WPA2"
+msgstr ""
+
msgid "no"
msgstr "нет"
@@ -4114,6 +4164,9 @@ msgstr "да"
msgid "« Back"
msgstr "« Назад"
+#~ msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+#~ msgstr "<abbr title='Парный: %s / Групповой: %s'>%s - %s</abbr>"
+
#~ msgid "Activate this network"
#~ msgstr "Активировать эту сеть"
diff --git a/modules/luci-base/po/sk/base.po b/modules/luci-base/po/sk/base.po
index f77164d68..7cf9f6feb 100644
--- a/modules/luci-base/po/sk/base.po
+++ b/modules/luci-base/po/sk/base.po
@@ -145,9 +145,6 @@ msgstr ""
msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
msgstr ""
-msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-msgstr ""
-
msgid ""
"<br/>Note: you need to manually restart the cron service if the crontab file "
"was empty before editing."
@@ -255,7 +252,13 @@ msgstr ""
msgid "Alert"
msgstr ""
-msgid "Alias interface"
+msgid "Alias Interface"
+msgstr ""
+
+msgid "Alias of \"%s\""
+msgstr ""
+
+msgid "All Servers"
msgstr ""
msgid ""
@@ -269,6 +272,9 @@ msgstr ""
msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
msgstr ""
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
msgid "Allow all except listed"
msgstr ""
@@ -300,6 +306,11 @@ msgstr ""
msgid "Always announce default router"
msgstr ""
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
msgid "Annex"
msgstr ""
@@ -491,6 +502,9 @@ msgstr ""
msgid "Band"
msgstr ""
+msgid "Beacon Interval"
+msgstr ""
+
msgid ""
"Below is the determined list of files to backup. It consists of changed "
"configuration files marked by opkg, essential base files and the user "
@@ -782,6 +796,9 @@ msgstr ""
msgid "DSL line mode"
msgstr ""
+msgid "DTIM Interval"
+msgstr ""
+
msgid "DUID"
msgstr ""
@@ -818,6 +835,9 @@ msgstr ""
msgid "Delete this network"
msgstr ""
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
msgid "Description"
msgstr ""
@@ -874,6 +894,9 @@ msgstr ""
msgid "Disabled (default)"
msgstr ""
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
msgid "Discard upstream RFC1918 responses"
msgstr ""
@@ -1217,6 +1240,9 @@ msgstr ""
msgid "Force"
msgstr ""
+msgid "Force 40MHz mode"
+msgstr ""
+
msgid "Force CCMP (AES)"
msgstr ""
@@ -1857,6 +1883,9 @@ msgstr ""
msgid "Lowest leased address as offset from the network address."
msgstr ""
+msgid "MAC"
+msgstr ""
+
msgid "MAC-Address"
msgstr ""
@@ -2097,6 +2126,9 @@ msgstr ""
msgid "No rules in this chain"
msgstr ""
+msgid "No scan results available yet..."
+msgstr ""
+
msgid "No zone assigned"
msgstr ""
@@ -2515,6 +2547,11 @@ msgstr ""
msgid "Quality"
msgstr ""
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
msgid "R0 Key Lifetime"
msgstr ""
@@ -2797,6 +2834,9 @@ msgstr ""
msgid "Scan"
msgstr ""
+msgid "Scan request failed"
+msgstr ""
+
msgid "Scheduled Tasks"
msgstr ""
@@ -2852,6 +2892,9 @@ msgstr ""
msgid "Short GI"
msgstr ""
+msgid "Short Preamble"
+msgstr ""
+
msgid "Show current backup file list"
msgstr ""
@@ -2953,6 +2996,9 @@ msgstr ""
msgid "Starting configuration apply…"
msgstr ""
+msgid "Starting wireless scan..."
+msgstr ""
+
msgid "Startup"
msgstr ""
@@ -3720,6 +3766,9 @@ msgstr ""
msgid "minutes"
msgstr ""
+msgid "mixed WPA/WPA2"
+msgstr ""
+
msgid "no"
msgstr ""
diff --git a/modules/luci-base/po/sv/base.po b/modules/luci-base/po/sv/base.po
index 2ac014d62..76b582590 100644
--- a/modules/luci-base/po/sv/base.po
+++ b/modules/luci-base/po/sv/base.po
@@ -151,9 +151,6 @@ msgstr ""
msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
msgstr ""
-msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-msgstr "<abbr title='Pairvis: %s / Grupp: %s'>%s - %s</abbr>"
-
msgid ""
"<br/>Note: you need to manually restart the cron service if the crontab file "
"was empty before editing."
@@ -263,7 +260,13 @@ msgstr ""
msgid "Alert"
msgstr "Varning"
-msgid "Alias interface"
+msgid "Alias Interface"
+msgstr ""
+
+msgid "Alias of \"%s\""
+msgstr ""
+
+msgid "All Servers"
msgstr ""
msgid ""
@@ -278,6 +281,9 @@ msgstr "Allokera IP sekventiellt"
msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
msgstr "Tillåt <abbr title=\"Secure Shell\">SSH</abbr> lösenordsautentisering"
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
msgid "Allow all except listed"
msgstr "Tillåt alla utom listade"
@@ -311,6 +317,11 @@ msgstr "Tillåtna IP-adresser"
msgid "Always announce default router"
msgstr ""
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
msgid "Annex"
msgstr ""
@@ -502,6 +513,9 @@ msgstr "Fel adress angiven!"
msgid "Band"
msgstr "Band"
+msgid "Beacon Interval"
+msgstr ""
+
msgid ""
"Below is the determined list of files to backup. It consists of changed "
"configuration files marked by opkg, essential base files and the user "
@@ -796,6 +810,9 @@ msgstr "DSL-status"
msgid "DSL line mode"
msgstr ""
+msgid "DTIM Interval"
+msgstr ""
+
msgid "DUID"
msgstr ""
@@ -832,6 +849,9 @@ msgstr "Radera"
msgid "Delete this network"
msgstr "Ta bort det här nätverket"
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
msgid "Description"
msgstr "Beskrivning"
@@ -890,6 +910,9 @@ msgstr "Inaktiverad"
msgid "Disabled (default)"
msgstr "Inaktiverad (standard)"
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
msgid "Discard upstream RFC1918 responses"
msgstr ""
@@ -1237,6 +1260,9 @@ msgstr "Skriver..."
msgid "Force"
msgstr "Tvinga"
+msgid "Force 40MHz mode"
+msgstr ""
+
msgid "Force CCMP (AES)"
msgstr "Tvinga CCMP (AES)"
@@ -1878,6 +1904,9 @@ msgstr ""
msgid "Lowest leased address as offset from the network address."
msgstr ""
+msgid "MAC"
+msgstr ""
+
msgid "MAC-Address"
msgstr "MAC-adress"
@@ -2118,6 +2147,9 @@ msgstr "Inget lösenord inställt!"
msgid "No rules in this chain"
msgstr "Inga regler i den här kedjan"
+msgid "No scan results available yet..."
+msgstr ""
+
msgid "No zone assigned"
msgstr ""
@@ -2536,6 +2568,11 @@ msgstr "QMI-telefoni"
msgid "Quality"
msgstr "Kvalité"
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
msgid "R0 Key Lifetime"
msgstr ""
@@ -2820,6 +2857,9 @@ msgstr "Spara och Verkställ"
msgid "Scan"
msgstr "Skanna"
+msgid "Scan request failed"
+msgstr ""
+
msgid "Scheduled Tasks"
msgstr "Schemalagda uppgifter"
@@ -2875,6 +2915,9 @@ msgstr ""
msgid "Short GI"
msgstr ""
+msgid "Short Preamble"
+msgstr ""
+
msgid "Show current backup file list"
msgstr ""
@@ -2976,6 +3019,9 @@ msgstr ""
msgid "Starting configuration apply…"
msgstr ""
+msgid "Starting wireless scan..."
+msgstr ""
+
msgid "Startup"
msgstr ""
@@ -3753,6 +3799,9 @@ msgstr "lokal <abbr title=\"Domain Name System\">DNS</abbr>-fil"
msgid "minutes"
msgstr "minuter"
+msgid "mixed WPA/WPA2"
+msgstr ""
+
msgid "no"
msgstr "nej"
@@ -3828,6 +3877,9 @@ msgstr "ja"
msgid "« Back"
msgstr "« Bakåt"
+#~ msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+#~ msgstr "<abbr title='Pairvis: %s / Grupp: %s'>%s - %s</abbr>"
+
#~ msgid "Activate this network"
#~ msgstr "Aktivera det här nätverket"
diff --git a/modules/luci-base/po/templates/base.pot b/modules/luci-base/po/templates/base.pot
index 3fad88c0d..2dacedfe7 100644
--- a/modules/luci-base/po/templates/base.pot
+++ b/modules/luci-base/po/templates/base.pot
@@ -138,9 +138,6 @@ msgstr ""
msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
msgstr ""
-msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-msgstr ""
-
msgid ""
"<br/>Note: you need to manually restart the cron service if the crontab file "
"was empty before editing."
@@ -248,7 +245,13 @@ msgstr ""
msgid "Alert"
msgstr ""
-msgid "Alias interface"
+msgid "Alias Interface"
+msgstr ""
+
+msgid "Alias of \"%s\""
+msgstr ""
+
+msgid "All Servers"
msgstr ""
msgid ""
@@ -262,6 +265,9 @@ msgstr ""
msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
msgstr ""
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
msgid "Allow all except listed"
msgstr ""
@@ -293,6 +299,11 @@ msgstr ""
msgid "Always announce default router"
msgstr ""
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
msgid "Annex"
msgstr ""
@@ -484,6 +495,9 @@ msgstr ""
msgid "Band"
msgstr ""
+msgid "Beacon Interval"
+msgstr ""
+
msgid ""
"Below is the determined list of files to backup. It consists of changed "
"configuration files marked by opkg, essential base files and the user "
@@ -775,6 +789,9 @@ msgstr ""
msgid "DSL line mode"
msgstr ""
+msgid "DTIM Interval"
+msgstr ""
+
msgid "DUID"
msgstr ""
@@ -811,6 +828,9 @@ msgstr ""
msgid "Delete this network"
msgstr ""
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
msgid "Description"
msgstr ""
@@ -867,6 +887,9 @@ msgstr ""
msgid "Disabled (default)"
msgstr ""
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
msgid "Discard upstream RFC1918 responses"
msgstr ""
@@ -1210,6 +1233,9 @@ msgstr ""
msgid "Force"
msgstr ""
+msgid "Force 40MHz mode"
+msgstr ""
+
msgid "Force CCMP (AES)"
msgstr ""
@@ -1850,6 +1876,9 @@ msgstr ""
msgid "Lowest leased address as offset from the network address."
msgstr ""
+msgid "MAC"
+msgstr ""
+
msgid "MAC-Address"
msgstr ""
@@ -2090,6 +2119,9 @@ msgstr ""
msgid "No rules in this chain"
msgstr ""
+msgid "No scan results available yet..."
+msgstr ""
+
msgid "No zone assigned"
msgstr ""
@@ -2508,6 +2540,11 @@ msgstr ""
msgid "Quality"
msgstr ""
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
msgid "R0 Key Lifetime"
msgstr ""
@@ -2790,6 +2827,9 @@ msgstr ""
msgid "Scan"
msgstr ""
+msgid "Scan request failed"
+msgstr ""
+
msgid "Scheduled Tasks"
msgstr ""
@@ -2845,6 +2885,9 @@ msgstr ""
msgid "Short GI"
msgstr ""
+msgid "Short Preamble"
+msgstr ""
+
msgid "Show current backup file list"
msgstr ""
@@ -2946,6 +2989,9 @@ msgstr ""
msgid "Starting configuration apply…"
msgstr ""
+msgid "Starting wireless scan..."
+msgstr ""
+
msgid "Startup"
msgstr ""
@@ -3713,6 +3759,9 @@ msgstr ""
msgid "minutes"
msgstr ""
+msgid "mixed WPA/WPA2"
+msgstr ""
+
msgid "no"
msgstr ""
diff --git a/modules/luci-base/po/tr/base.po b/modules/luci-base/po/tr/base.po
index fe0e0f9f3..383c68306 100644
--- a/modules/luci-base/po/tr/base.po
+++ b/modules/luci-base/po/tr/base.po
@@ -154,9 +154,6 @@ msgstr ""
msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
msgstr "<abbr title=\"maximal\">Maks.</abbr> eşzamanlı sorgu"
-msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-msgstr ""
-
msgid ""
"<br/>Note: you need to manually restart the cron service if the crontab file "
"was empty before editing."
@@ -266,7 +263,13 @@ msgstr ""
msgid "Alert"
msgstr "Uyarı"
-msgid "Alias interface"
+msgid "Alias Interface"
+msgstr ""
+
+msgid "Alias of \"%s\""
+msgstr ""
+
+msgid "All Servers"
msgstr ""
msgid ""
@@ -282,6 +285,9 @@ msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
msgstr ""
"<abbr title=\"Secure Shell\">SSH</abbr> parola kimlik doğrulamasına izin ver"
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
msgid "Allow all except listed"
msgstr "Listelenenlerin haricindekilere izin ver"
@@ -313,6 +319,11 @@ msgstr ""
msgid "Always announce default router"
msgstr ""
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
msgid "Annex"
msgstr ""
@@ -504,6 +515,9 @@ msgstr ""
msgid "Band"
msgstr ""
+msgid "Beacon Interval"
+msgstr ""
+
msgid ""
"Below is the determined list of files to backup. It consists of changed "
"configuration files marked by opkg, essential base files and the user "
@@ -795,6 +809,9 @@ msgstr ""
msgid "DSL line mode"
msgstr ""
+msgid "DTIM Interval"
+msgstr ""
+
msgid "DUID"
msgstr ""
@@ -831,6 +848,9 @@ msgstr ""
msgid "Delete this network"
msgstr ""
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
msgid "Description"
msgstr ""
@@ -887,6 +907,9 @@ msgstr ""
msgid "Disabled (default)"
msgstr ""
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
msgid "Discard upstream RFC1918 responses"
msgstr ""
@@ -1230,6 +1253,9 @@ msgstr ""
msgid "Force"
msgstr ""
+msgid "Force 40MHz mode"
+msgstr ""
+
msgid "Force CCMP (AES)"
msgstr ""
@@ -1870,6 +1896,9 @@ msgstr ""
msgid "Lowest leased address as offset from the network address."
msgstr ""
+msgid "MAC"
+msgstr ""
+
msgid "MAC-Address"
msgstr ""
@@ -2110,6 +2139,9 @@ msgstr ""
msgid "No rules in this chain"
msgstr ""
+msgid "No scan results available yet..."
+msgstr ""
+
msgid "No zone assigned"
msgstr ""
@@ -2528,6 +2560,11 @@ msgstr ""
msgid "Quality"
msgstr ""
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
msgid "R0 Key Lifetime"
msgstr ""
@@ -2810,6 +2847,9 @@ msgstr "Kaydet & Uygula"
msgid "Scan"
msgstr "Tara"
+msgid "Scan request failed"
+msgstr ""
+
msgid "Scheduled Tasks"
msgstr "Zamanlanmış Görevler"
@@ -2865,6 +2905,9 @@ msgstr ""
msgid "Short GI"
msgstr ""
+msgid "Short Preamble"
+msgstr ""
+
msgid "Show current backup file list"
msgstr ""
@@ -2966,6 +3009,9 @@ msgstr ""
msgid "Starting configuration apply…"
msgstr ""
+msgid "Starting wireless scan..."
+msgstr ""
+
msgid "Startup"
msgstr ""
@@ -3735,6 +3781,9 @@ msgstr "yerel <abbr title=\"Domain Name System\">DNS</abbr> dosyası"
msgid "minutes"
msgstr "dakika"
+msgid "mixed WPA/WPA2"
+msgstr ""
+
msgid "no"
msgstr "hayır"
diff --git a/modules/luci-base/po/uk/base.po b/modules/luci-base/po/uk/base.po
index 1f50b0c1d..e4cf1ed0a 100644
--- a/modules/luci-base/po/uk/base.po
+++ b/modules/luci-base/po/uk/base.po
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"PO-Revision-Date: 2018-07-16 15:45+0300\n"
+"PO-Revision-Date: 2018-07-20 11:30+0300\n"
"Last-Translator: Yurii <yuripet@gmail.com>\n"
"Language-Team: none\n"
"Language: uk\n"
@@ -169,9 +169,6 @@ msgstr ""
msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
msgstr "<abbr title=\"Максимум\">Макс.</abbr> одночасних запитів"
-msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-msgstr "<abbr title='Парний: %s / Груповий: %s'>%s – %s</abbr>"
-
msgid ""
"<br/>Note: you need to manually restart the cron service if the crontab file "
"was empty before editing."
@@ -291,9 +288,15 @@ msgstr "Сумарна потужність передавання"
msgid "Alert"
msgstr "Тривога"
-msgid "Alias interface"
+msgid "Alias Interface"
msgstr "Інтерфейс псевдоніма"
+msgid "Alias of \"%s\""
+msgstr "Псевдонім \"%s\""
+
+msgid "All Servers"
+msgstr "Усі сервери"
+
msgid ""
"Allocate IP addresses sequentially, starting from the lowest available "
"address"
@@ -307,6 +310,12 @@ msgstr ""
"Дозволити <abbr title=\"Secure Shell — безпечна оболонка\">SSH</abbr>-"
"перевірку пароля"
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+"Дозволити режиму AP відключення абонентів на підставі низького рівня <abbr "
+"title=\"Підтвердження (Acknowledge) успішності отримання TCP-сегменту\">ACK</"
+"abbr>"
+
msgid "Allow all except listed"
msgstr "Дозволити всі, крім зазначених"
@@ -342,6 +351,14 @@ msgstr "Дозволено IP-адреси"
msgid "Always announce default router"
msgstr "Завжди оголошувати типовим маршрутизатором"
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+"Завжди використовувати канали 40 МГц, навіть якщо вторинний канал "
+"перекривається. Використання цієї опції не відповідає стандарту IEEE "
+"802.11n-2009!"
+
msgid "Annex"
msgstr ""
@@ -540,6 +557,9 @@ msgstr "Вказано неправильну адресу!"
msgid "Band"
msgstr "Група"
+msgid "Beacon Interval"
+msgstr "Інтервал маяка"
+
msgid ""
"Below is the determined list of files to backup. It consists of changed "
"configuration files marked by opkg, essential base files and the user "
@@ -863,6 +883,11 @@ msgstr "Стан DSL"
msgid "DSL line mode"
msgstr "Режим лінії DSL"
+msgid "DTIM Interval"
+msgstr ""
+"Інтервал <abbr title=\"Delivery Traffic Indication Message — Повідомлення "
+"індикації доправлення трафіку\">DTIM</abbr>"
+
msgid "DUID"
msgstr "DUID"
@@ -902,6 +927,9 @@ msgstr "Видалити"
msgid "Delete this network"
msgstr "Видалити цю мережу"
+msgid "Delivery Traffic Indication Message Interval"
+msgstr "Інтервал повідомлень індикації доправлення трафіку"
+
msgid "Description"
msgstr "Опис"
@@ -960,6 +988,9 @@ msgstr "Вимкнено"
msgid "Disabled (default)"
msgstr "Вимкнено (типово)"
+msgid "Disassociate On Low Acknowledgement"
+msgstr "Роз'єднувати за низького підтвердження"
+
msgid "Discard upstream RFC1918 responses"
msgstr "Відкидати висхідні RFC1918-відповіді"
@@ -1331,6 +1362,9 @@ msgstr "Прошиваємо..."
msgid "Force"
msgstr "Примусово"
+msgid "Force 40MHz mode"
+msgstr "Примусово застосовувати режим '40MHz'"
+
msgid "Force CCMP (AES)"
msgstr "Примусово CCMP (AES)"
@@ -2028,6 +2062,9 @@ msgstr ""
msgid "Lowest leased address as offset from the network address."
msgstr "Найнижча орендована адреса."
+msgid "MAC"
+msgstr "MAC"
+
msgid "MAC-Address"
msgstr "MAC-адреса"
@@ -2274,6 +2311,9 @@ msgstr "Пароль не встановлено!"
msgid "No rules in this chain"
msgstr "У цьму ланцюжку нема правил"
+msgid "No scan results available yet..."
+msgstr "Результати сканування наразі недоступні"
+
msgid "No zone assigned"
msgstr "Зону не призначено"
@@ -2720,6 +2760,13 @@ msgstr "Стільниковий QMI"
msgid "Quality"
msgstr "Якість"
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+"Запит усіх наявних висхідних <abbr title=\"Domain Name System — система "
+"доменних імен\">DNS</abbr>-серверів"
+
msgid "R0 Key Lifetime"
msgstr "Тривалість життя ключа R0"
@@ -3016,14 +3063,17 @@ msgstr "Зберегти і застосувати"
msgid "Scan"
msgstr "Сканувати"
+msgid "Scan request failed"
+msgstr "Помилка запиту на сканування"
+
msgid "Scheduled Tasks"
msgstr "Заплановані завдання"
msgid "Section added"
-msgstr "Секція додана"
+msgstr "Секцію додано"
msgid "Section removed"
-msgstr "Секція видалена"
+msgstr "Секцію видалено"
msgid "See \"mount\" manpage for details"
msgstr "Подробиці дивись на сторінці керівництва \"mount\"."
@@ -3073,7 +3123,10 @@ msgid "Severely Errored Seconds (SES)"
msgstr ""
msgid "Short GI"
-msgstr ""
+msgstr "Short GI"
+
+msgid "Short Preamble"
+msgstr "Коротка преамбула"
msgid "Show current backup file list"
msgstr "Показати поточний список файлів резервного копіювання"
@@ -3183,6 +3236,9 @@ msgstr "Стартовий пріоритет"
msgid "Starting configuration apply…"
msgstr "Застосовується стартова конфігурація…"
+msgid "Starting wireless scan..."
+msgstr "Розпочато сканування бездротових мереж..."
+
msgid "Startup"
msgstr "Запуск"
@@ -4055,6 +4111,9 @@ msgstr ""
msgid "minutes"
msgstr "хв."
+msgid "mixed WPA/WPA2"
+msgstr "змішаний WPA/WPA2"
+
msgid "no"
msgstr "ні"
diff --git a/modules/luci-base/po/vi/base.po b/modules/luci-base/po/vi/base.po
index 2f5bf4a1c..6451853bb 100644
--- a/modules/luci-base/po/vi/base.po
+++ b/modules/luci-base/po/vi/base.po
@@ -152,9 +152,6 @@ msgstr ""
msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
msgstr ""
-msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-msgstr ""
-
msgid ""
"<br/>Note: you need to manually restart the cron service if the crontab file "
"was empty before editing."
@@ -262,7 +259,13 @@ msgstr ""
msgid "Alert"
msgstr ""
-msgid "Alias interface"
+msgid "Alias Interface"
+msgstr ""
+
+msgid "Alias of \"%s\""
+msgstr ""
+
+msgid "All Servers"
msgstr ""
msgid ""
@@ -276,6 +279,9 @@ msgstr ""
msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
msgstr "Cho phép <abbr title=\"Secure Shell\">SSH</abbr> xác thực mật mã"
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
msgid "Allow all except listed"
msgstr "Cho phép tất cả trừ danh sách liệt kê"
@@ -307,6 +313,11 @@ msgstr ""
msgid "Always announce default router"
msgstr ""
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
msgid "Annex"
msgstr ""
@@ -498,6 +509,9 @@ msgstr ""
msgid "Band"
msgstr ""
+msgid "Beacon Interval"
+msgstr ""
+
msgid ""
"Below is the determined list of files to backup. It consists of changed "
"configuration files marked by opkg, essential base files and the user "
@@ -791,6 +805,9 @@ msgstr ""
msgid "DSL line mode"
msgstr ""
+msgid "DTIM Interval"
+msgstr ""
+
msgid "DUID"
msgstr ""
@@ -827,6 +844,9 @@ msgstr "Xóa"
msgid "Delete this network"
msgstr ""
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
msgid "Description"
msgstr "Mô tả"
@@ -883,6 +903,9 @@ msgstr ""
msgid "Disabled (default)"
msgstr ""
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
msgid "Discard upstream RFC1918 responses"
msgstr ""
@@ -1235,6 +1258,9 @@ msgstr ""
msgid "Force"
msgstr "Force"
+msgid "Force 40MHz mode"
+msgstr ""
+
msgid "Force CCMP (AES)"
msgstr ""
@@ -1885,6 +1911,9 @@ msgstr ""
msgid "Lowest leased address as offset from the network address."
msgstr ""
+msgid "MAC"
+msgstr ""
+
msgid "MAC-Address"
msgstr ""
@@ -2127,6 +2156,9 @@ msgstr ""
msgid "No rules in this chain"
msgstr "Không có quy luật trong chuỗi này"
+msgid "No scan results available yet..."
+msgstr ""
+
msgid "No zone assigned"
msgstr ""
@@ -2551,6 +2583,11 @@ msgstr ""
msgid "Quality"
msgstr ""
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
msgid "R0 Key Lifetime"
msgstr ""
@@ -2837,6 +2874,9 @@ msgstr "Lưu & áp dụng "
msgid "Scan"
msgstr "Scan"
+msgid "Scan request failed"
+msgstr ""
+
msgid "Scheduled Tasks"
msgstr "Scheduled Tasks"
@@ -2892,6 +2932,9 @@ msgstr ""
msgid "Short GI"
msgstr ""
+msgid "Short Preamble"
+msgstr ""
+
msgid "Show current backup file list"
msgstr ""
@@ -2993,6 +3036,9 @@ msgstr "Bắt đầu ưu tiên"
msgid "Starting configuration apply…"
msgstr ""
+msgid "Starting wireless scan..."
+msgstr ""
+
msgid "Startup"
msgstr ""
@@ -3781,6 +3827,9 @@ msgstr "Tập tin <abbr title=\"Domain Name System\">DNS</abbr> địa phương"
msgid "minutes"
msgstr ""
+msgid "mixed WPA/WPA2"
+msgstr ""
+
msgid "no"
msgstr ""
diff --git a/modules/luci-base/po/zh-cn/base.po b/modules/luci-base/po/zh-cn/base.po
index c93c381bb..888ceca93 100644
--- a/modules/luci-base/po/zh-cn/base.po
+++ b/modules/luci-base/po/zh-cn/base.po
@@ -4,7 +4,7 @@ msgstr ""
"Last-Translator: Hsing-Wang Liao <kuoruan@gmail.com>\n"
msgid "%.1f dB"
-msgstr ""
+msgstr "%.1f dB"
msgid "%s is untagged in multiple VLANs!"
msgstr "%s 在多个 VLAN 中均未标记!"
@@ -40,7 +40,7 @@ msgid "-- match by uuid --"
msgstr "-- 根据 UUID 匹配 --"
msgid "-- please select --"
-msgstr ""
+msgstr "-- 请选择 --"
msgid "1 Minute Load:"
msgstr "1 分钟负载:"
@@ -147,9 +147,6 @@ msgstr ""
msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
msgstr "最大并发查询数"
-msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-msgstr "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-
msgid ""
"<br/>Note: you need to manually restart the cron service if the crontab file "
"was empty before editing."
@@ -260,8 +257,14 @@ msgstr "总发射功率(ACTATP)"
msgid "Alert"
msgstr "警戒"
-msgid "Alias interface"
-msgstr ""
+msgid "Alias Interface"
+msgstr "接口别名"
+
+msgid "Alias of \"%s\""
+msgstr "\"%s\" 的别名"
+
+msgid "All Servers"
+msgstr "所有服务器"
msgid ""
"Allocate IP addresses sequentially, starting from the lowest available "
@@ -274,6 +277,9 @@ msgstr "顺序分配 IP"
msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
msgstr "允许 <abbr title=\"Secure Shell\">SSH</abbr> 密码验证"
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr "允许 AP 模式时在 low ACK 的情况下断开无线终端"
+
msgid "Allow all except listed"
msgstr "仅允许列表外"
@@ -305,6 +311,12 @@ msgstr "允许的 IP"
msgid "Always announce default router"
msgstr "总是通告默认路由"
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+"即使辅助信道重叠,也始终使用 40MHz 信道。使用此选项不符合IEEE 802.11n-2009!"
+
msgid "Annex"
msgstr "Annex"
@@ -384,7 +396,7 @@ msgid "Apply request failed with status <code>%h</code>"
msgstr "应用请求失败,状态 <code>%h</code>"
msgid "Apply unchecked"
-msgstr "应用未选中"
+msgstr "强制应用"
msgid "Architecture"
msgstr "架构"
@@ -496,6 +508,9 @@ msgstr "指定了错误的地址!"
msgid "Band"
msgstr "频宽"
+msgid "Beacon Interval"
+msgstr "Beacon 间隔"
+
msgid ""
"Below is the determined list of files to backup. It consists of changed "
"configuration files marked by opkg, essential base files and the user "
@@ -552,7 +567,7 @@ msgid "CPU usage (%)"
msgstr "CPU 使用率(%)"
msgid "Call failed"
-msgstr ""
+msgstr "调用失败"
msgid "Cancel"
msgstr "取消"
@@ -564,16 +579,16 @@ msgid "Chain"
msgstr "链"
msgid "Changes"
-msgstr "修改数"
+msgstr "更改数"
msgid "Changes applied."
msgstr "更改已应用。"
msgid "Changes have been reverted."
-msgstr "更改已取消。"
+msgstr "更改已恢复。"
msgid "Changes the administrator password for accessing the device"
-msgstr "修改访问设备的管理员密码"
+msgstr "更改访问设备的管理员密码"
msgid "Channel"
msgstr "信道"
@@ -657,7 +672,7 @@ msgid "Configuration"
msgstr "配置"
msgid "Configuration failed"
-msgstr ""
+msgstr "配置失败"
msgid "Configuration files will be kept."
msgstr "配置文件将被保留。"
@@ -681,7 +696,7 @@ msgid "Connection Limit"
msgstr "连接数限制"
msgid "Connection attempt failed"
-msgstr ""
+msgstr "尝试连接失败"
msgid "Connections"
msgstr "连接"
@@ -691,7 +706,7 @@ msgid ""
"changes. You might need to reconnect if you modified network related "
"settings such as the IP address or wireless security credentials."
msgstr ""
-"应用配置更改后,无法重新获得对设备的访问权限。如果您修改了网络相关设置如 IP "
+"应用配置更改后,无法重新获得对设备的访问权限。如果您更改了网络相关设置如 IP "
"地址或无线安全证书,则可能需要重新连接。"
msgid "Country"
@@ -797,6 +812,9 @@ msgstr "DSL 状态"
msgid "DSL line mode"
msgstr "DSL 线路模式"
+msgid "DTIM Interval"
+msgstr "DTIM 间隔"
+
msgid "DUID"
msgstr "DUID"
@@ -835,6 +853,9 @@ msgstr "删除"
msgid "Delete this network"
msgstr "删除此网络"
+msgid "Delivery Traffic Indication Message Interval"
+msgstr "发送流量指示消息间隔"
+
msgid "Description"
msgstr "描述"
@@ -857,7 +878,7 @@ msgid "Device unreachable!"
msgstr "无法连接到设备"
msgid "Device unreachable! Still waiting for device..."
-msgstr ""
+msgstr "无法连接到设备!仍旧等待设备..."
msgid "Diagnostics"
msgstr "网络诊断"
@@ -891,13 +912,16 @@ msgid "Disabled"
msgstr "已禁用"
msgid "Disabled (default)"
-msgstr "禁用(默认)"
+msgstr "已禁用(默认)"
+
+msgid "Disassociate On Low Acknowledgement"
+msgstr "在 Low Acknowledgement 时断开连接"
msgid "Discard upstream RFC1918 responses"
msgstr "丢弃 RFC1918 上行响应数据"
msgid "Disconnection attempt failed"
-msgstr ""
+msgstr "尝试断开连接失败"
msgid "Dismiss"
msgstr "解除"
@@ -952,7 +976,7 @@ msgstr ""
"不转发没有 <abbr title=\"Domain Name System\">DNS</abbr> 名称的解析请求"
msgid "Down"
-msgstr ""
+msgstr "向下"
msgid "Download and install package"
msgstr "下载并安装软件包"
@@ -995,7 +1019,7 @@ msgid "EAP-Method"
msgstr "EAP 类型"
msgid "Edit"
-msgstr "修改"
+msgstr "编辑"
msgid ""
"Edit the raw configuration data above to fix any error and hit \"Save\" to "
@@ -1003,10 +1027,10 @@ msgid ""
msgstr "编辑上方的原始配置数据来修复错误,点击“保存”按钮以重新载入此页面。"
msgid "Edit this interface"
-msgstr "修改此接口"
+msgstr "编辑此接口"
msgid "Edit this network"
-msgstr "修改此网络"
+msgstr "编辑此网络"
msgid "Emergency"
msgstr "紧急"
@@ -1069,7 +1093,7 @@ msgid "Enable this mount"
msgstr "启用此挂载点"
msgid "Enable this network"
-msgstr ""
+msgstr "启用此网络"
msgid "Enable this swap"
msgstr "启用此 swap 分区"
@@ -1104,10 +1128,10 @@ msgid "Endpoint Port"
msgstr "端点端口"
msgid "Enter custom value"
-msgstr ""
+msgstr "输入自定义值"
msgid "Enter custom values"
-msgstr ""
+msgstr "输入自定义值"
msgid "Erasing..."
msgstr "擦除中..."
@@ -1159,10 +1183,10 @@ msgid "Extra SSH command options"
msgstr "额外的 SSH 命令选项"
msgid "FT over DS"
-msgstr ""
+msgstr "FT over DS"
msgid "FT over the Air"
-msgstr ""
+msgstr "FT over the Air"
msgid "FT protocol"
msgstr "FT 协议"
@@ -1189,7 +1213,7 @@ msgid "Filter useless"
msgstr "过滤无用包"
msgid "Finalizing failed"
-msgstr ""
+msgstr "最终确认失败"
msgid ""
"Find all currently attached filesystems and swap and replace configuration "
@@ -1244,6 +1268,9 @@ msgstr "刷写中..."
msgid "Force"
msgstr "强制"
+msgid "Force 40MHz mode"
+msgstr "强制 40MHz 模式"
+
msgid "Force CCMP (AES)"
msgstr "强制 CCMP(AES)"
@@ -1309,7 +1336,7 @@ msgid "Gateway"
msgstr "网关"
msgid "Gateway address is invalid"
-msgstr ""
+msgstr "网关地址无效"
msgid "Gateway ports"
msgstr "网关端口"
@@ -1397,7 +1424,7 @@ msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
msgstr "主机 <abbr title=\"Internet Protocol Address\">IP</abbr> 或网络"
msgid "Host-Uniq tag content"
-msgstr ""
+msgstr "Host-Uniq 标签内容"
msgid "Hostname"
msgstr "主机名"
@@ -1421,10 +1448,10 @@ msgid "IP address"
msgstr "IP 地址"
msgid "IP address in invalid"
-msgstr ""
+msgstr "IP 地址无效"
msgid "IP address is missing"
-msgstr ""
+msgstr "IP 地址缺失"
msgid "IPv4"
msgstr "IPv4"
@@ -1596,7 +1623,7 @@ msgid "Info"
msgstr "信息"
msgid "Initialization failure"
-msgstr ""
+msgstr "初始化失败"
msgid "Initscript"
msgstr "启动脚本"
@@ -1834,7 +1861,7 @@ msgid "Loading"
msgstr "加载中"
msgid "Local IP address is invalid"
-msgstr ""
+msgstr "本地 IP 地址无效"
msgid "Local IP address to assign"
msgstr "要分配的本地 IP 地址"
@@ -1900,6 +1927,9 @@ msgstr "信号丢失秒数(LOSS)"
msgid "Lowest leased address as offset from the network address."
msgstr "网络地址的起始分配基址。"
+msgid "MAC"
+msgstr "MAC"
+
msgid "MAC-Address"
msgstr "MAC 地址"
@@ -1916,7 +1946,7 @@ msgid "MAP / LW4over6"
msgstr "MAP / LW4over6"
msgid "MAP rule is invalid"
-msgstr ""
+msgstr "MAP 规则无效"
msgid "MB/s"
msgstr "MB/s"
@@ -2000,7 +2030,7 @@ msgid "Modem device"
msgstr "调制解调器节点"
msgid "Modem information query failed"
-msgstr ""
+msgstr "调制解调器信息查询失败"
msgid "Modem init timeout"
msgstr "调制解调器初始化超时"
@@ -2098,7 +2128,7 @@ msgid "Network boot image"
msgstr "网络启动镜像"
msgid "Network device is not present"
-msgstr ""
+msgstr "网络设备不存在"
msgid "Network without interfaces."
msgstr "无接口的网络。"
@@ -2122,7 +2152,7 @@ msgid "No information available"
msgstr "无可用信息"
msgid "No matching prefix delegation"
-msgstr ""
+msgstr "无匹配的前缀委托"
msgid "No negative cache"
msgstr "禁用无效信息缓存"
@@ -2142,6 +2172,9 @@ msgstr "未设置密码!"
msgid "No rules in this chain"
msgstr "本链没有规则"
+msgid "No scan results available yet..."
+msgstr "还没有可用的扫描结果..."
+
msgid "No zone assigned"
msgstr "未指定区域"
@@ -2246,10 +2279,10 @@ msgid "Operating frequency"
msgstr "工作频率"
msgid "Option changed"
-msgstr "修改的选项"
+msgstr "选项已更改"
msgid "Option removed"
-msgstr "移除的选项"
+msgstr "选项已移除"
msgid "Optional"
msgstr "可选"
@@ -2279,7 +2312,7 @@ msgid "Optional. Create routes for Allowed IPs for this peer."
msgstr "可选,为此 Peer 创建允许 IP 的路由。"
msgid "Optional. Description of peer."
-msgstr ""
+msgstr "可选,Peer 的描述。"
msgid ""
"Optional. Host of peer. Names are resolved prior to bringing up the "
@@ -2362,7 +2395,7 @@ msgid "PIN"
msgstr "PIN"
msgid "PIN code rejected"
-msgstr ""
+msgstr "PIN 码被拒绝"
msgid "PMK R1 Push"
msgstr "R1 推送 PMK"
@@ -2422,7 +2455,7 @@ msgid "Password of inner Private Key"
msgstr "内部私钥的密码"
msgid "Password successfully changed!"
-msgstr "密码修改成功!"
+msgstr "密码更改成功!"
msgid "Password2"
msgstr "密码 2"
@@ -2452,7 +2485,7 @@ msgid "Peer IP address to assign"
msgstr "要分配的 Peer IP 地址"
msgid "Peer address is missing"
-msgstr ""
+msgstr "Peer 地址缺失"
msgid "Peers"
msgstr "Peers"
@@ -2570,6 +2603,11 @@ msgstr "QMI 蜂窝"
msgid "Quality"
msgstr "质量"
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr "查询所有可用的上游 <abbr title=\"Domain Name System\">DNS</abbr> 服务器"
+
msgid "R0 Key Lifetime"
msgstr "R0 密钥生存期"
@@ -2607,7 +2645,7 @@ msgid "Radius-Authentication-Server"
msgstr "Radius 认证服务器"
msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this"
-msgstr ""
+msgstr "原始 16 进制编码的字节。除非您的 ISP 要求,否则请留空"
msgid ""
"Read <code>/etc/ethers</code> to configure the <abbr title=\"Dynamic Host "
@@ -2620,13 +2658,14 @@ msgid ""
"Really delete this interface? The deletion cannot be undone! You might lose "
"access to this device if you are connected via this interface"
msgstr ""
+"确定要删除此接口?删除操作无法撤消!若您删除此接口,可能导致无法再访问此设备"
msgid ""
"Really delete this wireless network? The deletion cannot be undone! You "
"might lose access to this device if you are connected via this network."
msgstr ""
-"确定要删除此无线网络?删除操作无法撤销!\\n删除此无线网络,可能导致无法再访问"
-"路由器!"
+"确定要删除此无线网络?删除操作无法撤销!若您删除此无线网络,可能导致无法再访问"
+"此设备。"
msgid "Really reset all changes?"
msgstr "确定要放弃所有更改?"
@@ -2769,7 +2808,7 @@ msgid "Restart Firewall"
msgstr "重启防火墙"
msgid "Restart radio interface"
-msgstr ""
+msgstr "重启无线接口"
msgid "Restore"
msgstr "恢复"
@@ -2860,6 +2899,9 @@ msgstr "保存并应用"
msgid "Scan"
msgstr "扫描"
+msgid "Scan request failed"
+msgstr "扫描请求失败"
+
msgid "Scheduled Tasks"
msgstr "计划任务"
@@ -2903,10 +2945,10 @@ msgid "Set up Time Synchronization"
msgstr "设置时间同步"
msgid "Setting PLMN failed"
-msgstr ""
+msgstr "设置 PLMN 失败"
msgid "Setting operation mode failed"
-msgstr ""
+msgstr "设置操作模式失败"
msgid "Setup DHCP Server"
msgstr "配置 DHCP 服务器"
@@ -2917,6 +2959,9 @@ msgstr "严重误码秒(SES)"
msgid "Short GI"
msgstr "Short GI"
+msgid "Short Preamble"
+msgstr "Short Preamble"
+
msgid "Show current backup file list"
msgstr "显示当前备份文件列表"
@@ -3020,6 +3065,9 @@ msgstr "启动优先级"
msgid "Starting configuration apply…"
msgstr "开始应用配置..."
+msgid "Starting wireless scan..."
+msgstr "正在启动无线扫描..."
+
msgid "Startup"
msgstr "启动项"
@@ -3174,7 +3222,7 @@ msgstr ""
"code>"
msgid "The backup archive does not appear to be a valid gzip file."
-msgstr ""
+msgstr "备份存档似乎不是有效的 gzip 文件。"
msgid "The configuration file could not be loaded due to the following error:"
msgstr "由于以下错误,配置文件无法被加载:"
@@ -3188,9 +3236,9 @@ msgid ""
"or revert all pending changes to keep the currently working configuration "
"state."
msgstr ""
-"在应用挂起的更改后 %d 秒内无法到达该设备,出于安全原因导致配置回滚。如果您认"
-"为配置更改仍然正确,请执行未选中的配置应用。或者您可以在尝试再次应用之前解除"
-"此警告并编辑更改,或者还原所有未完成的更改以保持当前正在工作的配置状态。"
+"在应用挂起的更改后 %d 秒内无法连接到此设备,出于安全原因导致配置回滚。如果您认"
+"为配置的更改是正确的,请执行强制应用。或者您可以在再次尝试应用之前解除"
+"此警告并编辑配置,或者恢复所有挂起的更改以保持当前正在工作的配置状态。"
msgid ""
"The device file of the memory or partition (<abbr title=\"for example\">e.g."
@@ -3214,7 +3262,7 @@ msgstr ""
"过程中切勿断电!"
msgid "The following changes have been reverted"
-msgstr "以下更改已放弃"
+msgstr "以下更改已恢复"
msgid "The following rules are currently active on this system."
msgstr "以下规则当前在系统中处于活动状态。"
@@ -3280,13 +3328,13 @@ msgid "There are no active leases."
msgstr "没有已分配的租约。"
msgid "There are no changes to apply."
-msgstr "没有待生效的更改。"
+msgstr "没有待应用的更改。"
msgid "There are no pending changes to revert!"
-msgstr "没有可放弃的更改!"
+msgstr "没有挂起的更改可恢复!"
msgid "There are no pending changes!"
-msgstr "没有待生效的更改!"
+msgstr "没有挂起的更改!"
msgid ""
"There is no device assigned yet, please attach a network device in the "
@@ -3314,7 +3362,7 @@ msgid ""
"include during sysupgrade. Modified files in /etc/config/ and certain other "
"configurations are automatically preserved."
msgstr ""
-"系统升级时要保存的配置文件和目录的清单。目录 /etc/config/ 内修改过的文件以及"
+"系统升级时要保存的配置文件和目录的清单。目录 /etc/config/ 内更改过的文件以及"
"部分其他配置会被自动保存。"
msgid ""
@@ -3448,25 +3496,25 @@ msgid "UUID"
msgstr "UUID"
msgid "Unable to determine device name"
-msgstr ""
+msgstr "无法确认设备名称"
msgid "Unable to determine external IP address"
-msgstr ""
+msgstr "无法确认外部 IP 地址"
msgid "Unable to determine upstream interface"
-msgstr ""
+msgstr "无法确认上游接口"
msgid "Unable to dispatch"
msgstr "无法调度"
msgid "Unable to obtain client ID"
-msgstr ""
+msgstr "无法获取客户端 ID"
msgid "Unable to resolve AFTR host name"
-msgstr ""
+msgstr "无法解析 AFTR 主机名"
msgid "Unable to resolve peer host name"
-msgstr ""
+msgstr "无法解析 Pear 主机名"
msgid "Unavailable Seconds (UAS)"
msgstr "不可用秒数(UAS)"
@@ -3478,7 +3526,7 @@ msgid "Unknown Error, password not changed!"
msgstr "未知错误,密码未更改!"
msgid "Unknown error (%s)"
-msgstr ""
+msgstr "未知错误(%s)"
msgid "Unmanaged"
msgstr "不配置协议"
@@ -3490,16 +3538,16 @@ msgid "Unsaved Changes"
msgstr "未保存的配置"
msgid "Unsupported MAP type"
-msgstr ""
+msgstr "不支持的 MAP 类型"
msgid "Unsupported modem"
-msgstr ""
+msgstr "不支持的调制解调器"
msgid "Unsupported protocol type."
msgstr "不支持的协议类型"
msgid "Up"
-msgstr ""
+msgstr "向上"
msgid "Update lists"
msgstr "刷新列表"
@@ -3639,7 +3687,7 @@ msgid "Version"
msgstr "版本"
msgid "Virtual dynamic interface"
-msgstr ""
+msgstr "虚拟动态接口"
msgid "WDS"
msgstr "WDS"
@@ -3764,7 +3812,7 @@ msgid "bridged"
msgstr "桥接的"
msgid "create"
-msgstr ""
+msgstr "创建"
msgid "create:"
msgstr "创建:"
@@ -3830,6 +3878,9 @@ msgstr "本地 <abbr title=\"Domain Name Syste\">DNS</abbr> 解析文件"
msgid "minutes"
msgstr "分钟"
+msgid "mixed WPA/WPA2"
+msgstr "mixed WPA/WPA2"
+
msgid "no"
msgstr "否"
@@ -3852,7 +3903,7 @@ msgid "open"
msgstr "开放式"
msgid "output"
-msgstr ""
+msgstr "输出"
msgid "overlay"
msgstr "覆盖"
@@ -3905,6 +3956,9 @@ msgstr "是"
msgid "« Back"
msgstr "« 后退"
+#~ msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+#~ msgstr "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+
#~ msgid "Activate this network"
#~ msgstr "激活此网络"
diff --git a/modules/luci-base/po/zh-tw/base.po b/modules/luci-base/po/zh-tw/base.po
index be33981cf..579d52656 100644
--- a/modules/luci-base/po/zh-tw/base.po
+++ b/modules/luci-base/po/zh-tw/base.po
@@ -153,9 +153,6 @@ msgstr ""
msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
msgstr "<abbr title=\"maximal\">最大</abbr>並發查詢數"
-msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-msgstr "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-
msgid ""
"<br/>Note: you need to manually restart the cron service if the crontab file "
"was empty before editing."
@@ -265,7 +262,13 @@ msgstr ""
msgid "Alert"
msgstr "警示"
-msgid "Alias interface"
+msgid "Alias Interface"
+msgstr ""
+
+msgid "Alias of \"%s\""
+msgstr ""
+
+msgid "All Servers"
msgstr ""
msgid ""
@@ -279,6 +282,9 @@ msgstr ""
msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
msgstr "允許 <abbr title=\"Secure Shell\">SSH</abbr> 密碼驗證"
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
msgid "Allow all except listed"
msgstr "僅允許列表外"
@@ -310,6 +316,11 @@ msgstr ""
msgid "Always announce default router"
msgstr ""
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
msgid "Annex"
msgstr ""
@@ -501,6 +512,9 @@ msgstr "指定了錯誤的位置!"
msgid "Band"
msgstr ""
+msgid "Beacon Interval"
+msgstr ""
+
msgid ""
"Below is the determined list of files to backup. It consists of changed "
"configuration files marked by opkg, essential base files and the user "
@@ -800,6 +814,9 @@ msgstr ""
msgid "DSL line mode"
msgstr ""
+msgid "DTIM Interval"
+msgstr ""
+
msgid "DUID"
msgstr "DHCP獨立式別碼DUID "
@@ -838,6 +855,9 @@ msgstr "刪除"
msgid "Delete this network"
msgstr "刪除這個網路"
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
msgid "Description"
msgstr "描述"
@@ -895,6 +915,9 @@ msgstr "關閉"
msgid "Disabled (default)"
msgstr ""
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
msgid "Discard upstream RFC1918 responses"
msgstr "丟棄上游RFC1918 虛擬IP網路的回應"
@@ -1246,6 +1269,9 @@ msgstr "更新中..."
msgid "Force"
msgstr "強制"
+msgid "Force 40MHz mode"
+msgstr ""
+
msgid "Force CCMP (AES)"
msgstr "強制CCMP (AES)加密"
@@ -1892,6 +1918,9 @@ msgstr ""
msgid "Lowest leased address as offset from the network address."
msgstr "最低的釋放位址從這網路位址的偏移計算"
+msgid "MAC"
+msgstr ""
+
msgid "MAC-Address"
msgstr "MAC-位址"
@@ -2132,6 +2161,9 @@ msgstr "尚未設定密碼!"
msgid "No rules in this chain"
msgstr "尚無規則在這個鏈接上"
+msgid "No scan results available yet..."
+msgstr ""
+
msgid "No zone assigned"
msgstr "尚未指定區碼"
@@ -2554,6 +2586,11 @@ msgstr ""
msgid "Quality"
msgstr "品質"
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
msgid "R0 Key Lifetime"
msgstr ""
@@ -2840,6 +2877,9 @@ msgstr "保存並啟用"
msgid "Scan"
msgstr "掃描"
+msgid "Scan request failed"
+msgstr ""
+
msgid "Scheduled Tasks"
msgstr "排程任務"
@@ -2896,6 +2936,9 @@ msgstr ""
msgid "Short GI"
msgstr ""
+msgid "Short Preamble"
+msgstr ""
+
msgid "Show current backup file list"
msgstr "顯示現今的備份檔清單"
@@ -2999,6 +3042,9 @@ msgstr "啟用優先權順序"
msgid "Starting configuration apply…"
msgstr ""
+msgid "Starting wireless scan..."
+msgstr ""
+
msgid "Startup"
msgstr "啟動"
@@ -3811,6 +3857,9 @@ msgstr "本地<abbr title=\"Domain Name System\">DNS</abbr> 檔案"
msgid "minutes"
msgstr ""
+msgid "mixed WPA/WPA2"
+msgstr ""
+
msgid "no"
msgstr "無"
@@ -3886,6 +3935,9 @@ msgstr "是的"
msgid "« Back"
msgstr "« 倒退"
+#~ msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+#~ msgstr "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+
#~ msgid "Activate this network"
#~ msgstr "啟用此網路"
diff --git a/modules/luci-mod-admin-full/luasrc/controller/admin/uci.lua b/modules/luci-mod-admin-full/luasrc/controller/admin/uci.lua
index 9533ff5e6..1d955dd98 100644
--- a/modules/luci-mod-admin-full/luasrc/controller/admin/uci.lua
+++ b/modules/luci-mod-admin-full/luasrc/controller/admin/uci.lua
@@ -9,7 +9,7 @@ function index()
or table.concat(luci.dispatcher.context.request, "/")
entry({"admin", "uci"}, nil, _("Configuration"))
- entry({"admin", "uci", "changes"}, call("action_changes"), _("Changes"), 40).query = {redir=redir}
+ entry({"admin", "uci", "changes"}, post_on({ trigger_apply = true }, "action_changes"), _("Changes"), 40).query = {redir=redir}
entry({"admin", "uci", "revert"}, post("action_revert"), _("Revert"), 30).query = {redir=redir}
local node
@@ -25,9 +25,9 @@ function index()
node.cors = true
node.sysauth_authenticator = authen
- node = entry({"admin", "uci", "confirm"}, post("action_confirm"), nil)
+ node = entry({"admin", "uci", "confirm"}, call("action_confirm"), nil)
node.cors = true
- node.sysauth_authenticator = authen
+ node.sysauth = false
end
@@ -36,8 +36,9 @@ function action_changes()
local changes = uci:changes()
luci.template.render("admin_uci/changes", {
- changes = next(changes) and changes,
- timeout = timeout
+ changes = next(changes) and changes,
+ timeout = timeout,
+ trigger_apply = luci.http.formvalue("trigger_apply") and true or false
})
end
@@ -52,7 +53,8 @@ function action_revert()
end
luci.template.render("admin_uci/revert", {
- changes = next(changes) and changes
+ changes = next(changes) and changes,
+ trigger_revert = true
})
end
@@ -84,8 +86,13 @@ end
function action_apply_rollback()
local uci = require "luci.model.uci"
- local _, errstr = uci:apply(true)
- ubus_state_to_http(errstr)
+ local token, errstr = uci:apply(true)
+ if token then
+ luci.http.prepare_content("application/json")
+ luci.http.write_json({ token = token })
+ else
+ ubus_state_to_http(errstr)
+ end
end
function action_apply_unchecked()
@@ -96,6 +103,7 @@ end
function action_confirm()
local uci = require "luci.model.uci"
- local _, errstr = uci:confirm()
+ local token = luci.http.formvalue("token")
+ local _, errstr = uci:confirm(token)
ubus_state_to_http(errstr)
end
diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi_overview.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi_overview.lua
index 32bf1965f..ad20f0918 100644
--- a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi_overview.lua
+++ b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi_overview.lua
@@ -70,7 +70,7 @@ local tpl_radio = tpl.Template(nil, [[
<!-- physical device -->
<div class="tr cbi-rowstyle-2">
<div class="td col-2 center middle">
- <span class="ifacebadge"><img src="<%=resource%>/icons/wifi_toggled.png" id="<%=dev:name()%>-iw-upstate" /> <%=dev:name()%></span>
+ <span class="ifacebadge"><img src="<%=resource%>/icons/wifi_disabled.png" id="<%=dev:name()%>-iw-upstate" /> <%=dev:name()%></span>
</div>
<div class="td col-7 left middle">
<big><strong><%=hw%></strong></big><br />
@@ -115,8 +115,8 @@ local tpl_radio = tpl.Template(nil, [[
</div>
<% end %>
<% else %>
- <div class="tr cbi-rowstyle-2">
- <div class="td left">
+ <div class="tr placeholder">
+ <div class="td">
<em><%:No network configured on this device%></em>
</div>
</div>
diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_network/diagnostics.htm b/modules/luci-mod-admin-full/luasrc/view/admin_network/diagnostics.htm
index d9217894f..b409c8b03 100644
--- a/modules/luci-mod-admin-full/luasrc/view/admin_network/diagnostics.htm
+++ b/modules/luci-mod-admin-full/luasrc/view/admin_network/diagnostics.htm
@@ -8,7 +8,7 @@
<%
local fs = require "nixio.fs"
local has_ping6 = fs.access("/bin/ping6") or fs.access("/usr/bin/ping6")
-local has_traceroute6 = fs.access("/usr/bin/traceroute6")
+local has_traceroute6 = fs.access("/bin/traceroute6") or fs.access("/usr/bin/traceroute6")
local dns_host = luci.config.diag and luci.config.diag.dns or "dev.openwrt.org"
local ping_host = luci.config.diag and luci.config.diag.ping or "dev.openwrt.org"
diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_network/iface_overview_status.htm b/modules/luci-mod-admin-full/luasrc/view/admin_network/iface_overview_status.htm
index 2c89d1043..7427154a0 100644
--- a/modules/luci-mod-admin-full/luasrc/view/admin_network/iface_overview_status.htm
+++ b/modules/luci-mod-admin-full/luasrc/view/admin_network/iface_overview_status.htm
@@ -94,7 +94,7 @@
if (ifc.is_dynamic)
desc = '<%:Virtual dynamic interface%>';
else if (ifc.is_alias)
- desc = '<%:Alias interface%>';
+ desc = '<%:Alias Interface%>';
if (ifc.desc)
desc = desc ? '%s (%s)'.format(desc, ifc.desc) : ifc.desc;
@@ -110,7 +110,7 @@
if (!ifc.is_dynamic && !ifc.is_alias)
{
if (ifc.macaddr)
- html += String.format('<strong><%:MAC-Address%>:</strong> %s<br />', ifc.macaddr);
+ html += String.format('<strong><%:MAC%>:</strong> %s<br />', ifc.macaddr);
html += String.format(
'<strong><%:RX%>:</strong> %.2mB (%d <%:Pkts.%>)<br />' +
diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_network/iface_status.htm b/modules/luci-mod-admin-full/luasrc/view/admin_network/iface_status.htm
index 9c5173dae..34be35dd2 100644
--- a/modules/luci-mod-admin-full/luasrc/view/admin_network/iface_status.htm
+++ b/modules/luci-mod-admin-full/luasrc/view/admin_network/iface_status.htm
@@ -17,7 +17,7 @@
html += String.format('<strong><%:Uptime%>:</strong> %t<br />', ifc.uptime);
if (ifc.macaddr)
- html += String.format('<strong><%:MAC-Address%>:</strong> %s<br />', ifc.macaddr);
+ html += String.format('<strong><%:MAC%>:</strong> %s<br />', ifc.macaddr);
html += String.format(
'<strong><%:RX%></strong>: %.2mB (%d <%:Pkts.%>)<br />' +
diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm b/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm
index db8535086..a56d904d9 100644
--- a/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm
+++ b/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm
@@ -221,63 +221,36 @@
<% end %>
<% if has_dsl then %>
- var dsl_i = document.getElementById('dsl_i');
- var dsl_s = document.getElementById('dsl_s');
-
- var s = String.format(
- '<strong><%:Status%>: </strong>%s<br />' +
- '<strong><%:Line State%>: </strong>%s [0x%x]<br />' +
- '<strong><%:Line Mode%>: </strong>%s<br />' +
- '<strong><%:Annex%>: </strong>%s<br />' +
- '<strong><%:Profile%>: </strong>%s<br />' +
- '<strong><%:Data Rate%>: </strong>%s/s / %s/s<br />' +
- '<strong><%:Max. Attainable Data Rate (ATTNDR)%>: </strong>%s/s / %s/s<br />' +
- '<strong><%:Latency%>: </strong>%s / %s<br />' +
- '<strong><%:Line Attenuation (LATN)%>: </strong>%s dB / %s dB<br />' +
- '<strong><%:Signal Attenuation (SATN)%>: </strong>%s dB / %s dB<br />' +
- '<strong><%:Noise Margin (SNR)%>: </strong>%s dB / %s dB<br />' +
- '<strong><%:Aggregate Transmit Power(ACTATP)%>: </strong>%s dB / %s dB<br />' +
- '<strong><%:Forward Error Correction Seconds (FECS)%>: </strong>%s / %s<br />' +
- '<strong><%:Errored seconds (ES)%>: </strong>%s / %s<br />' +
- '<strong><%:Severely Errored Seconds (SES)%>: </strong>%s / %s<br />' +
- '<strong><%:Loss of Signal Seconds (LOSS)%>: </strong>%s / %s<br />' +
- '<strong><%:Unavailable Seconds (UAS)%>: </strong>%s / %s<br />' +
- '<strong><%:Header Error Code Errors (HEC)%>: </strong>%s / %s<br />' +
- '<strong><%:Non Pre-emtive CRC errors (CRC_P)%>: </strong>%s / %s<br />' +
- '<strong><%:Pre-emtive CRC errors (CRCP_P)%>: </strong>%s / %s<br />' +
- '<strong><%:Line Uptime%>: </strong>%s<br />' +
- '<strong><%:ATU-C System Vendor ID%>: </strong>%s<br />' +
- '<strong><%:Power Management Mode%>: </strong>%s<br />',
- info.dsl.line_state, info.dsl.line_state_detail,
- info.dsl.line_state_num,
- info.dsl.line_mode_s,
- info.dsl.annex_s,
- info.dsl.profile_s,
- info.dsl.data_rate_down_s, info.dsl.data_rate_up_s,
- info.dsl.max_data_rate_down_s, info.dsl.max_data_rate_up_s,
- info.dsl.latency_num_down, info.dsl.latency_num_up,
- info.dsl.line_attenuation_down, info.dsl.line_attenuation_up,
- info.dsl.signal_attenuation_down, info.dsl.signal_attenuation_up,
- info.dsl.noise_margin_down, info.dsl.noise_margin_up,
- info.dsl.actatp_down, info.dsl.actatp_up,
- info.dsl.errors_fec_near, info.dsl.errors_fec_far,
- info.dsl.errors_es_near, info.dsl.errors_es_far,
- info.dsl.errors_ses_near, info.dsl.errors_ses_far,
- info.dsl.errors_loss_near, info.dsl.errors_loss_far,
- info.dsl.errors_uas_near, info.dsl.errors_uas_far,
- info.dsl.errors_hec_near, info.dsl.errors_hec_far,
- info.dsl.errors_crc_p_near, info.dsl.errors_crc_p_far,
- info.dsl.errors_crcp_p_near, info.dsl.errors_crcp_p_far,
- info.dsl.line_uptime_s,
- info.dsl.atuc_vendor_id,
- info.dsl.power_mode_s
- );
-
- dsl_s.innerHTML = String.format('<small>%s</small>', s);
- dsl_i.innerHTML = String.format(
- '<img src="<%=resource%>/icons/ethernet.png" />' +
- '<br /><small>DSL</small>'
- );
+ var ds = document.getElementById('dsl_status_table');
+
+ while (ds.lastElementChild)
+ ds.removeChild(ds.lastElementChild);
+
+ ds.appendChild(renderBox(
+ '<%:DSL Status%>',
+ (info.dsl.line_state === 'UP'), [ ],
+ '<%:Line State%>', '%s [0x%x]'.format(info.dsl.line_state, info.dsl.line_state_detail),
+ '<%:Line Mode%>', info.dsl.line_mode_s || '-',
+ '<%:Line Uptime%>', info.dsl.line_uptime_s || '-',
+ '<%:Annex%>', info.dsl.annex_s || '-',
+ '<%:Profile%>', info.dsl.profile_s || '-',
+ '<%:Data Rate%>', '%s/s / %s/s'.format(info.dsl.data_rate_down_s, info.dsl.data_rate_up_s),
+ '<%:Max. Attainable Data Rate (ATTNDR)%>', '%s/s / %s/s'.format(info.dsl.max_data_rate_down_s, info.dsl.max_data_rate_up_s),
+ '<%:Latency%>', '%s / %s'.format(info.dsl.latency_num_down, info.dsl.latency_num_up),
+ '<%:Line Attenuation (LATN)%>', '%d dB / %d dB'.format(info.dsl.line_attenuation_down, info.dsl.line_attenuation_up),
+ '<%:Signal Attenuation (SATN)%>', '%d dB / %d dB'.format(info.dsl.signal_attenuation_down, info.dsl.signal_attenuation_up),
+ '<%:Noise Margin (SNR)%>', '%d dB / %d dB'.format(info.dsl.noise_margin_down, info.dsl.noise_margin_up),
+ '<%:Aggregate Transmit Power(ACTATP)%>', '%d dB / %d dB'.format(info.dsl.actatp_down, info.dsl.actatp_up),
+ '<%:Forward Error Correction Seconds (FECS)%>', '%d / %d'.format(info.dsl.errors_fec_near, info.dsl.errors_fec_far),
+ '<%:Errored seconds (ES)%>', '%d / %d'.format(info.dsl.errors_es_near, info.dsl.errors_es_far),
+ '<%:Severely Errored Seconds (SES)%>', '%d / %d'.format(info.dsl.errors_ses_near, info.dsl.errors_ses_far),
+ '<%:Loss of Signal Seconds (LOSS)%>', '%d / %d'.format(info.dsl.errors_loss_near, info.dsl.errors_loss_far),
+ '<%:Unavailable Seconds (UAS)%>', '%d / %d'.format(info.dsl.errors_uas_near, info.dsl.errors_uas_far),
+ '<%:Header Error Code Errors (HEC)%>', '%d / %d'.format(info.dsl.errors_hec_near, info.dsl.errors_hec_far),
+ '<%:Non Pre-emtive CRC errors (CRC_P)%>', '%d / %d'.format(info.dsl.errors_crc_p_near, info.dsl.errors_crc_p_far),
+ '<%:Pre-emtive CRC errors (CRCP_P)%>', '%d / %d'.format(info.dsl.errors_crcp_p_near, info.dsl.errors_crcp_p_far),
+ '<%:ATU-C System Vendor ID%>', info.dsl.atuc_vendor_id,
+ '<%:Power Management Mode%>', info.dsl.power_mode_s));
<% end %>
<% if has_wifi then %>
@@ -452,18 +425,8 @@
<div class="cbi-section">
<h3><%:DSL%></h3>
- <div class="table" width="100%">
- <div class="tr">
- <div class="td left" width="33%" style="vertical-align:top"><%:DSL Status%></div>
- <div class="td">
- <div class="table">
- <div class="tr">
- <div class="td" id="dsl_i" style="width:16px; text-align:center; padding:3px"><img src="<%=resource%>/icons/ethernet_disabled.png" /><br /><small>?</small></div>
- <div class="td left" id="dsl_s" style="vertical-align:middle; padding: 3px"><em><%:Collecting data...%></em></div>
- </div>
- </div>
- </div>
- </div>
+ <div id="dsl_status_table" class="network-status-table">
+ <p><em><%:Collecting data...%></em></p>
</div>
</div>
<% end %>
diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_system/packages.htm b/modules/luci-mod-admin-full/luasrc/view/admin_system/packages.htm
index 1b959afc5..280eabb8e 100644
--- a/modules/luci-mod-admin-full/luasrc/view/admin_system/packages.htm
+++ b/modules/luci-mod-admin-full/luasrc/view/admin_system/packages.htm
@@ -102,7 +102,7 @@ end
<div class="cbi-value">
<label class="cbi-value-title"><%:Download and install package%>:</label>
<div class="cbi-value-field">
- <input type="text" name="url" size="30" value="" />
+ <span><input type="text" name="url" size="30" value="" /></span>
<input class="cbi-button cbi-button-save" type="submit" name="go" value="<%:OK%>" />
</div>
</div>
@@ -110,7 +110,7 @@ end
<div class="cbi-value cbi-value-last">
<label class="cbi-value-title"><%:Filter%>:</label>
<div class="cbi-value-field">
- <input type="text" name="query" size="20" value="<%=pcdata(query)%>" />
+ <span><input type="text" name="query" size="20" value="<%=pcdata(query)%>" /></span>
<input type="submit" class="cbi-button cbi-button-action" name="search" value="<%:Find package%>" />
</div>
</div>
diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_uci/changes.htm b/modules/luci-mod-admin-full/luasrc/view/admin_uci/changes.htm
index 628224475..43bd7c23f 100644
--- a/modules/luci-mod-admin-full/luasrc/view/admin_uci/changes.htm
+++ b/modules/luci-mod-admin-full/luasrc/view/admin_uci/changes.htm
@@ -8,11 +8,9 @@
<%-
local node, redir_url = luci.dispatcher.lookup(luci.http.formvalue("redir"))
+ export("redirect", redir_url or url("admin/uci/changes"))
- include("cbi/apply_widget")
include("admin_uci/changelog")
-
- cbi_apply_widget(redir_url or url("admin/uci/changes"))
-%>
<h2 name="content"><%:Configuration%> / <%:Changes%></h2>
@@ -32,7 +30,11 @@
</form>
<% end %>
- <input class="cbi-button cbi-button-save" type="button" id="apply_button" value="<%:Save & Apply%>" onclick="uci_apply(true); this.blur()" />
+ <form method="post" action="<%=url("admin/uci/changes")%>">
+ <input type="hidden" name="token" value="<%=token%>" />
+ <input type="hidden" name="redir" value="<%=pcdata(luci.http.formvalue("redir"))%>" />
+ <input class="cbi-button cbi-button-save" type="submit" name="trigger_apply" value="<%:Save & Apply%>" />
+ </form>
<form method="post" action="<%=url("admin/uci/revert")%>">
<input type="hidden" name="token" value="<%=token%>" />
<input type="hidden" name="redir" value="<%=pcdata(luci.http.formvalue("redir"))%>" />
diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_uci/revert.htm b/modules/luci-mod-admin-full/luasrc/view/admin_uci/revert.htm
index ff23d568d..d8fd3de01 100644
--- a/modules/luci-mod-admin-full/luasrc/view/admin_uci/revert.htm
+++ b/modules/luci-mod-admin-full/luasrc/view/admin_uci/revert.htm
@@ -8,11 +8,9 @@
<%-
local node, redir_url = luci.dispatcher.lookup(luci.http.formvalue("redir"))
+ export("redirect", redir_url or url("admin/uci/changes"))
- include("cbi/apply_widget")
include("admin_uci/changelog")
-
- cbi_apply_widget(redir_url or url("admin/uci/revert"))
-%>
<h2 name="content"><%:Configuration%> / <%:Revert%></h2>
@@ -24,13 +22,6 @@
<p><strong><%:There are no pending changes to revert!%></strong></p>
<% end %>
-<div class="alert-message" id="cbi_apply_status" style="display:none"></div>
-<script type="text/javascript">
- document.addEventListener("DOMContentLoaded", function() {
- uci_revert();
- });
-</script>
-
<% if redir_url then %>
<div class="cbi-page-actions">
<form class="inline" method="get" action="<%=luci.util.pcdata(redir_url)%>">
diff --git a/protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua b/protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua
index 917c88c92..b258dfc59 100644
--- a/protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua
+++ b/protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua
@@ -12,9 +12,8 @@ You may obtain a copy of the License at
local map, section, net = ...
-local device, apn, service, pincode, username, password, dialnumber
-local ipv6, maxwait, defaultroute, metric, peerdns, dns,
- keepalive_failure, keepalive_interval, demand
+local device, apn, service, pincode, username, password
+local ipv6, delay, defaultroute, metric, peerdns, dns
device = section:taboption("general", Value, "device", translate("Modem device"))
@@ -32,7 +31,7 @@ end
mode = section:taboption("general", Value, "mode", translate("Service Type"))
-mode.default = "auto"
+mode:value("", translate("Modem default"))
mode:value("preferlte", translate("Prefer LTE"))
mode:value("preferumts", translate("Prefer UMTS"))
mode:value("lte", "LTE")
@@ -41,6 +40,13 @@ mode:value("gsm", translate("GPRS only"))
mode:value("auto", translate("auto"))
+mode = section:taboption("general", Value, "pdptype", translate("IP Protocol"))
+mode.default = "IP"
+mode:value("IP", translate("IPv4"))
+mode:value("IPV4V6", translate("IPv4+IPv6"))
+mode:value("IPV6", translate("IPv6"))
+
+
apn = section:taboption("general", Value, "apn", translate("APN"))
@@ -53,8 +59,6 @@ username = section:taboption("general", Value, "username", translate("PAP/CHAP u
password = section:taboption("general", Value, "password", translate("PAP/CHAP password"))
password.password = true
-dialnumber = section:taboption("general", Value, "dialnumber", translate("Dial number"))
-dialnumber.placeholder = "*99***1#"
if luci.model.network:has_ipv6() then
@@ -67,12 +71,12 @@ if luci.model.network:has_ipv6() then
end
-maxwait = section:taboption("advanced", Value, "maxwait",
+delay = section:taboption("advanced", Value, "delay",
translate("Modem init timeout"),
translate("Maximum amount of seconds to wait for the modem to become ready"))
-maxwait.placeholder = "20"
-maxwait.datatype = "min(1)"
+delay.placeholder = "10"
+delay.datatype = "min(1)"
defaultroute = section:taboption("advanced", Flag, "defaultroute",
@@ -103,55 +107,3 @@ dns:depends("peerdns", "")
dns.datatype = "ipaddr"
dns.cast = "string"
-
-keepalive_failure = section:taboption("advanced", Value, "_keepalive_failure",
- translate("LCP echo failure threshold"),
- translate("Presume peer to be dead after given amount of LCP echo failures, use 0 to ignore failures"))
-
-function keepalive_failure.cfgvalue(self, section)
- local v = m:get(section, "keepalive")
- if v and #v > 0 then
- return tonumber(v:match("^(%d+)[ ,]+%d+") or v)
- end
-end
-
-function keepalive_failure.write() end
-function keepalive_failure.remove() end
-
-keepalive_failure.placeholder = "0"
-keepalive_failure.datatype = "uinteger"
-
-
-keepalive_interval = section:taboption("advanced", Value, "_keepalive_interval",
- translate("LCP echo interval"),
- translate("Send LCP echo requests at the given interval in seconds, only effective in conjunction with failure threshold"))
-
-function keepalive_interval.cfgvalue(self, section)
- local v = m:get(section, "keepalive")
- if v and #v > 0 then
- return tonumber(v:match("^%d+[ ,]+(%d+)"))
- end
-end
-
-function keepalive_interval.write(self, section, value)
- local f = tonumber(keepalive_failure:formvalue(section)) or 0
- local i = tonumber(value) or 5
- if i < 1 then i = 1 end
- if f > 0 then
- m:set(section, "keepalive", "%d %d" %{ f, i })
- else
- m:del(section, "keepalive")
- end
-end
-
-keepalive_interval.remove = keepalive_interval.write
-keepalive_interval.placeholder = "5"
-keepalive_interval.datatype = "min(1)"
-
-
-demand = section:taboption("advanced", Value, "demand",
- translate("Inactivity timeout"),
- translate("Close inactive connection after the given amount of seconds, use 0 to persist connection"))
-
-demand.placeholder = "0"
-demand.datatype = "uinteger"
diff --git a/protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua b/protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua
index a2dabf9af..3b811d44d 100644
--- a/protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua
+++ b/protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua
@@ -32,6 +32,11 @@ function proto.is_virtual(self)
return true
end
+function proto.is_up(self)
+ local iface = self:get_interface()
+ return iface and iface:is_up() or false
+end
+
function proto.get_interface(self)
return device(self.sid, self)
end
@@ -80,6 +85,10 @@ function proto.uptime(self)
return upt
end
+function proto.errors(self)
+ return nil
+end
+
function device.__init__(self, ifname, network)
self.ifname = ifname
diff --git a/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/cascade.css b/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/cascade.css
index d0348a197..0c158961d 100644
--- a/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/cascade.css
+++ b/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/cascade.css
@@ -1451,6 +1451,32 @@ footer {
opacity: .6;
}
+input[type="text"] + .cbi-button,
+input[type="password"] + .cbi-button,
+select + .cbi-button {
+ border-radius: 0 3px 3px 0;
+ border-color: #ccc;
+ margin: 0 0 1px -2px;
+ padding: 0 6px;
+ vertical-align: top;
+ height: 28px;
+ font-size: 14px;
+ font-weight: bold;
+ line-height: 28px;
+}
+
+select + .cbi-button {
+ border-left-color: transparent;
+}
+
+.cbi-title-ref {
+ color: #37c;
+}
+
+.cbi-title-ref::after {
+ content: "➙";
+}
+
.cbi-tooltip-container {
cursor: help;
}
@@ -1868,6 +1894,11 @@ table table td,
margin: -.125em;
}
+#dsl_status_table .ifacebox-body > span > strong {
+ display: inline-block;
+ min-width: 35%;
+}
+
.ifacebadge.large,
.network-status-table .ifacebox-body .ifacebadge {
display: inline-flex;
diff --git a/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/cascade.css b/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/cascade.css
index dc36ab3f9..197166b73 100644
--- a/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/cascade.css
+++ b/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/cascade.css
@@ -429,11 +429,11 @@ p {
}
.cbi-title-ref {
- color: inherit;
- text-decoration: none;
- padding-right: 18px;
- background: url('../resources/cbi/link.gif') no-repeat scroll right center;
- background-color: inherit;
+ color: #37c;
+}
+
+.cbi-title-ref::after {
+ content: "➙";
}
ul.cbi-apply {
@@ -850,7 +850,9 @@ div.cbi-optionals {
margin-left: 50%;
}
-.cbi-page-actions > .cbi-button-apply + .cbi-button-save {
+.cbi-page-actions > .cbi-button-apply + .cbi-button-save,
+.cbi-page-actions > .cbi-button-save + form[method="post"],
+.cbi-page-actions > form[method="post"] + form[method="post"] {
margin-left: 3px;
}
@@ -874,7 +876,18 @@ div.cbi-optionals {
white-space: nowrap;
}
-.tr.placeholder .td[data-title]::before {
+.td[data-description]::after {
+ content: attr(data-description);
+ font-size: 90%;
+ text-align: left;
+ display: none;
+ background: url(/luci-static/resources/cbi/help.gif) left top no-repeat;
+ padding: .125em 0 .125em 18px;
+ margin: .125em 0;
+}
+
+.tr.placeholder .td[data-title]::before,
+.tr.placeholder .td[data-description]::after {
display: none;
}
@@ -1133,6 +1146,19 @@ ul.cbi-tabmenu li.cbi-tab {
opacity: .6;
}
+input[type="text"] + .cbi-button,
+input[type="password"] + .cbi-button,
+select + .cbi-button {
+ border-radius: 0 3px 3px 0;
+ border: 1px outset #000;
+ margin: 0 0 1px -2px;
+ padding: 0 6px;
+ vertical-align: top;
+ display: inline-block;
+ height: 14pt;
+ font-size: 10pt;
+ line-height: 12pt;
+}
.cbi-tooltip-container {
cursor: help;
@@ -1183,13 +1209,13 @@ ul.cbi-tabmenu li.cbi-tab {
}
-.left, .left::before { text-align: left !important; }
-.right, .right::before { text-align: right !important; }
-.center, .center::before { text-align: center !important; }
+.left, .left::before, .left::after { text-align: left !important; }
+.right, .right::before, .right::after { text-align: right !important; }
+.center, .center::before, .center::after { text-align: center !important; }
-.top, .top::before { vertical-align: top !important; }
-.middle, .middle::before { vertical-align: middle !important; }
-.bottom, .bottom::before { vertical-align: bottom !important; }
+.top, .top::before, .top::after { vertical-align: top !important; }
+.middle, .middle::before, .middle::after { vertical-align: middle !important; }
+.bottom, .bottom::before, .bottom::after { vertical-align: bottom !important; }
.td.top { align-self: flex-start; vertical-align: top; }
.td.middle { align-self: center; vertical-align: middle; }
@@ -1321,6 +1347,11 @@ ul.cbi-tabmenu li.cbi-tab {
margin: .5em 0 0 0;
}
+#dsl_status_table .ifacebox-body > span > strong {
+ display: inline-block;
+ min-width: 35%;
+}
+
.zonebadge {
padding: 2px;
@@ -1602,18 +1633,28 @@ ul.cbi-tabmenu li.cbi-tab {
background: #eef;
}
- .td[data-title]::before {
+ .td[data-title]::before,
+ .td[data-description]::after {
display: block;
}
.td[data-title] ~ .td.cbi-section-actions {
- align-self: flex-end;
+ align-self: flex-start;
+ }
+
+ .td[data-title] ~ .td.cbi-section-actions::before {
+ display: block;
+ content: "\a0";
}
.hide-sm,
.hide-xs {
display: none;
}
+
+ #dsl_status_table .ifacebox-body > span > strong {
+ min-width: 50%;
+ }
}
@media screen and (max-width: 480px) {
@@ -1725,4 +1766,10 @@ ul.cbi-tabmenu li.cbi-tab {
#cbi-network-switch_vlan .td.cbi-section-actions {
flex-basis: 100%;
}
+
+ #dsl_status_table .ifacebox-body > span > strong {
+ display: block;
+ width: 100%;
+ margin-top: .5em;
+ }
}