diff options
Diffstat (limited to 'modules')
97 files changed, 7098 insertions, 4771 deletions
diff --git a/modules/luci-base/Makefile b/modules/luci-base/Makefile index 6393195e59..7f7d7e772f 100644 --- a/modules/luci-base/Makefile +++ b/modules/luci-base/Makefile @@ -12,7 +12,7 @@ LUCI_TYPE:=mod LUCI_BASENAME:=base LUCI_TITLE:=LuCI core libraries -LUCI_DEPENDS:=+lua +libuci-lua +luci-lib-nixio +luci-lib-ip +rpcd +libubus-lua +luci-lib-jsonc +LUCI_DEPENDS:=+lua +luci-lib-nixio +luci-lib-ip +rpcd +libubus-lua +luci-lib-jsonc +liblucihttp-lua PKG_SOURCE:=LuaSrcDiet-0.12.1.tar.bz2 PKG_SOURCE_URL:=https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/luasrcdiet diff --git a/modules/luci-base/htdocs/luci-static/resources/cbi.js b/modules/luci-base/htdocs/luci-static/resources/cbi.js index b334703bdf..6c35372cdd 100644 --- a/modules/luci-base/htdocs/luci-static/resources/cbi.js +++ b/modules/luci-base/htdocs/luci-static/resources/cbi.js @@ -23,6 +23,62 @@ function Dec(x) { return (/^-?\d+(?:\.\d+)?$/.test(x) ? +x : NaN); } +function IPv4(x) { + if (!x.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/)) + return null; + + if (RegExp.$1 > 255 || RegExp.$2 > 255 || RegExp.$3 > 255 || RegExp.$4 > 255) + return null; + + return [ +RegExp.$1, +RegExp.$2, +RegExp.$3, +RegExp.$4 ]; +} + +function IPv6(x) { + if (x.match(/^([a-fA-F0-9:]+):(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/)) { + var v6 = RegExp.$1, v4 = IPv4(RegExp.$2); + + if (!v4) + return null; + + x = v6 + ':' + (v4[0] * 256 + v4[1]).toString(16) + + ':' + (v4[2] * 256 + v4[3]).toString(16); + } + + if (!x.match(/^[a-fA-F0-9:]+$/)) + return null; + + var prefix_suffix = x.split(/::/); + + if (prefix_suffix.length > 2) + return null; + + var prefix = (prefix_suffix[0] || '0').split(/:/); + var suffix = prefix_suffix.length > 1 ? (prefix_suffix[1] || '0').split(/:/) : []; + + if (suffix.length ? (prefix.length + suffix.length > 7) : (prefix.length > 8)) + return null; + + var i, word; + var words = []; + + for (i = 0, word = parseInt(prefix[0], 16); i < prefix.length; word = parseInt(prefix[++i], 16)) + if (prefix[i].length <= 4 && !isNaN(word) && word <= 0xFFFF) + words.push(word); + else + return null; + + for (i = 0; i < (8 - prefix.length - suffix.length); i++) + words.push(0); + + for (i = 0, word = parseInt(suffix[0], 16); i < suffix.length; word = parseInt(suffix[++i], 16)) + if (suffix[i].length <= 4 && !isNaN(word) && word <= 0xFFFF) + words.push(word); + else + return null; + + return words; +} + var cbi_validators = { 'integer': function() @@ -53,69 +109,14 @@ var cbi_validators = { 'ip4addr': function() { - if (this.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})(\/(\S+))?$/)) - { - return (RegExp.$1 >= 0) && (RegExp.$1 <= 255) && - (RegExp.$2 >= 0) && (RegExp.$2 <= 255) && - (RegExp.$3 >= 0) && (RegExp.$3 <= 255) && - (RegExp.$4 >= 0) && (RegExp.$4 <= 255) && - ((RegExp.$6.indexOf('.') < 0) - ? ((RegExp.$6 >= 0) && (RegExp.$6 <= 32)) - : (cbi_validators.ip4addr.apply(RegExp.$6))) - ; - } - - return false; + var m = this.match(/^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(?:\/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})|\/(\d{1,2}))?$/); + return !!(m && IPv4(m[1]) && (m[2] ? IPv4(m[2]) : (m[3] ? cbi_validators.ip4prefix.apply(m[3]) : true))); }, 'ip6addr': function() { - if( this.match(/^([a-fA-F0-9:.]+)(\/(\d+))?$/) ) - { - if( !RegExp.$2 || ((RegExp.$3 >= 0) && (RegExp.$3 <= 128)) ) - { - var addr = RegExp.$1; - - if( addr == '::' ) - { - return true; - } - - if( addr.indexOf('.') > 0 ) - { - var off = addr.lastIndexOf(':'); - - if( !(off && cbi_validators.ip4addr.apply(addr.substr(off+1))) ) - return false; - - addr = addr.substr(0, off) + ':0:0'; - } - - if( addr.indexOf('::') >= 0 ) - { - var colons = 0; - var fill = '0'; - - for( var i = 1; i < (addr.length-1); i++ ) - if( addr.charAt(i) == ':' ) - colons++; - - if( colons > 7 ) - return false; - - for( var i = 0; i < (7 - colons); i++ ) - fill += ':0'; - - if (addr.match(/^(.*?)::(.*?)$/)) - addr = (RegExp.$1 ? RegExp.$1 + ':' : '') + fill + - (RegExp.$2 ? ':' + RegExp.$2 : ''); - } - - return (addr.match(/^(?:[a-fA-F0-9]{1,4}:){7}[a-fA-F0-9]{1,4}$/) != null); - } - } - - return false; + var m = this.match(/^([0-9a-fA-F:.]+)(?:\/(\d{1,3}))?$/); + return !!(m && IPv6(m[1]) && (m[2] ? cbi_validators.ip6prefix.apply(m[2]) : true)); }, 'ip4prefix': function() @@ -136,50 +137,35 @@ var cbi_validators = { 'cidr4': function() { - if (this.match(/^(\S+)\/(\S+)$/)) - { - ip = RegExp.$1; - mask = RegExp.$2; - return cbi_validators.ip4addr.apply(ip) && - cbi_validators.ip4prefix.apply(mask); - } - return false; + var m = this.match(/^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\/(\d{1,2})$/); + return !!(m && IPv4(m[1]) && cbi_validators.ip4prefix.apply(m[2])); }, 'cidr6': function() { - if (this.match(/^(\S+)\/(\S+)$/)) - { - ip = RegExp.$1; - mask = RegExp.$2; - return cbi_validators.ip6addr.apply(ip) && - cbi_validators.ip6prefix.apply(mask); - } - return false; + var m = this.match(/^([0-9a-fA-F:.]+)\/(\d{1,3})$/); + return !!(m && IPv6(m[1]) && cbi_validators.ip6prefix.apply(m[2])); }, 'ipnet4': function() { - if (this.match(/^(\S+)\/(\S+)$/)) - { - ip = RegExp.$1; - net = RegExp.$2; - return cbi_validators.ip4addr.apply(ip) && - cbi_validators.ip4addr.apply(net); - } - return false; + var m = this.match(/^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/); + return !!(m && IPv4(m[1]) && IPv4(m[2])); }, 'ipnet6': function() { - if (this.match(/^(\S+)\/(\S+)$/)) - { - ip = RegExp.$1; - net = RegExp.$2; - return cbi_validators.ip6addr.apply(ip) && - cbi_validators.ip6addr.apply(net); - } - return false; + var m = this.match(/^([0-9a-fA-F:.]+)\/([0-9a-fA-F:.]+)$/); + return !!(m && IPv6(m[1]) && IPv6(m[2])); + }, + + 'ip6hostid': function() + { + if (this == "eui64" || this == "random") + return true; + + var v6 = IPv6(this); + return !(!v6 || v6[0] || v6[1] || v6[2] || v6[3]); }, 'ipmask': function() @@ -232,12 +218,13 @@ var cbi_validators = { ((ipv4only == 1) && cbi_validators.ip4addr.apply(this)); }, - 'hostname': function() + 'hostname': function(strict) { if (this.length <= 253) - return (this.match(/^[a-zA-Z0-9]+$/) != null || + return (this.match(/^[a-zA-Z0-9_]+$/) != null || (this.match(/^[a-zA-Z0-9_][a-zA-Z0-9_\-.]*[a-zA-Z0-9]$/) && - this.match(/[^0-9.]/))); + this.match(/[^0-9.]/))) && + (!strict || !this.match(/^_/)); return false; }, diff --git a/modules/luci-base/htdocs/luci-static/resources/xhr.js b/modules/luci-base/htdocs/luci-static/resources/xhr.js index 3385f8f230..de4476cdd3 100644 --- a/modules/luci-base/htdocs/luci-static/resources/xhr.js +++ b/modules/luci-base/htdocs/luci-static/resources/xhr.js @@ -39,7 +39,7 @@ XHR = function() this._xmlHttp.abort(); } - this.get = function(url,data,callback) + this.get = function(url,data,callback,timeout) { this.reinit(); @@ -56,6 +56,9 @@ XHR = function() xhr.open('GET', url, true); + if (!isNaN(timeout)) + xhr.timeout = timeout; + xhr.onreadystatechange = function() { if (xhr.readyState == 4) { @@ -76,7 +79,7 @@ XHR = function() xhr.send(null); } - this.post = function(url,data,callback) + this.post = function(url,data,callback,timeout) { this.reinit(); @@ -90,6 +93,10 @@ XHR = function() } xhr.open('POST', url, true); + + if (!isNaN(timeout)) + xhr.timeout = timeout; + xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); xhr.send(code); } @@ -168,7 +175,7 @@ XHR.get = function(url, data, callback) (new XHR()).get(url, data, callback); } -XHR.poll = function(interval, url, data, callback) +XHR.poll = function(interval, url, data, callback, post) { if (isNaN(interval) || interval < 1) interval = 5; @@ -181,22 +188,38 @@ XHR.poll = function(interval, url, data, callback) for (var i = 0, e = XHR._q[0]; i < XHR._q.length; e = XHR._q[++i]) { if (!(XHR._t % e.interval) && !e.xhr.busy()) - e.xhr.get(e.url, e.data, e.callback); + e.xhr[post ? 'post' : 'get'](e.url, e.data, e.callback, e.interval * 1000 - 5); } XHR._t++; }; } - XHR._q.push({ + var e = { interval: interval, callback: callback, url: url, data: data, xhr: new XHR() - }); + }; + XHR._q.push(e); XHR.run(); + + return e; +} + +XHR.stop = function(e) +{ + for (var i = 0; XHR._q && XHR._q[i]; i++) { + if (XHR._q[i] === e) { + e.xhr.cancel(); + XHR._q.splice(i, 1); + return true; + } + } + + return false; } XHR.halt = function() diff --git a/modules/luci-base/luasrc/cbi.lua b/modules/luci-base/luasrc/cbi.lua index 2184395039..4728642118 100644 --- a/modules/luci-base/luasrc/cbi.lua +++ b/modules/luci-base/luasrc/cbi.lua @@ -388,21 +388,21 @@ function Map.parse(self, readinput, ...) if self.save then self:_run_hooks("on_save", "on_before_save") + local i, config for i, config in ipairs(self.parsechain) do self.uci:save(config) end self:_run_hooks("on_after_save") if (not self.proceed and self.flow.autoapply) or luci.http.formvalue("cbi.apply") then self:_run_hooks("on_before_commit") - for i, config in ipairs(self.parsechain) do - self.uci:commit(config) - - -- Refresh data because commit changes section names - self.uci:load(config) + if self.apply_on_parse == false then + for i, config in ipairs(self.parsechain) do + self.uci:commit(config) + end end self:_run_hooks("on_commit", "on_after_commit", "on_before_apply") - if self.apply_on_parse then - self.uci:apply(self.parsechain) + if self.apply_on_parse == true or self.apply_on_parse == false then + self.uci:apply(self.apply_on_parse) self:_run_hooks("on_apply", "on_after_apply") else -- This is evaluated by the dispatcher and delegated to the diff --git a/modules/luci-base/luasrc/cbi/datatypes.lua b/modules/luci-base/luasrc/cbi/datatypes.lua index df23aaf135..99113e0b7a 100644 --- a/modules/luci-base/luasrc/cbi/datatypes.lua +++ b/modules/luci-base/luasrc/cbi/datatypes.lua @@ -169,8 +169,13 @@ function ipmask6(val) end function ip6hostid(val) - if val and val:match("^[a-fA-F0-9:]+$") and (#val > 2) then - return (ip6addr("2001:db8:0:0" .. val) or ip6addr("2001:db8:0:0:" .. val)) + if val == "eui64" or val == "random" then + return true + else + local addr = ip.IPv6(val) + if addr and addr:prefix() == 128 and addr:lower("::1:0:0:0:0") then + return true + end end return false @@ -191,32 +196,16 @@ function portrange(val) end function macaddr(val) - if val and val:match( - "^[a-fA-F0-9]+:[a-fA-F0-9]+:[a-fA-F0-9]+:" .. - "[a-fA-F0-9]+:[a-fA-F0-9]+:[a-fA-F0-9]+$" - ) then - local parts = util.split( val, ":" ) - - for i = 1,6 do - parts[i] = tonumber( parts[i], 16 ) - if parts[i] < 0 or parts[i] > 255 then - return false - end - end - - return true - end - - return false + return ip.checkmac(val) and true or false end -function hostname(val) +function hostname(val, strict) if val and (#val < 254) and ( val:match("^[a-zA-Z_]+$") or (val:match("^[a-zA-Z0-9_][a-zA-Z0-9_%-%.]*[a-zA-Z0-9]$") and val:match("[^0-9%.]")) ) then - return true + return (not strict or not val:match("^_")) end return false end diff --git a/modules/luci-base/luasrc/controller/admin/servicectl.lua b/modules/luci-base/luasrc/controller/admin/servicectl.lua deleted file mode 100644 index 1d73eb4ecc..0000000000 --- a/modules/luci-base/luasrc/controller/admin/servicectl.lua +++ /dev/null @@ -1,49 +0,0 @@ --- Copyright 2010 Jo-Philipp Wich <jow@openwrt.org> --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.admin.servicectl", package.seeall) - -function index() - entry({"servicectl"}, alias("servicectl", "status")).sysauth = "root" - entry({"servicectl", "status"}, call("action_status")).leaf = true - entry({"servicectl", "restart"}, post("action_restart")).leaf = true -end - -function action_status() - local data = nixio.fs.readfile("/var/run/luci-reload-status") - if data then - luci.http.write("/etc/config/") - luci.http.write(data) - else - luci.http.write("finish") - end -end - -function action_restart(args) - local uci = require "luci.model.uci".cursor() - if args then - local service - local services = { } - - for service in args:gmatch("[%w_-]+") do - services[#services+1] = service - end - - local command = uci:apply(services, true) - if nixio.fork() == 0 then - local i = nixio.open("/dev/null", "r") - local o = nixio.open("/dev/null", "w") - - nixio.dup(i, nixio.stdin) - nixio.dup(o, nixio.stdout) - - i:close() - o:close() - - nixio.exec("/bin/sh", unpack(command)) - else - luci.http.write("OK") - os.exit(0) - end - end -end diff --git a/modules/luci-base/luasrc/dispatcher.lua b/modules/luci-base/luasrc/dispatcher.lua index e4f77f18d8..2c58b0ab3d 100644 --- a/modules/luci-base/luasrc/dispatcher.lua +++ b/modules/luci-base/luasrc/dispatcher.lua @@ -75,11 +75,16 @@ function error404(message) http.status(404, "Not Found") message = message or "Not Found" - require("luci.template") - if not util.copcall(luci.template.render, "error404") then + local function render() + local template = require "luci.template" + template.render("error404") + end + + if not util.copcall(render) then http.prepare_content("text/plain") http.write(message) end + return false end @@ -113,7 +118,8 @@ function httpdispatch(request, prefix) end end - for node in pathinfo:gmatch("[^/]+") do + local node + for node in pathinfo:gmatch("[^/%z]+") do r[#r+1] = node end @@ -136,8 +142,7 @@ local function require_post_security(target) if (type(required_val) == "string" and request_val ~= required_val) or - (required_val == true and - (request_val == nil or request_val == "")) + (required_val == true and request_val == nil) then return false end @@ -177,6 +182,7 @@ local function session_retrieve(sid, allowed_users) (not allowed_users or util.contains(allowed_users, sdat.values.username)) then + uci:set_session_id(sid) return sid, sdat.values end @@ -191,6 +197,9 @@ local function session_setup(user, pass, allowed_users) timeout = tonumber(luci.config.sauth.sessiontime) }) + local rp = context.requestpath + and table.concat(context.requestpath, "/") or "" + if type(login) == "table" and type(login.ubus_rpc_session) == "string" then @@ -199,8 +208,14 @@ local function session_setup(user, pass, allowed_users) values = { token = sys.uniqueid(16) } }) + io.stderr:write("luci: accepted login on /%s for %s from %s\n" + %{ rp, user, http.getenv("REMOTE_ADDR") or "?" }) + return session_retrieve(login.ubus_rpc_session) end + + io.stderr:write("luci: failed login on /%s for %s from %s\n" + %{ rp, user, http.getenv("REMOTE_ADDR") or "?" }) end return nil, nil @@ -337,15 +352,23 @@ function dispatch(request) ifattr = function(...) return _ifattr(...) end; attr = function(...) return _ifattr(true, ...) end; url = build_url; - }, {__index=function(table, key) + }, {__index=function(tbl, key) if key == "controller" then return build_url() elseif key == "REQUEST_URI" then return build_url(unpack(ctx.requestpath)) + elseif key == "FULL_REQUEST_URI" then + local url = { http.getenv("SCRIPT_NAME") or "" , http.getenv("PATH_INFO") } + local query = http.getenv("QUERY_STRING") + if query and #query > 0 then + url[#url+1] = "?" + url[#url+1] = query + end + return table.concat(url, "") elseif key == "token" then return ctx.authtoken else - return rawget(table, key) or _G[key] + return rawget(tbl, key) or _G[key] end end}) end @@ -358,7 +381,7 @@ function dispatch(request) "https://github.com/openwrt/luci/issues" ) - if track.sysauth then + if track.sysauth and not ctx.authsession then local authen = track.sysauth_authenticator local _, sid, sdat, default_user, allowed_users @@ -406,7 +429,9 @@ function dispatch(request) return end - http.header("Set-Cookie", 'sysauth=%s; path=%s' %{ sid, build_url() }) + http.header("Set-Cookie", 'sysauth=%s; path=%s; HttpOnly%s' %{ + sid, build_url(), http.getenv("HTTPS") == "on" and "; secure" or "" + }) http.redirect(build_url(unpack(ctx.requestpath))) end @@ -420,6 +445,13 @@ function dispatch(request) ctx.authuser = sdat.username end + if track.cors and http.getenv("REQUEST_METHOD") == "OPTIONS" then + luci.http.status(200, "OK") + luci.http.header("Access-Control-Allow-Origin", http.getenv("HTTP_ORIGIN") or "*") + luci.http.header("Access-Control-Allow-Methods", "GET, POST, OPTIONS") + return + end + if c and require_post_security(c.target) then if not test_post_security(c) then return @@ -641,6 +673,23 @@ function node(...) return c end +function lookup(...) + local i, path = nil, {} + for i = 1, select('#', ...) do + local name, arg = nil, tostring(select(i, ...)) + for name in arg:gmatch("[^/]+") do + path[#path+1] = name + end + end + + for i = #path, 1, -1 do + local node = context.treecache[table.concat(path, ".", 1, i)] + if node and (i == #path or node.leaf) then + return node, build_url(unpack(path)) + end + end +end + function _create_node(path) if #path == 0 then return context.tree @@ -782,7 +831,16 @@ local function _cbi(self, ...) local state = nil + local i, res for i, res in ipairs(maps) do + if util.instanceof(res, cbi.SimpleForm) then + io.stderr:write("Model %s returns SimpleForm but is dispatched via cbi(),\n" + % self.model) + + io.stderr:write("please change %s to use the form() action instead.\n" + % table.concat(context.request, "/")) + end + res.flow = config local cstate = res:parse() if cstate and (not state or cstate < state) then @@ -827,6 +885,8 @@ 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 @@ -854,6 +914,7 @@ local function _cbi(self, ...) res:render({ firstmap = (i == 1), applymap = applymap, + confirmmap = (is_rollback and time_remaining or nil), redirect = redirect, messages = messages, pageaction = pageaction, @@ -875,7 +936,7 @@ end function cbi(model, config) return { type = "cbi", - post = { ["cbi.submit"] = "1" }, + post = { ["cbi.submit"] = true }, config = config, model = model, target = _cbi @@ -903,6 +964,7 @@ local function _form(self, ...) local maps = luci.cbi.load(self.model, ...) local state = nil + local i, res for i, res in ipairs(maps) do local cstate = res:parse() if cstate and (not state or cstate < state) then @@ -921,7 +983,7 @@ end function form(model) return { type = "cbi", - post = { ["cbi.submit"] = "1" }, + post = { ["cbi.submit"] = true }, model = model, target = _form } diff --git a/modules/luci-base/luasrc/dispatcher.luadoc b/modules/luci-base/luasrc/dispatcher.luadoc index 743463c74f..ddf534b3e1 100644 --- a/modules/luci-base/luasrc/dispatcher.luadoc +++ b/modules/luci-base/luasrc/dispatcher.luadoc @@ -116,8 +116,8 @@ Create a new dispatching node and define common parameters. ---[[ Fetch or create a dispatching node without setting the target module or - enabling the node. + @class function @name get @param ... Virtual path @@ -134,6 +134,15 @@ Fetch or create a new dispatching node. ]] ---[[ +Lookup node in dispatching tree. + +@class function +@name lookup +@param ... Virtual path +@return Node object, canonical url or nil if the path was not found. +]] + +---[[ Alias the first (lowest order) page automatically diff --git a/modules/luci-base/luasrc/http.lua b/modules/luci-base/luasrc/http.lua index 9cc9857867..f4ede4b8a5 100644 --- a/modules/luci-base/luasrc/http.lua +++ b/modules/luci-base/luasrc/http.lua @@ -1,18 +1,21 @@ -- Copyright 2008 Steven Barth <steven@midlink.org> +-- Copyright 2010-2018 Jo-Philipp Wich <jo@mein.io> -- Licensed to the public under the Apache License 2.0. -local ltn12 = require "luci.ltn12" -local protocol = require "luci.http.protocol" local util = require "luci.util" -local string = require "string" local coroutine = require "coroutine" local table = require "table" +local lhttp = require "lucihttp" +local nixio = require "nixio" +local ltn12 = require "luci.ltn12" -local ipairs, pairs, next, type, tostring, error = - ipairs, pairs, next, type, tostring, error +local table, ipairs, pairs, type, tostring, tonumber, error = + table, ipairs, pairs, type, tostring, tonumber, error module "luci.http" +HTTP_MAX_CONTENT = 1024*100 -- 100 kB maximum content size + context = util.threadlocal() Request = util.class() @@ -28,7 +31,7 @@ function Request.__init__(self, env, sourcein, sinkerr) self.message = { env = env, headers = {}, - params = protocol.urldecode_params(env.QUERY_STRING or ""), + params = urldecode_params(env.QUERY_STRING or ""), } self.parsed_input = false @@ -73,10 +76,7 @@ function Request.content(self) end function Request.getcookie(self, name) - local c = string.gsub(";" .. (self:getenv("HTTP_COOKIE") or "") .. ";", "%s*;%s*", ";") - local p = ";" .. name .. "=(.-);" - local i, j, value = c:find(p) - return value and urldecode(value) + return lhttp.header_attribute("cookie; " .. (self:getenv("HTTP_COOKIE") or ""), name) end function Request.getenv(self, name) @@ -90,40 +90,34 @@ end function Request.setfilehandler(self, callback) self.filehandler = callback - -- If input has already been parsed then any files are either in temporary files - -- or are in self.message.params[key] - if self.parsed_input then - for param, value in pairs(self.message.params) do - repeat - -- We're only interested in files - if (not value["file"]) then break end - -- If we were able to write to temporary file - if (value["fd"]) then - fd = value["fd"] - local eof = false - repeat - filedata = fd:read(1024) - if (filedata:len() < 1024) then - eof = true - end - callback({ name=value["name"], file=value["file"] }, filedata, eof) - until (eof) - fd:close() - value["fd"] = nil - -- We had to read into memory - else - -- There should only be one numbered value in table - the data - for k, v in ipairs(value) do - callback({ name=value["name"], file=value["file"] }, v, true) + if not self.parsed_input then + return + end + + -- If input has already been parsed then uploads are stored as unlinked + -- temporary files pointed to by open file handles in the parameter + -- value table. Loop all params, and invoke the file callback for any + -- param with an open file handle. + local name, value + for name, value in pairs(self.message.params) do + if type(value) == "table" then + while value.fd do + local data = value.fd:read(1024) + local eof = (not data or data == "") + + callback(value, data, eof) + + if eof then + value.fd:close() + value.fd = nil end end - until true end end end function Request._parse_input(self) - protocol.parse_message_body( + parse_message_body( self.input, self.message, self.filehandler @@ -254,23 +248,307 @@ function redirect(url) end function build_querystring(q) - local s = { "?" } + local s, n, k, v = {}, 1, nil, nil for k, v in pairs(q) do - if #s > 1 then s[#s+1] = "&" end - - s[#s+1] = urldecode(k) - s[#s+1] = "=" - s[#s+1] = urldecode(v) + s[n+0] = (n == 1) and "?" or "&" + s[n+1] = util.urlencode(k) + s[n+2] = "=" + s[n+3] = util.urlencode(v) + n = n + 4 end return table.concat(s, "") end -urldecode = protocol.urldecode +urldecode = util.urldecode -urlencode = protocol.urlencode +urlencode = util.urlencode function write_json(x) util.serialize_json(x, write) end + +-- from given url or string. Returns a table with urldecoded values. +-- Simple parameters are stored as string values associated with the parameter +-- name within the table. Parameters with multiple values are stored as array +-- containing the corresponding values. +function urldecode_params(url, tbl) + local parser, name + local params = tbl or { } + + parser = lhttp.urlencoded_parser(function (what, buffer, length) + if what == parser.TUPLE then + name, value = nil, nil + elseif what == parser.NAME then + name = lhttp.urldecode(buffer) + elseif what == parser.VALUE and name then + params[name] = lhttp.urldecode(buffer) or "" + end + + return true + end) + + if parser then + parser:parse((url or ""):match("[^?]*$")) + parser:parse(nil) + end + + return params +end + +-- separated by "&". Tables are encoded as parameters with multiple values by +-- repeating the parameter name with each value. +function urlencode_params(tbl) + local k, v + local n, enc = 1, {} + for k, v in pairs(tbl) do + if type(v) == "table" then + local i, v2 + for i, v2 in ipairs(v) do + if enc[1] then + enc[n] = "&" + n = n + 1 + end + + enc[n+0] = lhttp.urlencode(k) + enc[n+1] = "=" + enc[n+2] = lhttp.urlencode(v2) + n = n + 3 + end + else + if enc[1] then + enc[n] = "&" + n = n + 1 + end + + enc[n+0] = lhttp.urlencode(k) + enc[n+1] = "=" + enc[n+2] = lhttp.urlencode(v) + n = n + 3 + end + end + + return table.concat(enc, "") +end + +-- Content-Type. Stores all extracted data associated with its parameter name +-- in the params table within the given message object. Multiple parameter +-- values are stored as tables, ordinary ones as strings. +-- If an optional file callback function is given then it is feeded with the +-- file contents chunk by chunk and only the extracted file name is stored +-- within the params table. The callback function will be called subsequently +-- with three arguments: +-- o Table containing decoded (name, file) and raw (headers) mime header data +-- o String value containing a chunk of the file data +-- o Boolean which indicates wheather the current chunk is the last one (eof) +function mimedecode_message_body(src, msg, file_cb) + local parser, header, field + local len, maxlen = 0, tonumber(msg.env.CONTENT_LENGTH or nil) + + parser, err = lhttp.multipart_parser(msg.env.CONTENT_TYPE, function (what, buffer, length) + if what == parser.PART_INIT then + field = { } + + elseif what == parser.HEADER_NAME then + header = buffer:lower() + + elseif what == parser.HEADER_VALUE and header then + if header:lower() == "content-disposition" and + lhttp.header_attribute(buffer, nil) == "form-data" + then + field.name = lhttp.header_attribute(buffer, "name") + field.file = lhttp.header_attribute(buffer, "filename") + field[1] = field.file + end + + if field.headers then + field.headers[header] = buffer + else + field.headers = { [header] = buffer } + end + + elseif what == parser.PART_BEGIN then + return not field.file + + elseif what == parser.PART_DATA and field.name and length > 0 then + if field.file then + if file_cb then + file_cb(field, buffer, false) + msg.params[field.name] = msg.params[field.name] or field + else + if not field.fd then + field.fd = nixio.mkstemp(field.name) + end + + if field.fd then + field.fd:write(buffer) + msg.params[field.name] = msg.params[field.name] or field + end + end + else + field.value = buffer + end + + elseif what == parser.PART_END and field.name then + if field.file and msg.params[field.name] then + if file_cb then + file_cb(field, "", true) + elseif field.fd then + field.fd:seek(0, "set") + end + else + local val = msg.params[field.name] + + if type(val) == "table" then + val[#val+1] = field.value or "" + elseif val ~= nil then + msg.params[field.name] = { val, field.value or "" } + else + msg.params[field.name] = field.value or "" + end + end + + field = nil + + elseif what == parser.ERROR then + err = buffer + end + + return true + end, HTTP_MAX_CONTENT) + + return ltn12.pump.all(src, function (chunk) + len = len + (chunk and #chunk or 0) + + if maxlen and len > maxlen + 2 then + return nil, "Message body size exceeds Content-Length" + end + + if not parser or not parser:parse(chunk) then + return nil, err + end + + return true + end) +end + +-- Content-Type. Stores all extracted data associated with its parameter name +-- in the params table within the given message object. Multiple parameter +-- values are stored as tables, ordinary ones as strings. +function urldecode_message_body(src, msg) + local err, name, value, parser + local len, maxlen = 0, tonumber(msg.env.CONTENT_LENGTH or nil) + + parser = lhttp.urlencoded_parser(function (what, buffer, length) + if what == parser.TUPLE then + name, value = nil, nil + elseif what == parser.NAME then + name = lhttp.urldecode(buffer, lhttp.DECODE_PLUS) + elseif what == parser.VALUE and name then + local val = msg.params[name] + + if type(val) == "table" then + val[#val+1] = lhttp.urldecode(buffer, lhttp.DECODE_PLUS) or "" + elseif val ~= nil then + msg.params[name] = { val, lhttp.urldecode(buffer, lhttp.DECODE_PLUS) or "" } + else + msg.params[name] = lhttp.urldecode(buffer, lhttp.DECODE_PLUS) or "" + end + elseif what == parser.ERROR then + err = buffer + end + + return true + end, HTTP_MAX_CONTENT) + + return ltn12.pump.all(src, function (chunk) + len = len + (chunk and #chunk or 0) + + if maxlen and len > maxlen + 2 then + return nil, "Message body size exceeds Content-Length" + elseif len > HTTP_MAX_CONTENT then + return nil, "Message body size exceeds maximum allowed length" + end + + if not parser or not parser:parse(chunk) then + return nil, err + end + + return true + end) +end + +-- This function will examine the Content-Type within the given message object +-- to select the appropriate content decoder. +-- Currently the application/x-www-urlencoded and application/form-data +-- mime types are supported. If the encountered content encoding can't be +-- handled then the whole message body will be stored unaltered as "content" +-- property within the given message object. +function parse_message_body(src, msg, filecb) + if msg.env.CONTENT_LENGTH or msg.env.REQUEST_METHOD == "POST" then + local ctype = lhttp.header_attribute(msg.env.CONTENT_TYPE, nil) + + -- Is it multipart/mime ? + if ctype == "multipart/form-data" then + return mimedecode_message_body(src, msg, filecb) + + -- Is it application/x-www-form-urlencoded ? + elseif ctype == "application/x-www-form-urlencoded" then + return urldecode_message_body(src, msg) + + end + + -- Unhandled encoding + -- If a file callback is given then feed it chunk by chunk, else + -- store whole buffer in message.content + local sink + + -- If we have a file callback then feed it + if type(filecb) == "function" then + local meta = { + name = "raw", + encoding = msg.env.CONTENT_TYPE + } + sink = function( chunk ) + if chunk then + return filecb(meta, chunk, false) + else + return filecb(meta, nil, true) + end + end + -- ... else append to .content + else + msg.content = "" + msg.content_length = 0 + + sink = function( chunk ) + if chunk then + if ( msg.content_length + #chunk ) <= HTTP_MAX_CONTENT then + msg.content = msg.content .. chunk + msg.content_length = msg.content_length + #chunk + return true + else + return nil, "POST data exceeds maximum allowed length" + end + end + return true + end + end + + -- Pump data... + while true do + local ok, err = ltn12.pump.step( src, sink ) + + if not ok and err then + return nil, err + elseif not ok then -- eof + return true + end + end + + return true + end + + return false +end diff --git a/modules/luci-base/luasrc/http.luadoc b/modules/luci-base/luasrc/http.luadoc index 8a325db21a..f8121230b6 100644 --- a/modules/luci-base/luasrc/http.luadoc +++ b/modules/luci-base/luasrc/http.luadoc @@ -6,25 +6,24 @@ module "luci.http" ---[[ Close the HTTP-Connection. - -@class function -@name close +@class function +@name close ]] ---[[ Return the request content if the request was of unknown type. -@class function -@name content -@return HTTP request body -@return HTTP request body length +@class function +@name content +@return HTTP request body +@return HTTP request body length ]] ---[[ Get a certain HTTP input value or a table of all input values. -@class function -@name formvalue +@class function +@name formvalue @param name Name of the GET or POST variable to fetch @param noparse Don't parse POST data before getting the value @return HTTP input value or table of all input value @@ -33,8 +32,8 @@ Get a certain HTTP input value or a table of all input values. ---[[ Get a table of all HTTP input values with a certain prefix. -@class function -@name formvaluetable +@class function +@name formvaluetable @param prefix Prefix @return Table of all HTTP input values with given prefix ]] @@ -42,18 +41,18 @@ Get a table of all HTTP input values with a certain prefix. ---[[ Get the value of a certain HTTP-Cookie. -@class function -@name getcookie +@class function +@name getcookie @param name Cookie Name @return String containing cookie data ]] ---[[ Get the value of a certain HTTP environment variable - or the environment table itself. -@class function -@name getenv + +@class function +@name getenv @param name Environment variable @return HTTP environment value or environment table ]] @@ -61,41 +60,41 @@ or the environment table itself. ---[[ Set a handler function for incoming user file uploads. -@class function -@name setfilehandler +@class function +@name setfilehandler @param callback Handler function ]] ---[[ Send a HTTP-Header. -@class function -@name header -@param key Header key -@param value Header value +@class function +@name header +@param key Header key +@param value Header value ]] ---[[ Set the mime type of following content data. -@class function -@name prepare_content -@param mime Mimetype of following content +@class function +@name prepare_content +@param mime Mimetype of following content ]] ---[[ Get the RAW HTTP input source -@class function -@name source -@return HTTP LTN12 source +@class function +@name source +@return HTTP LTN12 source ]] ---[[ Set the HTTP status code and status message. -@class function -@name status +@class function +@name status @param code Status code @param message Status message ]] @@ -105,8 +104,9 @@ Send a chunk of content data to the client. This function is as a valid LTN12 sink. If the content chunk is nil this function will automatically invoke close. -@class function -@name write + +@class function +@name write @param content Content chunk @param src_err Error object from source (optional) @see close @@ -115,51 +115,146 @@ If the content chunk is nil this function will automatically invoke close. ---[[ Splice data from a filedescriptor to the client. -@class function -@name splice -@param fp File descriptor -@param size Bytes to splice (optional) +@class function +@name splice +@param fp File descriptor +@param size Bytes to splice (optional) ]] ---[[ Redirects the client to a new URL and closes the connection. -@class function -@name redirect -@param url Target URL +@class function +@name redirect +@param url Target URL ]] ---[[ Create a querystring out of a table of key - value pairs. -@class function -@name build_querystring -@param table Query string source table +@class function +@name build_querystring +@param table Query string source table @return Encoded HTTP query string ]] ---[[ Return the URL-decoded equivalent of a string. +@class function +@name urldecode @param str URL-encoded string @param no_plus Don't decode + to " " @return URL-decoded string -@see urlencode +@see urlencode ]] ---[[ Return the URL-encoded equivalent of a string. +@class function +@name urlencode @param str Source string @return URL-encoded string -@see urldecode +@see urldecode ]] ---[[ Send the given data as JSON encoded string. -@class function -@name write_json +@class function +@name write_json @param data Data to send ]] +---[[ +Extract and split urlencoded data pairs, separated bei either "&" or ";" +from given url or string. Returns a table with urldecoded values. + +Simple parameters are stored as string values associated with the parameter +name within the table. Parameters with multiple values are stored as array +containing the corresponding values. + +@class function +@name urldecode_params +@param url The url or string which contains x-www-urlencoded form data +@param tbl Use the given table for storing values (optional) +@return Table containing the urldecoded parameters +@see urlencode_params +]] + +---[[ +Encode each key-value-pair in given table to x-www-urlencoded format, +separated by "&". + +Tables are encoded as parameters with multiple values by repeating the +parameter name with each value. + +@class function +@name urlencode_params +@param tbl Table with the values +@return String containing encoded values +@see urldecode_params +]] + +---[[ +Decode a mime encoded http message body with multipart/form-data Content-Type. + +Stores all extracted data associated with its parameter name +in the params table within the given message object. Multiple parameter +values are stored as tables, ordinary ones as strings. + +If an optional file callback function is given then it is feeded with the +file contents chunk by chunk and only the extracted file name is stored +within the params table. The callback function will be called subsequently +with three arguments: + o Table containing decoded (name, file) and raw (headers) mime header data + o String value containing a chunk of the file data + o Boolean which indicates wheather the current chunk is the last one (eof) + +@class function +@name mimedecode_message_body +@param src Ltn12 source function +@param msg HTTP message object +@param filecb File callback function (optional) +@return Value indicating successful operation (not nil means "ok") +@return String containing the error if unsuccessful +@see parse_message_header +]] + +---[[ +Decode an urlencoded http message body with application/x-www-urlencoded +Content-Type. + +Stores all extracted data associated with its parameter name in the params +table within the given message object. Multiple parameter values are stored +as tables, ordinary ones as strings. + +@class function +@name urldecode_message_body +@param src Ltn12 source function +@param msg HTTP message object +@return Value indicating successful operation (not nil means "ok") +@return String containing the error if unsuccessful +@see parse_message_header +]] + +---[[ +Try to extract and decode a http message body from the given ltn12 source. +This function will examine the Content-Type within the given message object +to select the appropriate content decoder. + +Currently the application/x-www-urlencoded and application/form-data +mime types are supported. If the encountered content encoding can't be +handled then the whole message body will be stored unaltered as "content" +property within the given message object. + +@class function +@name parse_message_body +@param src Ltn12 source function +@param msg HTTP message object +@param filecb File data callback (optional, see mimedecode_message_body()) +@return Value indicating successful operation (not nil means "ok") +@return String containing the error if unsuccessful +@see parse_message_header +]] diff --git a/modules/luci-base/luasrc/http/protocol.lua b/modules/luci-base/luasrc/http/protocol.lua deleted file mode 100644 index 0a8b2fbab9..0000000000 --- a/modules/luci-base/luasrc/http/protocol.lua +++ /dev/null @@ -1,649 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich <jow@openwrt.org> --- Licensed to the public under the Apache License 2.0. - --- This class contains several functions useful for http message- and content --- decoding and to retrive form data from raw http messages. -module("luci.http.protocol", package.seeall) - -local ltn12 = require("luci.ltn12") - -HTTP_MAX_CONTENT = 1024*8 -- 8 kB maximum content size - --- the "+" sign to " " - and return the decoded string. -function urldecode( str, no_plus ) - - local function __chrdec( hex ) - return string.char( tonumber( hex, 16 ) ) - end - - if type(str) == "string" then - if not no_plus then - str = str:gsub( "+", " " ) - end - - str = str:gsub( "%%([a-fA-F0-9][a-fA-F0-9])", __chrdec ) - end - - return str -end - --- from given url or string. Returns a table with urldecoded values. --- Simple parameters are stored as string values associated with the parameter --- name within the table. Parameters with multiple values are stored as array --- containing the corresponding values. -function urldecode_params( url, tbl ) - - local params = tbl or { } - - if url:find("?") then - url = url:gsub( "^.+%?([^?]+)", "%1" ) - end - - for pair in url:gmatch( "[^&;]+" ) do - - -- find key and value - local key = urldecode( pair:match("^([^=]+)") ) - local val = urldecode( pair:match("^[^=]+=(.+)$") ) - - -- store - if type(key) == "string" and key:len() > 0 then - if type(val) ~= "string" then val = "" end - - if not params[key] then - params[key] = val - elseif type(params[key]) ~= "table" then - params[key] = { params[key], val } - else - table.insert( params[key], val ) - end - end - end - - return params -end - -function urlencode( str ) - - local function __chrenc( chr ) - return string.format( - "%%%02x", string.byte( chr ) - ) - end - - if type(str) == "string" then - str = str:gsub( - "([^a-zA-Z0-9$_%-%.%~])", - __chrenc - ) - end - - return str -end - --- separated by "&". Tables are encoded as parameters with multiple values by --- repeating the parameter name with each value. -function urlencode_params( tbl ) - local enc = "" - - for k, v in pairs(tbl) do - if type(v) == "table" then - for i, v2 in ipairs(v) do - enc = enc .. ( #enc > 0 and "&" or "" ) .. - urlencode(k) .. "=" .. urlencode(v2) - end - else - enc = enc .. ( #enc > 0 and "&" or "" ) .. - urlencode(k) .. "=" .. urlencode(v) - end - end - - return enc -end - --- (Internal function) --- Initialize given parameter and coerce string into table when the parameter --- already exists. -local function __initval( tbl, key ) - if tbl[key] == nil then - tbl[key] = "" - elseif type(tbl[key]) == "string" then - tbl[key] = { tbl[key], "" } - else - table.insert( tbl[key], "" ) - end -end - --- (Internal function) --- Initialize given file parameter. -local function __initfileval( tbl, key, filename, fd ) - if tbl[key] == nil then - tbl[key] = { file=filename, fd=fd, name=key, "" } - else - table.insert( tbl[key], "" ) - end -end - --- (Internal function) --- Append given data to given parameter, either by extending the string value --- or by appending it to the last string in the parameter's value table. -local function __appendval( tbl, key, chunk ) - if type(tbl[key]) == "table" then - tbl[key][#tbl[key]] = tbl[key][#tbl[key]] .. chunk - else - tbl[key] = tbl[key] .. chunk - end -end - --- (Internal function) --- Finish the value of given parameter, either by transforming the string value --- or - in the case of multi value parameters - the last element in the --- associated values table. -local function __finishval( tbl, key, handler ) - if handler then - if type(tbl[key]) == "table" then - tbl[key][#tbl[key]] = handler( tbl[key][#tbl[key]] ) - else - tbl[key] = handler( tbl[key] ) - end - end -end - - --- Table of our process states -local process_states = { } - --- Extract "magic", the first line of a http message. --- Extracts the message type ("get", "post" or "response"), the requested uri --- or the status code if the line descripes a http response. -process_states['magic'] = function( msg, chunk, err ) - - if chunk ~= nil then - -- ignore empty lines before request - if #chunk == 0 then - return true, nil - end - - -- Is it a request? - local method, uri, http_ver = chunk:match("^([A-Z]+) ([^ ]+) HTTP/([01]%.[019])$") - - -- Yup, it is - if method then - - msg.type = "request" - msg.request_method = method:lower() - msg.request_uri = uri - msg.http_version = tonumber( http_ver ) - msg.headers = { } - - -- We're done, next state is header parsing - return true, function( chunk ) - return process_states['headers']( msg, chunk ) - end - - -- Is it a response? - else - - local http_ver, code, message = chunk:match("^HTTP/([01]%.[019]) ([0-9]+) ([^\r\n]+)$") - - -- Is a response - if code then - - msg.type = "response" - msg.status_code = code - msg.status_message = message - msg.http_version = tonumber( http_ver ) - msg.headers = { } - - -- We're done, next state is header parsing - return true, function( chunk ) - return process_states['headers']( msg, chunk ) - end - end - end - end - - -- Can't handle it - return nil, "Invalid HTTP message magic" -end - - --- Extract headers from given string. -process_states['headers'] = function( msg, chunk ) - - if chunk ~= nil then - - -- Look for a valid header format - local hdr, val = chunk:match( "^([A-Za-z][A-Za-z0-9%-_]+): +(.+)$" ) - - if type(hdr) == "string" and hdr:len() > 0 and - type(val) == "string" and val:len() > 0 - then - msg.headers[hdr] = val - - -- Valid header line, proceed - return true, nil - - elseif #chunk == 0 then - -- Empty line, we won't accept data anymore - return false, nil - else - -- Junk data - return nil, "Invalid HTTP header received" - end - else - return nil, "Unexpected EOF" - end -end - - --- data line by line with the trailing \r\n stripped of. -function header_source( sock ) - return ltn12.source.simplify( function() - - local chunk, err, part = sock:receive("*l") - - -- Line too long - if chunk == nil then - if err ~= "timeout" then - return nil, part - and "Line exceeds maximum allowed length" - or "Unexpected EOF" - else - return nil, err - end - - -- Line ok - elseif chunk ~= nil then - - -- Strip trailing CR - chunk = chunk:gsub("\r$","") - - return chunk, nil - end - end ) -end - --- Content-Type. Stores all extracted data associated with its parameter name --- in the params table within the given message object. Multiple parameter --- values are stored as tables, ordinary ones as strings. --- If an optional file callback function is given then it is feeded with the --- file contents chunk by chunk and only the extracted file name is stored --- within the params table. The callback function will be called subsequently --- with three arguments: --- o Table containing decoded (name, file) and raw (headers) mime header data --- o String value containing a chunk of the file data --- o Boolean which indicates wheather the current chunk is the last one (eof) -function mimedecode_message_body( src, msg, filecb ) - - if msg and msg.env.CONTENT_TYPE then - msg.mime_boundary = msg.env.CONTENT_TYPE:match("^multipart/form%-data; boundary=(.+)$") - end - - if not msg.mime_boundary then - return nil, "Invalid Content-Type found" - end - - - local tlen = 0 - local inhdr = false - local field = nil - local store = nil - local lchunk = nil - - local function parse_headers( chunk, field ) - - local stat - repeat - chunk, stat = chunk:gsub( - "^([A-Z][A-Za-z0-9%-_]+): +([^\r\n]+)\r\n", - function(k,v) - field.headers[k] = v - return "" - end - ) - until stat == 0 - - chunk, stat = chunk:gsub("^\r\n","") - - -- End of headers - if stat > 0 then - if field.headers["Content-Disposition"] then - if field.headers["Content-Disposition"]:match("^form%-data; ") then - field.name = field.headers["Content-Disposition"]:match('name="(.-)"') - field.file = field.headers["Content-Disposition"]:match('filename="(.+)"$') - end - end - - if not field.headers["Content-Type"] then - field.headers["Content-Type"] = "text/plain" - end - - if field.name and field.file and filecb then - __initval( msg.params, field.name ) - __appendval( msg.params, field.name, field.file ) - - store = filecb - elseif field.name and field.file then - local nxf = require "nixio" - local fd = nxf.mkstemp(field.name) - __initfileval ( msg.params, field.name, field.file, fd ) - if fd then - store = function(hdr, buf, eof) - fd:write(buf) - if (eof) then - fd:seek(0, "set") - end - end - else - store = function( hdr, buf, eof ) - __appendval( msg.params, field.name, buf ) - end - end - elseif field.name then - __initval( msg.params, field.name ) - - store = function( hdr, buf, eof ) - __appendval( msg.params, field.name, buf ) - end - else - store = nil - end - - return chunk, true - end - - return chunk, false - end - - local function snk( chunk ) - - tlen = tlen + ( chunk and #chunk or 0 ) - - if msg.env.CONTENT_LENGTH and tlen > tonumber(msg.env.CONTENT_LENGTH) + 2 then - return nil, "Message body size exceeds Content-Length" - end - - if chunk and not lchunk then - lchunk = "\r\n" .. chunk - - elseif lchunk then - local data = lchunk .. ( chunk or "" ) - local spos, epos, found - - repeat - spos, epos = data:find( "\r\n--" .. msg.mime_boundary .. "\r\n", 1, true ) - - if not spos then - spos, epos = data:find( "\r\n--" .. msg.mime_boundary .. "--\r\n", 1, true ) - end - - - if spos then - local predata = data:sub( 1, spos - 1 ) - - if inhdr then - predata, eof = parse_headers( predata, field ) - - if not eof then - return nil, "Invalid MIME section header" - elseif not field.name then - return nil, "Invalid Content-Disposition header" - end - end - - if store then - store( field, predata, true ) - end - - - field = { headers = { } } - found = found or true - - data, eof = parse_headers( data:sub( epos + 1, #data ), field ) - inhdr = not eof - end - until not spos - - if found then - -- We found at least some boundary. Save - -- the unparsed remaining data for the - -- next chunk. - lchunk, data = data, nil - else - -- There was a complete chunk without a boundary. Parse it as headers or - -- append it as data, depending on our current state. - if inhdr then - lchunk, eof = parse_headers( data, field ) - inhdr = not eof - else - -- We're inside data, so append the data. Note that we only append - -- lchunk, not all of data, since there is a chance that chunk - -- contains half a boundary. Assuming that each chunk is at least the - -- boundary in size, this should prevent problems - store( field, lchunk, false ) - lchunk, chunk = chunk, nil - end - end - end - - return true - end - - return ltn12.pump.all( src, snk ) -end - --- Content-Type. Stores all extracted data associated with its parameter name --- in the params table within the given message object. Multiple parameter --- values are stored as tables, ordinary ones as strings. -function urldecode_message_body( src, msg ) - - local tlen = 0 - local lchunk = nil - - local function snk( chunk ) - - tlen = tlen + ( chunk and #chunk or 0 ) - - if msg.env.CONTENT_LENGTH and tlen > tonumber(msg.env.CONTENT_LENGTH) + 2 then - return nil, "Message body size exceeds Content-Length" - elseif tlen > HTTP_MAX_CONTENT then - return nil, "Message body size exceeds maximum allowed length" - end - - if not lchunk and chunk then - lchunk = chunk - - elseif lchunk then - local data = lchunk .. ( chunk or "&" ) - local spos, epos - - repeat - spos, epos = data:find("^.-[;&]") - - if spos then - local pair = data:sub( spos, epos - 1 ) - local key = pair:match("^(.-)=") - local val = pair:match("=([^%s]*)%s*$") - - if key and #key > 0 then - __initval( msg.params, key ) - __appendval( msg.params, key, val ) - __finishval( msg.params, key, urldecode ) - end - - data = data:sub( epos + 1, #data ) - end - until not spos - - lchunk = data - end - - return true - end - - return ltn12.pump.all( src, snk ) -end - --- version, message headers and resulting CGI environment variables from the --- given ltn12 source. -function parse_message_header( src ) - - local ok = true - local msg = { } - - local sink = ltn12.sink.simplify( - function( chunk ) - return process_states['magic']( msg, chunk ) - end - ) - - -- Pump input data... - while ok do - - -- get data - ok, err = ltn12.pump.step( src, sink ) - - -- error - if not ok and err then - return nil, err - - -- eof - elseif not ok then - - -- Process get parameters - if ( msg.request_method == "get" or msg.request_method == "post" ) and - msg.request_uri:match("?") - then - msg.params = urldecode_params( msg.request_uri ) - else - msg.params = { } - end - - -- Populate common environment variables - msg.env = { - CONTENT_LENGTH = msg.headers['Content-Length']; - CONTENT_TYPE = msg.headers['Content-Type'] or msg.headers['Content-type']; - REQUEST_METHOD = msg.request_method:upper(); - REQUEST_URI = msg.request_uri; - SCRIPT_NAME = msg.request_uri:gsub("?.+$",""); - SCRIPT_FILENAME = ""; -- XXX implement me - SERVER_PROTOCOL = "HTTP/" .. string.format("%.1f", msg.http_version); - QUERY_STRING = msg.request_uri:match("?") - and msg.request_uri:gsub("^.+?","") or "" - } - - -- Populate HTTP_* environment variables - for i, hdr in ipairs( { - 'Accept', - 'Accept-Charset', - 'Accept-Encoding', - 'Accept-Language', - 'Connection', - 'Cookie', - 'Host', - 'Referer', - 'User-Agent', - } ) do - local var = 'HTTP_' .. hdr:upper():gsub("%-","_") - local val = msg.headers[hdr] - - msg.env[var] = val - end - end - end - - return msg -end - --- This function will examine the Content-Type within the given message object --- to select the appropriate content decoder. --- Currently the application/x-www-urlencoded and application/form-data --- mime types are supported. If the encountered content encoding can't be --- handled then the whole message body will be stored unaltered as "content" --- property within the given message object. -function parse_message_body( src, msg, filecb ) - -- Is it multipart/mime ? - if msg.env.REQUEST_METHOD == "POST" and msg.env.CONTENT_TYPE and - msg.env.CONTENT_TYPE:match("^multipart/form%-data") - then - - return mimedecode_message_body( src, msg, filecb ) - - -- Is it application/x-www-form-urlencoded ? - elseif msg.env.REQUEST_METHOD == "POST" and msg.env.CONTENT_TYPE and - msg.env.CONTENT_TYPE:match("^application/x%-www%-form%-urlencoded") - then - return urldecode_message_body( src, msg, filecb ) - - - -- Unhandled encoding - -- If a file callback is given then feed it chunk by chunk, else - -- store whole buffer in message.content - else - - local sink - - -- If we have a file callback then feed it - if type(filecb) == "function" then - local meta = { - name = "raw", - encoding = msg.env.CONTENT_TYPE - } - sink = function( chunk ) - if chunk then - return filecb(meta, chunk, false) - else - return filecb(meta, nil, true) - end - end - -- ... else append to .content - else - msg.content = "" - msg.content_length = 0 - - sink = function( chunk ) - if chunk then - if ( msg.content_length + #chunk ) <= HTTP_MAX_CONTENT then - msg.content = msg.content .. chunk - msg.content_length = msg.content_length + #chunk - return true - else - return nil, "POST data exceeds maximum allowed length" - end - end - return true - end - end - - -- Pump data... - while true do - local ok, err = ltn12.pump.step( src, sink ) - - if not ok and err then - return nil, err - elseif not ok then -- eof - return true - end - end - - return true - end -end - -statusmsg = { - [200] = "OK", - [206] = "Partial Content", - [301] = "Moved Permanently", - [302] = "Found", - [304] = "Not Modified", - [400] = "Bad Request", - [403] = "Forbidden", - [404] = "Not Found", - [405] = "Method Not Allowed", - [408] = "Request Time-out", - [411] = "Length Required", - [412] = "Precondition Failed", - [416] = "Requested range not satisfiable", - [500] = "Internal Server Error", - [503] = "Server Unavailable", -} diff --git a/modules/luci-base/luasrc/http/protocol.luadoc b/modules/luci-base/luasrc/http/protocol.luadoc deleted file mode 100644 index 67a60d9e7a..0000000000 --- a/modules/luci-base/luasrc/http/protocol.luadoc +++ /dev/null @@ -1,142 +0,0 @@ ----[[ -LuCI http protocol class. - -This class contains several functions useful for http message- and content -decoding and to retrive form data from raw http messages. -]] -module "luci.http.protocol" - ----[[ -Decode an urlencoded string - optionally without decoding - -the "+" sign to " " - and return the decoded string. -@class function -@name urldecode -@param str Input string in x-www-urlencoded format -@param no_plus Don't decode "+" signs to spaces -@return The decoded string -@see urlencode -]] - ----[[ -Extract and split urlencoded data pairs, separated bei either "&" or ";" - -from given url or string. Returns a table with urldecoded values. -Simple parameters are stored as string values associated with the parameter -name within the table. Parameters with multiple values are stored as array -containing the corresponding values. -@class function -@name urldecode_params -@param url The url or string which contains x-www-urlencoded form data -@param tbl Use the given table for storing values (optional) -@return Table containing the urldecoded parameters -@see urlencode_params -]] - ----[[ -Encode given string to x-www-urlencoded format. - -@class function -@name urlencode -@param str String to encode -@return String containing the encoded data -@see urldecode -]] - ----[[ -Encode each key-value-pair in given table to x-www-urlencoded format, - -separated by "&". Tables are encoded as parameters with multiple values by -repeating the parameter name with each value. -@class function -@name urlencode_params -@param tbl Table with the values -@return String containing encoded values -@see urldecode_params -]] - ----[[ -Creates a ltn12 source from the given socket. The source will return it's - -data line by line with the trailing \r\n stripped of. -@class function -@name header_source -@param sock Readable network socket -@return Ltn12 source function -]] - ----[[ -Decode a mime encoded http message body with multipart/form-data - -Content-Type. Stores all extracted data associated with its parameter name -in the params table withing the given message object. Multiple parameter -values are stored as tables, ordinary ones as strings. -If an optional file callback function is given then it is feeded with the -file contents chunk by chunk and only the extracted file name is stored -within the params table. The callback function will be called subsequently -with three arguments: - o Table containing decoded (name, file) and raw (headers) mime header data - o String value containing a chunk of the file data - o Boolean which indicates wheather the current chunk is the last one (eof) -@class function -@name mimedecode_message_body -@param src Ltn12 source function -@param msg HTTP message object -@param filecb File callback function (optional) -@return Value indicating successful operation (not nil means "ok") -@return String containing the error if unsuccessful -@see parse_message_header -]] - ----[[ -Decode an urlencoded http message body with application/x-www-urlencoded - -Content-Type. Stores all extracted data associated with its parameter name -in the params table withing the given message object. Multiple parameter -values are stored as tables, ordinary ones as strings. -@class function -@name urldecode_message_body -@param src Ltn12 source function -@param msg HTTP message object -@return Value indicating successful operation (not nil means "ok") -@return String containing the error if unsuccessful -@see parse_message_header -]] - ----[[ -Try to extract an http message header including information like protocol - -version, message headers and resulting CGI environment variables from the -given ltn12 source. -@class function -@name parse_message_header -@param src Ltn12 source function -@return HTTP message object -@see parse_message_body -]] - ----[[ -Try to extract and decode a http message body from the given ltn12 source. - -This function will examine the Content-Type within the given message object -to select the appropriate content decoder. -Currently the application/x-www-urlencoded and application/form-data -mime types are supported. If the encountered content encoding can't be -handled then the whole message body will be stored unaltered as "content" -property within the given message object. -@class function -@name parse_message_body -@param src Ltn12 source function -@param msg HTTP message object -@param filecb File data callback (optional, see mimedecode_message_body()) -@return Value indicating successful operation (not nil means "ok") -@return String containing the error if unsuccessful -@see parse_message_header -]] - ----[[ -Table containing human readable messages for several http status codes. - -@class table -]] - diff --git a/modules/luci-base/luasrc/http/protocol/conditionals.lua b/modules/luci-base/luasrc/http/protocol/conditionals.lua deleted file mode 100644 index d31a4e38a4..0000000000 --- a/modules/luci-base/luasrc/http/protocol/conditionals.lua +++ /dev/null @@ -1,110 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich <jow@openwrt.org> --- Licensed to the public under the Apache License 2.0. - --- This class provides basic ETag handling and implements most of the --- conditional HTTP/1.1 headers specified in RFC2616 Sct. 14.24 - 14.28 . -module("luci.http.protocol.conditionals", package.seeall) - -local date = require("luci.http.protocol.date") - - -function mk_etag( stat ) - if stat ~= nil then - return string.format( '"%x-%x-%x"', stat.ino, stat.size, stat.mtime ) - end -end - --- Test whether the given message object contains an "If-Match" header and --- compare it against the given stat object. -function if_match( req, stat ) - local h = req.headers - local etag = mk_etag( stat ) - - -- Check for matching resource - if type(h['If-Match']) == "string" then - for ent in h['If-Match']:gmatch("([^, ]+)") do - if ( ent == '*' or ent == etag ) and stat ~= nil then - return true - end - end - - return false, 412 - end - - return true -end - --- Test whether the given message object contains an "If-Modified-Since" header --- and compare it against the given stat object. -function if_modified_since( req, stat ) - local h = req.headers - - -- Compare mtimes - if type(h['If-Modified-Since']) == "string" then - local since = date.to_unix( h['If-Modified-Since'] ) - - if stat == nil or since < stat.mtime then - return true - end - - return false, 304, { - ["ETag"] = mk_etag( stat ); - ["Date"] = date.to_http( os.time() ); - ["Last-Modified"] = date.to_http( stat.mtime ) - } - end - - return true -end - --- Test whether the given message object contains an "If-None-Match" header and --- compare it against the given stat object. -function if_none_match( req, stat ) - local h = req.headers - local etag = mk_etag( stat ) - local method = req.env and req.env.REQUEST_METHOD or "GET" - - -- Check for matching resource - if type(h['If-None-Match']) == "string" then - for ent in h['If-None-Match']:gmatch("([^, ]+)") do - if ( ent == '*' or ent == etag ) and stat ~= nil then - if method == "GET" or method == "HEAD" then - return false, 304, { - ["ETag"] = etag; - ["Date"] = date.to_http( os.time() ); - ["Last-Modified"] = date.to_http( stat.mtime ) - } - else - return false, 412 - end - end - end - end - - return true -end - --- The If-Range header is currently not implemented due to the lack of general --- byte range stuff in luci.http.protocol . This function will always return --- false, 412 to indicate a failed precondition. -function if_range( req, stat ) - -- Sorry, no subranges (yet) - return false, 412 -end - --- Test whether the given message object contains an "If-Unmodified-Since" --- header and compare it against the given stat object. -function if_unmodified_since( req, stat ) - local h = req.headers - - -- Compare mtimes - if type(h['If-Unmodified-Since']) == "string" then - local since = date.to_unix( h['If-Unmodified-Since'] ) - - if stat ~= nil and since <= stat.mtime then - return false, 412 - end - end - - return true -end diff --git a/modules/luci-base/luasrc/http/protocol/conditionals.luadoc b/modules/luci-base/luasrc/http/protocol/conditionals.luadoc deleted file mode 100644 index 9cfe02dd50..0000000000 --- a/modules/luci-base/luasrc/http/protocol/conditionals.luadoc +++ /dev/null @@ -1,85 +0,0 @@ ----[[ -LuCI http protocol implementation - HTTP/1.1 bits. - -This class provides basic ETag handling and implements most of the -conditional HTTP/1.1 headers specified in RFC2616 Sct. 14.24 - 14.28 . -]] -module "luci.http.protocol.conditionals" - ----[[ -Implement 14.19 / ETag. - -@class function -@name mk_etag -@param stat A file.stat structure -@return String containing the generated tag suitable for ETag headers -]] - ----[[ -14.24 / If-Match - -Test whether the given message object contains an "If-Match" header and -compare it against the given stat object. -@class function -@name if_match -@param req HTTP request message object -@param stat A file.stat object -@return Boolean indicating whether the precondition is ok -@return Alternative status code if the precondition failed -]] - ----[[ -14.25 / If-Modified-Since - -Test whether the given message object contains an "If-Modified-Since" header -and compare it against the given stat object. -@class function -@name if_modified_since -@param req HTTP request message object -@param stat A file.stat object -@return Boolean indicating whether the precondition is ok -@return Alternative status code if the precondition failed -@return Table containing extra HTTP headers if the precondition failed -]] - ----[[ -14.26 / If-None-Match - -Test whether the given message object contains an "If-None-Match" header and -compare it against the given stat object. -@class function -@name if_none_match -@param req HTTP request message object -@param stat A file.stat object -@return Boolean indicating whether the precondition is ok -@return Alternative status code if the precondition failed -@return Table containing extra HTTP headers if the precondition failed -]] - ----[[ -14.27 / If-Range - -The If-Range header is currently not implemented due to the lack of general -byte range stuff in luci.http.protocol . This function will always return -false, 412 to indicate a failed precondition. -@class function -@name if_range -@param req HTTP request message object -@param stat A file.stat object -@return Boolean indicating whether the precondition is ok -@return Alternative status code if the precondition failed -]] - ----[[ -14.28 / If-Unmodified-Since - -Test whether the given message object contains an "If-Unmodified-Since" -header and compare it against the given stat object. -@class function -@name if_unmodified_since -@param req HTTP request message object -@param stat A file.stat object -@return Boolean indicating whether the precondition is ok -@return Alternative status code if the precondition failed -]] - diff --git a/modules/luci-base/luasrc/http/protocol/date.lua b/modules/luci-base/luasrc/http/protocol/date.lua deleted file mode 100644 index e440219a9c..0000000000 --- a/modules/luci-base/luasrc/http/protocol/date.lua +++ /dev/null @@ -1,87 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich <jow@openwrt.org> --- Licensed to the public under the Apache License 2.0. - --- This class contains functions to parse, compare and format http dates. -module("luci.http.protocol.date", package.seeall) - -require("luci.sys.zoneinfo") - - -MONTHS = { - "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", - "Sep", "Oct", "Nov", "Dec" -} - -function tz_offset(tz) - - if type(tz) == "string" then - - -- check for a numeric identifier - local s, v = tz:match("([%+%-])([0-9]+)") - if s == '+' then s = 1 else s = -1 end - if v then v = tonumber(v) end - - if s and v then - return s * 60 * ( math.floor( v / 100 ) * 60 + ( v % 100 ) ) - - -- lookup symbolic tz - elseif luci.sys.zoneinfo.OFFSET[tz:lower()] then - return luci.sys.zoneinfo.OFFSET[tz:lower()] - end - - end - - -- bad luck - return 0 -end - -function to_unix(date) - - local wd, day, mon, yr, hr, min, sec, tz = date:match( - "([A-Z][a-z][a-z]), ([0-9]+) " .. - "([A-Z][a-z][a-z]) ([0-9]+) " .. - "([0-9]+):([0-9]+):([0-9]+) " .. - "([A-Z0-9%+%-]+)" - ) - - if day and mon and yr and hr and min and sec then - -- find month - local month = 1 - for i = 1, 12 do - if MONTHS[i] == mon then - month = i - break - end - end - - -- convert to epoch time - return tz_offset(tz) + os.time( { - year = yr, - month = month, - day = day, - hour = hr, - min = min, - sec = sec - } ) - end - - return 0 -end - -function to_http(time) - return os.date( "%a, %d %b %Y %H:%M:%S GMT", time ) -end - -function compare(d1, d2) - - if d1:match("[^0-9]") then d1 = to_unix(d1) end - if d2:match("[^0-9]") then d2 = to_unix(d2) end - - if d1 == d2 then - return 0 - elseif d1 < d2 then - return -1 - else - return 1 - end -end diff --git a/modules/luci-base/luasrc/http/protocol/date.luadoc b/modules/luci-base/luasrc/http/protocol/date.luadoc deleted file mode 100644 index d6f1c8d658..0000000000 --- a/modules/luci-base/luasrc/http/protocol/date.luadoc +++ /dev/null @@ -1,46 +0,0 @@ ----[[ -LuCI http protocol implementation - date helper class. - -This class contains functions to parse, compare and format http dates. -]] -module "luci.http.protocol.date" - ----[[ -Return the time offset in seconds between the UTC and given time zone. - -@class function -@name tz_offset -@param tz Symbolic or numeric timezone specifier -@return Time offset to UTC in seconds -]] - ----[[ -Parse given HTTP date string and convert it to unix epoch time. - -@class function -@name to_unix -@param data String containing the date -@return Unix epoch time -]] - ----[[ -Convert the given unix epoch time to valid HTTP date string. - -@class function -@name to_http -@param time Unix epoch time -@return String containing the formatted date -]] - ----[[ -Compare two dates which can either be unix epoch times or HTTP date strings. - -@class function -@name compare -@param d1 The first date or epoch time to compare -@param d2 The first date or epoch time to compare -@return -1 - if d1 is lower then d2 -@return 0 - if both dates are equal -@return 1 - if d1 is higher then d2 -]] - diff --git a/modules/luci-base/luasrc/http/protocol/mime.lua b/modules/luci-base/luasrc/http/protocol/mime.lua deleted file mode 100644 index 2b99d8e74e..0000000000 --- a/modules/luci-base/luasrc/http/protocol/mime.lua +++ /dev/null @@ -1,78 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich <jow@openwrt.org> --- Licensed to the public under the Apache License 2.0. - --- This class provides functions to guess mime types from file extensions and --- vice versa. -module("luci.http.protocol.mime", package.seeall) - -require("luci.util") - -MIME_TYPES = { - ["txt"] = "text/plain"; - ["js"] = "text/javascript"; - ["css"] = "text/css"; - ["htm"] = "text/html"; - ["html"] = "text/html"; - ["patch"] = "text/x-patch"; - ["c"] = "text/x-csrc"; - ["h"] = "text/x-chdr"; - ["o"] = "text/x-object"; - ["ko"] = "text/x-object"; - - ["bmp"] = "image/bmp"; - ["gif"] = "image/gif"; - ["png"] = "image/png"; - ["jpg"] = "image/jpeg"; - ["jpeg"] = "image/jpeg"; - ["svg"] = "image/svg+xml"; - - ["zip"] = "application/zip"; - ["pdf"] = "application/pdf"; - ["xml"] = "application/xml"; - ["xsl"] = "application/xml"; - ["doc"] = "application/msword"; - ["ppt"] = "application/vnd.ms-powerpoint"; - ["xls"] = "application/vnd.ms-excel"; - ["odt"] = "application/vnd.oasis.opendocument.text"; - ["odp"] = "application/vnd.oasis.opendocument.presentation"; - ["pl"] = "application/x-perl"; - ["sh"] = "application/x-shellscript"; - ["php"] = "application/x-php"; - ["deb"] = "application/x-deb"; - ["iso"] = "application/x-cd-image"; - ["tgz"] = "application/x-compressed-tar"; - - ["mp3"] = "audio/mpeg"; - ["ogg"] = "audio/x-vorbis+ogg"; - ["wav"] = "audio/x-wav"; - - ["mpg"] = "video/mpeg"; - ["mpeg"] = "video/mpeg"; - ["avi"] = "video/x-msvideo"; -} - --- "application/octet-stream" if the extension is unknown. -function to_mime(filename) - if type(filename) == "string" then - local ext = filename:match("[^%.]+$") - - if ext and MIME_TYPES[ext:lower()] then - return MIME_TYPES[ext:lower()] - end - end - - return "application/octet-stream" -end - --- given mime-type is unknown. -function to_ext(mimetype) - if type(mimetype) == "string" then - for ext, type in luci.util.kspairs( MIME_TYPES ) do - if type == mimetype then - return ext - end - end - end - - return nil -end diff --git a/modules/luci-base/luasrc/http/protocol/mime.luadoc b/modules/luci-base/luasrc/http/protocol/mime.luadoc deleted file mode 100644 index 195b5fcc89..0000000000 --- a/modules/luci-base/luasrc/http/protocol/mime.luadoc +++ /dev/null @@ -1,34 +0,0 @@ ----[[ -LuCI http protocol implementation - mime helper class. - -This class provides functions to guess mime types from file extensions and -vice versa. -]] -module "luci.http.protocol.mime" - ----[[ -MIME mapping table containg extension - mimetype relations. - -@class table -]] - ----[[ -Extract extension from a filename and return corresponding mime-type or - -"application/octet-stream" if the extension is unknown. -@class function -@name to_mime -@param filename The filename for which the mime type is guessed -@return String containign the determined mime type -]] - ----[[ -Return corresponding extension for a given mime type or nil if the - -given mime-type is unknown. -@class function -@name to_ext -@param mimetype The mimetype to retrieve the extension from -@return String with the extension or nil for unknown type -]] - diff --git a/modules/luci-base/luasrc/model/ipkg.lua b/modules/luci-base/luasrc/model/ipkg.lua index e653b03465..e27ea52895 100644 --- a/modules/luci-base/luasrc/model/ipkg.lua +++ b/modules/luci-base/luasrc/model/ipkg.lua @@ -20,12 +20,14 @@ module "luci.model.ipkg" -- Internal action function local function _action(cmd, ...) - local pkg = "" + local cmdline = { ipkg, cmd } + + local k, v for k, v in pairs({...}) do - pkg = pkg .. " '" .. v:gsub("'", "") .. "'" + cmdline[#cmdline+1] = util.shellquote(v) end - local c = "%s %s %s >/tmp/opkg.stdout 2>/tmp/opkg.stderr" %{ ipkg, cmd, pkg } + local c = "%s >/tmp/opkg.stdout 2>/tmp/opkg.stderr" % table.concat(cmdline, " ") local r = os.execute(c) local e = fs.readfile("/tmp/opkg.stderr") local o = fs.readfile("/tmp/opkg.stdout") @@ -74,17 +76,17 @@ local function _parselist(rawdata) end -- Internal lookup function -local function _lookup(act, pkg) - local cmd = ipkg .. " " .. act +local function _lookup(cmd, pkg) + local cmdline = { ipkg, cmd } if pkg then - cmd = cmd .. " '" .. pkg:gsub("'", "") .. "'" + cmdline[#cmdline+1] = util.shellquote(pkg) end -- OPKG sometimes kills the whole machine because it sucks -- Therefore we have to use a sucky approach too and use -- tmpfiles instead of directly reading the output local tmpfile = os.tmpname() - os.execute(cmd .. (" >%s 2>/dev/null" % tmpfile)) + os.execute("%s >%s 2>/dev/null" %{ table.concat(cmdline, " "), tmpfile }) local data = _parselist(io.lines(tmpfile)) os.remove(tmpfile) @@ -123,9 +125,12 @@ end -- List helper local function _list(action, pat, cb) - local fd = io.popen(ipkg .. " " .. action .. - (pat and (" '%s'" % pat:gsub("'", "")) or "")) + local cmdline = { ipkg, action } + if pat then + cmdline[#cmdline+1] = util.shellquote(pat) + end + local fd = io.popen(table.concat(cmdline, " ")) if fd then local name, version, sz, desc while true do diff --git a/modules/luci-base/luasrc/model/network.lua b/modules/luci-base/luasrc/model/network.lua index d9ef4089c8..d5029ec904 100644 --- a/modules/luci-base/luasrc/model/network.lua +++ b/modules/luci-base/luasrc/model/network.lua @@ -6,14 +6,12 @@ local type, next, pairs, ipairs, loadfile, table, select local tonumber, tostring, math = tonumber, tostring, math -local require = require +local pcall, require, setmetatable = pcall, require, setmetatable local nxo = require "nixio" local nfs = require "nixio.fs" local ipc = require "luci.ip" -local sys = require "luci.sys" local utl = require "luci.util" -local dsp = require "luci.dispatcher" local uci = require "luci.model.uci" local lng = require "luci.i18n" local jsc = require "luci.jsonc" @@ -108,6 +106,58 @@ function _set(c, s, o, v) end end +local function _wifi_state() + if not next(_ubuswificache) then + _ubuswificache = utl.ubus("network.wireless", "status", {}) or {} + end + return _ubuswificache +end + +local function _wifi_state_by_sid(sid) + local t1, n1 = _uci:get("wireless", sid) + if t1 == "wifi-iface" and n1 ~= nil then + local radioname, radiostate + for radioname, radiostate in pairs(_wifi_state()) do + if type(radiostate) == "table" and + type(radiostate.interfaces) == "table" + then + local netidx, netstate + for netidx, netstate in ipairs(radiostate.interfaces) do + if type(netstate) == "table" and + type(netstate.section) == "string" + then + local t2, n2 = _uci:get("wireless", netstate.section) + if t1 == t2 and n1 == n2 then + return radioname, radiostate, netstate + end + end + end + end + end + end +end + +local function _wifi_state_by_ifname(ifname) + if type(ifname) == "string" then + local radioname, radiostate + for radioname, radiostate in pairs(_wifi_state()) do + if type(radiostate) == "table" and + type(radiostate.interfaces) == "table" + then + local netidx, netstate + for netidx, netstate in ipairs(radiostate.interfaces) do + if type(netstate) == "table" and + type(netstate.ifname) == "string" and + netstate.ifname == ifname + then + return radioname, radiostate, netstate + end + end + end + end + end +end + function _wifi_iface(x) local _, p for _, p in ipairs(IFACE_PATTERNS_WIRELESS) do @@ -118,61 +168,113 @@ function _wifi_iface(x) return false end -function _wifi_state(key, val, field) - local radio, radiostate, ifc, ifcstate - - if not next(_ubuswificache) then - _ubuswificache = utl.ubus("network.wireless", "status", {}) or {} +local function _wifi_iwinfo_by_ifname(ifname, force_phy_only) + local stat, iwinfo = pcall(require, "iwinfo") + local iwtype = stat and type(ifname) == "string" and iwinfo.type(ifname) + local is_nonphy_op = { + bitrate = true, + quality = true, + quality_max = true, + mode = true, + ssid = true, + bssid = true, + assoclist = true, + encryption = true + } - -- workaround extended section format - for radio, radiostate in pairs(_ubuswificache) do - for ifc, ifcstate in pairs(radiostate.interfaces) do - if ifcstate.section and ifcstate.section:sub(1, 1) == '@' then - local s = _uci:get_all('wireless.%s' % ifcstate.section) - if s then - ifcstate.section = s['.name'] - end + if iwtype then + -- if we got a type but no real netdev, we're referring to a phy + local phy_only = force_phy_only or (ipc.link(ifname).type ~= 1) + + return setmetatable({}, { + __index = function(t, k) + if k == "ifname" then + return ifname + elseif phy_only and is_nonphy_op[k] then + return nil + elseif iwinfo[iwtype][k] then + return iwinfo[iwtype][k](ifname) end end - end + }) end +end - for radio, radiostate in pairs(_ubuswificache) do - for ifc, ifcstate in pairs(radiostate.interfaces) do - if ifcstate[key] == val then - return ifcstate[field] - end +local function _wifi_sid_by_netid(netid) + if type(netid) == "string" then + local radioname, netidx = netid:match("^(%w+)%.network(%d+)$") + if radioname and netidx then + local i, n = 0, nil + + netidx = tonumber(netidx) + _uci:foreach("wireless", "wifi-iface", + function(s) + if s.device == radioname then + i = i + 1 + if i == netidx then + n = s[".name"] + return false + end + end + end) + + return n end end end -function _wifi_lookup(ifn) - -- got a radio#.network# pseudo iface, locate the corresponding section - local radio, ifnidx = ifn:match("^(%w+)%.network(%d+)$") - if radio and ifnidx then - local sid = nil - local num = 0 +function _wifi_sid_by_ifname(ifn) + local sid = _wifi_sid_by_netid(ifn) + if sid then + return sid + end - ifnidx = tonumber(ifnidx) - _uci:foreach("wireless", "wifi-iface", - function(s) - if s.device == radio then - num = num + 1 - if num == ifnidx then - sid = s['.name'] - return false - end - end - end) + local _, _, netstate = _wifi_state_by_ifname(ifn) + if netstate and type(netstate.section) == "string" then + return netstate.section + end +end - return sid +local function _wifi_netid_by_sid(sid) + local t, n = _uci:get("wireless", sid) + if t == "wifi-iface" and n ~= nil then + local radioname = _uci:get("wireless", n, "device") + if type(radioname) == "string" then + local i, netid = 0, nil - -- looks like wifi, try to locate the section via ubus state - elseif _wifi_iface(ifn) then - return _wifi_state("ifname", ifn, "section") + _uci:foreach("wireless", "wifi-iface", + function(s) + if s.device == radioname then + i = i + 1 + if s[".name"] == n then + netid = "%s.network%d" %{ radioname, i } + return false + end + end + end) + + return netid, radioname + end end end +local function _wifi_netid_by_netname(name) + local netid = nil + + _uci:foreach("wireless", "wifi-iface", + function(s) + local net + for net in utl.imatch(s.network) do + if net == name then + netid = _wifi_netid_by_sid(s[".name"]) + return false + end + end + end) + + return netid +end + function _iface_virtual(x) local _, p for _, p in ipairs(IFACE_PATTERNS_VIRTUAL) do @@ -228,7 +330,7 @@ function init(cursor) if i.family == "packet" then _interfaces[name].flags = i.flags _interfaces[name].stats = i.data - _interfaces[name].macaddr = i.addr + _interfaces[name].macaddr = ipc.checkmac(i.addr) elseif i.family == "inet" then _interfaces[name].ipaddrs[#_interfaces[name].ipaddrs+1] = ipc.IPv4(i.addr, i.netmask) elseif i.family == "inet6" then @@ -441,6 +543,9 @@ end function del_network(self, n) local r = _uci:delete("network", n) if r then + _uci:delete_all("luci", "ifstate", + function(s) return (s.interface == n) end) + _uci:delete_all("network", "alias", function(s) return (s.interface == n) end) @@ -524,20 +629,8 @@ function get_interface(self, i) if _interfaces[i] or _wifi_iface(i) then return interface(i) else - local ifc - local num = { } - _uci:foreach("wireless", "wifi-iface", - function(s) - if s.device then - num[s.device] = num[s.device] and num[s.device] + 1 or 1 - if s['.name'] == i then - ifc = interface( - "%s.network%d" %{s.device, num[s.device] }) - return false - end - end - end) - return ifc + local netid = _wifi_netid_by_sid(i) + return netid and interface(netid) end end @@ -644,7 +737,7 @@ function get_wifidevs(self) end function get_wifinet(self, net) - local wnet = _wifi_lookup(net) + local wnet = _wifi_sid_by_ifname(net) if wnet then return wifinet(wnet) end @@ -660,7 +753,7 @@ function add_wifinet(self, net, options) end function del_wifinet(self, net) - local wnet = _wifi_lookup(net) + local wnet = _wifi_sid_by_ifname(net) if wnet then _uci:delete("wireless", wnet) return true @@ -784,22 +877,7 @@ function protocol.ifname(self) ifname = self:_ubus("device") end if not ifname then - local num = { } - _uci:foreach("wireless", "wifi-iface", - function(s) - if s.device then - num[s.device] = num[s.device] - and num[s.device] + 1 or 1 - - local net - for net in utl.imatch(s.network) do - if net == self.sid then - ifname = "%s.network%d" %{ s.device, num[s.device] } - return false - end - end - end - end) + ifname = _wifi_netid_by_netname(self.sid) end return ifname end @@ -923,7 +1001,15 @@ function protocol.ip6addrs(self) if type(addrs) == "table" then for n, addr in ipairs(addrs) do - rv[#rv+1] = "%s1/%d" %{ addr.address, addr.mask } + if type(addr["local-address"]) == "table" and + type(addr["local-address"].mask) == "number" and + type(addr["local-address"].address) == "string" + then + rv[#rv+1] = "%s/%d" %{ + addr["local-address"].address, + addr["local-address"].mask + } + end end end @@ -981,24 +1067,17 @@ function protocol.is_empty(self) if self:is_floating() then return false else - local rv = true + local empty = true if (self:_get("ifname") or ""):match("%S+") then - rv = false + empty = false end - _uci:foreach("wireless", "wifi-iface", - function(s) - local n - for n in utl.imatch(s.network) do - if n == self.sid then - rv = false - return false - end - end - end) + if empty and _wifi_netid_by_netname(self.sid) then + empty = false + end - return rv + return empty end end @@ -1006,7 +1085,7 @@ function protocol.add_interface(self, ifname) ifname = _M:ifnameof(ifname) if ifname and not self:is_floating() then -- if its a wifi interface, change its network option - local wif = _wifi_lookup(ifname) + local wif = _wifi_sid_by_ifname(ifname) if wif then _append("wireless", wif, "network", self.sid) @@ -1021,7 +1100,7 @@ function protocol.del_interface(self, ifname) ifname = _M:ifnameof(ifname) if ifname and not self:is_floating() then -- if its a wireless interface, clear its network option - local wif = _wifi_lookup(ifname) + local wif = _wifi_sid_by_ifname(ifname) if wif then _filter("wireless", wif, "network", self.sid) end -- remove the interface @@ -1043,21 +1122,7 @@ function protocol.get_interface(self) ifn = ifn:match("^[^:/]+") return ifn and interface(ifn, self) end - ifn = nil - _uci:foreach("wireless", "wifi-iface", - function(s) - if s.device then - num[s.device] = num[s.device] and num[s.device] + 1 or 1 - - local net - for net in utl.imatch(s.network) do - if net == self.sid then - ifn = "%s.network%d" %{ s.device, num[s.device] } - return false - end - end - end - end) + ifn = _wifi_netid_by_netname(self.sid) return ifn and interface(ifn, self) end end @@ -1077,18 +1142,17 @@ function protocol.get_interfaces(self) ifaces[#ifaces+1] = nfs[ifn] end - local num = { } local wfs = { } _uci:foreach("wireless", "wifi-iface", function(s) if s.device then - num[s.device] = num[s.device] and num[s.device] + 1 or 1 - local net for net in utl.imatch(s.network) do if net == self.sid then - ifn = "%s.network%d" %{ s.device, num[s.device] } - wfs[ifn] = interface(ifn, self) + ifn = _wifi_netid_by_sid(s[".name"]) + if ifn then + wfs[ifn] = interface(ifn, self) + end end end end @@ -1119,7 +1183,7 @@ function protocol.contains_interface(self, ifname) end end - local wif = _wifi_lookup(ifname) + local wif = _wifi_sid_by_ifname(ifname) if wif then local n for n in utl.imatch(_uci:get("wireless", wif, "network")) do @@ -1134,17 +1198,18 @@ function protocol.contains_interface(self, ifname) end function protocol.adminlink(self) - return dsp.build_url("admin", "network", "network", self.sid) + local stat, dsp = pcall(require, "luci.dispatcher") + return stat and dsp.build_url("admin", "network", "network", self.sid) end interface = utl.class() function interface.__init__(self, ifname, network) - local wif = _wifi_lookup(ifname) + local wif = _wifi_sid_by_ifname(ifname) if wif then self.wif = wifinet(wif) - self.ifname = _wifi_state("section", wif, "ifname") + self.ifname = self.wif:ifname() end self.ifname = self.ifname or ifname @@ -1168,8 +1233,7 @@ function interface.name(self) end function interface.mac(self) - local mac = self:_ubus("macaddr") - return mac and mac:upper() + return ipc.checkmac(self:_ubus("macaddr")) end function interface.ipaddrs(self) @@ -1209,7 +1273,7 @@ function interface.get_i18n(self) return "%s: %s %q" %{ lng.translate("Wireless Network"), self.wif:active_mode(), - self.wif:active_ssid() or self.wif:active_bssid() or self.wif:id() + self.wif:active_ssid() or self.wif:active_bssid() or self.wif:id() or "?" } else return "%s: %q" %{ self:get_type_i18n(), self:name() } @@ -1332,9 +1396,14 @@ end wifidev = utl.class() -function wifidev.__init__(self, dev) - self.sid = dev - self.iwinfo = dev and sys.wifi.getiwinfo(dev) or { } +function wifidev.__init__(self, name) + local t, n = _uci:get("wireless", name) + if t == "wifi-device" and n ~= nil then + self.sid = n + self.iwinfo = _wifi_iwinfo_by_ifname(self.sid, true) + end + self.sid = self.sid or name + self.iwinfo = self.iwinfo or { ifname = self.sid } end function wifidev.get(self, opt) @@ -1359,7 +1428,7 @@ function wifidev.hwmodes(self) end function wifidev.get_i18n(self) - local t = "Generic" + local t = self.iwinfo.hardware_name or "Generic" if self.iwinfo.type == "wl" then t = "Broadcom" end @@ -1387,7 +1456,7 @@ function wifidev.get_wifinet(self, net) if _uci:get("wireless", net) == "wifi-iface" then return wifinet(net) else - local wnet = _wifi_lookup(net) + local wnet = _wifi_sid_by_ifname(net) if wnet then return wifinet(wnet) end @@ -1421,7 +1490,7 @@ function wifidev.del_wifinet(self, net) if utl.instanceof(net, wifinet) then net = net.sid elseif _uci:get("wireless", net) ~= "wifi-iface" then - net = _wifi_lookup(net) + net = _wifi_sid_by_ifname(net) end if net and _uci:get("wireless", net, "device") == self.sid then @@ -1435,49 +1504,50 @@ end wifinet = utl.class() -function wifinet.__init__(self, net, data) - self.sid = net - - local n = 0 - local num = { } - local netid, sid - _uci:foreach("wireless", "wifi-iface", - function(s) - n = n + 1 - if s.device then - num[s.device] = num[s.device] and num[s.device] + 1 or 1 - if s['.name'] == self.sid then - sid = "@wifi-iface[%d]" % n - netid = "%s.network%d" %{ s.device, num[s.device] } - return false - end - end - end) +function wifinet.__init__(self, name, data) + local sid, netid, radioname, radiostate, netstate + -- lookup state by radio#.network# notation + sid = _wifi_sid_by_netid(name) if sid then - local _, k, r, i - for k, r in pairs(_ubuswificache) do - if type(r) == "table" and - type(r.interfaces) == "table" - then - for _, i in ipairs(r.interfaces) do - if type(i) == "table" and i.section == sid then - self._ubusdata = { - radio = k, - dev = r, - net = i - } - end + netid = name + radioname, radiostate, netstate = _wifi_state_by_sid(sid) + else + -- lookup state by ifname (e.g. wlan0) + radioname, radiostate, netstate = _wifi_state_by_ifname(name) + if radioname and radiostate and netstate then + sid = netstate.section + netid = _wifi_netid_by_sid(sid) + else + -- lookup state by uci section id (e.g. cfg053579) + radioname, radiostate, netstate = _wifi_state_by_sid(name) + if radioname and radiostate and netstate then + sid = name + netid = _wifi_netid_by_sid(sid) + else + -- no state available, try to resolve from uci + netid, radioname = _wifi_netid_by_sid(name) + if netid and radioname then + sid = name end end end end - local dev = _wifi_state("section", self.sid, "ifname") or netid + local iwinfo = + (netstate and _wifi_iwinfo_by_ifname(netstate.ifname)) or + (radioname and _wifi_iwinfo_by_ifname(radioname)) or + { ifname = (netid or sid or name) } - self.netid = netid - self.wdev = dev - self.iwinfo = dev and sys.wifi.getiwinfo(dev) or { } + self.sid = sid or name + self.wdev = iwinfo.ifname + self.iwinfo = iwinfo + self.netid = netid + self._ubusdata = { + radio = radioname, + dev = radiostate, + net = netstate + } end function wifinet.ubus(self, ...) @@ -1664,7 +1734,8 @@ function wifinet.get_i18n(self) end function wifinet.adminlink(self) - return dsp.build_url("admin", "network", "wireless", self.netid) + local stat, dsp = pcall(require, "luci.dispatcher") + return dsp and dsp.build_url("admin", "network", "wireless", self.netid) end function wifinet.get_network(self) diff --git a/modules/luci-base/luasrc/model/uci.lua b/modules/luci-base/luasrc/model/uci.lua index 577c6cde08..461ba9d5a3 100644 --- a/modules/luci-base/luasrc/model/uci.lua +++ b/modules/luci-base/luasrc/model/uci.lua @@ -2,13 +2,12 @@ -- Licensed to the public under the Apache License 2.0. local os = require "os" -local uci = require "uci" local util = require "luci.util" local table = require "table" local setmetatable, rawget, rawset = setmetatable, rawget, rawset -local require, getmetatable = require, getmetatable +local require, getmetatable, assert = require, getmetatable, assert local error, pairs, ipairs = error, pairs, ipairs local type, tostring, tonumber, unpack = type, tostring, tonumber, unpack @@ -20,217 +19,472 @@ local type, tostring, tonumber, unpack = type, tostring, tonumber, unpack -- reloaded. module "luci.model.uci" -cursor = uci.cursor +local ERRSTR = { + "Invalid command", + "Invalid argument", + "Method not found", + "Entry not found", + "No data", + "Permission denied", + "Timeout", + "Not supported", + "Unknown error", + "Connection failed" +} + +local session_id = nil + +local function call(cmd, args) + if type(args) == "table" and session_id then + args.ubus_rpc_session = session_id + end + return util.ubus("uci", cmd, args) +end -APIVERSION = uci.APIVERSION + +function cursor() + return _M +end function cursor_state() - return cursor(nil, "/var/state") + return _M end +function substate(self) + return self +end -inst = cursor() -inst_state = cursor_state() -local Cursor = getmetatable(inst) +function get_confdir(self) + return "/etc/config" +end -function Cursor.apply(self, configlist, command) - configlist = self:_affected(configlist) - if command then - return { "/sbin/luci-reload", unpack(configlist) } - else - return os.execute("/sbin/luci-reload %s >/dev/null 2>&1" - % table.concat(configlist, " ")) - end +function get_savedir(self) + return "/tmp/.uci" end +function get_session_id(self) + return session_id +end --- returns a boolean whether to delete the current section (optional) -function Cursor.delete_all(self, config, stype, comparator) - local del = {} +function set_confdir(self, directory) + return false +end - if type(comparator) == "table" then - local tbl = comparator - comparator = function(section) - for k, v in pairs(tbl) do - if section[k] ~= v then - return false +function set_savedir(self, directory) + return false +end + +function set_session_id(self, id) + session_id = id + return true +end + + +function load(self, config) + return true +end + +function save(self, config) + return true +end + +function unload(self, config) + return true +end + + +function changes(self, config) + local rv = call("changes", { config = config }) + local res = {} + + if type(rv) == "table" and type(rv.changes) == "table" then + local package, changes + for package, changes in pairs(rv.changes) do + res[package] = {} + + local _, change + for _, change in ipairs(changes) do + local operation, section, option, value = unpack(change) + if option and value and operation ~= "add" then + res[package][section] = res[package][section] or { } + + if operation == "list-add" then + local v = res[package][section][option] + if type(v) == "table" then + v[#v+1] = value or "" + elseif v ~= nil then + res[package][section][option] = { v, value } + else + res[package][section][option] = { value } + end + else + res[package][section][option] = value or "" + end + else + res[package][section] = res[package][section] or {} + res[package][section][".type"] = option or "" end end - return true end end - local function helper (section) + return res +end - if not comparator or comparator(section) then - del[#del+1] = section[".name"] - end - end - self:foreach(config, stype, helper) +function revert(self, config) + local _, err = call("revert", { config = config }) + return (err == nil), ERRSTR[err] +end - for i, j in ipairs(del) do - self:delete(config, j) - end +function commit(self, config) + local _, err = call("commit", { config = config }) + return (err == nil), ERRSTR[err] end -function Cursor.section(self, config, type, name, values) - local stat = true - if name then - stat = self:set(config, name, type) +function apply(self, rollback) + local _, err + + if rollback then + local conf = require "luci.config" + local timeout = tonumber(conf and conf.apply and conf.apply.rollback or "") or 0 + + _, err = call("apply", { + timeout = (timeout > 30) and timeout or 30, + rollback = true + }) + + if not err then + util.ubus("session", "set", { + ubus_rpc_session = session_id, + values = { rollback = os.time() + timeout } + }) + end else - name = self:add(config, type) - stat = name and true - end + _, err = call("changes", {}) + + if not err then + if type(_) == "table" and type(_.changes) == "table" then + local k, v + for k, v in pairs(_.changes) do + _, err = call("commit", { config = k }) + if err then + break + end + end + end + end - if stat and values then - stat = self:tset(config, name, values) + if not err then + _, err = call("apply", { rollback = false }) + end end - return stat and name + return (err == nil), ERRSTR[err] end -function Cursor.tset(self, config, section, values) - local stat = true - for k, v in pairs(values) do - if k:sub(1, 1) ~= "." then - stat = stat and self:set(config, section, k, v) - end +function confirm(self) + local _, err = call("confirm", {}) + if not err then + util.ubus("session", "set", { + ubus_rpc_session = session_id, + values = { rollback = 0 } + }) end - return stat + return (err == nil), ERRSTR[err] end -function Cursor.get_bool(self, ...) - local val = self:get(...) - return ( val == "1" or val == "true" or val == "yes" or val == "on" ) +function rollback(self) + local _, err = call("rollback", {}) + if not err then + util.ubus("session", "set", { + ubus_rpc_session = session_id, + values = { rollback = 0 } + }) + end + return (err == nil), ERRSTR[err] end -function Cursor.get_list(self, config, section, option) - if config and section and option then - local val = self:get(config, section, option) - return ( type(val) == "table" and val or { val } ) +function rollback_pending(self) + local deadline, err = util.ubus("session", "get", { + ubus_rpc_session = session_id, + keys = { "rollback" } + }) + + if type(deadline) == "table" and + type(deadline.values) == "table" and + type(deadline.values.rollback) == "number" and + deadline.values.rollback > os.time() + then + return true, deadline.values.rollback - os.time() end - return {} + + return false, ERRSTR[err] end -function Cursor.get_first(self, conf, stype, opt, def) - local rv = def - self:foreach(conf, stype, - function(s) - local val = not opt and s['.name'] or s[opt] +function foreach(self, config, stype, callback) + if type(callback) == "function" then + local rv, err = call("get", { + config = config, + type = stype + }) - if type(def) == "number" then - val = tonumber(val) - elseif type(def) == "boolean" then - val = (val == "1" or val == "true" or - val == "yes" or val == "on") - end + if type(rv) == "table" and type(rv.values) == "table" then + local sections = { } + local res = false + local index = 1 - if val ~= nil then - rv = val - return false + local _, section + for _, section in pairs(rv.values) do + section[".index"] = section[".index"] or index + sections[index] = section + index = index + 1 end - end) - return rv + table.sort(sections, function(a, b) + return a[".index"] < b[".index"] + end) + + for _, section in ipairs(sections) do + local continue = callback(section) + res = true + if continue == false then + break + end + end + return res + else + return false, ERRSTR[err] or "No data" + end + else + return false, "Invalid argument" + end end -function Cursor.set_list(self, config, section, option, value) - if config and section and option then - if not value or #value == 0 then - return self:delete(config, section, option) +local function _get(self, operation, config, section, option) + if section == nil then + return nil + elseif type(option) == "string" and option:byte(1) ~= 46 then + local rv, err = call(operation, { + config = config, + section = section, + option = option + }) + + if type(rv) == "table" then + return rv.value or nil + elseif err then + return false, ERRSTR[err] + else + return nil end - return self:set( - config, section, option, - ( type(value) == "table" and value or { value } ) - ) + elseif option == nil then + local values = self:get_all(config, section) + if values then + return values[".type"], values[".name"] + else + return nil + end + else + return false, "Invalid argument" end - return false end --- Return a list of initscripts affected by configuration changes. -function Cursor._affected(self, configlist) - configlist = type(configlist) == "table" and configlist or {configlist} +function get(self, ...) + return _get(self, "get", ...) +end - local c = cursor() - c:load("ucitrack") +function get_state(self, ...) + return _get(self, "state", ...) +end - -- Resolve dependencies - local reloadlist = {} +function get_all(self, config, section) + local rv, err = call("get", { + config = config, + section = section + }) - local function _resolve_deps(name) - local reload = {name} - local deps = {} + if type(rv) == "table" and type(rv.values) == "table" then + return rv.values + elseif err then + return false, ERRSTR[err] + else + return nil + end +end - c:foreach("ucitrack", name, - function(section) - if section.affects then - for i, aff in ipairs(section.affects) do - deps[#deps+1] = aff - end - end - end) +function get_bool(self, ...) + local val = self:get(...) + return (val == "1" or val == "true" or val == "yes" or val == "on") +end - for i, dep in ipairs(deps) do - for j, add in ipairs(_resolve_deps(dep)) do - reload[#reload+1] = add - end - end +function get_first(self, config, stype, option, default) + local rv = default - return reload - end + self:foreach(config, stype, function(s) + local val = not option and s[".name"] or s[option] - -- Collect initscripts - for j, config in ipairs(configlist) do - for i, e in ipairs(_resolve_deps(config)) do - if not util.contains(reloadlist, e) then - reloadlist[#reloadlist+1] = e - end + if type(default) == "number" then + val = tonumber(val) + elseif type(default) == "boolean" then + val = (val == "1" or val == "true" or + val == "yes" or val == "on") end - end - return reloadlist -end + if val ~= nil then + rv = val + return false + end + end) --- curser, means it the parent unloads or loads configs, the sub state will --- do so as well. -function Cursor.substate(self) - Cursor._substates = Cursor._substates or { } - Cursor._substates[self] = Cursor._substates[self] or cursor_state() - return Cursor._substates[self] + return rv end -local _load = Cursor.load -function Cursor.load(self, ...) - if Cursor._substates and Cursor._substates[self] then - _load(Cursor._substates[self], ...) +function get_list(self, config, section, option) + if config and section and option then + local val = self:get(config, section, option) + return (type(val) == "table" and val or { val }) end - return _load(self, ...) + return { } end -local _unload = Cursor.unload -function Cursor.unload(self, ...) - if Cursor._substates and Cursor._substates[self] then - _unload(Cursor._substates[self], ...) + +function section(self, config, stype, name, values) + local rv, err = call("add", { + config = config, + type = stype, + name = name, + values = values + }) + + if type(rv) == "table" then + return rv.section + elseif err then + return false, ERRSTR[err] + else + return nil end - return _unload(self, ...) end +function add(self, config, stype) + return self:section(config, stype) +end +function set(self, config, section, option, value) + if value == nil then + local sname, err = self:section(config, option, section) + return (not not sname), err + else + local _, err = call("set", { + config = config, + section = section, + values = { [option] = value } + }) + return (err == nil), ERRSTR[err] + end +end +function set_list(self, config, section, option, value) + if section == nil or option == nil then + return false + elseif value == nil or (type(value) == "table" and #value == 0) then + return self:delete(config, section, option) + elseif type(value) == "table" then + return self:set(config, section, option, value) + else + return self:set(config, section, option, { value }) + end +end +function tset(self, config, section, values) + local _, err = call("set", { + config = config, + section = section, + values = values + }) + return (err == nil), ERRSTR[err] +end +function reorder(self, config, section, index) + local sections + if type(section) == "string" and type(index) == "number" then + local pos = 0 + sections = { } + self:foreach(config, nil, function(s) + if pos == index then + pos = pos + 1 + end + if s[".name"] ~= section then + pos = pos + 1 + sections[pos] = s[".name"] + else + sections[index + 1] = section + end + end) + elseif type(section) == "table" then + sections = section + else + return false, "Invalid argument" + end + local _, err = call("order", { + config = config, + sections = sections + }) + return (err == nil), ERRSTR[err] +end +function delete(self, config, section, option) + local _, err = call("delete", { + config = config, + section = section, + option = option + }) + return (err == nil), ERRSTR[err] +end +function delete_all(self, config, stype, comparator) + local _, err + if type(comparator) == "table" then + _, err = call("delete", { + config = config, + type = stype, + match = comparator + }) + elseif type(comparator) == "function" then + local rv = call("get", { + config = config, + type = stype + }) + + if type(rv) == "table" and type(rv.values) == "table" then + local sname, section + for sname, section in pairs(rv.values) do + if comparator(section) then + _, err = call("delete", { + config = config, + section = sname + }) + end + end + end + elseif comparator == nil then + _, err = call("delete", { + config = config, + type = stype + }) + else + return false, "Invalid argument" + end - + return (err == nil), ERRSTR[err] +end diff --git a/modules/luci-base/luasrc/model/uci.luadoc b/modules/luci-base/luasrc/model/uci.luadoc index 49093c7930..d798b00338 100644 --- a/modules/luci-base/luasrc/model/uci.luadoc +++ b/modules/luci-base/luasrc/model/uci.luadoc @@ -14,224 +14,277 @@ module "luci.model.uci" ---[[ Create a new UCI-Cursor. -@class function -@name cursor -@return UCI-Cursor +@class function +@name cursor +@return UCI-Cursor ]] ---[[ Create a new Cursor initialized to the state directory. -@class function -@name cursor_state -@return UCI cursor +@class function +@name cursor_state +@return UCI cursor ]] ---[[ -Applies UCI configuration changes +Applies UCI configuration changes. -@class function -@name Cursor.apply -@param configlist List of UCI configurations -@param command Don't apply only return the command +If the rollback parameter is set to true, the apply function will invoke the +rollback mechanism which causes the configuration to be automatically reverted +if no confirm() call occurs within a certain timeout. + +The current default timeout is 30s and can be increased using the +"luci.apply.timeout" uci configuration key. + +@class function +@name Cursor.apply +@param rollback Enable rollback mechanism +@return Boolean whether operation succeeded +]] + +---[[ +Confirms UCI apply process. + +If a previous UCI apply with rollback has been invoked using apply(true), +this function confirms the process and cancels the pending rollback timer. + +If no apply with rollback session is active, the function has no effect and +returns with a "No data" error. + +@class function +@name Cursor.confirm +@return Boolean whether operation succeeded +]] + +---[[ +Cancels UCI apply process. + +If a previous UCI apply with rollback has been invoked using apply(true), +this function cancels the process and rolls back the configuration to the +pre-apply state. + +If no apply with rollback session is active, the function has no effect and +returns with a "No data" error. + +@class function +@name Cursor.rollback +@return Boolean whether operation succeeded +]] + +---[[ +Checks whether a pending rollback is scheduled. + +If a previous UCI apply with rollback has been invoked using apply(true), +and has not been confirmed or rolled back yet, this function returns true +and the remaining time until rollback in seconds. If no rollback is pending, +the function returns false. On error, the function returns false and an +additional string describing the error. + +@class function +@name Cursor.rollback_pending +@return Boolean whether rollback is pending +@return Remaining time in seconds ]] ---[[ Delete all sections of a given type that match certain criteria. -@class function -@name Cursor.delete_all +@class function +@name Cursor.delete_all @param config UCI config @param type UCI section type -@param comparator Function that will be called for each section and -returns a boolean whether to delete the current section (optional) +@param comparator Function that will be called for each section and returns + a boolean whether to delete the current section (optional) ]] ---[[ Create a new section and initialize it with data. -@class function -@name Cursor.section -@param config UCI config -@param type UCI section type -@param name UCI section name (optional) -@param values Table of key - value pairs to initialize the section with -@return Name of created section +@class function +@name Cursor.section +@param config UCI config +@param type UCI section type +@param name UCI section name (optional) +@param values Table of key - value pairs to initialize the section with +@return Name of created section ]] ---[[ Updated the data of a section using data from a table. -@class function -@name Cursor.tset -@param config UCI config -@param section UCI section name (optional) -@param values Table of key - value pairs to update the section with +@class function +@name Cursor.tset +@param config UCI config +@param section UCI section name (optional) +@param values Table of key - value pairs to update the section with ]] ---[[ Get a boolean option and return it's value as true or false. -@class function -@name Cursor.get_bool -@param config UCI config -@param section UCI section name -@param option UCI option -@return Boolean +@class function +@name Cursor.get_bool +@param config UCI config +@param section UCI section name +@param option UCI option +@return Boolean ]] ---[[ Get an option or list and return values as table. -@class function -@name Cursor.get_list -@param config UCI config -@param section UCI section name -@param option UCI option -@return table. If the option was not found, you will simply get --- an empty table. +@class function +@name Cursor.get_list +@param config UCI config +@param section UCI section name +@param option UCI option +@return table. If the option was not found, you will simply get an empty + table. ]] ---[[ Get the given option from the first section with the given type. -@class function -@name Cursor.get_first -@param config UCI config -@param type UCI section type -@param option UCI option (optional) -@param default Default value (optional) -@return UCI value +@class function +@name Cursor.get_first +@param config UCI config +@param type UCI section type +@param option UCI option (optional) +@param default Default value (optional) +@return UCI value ]] ---[[ Set given values as list. Setting a list option to an empty list has the same effect as deleting the option. -@class function -@name Cursor.set_list -@param config UCI config -@param section UCI section name -@param option UCI option -@param value value or table. Raw values will become a single item table. -@return Boolean whether operation succeeded +@class function +@name Cursor.set_list +@param config UCI config +@param section UCI section name +@param option UCI option +@param value Value or table. Non-table values will be set as single + item UCI list. +@return Boolean whether operation succeeded ]] ---[[ -Create a sub-state of this cursor. The sub-state is tied to the parent +Create a sub-state of this cursor. + +The sub-state is tied to the parent curser, means it the parent unloads or +loads configs, the sub state will do so as well. -curser, means it the parent unloads or loads configs, the sub state will -do so as well. -@class function -@name Cursor.substate -@return UCI state cursor tied to the parent cursor +@class function +@name Cursor.substate +@return UCI state cursor tied to the parent cursor ]] ---[[ Add an anonymous section. -@class function -@name Cursor.add -@param config UCI config -@param type UCI section type -@return Name of created section +@class function +@name Cursor.add +@param config UCI config +@param type UCI section type +@return Name of created section ]] ---[[ Get a table of saved but uncommitted changes. -@class function -@name Cursor.changes -@param config UCI config -@return Table of changes -@see Cursor.save +@class function +@name Cursor.changes +@param config UCI config +@return Table of changes +@see Cursor.save ]] ---[[ Commit saved changes. -@class function -@name Cursor.commit -@param config UCI config -@return Boolean whether operation succeeded -@see Cursor.revert -@see Cursor.save +@class function +@name Cursor.commit +@param config UCI config +@return Boolean whether operation succeeded +@see Cursor.revert +@see Cursor.save ]] ---[[ Deletes a section or an option. -@class function -@name Cursor.delete -@param config UCI config -@param section UCI section name -@param option UCI option (optional) -@return Boolean whether operation succeeded +@class function +@name Cursor.delete +@param config UCI config +@param section UCI section name +@param option UCI option (optional) +@return Boolean whether operation succeeded ]] ---[[ Call a function for every section of a certain type. -@class function -@name Cursor.foreach -@param config UCI config -@param type UCI section type -@param callback Function to be called -@return Boolean whether operation succeeded +@class function +@name Cursor.foreach +@param config UCI config +@param type UCI section type +@param callback Function to be called +@return Boolean whether operation succeeded ]] ---[[ Get a section type or an option -@class function -@name Cursor.get -@param config UCI config -@param section UCI section name -@param option UCI option (optional) -@return UCI value +@class function +@name Cursor.get +@param config UCI config +@param section UCI section name +@param option UCI option (optional) +@return UCI value ]] ---[[ Get all sections of a config or all values of a section. -@class function -@name Cursor.get_all -@param config UCI config -@param section UCI section name (optional) -@return Table of UCI sections or table of UCI values +@class function +@name Cursor.get_all +@param config UCI config +@param section UCI section name (optional) +@return Table of UCI sections or table of UCI values ]] ---[[ Manually load a config. -@class function -@name Cursor.load -@param config UCI config -@return Boolean whether operation succeeded -@see Cursor.save -@see Cursor.unload +@class function +@name Cursor.load +@param config UCI config +@return Boolean whether operation succeeded +@see Cursor.save +@see Cursor.unload ]] ---[[ Revert saved but uncommitted changes. -@class function -@name Cursor.revert -@param config UCI config -@return Boolean whether operation succeeded -@see Cursor.commit -@see Cursor.save +@class function +@name Cursor.revert +@param config UCI config +@return Boolean whether operation succeeded +@see Cursor.commit +@see Cursor.save ]] ---[[ Saves changes made to a config to make them committable. -@class function -@name Cursor.save -@param config UCI config -@return Boolean whether operation succeeded -@see Cursor.load -@see Cursor.unload +@class function +@name Cursor.save +@param config UCI config +@return Boolean whether operation succeeded +@see Cursor.load +@see Cursor.unload ]] ---[[ @@ -243,57 +296,74 @@ then a named section of the given type is created. When invoked with four arguments `config`, `sectionname`, `optionname` and `optionvalue` then the value of the specified option is set to the given value. -@class function -@name Cursor.set -@param config UCI config -@param section UCI section name -@param option UCI option or UCI section type +@class function +@name Cursor.set +@param config UCI config +@param section UCI section name +@param option UCI option or UCI section type @param value UCI value or nothing if you want to create a section -@return Boolean whether operation succeeded +@return Boolean whether operation succeeded ]] ---[[ Get the configuration directory. -@class function -@name Cursor.get_confdir -@return Configuration directory +@class function +@name Cursor.get_confdir +@return Configuration directory ]] ---[[ Get the directory for uncomitted changes. -@class function -@name Cursor.get_savedir -@return Save directory +@class function +@name Cursor.get_savedir +@return Save directory +]] + +---[[ +Get the effective session ID. + +@class function +@name Cursor.get_session_id +@return String containing the session ID ]] ---[[ Set the configuration directory. -@class function -@name Cursor.set_confdir +@class function +@name Cursor.set_confdir @param directory UCI configuration directory -@return Boolean whether operation succeeded +@return Boolean whether operation succeeded ]] ---[[ Set the directory for uncommited changes. -@class function -@name Cursor.set_savedir +@class function +@name Cursor.set_savedir @param directory UCI changes directory -@return Boolean whether operation succeeded +@return Boolean whether operation succeeded +]] + +---[[ +Set the effective session ID. + +@class function +@name Cursor.set_session_id +@param id String containing the session ID to set +@return Boolean whether operation succeeded ]] ---[[ Discard changes made to a config. -@class function -@name Cursor.unload -@param config UCI config -@return Boolean whether operation succeeded -@see Cursor.load -@see Cursor.save +@class function +@name Cursor.unload +@param config UCI config +@return Boolean whether operation succeeded +@see Cursor.load +@see Cursor.save ]] diff --git a/modules/luci-base/luasrc/sys.lua b/modules/luci-base/luasrc/sys.lua index 115c54d54a..823e20770c 100644 --- a/modules/luci-base/luasrc/sys.lua +++ b/modules/luci-base/luasrc/sys.lua @@ -7,6 +7,7 @@ local table = require "table" local nixio = require "nixio" local fs = require "nixio.fs" local uci = require "luci.model.uci" +local ntm = require "luci.model.network" local luci = {} luci.util = require "luci.util" @@ -86,10 +87,10 @@ end function httpget(url, stream, target) if not target then local source = stream and io.popen or luci.util.exec - return source("wget -qO- '"..url:gsub("'", "").."'") + return source("wget -qO- %s" % luci.util.shellquote(url)) else - return os.execute("wget -qO '%s' '%s'" % - {target:gsub("'", ""), url:gsub("'", "")}) + return os.execute("wget -qO %s %s" % + {luci.util.shellquote(target), luci.util.shellquote(url)}) end end @@ -137,17 +138,22 @@ local function _nethints(what, callback) luci.ip.neighbors(nil, function(neigh) if neigh.mac and neigh.family == 4 then - _add(what, neigh.mac:upper(), neigh.dest:string(), nil, nil) + _add(what, neigh.mac:string(), neigh.dest:string(), nil, nil) elseif neigh.mac and neigh.family == 6 then - _add(what, neigh.mac:upper(), nil, neigh.dest:string(), nil) + _add(what, neigh.mac:string(), nil, neigh.dest:string(), nil) end end) if fs.access("/etc/ethers") then for e in io.lines("/etc/ethers") do - mac, ip = e:match("^([a-f0-9]%S+) (%S+)") - if mac and ip then - _add(what, mac:upper(), ip, nil, nil) + mac, name = e:match("^([a-fA-F0-9:-]+)%s+(%S+)") + mac = luci.ip.checkmac(mac) + if mac and name then + if luci.ip.checkip4(name) then + _add(what, mac, name, nil, nil) + else + _add(what, mac, nil, nil, name) + end end end end @@ -157,8 +163,9 @@ local function _nethints(what, callback) if s.leasefile and fs.access(s.leasefile) then for e in io.lines(s.leasefile) do mac, ip, name = e:match("^%d+ (%S+) (%S+) (%S+)") + mac = luci.ip.checkmac(mac) if mac and ip then - _add(what, mac:upper(), ip, nil, name ~= "*" and name) + _add(what, mac, ip, nil, name ~= "*" and name) end end end @@ -168,7 +175,10 @@ local function _nethints(what, callback) cur:foreach("dhcp", "host", function(s) for mac in luci.util.imatch(s.mac) do - _add(what, mac:upper(), s.ip, nil, s.name) + mac = luci.ip.checkmac(mac) + if mac then + _add(what, mac, s.ip, nil, s.name) + end end end) @@ -433,55 +443,30 @@ function user.checkpasswd(username, pass) end function user.setpasswd(username, password) - if password then - password = password:gsub("'", [['"'"']]) - end - - if username then - username = username:gsub("'", [['"'"']]) - end - - return os.execute( - "(echo '" .. password .. "'; sleep 1; echo '" .. password .. "') | " .. - "passwd '" .. username .. "' >/dev/null 2>&1" - ) + return os.execute("(echo %s; sleep 1; echo %s) | passwd %s >/dev/null 2>&1" %{ + luci.util.shellquote(password), + luci.util.shellquote(password), + luci.util.shellquote(username) + }) end wifi = {} function wifi.getiwinfo(ifname) - local stat, iwinfo = pcall(require, "iwinfo") - - if ifname then - local d, n = ifname:match("^(%w+)%.network(%d+)") - local wstate = luci.util.ubus("network.wireless", "status") or { } - - d = d or ifname - n = n and tonumber(n) or 1 - - if type(wstate[d]) == "table" and - type(wstate[d].interfaces) == "table" and - type(wstate[d].interfaces[n]) == "table" and - type(wstate[d].interfaces[n].ifname) == "string" - then - ifname = wstate[d].interfaces[n].ifname - else - ifname = d - end + ntm.init() - local t = stat and iwinfo.type(ifname) - local x = t and iwinfo[t] or { } - return setmetatable({}, { - __index = function(t, k) - if k == "ifname" then - return ifname - elseif x[k] then - return x[k](ifname) - end - end - }) + local wnet = ntm:get_wifinet(ifname) + if wnet and wnet.iwinfo then + return wnet.iwinfo end + + local wdev = ntm:get_wifidev(ifname) + if wdev and wdev.iwinfo then + return wdev.iwinfo + end + + return { ifname = ifname } end diff --git a/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua b/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua index 48ae5747c0..47cb901a5b 100644 --- a/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua +++ b/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua @@ -51,7 +51,7 @@ TZ = { { 'Africa/Nouakchott', 'GMT0' }, { 'Africa/Ouagadougou', 'GMT0' }, { 'Africa/Porto-Novo', 'WAT-1' }, - { 'Africa/Sao Tome', 'GMT0' }, + { 'Africa/Sao Tome', 'WAT-1' }, { 'Africa/Tripoli', 'EET-2' }, { 'Africa/Tunis', 'CET-1' }, { 'Africa/Windhoek', 'CAT-2' }, @@ -85,7 +85,7 @@ TZ = { { 'America/Bogota', '<-05>5' }, { 'America/Boise', 'MST7MDT,M3.2.0,M11.1.0' }, { 'America/Cambridge Bay', 'MST7MDT,M3.2.0,M11.1.0' }, - { 'America/Campo Grande', '<-04>4<-03>,M10.3.0/0,M2.3.0/0' }, + { 'America/Campo Grande', '<-04>4<-03>,M11.1.0/0,M2.3.0/0' }, { 'America/Cancun', 'EST5' }, { 'America/Caracas', '<-04>4' }, { 'America/Cayenne', '<-03>3' }, @@ -94,7 +94,7 @@ TZ = { { 'America/Chihuahua', 'MST7MDT,M4.1.0,M10.5.0' }, { 'America/Costa Rica', 'CST6' }, { 'America/Creston', 'MST7' }, - { 'America/Cuiaba', '<-04>4<-03>,M10.3.0/0,M2.3.0/0' }, + { 'America/Cuiaba', '<-04>4<-03>,M11.1.0/0,M2.3.0/0' }, { 'America/Curacao', 'AST4' }, { 'America/Danmarkshavn', 'GMT0' }, { 'America/Dawson', 'PST8PDT,M3.2.0,M11.1.0' }, @@ -181,7 +181,7 @@ TZ = { { 'America/Santarem', '<-03>3' }, { 'America/Santiago', '<-04>4<-03>,M8.2.6/24,M5.2.6/24' }, { 'America/Santo Domingo', 'AST4' }, - { 'America/Sao Paulo', '<-03>3<-02>,M10.3.0/0,M2.3.0/0' }, + { 'America/Sao Paulo', '<-03>3<-02>,M11.1.0/0,M2.3.0/0' }, { 'America/Scoresbysund', '<-01>1<+00>,M3.5.0/0,M10.5.0/1' }, { 'America/Sitka', 'AKST9AKDT,M3.2.0,M11.1.0' }, { 'America/St Barthelemy', 'AST4' }, @@ -202,7 +202,7 @@ TZ = { { 'America/Winnipeg', 'CST6CDT,M3.2.0,M11.1.0' }, { 'America/Yakutat', 'AKST9AKDT,M3.2.0,M11.1.0' }, { 'America/Yellowknife', 'MST7MDT,M3.2.0,M11.1.0' }, - { 'Antarctica/Casey', '<+11>-11' }, + { 'Antarctica/Casey', '<+08>-8' }, { 'Antarctica/Davis', '<+07>-7' }, { 'Antarctica/DumontDUrville', '<+10>-10' }, { 'Antarctica/Macquarie', '<+11>-11' }, @@ -239,8 +239,8 @@ TZ = { { 'Asia/Dubai', '<+04>-4' }, { 'Asia/Dushanbe', '<+05>-5' }, { 'Asia/Famagusta', 'EET-2EEST,M3.5.0/3,M10.5.0/4' }, - { 'Asia/Gaza', 'EET-2EEST,M3.5.6/1,M10.5.6/1' }, - { 'Asia/Hebron', 'EET-2EEST,M3.5.6/1,M10.5.6/1' }, + { 'Asia/Gaza', 'EET-2EEST,M3.4.6/1,M10.5.6/1' }, + { 'Asia/Hebron', 'EET-2EEST,M3.4.6/1,M10.5.6/1' }, { 'Asia/Ho Chi Minh', '<+07>-7' }, { 'Asia/Hong Kong', 'HKT-8' }, { 'Asia/Hovd', '<+07>-7' }, diff --git a/modules/luci-base/luasrc/tools/status.lua b/modules/luci-base/luasrc/tools/status.lua index 95ff46df15..06a9ad4154 100644 --- a/modules/luci-base/luasrc/tools/status.lua +++ b/modules/luci-base/luasrc/tools/status.lua @@ -4,6 +4,7 @@ module("luci.tools.status", package.seeall) local uci = require "luci.model.uci".cursor() +local ipc = require "luci.ip" local function dhcp_leases_common(family) local rv = { } @@ -31,7 +32,7 @@ local function dhcp_leases_common(family) if family == 4 and not ip:match(":") then rv[#rv+1] = { expires = (expire ~= 0) and os.difftime(expire, os.time()), - macaddr = mac, + macaddr = ipc.checkmac(mac) or "00:00:00:00:00:00", ipaddr = ip, hostname = (name ~= "*") and name } @@ -74,19 +75,9 @@ local function dhcp_leases_common(family) hostname = (name ~= "-") and name } elseif ip and iaid == "ipv4" and family == 4 then - local mac, mac1, mac2, mac3, mac4, mac5, mac6 - if duid and type(duid) == "string" then - mac1, mac2, mac3, mac4, mac5, mac6 = duid:match("^(%x%x)(%x%x)(%x%x)(%x%x)(%x%x)(%x%x)$") - end - if not (mac1 and mac2 and mac3 and mac4 and mac5 and mac6) then - mac = "FF:FF:FF:FF:FF:FF" - else - mac = mac1..":"..mac2..":"..mac3..":"..mac4..":"..mac5..":"..mac6 - end rv[#rv+1] = { expires = (expire >= 0) and os.difftime(expire, os.time()), - macaddr = duid, - macaddr = mac:lower(), + macaddr = ipc.checkmac(duid:gsub("^(%x%x)(%x%x)(%x%x)(%x%x)(%x%x)(%x%x)$", "%1:%2:%3:%4:%5:%6")) or "00:00:00:00:00:00", ipaddr = ip, hostname = (name ~= "-") and name } @@ -196,7 +187,9 @@ function switch_status(devs) local switches = { } for dev in devs:gmatch("[^%s,]+") do local ports = { } - local swc = io.popen("swconfig dev %q show" % dev, "r") + local swc = io.popen("swconfig dev %s show" + % luci.util.shellquote(dev), "r") + if swc then local l repeat diff --git a/modules/luci-base/luasrc/util.lua b/modules/luci-base/luasrc/util.lua index 0e7334be87..ce42af2fb0 100644 --- a/modules/luci-base/luasrc/util.lua +++ b/modules/luci-base/luasrc/util.lua @@ -10,6 +10,7 @@ local string = require "string" local coroutine = require "coroutine" local tparser = require "luci.template.parser" local json = require "luci.jsonc" +local lhttp = require "lucihttp" local _ubus = require "ubus" local _ubus_connection = nil @@ -160,10 +161,33 @@ function pcdata(value) return value and tparser.pcdata(tostring(value)) end +function urlencode(value) + if value ~= nil then + local str = tostring(value) + return lhttp.urlencode(str, lhttp.ENCODE_IF_NEEDED + lhttp.ENCODE_FULL) + or str + end + return nil +end + +function urldecode(value, decode_plus) + if value ~= nil then + local flag = decode_plus and lhttp.DECODE_PLUS or 0 + local str = tostring(value) + return lhttp.urldecode(str, lhttp.DECODE_IF_NEEDED + flag) + or str + end + return nil +end + function striptags(value) return value and tparser.striptags(tostring(value)) end +function shellquote(value) + return string.format("'%s'", string.gsub(value or "", "'", "'\\''")) +end + -- for bash, ash and similar shells single-quoted strings are taken -- literally except for single quotes (which terminate the string) -- (and the exception noted below for dash (-) at the start of a @@ -383,16 +407,6 @@ function clone(object, deep) end -function dtable() - return setmetatable({}, { __index = - function(tbl, key) - return rawget(tbl, key) - or rawget(rawset(tbl, key, dtable()), key) - end - }) -end - - -- Serialize the contents of a table value. function _serialize_table(t, seen) assert(not seen[t], "Recursion detected.") @@ -617,6 +631,20 @@ function execl(command) return data end + +local ubus_codes = { + "INVALID_COMMAND", + "INVALID_ARGUMENT", + "METHOD_NOT_FOUND", + "NOT_FOUND", + "NO_DATA", + "PERMISSION_DENIED", + "TIMEOUT", + "NOT_SUPPORTED", + "UNKNOWN_ERROR", + "CONNECTION_FAILED" +} + function ubus(object, method, data) if not _ubus_connection then _ubus_connection = _ubus.connect() @@ -627,7 +655,8 @@ function ubus(object, method, data) if type(data) ~= "table" then data = { } end - return _ubus_connection:call(object, method, data) + local rv, err = _ubus_connection:call(object, method, data) + return rv, err, ubus_codes[err] elseif object then return _ubus_connection:signatures(object) else @@ -652,10 +681,11 @@ end function checklib(fullpathexe, wantedlib) local fs = require "nixio.fs" local haveldd = fs.access('/usr/bin/ldd') - if not haveldd then + local haveexe = fs.access(fullpathexe) + if not haveldd or not haveexe then return false end - local libs = exec("/usr/bin/ldd " .. fullpathexe) + local libs = exec(string.format("/usr/bin/ldd %s", shellquote(fullpathexe))) if not libs then return false end diff --git a/modules/luci-base/luasrc/util.luadoc b/modules/luci-base/luasrc/util.luadoc index 805eeb7f8e..c4f28d039a 100644 --- a/modules/luci-base/luasrc/util.luadoc +++ b/modules/luci-base/luasrc/util.luadoc @@ -15,126 +15,164 @@ Class can be instantiated by calling them. All parameters will be passed to the __init__ function of this class - if such a function exists. The __init__ function must be used to set any object parameters that are not shared with other objects of this class. Any return values will be ignored. -@class function -@name class -@param base The base class to inherit from (optional) -@return A class object -@see instanceof -@see clone + +@class function +@name class +@param base The base class to inherit from (optional) +@return A class object +@see instanceof +@see clone ]] ---[[ Test whether the given object is an instance of the given class. -@class function -@name instanceof -@param object Object instance +@class function +@name instanceof +@param object Object instance @param class Class object to test against -@return Boolean indicating whether the object is an instance +@return Boolean indicating whether the object is an instance @see class @see clone ]] ---[[ Create a new or get an already existing thread local store associated with +the current active coroutine. -the current active coroutine. A thread local store is private a table object +A thread local store is private a table object whose values can't be accessed from outside of the running coroutine. -@class function -@name threadlocal -@return Table value representing the corresponding thread local store + +@class function +@name threadlocal +@return Table value representing the corresponding thread local store ]] ---[[ Write given object to stderr. -@class function -@name perror -@param obj Value to write to stderr -@return Boolean indicating whether the write operation was successful +@class function +@name perror +@param obj Value to write to stderr +@return Boolean indicating whether the write operation was successful ]] ---[[ Recursively dumps a table to stdout, useful for testing and debugging. -@class function -@name dumptable -@param t Table value to dump -@param maxdepth Maximum depth -@return Always nil +@class function +@name dumptable +@param t Table value to dump +@param maxdepth Maximum depth +@return Always nil ]] ---[[ Create valid XML PCDATA from given string. -@class function -@name pcdata -@param value String value containing the data to escape -@return String value containing the escaped data +@class function +@name pcdata +@param value String value containing the data to escape +@return String value containing the escaped data +]] + +---[[ +Decode an URL-encoded string - optionally decoding the "+" sign to space. + +@class function +@name urldecode +@param str Input string in x-www-urlencoded format +@param decode_plus Decode "+" signs to spaces if true (optional) +@return The decoded string +@see urlencode +]] + +---[[ +URL-encode given string. + +@class function +@name urlencode +@param str String to encode +@return String containing the encoded data +@see urldecode ]] ---[[ Strip HTML tags from given string. -@class function -@name striptags -@param value String containing the HTML text -@return String with HTML tags stripped of +@class function +@name striptags +@param value String containing the HTML text +@return String with HTML tags stripped of ]] ---[[ -Splits given string on a defined separator sequence and return a table +Safely quote value for use in shell commands. + +@class function +@name shellquote +@param value String containing the value to quote +@return Single-quote enclosed string with embedded quotes escaped +]] -containing the resulting substrings. The optional max parameter specifies -the number of bytes to process, regardless of the actual length of the given -string. The optional last parameter, regex, specifies whether the separator -sequence is interpreted as regular expression. -@class function -@name split -@param str String value containing the data to split up -@param pat String with separator pattern (optional, defaults to "\n") -@param max Maximum times to split (optional) -@param regex Boolean indicating whether to interpret the separator +---[[ +Splits given string on a defined separator sequence and return a table +containing the resulting substrings. + +The optional max parameter specifies the number of bytes to process, +regardless of the actual length of the given string. The optional last +parameter, regex, specifies whether the separator sequence is +nterpreted as regular expression. + +@class function +@name split +@param str String value containing the data to split up +@param pat String with separator pattern (optional, defaults to "\n") +@param max Maximum times to split (optional) +@param regex Boolean indicating whether to interpret the separator -- pattern as regular expression (optional, default is false) -@return Table containing the resulting substrings +@return Table containing the resulting substrings ]] ---[[ Remove leading and trailing whitespace from given string value. -@class function -@name trim -@param str String value containing whitespace padded data -@return String value with leading and trailing space removed +@class function +@name trim +@param str String value containing whitespace padded data +@return String value with leading and trailing space removed ]] ---[[ -Count the occurences of given substring in given string. +Count the occurrences of given substring in given string. -@class function -@name cmatch -@param str String to search in -@param pattern String containing pattern to find -@return Number of found occurences +@class function +@name cmatch +@param str String to search in +@param pattern String containing pattern to find +@return Number of found occurrences ]] ---[[ -Return a matching iterator for the given value. The iterator will return +Return a matching iterator for the given value. + +The iterator will return one token per invocation, the tokens are separated by +whitespace. If the input value is a table, it is transformed into a string first. +A nil value will result in a valid interator which aborts with the first invocation. -one token per invocation, the tokens are separated by whitespace. If the -input value is a table, it is transformed into a string first. A nil value -will result in a valid interator which aborts with the first invocation. -@class function -@name imatch -@param val The value to scan (table, string or nil) -@return Iterator which returns one token per call +@class function +@name imatch +@param val The value to scan (table, string or nil) +@return Iterator which returns one token per call ]] ---[[ Parse certain units from the given string and return the canonical integer +value or 0 if the unit is unknown. -value or 0 if the unit is unknown. Upper- or lower case is irrelevant. +Upper- or lower case is irrelevant. Recognized units are: + -- o "y" - one year (60*60*24*366) o "m" - one month (60*60*24*31) o "w" - one week (60*60*24*7) @@ -147,232 +185,229 @@ Recognized units are: o "kib" - one si kilobyte (1000) o "mib" - one si megabyte (1000*1000) o "gib" - one si gigabyte (1000*1000*1000) -@class function -@name parse_units -@param ustr String containing a numerical value with trailing unit -@return Number containing the canonical value + +@class function +@name parse_units +@param ustr String containing a numerical value with trailing unit +@return Number containing the canonical value ]] ---[[ Appends numerically indexed tables or single objects to a given table. -@class function -@name append -@param src Target table -@param ... Objects to insert -@return Target table +@class function +@name append +@param src Target table +@param ... Objects to insert +@return Target table ]] ---[[ Combines two or more numerically indexed tables and single objects into one table. -@class function -@name combine -@param tbl1 Table value to combine -@param tbl2 Table value to combine -@param ... More tables to combine -@return Table value containing all values of given tables +@class function +@name combine +@param tbl1 Table value to combine +@param tbl2 Table value to combine +@param ... More tables to combine +@return Table value containing all values of given tables ]] ---[[ Checks whether the given table contains the given value. -@class function -@name contains -@param table Table value -@param value Value to search within the given table -@return number indicating the first index at which the given value occurs --- within table or false. +@class function +@name contains +@param table Table value +@param value Value to search within the given table +@return Number indicating the first index at which the given value occurs +-- within table or false. ]] ---[[ Update values in given table with the values from the second given table. Both table are - in fact - merged together. -@class function -@name update + +@class function +@name update @param t Table which should be updated -@param updates Table containing the values to update -@return Always nil +@param updates Table containing the values to update +@return Always nil ]] ---[[ Retrieve all keys of given associative table. -@class function -@name keys -@param t Table to extract keys from -@return Sorted table containing the keys +@class function +@name keys +@param t Table to extract keys from +@return Sorted table containing the keys ]] ---[[ Clones the given object and return it's copy. -@class function -@name clone -@param object Table value to clone -@param deep Boolean indicating whether to do recursive cloning -@return Cloned table value -]] - ----[[ -Create a dynamic table which automatically creates subtables. - -@class function -@name dtable -@return Dynamic Table +@class function +@name clone +@param object Table value to clone +@param deep Boolean indicating whether to do recursive cloning +@return Cloned table value ]] ---[[ Recursively serialize given data to lua code, suitable for restoring - with loadstring(). -@class function -@name serialize_data -@param val Value containing the data to serialize -@return String value containing the serialized code -@see restore_data -@see get_bytecode + +@class function +@name serialize_data +@param val Value containing the data to serialize +@return String value containing the serialized code +@see restore_data +@see get_bytecode ]] ---[[ Restore data previously serialized with serialize_data(). -@class function -@name restore_data -@param str String containing the data to restore -@return Value containing the restored data structure -@see serialize_data -@see get_bytecode +@class function +@name restore_data +@param str String containing the data to restore +@return Value containing the restored data structure +@see serialize_data +@see get_bytecode ]] ---[[ Return the current runtime bytecode of the given data. The byte code - will be stripped before it is returned. -@class function -@name get_bytecode -@param val Value to return as bytecode -@return String value containing the bytecode of the given data + +@class function +@name get_bytecode +@param val Value to return as bytecode +@return String value containing the bytecode of the given data ]] ---[[ -Strips unnescessary lua bytecode from given string. Information like line +Strips unnescessary lua bytecode from given string. + +Information like line numbers and debugging numbers will be discarded. +Original version by Peter Cawley (http://lua-users.org/lists/lua-l/2008-02/msg01158.html) -numbers and debugging numbers will be discarded. Original version by -Peter Cawley (http://lua-users.org/lists/lua-l/2008-02/msg01158.html) -@class function -@name strip_bytecode -@param code String value containing the original lua byte code -@return String value containing the stripped lua byte code +@class function +@name strip_bytecode +@param code String value containing the original lua byte code +@return String value containing the stripped lua byte code ]] ---[[ Return a key, value iterator which returns the values sorted according to - the provided callback function. -@class function -@name spairs -@param t The table to iterate -@param f A callback function to decide the order of elements -@return Function value containing the corresponding iterator + +@class function +@name spairs +@param t The table to iterate +@param f A callback function to decide the order of elements +@return Function value containing the corresponding iterator ]] ---[[ Return a key, value iterator for the given table. The table pairs are sorted by key. -@class function -@name kspairs -@param t The table to iterate -@return Function value containing the corresponding iterator + +@class function +@name kspairs +@param t The table to iterate +@return Function value containing the corresponding iterator ]] ---[[ Return a key, value iterator for the given table. The table pairs are sorted by value. -@class function -@name vspairs -@param t The table to iterate -@return Function value containing the corresponding iterator + +@class function +@name vspairs +@param t The table to iterate +@return Function value containing the corresponding iterator ]] ---[[ Test whether the current system is operating in big endian mode. -@class function -@name bigendian -@return Boolean value indicating whether system is big endian +@class function +@name bigendian +@return Boolean value indicating whether system is big endian ]] ---[[ Execute given commandline and gather stdout. -@class function -@name exec -@param command String containing command to execute -@return String containing the command's stdout +@class function +@name exec +@param command String containing command to execute +@return String containing the command's stdout ]] ---[[ Return a line-buffered iterator over the output of given command. -@class function -@name execi -@param command String containing the command to execute -@return Iterator +@class function +@name execi +@param command String containing the command to execute +@return Iterator ]] ---[[ Issue an ubus call. -@class function -@name ubus +@class function +@name ubus @param object String containing the ubus object to call @param method String containing the ubus method to call @param values Table containing the values to pass -@return Table containin the ubus result +@return Table containin the ubus result ]] ---[[ Convert data structure to JSON -@class function -@name serialize_json -@param data The data to serialize -@param writer A function to write a chunk of JSON data (optional) -@return String containing the JSON if called without write callback +@class function +@name serialize_json +@param data The data to serialize +@param writer A function to write a chunk of JSON data (optional) +@return String containing the JSON if called without write callback ]] ---[[ Returns the absolute path to LuCI base directory. -@class function -@name libpath -@return String containing the directory path +@class function +@name libpath +@return String containing the directory path ]] ---[[ This is a coroutine-safe drop-in replacement for Lua's "xpcall"-function -@class function -@name coxpcall -@param f Lua function to be called protected -@param err Custom error handler -@param ... Parameters passed to the function -@return A boolean whether the function call succeeded and the return --- values of either the function or the error handler +@class function +@name coxpcall +@param f Lua function to be called protected +@param err Custom error handler +@param ... Parameters passed to the function +@return A boolean whether the function call succeeded and the return +-- values of either the function or the error handler ]] ---[[ This is a coroutine-safe drop-in replacement for Lua's "pcall"-function -@class function -@name copcall -@param f Lua function to be called protected -@param ... Parameters passed to the function -@return A boolean whether the function call succeeded and the returns --- values of the function or the error object +@class function +@name copcall +@param f Lua function to be called protected +@param ... Parameters passed to the function +@return A boolean whether the function call succeeded and the returns +-- values of the function or the error object ]] diff --git a/modules/luci-base/luasrc/view/cbi/apply_widget.htm b/modules/luci-base/luasrc/view/cbi/apply_widget.htm new file mode 100644 index 0000000000..543ef0b80b --- /dev/null +++ b/modules/luci-base/luasrc/view/cbi/apply_widget.htm @@ -0,0 +1,181 @@ +<% export("cbi_apply_widget", function(redirect_ok) -%> +<style type="text/css"> + #cbi_apply_status { + display: flex; + flex-wrap: wrap; + min-height: 32px; + align-items: center; + margin: 1.5em 0 1.5em 0; + } + + #cbi_apply_status > h4, + #cbi_apply_status > p, + #cbi_apply_status > div { + flex-basis: 100%; + } + + #cbi_apply_status > img { + margin-right: 1em; + flex-basis: 32px; + } + + #cbi_apply_status + script + .cbi-section { + margin-top: -1em; + } + + .alert-message.notice { + background: linear-gradient(#fff 0%, #eee 100%); + } +</style> + +<script type="text/javascript" src="<%=resource%>/cbi.js"></script> +<script type="text/javascript">//<![CDATA[ + var xhr = new XHR(), + stat, indicator, + uci_apply_auth = { sid: '<%=luci.dispatcher.context.authsession%>', token: '<%=token%>' }, + uci_apply_rollback = <%=math.max(luci.config and luci.config.apply and luci.config.apply.rollback or 30, 30)%>, + 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)%>; + + function uci_rollback(checked) { + if (checked) { + stat.classList.remove('notice'); + stat.classList.add('warning'); + stat.innerHTML = '<img src="<%=resource%>/icons/loading.gif" alt="" style="vertical-align:middle" /> ' + + '<%:Failed to confirm apply within %ds, waiting for rollback…%>'.format(uci_apply_rollback); + + var call = function(r) { + if (r.status === 204) { + stat.innerHTML = '<h4><%:Configuration has been rolled back!%></h4>' + + '<p><%:The device could not be reached within %d seconds after applying the pending changes, which caused the configuration to be rolled back for safety reasons. If you believe that the configuration changes are correct nonetheless, perform an unchecked configuration apply. Alternatively, you can dismiss this warning and edit changes before attempting to apply again, or revert all pending changes to keep the currently working configuration state.%></p>'.format(uci_apply_rollback) + + '<div class="right">' + + '<input type="button" class="btn" onclick="this.parentNode.parentNode.style.display=\'none\'" value="<%:Dismiss%>" /> ' + + '<input type="button" class="btn" onclick="uci_revert()" value="<%:Revert changes%>" /> ' + + '<input type="button" class="btn danger" onclick="uci_apply(false)" value="<%:Apply unchecked%>" />' + + '</div>'; + + return; + } + + xhr.post('<%=url("admin/uci/confirm")%>', uci_apply_auth, call, uci_apply_timeout * 1000); + }; + + call({ status: 0 }); + } + else { + stat.classList.remove('notice'); + stat.classList.add('warning'); + stat.innerHTML = '<h4><%:Device unreachable!%></h4>' + + '<p><%:Could not regain access to the device after applying the configuration changes. You might need to reconnect if you modified network related settings such as the IP address or wireless security credentials.%></p>'; + } + } + + function uci_confirm(checked, deadline) { + var tt; + var ts = Date.now(); + + stat = document.getElementById('cbi_apply_status'); + stat.style.display = ''; + stat.classList.remove('warning'); + stat.classList.add('notice'); + + indicator = document.querySelector('.uci_change_indicator'); + + var call = function(r) { + if (Date.now() >= deadline) { + uci_rollback(checked); + return; + } + else if (r && (r.status === 200 || r.status === 204)) { + if (indicator) + indicator.style.display = 'none'; + + stat.innerHTML = '<%:Configuration has been applied.%>'; + + window.clearTimeout(tt); + window.setTimeout(function() { + stat.style.display = 'none'; + <% if redirect_ok then %>location.href = decodeURIComponent('<%=luci.util.urlencode(redirect_ok)%>');<% end %> + }, uci_apply_display * 1000); + + return; + } + + xhr.post('<%=url("admin/uci/confirm")%>', uci_apply_auth, call, uci_apply_timeout * 1000); + }; + + var tick = function() { + var now = Date.now(); + + stat.innerHTML = '<img src="<%=resource%>/icons/loading.gif" alt="" style="vertical-align:middle" /> ' + + '<%:Waiting for configuration to get applied… %ds%>'.format(Math.max(Math.floor((deadline - Date.now()) / 1000), 0)); + + if (now >= deadline) + return; + + tt = window.setTimeout(tick, 1000 - (now - ts)); + ts = now; + }; + + tick(); + + /* wait a few seconds for the settings to become effective */ + window.setTimeout(call, Math.max(uci_apply_holdoff * 1000 - ((ts + uci_apply_rollback * 1000) - deadline), 1)); + } + + function uci_apply(checked) { + stat = document.getElementById('cbi_apply_status'); + stat.style.display = ''; + stat.classList.remove('warning'); + stat.classList.add('notice'); + stat.innerHTML = '<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) { + if (r.status === (checked ? 200 : 204)) { + uci_confirm(checked, Date.now() + uci_apply_rollback * 1000); + } + else if (checked && r.status === 204) { + stat.innerHTML = '<%:There are no changes to apply.%>'; + window.setTimeout(function() { + stat.style.display = 'none'; + <% if redirect_ok then %>location.href = decodeURIComponent('<%=luci.util.urlencode(redirect_ok)%>');<% end %> + }, uci_apply_display * 1000); + } + else { + stat.classList.add('warning'); + stat.classList.remove('notice'); + stat.innerHTML = '<%_Apply request failed with status <code>%h</code>%>'.format(r.responseText || r.statusText || r.status); + } + }); + } + + function uci_revert() { + stat = document.getElementById('cbi_apply_status'); + stat.style.display = ''; + stat.classList.remove('warning'); + stat.classList.add('notice'); + stat.innerHTML = '<img src="<%=resource%>/icons/loading.gif" alt="" style="vertical-align:middle" /> ' + + '<%:Reverting configuration…%>'; + + xhr.post('<%=url("admin/uci/revert")%>', uci_apply_auth, function(r) { + if (r.status === 200) { + stat.innerHTML = '<%:Changes have been reverted.%>'; + window.setTimeout(function() { + <% if redirect_ok then -%> + location.href = decodeURIComponent('<%=luci.util.urlencode(redirect_ok)%>'); + <%- else -%> + window.location = window.location.href.split('#')[0]; + <%- end %> + }, uci_apply_display * 1000); + } + else { + stat.classList.add('warning'); + stat.classList.remove('notice'); + stat.innerHTML = '<%_Revert request failed with status <code>%h</code>%>'.format(r.statusText || r.status); + } + }); + } +//]]></script> +<%- end) %> diff --git a/modules/luci-base/luasrc/view/cbi/apply_xhr.htm b/modules/luci-base/luasrc/view/cbi/apply_xhr.htm deleted file mode 100644 index daa57c1db7..0000000000 --- a/modules/luci-base/luasrc/view/cbi/apply_xhr.htm +++ /dev/null @@ -1,43 +0,0 @@ -<% export("cbi_apply_xhr", function(id, configs, redirect) -%> -<fieldset class="cbi-section" id="cbi-apply-<%=id%>"> - <legend><%:Applying changes%></legend> - <script type="text/javascript">//<![CDATA[ - var apply_xhr = new XHR(); - - apply_xhr.post('<%=url('servicectl/restart', table.concat(configs, ","))%>', { token: '<%=token%>' }, - function() { - var checkfinish = function() { - apply_xhr.get('<%=url('servicectl/status')%>', null, - function(x) { - if( x.responseText == 'finish' ) - { - var e = document.getElementById('cbi-apply-<%=id%>-status'); - if( e ) - { - e.innerHTML = '<%:Configuration applied.%>'; - window.setTimeout(function() { - e.parentNode.style.display = 'none'; - <% if redirect then %>location.href='<%=redirect%>';<% end %> - }, 1000); - } - } - else - { - var e = document.getElementById('cbi-apply-<%=id%>-status'); - if( e && x.responseText ) e.innerHTML = x.responseText; - - window.setTimeout(checkfinish, 1000); - } - } - ); - } - - window.setTimeout(checkfinish, 1000); - } - ); - //]]></script> - - <img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> - <span id="cbi-apply-<%=id%>-status"><%:Waiting for changes to be applied...%></span> -</fieldset> -<%- end) %> diff --git a/modules/luci-base/luasrc/view/cbi/browser.htm b/modules/luci-base/luasrc/view/cbi/browser.htm index a18120141d..2abc975e8d 100644 --- a/modules/luci-base/luasrc/view/cbi/browser.htm +++ b/modules/luci-base/luasrc/view/cbi/browser.htm @@ -2,6 +2,7 @@ <%+cbi/valueheader%> <input class="cbi-input-text" type="text"<%= attr("value", v) .. attr("name", cbid) .. attr("id", cbid) %> /> <script type="text/javascript"> +cbi_init() cbi_browser_init('<%=cbid%>', '<%=resource%>', '<%=url('admin/filebrowser')%>'<%=self.default_path and ", '"..self.default_path.."'"%>); </script> <%+cbi/valuefooter%> diff --git a/modules/luci-base/luasrc/view/cbi/filebrowser.htm b/modules/luci-base/luasrc/view/cbi/filebrowser.htm index a79beebba7..806b1b5f40 100644 --- a/modules/luci-base/luasrc/view/cbi/filebrowser.htm +++ b/modules/luci-base/luasrc/view/cbi/filebrowser.htm @@ -22,9 +22,9 @@ <script type="text/javascript"> function callback(path) { if( window.opener ) { - var input = window.opener.document.getElementById('<%=luci.http.formvalue('field')%>'); + var input = window.opener.document.getElementById(decodeURIComponent('<%=luci.http.urlencode(luci.http.formvalue('field'))%>')); if( input ) { - input.value = path; + input.value = decodeURIComponent(path); window.close(); } } @@ -48,33 +48,44 @@ end end - local filepath = table.concat( path, '/' ) - local filestat = nixio.fs.stat( filepath ) - local baseurl = luci.dispatcher.build_url('admin', 'filebrowser') + local filestat = nixio.fs.stat(table.concat(path, '/')) + local baseurl = { 'admin', 'filebrowser' } if filestat and filestat.type == "reg" then - table.remove( path, #path ) - filepath = table.concat( path, '/' ) .. '/' - elseif not ( filestat and filestat.type == "dir" ) then - path = { '' } - filepath = '/' + path[#path] = '' + elseif not (filestat and filestat.type == "dir") then + path = { '', '' } else - filepath = filepath .. '/' + path[#path+1] = '' end - local entries = nixio.util.consume((nixio.fs.dir(filepath))) + filepath = table.concat(path, '/') + + local entries = {} + local _, e + for _, e in luci.util.vspairs(nixio.util.consume((nixio.fs.dir(filepath)))) do + local p = filepath .. e + local s = nixio.fs.stat(p) + if s then + entries[#entries+1] = { + name = e, + path = p, + type = s.type + } + end + end -%> - <div id="path"> + <div id="path"> Location: <% for i, dir in ipairs(path) do %> <% if i == 1 then %> - <a href="<%=baseurl%>?field=<%=field%>">(root)</a> + <a href="<%=url(unpack(baseurl))%>?field=<%=luci.http.urlencode(field)%>">(root)</a> <% elseif next(path, i) then %> - <% baseurl = baseurl .. '/' .. dir %> - / <a href="<%=baseurl%>?field=<%=field%>"><%=dir%></a> + <% baseurl[#baseurl+1] = luci.http.urlencode(dir) %> + / <a href="<%=url(unpack(baseurl))%>?field=<%=luci.http.urlencode(field)%>"><%=pcdata(dir)%></a> <% else %> - <% baseurl = baseurl .. '/' .. dir %> - / <%=dir%> + <% baseurl[#baseurl+1] = luci.http.urlencode(dir) %> + / <%=pcdata(dir)%> <% end %> <% end %> </div> @@ -83,23 +94,17 @@ <div id="listing"> <ul> - <% for _, e in luci.util.vspairs(entries) do - local stat = nixio.fs.stat(filepath..e) - if stat and stat.type == 'dir' then - -%> + <% for _, e in ipairs(entries) do if e.type == 'dir' then -%> <li class="dir"> <img src="<%=resource%>/cbi/folder.gif" alt="<%:Directory%>" /> - <a href="<%=baseurl%>/<%=e%>?field=<%=field%>"><%=e%>/</a> + <a href="<%=url(unpack(baseurl))%>/<%=luci.http.urlencode(e.name)%>?field=<%=luci.http.urlencode(field)%>"><%=pcdata(e.name)%>/</a> </li> <% end end -%> - <% for _, e in luci.util.vspairs(entries) do - local stat = nixio.fs.stat(filepath..e) - if stat and stat.type ~= 'dir' then - -%> + <% for _, e in ipairs(entries) do if e.type ~= 'dir' then -%> <li class="file"> <img src="<%=resource%>/cbi/file.gif" alt="<%:File%>" /> - <a href="#" onclick="callback('<%=filepath..e%>')"><%=e%></a> + <a href="#" onclick="callback('<%=luci.http.urlencode(e.path)%>')"><%=pcdata(e.name)%></a> </li> <% end end -%> </ul> diff --git a/modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm b/modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm index 5cb31511f6..b4260707ef 100644 --- a/modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm +++ b/modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm @@ -24,70 +24,72 @@ end -%> -<ul style="margin:0; list-style-type:none; text-align:left"> - <% if self.allowlocal then %> - <li style="padding:0.5em"> - <input class="cbi-input-radio" data-update="click change"<%=attr("type", self.widget or "radio") .. attr("id", cbid .. "_empty") .. attr("name", cbid) .. attr("value", "") .. ifattr(checked[""], "checked", "checked")%> />   - <label<%=attr("for", cbid .. "_empty")%>></label> - <label<%=attr("for", cbid .. "_empty")%> style="background-color:<%=fwm.zone.get_color()%>" class="zonebadge"> - <strong><%:Device%></strong> - <% if self.allowany and self.allowlocal then %>(<%:input%>)<% end %> - </label> - </li> - <% end %> - <% if self.allowany then %> - <li style="padding:0.5em"> - <input class="cbi-input-radio" data-update="click change"<%=attr("type", self.widget or "radio") .. attr("id", cbid .. "_any") .. attr("name", cbid) .. attr("value", "*") .. ifattr(checked["*"], "checked", "checked")%> />   - <label<%=attr("for", cbid .. "_any")%>></label> - <label<%=attr("for", cbid .. "_any")%> style="background-color:<%=fwm.zone.get_color()%>" class="zonebadge"> - <strong><%:Any zone%></strong> - <% if self.allowany and self.allowlocal then %>(<%:forward%>)<% end %> - </label> - </li> - <% end %> - <% - for _, zone in utl.spairs(zones, function(a,b) return (zones[a]:name() < zones[b]:name()) end) do - if zone:name() ~= self.exclude then - selected = selected or (value == zone:name()) - %> - <li style="padding:0.5em"> - <input class="cbi-input-radio" data-update="click change"<%=attr("type", self.widget or "radio") .. attr("id", cbid .. "." .. zone:name()) .. attr("name", cbid) .. attr("value", zone:name()) .. ifattr(checked[zone:name()], "checked", "checked")%> />   - <label<%=attr("for", cbid .. "." .. zone:name())%>></label> - <label<%=attr("for", cbid .. "." .. zone:name())%> style="background-color:<%=zone:get_color()%>" class="zonebadge"> - <strong><%=zone:name()%>:</strong> - <% - local zempty = true - for _, net in ipairs(zone:get_networks()) do - net = nwm:get_network(net) - if net then - zempty = false - %> - <span class="ifacebadge<% if net:name() == self.network then %> ifacebadge-active<% end %>"><%=net:name()%>: +<span> + <ul style="margin:0; list-style-type:none; text-align:left"> + <% if self.allowlocal then %> + <li style="padding:0.5em"> + <input class="cbi-input-radio" data-update="click change"<%=attr("type", self.widget or "radio") .. attr("id", cbid .. "_empty") .. attr("name", cbid) .. attr("value", "") .. ifattr(checked[""], "checked", "checked")%> />   + <label<%=attr("for", cbid .. "_empty")%>></label> + <label<%=attr("for", cbid .. "_empty")%> style="background-color:<%=fwm.zone.get_color()%>" class="zonebadge"> + <strong><%:Device%></strong> + <% if self.allowany and self.allowlocal then %>(<%:input%>)<% end %> + </label> + </li> + <% end %> + <% if self.allowany then %> + <li style="padding:0.5em"> + <input class="cbi-input-radio" data-update="click change"<%=attr("type", self.widget or "radio") .. attr("id", cbid .. "_any") .. attr("name", cbid) .. attr("value", "*") .. ifattr(checked["*"], "checked", "checked")%> />   + <label<%=attr("for", cbid .. "_any")%>></label> + <label<%=attr("for", cbid .. "_any")%> style="background-color:<%=fwm.zone.get_color()%>" class="zonebadge"> + <strong><%:Any zone%></strong> + <% if self.allowany and self.allowlocal then %>(<%:forward%>)<% end %> + </label> + </li> + <% end %> + <% + for _, zone in utl.spairs(zones, function(a,b) return (zones[a]:name() < zones[b]:name()) end) do + if zone:name() ~= self.exclude then + selected = selected or (value == zone:name()) + %> + <li style="padding:0.5em"> + <input class="cbi-input-radio" data-update="click change"<%=attr("type", self.widget or "radio") .. attr("id", cbid .. "." .. zone:name()) .. attr("name", cbid) .. attr("value", zone:name()) .. ifattr(checked[zone:name()], "checked", "checked")%> />   + <label<%=attr("for", cbid .. "." .. zone:name())%>></label> + <label<%=attr("for", cbid .. "." .. zone:name())%> style="background-color:<%=zone:get_color()%>" class="zonebadge"> + <strong><%=zone:name()%>:</strong> <% - local nempty = true - for _, iface in ipairs(net:is_bridge() and net:get_interfaces() or { net:get_interface() }) do - nempty = false - %> - <img<%=attr("title", iface:get_i18n())%> style="width:16px; height:16px; vertical-align:middle" src="<%=resource%>/icons/<%=iface:type()%><%=iface:is_up() and "" or "_disabled"%>.png" /> - <% end %> - <% if nempty then %><em><%:(empty)%></em><% end %> - </span> - <% end end %> - <% if zempty then %><em><%:(empty)%></em><% end %> - </label> - </li> - <% end end %> + local zempty = true + for _, net in ipairs(zone:get_networks()) do + net = nwm:get_network(net) + if net then + zempty = false + %> + <span class="ifacebadge<% if net:name() == self.network then %> ifacebadge-active<% end %>"><%=net:name()%>: + <% + local nempty = true + for _, iface in ipairs(net:is_bridge() and net:get_interfaces() or { net:get_interface() }) do + nempty = false + %> + <img<%=attr("title", iface:get_i18n())%> style="width:16px; height:16px; vertical-align:middle" src="<%=resource%>/icons/<%=iface:type()%><%=iface:is_up() and "" or "_disabled"%>.png" /> + <% end %> + <% if nempty then %><em><%:(empty)%></em><% end %> + </span> + <% end end %> + <% if zempty then %><em><%:(empty)%></em><% end %> + </label> + </li> + <% end end %> - <% if self.widget ~= "checkbox" and not self.nocreate then %> - <li style="padding:0.5em"> - <input class="cbi-input-radio" data-update="click change" type="radio"<%=attr("id", cbid .. "_new") .. attr("name", cbid) .. attr("value", "-") .. ifattr(not selected, "checked", "checked")%> />   - <label<%=attr("for", cbid .. "_new")%>></label> - <div onclick="document.getElementById('<%=cbid%>_new').checked=true" class="zonebadge" style="background-color:<%=fwm.zone.get_color()%>"> - <em><%:unspecified -or- create:%> </em> - <input type="text"<%=attr("name", cbid .. ".newzone") .. ifattr(not selected, "value", luci.http.formvalue(cbid .. ".newzone") or self.default)%> onfocus="document.getElementById('<%=cbid%>_new').checked=true" /> - </div> - </li> - <% end %> -</ul> + <% if self.widget ~= "checkbox" and not self.nocreate then %> + <li style="padding:0.5em"> + <input class="cbi-input-radio" data-update="click change" type="radio"<%=attr("id", cbid .. "_new") .. attr("name", cbid) .. attr("value", "-") .. ifattr(not selected, "checked", "checked")%> />   + <label<%=attr("for", cbid .. "_new")%>></label> + <div onclick="document.getElementById('<%=cbid%>_new').checked=true" class="zonebadge" style="background-color:<%=fwm.zone.get_color()%>"> + <em><%:unspecified -or- create:%> </em> + <input type="text"<%=attr("name", cbid .. ".newzone") .. ifattr(not selected, "value", luci.http.formvalue(cbid .. ".newzone") or self.default)%> onfocus="document.getElementById('<%=cbid%>_new').checked=true" /> + </div> + </li> + <% end %> + </ul> +</span> <%+cbi/valuefooter%> diff --git a/modules/luci-base/luasrc/view/cbi/footer.htm b/modules/luci-base/luasrc/view/cbi/footer.htm index 4d332fd07a..e6acfb0697 100644 --- a/modules/luci-base/luasrc/view/cbi/footer.htm +++ b/modules/luci-base/luasrc/view/cbi/footer.htm @@ -1,6 +1,6 @@ <%- if pageaction then -%> <div class="cbi-page-actions"> - <% if redirect then %> + <% if redirect and not flow.hidebackbtn then %> <div style="float:left"> <input class="cbi-button cbi-button-link" type="button" value="<%:Back to Overview%>" onclick="location.href='<%=pcdata(redirect)%>'" /> </div> diff --git a/modules/luci-base/luasrc/view/cbi/map.htm b/modules/luci-base/luasrc/view/cbi/map.htm index e3210add63..69ef3615a2 100644 --- a/modules/luci-base/luasrc/view/cbi/map.htm +++ b/modules/luci-base/luasrc/view/cbi/map.htm @@ -2,12 +2,23 @@ <div class="errorbox"><%=pcdata(msg)%></div> <%- end end -%> -<%-+cbi/apply_xhr-%> - <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 then cbi_apply_xhr(self.config, parsechain, redirect) 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"> diff --git a/modules/luci-base/luasrc/view/cbi/simpleform.htm b/modules/luci-base/luasrc/view/cbi/simpleform.htm index 78f5c5a544..3b758d70ee 100644 --- a/modules/luci-base/luasrc/view/cbi/simpleform.htm +++ b/modules/luci-base/luasrc/view/cbi/simpleform.htm @@ -52,7 +52,8 @@ <%- if not self.cancel then -%><%-:Cancel-%><%-else-%><%=self.cancel%><%end-%> " /> <% end %> - <script type="text/javascript">cbi_d_update();</script> </div> </form> <% end %> + +<script type="text/javascript">cbi_init();</script> diff --git a/modules/luci-base/luasrc/view/cbi/tblsection.htm b/modules/luci-base/luasrc/view/cbi/tblsection.htm index 26d13f9372..3cb87563f1 100644 --- a/modules/luci-base/luasrc/view/cbi/tblsection.htm +++ b/modules/luci-base/luasrc/view/cbi/tblsection.htm @@ -35,7 +35,7 @@ end <%- else -%> <th> </th> <%- end -%> - <%- end -%> + <%- count = count +1; end -%> <%- for i, k in pairs(self.children) do if not k.optional then -%> <th class="cbi-section-table-cell"<%=width(k)%>> <%- if k.titleref then -%><a title="<%=self.titledesc or translate('Go to relevant configuration page')%>" class="cbi-title-ref" href="<%=k.titleref%>"><%- end -%> @@ -44,7 +44,7 @@ end </th> <%- count = count + 1; end; end; if self.sortable then -%> <th class="cbi-section-table-cell"><%:Sort%></th> - <%- end; if self.extedit or self.addremove then -%> + <%- count = count + 1; end; if self.extedit or self.addremove then -%> <th class="cbi-section-table-cell"> </th> <%- count = count + 1; end -%> </tr> diff --git a/modules/luci-base/luasrc/view/error404.htm b/modules/luci-base/luasrc/view/error404.htm index bc74226830..a762f6038b 100644 --- a/modules/luci-base/luasrc/view/error404.htm +++ b/modules/luci-base/luasrc/view/error404.htm @@ -7,5 +7,5 @@ <%+header%> <h2 name="content">404 <%:Not Found%></h2> <p><%:Sorry, the object you requested was not found.%></p> -<tt><%:Unable to dispatch%>: <%=luci.http.request.env.PATH_INFO%></tt> +<tt><%:Unable to dispatch%>: <%=url(unpack(luci.dispatcher.context.request))%></tt> <%+footer%> diff --git a/modules/luci-base/luasrc/view/sysauth.htm b/modules/luci-base/luasrc/view/sysauth.htm index f6b0f5706a..b3ec9b7617 100644 --- a/modules/luci-base/luasrc/view/sysauth.htm +++ b/modules/luci-base/luasrc/view/sysauth.htm @@ -6,7 +6,7 @@ <%+header%> -<form method="post" action="<%=pcdata(luci.http.getenv("REQUEST_URI"))%>"> +<form method="post" action="<%=pcdata(FULL_REQUEST_URI)%>"> <%- if fuser then %> <div class="errorbox"><%:Invalid username and/or password! Please try again.%></div> <% end -%> diff --git a/modules/luci-base/po/ca/base.po b/modules/luci-base/po/ca/base.po index e69534b3ba..22889f5dbe 100644 --- a/modules/luci-base/po/ca/base.po +++ b/modules/luci-base/po/ca/base.po @@ -222,9 +222,6 @@ msgstr "Concentrador d'accés" msgid "Access Point" msgstr "Punt d'accés" -msgid "Action" -msgstr "Acció" - msgid "Actions" msgstr "Accions" @@ -299,6 +296,9 @@ msgstr "" msgid "Allow all except listed" msgstr "Permet-les totes menys les llistades" +msgid "Allow legacy 802.11b rates" +msgstr "" + msgid "Allow listed only" msgstr "Permet només les llistades" @@ -406,11 +406,11 @@ msgstr "Configuració d'antena" msgid "Any zone" msgstr "Qualsevol zona" -msgid "Apply" -msgstr "Aplica" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "Aplicant els canvis" +msgid "Apply unchecked" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -572,9 +572,6 @@ msgstr "" "Repositoris específics de la distribució/compilació. Aquest fitxer NO es " "preservarà durant les actualitzacions del microprogramari del sistema." -msgid "Buttons" -msgstr "Botons" - msgid "CA certificate; if empty it will be saved after the first connection." msgstr "" @@ -596,16 +593,24 @@ msgstr "Canvis" msgid "Changes applied." msgstr "Canvis aplicats." +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "Canvia la paraula clau de l'administrador per accedir al dispositiu" msgid "Channel" msgstr "Canal" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "Comprovació" -msgid "Check fileystems before mount" +msgid "Check filesystems before mount" msgstr "" msgid "Check this option to delete the existing networks from this radio." @@ -681,12 +686,15 @@ msgstr "" msgid "Configuration" msgstr "Configuració" -msgid "Configuration applied." -msgstr "S'ha aplicat la configuració." - msgid "Configuration files will be kept." msgstr "Es mantindran els fitxers de configuració." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "Confirmació" @@ -705,6 +713,12 @@ msgstr "" msgid "Connections" msgstr "Connexions" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "País" @@ -747,6 +761,11 @@ msgid "Custom feeds" msgstr "" msgid "" +"Custom files (certificates, scripts) may remain on the system. To prevent " +"this, perform a factory-reset first." +msgstr "" + +msgid "" "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode" "\">LED</abbr>s if possible." msgstr "" @@ -870,6 +889,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "Diagnòstics" @@ -904,6 +926,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "Descarta les respostes RFC1918 des de dalt" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "Mostrant només els paquets que contenen" @@ -1015,6 +1040,11 @@ msgstr "Emergència" msgid "Enable" msgstr "Habilita" +msgid "" +"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> " +"snooping" +msgstr "" + msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>" msgstr "Habilita l'<abbr title=\"Spanning Tree Protocol\">STP</abbr>" @@ -1072,6 +1102,9 @@ msgstr "Activa/Desactiva" msgid "Enabled" msgstr "Habilitat" +msgid "Enables IGMP snooping on this bridge" +msgstr "" + msgid "" "Enables fast roaming among access points that belong to the same Mobility " "Domain" @@ -1150,6 +1183,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "Fitxer" @@ -1251,6 +1287,9 @@ msgstr "" msgid "Forward broadcast traffic" msgstr "Reenvia el trànsit difós" +msgid "Forward mesh peer traffic" +msgstr "" + msgid "Forwarding mode" msgstr "Mode de reenviament" @@ -1336,9 +1375,6 @@ msgstr "" msgid "HT mode (802.11n)" msgstr "" -msgid "Handler" -msgstr "" - msgid "Hang Up" msgstr "Penja" @@ -1929,9 +1965,6 @@ msgstr "" msgid "Maximum amount of seconds to wait for the modem to become ready" msgstr "" -msgid "Maximum hold time" -msgstr "" - msgid "" "Maximum length of the name is 15 characters including the automatic protocol/" "bridge prefix (br-, 6in4-, pppoe- etc.)" @@ -1949,12 +1982,12 @@ msgstr "Memòria" msgid "Memory usage (%)" msgstr "Ús de Memòria (%)" +msgid "Mesh Id" +msgstr "" + msgid "Metric" msgstr "Mètrica" -msgid "Minimum hold time" -msgstr "" - msgid "Mirror monitor port" msgstr "" @@ -2160,6 +2193,9 @@ msgstr "Avís" msgid "Nslookup" msgstr "Nslookup" +msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" +msgstr "" + msgid "OK" msgstr "D'acord" @@ -2172,6 +2208,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "" @@ -2399,9 +2438,6 @@ msgstr "" msgid "Path to Private Key" msgstr "Ruta a la clau privada" -msgid "Path to executable which handles the button event" -msgstr "" - msgid "Path to inner CA-Certificate" msgstr "" @@ -2753,6 +2789,15 @@ msgstr "Mostra/amaga la contrasenya" msgid "Revert" msgstr "Reverteix" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "Arrel" @@ -2831,9 +2876,6 @@ msgstr "Desa" msgid "Save & Apply" msgstr "Desa i aplica" -msgid "Save & Apply" -msgstr "Desa i aplica" - msgid "Scan" msgstr "Escaneja" @@ -2922,6 +2964,9 @@ msgstr "Mida" msgid "Size (.ipk)" msgstr "Mida (.ipk)" +msgid "Size of DNS query cache" +msgstr "" + msgid "Skip" msgstr "Salta" @@ -2964,9 +3009,6 @@ msgstr "Origen" msgid "Source routing" msgstr "" -msgid "Specifies the button state to handle" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "Especifica el directori a que el dispositiu està adjuntat" @@ -3005,6 +3047,9 @@ msgstr "Inici" msgid "Start priority" msgstr "Prioritat d'inici" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "Arrencada" @@ -3066,6 +3111,9 @@ msgid "" "Switch %q has an unknown topology - the VLAN settings might not be accurate." msgstr "" +msgid "Switch Port Mask" +msgstr "" + msgid "Switch VLAN" msgstr "" @@ -3156,6 +3204,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" msgid "" +"The device could not be reached within %d seconds after applying the pending " +"changes, which caused the configuration to be rolled back for safety " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3181,9 +3239,6 @@ msgstr "" "<br />Fes clic a \"Procedeix\" a continuació per començar el procés " "d'escriptura a la memòria flaix." -msgid "The following changes have been committed" -msgstr "S'han comès els següents canvis" - msgid "The following changes have been reverted" msgstr "S'han desfet els següents canvis" @@ -3263,8 +3318,8 @@ msgstr "" msgid "There are no active leases." msgstr "No hi ha arrendaments actius." -msgid "There are no pending changes to apply!" -msgstr "No hi ha canvis pendents per aplicar!" +msgid "There are no changes to apply." +msgstr "" msgid "There are no pending changes to revert!" msgstr "No hi ha canvis pendents per revertir!" @@ -3314,7 +3369,7 @@ msgstr "" msgid "" "This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with <code>:2</code>" +"ends with <code>...:2/64</code>" msgstr "" msgid "" @@ -3347,9 +3402,6 @@ msgstr "" "Aquesta llista mostra una vista general sobre els processos corrent al " "sistema actualment i el seu estat." -msgid "This page allows the configuration of custom button actions" -msgstr "" - msgid "This page gives an overview over currently active network connections." msgstr "" "Aquesta pàgina ofereix una vista general de les connexions de xarxa actives " @@ -3538,9 +3590,9 @@ msgstr "" msgid "" "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</" -"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed " -"address to use and the <em>Hostname</em> is assigned as symbolic name to the " -"requesting host. The optional <em>Lease time</em> can be used to set non-" +"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed " +"address to use, and the <em>Hostname</em> is assigned as a symbolic name to " +"the requesting host. The optional <em>Lease time</em> can be used to set non-" "standard host-specific lease time, e.g. 12h, 3d or infinite." msgstr "" @@ -3647,6 +3699,9 @@ msgstr "Esperant que s'apliquin els canvis..." msgid "Waiting for command to complete..." msgstr "Esperant que s'acabi l'ordre..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "Esperant el dispositiu..." @@ -3840,6 +3895,9 @@ msgstr "obert" msgid "overlay" msgstr "" +msgid "random" +msgstr "" + msgid "relay mode" msgstr "" @@ -3885,6 +3943,30 @@ msgstr "sí" msgid "« Back" msgstr "« Enrere" +#~ msgid "Apply" +#~ msgstr "Aplica" + +#~ msgid "Applying changes" +#~ msgstr "Aplicant els canvis" + +#~ msgid "Configuration applied." +#~ msgstr "S'ha aplicat la configuració." + +#~ msgid "Save & Apply" +#~ msgstr "Desa i aplica" + +#~ msgid "The following changes have been committed" +#~ msgstr "S'han comès els següents canvis" + +#~ msgid "There are no pending changes to apply!" +#~ msgstr "No hi ha canvis pendents per aplicar!" + +#~ msgid "Action" +#~ msgstr "Acció" + +#~ msgid "Buttons" +#~ msgstr "Botons" + #~ msgid "Leasetime" #~ msgstr "Duració d'arrendament" diff --git a/modules/luci-base/po/cs/base.po b/modules/luci-base/po/cs/base.po index bff89c8845..924d0e6769 100644 --- a/modules/luci-base/po/cs/base.po +++ b/modules/luci-base/po/cs/base.po @@ -217,9 +217,6 @@ msgstr "Přístupový koncentrátor" msgid "Access Point" msgstr "Přístupový bod" -msgid "Action" -msgstr "Akce" - msgid "Actions" msgstr "Akce" @@ -295,6 +292,9 @@ msgstr "Povolit <abbr title=\"Secure Shell\">SSH</abbr> autentizaci heslem" msgid "Allow all except listed" msgstr "Povolit vše mimo uvedené" +msgid "Allow legacy 802.11b rates" +msgstr "" + msgid "Allow listed only" msgstr "Povolit pouze uvedené" @@ -402,11 +402,11 @@ msgstr "Konfigurace antén" msgid "Any zone" msgstr "Libovolná zóna" -msgid "Apply" -msgstr "Použít" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "Probíhá uplatňování nastavení" +msgid "Apply unchecked" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -565,9 +565,6 @@ msgid "" "preserved in any sysupgrade." msgstr "" -msgid "Buttons" -msgstr "Tlačítka" - msgid "CA certificate; if empty it will be saved after the first connection." msgstr "" @@ -589,16 +586,24 @@ msgstr "Změny" msgid "Changes applied." msgstr "Změny aplikovány." +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "Změní administrátorské heslo pro přístup k zařízení" msgid "Channel" msgstr "Kanál" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "Kontrola" -msgid "Check fileystems before mount" +msgid "Check filesystems before mount" msgstr "" msgid "Check this option to delete the existing networks from this radio." @@ -675,12 +680,15 @@ msgstr "" msgid "Configuration" msgstr "Nastavení" -msgid "Configuration applied." -msgstr "Nastavení uplatněno." - msgid "Configuration files will be kept." msgstr "Konfigurační soubory budou zachovány." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "Ověření" @@ -699,6 +707,12 @@ msgstr "" msgid "Connections" msgstr "Připojení" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "Země" @@ -741,6 +755,11 @@ msgid "Custom feeds" msgstr "" msgid "" +"Custom files (certificates, scripts) may remain on the system. To prevent " +"this, perform a factory-reset first." +msgstr "" + +msgid "" "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode" "\">LED</abbr>s if possible." msgstr "" @@ -866,6 +885,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "Diagnostika" @@ -900,6 +922,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "Vyřadit upstream RFC1918 odpovědi" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "Zobrazeny pouze balíčky obsahující" @@ -1015,6 +1040,11 @@ msgstr "Záchrana" msgid "Enable" msgstr "Povolit" +msgid "" +"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> " +"snooping" +msgstr "" + msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>" msgstr "Povolit <abbr title=\"Spanning Tree Protocol\">STP</abbr>" @@ -1072,6 +1102,9 @@ msgstr "Povolit/Zakázat" msgid "Enabled" msgstr "Povoleno" +msgid "Enables IGMP snooping on this bridge" +msgstr "" + msgid "" "Enables fast roaming among access points that belong to the same Mobility " "Domain" @@ -1152,6 +1185,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "Soubor" @@ -1253,6 +1289,9 @@ msgstr "" msgid "Forward broadcast traffic" msgstr "Přeposílat broadcasty" +msgid "Forward mesh peer traffic" +msgstr "" + msgid "Forwarding mode" msgstr "Režim přeposílání" @@ -1336,9 +1375,6 @@ msgstr "" msgid "HT mode (802.11n)" msgstr "" -msgid "Handler" -msgstr "Handler" - msgid "Hang Up" msgstr "Zavěsit" @@ -1937,9 +1973,6 @@ msgstr "Nejvyšší povolená velikost EDNS.0 UDP paketů" msgid "Maximum amount of seconds to wait for the modem to become ready" msgstr "Nejvyšší počet sekund čekání, než bude modem připraven" -msgid "Maximum hold time" -msgstr "Maximální doba držení" - msgid "" "Maximum length of the name is 15 characters including the automatic protocol/" "bridge prefix (br-, 6in4-, pppoe- etc.)" @@ -1957,12 +1990,12 @@ msgstr "Paměť" msgid "Memory usage (%)" msgstr "Využití paměti (%)" +msgid "Mesh Id" +msgstr "" + msgid "Metric" msgstr "Metrika" -msgid "Minimum hold time" -msgstr "Minimální čas zápůjčky" - msgid "Mirror monitor port" msgstr "" @@ -2168,6 +2201,9 @@ msgstr "Oznámení" msgid "Nslookup" msgstr "Nslookup" +msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" +msgstr "" + msgid "OK" msgstr "OK" @@ -2180,6 +2216,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "Vypnutí prodlevy" @@ -2408,9 +2447,6 @@ msgstr "Cesta k certifikátu klienta" msgid "Path to Private Key" msgstr "Cesta k privátnímu klíči" -msgid "Path to executable which handles the button event" -msgstr "Cesta ke spustitelnému souboru, který obsluhuje událost tlačítka" - msgid "Path to inner CA-Certificate" msgstr "" @@ -2778,6 +2814,15 @@ msgstr "Odhalit/skrýt heslo" msgid "Revert" msgstr "Vrátit zpět" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "Root" @@ -2855,9 +2900,6 @@ msgstr "Uložit" msgid "Save & Apply" msgstr "Uložit & použít" -msgid "Save & Apply" -msgstr "Uložit & použít" - msgid "Scan" msgstr "Skenovat" @@ -2948,6 +2990,9 @@ msgstr "Velikost" msgid "Size (.ipk)" msgstr "" +msgid "Size of DNS query cache" +msgstr "" + msgid "Skip" msgstr "Přeskočit" @@ -2993,9 +3038,6 @@ msgstr "Zdroj" msgid "Source routing" msgstr "" -msgid "Specifies the button state to handle" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "" @@ -3036,6 +3078,9 @@ msgstr "Start" msgid "Start priority" msgstr "Priorita spouštění" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "Po spuštění" @@ -3100,6 +3145,9 @@ msgid "" "Switch %q has an unknown topology - the VLAN settings might not be accurate." msgstr "" +msgid "Switch Port Mask" +msgstr "" + msgid "Switch VLAN" msgstr "" @@ -3196,6 +3244,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" msgid "" +"The device could not be reached within %d seconds after applying the pending " +"changes, which caused the configuration to be rolled back for safety " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3220,9 +3278,6 @@ msgstr "" "souboru s originálním souborem pro zajištění integrity dat.<br /> Kliknutím " "na \"Pokračovat\" spustíte proceduru flashování." -msgid "The following changes have been committed" -msgstr "Následující změny byly provedeny" - msgid "The following changes have been reverted" msgstr "Následující změny byly vráceny" @@ -3304,8 +3359,8 @@ msgstr "" msgid "There are no active leases." msgstr "Nejsou žádné aktivní zápůjčky." -msgid "There are no pending changes to apply!" -msgstr "Nejsou zde žádné nevyřízené změny k aplikaci!" +msgid "There are no changes to apply." +msgstr "" msgid "There are no pending changes to revert!" msgstr "Nejsou zde žádné nevyřízené změny k navrácení!" @@ -3356,7 +3411,7 @@ msgstr "" msgid "" "This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with <code>:2</code>" +"ends with <code>...:2/64</code>" msgstr "" msgid "" @@ -3389,9 +3444,6 @@ msgstr "" "V tomto seznamu vidíte přehled aktuálně běžících systémových procesů a " "jejich stavy." -msgid "This page allows the configuration of custom button actions" -msgstr "Na této stránce si můžete nastavit vlastní události tlačítek" - msgid "This page gives an overview over currently active network connections." msgstr "Tato stránka zobrazuje přehled aktivních síťových spojení." @@ -3578,9 +3630,9 @@ msgstr "Použít směrovací tabulku" msgid "" "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</" -"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed " -"address to use and the <em>Hostname</em> is assigned as symbolic name to the " -"requesting host. The optional <em>Lease time</em> can be used to set non-" +"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed " +"address to use, and the <em>Hostname</em> is assigned as a symbolic name to " +"the requesting host. The optional <em>Lease time</em> can be used to set non-" "standard host-specific lease time, e.g. 12h, 3d or infinite." msgstr "" "Použitím tlačítka <em>Přidat</em> přidáte novou zápůjčku (lease). <em>MAC " @@ -3690,6 +3742,9 @@ msgstr "Čekání na realizaci změn..." msgid "Waiting for command to complete..." msgstr "Čekání na dokončení příkazu..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3881,6 +3936,9 @@ msgstr "" msgid "overlay" msgstr "" +msgid "random" +msgstr "" + msgid "relay mode" msgstr "" @@ -3926,6 +3984,45 @@ msgstr "ano" msgid "« Back" msgstr "« Zpět" +#~ msgid "Apply" +#~ msgstr "Použít" + +#~ msgid "Applying changes" +#~ msgstr "Probíhá uplatňování nastavení" + +#~ msgid "Configuration applied." +#~ msgstr "Nastavení uplatněno." + +#~ msgid "Save & Apply" +#~ msgstr "Uložit & použít" + +#~ msgid "The following changes have been committed" +#~ msgstr "Následující změny byly provedeny" + +#~ msgid "There are no pending changes to apply!" +#~ msgstr "Nejsou zde žádné nevyřízené změny k aplikaci!" + +#~ msgid "Action" +#~ msgstr "Akce" + +#~ msgid "Buttons" +#~ msgstr "Tlačítka" + +#~ msgid "Handler" +#~ msgstr "Handler" + +#~ msgid "Maximum hold time" +#~ msgstr "Maximální doba držení" + +#~ msgid "Minimum hold time" +#~ msgstr "Minimální čas zápůjčky" + +#~ msgid "Path to executable which handles the button event" +#~ msgstr "Cesta ke spustitelnému souboru, který obsluhuje událost tlačítka" + +#~ msgid "This page allows the configuration of custom button actions" +#~ msgstr "Na této stránce si můžete nastavit vlastní události tlačítek" + #~ msgid "Leasetime" #~ msgstr "Doba trvání zápůjčky" diff --git a/modules/luci-base/po/de/base.po b/modules/luci-base/po/de/base.po index eb9221f163..4271d8e901 100644 --- a/modules/luci-base/po/de/base.po +++ b/modules/luci-base/po/de/base.po @@ -3,21 +3,21 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-05-26 17:57+0200\n" -"PO-Revision-Date: 2017-10-17 22:46+0200\n" +"PO-Revision-Date: 2018-01-09 08:01+0100\n" "Last-Translator: JoeSemler <josef.semler@gmail.com>\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: Poedit 2.0.4\n" +"X-Generator: Poedit 1.8.11\n" "Language-Team: \n" msgid "%.1f dB" msgstr "" msgid "%s is untagged in multiple VLANs!" -msgstr "" +msgstr "%s darf nicht ohne VLAN-Tag in mehreren VLAN-Gruppen vorkommen!" msgid "(%d minute window, %d second interval)" msgstr "(%d Minuten Abschnitt, %d Sekunden Intervall)" @@ -68,7 +68,7 @@ msgid "6-octet identifier as a hex string - no colons" msgstr "sechstellige hexadezimale ID (ohne Doppelpunkte)" msgid "802.11r Fast Transition" -msgstr "" +msgstr "802.11r: Schnelle Client-Übergabe" msgid "802.11w Association SA Query maximum timeout" msgstr "Maximales Timeout für Quelladressprüfungen (SA Query)" @@ -160,6 +160,8 @@ msgid "" "<br/>Note: you need to manually restart the cron service if the crontab file " "was empty before editing." msgstr "" +"<br/>Hinweis: Der Cron-Dienst muss manuell neu gestartet werden wenn die " +"Crontab-Datei vor der Bearbeitung leer war." msgid "A43C + J43 + A43" msgstr "" @@ -218,9 +220,6 @@ msgstr "Access Concentrator" msgid "Access Point" msgstr "Access Point" -msgid "Action" -msgstr "Aktion" - msgid "Actions" msgstr "Aktionen" @@ -258,7 +257,7 @@ msgid "Additional Hosts files" msgstr "Zusätzliche Hosts-Dateien" msgid "Additional servers file" -msgstr "" +msgstr "Zusätzliche Nameserver-Datei" msgid "Address" msgstr "Adresse" @@ -273,7 +272,7 @@ msgid "Advanced Settings" msgstr "Erweiterte Einstellungen" msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" +msgstr "Vollständige Sendeleistung (ACTATP)" msgid "Alert" msgstr "Alarm" @@ -294,6 +293,9 @@ msgstr "Erlaube Anmeldung per Passwort" msgid "Allow all except listed" msgstr "Alle außer gelistete erlauben" +msgid "Allow legacy 802.11b rates" +msgstr "Veraltete 802.11b Raten erlauben" + msgid "Allow listed only" msgstr "Nur gelistete erlauben" @@ -324,6 +326,8 @@ msgid "" "Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison" "\">Tunneling Comparison</a> on SIXXS" msgstr "" +"Siehe auch <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison" +"\">Tunneling Comparison</a> bei SIXXS." msgid "Always announce default router" msgstr "Immer Defaultrouter ankündigen" @@ -405,11 +409,11 @@ msgstr "Antennenkonfiguration" msgid "Any zone" msgstr "Beliebige Zone" -msgid "Apply" -msgstr "Anwenden" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "Änderungen werden angewandt" +msgid "Apply unchecked" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -577,9 +581,6 @@ msgstr "" "Konfiguriert die distributionsspezifischen Paket-Repositories. Diese " "Konfiguration wird bei Upgrades NICHT gesichert." -msgid "Buttons" -msgstr "Knöpfe" - msgid "CA certificate; if empty it will be saved after the first connection." msgstr "" "CA-Zertifikat (wird beim ersten Verbindungsaufbau automatisch gespeichert " @@ -603,16 +604,24 @@ msgstr "Änderungen" msgid "Changes applied." msgstr "Änderungen angewendet." +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "Ändert das Administratorpasswort für den Zugriff auf dieses Gerät" msgid "Channel" msgstr "Kanal" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "Prüfen" -msgid "Check fileystems before mount" +msgid "Check filesystems before mount" msgstr "Dateisysteme prüfen" msgid "Check this option to delete the existing networks from this radio." @@ -695,12 +704,15 @@ msgstr "" msgid "Configuration" msgstr "Konfiguration" -msgid "Configuration applied." -msgstr "Konfiguration angewendet." - msgid "Configuration files will be kept." msgstr "Konfigurationsdateien sichern" +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "Bestätigung" @@ -719,6 +731,12 @@ msgstr "TLS zwingend vorraussetzen und abbrechen wenn TLS fehlschlägt." msgid "Connections" msgstr "Verbindungen" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "Land" @@ -763,6 +781,11 @@ msgid "Custom feeds" msgstr "Eigene Repositories" msgid "" +"Custom files (certificates, scripts) may remain on the system. To prevent " +"this, perform a factory-reset first." +msgstr "" + +msgid "" "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode" "\">LED</abbr>s if possible." msgstr "Passt das Verhalten der Geräte-LEDs an - wenn dies möglich ist." @@ -789,10 +812,10 @@ msgid "DHCPv6 client" msgstr "DHCPv6 Client" msgid "DHCPv6-Mode" -msgstr "" +msgstr "DHCPv6-Modus" msgid "DHCPv6-Service" -msgstr "" +msgstr "DHCPv6-Dienst" msgid "DNS" msgstr "DNS" @@ -886,6 +909,9 @@ msgstr "Das Gerät startet neu..." msgid "Device unreachable" msgstr "Das Gerät ist nicht erreichbar" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "Diagnosen" @@ -909,7 +935,7 @@ msgid "Disable DNS setup" msgstr "DNS-Verarbeitung deaktivieren" msgid "Disable Encryption" -msgstr "" +msgstr "Verschlüsselung deaktivieren" msgid "Disabled" msgstr "Deaktiviert" @@ -920,6 +946,9 @@ msgstr "Deaktiviert (Standard)" msgid "Discard upstream RFC1918 responses" msgstr "Eingehende RFC1918-Antworten verwerfen" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "Nur Pakete mit folgendem Inhalt anzeigen" @@ -1037,6 +1066,11 @@ msgstr "Notfall" msgid "Enable" msgstr "Aktivieren" +msgid "" +"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> " +"snooping" +msgstr "" + msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>" msgstr "<abbr title=\"Spanning Tree Protocol\">STP</abbr> aktivieren" @@ -1095,6 +1129,9 @@ msgstr "Aktivieren/Deaktivieren" msgid "Enabled" msgstr "Aktiviert" +msgid "Enables IGMP snooping on this bridge" +msgstr "" + msgid "" "Enables fast roaming among access points that belong to the same Mobility " "Domain" @@ -1178,6 +1215,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "Datei" @@ -1284,6 +1324,9 @@ msgstr "Fehlerkorrektursekunden (FECS)" msgid "Forward broadcast traffic" msgstr "Broadcasts weiterleiten" +msgid "Forward mesh peer traffic" +msgstr "Mesh-Nachbar-Traffic weiterleiten" + msgid "Forwarding mode" msgstr "Weiterleitungstyp" @@ -1331,7 +1374,7 @@ msgid "Generate Config" msgstr "Konfiguration generieren" msgid "Generate PMK locally" -msgstr "" +msgstr "PMK lokal generieren" msgid "Generate archive" msgstr "Sicherung erstellen" @@ -1371,9 +1414,6 @@ msgstr "HE.net Benutzername" msgid "HT mode (802.11n)" msgstr "HT-Modus (802.11n)" -msgid "Handler" -msgstr "Handler" - msgid "Hang Up" msgstr "Auflegen" @@ -1820,6 +1860,12 @@ msgid "" "from the R0KH that the STA used during the Initial Mobility Domain " "Association." msgstr "" +"Liste von R0KH-Bezeichnern innerhalb der selben Mobilitätsdomäne. <br /" +">Format: MAC-Adresse,NAS-Identifier,128 Bit Schlüssel in Hex-Notation. <br /" +">Diese Liste wird verwendet um R0KH-Bezeichner (NAS Identifier) einer Ziel-" +"MAC-Adresse zuzuordnen damit ein PMK-R1-Schlüssel von der R0KH angefordert " +"werden kann, mit der sich der Client wärend der anfänglichen " +"Mobilitätsdomänen-Assoziation verbunden hat." msgid "" "List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID " @@ -1828,6 +1874,12 @@ msgid "" "R0KH. This is also the list of authorized R1KHs in the MD that can request " "PMK-R1 keys." msgstr "" +"Liste von R1KH-Bezeichnern innerhalb der selben Mobilitätsdomäne. <br /" +">Format: MAC-Adresse,R1KH-ID im MAC-Adress-Format,128 Bit Schlüssel in Hex-" +"Notation. <br />Diese Liste wird benutzt um einer R1KH-ID eine Ziel-MAC-" +"Adresse zuzuordnen wenn ein PMK-R1-Schlüssel von einer R0KH-Station " +"versendet wird. Die Liste dient auch zur Authorisierung von R1KH-IDs, welche " +"innerhalb der Mobilitätsdomain PMK-R1-Schlüssel anfordern dürfen." msgid "List of SSH key files for auth" msgstr "Liste der SSH Schlüssel zur Authentifikation" @@ -1983,9 +2035,6 @@ msgstr "Maximal zulässige Größe von EDNS.0 UDP Paketen" msgid "Maximum amount of seconds to wait for the modem to become ready" msgstr "Maximale Zeit die gewartet wird bis das Modem bereit ist (in Sekunden)" -msgid "Maximum hold time" -msgstr "Maximalzeit zum Halten der Verbindung" - msgid "" "Maximum length of the name is 15 characters including the automatic protocol/" "bridge prefix (br-, 6in4-, pppoe- etc.)" @@ -2006,12 +2055,12 @@ msgstr "Hauptspeicher" msgid "Memory usage (%)" msgstr "Speichernutzung (%)" +msgid "Mesh Id" +msgstr "Mesh-ID" + msgid "Metric" msgstr "Metrik" -msgid "Minimum hold time" -msgstr "Minimalzeit zum Halten der Verbindung" - msgid "Mirror monitor port" msgstr "Spiegel-Monitor-Port" @@ -2062,7 +2111,7 @@ msgstr "" "Laufwerke und Speicher zur Verwendung eingebunden werden." msgid "Mount filesystems not specifically configured" -msgstr "" +msgstr "Nicht explizit konfigurierte Dateisysteme einhängen" msgid "Mount options" msgstr "Mount-Optionen" @@ -2218,6 +2267,9 @@ msgstr "Notiz" msgid "Nslookup" msgstr "DNS-Auflösung" +msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" +msgstr "" + msgid "OK" msgstr "OK" @@ -2230,6 +2282,9 @@ msgstr "Chiffriertes Gruppenpasswort" msgid "Obfuscated Password" msgstr "Chiffriertes Passwort" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "Verzögerung für Ausschalt-Zustand" @@ -2475,9 +2530,6 @@ msgstr "Pfad zu Client-Zertifikat" msgid "Path to Private Key" msgstr "Pfad zum Privaten Schlüssel" -msgid "Path to executable which handles the button event" -msgstr "Ausführbare Datei welche das Schalter-Ereignis verarbeitet" - msgid "Path to inner CA-Certificate" msgstr "Pfad zum inneren CA-Zertifikat" @@ -2617,10 +2669,10 @@ msgid "Quality" msgstr "Qualität" msgid "R0 Key Lifetime" -msgstr "" +msgstr "R0-Schlüsselgültigkeit" msgid "R1 Key Holder" -msgstr "" +msgstr "R1-Schlüsselinhaber" msgid "RFC3947 NAT-T mode" msgstr "" @@ -2856,6 +2908,15 @@ msgstr "Passwort zeigen/verstecken" msgid "Revert" msgstr "Verwerfen" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "Root" @@ -2934,9 +2995,6 @@ msgstr "Speichern" msgid "Save & Apply" msgstr "Speichern & Anwenden" -msgid "Save & Apply" -msgstr "Speichern & Anwenden" - msgid "Scan" msgstr "Scan" @@ -3032,6 +3090,9 @@ msgstr "Größe" msgid "Size (.ipk)" msgstr "Größe (.ipk)" +msgid "Size of DNS query cache" +msgstr "" + msgid "Skip" msgstr "Überspringen" @@ -3078,9 +3139,6 @@ msgstr "Quelle" msgid "Source routing" msgstr "Quell-Routing" -msgid "Specifies the button state to handle" -msgstr "Gibt den zu behandelnden Tastenstatus an" - msgid "Specifies the directory the device is attached to" msgstr "Nennt das Verzeichnis, an welches das Gerät angebunden ist" @@ -3127,6 +3185,9 @@ msgstr "Start" msgid "Start priority" msgstr "Startpriorität" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "Systemstart" @@ -3195,6 +3256,9 @@ msgstr "" "Der Switch %q hat eine unbekannte Struktur, die VLAN Settings könnten " "unpassend sein." +msgid "Switch Port Mask" +msgstr "" + msgid "Switch VLAN" msgstr "" @@ -3242,7 +3306,7 @@ msgid "Target" msgstr "Ziel" msgid "Target network" -msgstr "" +msgstr "Zielnetzwerk" msgid "Terminate" msgstr "Beenden" @@ -3299,6 +3363,16 @@ msgstr "" "werden:" msgid "" +"The device could not be reached within %d seconds after applying the pending " +"changes, which caused the configuration to be rolled back for safety " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "Die Gerätedatei des Speichers oder der Partition (z.B.: /dev/sda)" @@ -3319,9 +3393,6 @@ msgstr "" "Integrität sicherzustellen.<br /> Klicken Sie \"Fortfahren\" um die Flash-" "Prozedur zu starten." -msgid "The following changes have been committed" -msgstr "Die folgenden Änderungen wurden angewendet" - msgid "The following changes have been reverted" msgstr "Die folgenden Änderungen wurden verworfen" @@ -3412,8 +3483,8 @@ msgstr "" msgid "There are no active leases." msgstr "Es gibt z.Z. keine aktiven Leases." -msgid "There are no pending changes to apply!" -msgstr "Es gibt keine ausstehenen Änderungen anzuwenden!" +msgid "There are no changes to apply." +msgstr "" msgid "There are no pending changes to revert!" msgstr "Es gibt keine ausstehenen Änderungen zurückzusetzen!" @@ -3468,15 +3539,15 @@ msgid "" "This is the content of /etc/rc.local. Insert your own commands here (in " "front of 'exit 0') to execute them at the end of the boot process." msgstr "" -"Dies ist der Inhalt von /etc.rc.local. Hier kann man eigene Befehle einfügen " +"Dies ist der Inhalt von /etc/rc.local. Hier kann man eigene Befehle einfügen " "(vor 'exit 0'), die dann am Ende des Bootvorgangs ausgeführt werden." msgid "" "This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with <code>:2</code>" +"ends with <code>...:2/64</code>" msgstr "" "Dies ist die lokale, vom Broker zugewiesene IPv6-Adresse, sie endet " -"üblicherweise mit <code>:2</code>" +"üblicherweise mit <code>...:2/64</code>" msgid "" "This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</" @@ -3509,10 +3580,6 @@ msgstr "" "Diese Tabelle gibt eine Übersicht über aktuell laufende Systemprozesse und " "deren Status." -msgid "This page allows the configuration of custom button actions" -msgstr "" -"Diese Seite ermöglicht die Konfiguration benutzerdefinierter Tastenaktionen" - msgid "This page gives an overview over currently active network connections." msgstr "Diese Seite gibt eine Übersicht über aktive Netzwerkverbindungen." @@ -3700,9 +3767,9 @@ msgstr "Benutze Routing-Tabelle" msgid "" "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</" -"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed " -"address to use and the <em>Hostname</em> is assigned as symbolic name to the " -"requesting host. The optional <em>Lease time</em> can be used to set non-" +"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed " +"address to use, and the <em>Hostname</em> is assigned as a symbolic name to " +"the requesting host. The optional <em>Lease time</em> can be used to set non-" "standard host-specific lease time, e.g. 12h, 3d or infinite." msgstr "" "Die <em>Hinzufügen</em> Schaltfläche fügt einen neuen Lease-Eintrag hinzu. " @@ -3817,6 +3884,9 @@ msgstr "Änderungen werden angewandt..." msgid "Waiting for command to complete..." msgstr "Der Befehl wird ausgeführt..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "Warte auf Gerät..." @@ -3832,6 +3902,8 @@ msgid "" "When using a PSK, the PMK can be generated locally without inter AP " "communications" msgstr "" +"Wenn PSK in Verwendung ist, können PMK-Schlüssel lokal ohne Inter-Access-" +"Point-Kommunikation erzeugt werden." msgid "Whether to create an IPv6 default route over the tunnel" msgstr "" @@ -4011,6 +4083,9 @@ msgstr "offen" msgid "overlay" msgstr "Overlay" +msgid "random" +msgstr "" + msgid "relay mode" msgstr "Relay-Modus" @@ -4056,6 +4131,50 @@ msgstr "ja" msgid "« Back" msgstr "« Zurück" +#~ msgid "Apply" +#~ msgstr "Anwenden" + +#~ msgid "Applying changes" +#~ msgstr "Änderungen werden angewandt" + +#~ msgid "Configuration applied." +#~ msgstr "Konfiguration angewendet." + +#~ msgid "Save & Apply" +#~ msgstr "Speichern & Anwenden" + +#~ msgid "The following changes have been committed" +#~ msgstr "Die folgenden Änderungen wurden angewendet" + +#~ msgid "There are no pending changes to apply!" +#~ msgstr "Es gibt keine ausstehenen Änderungen anzuwenden!" + +#~ msgid "Action" +#~ msgstr "Aktion" + +#~ msgid "Buttons" +#~ msgstr "Knöpfe" + +#~ msgid "Handler" +#~ msgstr "Handler" + +#~ msgid "Maximum hold time" +#~ msgstr "Maximalzeit zum Halten der Verbindung" + +#~ msgid "Minimum hold time" +#~ msgstr "Minimalzeit zum Halten der Verbindung" + +#~ msgid "Path to executable which handles the button event" +#~ msgstr "Ausführbare Datei welche das Schalter-Ereignis verarbeitet" + +#~ msgid "Specifies the button state to handle" +#~ msgstr "Gibt den zu behandelnden Tastenstatus an" + +#~ msgid "This page allows the configuration of custom button actions" +#~ msgstr "" +#~ "Diese Seite ermöglicht die Konfiguration benutzerdefinierter " +#~ "Tastenaktionen" + #~ msgid "Leasetime" #~ msgstr "Laufzeit" diff --git a/modules/luci-base/po/el/base.po b/modules/luci-base/po/el/base.po index ca8240f457..60d62f3dd6 100644 --- a/modules/luci-base/po/el/base.po +++ b/modules/luci-base/po/el/base.po @@ -220,9 +220,6 @@ msgstr "Συγκεντρωτής Πρόσβασης " msgid "Access Point" msgstr "Σημείο Πρόσβασης" -msgid "Action" -msgstr "Ενέργεια" - msgid "Actions" msgstr "Ενέργειες" @@ -299,6 +296,9 @@ msgstr "" msgid "Allow all except listed" msgstr "Να επιτρέπονται όλες, εκτός από αυτές στη λίστα" +msgid "Allow legacy 802.11b rates" +msgstr "" + msgid "Allow listed only" msgstr "Να επιτρέπονται μόνο αυτές στην λίστα" @@ -409,11 +409,11 @@ msgstr "" msgid "Any zone" msgstr "Οιαδήποτε ζώνη" -msgid "Apply" -msgstr "Εφαρμογή" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "Εφαρμογή αλλαγών" +msgid "Apply unchecked" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -574,9 +574,6 @@ msgid "" "preserved in any sysupgrade." msgstr "" -msgid "Buttons" -msgstr "Κουμπιά" - msgid "CA certificate; if empty it will be saved after the first connection." msgstr "" @@ -598,16 +595,24 @@ msgstr "Αλλαγές" msgid "Changes applied." msgstr "Αλλαγές εφαρμόστηκαν." +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "Αλλάζει τον κωδικό διαχειριστή για πρόσβαση στη συσκευή" msgid "Channel" msgstr "Κανάλι" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "Έλεγχος" -msgid "Check fileystems before mount" +msgid "Check filesystems before mount" msgstr "" msgid "Check this option to delete the existing networks from this radio." @@ -684,12 +689,15 @@ msgstr "" msgid "Configuration" msgstr "Παραμετροποίηση" -msgid "Configuration applied." -msgstr "Η Παραμετροποίηση εφαρμόστηκε." - msgid "Configuration files will be kept." msgstr "Τα αρχεία παραμετροποίησης θα διατηρηθούν." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "Επιβεβαίωση" @@ -708,6 +716,12 @@ msgstr "" msgid "Connections" msgstr "Συνδέσεις" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "Χώρα" @@ -750,6 +764,11 @@ msgid "Custom feeds" msgstr "" msgid "" +"Custom files (certificates, scripts) may remain on the system. To prevent " +"this, perform a factory-reset first." +msgstr "" + +msgid "" "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode" "\">LED</abbr>s if possible." msgstr "" @@ -875,6 +894,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "Διαγνωστικά" @@ -909,6 +931,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "Αγνόησε τις απαντήσεις ανοδικής ροής RFC1918" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "Εμφάνιση μόνο πακέτων που περιέχουν" @@ -1027,6 +1052,11 @@ msgstr "Έκτακτη ανάγκη" msgid "Enable" msgstr "Ενεργοποίηση" +msgid "" +"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> " +"snooping" +msgstr "" + msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>" msgstr "Ενεργοποίηση <abbr title=\"Spanning Tree Protocol\">STP</abbr>" @@ -1084,6 +1114,9 @@ msgstr "Ενεργοποίηση/Απενεργοποίηση" msgid "Enabled" msgstr "Ενεργοποιημένο" +msgid "Enables IGMP snooping on this bridge" +msgstr "" + msgid "" "Enables fast roaming among access points that belong to the same Mobility " "Domain" @@ -1165,6 +1198,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "Αρχείο" @@ -1267,6 +1303,9 @@ msgstr "" msgid "Forward broadcast traffic" msgstr "Προώθηση κίνησης broadcast" +msgid "Forward mesh peer traffic" +msgstr "" + msgid "Forwarding mode" msgstr "Μέθοδος προώθησης" @@ -1350,9 +1389,6 @@ msgstr "" msgid "HT mode (802.11n)" msgstr "" -msgid "Handler" -msgstr "" - msgid "Hang Up" msgstr "Κρέμασμα" @@ -1944,9 +1980,6 @@ msgid "Maximum amount of seconds to wait for the modem to become ready" msgstr "" "Μέγιστος αριθμός δευτερολέπτων αναμονής ώστε το modem να καταστεί έτοιμο" -msgid "Maximum hold time" -msgstr "Μέγιστος χρόνος κράτησης" - msgid "" "Maximum length of the name is 15 characters including the automatic protocol/" "bridge prefix (br-, 6in4-, pppoe- etc.)" @@ -1964,12 +1997,12 @@ msgstr "Μνήμη" msgid "Memory usage (%)" msgstr "Χρήση Μνήμης (%)" +msgid "Mesh Id" +msgstr "" + msgid "Metric" msgstr "Μέτρο" -msgid "Minimum hold time" -msgstr "Ελάχιστος χρόνος κράτησης" - msgid "Mirror monitor port" msgstr "" @@ -2176,6 +2209,9 @@ msgstr "Επισήμανση" msgid "Nslookup" msgstr "" +msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" +msgstr "" + msgid "OK" msgstr "Εντάξει" @@ -2188,6 +2224,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "" @@ -2415,9 +2454,6 @@ msgstr "Διαδρομή για Πιστοποιητικό-Πελάτη" msgid "Path to Private Key" msgstr "Διαδρομή για Ιδιωτικό Κλειδί" -msgid "Path to executable which handles the button event" -msgstr "Διαδρομή για το εκτελέσιμο που χειρίζεται το γεγονός του κουμπιού" - msgid "Path to inner CA-Certificate" msgstr "" @@ -2770,6 +2806,15 @@ msgstr "" msgid "Revert" msgstr "Αναίρεση" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "Root" @@ -2849,9 +2894,6 @@ msgstr "Αποθήκευση" msgid "Save & Apply" msgstr "Αποθήκευση & Εφαρμογή" -msgid "Save & Apply" -msgstr "Αποθήκευση & Εφαρμογή" - msgid "Scan" msgstr "Σάρωση" @@ -2940,6 +2982,9 @@ msgstr "Μέγεθος" msgid "Size (.ipk)" msgstr "" +msgid "Size of DNS query cache" +msgstr "" + msgid "Skip" msgstr "Παράκαμψη" @@ -2982,9 +3027,6 @@ msgstr "Πηγή" msgid "Source routing" msgstr "" -msgid "Specifies the button state to handle" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "" @@ -3025,6 +3067,9 @@ msgstr "Αρχή" msgid "Start priority" msgstr "Προτεραιότητα εκκίνησης" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "Εκκίνηση" @@ -3086,6 +3131,9 @@ msgid "" "Switch %q has an unknown topology - the VLAN settings might not be accurate." msgstr "" +msgid "Switch Port Mask" +msgstr "" + msgid "Switch VLAN" msgstr "" @@ -3174,6 +3222,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" msgid "" +"The device could not be reached within %d seconds after applying the pending " +"changes, which caused the configuration to be rolled back for safety " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3195,9 +3253,6 @@ msgid "" "\"Proceed\" below to start the flash procedure." msgstr "" -msgid "The following changes have been committed" -msgstr "Οι παρακάτω αλλαγές έχουν υποβληθεί" - msgid "The following changes have been reverted" msgstr "Οι παρακάτω αλλαγές έχουν αναιρεθεί" @@ -3270,7 +3325,7 @@ msgstr "" msgid "There are no active leases." msgstr "Δεν υπάρχουν ενεργά leases." -msgid "There are no pending changes to apply!" +msgid "There are no changes to apply." msgstr "" msgid "There are no pending changes to revert!" @@ -3316,7 +3371,7 @@ msgstr "" msgid "" "This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with <code>:2</code>" +"ends with <code>...:2/64</code>" msgstr "" msgid "" @@ -3349,9 +3404,6 @@ msgstr "" "Αυτή η λίστα δίνει μία εικόνα των τρέχοντων εργασιών συστήματος και της " "κατάστασής τους." -msgid "This page allows the configuration of custom button actions" -msgstr "" - msgid "This page gives an overview over currently active network connections." msgstr "" "Αυτή η σελίδα δίνει μία εικόνα για τις τρέχουσες ενεργές συνδέσεις δικτύου." @@ -3534,9 +3586,9 @@ msgstr "" msgid "" "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</" -"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed " -"address to use and the <em>Hostname</em> is assigned as symbolic name to the " -"requesting host. The optional <em>Lease time</em> can be used to set non-" +"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed " +"address to use, and the <em>Hostname</em> is assigned as a symbolic name to " +"the requesting host. The optional <em>Lease time</em> can be used to set non-" "standard host-specific lease time, e.g. 12h, 3d or infinite." msgstr "" @@ -3641,6 +3693,9 @@ msgstr "" msgid "Waiting for command to complete..." msgstr "" +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3833,6 +3888,9 @@ msgstr "" msgid "overlay" msgstr "" +msgid "random" +msgstr "" + msgid "relay mode" msgstr "" @@ -3878,6 +3936,36 @@ msgstr "ναι" msgid "« Back" msgstr "« Πίσω" +#~ msgid "Apply" +#~ msgstr "Εφαρμογή" + +#~ msgid "Applying changes" +#~ msgstr "Εφαρμογή αλλαγών" + +#~ msgid "Configuration applied." +#~ msgstr "Η Παραμετροποίηση εφαρμόστηκε." + +#~ msgid "Save & Apply" +#~ msgstr "Αποθήκευση & Εφαρμογή" + +#~ msgid "The following changes have been committed" +#~ msgstr "Οι παρακάτω αλλαγές έχουν υποβληθεί" + +#~ msgid "Action" +#~ msgstr "Ενέργεια" + +#~ msgid "Buttons" +#~ msgstr "Κουμπιά" + +#~ msgid "Maximum hold time" +#~ msgstr "Μέγιστος χρόνος κράτησης" + +#~ msgid "Minimum hold time" +#~ msgstr "Ελάχιστος χρόνος κράτησης" + +#~ msgid "Path to executable which handles the button event" +#~ msgstr "Διαδρομή για το εκτελέσιμο που χειρίζεται το γεγονός του κουμπιού" + #~ msgid "Leasetime" #~ msgstr "Χρόνος Lease" diff --git a/modules/luci-base/po/en/base.po b/modules/luci-base/po/en/base.po index 6db22b6e66..5340e83eb4 100644 --- a/modules/luci-base/po/en/base.po +++ b/modules/luci-base/po/en/base.po @@ -220,9 +220,6 @@ msgstr "Access Concentrator" msgid "Access Point" msgstr "Access Point" -msgid "Action" -msgstr "Action" - msgid "Actions" msgstr "Actions" @@ -294,6 +291,9 @@ msgstr "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication" msgid "Allow all except listed" msgstr "Allow all except listed" +msgid "Allow legacy 802.11b rates" +msgstr "" + msgid "Allow listed only" msgstr "Allow listed only" @@ -400,11 +400,11 @@ msgstr "" msgid "Any zone" msgstr "Any zone" -msgid "Apply" -msgstr "Apply" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "Applying changes" +msgid "Apply unchecked" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -563,9 +563,6 @@ msgid "" "preserved in any sysupgrade." msgstr "" -msgid "Buttons" -msgstr "Buttons" - msgid "CA certificate; if empty it will be saved after the first connection." msgstr "" @@ -587,16 +584,24 @@ msgstr "Changes" msgid "Changes applied." msgstr "Changes applied." +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "Changes the administrator password for accessing the device" msgid "Channel" msgstr "Channel" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "Check" -msgid "Check fileystems before mount" +msgid "Check filesystems before mount" msgstr "" msgid "Check this option to delete the existing networks from this radio." @@ -671,12 +676,15 @@ msgstr "" msgid "Configuration" msgstr "Configuration" -msgid "Configuration applied." -msgstr "Configuration applied." - msgid "Configuration files will be kept." msgstr "Configuration files will be kept." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "Confirmation" @@ -695,6 +703,12 @@ msgstr "" msgid "Connections" msgstr "Connections" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "Country" @@ -737,6 +751,11 @@ msgid "Custom feeds" msgstr "" msgid "" +"Custom files (certificates, scripts) may remain on the system. To prevent " +"this, perform a factory-reset first." +msgstr "" + +msgid "" "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode" "\">LED</abbr>s if possible." msgstr "" @@ -863,6 +882,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "Diagnostics" @@ -895,6 +917,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "" @@ -1006,6 +1031,11 @@ msgstr "" msgid "Enable" msgstr "" +msgid "" +"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> " +"snooping" +msgstr "" + msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>" msgstr "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>" @@ -1063,6 +1093,9 @@ msgstr "Enable/Disable" msgid "Enabled" msgstr "Enabled" +msgid "Enables IGMP snooping on this bridge" +msgstr "" + msgid "" "Enables fast roaming among access points that belong to the same Mobility " "Domain" @@ -1141,6 +1174,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "" @@ -1242,6 +1278,9 @@ msgstr "" msgid "Forward broadcast traffic" msgstr "" +msgid "Forward mesh peer traffic" +msgstr "" + msgid "Forwarding mode" msgstr "" @@ -1325,9 +1364,6 @@ msgstr "" msgid "HT mode (802.11n)" msgstr "" -msgid "Handler" -msgstr "Handler" - msgid "Hang Up" msgstr "Hang Up" @@ -1912,9 +1948,6 @@ msgstr "" msgid "Maximum amount of seconds to wait for the modem to become ready" msgstr "" -msgid "Maximum hold time" -msgstr "Maximum hold time" - msgid "" "Maximum length of the name is 15 characters including the automatic protocol/" "bridge prefix (br-, 6in4-, pppoe- etc.)" @@ -1932,12 +1965,12 @@ msgstr "Memory" msgid "Memory usage (%)" msgstr "Memory usage (%)" +msgid "Mesh Id" +msgstr "" + msgid "Metric" msgstr "Metric" -msgid "Minimum hold time" -msgstr "Minimum hold time" - msgid "Mirror monitor port" msgstr "" @@ -2143,6 +2176,9 @@ msgstr "" msgid "Nslookup" msgstr "" +msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" +msgstr "" + msgid "OK" msgstr "OK" @@ -2155,6 +2191,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "" @@ -2382,9 +2421,6 @@ msgstr "" msgid "Path to Private Key" msgstr "Path to Private Key" -msgid "Path to executable which handles the button event" -msgstr "" - msgid "Path to inner CA-Certificate" msgstr "" @@ -2736,6 +2772,15 @@ msgstr "" msgid "Revert" msgstr "Revert" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "" @@ -2814,9 +2859,6 @@ msgstr "Save" msgid "Save & Apply" msgstr "Save & Apply" -msgid "Save & Apply" -msgstr "" - msgid "Scan" msgstr "Scan" @@ -2904,6 +2946,9 @@ msgstr "Size" msgid "Size (.ipk)" msgstr "" +msgid "Size of DNS query cache" +msgstr "" + msgid "Skip" msgstr "Skip" @@ -2946,9 +2991,6 @@ msgstr "Source" msgid "Source routing" msgstr "" -msgid "Specifies the button state to handle" -msgstr "Specifies the button state to handle" - msgid "Specifies the directory the device is attached to" msgstr "" @@ -2987,6 +3029,9 @@ msgstr "Start" msgid "Start priority" msgstr "Start priority" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "" @@ -3048,6 +3093,9 @@ msgid "" "Switch %q has an unknown topology - the VLAN settings might not be accurate." msgstr "" +msgid "Switch Port Mask" +msgstr "" + msgid "Switch VLAN" msgstr "" @@ -3134,6 +3182,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" msgid "" +"The device could not be reached within %d seconds after applying the pending " +"changes, which caused the configuration to be rolled back for safety " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3155,9 +3213,6 @@ msgid "" "\"Proceed\" below to start the flash procedure." msgstr "" -msgid "The following changes have been committed" -msgstr "" - msgid "The following changes have been reverted" msgstr "The following changes have been reverted" @@ -3230,7 +3285,7 @@ msgstr "" msgid "There are no active leases." msgstr "" -msgid "There are no pending changes to apply!" +msgid "There are no changes to apply." msgstr "" msgid "There are no pending changes to revert!" @@ -3276,7 +3331,7 @@ msgstr "" msgid "" "This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with <code>:2</code>" +"ends with <code>...:2/64</code>" msgstr "" msgid "" @@ -3307,9 +3362,6 @@ msgstr "" "This list gives an overview over currently running system processes and " "their status." -msgid "This page allows the configuration of custom button actions" -msgstr "" - msgid "This page gives an overview over currently active network connections." msgstr "This page gives an overview over currently active network connections." @@ -3491,9 +3543,9 @@ msgstr "" msgid "" "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</" -"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed " -"address to use and the <em>Hostname</em> is assigned as symbolic name to the " -"requesting host. The optional <em>Lease time</em> can be used to set non-" +"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed " +"address to use, and the <em>Hostname</em> is assigned as a symbolic name to " +"the requesting host. The optional <em>Lease time</em> can be used to set non-" "standard host-specific lease time, e.g. 12h, 3d or infinite." msgstr "" @@ -3600,6 +3652,9 @@ msgstr "" msgid "Waiting for command to complete..." msgstr "" +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3790,6 +3845,9 @@ msgstr "" msgid "overlay" msgstr "" +msgid "random" +msgstr "" + msgid "relay mode" msgstr "" @@ -3835,6 +3893,33 @@ msgstr "" msgid "« Back" msgstr "« Back" +#~ msgid "Apply" +#~ msgstr "Apply" + +#~ msgid "Applying changes" +#~ msgstr "Applying changes" + +#~ msgid "Configuration applied." +#~ msgstr "Configuration applied." + +#~ msgid "Action" +#~ msgstr "Action" + +#~ msgid "Buttons" +#~ msgstr "Buttons" + +#~ msgid "Handler" +#~ msgstr "Handler" + +#~ msgid "Maximum hold time" +#~ msgstr "Maximum hold time" + +#~ msgid "Minimum hold time" +#~ msgstr "Minimum hold time" + +#~ msgid "Specifies the button state to handle" +#~ msgstr "Specifies the button state to handle" + #~ msgid "Leasetime" #~ msgstr "Leasetime" diff --git a/modules/luci-base/po/es/base.po b/modules/luci-base/po/es/base.po index 088bdbd104..66811e74ce 100644 --- a/modules/luci-base/po/es/base.po +++ b/modules/luci-base/po/es/base.po @@ -222,9 +222,6 @@ msgstr "Concentrador de acceso" msgid "Access Point" msgstr "Punto de Acceso" -msgid "Action" -msgstr "Acción" - msgid "Actions" msgstr "Acciones" @@ -300,6 +297,9 @@ msgstr "" msgid "Allow all except listed" msgstr "Permitir a todos excepto a los de la lista" +msgid "Allow legacy 802.11b rates" +msgstr "" + msgid "Allow listed only" msgstr "Permitir a los pertenecientes en la lista" @@ -406,11 +406,11 @@ msgstr "Configuración de la antena" msgid "Any zone" msgstr "Cualquier zona" -msgid "Apply" -msgstr "Aplicar" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "Aplicando cambios" +msgid "Apply unchecked" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -570,9 +570,6 @@ msgid "" "preserved in any sysupgrade." msgstr "" -msgid "Buttons" -msgstr "Botones" - msgid "CA certificate; if empty it will be saved after the first connection." msgstr "" @@ -594,16 +591,24 @@ msgstr "Cambios" msgid "Changes applied." msgstr "Cambios aplicados." +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "Cambie la contraseña del administrador para acceder al dispositivo" msgid "Channel" msgstr "Canal" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "Comprobar" -msgid "Check fileystems before mount" +msgid "Check filesystems before mount" msgstr "" msgid "Check this option to delete the existing networks from this radio." @@ -680,12 +685,15 @@ msgstr "" msgid "Configuration" msgstr "Configuración" -msgid "Configuration applied." -msgstr "Configuración establecida." - msgid "Configuration files will be kept." msgstr "Se mantendrán los ficheros de configuración." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "Confirmación" @@ -704,6 +712,12 @@ msgstr "" msgid "Connections" msgstr "Conexiones" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "País" @@ -746,6 +760,11 @@ msgid "Custom feeds" msgstr "" msgid "" +"Custom files (certificates, scripts) may remain on the system. To prevent " +"this, perform a factory-reset first." +msgstr "" + +msgid "" "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode" "\">LED</abbr>s if possible." msgstr "" @@ -872,6 +891,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "Diagnósticos" @@ -906,6 +928,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "Descartar respuestas RFC1918 salientes" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "Mostrar sólo paquete que contienen" @@ -1021,6 +1046,11 @@ msgstr "Emergencia" msgid "Enable" msgstr "Activar" +msgid "" +"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> " +"snooping" +msgstr "" + msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>" msgstr "Activar <abbr title=\"Spanning Tree Protocol\">STP</abbr>" @@ -1078,6 +1108,9 @@ msgstr "Activar/Desactivar" msgid "Enabled" msgstr "Activado" +msgid "Enables IGMP snooping on this bridge" +msgstr "" + msgid "" "Enables fast roaming among access points that belong to the same Mobility " "Domain" @@ -1159,6 +1192,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "Fichero" @@ -1260,6 +1296,9 @@ msgstr "" msgid "Forward broadcast traffic" msgstr "Retransmitir tráfico de propagación" +msgid "Forward mesh peer traffic" +msgstr "" + msgid "Forwarding mode" msgstr "Modo de retransmisión" @@ -1346,9 +1385,6 @@ msgstr "" msgid "HT mode (802.11n)" msgstr "" -msgid "Handler" -msgstr "Manejador" - msgid "Hang Up" msgstr "Suspender" @@ -1951,9 +1987,6 @@ msgstr "Tamaño máximo de paquetes EDNS.0 paquetes UDP" msgid "Maximum amount of seconds to wait for the modem to become ready" msgstr "Segundos máximos de espera a que el módem esté activo" -msgid "Maximum hold time" -msgstr "Pausa máxima de transmisión" - msgid "" "Maximum length of the name is 15 characters including the automatic protocol/" "bridge prefix (br-, 6in4-, pppoe- etc.)" @@ -1971,12 +2004,12 @@ msgstr "Memoria" msgid "Memory usage (%)" msgstr "Uso de memoria (%)" +msgid "Mesh Id" +msgstr "" + msgid "Metric" msgstr "Métrica" -msgid "Minimum hold time" -msgstr "Pausa mínima de espera" - msgid "Mirror monitor port" msgstr "" @@ -2182,6 +2215,9 @@ msgstr "Aviso" msgid "Nslookup" msgstr "NSLookup" +msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" +msgstr "" + msgid "OK" msgstr "Aceptar" @@ -2194,6 +2230,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "Retraso de desconexión" @@ -2422,9 +2461,6 @@ msgstr "Camino al certificado de cliente" msgid "Path to Private Key" msgstr "Ruta a la Clave Privada" -msgid "Path to executable which handles the button event" -msgstr "Ruta al ejecutable que maneja el evento button" - msgid "Path to inner CA-Certificate" msgstr "" @@ -2790,6 +2826,15 @@ msgstr "Mostrar/ocultar contraseña" msgid "Revert" msgstr "Anular" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "Raíz" @@ -2868,9 +2913,6 @@ msgstr "Guardar" msgid "Save & Apply" msgstr "Guardar y aplicar" -msgid "Save & Apply" -msgstr "Guardar y aplicar" - msgid "Scan" msgstr "Explorar" @@ -2961,6 +3003,9 @@ msgstr "Tamaño" msgid "Size (.ipk)" msgstr "" +msgid "Size of DNS query cache" +msgstr "" + msgid "Skip" msgstr "Saltar" @@ -3006,9 +3051,6 @@ msgstr "Origen" msgid "Source routing" msgstr "" -msgid "Specifies the button state to handle" -msgstr "Especifica el estado de botón a manejar" - msgid "Specifies the directory the device is attached to" msgstr "Especifica el directorio al que está enlazado el dispositivo" @@ -3052,6 +3094,9 @@ msgstr "Arrancar" msgid "Start priority" msgstr "Prioridad de arranque" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "Arranque" @@ -3117,6 +3162,9 @@ msgid "" "Switch %q has an unknown topology - the VLAN settings might not be accurate." msgstr "" +msgid "Switch Port Mask" +msgstr "" + msgid "Switch VLAN" msgstr "" @@ -3216,6 +3264,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" msgid "" +"The device could not be reached within %d seconds after applying the pending " +"changes, which caused the configuration to be rolled back for safety " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3240,9 +3298,6 @@ msgstr "" "coinciden con los del original.<br />Pulse \"Proceder\" para empezar el " "grabado." -msgid "The following changes have been committed" -msgstr "Se han hecho los siguientes cambios" - msgid "The following changes have been reverted" msgstr "Se han anulado los siguientes cambios" @@ -3326,8 +3381,8 @@ msgstr "" msgid "There are no active leases." msgstr "Sin cesiones activas." -msgid "There are no pending changes to apply!" -msgstr "¡No hay cambios pendientes!" +msgid "There are no changes to apply." +msgstr "" msgid "There are no pending changes to revert!" msgstr "¡No hay cambios a anular!" @@ -3381,10 +3436,10 @@ msgstr "" msgid "" "This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with <code>:2</code>" +"ends with <code>...:2/64</code>" msgstr "" "Esta es la dirección de punto final asignada por el broker del túnel, suele " -"terminar con <code>:2</code>" +"terminar con <code>...:2/64</code>" msgid "" "This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</" @@ -3414,9 +3469,6 @@ msgid "" "their status." msgstr "Procesos de sistema que se están ejecutando actualmente y su estado." -msgid "This page allows the configuration of custom button actions" -msgstr "Configuración de acciones personalizadas para los botones" - msgid "This page gives an overview over currently active network connections." msgstr "Conexiones de red activas." @@ -3603,9 +3655,9 @@ msgstr "Usar tabla de rutas" msgid "" "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</" -"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed " -"address to use and the <em>Hostname</em> is assigned as symbolic name to the " -"requesting host. The optional <em>Lease time</em> can be used to set non-" +"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed " +"address to use, and the <em>Hostname</em> is assigned as a symbolic name to " +"the requesting host. The optional <em>Lease time</em> can be used to set non-" "standard host-specific lease time, e.g. 12h, 3d or infinite." msgstr "" "Pulse el botón <em>Añadir</em> para insertar una nueva cesión. <em>Dirección " @@ -3716,6 +3768,9 @@ msgstr "Esperando a que se realicen los cambios..." msgid "Waiting for command to complete..." msgstr "Esperando a que termine el comando..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3908,6 +3963,9 @@ msgstr "abierto" msgid "overlay" msgstr "" +msgid "random" +msgstr "" + msgid "relay mode" msgstr "" @@ -3953,6 +4011,48 @@ msgstr "sí" msgid "« Back" msgstr "« Volver" +#~ msgid "Apply" +#~ msgstr "Aplicar" + +#~ msgid "Applying changes" +#~ msgstr "Aplicando cambios" + +#~ msgid "Configuration applied." +#~ msgstr "Configuración establecida." + +#~ msgid "Save & Apply" +#~ msgstr "Guardar y aplicar" + +#~ msgid "The following changes have been committed" +#~ msgstr "Se han hecho los siguientes cambios" + +#~ msgid "There are no pending changes to apply!" +#~ msgstr "¡No hay cambios pendientes!" + +#~ msgid "Action" +#~ msgstr "Acción" + +#~ msgid "Buttons" +#~ msgstr "Botones" + +#~ msgid "Handler" +#~ msgstr "Manejador" + +#~ msgid "Maximum hold time" +#~ msgstr "Pausa máxima de transmisión" + +#~ msgid "Minimum hold time" +#~ msgstr "Pausa mínima de espera" + +#~ msgid "Path to executable which handles the button event" +#~ msgstr "Ruta al ejecutable que maneja el evento button" + +#~ msgid "Specifies the button state to handle" +#~ msgstr "Especifica el estado de botón a manejar" + +#~ msgid "This page allows the configuration of custom button actions" +#~ msgstr "Configuración de acciones personalizadas para los botones" + #~ msgid "Leasetime" #~ msgstr "Tiempo de cesión" diff --git a/modules/luci-base/po/fr/base.po b/modules/luci-base/po/fr/base.po index a94ffb3a88..17d1248518 100644 --- a/modules/luci-base/po/fr/base.po +++ b/modules/luci-base/po/fr/base.po @@ -225,9 +225,6 @@ msgstr "Concentrateur d'accès" msgid "Access Point" msgstr "Point d'accès" -msgid "Action" -msgstr "Action" - msgid "Actions" msgstr "Actions" @@ -302,6 +299,9 @@ msgstr "" msgid "Allow all except listed" msgstr "Autoriser tout sauf ce qui est listé" +msgid "Allow legacy 802.11b rates" +msgstr "" + msgid "Allow listed only" msgstr "Autoriser seulement ce qui est listé" @@ -412,11 +412,11 @@ msgstr "Configuration de l'antenne" msgid "Any zone" msgstr "N'importe quelle zone" -msgid "Apply" -msgstr "Appliquer" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "Changements en cours" +msgid "Apply unchecked" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -575,9 +575,6 @@ msgid "" "preserved in any sysupgrade." msgstr "" -msgid "Buttons" -msgstr "Boutons" - msgid "CA certificate; if empty it will be saved after the first connection." msgstr "" @@ -599,16 +596,24 @@ msgstr "Changements" msgid "Changes applied." msgstr "Changements appliqués." +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "Change le mot de passe administrateur pour accéder à l'équipement" msgid "Channel" msgstr "Canal" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "Vérification" -msgid "Check fileystems before mount" +msgid "Check filesystems before mount" msgstr "" msgid "Check this option to delete the existing networks from this radio." @@ -687,12 +692,15 @@ msgstr "" msgid "Configuration" msgstr "Configuration" -msgid "Configuration applied." -msgstr "Configuration appliquée." - msgid "Configuration files will be kept." msgstr "Les fichiers de configuration seront préservés." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "Confirmation" @@ -711,6 +719,12 @@ msgstr "" msgid "Connections" msgstr "Connexions" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "Pays" @@ -753,6 +767,11 @@ msgid "Custom feeds" msgstr "" msgid "" +"Custom files (certificates, scripts) may remain on the system. To prevent " +"this, perform a factory-reset first." +msgstr "" + +msgid "" "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode" "\">LED</abbr>s if possible." msgstr "" @@ -879,6 +898,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "Diagnostics" @@ -913,6 +935,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "Jeter les réponses en RFC1918 amont" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "N'afficher que les paquets contenant" @@ -1031,6 +1056,11 @@ msgstr "Urgence" msgid "Enable" msgstr "Activer" +msgid "" +"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> " +"snooping" +msgstr "" + msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>" msgstr "Activer le protocole <abbr title=\"Spanning Tree Protocol\">STP</abbr>" @@ -1088,6 +1118,9 @@ msgstr "Activer/Désactiver" msgid "Enabled" msgstr "Activé" +msgid "Enables IGMP snooping on this bridge" +msgstr "" + msgid "" "Enables fast roaming among access points that belong to the same Mobility " "Domain" @@ -1171,6 +1204,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "Fichier" @@ -1272,6 +1308,9 @@ msgstr "" msgid "Forward broadcast traffic" msgstr "Transmettre le trafic de diffusion" +msgid "Forward mesh peer traffic" +msgstr "" + msgid "Forwarding mode" msgstr "Mode de transmission" @@ -1357,9 +1396,6 @@ msgstr "" msgid "HT mode (802.11n)" msgstr "" -msgid "Handler" -msgstr "Gestionnaire" - msgid "Hang Up" msgstr "Signal (HUP)" @@ -1965,9 +2001,6 @@ msgstr "Taille maximum autorisée des paquets UDP EDNS.0" msgid "Maximum amount of seconds to wait for the modem to become ready" msgstr "Délai d'attente maximum que le modem soit prêt" -msgid "Maximum hold time" -msgstr "Temps de maintien maximum" - msgid "" "Maximum length of the name is 15 characters including the automatic protocol/" "bridge prefix (br-, 6in4-, pppoe- etc.)" @@ -1985,12 +2018,12 @@ msgstr "Mémoire" msgid "Memory usage (%)" msgstr "Utilisation Mémoire (%)" +msgid "Mesh Id" +msgstr "" + msgid "Metric" msgstr "Metrique" -msgid "Minimum hold time" -msgstr "Temps de maintien mimimum" - msgid "Mirror monitor port" msgstr "" @@ -2196,6 +2229,9 @@ msgstr "Note" msgid "Nslookup" msgstr "Nslookup" +msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" +msgstr "" + msgid "OK" msgstr "OK" @@ -2208,6 +2244,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "Durée éteinte" @@ -2435,9 +2474,6 @@ msgstr "Chemin du certificat-client" msgid "Path to Private Key" msgstr "Chemin de la clé privée" -msgid "Path to executable which handles the button event" -msgstr "Chemin du programme exécutable gérant les évènements liés au bouton" - msgid "Path to inner CA-Certificate" msgstr "" @@ -2803,6 +2839,15 @@ msgstr "Montrer/cacher le mot de passe" msgid "Revert" msgstr "Revenir" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "Racine" @@ -2882,9 +2927,6 @@ msgstr "Sauvegarder" msgid "Save & Apply" msgstr "Sauvegarder et Appliquer" -msgid "Save & Apply" -msgstr "Sauvegarder et appliquer" - msgid "Scan" msgstr "Scan" @@ -2975,6 +3017,9 @@ msgstr "Taille" msgid "Size (.ipk)" msgstr "" +msgid "Size of DNS query cache" +msgstr "" + msgid "Skip" msgstr "Passer au suivant" @@ -3021,9 +3066,6 @@ msgstr "Source" msgid "Source routing" msgstr "" -msgid "Specifies the button state to handle" -msgstr "Indique l'état du bouton à gérer" - msgid "Specifies the directory the device is attached to" msgstr "Indique le répertoire auquel le périphérique est rattaché" @@ -3064,6 +3106,9 @@ msgstr "Démarrer" msgid "Start priority" msgstr "Priorité de démarrage" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "Démarrage" @@ -3129,6 +3174,9 @@ msgid "" "Switch %q has an unknown topology - the VLAN settings might not be accurate." msgstr "" +msgid "Switch Port Mask" +msgstr "" + msgid "Switch VLAN" msgstr "" @@ -3228,6 +3276,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" msgid "" +"The device could not be reached within %d seconds after applying the pending " +"changes, which caused the configuration to be rolled back for safety " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "Le périphérique de bloc contenant la partition (ex : /dev/sda1)" @@ -3250,9 +3308,6 @@ msgstr "" "assurer de son intégrité.<br /> Cliquez sur \"Continuer\" pour lancer la " "procédure d'écriture." -msgid "The following changes have been committed" -msgstr "Les changements suivants ont été appliqués" - msgid "The following changes have been reverted" msgstr "Les changements suivants ont été annulés" @@ -3339,8 +3394,8 @@ msgstr "" msgid "There are no active leases." msgstr "Il n'y a aucun bail actif." -msgid "There are no pending changes to apply!" -msgstr "Il n'y a aucun changement en attente d'être appliqués !" +msgid "There are no changes to apply." +msgstr "" msgid "There are no pending changes to revert!" msgstr "Il n'y a aucun changement à annuler !" @@ -3396,10 +3451,10 @@ msgstr "" msgid "" "This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with <code>:2</code>" +"ends with <code>...:2/64</code>" msgstr "" "Il s'agit de l'adresse de l'extrémité locale attribuée par le fournisseur de " -"tunnels, elle se termine habituellement avec <code>:2</code>" +"tunnels, elle se termine habituellement avec <code>...:2/64</code>" msgid "" "This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</" @@ -3430,9 +3485,6 @@ msgstr "" "Cette liste donne une vue d'ensemble des processus en exécution et leur " "statut." -msgid "This page allows the configuration of custom button actions" -msgstr "Cette page permet la configuration d'actions spécifiques des boutons" - msgid "This page gives an overview over currently active network connections." msgstr "" "Cette page donne une vue d'ensemble des connexions réseaux actuellement " @@ -3622,9 +3674,9 @@ msgstr "Utiliser la table de routage" msgid "" "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</" -"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed " -"address to use and the <em>Hostname</em> is assigned as symbolic name to the " -"requesting host. The optional <em>Lease time</em> can be used to set non-" +"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed " +"address to use, and the <em>Hostname</em> is assigned as a symbolic name to " +"the requesting host. The optional <em>Lease time</em> can be used to set non-" "standard host-specific lease time, e.g. 12h, 3d or infinite." msgstr "" "Utiliser le bouton <em>Ajouter</em> pour créer un nouveau bail. " @@ -3735,6 +3787,9 @@ msgstr "En attente de l'application des changements..." msgid "Waiting for command to complete..." msgstr "En attente de la fin de la commande..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3926,6 +3981,9 @@ msgstr "ouvrir" msgid "overlay" msgstr "" +msgid "random" +msgstr "" + msgid "relay mode" msgstr "" @@ -3971,6 +4029,49 @@ msgstr "oui" msgid "« Back" msgstr "« Retour" +#~ msgid "Apply" +#~ msgstr "Appliquer" + +#~ msgid "Applying changes" +#~ msgstr "Changements en cours" + +#~ msgid "Configuration applied." +#~ msgstr "Configuration appliquée." + +#~ msgid "Save & Apply" +#~ msgstr "Sauvegarder et appliquer" + +#~ msgid "The following changes have been committed" +#~ msgstr "Les changements suivants ont été appliqués" + +#~ msgid "There are no pending changes to apply!" +#~ msgstr "Il n'y a aucun changement en attente d'être appliqués !" + +#~ msgid "Action" +#~ msgstr "Action" + +#~ msgid "Buttons" +#~ msgstr "Boutons" + +#~ msgid "Handler" +#~ msgstr "Gestionnaire" + +#~ msgid "Maximum hold time" +#~ msgstr "Temps de maintien maximum" + +#~ msgid "Minimum hold time" +#~ msgstr "Temps de maintien mimimum" + +#~ msgid "Path to executable which handles the button event" +#~ msgstr "Chemin du programme exécutable gérant les évènements liés au bouton" + +#~ msgid "Specifies the button state to handle" +#~ msgstr "Indique l'état du bouton à gérer" + +#~ msgid "This page allows the configuration of custom button actions" +#~ msgstr "" +#~ "Cette page permet la configuration d'actions spécifiques des boutons" + #~ msgid "Leasetime" #~ msgstr "Durée du bail" diff --git a/modules/luci-base/po/he/base.po b/modules/luci-base/po/he/base.po index 2997941335..793dc80715 100644 --- a/modules/luci-base/po/he/base.po +++ b/modules/luci-base/po/he/base.po @@ -213,9 +213,6 @@ msgstr "מרכז גישות" msgid "Access Point" msgstr "נקודת גישה" -msgid "Action" -msgstr "פעולה" - msgid "Actions" msgstr "פעולות" @@ -293,6 +290,9 @@ msgstr "" msgid "Allow all except listed" msgstr "אפשר הכל חוץ מהרשומים" +msgid "Allow legacy 802.11b rates" +msgstr "" + msgid "Allow listed only" msgstr "אפשר רשומים בלבד" @@ -401,11 +401,11 @@ msgstr "הגדרות אנטנה" msgid "Any zone" msgstr "כל תחום" -msgid "Apply" -msgstr "החל" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "מחיל הגדרות" +msgid "Apply unchecked" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -565,9 +565,6 @@ msgid "" "preserved in any sysupgrade." msgstr "" -msgid "Buttons" -msgstr "כפתורים" - msgid "CA certificate; if empty it will be saved after the first connection." msgstr "" @@ -589,16 +586,24 @@ msgstr "שינויים" msgid "Changes applied." msgstr "השינויים הוחלו" +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "משנה את סיסמת המנהל לגישה למכשיר" msgid "Channel" msgstr "ערוץ" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "לבדוק" -msgid "Check fileystems before mount" +msgid "Check filesystems before mount" msgstr "" msgid "Check this option to delete the existing networks from this radio." @@ -664,12 +669,15 @@ msgstr "" msgid "Configuration" msgstr "הגדרות" -msgid "Configuration applied." -msgstr "הגדרות הוחלו" - msgid "Configuration files will be kept." msgstr "קבצי ההגדרות ישמרו." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "אישור" @@ -688,6 +696,12 @@ msgstr "" msgid "Connections" msgstr "חיבורים" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "מדינה" @@ -730,6 +744,11 @@ msgid "Custom feeds" msgstr "" msgid "" +"Custom files (certificates, scripts) may remain on the system. To prevent " +"this, perform a factory-reset first." +msgstr "" + +msgid "" "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode" "\">LED</abbr>s if possible." msgstr "" @@ -855,6 +874,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "אבחון" @@ -887,6 +909,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "מציג רק חבילות המכילות" @@ -991,6 +1016,11 @@ msgstr "מצב חרום" msgid "Enable" msgstr "אפשר" +msgid "" +"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> " +"snooping" +msgstr "" + msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>" msgstr "אפשר <abbr title=\"Spanning Tree Protocol\">STP</abbr>" @@ -1048,6 +1078,9 @@ msgstr "" msgid "Enabled" msgstr "אפשר" +msgid "Enables IGMP snooping on this bridge" +msgstr "" + msgid "" "Enables fast roaming among access points that belong to the same Mobility " "Domain" @@ -1126,6 +1159,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "" @@ -1227,6 +1263,9 @@ msgstr "" msgid "Forward broadcast traffic" msgstr "" +msgid "Forward mesh peer traffic" +msgstr "" + msgid "Forwarding mode" msgstr "" @@ -1310,9 +1349,6 @@ msgstr "" msgid "HT mode (802.11n)" msgstr "" -msgid "Handler" -msgstr "" - msgid "Hang Up" msgstr "" @@ -1887,9 +1923,6 @@ msgstr "" msgid "Maximum amount of seconds to wait for the modem to become ready" msgstr "" -msgid "Maximum hold time" -msgstr "" - msgid "" "Maximum length of the name is 15 characters including the automatic protocol/" "bridge prefix (br-, 6in4-, pppoe- etc.)" @@ -1907,10 +1940,10 @@ msgstr "" msgid "Memory usage (%)" msgstr "" -msgid "Metric" +msgid "Mesh Id" msgstr "" -msgid "Minimum hold time" +msgid "Metric" msgstr "" msgid "Mirror monitor port" @@ -2116,6 +2149,9 @@ msgstr "" msgid "Nslookup" msgstr "" +msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" +msgstr "" + msgid "OK" msgstr "" @@ -2128,6 +2164,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "" @@ -2349,9 +2388,6 @@ msgstr "" msgid "Path to Private Key" msgstr "נתיב למפתח הפרטי" -msgid "Path to executable which handles the button event" -msgstr "" - msgid "Path to inner CA-Certificate" msgstr "" @@ -2704,6 +2740,15 @@ msgstr "" msgid "Revert" msgstr "" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "" @@ -2780,9 +2825,6 @@ msgstr "" msgid "Save & Apply" msgstr "" -msgid "Save & Apply" -msgstr "" - msgid "Scan" msgstr "" @@ -2871,6 +2913,9 @@ msgstr "" msgid "Size (.ipk)" msgstr "" +msgid "Size of DNS query cache" +msgstr "" + msgid "Skip" msgstr "" @@ -2915,9 +2960,6 @@ msgstr "מקור" msgid "Source routing" msgstr "" -msgid "Specifies the button state to handle" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "" @@ -2956,6 +2998,9 @@ msgstr "" msgid "Start priority" msgstr "" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "אתחול" @@ -3020,6 +3065,9 @@ msgid "" "Switch %q has an unknown topology - the VLAN settings might not be accurate." msgstr "" +msgid "Switch Port Mask" +msgstr "" + msgid "Switch VLAN" msgstr "" @@ -3106,6 +3154,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" msgid "" +"The device could not be reached within %d seconds after applying the pending " +"changes, which caused the configuration to be rolled back for safety " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3122,9 +3180,6 @@ msgid "" "\"Proceed\" below to start the flash procedure." msgstr "" -msgid "The following changes have been committed" -msgstr "" - msgid "The following changes have been reverted" msgstr "" @@ -3191,7 +3246,7 @@ msgstr "" msgid "There are no active leases." msgstr "" -msgid "There are no pending changes to apply!" +msgid "There are no changes to apply." msgstr "" msgid "There are no pending changes to revert!" @@ -3237,7 +3292,7 @@ msgstr "" msgid "" "This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with <code>:2</code>" +"ends with <code>...:2/64</code>" msgstr "" msgid "" @@ -3264,9 +3319,6 @@ msgid "" "their status." msgstr "רשימה זו מציגה סקירה של תהליכי המערכת הרצים כרגע ואת מצבם." -msgid "This page allows the configuration of custom button actions" -msgstr "דף זה מאפשר להגדיר פעולות מיוחדות עבור הלחצנים." - msgid "This page gives an overview over currently active network connections." msgstr "דף זה מציג סקירה של חיבורי הרשת הפעילים כרגע." @@ -3449,9 +3501,9 @@ msgstr "השתמש בטבלת ניתוב" msgid "" "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</" -"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed " -"address to use and the <em>Hostname</em> is assigned as symbolic name to the " -"requesting host. The optional <em>Lease time</em> can be used to set non-" +"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed " +"address to use, and the <em>Hostname</em> is assigned as a symbolic name to " +"the requesting host. The optional <em>Lease time</em> can be used to set non-" "standard host-specific lease time, e.g. 12h, 3d or infinite." msgstr "" @@ -3556,6 +3608,9 @@ msgstr "" msgid "Waiting for command to complete..." msgstr "" +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3741,6 +3796,9 @@ msgstr "" msgid "overlay" msgstr "" +msgid "random" +msgstr "" + msgid "relay mode" msgstr "" @@ -3786,6 +3844,24 @@ msgstr "כן" msgid "« Back" msgstr "<< אחורה" +#~ msgid "Apply" +#~ msgstr "החל" + +#~ msgid "Applying changes" +#~ msgstr "מחיל הגדרות" + +#~ msgid "Configuration applied." +#~ msgstr "הגדרות הוחלו" + +#~ msgid "Action" +#~ msgstr "פעולה" + +#~ msgid "Buttons" +#~ msgstr "כפתורים" + +#~ msgid "This page allows the configuration of custom button actions" +#~ msgstr "דף זה מאפשר להגדיר פעולות מיוחדות עבור הלחצנים." + #~ msgid "AR Support" #~ msgstr "תמיכת AR" diff --git a/modules/luci-base/po/hu/base.po b/modules/luci-base/po/hu/base.po index 00b4d77d71..a900733ae7 100644 --- a/modules/luci-base/po/hu/base.po +++ b/modules/luci-base/po/hu/base.po @@ -218,9 +218,6 @@ msgstr "Elérési központ" msgid "Access Point" msgstr "Hozzáférési pont" -msgid "Action" -msgstr "Művelet" - msgid "Actions" msgstr "Műveletek" @@ -296,6 +293,9 @@ msgstr "" msgid "Allow all except listed" msgstr "Összes engedélyezése a felsoroltakon kívül" +msgid "Allow legacy 802.11b rates" +msgstr "" + msgid "Allow listed only" msgstr "Csak a felsoroltak engedélyezése" @@ -405,11 +405,11 @@ msgstr "Antenna beállítások" msgid "Any zone" msgstr "Bármelyik zóna" -msgid "Apply" -msgstr "Alkalmaz" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "Módosítások alkalmazása" +msgid "Apply unchecked" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -569,9 +569,6 @@ msgid "" "preserved in any sysupgrade." msgstr "" -msgid "Buttons" -msgstr "Gombok" - msgid "CA certificate; if empty it will be saved after the first connection." msgstr "" @@ -593,6 +590,9 @@ msgstr "Módosítások" msgid "Changes applied." msgstr "A módosítások alkalmazva." +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "" "Itt módosíthatja az eszköz eléréséhez szükséges adminisztrátori jelszót" @@ -600,10 +600,15 @@ msgstr "" msgid "Channel" msgstr "Csatorna" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "Ellenőrzés" -msgid "Check fileystems before mount" +msgid "Check filesystems before mount" msgstr "" msgid "Check this option to delete the existing networks from this radio." @@ -682,12 +687,15 @@ msgstr "" msgid "Configuration" msgstr "Beállítás" -msgid "Configuration applied." -msgstr "Beállítások alkalmazva." - msgid "Configuration files will be kept." msgstr "A konfigurációs fájlok megmaradnak." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "Megerősítés" @@ -706,6 +714,12 @@ msgstr "" msgid "Connections" msgstr "Kapcsolatok" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "Ország" @@ -748,6 +762,11 @@ msgid "Custom feeds" msgstr "" msgid "" +"Custom files (certificates, scripts) may remain on the system. To prevent " +"this, perform a factory-reset first." +msgstr "" + +msgid "" "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode" "\">LED</abbr>s if possible." msgstr "" @@ -873,6 +892,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "Diagnosztika" @@ -907,6 +929,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "Beérkező RFC1918 DHCP válaszok elvetése. " +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "Csak azon csomagok megjelenítése, amelyek tartalmazzák" @@ -1024,6 +1049,11 @@ msgstr "Vészhelyzet" msgid "Enable" msgstr "Engedélyezés" +msgid "" +"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> " +"snooping" +msgstr "" + msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>" msgstr "<abbr title=\"Spanning Tree Protocol\">STP</abbr> engedélyezése" @@ -1081,6 +1111,9 @@ msgstr "Engedélyezés/Letiltás" msgid "Enabled" msgstr "Engedélyezve" +msgid "Enables IGMP snooping on this bridge" +msgstr "" + msgid "" "Enables fast roaming among access points that belong to the same Mobility " "Domain" @@ -1160,6 +1193,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "Fájl" @@ -1263,6 +1299,9 @@ msgstr "" msgid "Forward broadcast traffic" msgstr "Broadcast forgalom továbbítás" +msgid "Forward mesh peer traffic" +msgstr "" + msgid "Forwarding mode" msgstr "Továbbítás módja" @@ -1346,9 +1385,6 @@ msgstr "" msgid "HT mode (802.11n)" msgstr "" -msgid "Handler" -msgstr "Kezelő" - msgid "Hang Up" msgstr "Befejezés" @@ -1954,9 +1990,6 @@ msgstr "EDNS.0 UDP csomagok maximális mérete" msgid "Maximum amount of seconds to wait for the modem to become ready" msgstr "Maximális várakozási idő a modem kész állapotára (másodpercben)" -msgid "Maximum hold time" -msgstr "Maximális tartási idő" - msgid "" "Maximum length of the name is 15 characters including the automatic protocol/" "bridge prefix (br-, 6in4-, pppoe- etc.)" @@ -1974,12 +2007,12 @@ msgstr "Memória" msgid "Memory usage (%)" msgstr "Memória használat (%)" +msgid "Mesh Id" +msgstr "" + msgid "Metric" msgstr "Metrika" -msgid "Minimum hold time" -msgstr "Minimális tartási idő" - msgid "Mirror monitor port" msgstr "" @@ -2185,6 +2218,9 @@ msgstr "Megjegyzés" msgid "Nslookup" msgstr "Nslookup" +msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" +msgstr "" + msgid "OK" msgstr "OK" @@ -2197,6 +2233,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "Kikapcsolt állapot késleltetés" @@ -2425,9 +2464,6 @@ msgstr "Kliens tanúsítvány elérési útja" msgid "Path to Private Key" msgstr "A privát kulcs elérési útja" -msgid "Path to executable which handles the button event" -msgstr "A gomb eseményeit kezelő végrehajtható állomány elérési útja" - msgid "Path to inner CA-Certificate" msgstr "" @@ -2795,6 +2831,15 @@ msgstr "Jelszó mutatása/elrejtése" msgid "Revert" msgstr "Visszavonás" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "Gyökérkönyvtár" @@ -2873,9 +2918,6 @@ msgstr "Mentés" msgid "Save & Apply" msgstr "Mentés & Alkalmazás" -msgid "Save & Apply" -msgstr "Mentés & Alkalmazás" - msgid "Scan" msgstr "Felderítés" @@ -2966,6 +3008,9 @@ msgstr "Méret" msgid "Size (.ipk)" msgstr "" +msgid "Size of DNS query cache" +msgstr "" + msgid "Skip" msgstr "Ugrás" @@ -3011,9 +3056,6 @@ msgstr "Forrás" msgid "Source routing" msgstr "" -msgid "Specifies the button state to handle" -msgstr "Meghatározza a gomb kezelendő állapotát" - msgid "Specifies the directory the device is attached to" msgstr "Megadja az eszköz csatlakozási könyvtárát." @@ -3055,6 +3097,9 @@ msgstr "Indítás" msgid "Start priority" msgstr "Indítás prioritása" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "Rendszerindítás" @@ -3120,6 +3165,9 @@ msgid "" "Switch %q has an unknown topology - the VLAN settings might not be accurate." msgstr "" +msgid "Switch Port Mask" +msgstr "" + msgid "Switch VLAN" msgstr "" @@ -3217,6 +3265,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" msgid "" +"The device could not be reached within %d seconds after applying the pending " +"changes, which caused the configuration to be rolled back for safety " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3242,9 +3300,6 @@ msgstr "" "ellenőrzéséhez.<br />Kattintson az alábbi \"Folytatás\" gombra a flash-elési " "eljárás elindításához." -msgid "The following changes have been committed" -msgstr "A következő módosítások lettek alkalmazva" - msgid "The following changes have been reverted" msgstr "A következő módosítások lettek visszavonva" @@ -3328,8 +3383,8 @@ msgstr "" msgid "There are no active leases." msgstr "Nincsenek aktív bérletek." -msgid "There are no pending changes to apply!" -msgstr "Nincsenek alkalmazásra váró módosítások!" +msgid "There are no changes to apply." +msgstr "" msgid "There are no pending changes to revert!" msgstr "Nincsenek visszavonásra váró változtatások!" @@ -3384,10 +3439,10 @@ msgstr "" msgid "" "This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with <code>:2</code>" +"ends with <code>...:2/64</code>" msgstr "" "Ez az alagút közvetítő (tunnel broker) által megadott helyi végpont címe, " -"általában így végződik: <code>:2</code>" +"általában így végződik: <code>...:2/64</code>" msgid "" "This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</" @@ -3419,9 +3474,6 @@ msgstr "" "Ez a lista a rendszerben jelenleg futó folyamatokról és azok állapotáról ad " "áttekintést." -msgid "This page allows the configuration of custom button actions" -msgstr "Ez a lap a gombok egyedi működésének beállítását teszi lehetővé" - msgid "This page gives an overview over currently active network connections." msgstr "" "Ez a lap a rendszerben jelenleg aktív hálózati kapcsolatokról ad áttekintést." @@ -3609,9 +3661,9 @@ msgstr "Útválasztó tábla használata" msgid "" "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</" -"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed " -"address to use and the <em>Hostname</em> is assigned as symbolic name to the " -"requesting host. The optional <em>Lease time</em> can be used to set non-" +"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed " +"address to use, and the <em>Hostname</em> is assigned as a symbolic name to " +"the requesting host. The optional <em>Lease time</em> can be used to set non-" "standard host-specific lease time, e.g. 12h, 3d or infinite." msgstr "" "Használja a <em>Hozzáadás</em> gombot új bérleti bejegyzés hozzáadásához. A " @@ -3722,6 +3774,9 @@ msgstr "Várakozás a változtatások alkalmazására..." msgid "Waiting for command to complete..." msgstr "Várakozás a parancs befejezésére..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3915,6 +3970,9 @@ msgstr "nyitás" msgid "overlay" msgstr "" +msgid "random" +msgstr "" + msgid "relay mode" msgstr "" @@ -3960,6 +4018,48 @@ msgstr "igen" msgid "« Back" msgstr "« Vissza" +#~ msgid "Apply" +#~ msgstr "Alkalmaz" + +#~ msgid "Applying changes" +#~ msgstr "Módosítások alkalmazása" + +#~ msgid "Configuration applied." +#~ msgstr "Beállítások alkalmazva." + +#~ msgid "Save & Apply" +#~ msgstr "Mentés & Alkalmazás" + +#~ msgid "The following changes have been committed" +#~ msgstr "A következő módosítások lettek alkalmazva" + +#~ msgid "There are no pending changes to apply!" +#~ msgstr "Nincsenek alkalmazásra váró módosítások!" + +#~ msgid "Action" +#~ msgstr "Művelet" + +#~ msgid "Buttons" +#~ msgstr "Gombok" + +#~ msgid "Handler" +#~ msgstr "Kezelő" + +#~ msgid "Maximum hold time" +#~ msgstr "Maximális tartási idő" + +#~ msgid "Minimum hold time" +#~ msgstr "Minimális tartási idő" + +#~ msgid "Path to executable which handles the button event" +#~ msgstr "A gomb eseményeit kezelő végrehajtható állomány elérési útja" + +#~ msgid "Specifies the button state to handle" +#~ msgstr "Meghatározza a gomb kezelendő állapotát" + +#~ msgid "This page allows the configuration of custom button actions" +#~ msgstr "Ez a lap a gombok egyedi működésének beállítását teszi lehetővé" + #~ msgid "Leasetime" #~ msgstr "Bérlet időtartama" diff --git a/modules/luci-base/po/it/base.po b/modules/luci-base/po/it/base.po index b90ca79bf7..b90d9cf7b0 100644 --- a/modules/luci-base/po/it/base.po +++ b/modules/luci-base/po/it/base.po @@ -225,9 +225,6 @@ msgstr "Accesso Concentratore" msgid "Access Point" msgstr "Punto di Accesso" -msgid "Action" -msgstr "Azione" - msgid "Actions" msgstr "Azioni" @@ -306,6 +303,9 @@ msgstr "" msgid "Allow all except listed" msgstr "Consenti tutti tranne quelli nell'elenco" +msgid "Allow legacy 802.11b rates" +msgstr "" + msgid "Allow listed only" msgstr "Consenti solo quelli nell'elenco" @@ -414,11 +414,11 @@ msgstr "Configurazione dell'Antenna" msgid "Any zone" msgstr "Qualsiasi Zona" -msgid "Apply" -msgstr "Applica" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "Applica modifiche" +msgid "Apply unchecked" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -577,9 +577,6 @@ msgid "" "preserved in any sysupgrade." msgstr "" -msgid "Buttons" -msgstr "Pulsanti" - msgid "CA certificate; if empty it will be saved after the first connection." msgstr "" @@ -601,16 +598,24 @@ msgstr "Modifiche" msgid "Changes applied." msgstr "Modifiche applicate." +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "Cambia la password di amministratore per accedere al dispositivo" msgid "Channel" msgstr "Canale" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "Verifica" -msgid "Check fileystems before mount" +msgid "Check filesystems before mount" msgstr "Controlla i filesystem prima di montare" msgid "Check this option to delete the existing networks from this radio." @@ -687,12 +692,15 @@ msgstr "" msgid "Configuration" msgstr "Configurazione" -msgid "Configuration applied." -msgstr "Configurazione salvata." - msgid "Configuration files will be kept." msgstr "I file di configurazione verranno mantenuti." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "Conferma" @@ -711,6 +719,12 @@ msgstr "" msgid "Connections" msgstr "Connessioni" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "Nazione" @@ -753,6 +767,11 @@ msgid "Custom feeds" msgstr "" msgid "" +"Custom files (certificates, scripts) may remain on the system. To prevent " +"this, perform a factory-reset first." +msgstr "" + +msgid "" "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode" "\">LED</abbr>s if possible." msgstr "" @@ -879,6 +898,9 @@ msgstr "Dispositivo in riavvio..." msgid "Device unreachable" msgstr "Dispositivo irraggiungibile" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "Diagnostica" @@ -913,6 +935,9 @@ msgstr "Disabilitato (default)" msgid "Discard upstream RFC1918 responses" msgstr "Ignora risposte RFC1918 upstream" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "Visualizza solo i pacchetti contenenti" @@ -1027,6 +1052,11 @@ msgstr "Emergenza" msgid "Enable" msgstr "Abilita" +msgid "" +"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> " +"snooping" +msgstr "" + msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>" msgstr "Abilita <abbr title=\"Spanning Tree Protocol\">STP</abbr>" @@ -1084,6 +1114,9 @@ msgstr "Abilita/Disabilita" msgid "Enabled" msgstr "Abilitato" +msgid "Enables IGMP snooping on this bridge" +msgstr "" + msgid "" "Enables fast roaming among access points that belong to the same Mobility " "Domain" @@ -1164,6 +1197,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "File" @@ -1265,6 +1301,9 @@ msgstr "" msgid "Forward broadcast traffic" msgstr "Inoltra il traffico broadcast" +msgid "Forward mesh peer traffic" +msgstr "" + msgid "Forwarding mode" msgstr "Modalità di Inoltro" @@ -1350,9 +1389,6 @@ msgstr "" msgid "HT mode (802.11n)" msgstr "" -msgid "Handler" -msgstr "Gestore" - msgid "Hang Up" msgstr "Hangup" @@ -1954,9 +1990,6 @@ msgstr "" msgid "Maximum amount of seconds to wait for the modem to become ready" msgstr "" -msgid "Maximum hold time" -msgstr "Tempo massimo di attesa" - msgid "" "Maximum length of the name is 15 characters including the automatic protocol/" "bridge prefix (br-, 6in4-, pppoe- etc.)" @@ -1974,12 +2007,12 @@ msgstr "Memoria" msgid "Memory usage (%)" msgstr "Uso Memoria (%)" +msgid "Mesh Id" +msgstr "" + msgid "Metric" msgstr "Metrica" -msgid "Minimum hold time" -msgstr "Velocità minima" - msgid "Mirror monitor port" msgstr "" @@ -2185,6 +2218,9 @@ msgstr "Notifica" msgid "Nslookup" msgstr "" +msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" +msgstr "" + msgid "OK" msgstr "OK" @@ -2197,6 +2233,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "" @@ -2425,9 +2464,6 @@ msgstr "" msgid "Path to Private Key" msgstr "Percorso alla chiave privata" -msgid "Path to executable which handles the button event" -msgstr "" - msgid "Path to inner CA-Certificate" msgstr "" @@ -2782,6 +2818,15 @@ msgstr "Rivela/nascondi password" msgid "Revert" msgstr "Ripristina" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "" @@ -2860,9 +2905,6 @@ msgstr "Salva" msgid "Save & Apply" msgstr "Salva & applica" -msgid "Save & Apply" -msgstr "Salva & Applica" - msgid "Scan" msgstr "Scan" @@ -2950,6 +2992,9 @@ msgstr "Dimensione" msgid "Size (.ipk)" msgstr "" +msgid "Size of DNS query cache" +msgstr "" + msgid "Skip" msgstr "Salta" @@ -2996,9 +3041,6 @@ msgstr "Origine" msgid "Source routing" msgstr "" -msgid "Specifies the button state to handle" -msgstr "Specifica lo stato del pulsante da gestire" - msgid "Specifies the directory the device is attached to" msgstr "Specifica la cartella a cui è collegato il dispositivo in" @@ -3041,6 +3083,9 @@ msgstr "Inizio" msgid "Start priority" msgstr "Priorità di avvio" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "Avvio" @@ -3106,6 +3151,9 @@ msgid "" "Switch %q has an unknown topology - the VLAN settings might not be accurate." msgstr "" +msgid "Switch Port Mask" +msgstr "" + msgid "Switch VLAN" msgstr "" @@ -3203,6 +3251,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" msgid "" +"The device could not be reached within %d seconds after applying the pending " +"changes, which caused the configuration to be rolled back for safety " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3223,9 +3281,6 @@ msgid "" "\"Proceed\" below to start the flash procedure." msgstr "" -msgid "The following changes have been committed" -msgstr "" - msgid "The following changes have been reverted" msgstr "Le seguenti modifiche sono state annullate" @@ -3298,8 +3353,8 @@ msgstr "" msgid "There are no active leases." msgstr "Non ci sono contratti attivi." -msgid "There are no pending changes to apply!" -msgstr "Non ci sono cambiamenti pendenti da applicare!" +msgid "There are no changes to apply." +msgstr "" msgid "There are no pending changes to revert!" msgstr "Non ci sono cambiamenti pendenti da regredire" @@ -3344,7 +3399,7 @@ msgstr "" msgid "" "This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with <code>:2</code>" +"ends with <code>...:2/64</code>" msgstr "" msgid "" @@ -3377,9 +3432,6 @@ msgstr "" "Questa lista da un riassunto dei processi correntemente attivi e del loro " "stato." -msgid "This page allows the configuration of custom button actions" -msgstr "" - msgid "This page gives an overview over currently active network connections." msgstr "Questa pagina ti da una riassunto delle connessioni al momento attive." @@ -3566,9 +3618,9 @@ msgstr "Utilizzare tabella di instradamento" msgid "" "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</" -"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed " -"address to use and the <em>Hostname</em> is assigned as symbolic name to the " -"requesting host. The optional <em>Lease time</em> can be used to set non-" +"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed " +"address to use, and the <em>Hostname</em> is assigned as a symbolic name to " +"the requesting host. The optional <em>Lease time</em> can be used to set non-" "standard host-specific lease time, e.g. 12h, 3d or infinite." msgstr "" "Utilizzare il pulsante <em>Aggiungi</em> per aggiungere una nuova voce di " @@ -3683,6 +3735,9 @@ msgstr "In attesa delle modifiche da applicare ..." msgid "Waiting for command to complete..." msgstr "In attesa del comando da completare..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3877,6 +3932,9 @@ msgstr "apri" msgid "overlay" msgstr "" +msgid "random" +msgstr "" + msgid "relay mode" msgstr "" @@ -3922,6 +3980,39 @@ msgstr "Sì" msgid "« Back" msgstr "« Indietro" +#~ msgid "Apply" +#~ msgstr "Applica" + +#~ msgid "Applying changes" +#~ msgstr "Applica modifiche" + +#~ msgid "Configuration applied." +#~ msgstr "Configurazione salvata." + +#~ msgid "Save & Apply" +#~ msgstr "Salva & Applica" + +#~ msgid "There are no pending changes to apply!" +#~ msgstr "Non ci sono cambiamenti pendenti da applicare!" + +#~ msgid "Action" +#~ msgstr "Azione" + +#~ msgid "Buttons" +#~ msgstr "Pulsanti" + +#~ msgid "Handler" +#~ msgstr "Gestore" + +#~ msgid "Maximum hold time" +#~ msgstr "Tempo massimo di attesa" + +#~ msgid "Minimum hold time" +#~ msgstr "Velocità minima" + +#~ msgid "Specifies the button state to handle" +#~ msgstr "Specifica lo stato del pulsante da gestire" + #~ msgid "Leasetime" #~ msgstr "Tempo di contratto" diff --git a/modules/luci-base/po/ja/base.po b/modules/luci-base/po/ja/base.po index 1d321f9394..c0cbb6b6d9 100644 --- a/modules/luci-base/po/ja/base.po +++ b/modules/luci-base/po/ja/base.po @@ -3,18 +3,18 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2017-10-20 13:54+0900\n" +"PO-Revision-Date: 2018-05-21 00:47+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.4\n" +"X-Generator: Poedit 2.0.7\n" "Language-Team: \n" msgid "%.1f dB" -msgstr "" +msgstr "%.1f dB" msgid "%s is untagged in multiple VLANs!" msgstr "%s は複数のVLANにUntaggedしています!" @@ -137,7 +137,7 @@ msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address" msgstr "<abbr title=\"Media Access Control\">MAC</abbr>-アドレス" msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>" -msgstr "" +msgstr "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>" msgid "" "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration " @@ -220,9 +220,6 @@ msgstr "Access Concentrator" msgid "Access Point" msgstr "アクセスポイント" -msgid "Action" -msgstr "動作" - msgid "Actions" msgstr "動作" @@ -254,6 +251,8 @@ msgstr "追加" msgid "Add local domain suffix to names served from hosts files" msgstr "" +"hosts ファイルにより解決される名前にローカルドメイン サフィックスを付加しま" +"す。" msgid "Add new interface..." msgstr "インターフェースの新規作成..." @@ -296,6 +295,9 @@ msgstr "<abbr title=\"Secure Shell\">SSH</abbr> パスワード認証を許可 msgid "Allow all except listed" msgstr "リスト内の端末からのアクセスを禁止" +msgid "Allow legacy 802.11b rates" +msgstr "" + msgid "Allow listed only" msgstr "リスト内の端末からのアクセスを許可" @@ -404,11 +406,11 @@ msgstr "アンテナ設定" msgid "Any zone" msgstr "全てのゾーン" -msgid "Apply" -msgstr "適用" +msgid "Apply request failed with status <code>%h</code>" +msgstr "適用リクエストはステータス <code>%h</code> により失敗しました" -msgid "Applying changes" -msgstr "変更を適用" +msgid "Apply unchecked" +msgstr "チェックなしの適用" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -570,9 +572,6 @@ msgstr "" "ビルド / ディストリビューション固有のフィード定義です。このファイルは" "sysupgradeの際に引き継がれません。" -msgid "Buttons" -msgstr "ボタン" - msgid "CA certificate; if empty it will be saved after the first connection." msgstr "CA証明書(空白の場合、初回の接続後に保存されます。)" @@ -594,16 +593,26 @@ msgstr "変更" msgid "Changes applied." msgstr "変更が適用されました。" +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "デバイスの管理者パスワードを変更します" msgid "Channel" msgstr "チャネル" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" +"チャンネル %d は、 %s 領域内では規制により利用できません。%d へ自動調整されま" +"した。" + msgid "Check" msgstr "チェック" -msgid "Check fileystems before mount" +msgid "Check filesystems before mount" msgstr "マウント前にファイルシステムをチェックする" msgid "Check this option to delete the existing networks from this radio." @@ -686,12 +695,15 @@ msgstr "" msgid "Configuration" msgstr "設定" -msgid "Configuration applied." -msgstr "設定を適用しました。" - msgid "Configuration files will be kept." msgstr "設定ファイルは保持されます。" +msgid "Configuration has been applied." +msgstr "設定が適用されました。" + +msgid "Configuration has been rolled back!" +msgstr "設定はロールバックされました!" + msgid "Confirmation" msgstr "確認" @@ -710,6 +722,15 @@ msgstr "TLSが使用できないとき、サーバーへの接続は失敗しま msgid "Connections" msgstr "ネットワーク接続" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" +"設定の変更を適用後、デバイスへのアクセスを回復できませんでした。もし IP アドレスや" +"無線のセキュリティ認証情報などのネットワーク関連の設定を変更した場合、" +"再接続が必要かもしれません。" + msgid "Country" msgstr "国" @@ -754,6 +775,13 @@ msgid "Custom feeds" msgstr "カスタム フィード" msgid "" +"Custom files (certificates, scripts) may remain on the system. To prevent " +"this, perform a factory-reset first." +msgstr "" +"カスタム ファイル(証明書, スクリプト)がシステムに残るかもしれません。これを" +"防ぐには、まず最初に factory-reset を行います。" + +msgid "" "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode" "\">LED</abbr>s if possible." msgstr "" @@ -879,6 +907,9 @@ msgstr "デバイスを再起動中です..." msgid "Device unreachable" msgstr "デバイスに到達できません" +msgid "Device unreachable!" +msgstr "デバイスに到達できません!" + msgid "Diagnostics" msgstr "診断機能" @@ -913,6 +944,9 @@ msgstr "無効(デフォルト)" msgid "Discard upstream RFC1918 responses" msgstr "RFC1918の応答を破棄します" +msgid "Dismiss" +msgstr "警告の除去" + msgid "Displaying only packages containing" msgstr "右記の文字列を含んだパッケージのみを表示中" @@ -956,7 +990,7 @@ msgid "Domain whitelist" msgstr "ドメイン ホワイトリスト" msgid "Don't Fragment" -msgstr "" +msgstr "非フラグメント化" msgid "" "Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without " @@ -1027,6 +1061,13 @@ msgstr "緊急" msgid "Enable" msgstr "有効" +msgid "" +"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> " +"snooping" +msgstr "" +"<abbr title=\"Internet Group Management Protocol\">IGMP</abbr> スヌーピングの" +"有効化" + msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>" msgstr "<abbr title=\"Spanning Tree Protocol\">STP</abbr>を有効にする" @@ -1070,7 +1111,7 @@ msgid "Enable mirroring of outgoing packets" msgstr "送信パケットのミラーリングを有効化" msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" +msgstr "カプセル化されたパケットの DF (Don't Fragment) フラグを有効にします。" msgid "Enable this mount" msgstr "マウント設定を有効にする" @@ -1084,6 +1125,9 @@ msgstr "有効/無効" msgid "Enabled" msgstr "有効" +msgid "Enables IGMP snooping on this bridge" +msgstr "ブリッジの IGMP スヌーピングを有効にします" + msgid "" "Enables fast roaming among access points that belong to the same Mobility " "Domain" @@ -1164,6 +1208,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "%d 秒以内の適用を確認できませんでした。ロールバック中です..." + msgid "File" msgstr "ファイル" @@ -1257,7 +1304,7 @@ msgid "Force use of NAT-T" msgstr "NAT-Tの強制使用" msgid "Form token mismatch" -msgstr "" +msgstr "フォーム トークンの不一致" msgid "Forward DHCP traffic" msgstr "DHCPトラフィックを転送する" @@ -1268,6 +1315,9 @@ msgstr "" msgid "Forward broadcast traffic" msgstr "ブロードキャスト トラフィックを転送する" +msgid "Forward mesh peer traffic" +msgstr "" + msgid "Forwarding mode" msgstr "転送モード" @@ -1353,9 +1403,6 @@ msgstr "HE.net ユーザー名" msgid "HT mode (802.11n)" msgstr "HT モード (802.11n)" -msgid "Handler" -msgstr "ハンドラ" - msgid "Hang Up" msgstr "再起動" @@ -1601,6 +1648,8 @@ msgstr "インストール" msgid "Install iputils-traceroute6 for IPv6 traceroute" msgstr "" +"IPv6 の traceroute を使用するには、 iputils-traceroute6 をインストールしま" +"す。" msgid "Install package %q" msgstr "%q パッケージをインストールします" @@ -1664,7 +1713,7 @@ msgstr "" "ユーザー名かパスワード、もしくは両方が不正です!もう一度入力してください。" msgid "Isolate Clients" -msgstr "" +msgstr "クライアント間の分離" msgid "" "It appears that you are trying to flash an image that does not fit into the " @@ -1759,6 +1808,8 @@ msgstr "割り当て数" msgid "Limit DNS service to subnets interfaces on which we are serving DNS." msgstr "" +"DNS サービスを、現在 DNS を提供しているサブネットのインターフェースに限定しま" +"す。" msgid "Limit listening to these interfaces, and loopback." msgstr "待ち受けをこれらのインターフェースとループバックに制限します。" @@ -1843,7 +1894,7 @@ msgid "Local IPv6 address" msgstr "ローカル IPv6 アドレス" msgid "Local Service Only" -msgstr "" +msgstr "ローカルサービスのみ" msgid "Local Startup" msgstr "ローカル スタートアップ" @@ -1858,6 +1909,8 @@ msgid "" "Local domain specification. Names matching this domain are never forwarded " "and are resolved from DHCP or hosts files only" msgstr "" +"ローカル ドメインの定義です。このドメインに一致する名前は転送が行われず、 " +"DHCP または hosts ファイルのみにより解決されます。" msgid "Local domain suffix appended to DHCP names and hosts file entries" msgstr "" @@ -1951,9 +2004,6 @@ msgstr "EDNS.0 UDP パケットサイズの許可される最大数" msgid "Maximum amount of seconds to wait for the modem to become ready" msgstr "モデムが準備完了状態になるまでの最大待ち時間" -msgid "Maximum hold time" -msgstr "最大保持時間" - msgid "" "Maximum length of the name is 15 characters including the automatic protocol/" "bridge prefix (br-, 6in4-, pppoe- etc.)" @@ -1973,12 +2023,12 @@ msgstr "メモリー" msgid "Memory usage (%)" msgstr "メモリ使用率 (%)" +msgid "Mesh Id" +msgstr "" + msgid "Metric" msgstr "メトリック" -msgid "Minimum hold time" -msgstr "最短保持時間" - msgid "Mirror monitor port" msgstr "ミラー監視ポート" @@ -2184,6 +2234,11 @@ msgstr "注意" msgid "Nslookup" msgstr "Nslookup" +msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" +msgstr "" +"キャッシュされる DNS エントリーの数です。(最大 10000 件。 0の場合はキャッ" +"シュしません)" + msgid "OK" msgstr "OK" @@ -2196,6 +2251,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "消灯時間" @@ -2400,7 +2458,7 @@ msgid "Packets" msgstr "パケット" msgid "Part of zone %q" -msgstr "ゾーン %qの一部" +msgstr "ゾーン %q の一部" msgid "Password" msgstr "パスワード" @@ -2429,9 +2487,6 @@ msgstr "クライアント証明書のパス" msgid "Path to Private Key" msgstr "秘密鍵のパス" -msgid "Path to executable which handles the button event" -msgstr "ボタンイベントをハンドルする実行ファイルのパス" - msgid "Path to inner CA-Certificate" msgstr "CA 証明書のパス" @@ -2801,6 +2856,15 @@ msgstr "パスワードを表示する/隠す" msgid "Revert" msgstr "元に戻す" +msgid "Revert changes" +msgstr "変更の取り消し" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "取り消しのリクエストはステータス <code>%h</code> により失敗しました" + +msgid "Reverting configuration…" +msgstr "設定を元に戻しています..." + msgid "Root" msgstr "ルート" @@ -2879,9 +2943,6 @@ msgstr "保存" msgid "Save & Apply" msgstr "保存 & 適用" -msgid "Save & Apply" -msgstr "保存 & 適用" - msgid "Scan" msgstr "スキャン" @@ -2971,6 +3032,9 @@ msgstr "サイズ" msgid "Size (.ipk)" msgstr "サイズ (.ipk)" +msgid "Size of DNS query cache" +msgstr "DNS クエリ キャッシュのサイズ" + msgid "Skip" msgstr "スキップ" @@ -3016,9 +3080,6 @@ msgstr "送信元" msgid "Source routing" msgstr "" -msgid "Specifies the button state to handle" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "デバイスが接続するディレクトリを設定します" @@ -3057,6 +3118,9 @@ msgstr "開始" msgid "Start priority" msgstr "優先順位" +msgid "Starting configuration apply…" +msgstr "設定の適用を開始しています..." + msgid "Startup" msgstr "スタートアップ" @@ -3097,10 +3161,10 @@ msgid "Submit" msgstr "送信" msgid "Suppress logging" -msgstr "" +msgstr "ログの抑制" msgid "Suppress logging of the routine operation of these protocols" -msgstr "" +msgstr "これらのプロトコルのルーチン的操作についてのログを抑制します。" msgid "Swap" msgstr "スワップ" @@ -3121,6 +3185,9 @@ msgid "" "Switch %q has an unknown topology - the VLAN settings might not be accurate." msgstr "" +msgid "Switch Port Mask" +msgstr "スイッチポート マスク" + msgid "Switch VLAN" msgstr "" @@ -3216,6 +3283,22 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "設定ファイルは以下のエラーにより読み込めませんでした:" msgid "" +"The device could not be reached within %d seconds after applying the pending " +"changes, which caused the configuration to be rolled back for safety " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" +"未適用の変更を適用後、デバイスは %d 秒以内に完了できなかった可能性がありま" +"す。これは、安全上の理由によりロールバックされる設定に起因するものです。それ" +"でも設定の変更が正しいと思う場合は、チェックなしの変更の適用を行ってくださ" +"い。もしくは、再度適用を試行する前にこの警告を除去して設定内容の編集を行う" +"か、現在動作している設定状況を維持するために未適用の変更を取り消してくだ" +"さい。" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3240,9 +3323,6 @@ msgstr "" "イズです。オリジナルファイルと比較し、整合性を確認してください。<br />\"続行" "\"ボタンをクリックすると、更新処理を開始します。" -msgid "The following changes have been committed" -msgstr "以下の変更が適用されました" - msgid "The following changes have been reverted" msgstr "以下の変更が取り消されました" @@ -3323,8 +3403,8 @@ msgstr "" msgid "There are no active leases." msgstr "リース中のIPアドレスはありません。" -msgid "There are no pending changes to apply!" -msgstr "適用が未完了の変更はありません!" +msgid "There are no changes to apply." +msgstr "適用する変更はありません。" msgid "There are no pending changes to revert!" msgstr "復元が未完了の変更はありません!" @@ -3347,13 +3427,16 @@ msgstr "" "サービスを有効にするために、管理者パスワードを設定してください。" msgid "This IPv4 address of the relay" -msgstr "" +msgstr "リレーの IPv4 アドレス" msgid "" "This file may contain lines like 'server=/domain/1.2.3.4' or " "'server=1.2.3.4' fordomain-specific or full upstream <abbr title=\"Domain " "Name System\">DNS</abbr> servers." msgstr "" +"このファイルは、特定ドメイン用、または上位 <abbr title=\"Domain Name System" +"\">DNS</abbr> サーバーのための 'server=/domain/1.2.3.4' や 'server=1.2.3.4' " +"というような行を含めることができます。" msgid "" "This is a list of shell glob patterns for matching files and directories to " @@ -3378,17 +3461,17 @@ msgstr "" msgid "" "This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with <code>:2</code>" +"ends with <code>...:2/64</code>" msgstr "" "プロバイダからアサインされた、ローカルのエンドポイント アドレスです。通常、" -"<code>:2</code>が終端に設定されます。" +"<code>...:2/64</code>が終端に設定されます。" msgid "" "This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</" "abbr> in the local network" msgstr "" -"ローカル ネットワーク内のみの <abbr title=\"Dynamic Host Configuration " -"Protocol\">DHCP</abbr>として使用する" +"これはローカル ネットワーク内のみの <abbr title=\"Dynamic Host Configuration " +"Protocol\">DHCP</abbr> です。" msgid "This is the plain username for logging into the account" msgstr "" @@ -3413,9 +3496,6 @@ msgstr "" "このリストは現在システムで動作しているプロセスとそのステータスを表示していま" "す。" -msgid "This page allows the configuration of custom button actions" -msgstr "このページでは、ボタンの動作を変更することができます。" - msgid "This page gives an overview over currently active network connections." msgstr "このページでは、現在アクティブなネットワーク接続を表示します。" @@ -3603,9 +3683,9 @@ msgstr "ルーティング テーブルの使用" msgid "" "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</" -"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed " -"address to use and the <em>Hostname</em> is assigned as symbolic name to the " -"requesting host. The optional <em>Lease time</em> can be used to set non-" +"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed " +"address to use, and the <em>Hostname</em> is assigned as a symbolic name to " +"the requesting host. The optional <em>Lease time</em> can be used to set non-" "standard host-specific lease time, e.g. 12h, 3d or infinite." msgstr "" "<em>追加</em> ボタンを押して、新しくエントリーを作成してください。<em>MAC-ア" @@ -3717,6 +3797,9 @@ msgstr "変更を適用中です..." msgid "Waiting for command to complete..." msgstr "コマンド実行中です..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "設定を適用中です... %d 秒" + msgid "Waiting for device..." msgstr "デバイスを起動中です..." @@ -3911,6 +3994,9 @@ msgstr "オープン" msgid "overlay" msgstr "オーバーレイ" +msgid "random" +msgstr "" + msgid "relay mode" msgstr "リレー モード" diff --git a/modules/luci-base/po/ko/base.po b/modules/luci-base/po/ko/base.po index cde3c04c13..7f1bf22e03 100644 --- a/modules/luci-base/po/ko/base.po +++ b/modules/luci-base/po/ko/base.po @@ -213,9 +213,6 @@ msgstr "" msgid "Access Point" msgstr "" -msgid "Action" -msgstr "" - msgid "Actions" msgstr "관리 도구" @@ -289,6 +286,9 @@ msgstr "<abbr title=\"Secure Shell\">SSH</abbr> 암호 인증을 허용합니다 msgid "Allow all except listed" msgstr "" +msgid "Allow legacy 802.11b rates" +msgstr "" + msgid "Allow listed only" msgstr "" @@ -394,10 +394,10 @@ msgstr "" msgid "Any zone" msgstr "" -msgid "Apply" -msgstr "적용" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" +msgid "Apply unchecked" msgstr "" msgid "" @@ -559,9 +559,6 @@ msgstr "" "Build/distribution 지정 feed 목록입니다. 이 파일의 내용은 sysupgrade 시 초기" "화됩니다." -msgid "Buttons" -msgstr "" - msgid "CA certificate; if empty it will be saved after the first connection." msgstr "" @@ -583,16 +580,24 @@ msgstr "변경 사항" msgid "Changes applied." msgstr "" +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "장비 접근을 위한 관리자 암호를 변경합니다" msgid "Channel" msgstr "" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "" -msgid "Check fileystems before mount" +msgid "Check filesystems before mount" msgstr "" msgid "Check this option to delete the existing networks from this radio." @@ -667,10 +672,13 @@ msgstr "" msgid "Configuration" msgstr "설정" -msgid "Configuration applied." +msgid "Configuration files will be kept." msgstr "" -msgid "Configuration files will be kept." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" msgstr "" msgid "Confirmation" @@ -691,6 +699,12 @@ msgstr "" msgid "Connections" msgstr "연결" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "" @@ -735,6 +749,11 @@ msgid "Custom feeds" msgstr "Custom feed 들" msgid "" +"Custom files (certificates, scripts) may remain on the system. To prevent " +"this, perform a factory-reset first." +msgstr "" + +msgid "" "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode" "\">LED</abbr>s if possible." msgstr "" @@ -861,6 +880,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "진단" @@ -895,6 +917,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "" @@ -1004,6 +1029,11 @@ msgstr "" msgid "Enable" msgstr "활성화" +msgid "" +"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> " +"snooping" +msgstr "" + msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>" msgstr "<abbr title=\"Spanning Tree Protocol\">STP</abbr> 활성화" @@ -1061,6 +1091,9 @@ msgstr "활성/비활성" msgid "Enabled" msgstr "활성화됨" +msgid "Enables IGMP snooping on this bridge" +msgstr "" + msgid "" "Enables fast roaming among access points that belong to the same Mobility " "Domain" @@ -1139,6 +1172,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "" @@ -1240,6 +1276,9 @@ msgstr "" msgid "Forward broadcast traffic" msgstr "" +msgid "Forward mesh peer traffic" +msgstr "" + msgid "Forwarding mode" msgstr "" @@ -1323,9 +1362,6 @@ msgstr "" msgid "HT mode (802.11n)" msgstr "" -msgid "Handler" -msgstr "" - msgid "Hang Up" msgstr "" @@ -1905,9 +1941,6 @@ msgstr "허용된 최대 EDNS.0 UDP 패킷 크기" msgid "Maximum amount of seconds to wait for the modem to become ready" msgstr "" -msgid "Maximum hold time" -msgstr "" - msgid "" "Maximum length of the name is 15 characters including the automatic protocol/" "bridge prefix (br-, 6in4-, pppoe- etc.)" @@ -1925,10 +1958,10 @@ msgstr "메모리" msgid "Memory usage (%)" msgstr "메모리 사용량 (%)" -msgid "Metric" +msgid "Mesh Id" msgstr "" -msgid "Minimum hold time" +msgid "Metric" msgstr "" msgid "Mirror monitor port" @@ -2134,6 +2167,9 @@ msgstr "" msgid "Nslookup" msgstr "" +msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" +msgstr "" + msgid "OK" msgstr "" @@ -2146,6 +2182,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "" @@ -2375,9 +2414,6 @@ msgstr "" msgid "Path to Private Key" msgstr "" -msgid "Path to executable which handles the button event" -msgstr "" - msgid "Path to inner CA-Certificate" msgstr "" @@ -2731,6 +2767,15 @@ msgstr "암호 보이기/숨기기" msgid "Revert" msgstr "변경 취소" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "" @@ -2809,9 +2854,6 @@ msgstr "저장" msgid "Save & Apply" msgstr "저장 & 적용" -msgid "Save & Apply" -msgstr "저장 & 적용" - msgid "Scan" msgstr "Scan 하기" @@ -2899,6 +2941,9 @@ msgstr "Size" msgid "Size (.ipk)" msgstr "크기 (.ipk)" +msgid "Size of DNS query cache" +msgstr "" + msgid "Skip" msgstr "" @@ -2941,9 +2986,6 @@ msgstr "" msgid "Source routing" msgstr "" -msgid "Specifies the button state to handle" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "" @@ -2982,6 +3024,9 @@ msgstr "시작" msgid "Start priority" msgstr "시작 우선순위" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "시작 프로그램" @@ -3046,6 +3091,9 @@ msgid "" "Switch %q has an unknown topology - the VLAN settings might not be accurate." msgstr "" +msgid "Switch Port Mask" +msgstr "" + msgid "Switch VLAN" msgstr "스위치 VLAN" @@ -3137,6 +3185,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" msgid "" +"The device could not be reached within %d seconds after applying the pending " +"changes, which caused the configuration to be rolled back for safety " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3153,9 +3211,6 @@ msgid "" "\"Proceed\" below to start the flash procedure." msgstr "" -msgid "The following changes have been committed" -msgstr "" - msgid "The following changes have been reverted" msgstr "다음의 변경 사항들이 취소되었습니다" @@ -3226,7 +3281,7 @@ msgstr "" msgid "There are no active leases." msgstr "" -msgid "There are no pending changes to apply!" +msgid "There are no changes to apply." msgstr "" msgid "There are no pending changes to revert!" @@ -3279,7 +3334,7 @@ msgstr "" msgid "" "This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with <code>:2</code>" +"ends with <code>...:2/64</code>" msgstr "" msgid "" @@ -3307,9 +3362,6 @@ msgid "" msgstr "" "이 목록은 현재 실행중인 시스템 프로세스와 해당 상태에 대한 개요를 보여줍니다." -msgid "This page allows the configuration of custom button actions" -msgstr "" - msgid "This page gives an overview over currently active network connections." msgstr "이 페이지는 현재 active 상태인 네트워크 연결을 보여줍니다." @@ -3496,9 +3548,9 @@ msgstr "Routing table 사용" msgid "" "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</" -"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed " -"address to use and the <em>Hostname</em> is assigned as symbolic name to the " -"requesting host. The optional <em>Lease time</em> can be used to set non-" +"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed " +"address to use, and the <em>Hostname</em> is assigned as a symbolic name to " +"the requesting host. The optional <em>Lease time</em> can be used to set non-" "standard host-specific lease time, e.g. 12h, 3d or infinite." msgstr "" "새로운 항목을 추가하기 위해서는 <em>추가</em> 버튼을 사용하세요. <em>MAC-주소" @@ -3608,6 +3660,9 @@ msgstr "변경 사항이 적용되기를 기다리는 중입니다..." msgid "Waiting for command to complete..." msgstr "실행한 명령이 끝나기를 기다리는 중입니다..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3799,6 +3854,9 @@ msgstr "" msgid "overlay" msgstr "" +msgid "random" +msgstr "" + msgid "relay mode" msgstr "" @@ -3844,5 +3902,11 @@ msgstr "" msgid "« Back" msgstr "" +#~ msgid "Apply" +#~ msgstr "적용" + +#~ msgid "Save & Apply" +#~ msgstr "저장 & 적용" + #~ msgid "Leasetime" #~ msgstr "임대 시간" diff --git a/modules/luci-base/po/ms/base.po b/modules/luci-base/po/ms/base.po index 74d3e19d7f..cadaf9b3b2 100644 --- a/modules/luci-base/po/ms/base.po +++ b/modules/luci-base/po/ms/base.po @@ -210,9 +210,6 @@ msgstr "" msgid "Access Point" msgstr "Pusat akses" -msgid "Action" -msgstr "Aksi" - msgid "Actions" msgstr "Aksi" @@ -284,6 +281,9 @@ msgstr "Membenarkan pengesahan kata laluan SSH" msgid "Allow all except listed" msgstr "Izinkan semua kecualian yang disenaraikan" +msgid "Allow legacy 802.11b rates" +msgstr "" + msgid "Allow listed only" msgstr "Izinkan senarai saja" @@ -389,11 +389,11 @@ msgstr "" msgid "Any zone" msgstr "" -msgid "Apply" -msgstr "Melaksanakan" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "Melaksanakan perubahan" +msgid "Apply unchecked" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -549,9 +549,6 @@ msgid "" "preserved in any sysupgrade." msgstr "" -msgid "Buttons" -msgstr "Butang" - msgid "CA certificate; if empty it will be saved after the first connection." msgstr "" @@ -573,16 +570,24 @@ msgstr "Laman" msgid "Changes applied." msgstr "Laman diterapkan." +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "" msgid "Channel" msgstr "Saluran" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "" -msgid "Check fileystems before mount" +msgid "Check filesystems before mount" msgstr "" msgid "Check this option to delete the existing networks from this radio." @@ -649,10 +654,13 @@ msgstr "" msgid "Configuration" msgstr "Konfigurasi" -msgid "Configuration applied." +msgid "Configuration files will be kept." msgstr "" -msgid "Configuration files will be kept." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" msgstr "" msgid "Confirmation" @@ -673,6 +681,12 @@ msgstr "" msgid "Connections" msgstr "" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "" @@ -715,6 +729,11 @@ msgid "Custom feeds" msgstr "" msgid "" +"Custom files (certificates, scripts) may remain on the system. To prevent " +"this, perform a factory-reset first." +msgstr "" + +msgid "" "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode" "\">LED</abbr>s if possible." msgstr "Mengkustomisasi perilaku peranti LED jika mungkin." @@ -836,6 +855,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "" @@ -868,6 +890,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "" @@ -976,6 +1001,11 @@ msgstr "" msgid "Enable" msgstr "" +msgid "" +"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> " +"snooping" +msgstr "" + msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>" msgstr "Mengaktifkan <abbr title=\"Spanning Tree Protocol\">STP</abbr>" @@ -1033,6 +1063,9 @@ msgstr "" msgid "Enabled" msgstr "" +msgid "Enables IGMP snooping on this bridge" +msgstr "" + msgid "" "Enables fast roaming among access points that belong to the same Mobility " "Domain" @@ -1111,6 +1144,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "" @@ -1212,6 +1248,9 @@ msgstr "" msgid "Forward broadcast traffic" msgstr "" +msgid "Forward mesh peer traffic" +msgstr "" + msgid "Forwarding mode" msgstr "" @@ -1295,9 +1334,6 @@ msgstr "" msgid "HT mode (802.11n)" msgstr "" -msgid "Handler" -msgstr "Kawalan" - msgid "Hang Up" msgstr "Menutup" @@ -1883,10 +1919,6 @@ msgstr "" msgid "Maximum amount of seconds to wait for the modem to become ready" msgstr "" -#, fuzzy -msgid "Maximum hold time" -msgstr "Memegang masa maksimum" - msgid "" "Maximum length of the name is 15 characters including the automatic protocol/" "bridge prefix (br-, 6in4-, pppoe- etc.)" @@ -1904,13 +1936,12 @@ msgstr "Memori" msgid "Memory usage (%)" msgstr "Penggunaan Memori (%)" +msgid "Mesh Id" +msgstr "" + msgid "Metric" msgstr "Metrik" -#, fuzzy -msgid "Minimum hold time" -msgstr "Memegang masa minimum" - msgid "Mirror monitor port" msgstr "" @@ -2116,6 +2147,9 @@ msgstr "" msgid "Nslookup" msgstr "" +msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" +msgstr "" + msgid "OK" msgstr "Baik" @@ -2128,6 +2162,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "" @@ -2354,9 +2391,6 @@ msgstr "" msgid "Path to Private Key" msgstr "Path ke Kunci Swasta" -msgid "Path to executable which handles the button event" -msgstr "Path ke eksekusi yang mengendalikan acara butang" - msgid "Path to inner CA-Certificate" msgstr "" @@ -2707,6 +2741,15 @@ msgstr "" msgid "Revert" msgstr "Kembali" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "" @@ -2785,9 +2828,6 @@ msgstr "Simpan" msgid "Save & Apply" msgstr "Simpan & Melaksanakan" -msgid "Save & Apply" -msgstr "" - msgid "Scan" msgstr "Scan" @@ -2875,6 +2915,9 @@ msgstr "Saiz" msgid "Size (.ipk)" msgstr "" +msgid "Size of DNS query cache" +msgstr "" + msgid "Skip" msgstr "Skip" @@ -2917,10 +2960,6 @@ msgstr "Sumber" msgid "Source routing" msgstr "" -#, fuzzy -msgid "Specifies the button state to handle" -msgstr "Menentukan state butang untuk melaku" - msgid "Specifies the directory the device is attached to" msgstr "" @@ -2959,6 +2998,9 @@ msgstr "Mula" msgid "Start priority" msgstr "" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "" @@ -3020,6 +3062,9 @@ msgid "" "Switch %q has an unknown topology - the VLAN settings might not be accurate." msgstr "" +msgid "Switch Port Mask" +msgstr "" + msgid "Switch VLAN" msgstr "" @@ -3109,6 +3154,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" msgid "" +"The device could not be reached within %d seconds after applying the pending " +"changes, which caused the configuration to be rolled back for safety " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "Fail peranti memori atau partisyen, (contohnya: /dev/sda)" @@ -3129,9 +3184,6 @@ msgstr "" "integriti data.<br /> Klik butang terus di bawah untuk memulakan prosedur " "flash." -msgid "The following changes have been committed" -msgstr "" - msgid "The following changes have been reverted" msgstr "Laman berikut telah kembali" @@ -3204,7 +3256,7 @@ msgstr "" msgid "There are no active leases." msgstr "" -msgid "There are no pending changes to apply!" +msgid "There are no changes to apply." msgstr "" msgid "There are no pending changes to revert!" @@ -3250,7 +3302,7 @@ msgstr "" msgid "" "This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with <code>:2</code>" +"ends with <code>...:2/64</code>" msgstr "" msgid "" @@ -3281,9 +3333,6 @@ msgstr "" "Senarai ini memberikan gambaran lebih pada proses sistem yang sedang " "berjalan dan statusnya." -msgid "This page allows the configuration of custom button actions" -msgstr "Laman ini membolehkan konfigurasi butang tindakan peribadi" - msgid "This page gives an overview over currently active network connections." msgstr "" "Laman ini memberikan gambaran lebih dari saat ini sambungan rangkaian yang " @@ -3467,9 +3516,9 @@ msgstr "" msgid "" "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</" -"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed " -"address to use and the <em>Hostname</em> is assigned as symbolic name to the " -"requesting host. The optional <em>Lease time</em> can be used to set non-" +"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed " +"address to use, and the <em>Hostname</em> is assigned as a symbolic name to " +"the requesting host. The optional <em>Lease time</em> can be used to set non-" "standard host-specific lease time, e.g. 12h, 3d or infinite." msgstr "" @@ -3576,6 +3625,9 @@ msgstr "" msgid "Waiting for command to complete..." msgstr "" +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3761,6 +3813,9 @@ msgstr "" msgid "overlay" msgstr "" +msgid "random" +msgstr "" + msgid "relay mode" msgstr "" @@ -3806,6 +3861,39 @@ msgstr "" msgid "« Back" msgstr "« Kembali" +#~ msgid "Apply" +#~ msgstr "Melaksanakan" + +#~ msgid "Applying changes" +#~ msgstr "Melaksanakan perubahan" + +#~ msgid "Action" +#~ msgstr "Aksi" + +#~ msgid "Buttons" +#~ msgstr "Butang" + +#~ msgid "Handler" +#~ msgstr "Kawalan" + +#, fuzzy +#~ msgid "Maximum hold time" +#~ msgstr "Memegang masa maksimum" + +#, fuzzy +#~ msgid "Minimum hold time" +#~ msgstr "Memegang masa minimum" + +#~ msgid "Path to executable which handles the button event" +#~ msgstr "Path ke eksekusi yang mengendalikan acara butang" + +#, fuzzy +#~ msgid "Specifies the button state to handle" +#~ msgstr "Menentukan state butang untuk melaku" + +#~ msgid "This page allows the configuration of custom button actions" +#~ msgstr "Laman ini membolehkan konfigurasi butang tindakan peribadi" + #~ msgid "Leasetime" #~ msgstr "Masa penyewaan" diff --git a/modules/luci-base/po/no/base.po b/modules/luci-base/po/no/base.po index f1bfec4f59..600d007247 100644 --- a/modules/luci-base/po/no/base.po +++ b/modules/luci-base/po/no/base.po @@ -219,9 +219,6 @@ msgstr "Tilgangskonsentrator" msgid "Access Point" msgstr "Aksesspunkt" -msgid "Action" -msgstr "Handling" - msgid "Actions" msgstr "Handlinger" @@ -293,6 +290,9 @@ msgstr "Tillat <abbr title=\"Secure Shell\">SSH</abbr> passord godkjenning" msgid "Allow all except listed" msgstr "Tillat alle unntatt oppførte" +msgid "Allow legacy 802.11b rates" +msgstr "" + msgid "Allow listed only" msgstr "Tillat kun oppførte" @@ -398,11 +398,11 @@ msgstr "Antennekonfigurasjon" msgid "Any zone" msgstr "Alle soner" -msgid "Apply" -msgstr "Bruk" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "Utfører endringer" +msgid "Apply unchecked" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -561,9 +561,6 @@ msgid "" "preserved in any sysupgrade." msgstr "" -msgid "Buttons" -msgstr "Knapper" - msgid "CA certificate; if empty it will be saved after the first connection." msgstr "" @@ -585,16 +582,24 @@ msgstr "Endringer" msgid "Changes applied." msgstr "Endringer utført." +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "Endrer administrator passordet for tilgang til enheten" msgid "Channel" msgstr "Kanal" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "Kontroller" -msgid "Check fileystems before mount" +msgid "Check filesystems before mount" msgstr "" msgid "Check this option to delete the existing networks from this radio." @@ -671,12 +676,15 @@ msgstr "" msgid "Configuration" msgstr "Konfigurasjon" -msgid "Configuration applied." -msgstr "Konfigurasjons endring utført." - msgid "Configuration files will be kept." msgstr "Konfigurasjonsfiler vil bli bevart." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "Bekreftelse" @@ -695,6 +703,12 @@ msgstr "" msgid "Connections" msgstr "Tilkoblinger" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "Land" @@ -737,6 +751,11 @@ msgid "Custom feeds" msgstr "" msgid "" +"Custom files (certificates, scripts) may remain on the system. To prevent " +"this, perform a factory-reset first." +msgstr "" + +msgid "" "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode" "\">LED</abbr>s if possible." msgstr "" @@ -862,6 +881,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "Nettverksdiagnostikk" @@ -896,6 +918,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "Forkast oppstrøms RFC1918 svar" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "Viser bare pakker som inneholder" @@ -1011,6 +1036,11 @@ msgstr "Krisesituasjon" msgid "Enable" msgstr "Aktiver" +msgid "" +"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> " +"snooping" +msgstr "" + msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>" msgstr "Aktiver <abbr title=\"Spanning Tree Protocol\">STP</abbr>" @@ -1068,6 +1098,9 @@ msgstr "Aktiver/Deaktiver" msgid "Enabled" msgstr "Aktivert" +msgid "Enables IGMP snooping on this bridge" +msgstr "" + msgid "" "Enables fast roaming among access points that belong to the same Mobility " "Domain" @@ -1147,6 +1180,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "Fil" @@ -1249,6 +1285,9 @@ msgstr "" msgid "Forward broadcast traffic" msgstr "Videresend kringkastingstrafikk" +msgid "Forward mesh peer traffic" +msgstr "" + msgid "Forwarding mode" msgstr "Videresending modus" @@ -1332,9 +1371,6 @@ msgstr "" msgid "HT mode (802.11n)" msgstr "" -msgid "Handler" -msgstr "Behandler" - msgid "Hang Up" msgstr "Slå av" @@ -1928,9 +1964,6 @@ msgstr "Maksimal tillatt størrelse på EDNS.0 UDP-pakker" msgid "Maximum amount of seconds to wait for the modem to become ready" msgstr "Maksimalt antall sekunder å vente på at modemet skal bli klart" -msgid "Maximum hold time" -msgstr "Maksimal holde tid" - msgid "" "Maximum length of the name is 15 characters including the automatic protocol/" "bridge prefix (br-, 6in4-, pppoe- etc.)" @@ -1948,12 +1981,12 @@ msgstr "Minne" msgid "Memory usage (%)" msgstr "Minne forbruk (%)" +msgid "Mesh Id" +msgstr "" + msgid "Metric" msgstr "Metrisk" -msgid "Minimum hold time" -msgstr "Minimum holde tid" - msgid "Mirror monitor port" msgstr "" @@ -2159,6 +2192,9 @@ msgstr "Merk" msgid "Nslookup" msgstr "Nslookup" +msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" +msgstr "" + msgid "OK" msgstr "OK" @@ -2171,6 +2207,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "Forsinkelse ved tilstand Av" @@ -2400,9 +2439,6 @@ msgstr "Sti til klient-sertifikat" msgid "Path to Private Key" msgstr "Sti til privatnøkkel" -msgid "Path to executable which handles the button event" -msgstr "Sti til program som håndterer handling ved bruk av knapp" - msgid "Path to inner CA-Certificate" msgstr "" @@ -2768,6 +2804,15 @@ msgstr "Vis/Skjul passord" msgid "Revert" msgstr "Tilbakestill" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "Rot" @@ -2846,9 +2891,6 @@ msgstr "Lagre" msgid "Save & Apply" msgstr "Lagre & Aktiver" -msgid "Save & Apply" -msgstr "Lagre & Aktiver" - msgid "Scan" msgstr "Skann" @@ -2939,6 +2981,9 @@ msgstr "Størrelse" msgid "Size (.ipk)" msgstr "" +msgid "Size of DNS query cache" +msgstr "" + msgid "Skip" msgstr "Gå videre" @@ -2984,9 +3029,6 @@ msgstr "Kilde" msgid "Source routing" msgstr "" -msgid "Specifies the button state to handle" -msgstr "Spesifiserer knappens handlemønster" - msgid "Specifies the directory the device is attached to" msgstr "Hvor lagrings enheten blir tilsluttet filsystemet (f.eks. /mnt/sda1)" @@ -3026,6 +3068,9 @@ msgstr "Start" msgid "Start priority" msgstr "Start prioritet" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "Oppstart" @@ -3090,6 +3135,9 @@ msgid "" "Switch %q has an unknown topology - the VLAN settings might not be accurate." msgstr "" +msgid "Switch Port Mask" +msgstr "" + msgid "Switch VLAN" msgstr "" @@ -3188,6 +3236,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" msgid "" +"The device could not be reached within %d seconds after applying the pending " +"changes, which caused the configuration to be rolled back for safety " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3212,9 +3270,6 @@ msgstr "" "sammenlign dem med den opprinnelige filen for å sikre dataintegriteten.<br /" "> Klikk \"Fortsett\" nedenfor for å starte flash prosedyren." -msgid "The following changes have been committed" -msgstr "Følgende endringer er foretatt" - msgid "The following changes have been reverted" msgstr "Følgende endringer er forkastet" @@ -3297,8 +3352,8 @@ msgstr "" msgid "There are no active leases." msgstr "Det er ingen aktive leieavtaler." -msgid "There are no pending changes to apply!" -msgstr "Det finnes ingen endringer som kan utføres!" +msgid "There are no changes to apply." +msgstr "" msgid "There are no pending changes to revert!" msgstr "Det finnes ingen endriger å reversere!" @@ -3352,10 +3407,10 @@ msgstr "" msgid "" "This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with <code>:2</code>" +"ends with <code>...:2/64</code>" msgstr "" "Dette er den lokale endepunkt adressen som ble tildelt av tunnel 'broker', " -"adressen ender vanligvis med <code>:2</code>" +"adressen ender vanligvis med <code>...:2/64</code>" msgid "" "This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</" @@ -3384,10 +3439,6 @@ msgid "" "their status." msgstr "Denne listen gir en oversikt over kjørende prosesser og deres status." -msgid "This page allows the configuration of custom button actions" -msgstr "" -"Denne siden gir mulighet for å definerte egne knappers handlingsmønster" - msgid "This page gives an overview over currently active network connections." msgstr "" "Denne siden gir en oversikt over gjeldende aktive nettverkstilkoblinger." @@ -3575,9 +3626,9 @@ msgstr "Bruk rutingtabellen" msgid "" "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</" -"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed " -"address to use and the <em>Hostname</em> is assigned as symbolic name to the " -"requesting host. The optional <em>Lease time</em> can be used to set non-" +"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed " +"address to use, and the <em>Hostname</em> is assigned as a symbolic name to " +"the requesting host. The optional <em>Lease time</em> can be used to set non-" "standard host-specific lease time, e.g. 12h, 3d or infinite." msgstr "" "Bruk <em>Legg til</em> knappen får å legge til en leieavtale. <em>MAC-" @@ -3688,6 +3739,9 @@ msgstr "Venter på at endringer utføres..." msgid "Waiting for command to complete..." msgstr "Venter på at kommando fullføres..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3881,6 +3935,9 @@ msgstr "åpen" msgid "overlay" msgstr "" +msgid "random" +msgstr "" + msgid "relay mode" msgstr "" @@ -3926,6 +3983,49 @@ msgstr "ja" msgid "« Back" msgstr "« Tilbake" +#~ msgid "Apply" +#~ msgstr "Bruk" + +#~ msgid "Applying changes" +#~ msgstr "Utfører endringer" + +#~ msgid "Configuration applied." +#~ msgstr "Konfigurasjons endring utført." + +#~ msgid "Save & Apply" +#~ msgstr "Lagre & Aktiver" + +#~ msgid "The following changes have been committed" +#~ msgstr "Følgende endringer er foretatt" + +#~ msgid "There are no pending changes to apply!" +#~ msgstr "Det finnes ingen endringer som kan utføres!" + +#~ msgid "Action" +#~ msgstr "Handling" + +#~ msgid "Buttons" +#~ msgstr "Knapper" + +#~ msgid "Handler" +#~ msgstr "Behandler" + +#~ msgid "Maximum hold time" +#~ msgstr "Maksimal holde tid" + +#~ msgid "Minimum hold time" +#~ msgstr "Minimum holde tid" + +#~ msgid "Path to executable which handles the button event" +#~ msgstr "Sti til program som håndterer handling ved bruk av knapp" + +#~ msgid "Specifies the button state to handle" +#~ msgstr "Spesifiserer knappens handlemønster" + +#~ msgid "This page allows the configuration of custom button actions" +#~ msgstr "" +#~ "Denne siden gir mulighet for å definerte egne knappers handlingsmønster" + #~ msgid "Leasetime" #~ msgstr "<abbr title=\"Leasetime\">Leietid</abbr>" diff --git a/modules/luci-base/po/pl/base.po b/modules/luci-base/po/pl/base.po index 22902c4997..390e489e29 100644 --- a/modules/luci-base/po/pl/base.po +++ b/modules/luci-base/po/pl/base.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: LuCI\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-04-20 09:40+0200\n" -"PO-Revision-Date: 2014-04-23 19:15+0200\n" -"Last-Translator: goodgod261 <goodgod261@wp.pl>\n" +"PO-Revision-Date: 2018-05-14 20:05+0200\n" +"Last-Translator: Rixerx <krystian.kozak20@gmail.com>\n" "Language-Team: Polish\n" "Language: pl\n" "MIME-Version: 1.0\n" @@ -18,7 +18,7 @@ msgid "%.1f dB" msgstr "" msgid "%s is untagged in multiple VLANs!" -msgstr "" +msgstr "%s jest nieotagowany w wielu grupach VLAN!" msgid "(%d minute window, %d second interval)" msgstr "(okno %d minut, interwał %d sekund)" @@ -42,13 +42,13 @@ msgid "-- custom --" msgstr "-- własne --" msgid "-- match by device --" -msgstr "" +msgstr "-- dopasuj według urządzenia --" msgid "-- match by label --" -msgstr "" +msgstr "-- dopasuj po etykiecie --" msgid "-- match by uuid --" -msgstr "" +msgstr "-- dopasuj po uuid --" msgid "1 Minute Load:" msgstr "Obciążenie 1 min.:" @@ -60,13 +60,13 @@ msgid "4-character hexadecimal ID" msgstr "" msgid "464XLAT (CLAT)" -msgstr "" +msgstr "464XLAT (CLAT)" msgid "5 Minute Load:" msgstr "Obciążenie 5 min.:" msgid "6-octet identifier as a hex string - no colons" -msgstr "" +msgstr "Identyfikator 6-oktetowy jako ciąg szesnastkowy - bez dwukropków" msgid "802.11r Fast Transition" msgstr "" @@ -81,10 +81,10 @@ msgid "802.11w Management Frame Protection" msgstr "" msgid "802.11w maximum timeout" -msgstr "" +msgstr "802.11w maksymalny czas oczekiwania" msgid "802.11w retry timeout" -msgstr "" +msgstr "802.11w interwał ponawiania prób" msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>" msgstr "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>" @@ -124,7 +124,7 @@ msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway" msgstr "Brama <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>" msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)" -msgstr "" +msgstr "Sufiks <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>(hex)" msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration" msgstr "Konfiguracja diod <abbr title=\"Light Emitting Diode\">LED</abbr>" @@ -162,6 +162,8 @@ msgid "" "<br/>Note: you need to manually restart the cron service if the crontab file " "was empty before editing." msgstr "" +"<br/>Uwaga: musisz ręcznie zrestartować usługę cron, jeśli plik crontab " +"był pusty przed edycją." msgid "A43C + J43 + A43" msgstr "" @@ -170,7 +172,7 @@ msgid "A43C + J43 + A43 + V43" msgstr "" msgid "ADSL" -msgstr "" +msgstr "ADSL" msgid "AICCU (SIXXS)" msgstr "" @@ -188,7 +190,7 @@ msgid "ATM (Asynchronous Transfer Mode)" msgstr "" msgid "ATM Bridges" -msgstr "Mostki ATM" +msgstr "Mosty ATM" # Nie wiem czy to powinno się tłumaczyć wg. mnie lepiej zostawić po angielsku msgid "ATM Virtual Channel Identifier (VCI)" @@ -198,15 +200,14 @@ msgstr "Identyfikator kanału wirtualnego ATM (VCI)" msgid "ATM Virtual Path Identifier (VPI)" msgstr "Identyfikator ścieżki wirtualnej ATM (VPI)" -# Jak zwykle zakręciłem...niech ktoś poprawi msgid "" "ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " "Linux network interfaces which can be used in conjunction with DHCP or PPP " "to dial into the provider network." msgstr "" -"Mostki ATM maskują za-kapsułkowane ramki Ethernet w połączeniach AAL5 jako " -"wirtualne interfejsy w Linuksie. Interfejsy takie mogą być użyte w " -"połączeniu z protokołami DHCP lub PPP do wdzwaniania się do sieci provider`a" +"Mosty ATM eksponują enkapsulowaną sieć Ethernet w połączeniach AAL5 jako wirtualne " +"interfejsy sieciowe systemu Linux, które mogą być używane w połączeniu z protokołem " +"DHCP lub PPP w celu polączenia się z siecią dostawcy." msgid "ATM device number" msgstr "Numer urządzenia ATM" @@ -224,9 +225,6 @@ msgstr "Koncentrator dostępowy ATM" msgid "Access Point" msgstr "Punkt dostępowy" -msgid "Action" -msgstr "Akcja" - msgid "Actions" msgstr "Akcje" @@ -268,7 +266,7 @@ msgid "Additional Hosts files" msgstr "Dodatkowe pliki Hosts" msgid "Additional servers file" -msgstr "" +msgstr "Dodatkowe pliki serwera" msgid "Address" msgstr "Adres" @@ -292,10 +290,10 @@ msgstr "Alarm" msgid "" "Allocate IP addresses sequentially, starting from the lowest available " "address" -msgstr "" +msgstr "Przydziel sekwencyjnie adresy IP, zaczynając od najmniejszego dostępnego" msgid "Allocate IP sequentially" -msgstr "" +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>" @@ -303,6 +301,9 @@ msgstr "Pozwól na logowanie <abbr title=\"Secure Shell\">SSH</abbr>" msgid "Allow all except listed" msgstr "Pozwól wszystkim oprócz wymienionych" +msgid "Allow legacy 802.11b rates" +msgstr "" + msgid "Allow listed only" msgstr "Pozwól tylko wymienionym" @@ -310,16 +311,13 @@ msgid "Allow localhost" msgstr "Pozwól tylko sobie (localhost)" msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" -"Pozwól zdalnym komputerom na połączenia SSH do lokalnych przekierowanych " -"portów" +msgstr "Zezwalaj zdalnym hostom na łączenie się z lokalnie przekazywanymi portami SSH" msgid "Allow root logins with password" msgstr "Zezwól na logowanie roota przy pomocy hasła" -# Brak spacji... msgid "Allow the <em>root</em> user to login with password" -msgstr "Pozwól użytkownikowi <em>root</em> na logowanie przy pomocy hasła" +msgstr "Pozwól użytkownikowi <em>root</em> na logowanie się przy pomocy hasła" msgid "" "Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" @@ -327,7 +325,7 @@ msgstr "" "Pozwól na ruch wychodzący (odpowiedzi) z podsieci 127.0.0.0/8, np. usługi RBL" msgid "Allowed IPs" -msgstr "" +msgstr "Dozwolone adresy IP" msgid "" "Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison" @@ -335,7 +333,7 @@ msgid "" msgstr "" msgid "Always announce default router" -msgstr "" +msgstr "Zawsze rozgłaszaj domyślny router" msgid "Annex" msgstr "" @@ -441,7 +439,6 @@ msgstr "Uwierzytelnianie" msgid "Authentication Type" msgstr "" -# Nawet M$ tego nie tłumaczy;) msgid "Authoritative" msgstr "Autorytatywny" @@ -578,9 +575,6 @@ msgid "" "preserved in any sysupgrade." msgstr "" -msgid "Buttons" -msgstr "Przyciski" - msgid "CA certificate; if empty it will be saved after the first connection." msgstr "" @@ -611,7 +605,7 @@ msgstr "Kanał" msgid "Check" msgstr "Sprawdź" -msgid "Check fileystems before mount" +msgid "Check filesystems before mount" msgstr "" msgid "Check this option to delete the existing networks from this radio." @@ -627,8 +621,8 @@ msgid "" "interface to it." msgstr "" "Wybierz strefę firewalla którą chcesz przypisać do tego interfejsu. Wybierz " -"<em>unspecified</em> aby usunąć interfejs z przypisanej strefy lub wybierz " -"pole <em>create</em> aby zdefiniować nową strefę i przypisać ją do " +"<em>nieokreślone</em> aby usunąć interfejs z przypisanej strefy lub wybierz " +"pole <em>utwórz</em> aby zdefiniować nową strefę i przypisać ją do " "interfejsu." msgid "" @@ -644,7 +638,6 @@ msgstr "Szyfr" msgid "Cisco UDP encapsulation" msgstr "" -# Przyciski nazywają sie "Twórz archiwum" i "Wykonaj reset" a nie Przywróć Ustawienia msgid "" "Click \"Generate archive\" to download a tar archive of the current " "configuration files. To reset the firmware to its initial state, click " @@ -685,6 +678,7 @@ msgid "" "workaround might cause interoperability issues and reduced robustness of key " "negotiation especially in environments with heavy traffic load." msgstr "" +"Komplikuje atak ponownej instalacji klucza po stronie klienta, wyłączając retransmisję ramek klucza EAPOL, które są używane do instalowania kluczy. To obejście może powodować problemy z interoperacyjnością i zmniejszoną odporność kluczowych negocjacji, szczególnie w środowiskach o dużym natężeniu ruchu." msgid "Configuration" msgstr "Konfiguracja" @@ -742,7 +736,7 @@ msgid "Cron Log Level" msgstr "Poziom logowania Cron`a" msgid "Custom Interface" -msgstr "Interfejs Niestandardowy" +msgstr "Interfejs niestandardowy" msgid "Custom delegated IPv6-prefix" msgstr "" @@ -755,7 +749,11 @@ msgstr "" msgid "Custom feeds" msgstr "" -# Spacji zabrało i napisy się skleiły +msgid "" +"Custom files (certificates, scripts) may remain on the system. To prevent " +"this, perform a factory-reset first." +msgstr "" + msgid "" "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode" "\">LED</abbr>s if possible." @@ -782,7 +780,7 @@ msgid "DHCPv6 Leases" msgstr "Dzierżawy DHCPv6" msgid "DHCPv6 client" -msgstr "" +msgstr "Klient DHCPv6" msgid "DHCPv6-Mode" msgstr "" @@ -812,10 +810,10 @@ msgid "DS-Lite AFTR address" msgstr "" msgid "DSL" -msgstr "" +msgstr "DSL" msgid "DSL Status" -msgstr "" +msgstr "Status DSL" msgid "DSL line mode" msgstr "" @@ -878,10 +876,10 @@ msgid "Device Configuration" msgstr "Konfiguracja urządzenia" msgid "Device is rebooting..." -msgstr "" +msgstr "Urządzenie jest uruchamiane ponownie ..." msgid "Device unreachable" -msgstr "" +msgstr "Urządzenie nieosiągalne" msgid "Diagnostics" msgstr "Diagnostyka" @@ -903,16 +901,16 @@ msgstr "" "tym interfejsie." msgid "Disable DNS setup" -msgstr "Wyłącz konfigurowanie DNS" +msgstr "Wyłącz konfigurację DNS" msgid "Disable Encryption" -msgstr "" +msgstr "Wyłącz szyfrowanie" msgid "Disabled" msgstr "Wyłączony" msgid "Disabled (default)" -msgstr "" +msgstr "Wyłączone (domyślnie)" msgid "Discard upstream RFC1918 responses" msgstr "Odrzuć wychodzące odpowiedzi RFC1918" @@ -1030,13 +1028,17 @@ msgstr "Edytuj ten interfejs" msgid "Edit this network" msgstr "Edytuj tą sieć" -# dosłownie nagły wypadek msgid "Emergency" msgstr "Zagrożenie" msgid "Enable" msgstr "Włącz" +msgid "" +"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> " +"snooping" +msgstr "Włącz nasłuchiwanie <abbr title=\"Internet Group Management Protocol\">IGMP</abbr>" + msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>" msgstr "Włącz <abbr title=\"Spanning Tree Protocol\">STP</abbr>" @@ -1044,7 +1046,7 @@ msgid "Enable HE.net dynamic endpoint update" msgstr "Włącz dynamiczną aktualizację punktu końcowego sieci HE.net" msgid "Enable IPv6 negotiation" -msgstr "" +msgstr "Włącz negocjację IPv6" msgid "Enable IPv6 negotiation on the PPP link" msgstr "Włącz negocjację IPv6 na łączu PPP" @@ -1065,10 +1067,10 @@ msgid "Enable VLAN functionality" msgstr "Włącz funkcjonalność VLAN" msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" +msgstr "Włącz przycisk WPS, wymaga WPA(2)-PSK" msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" +msgstr "Włącz środki zaradcze dotyczące ponownej instalacji kluczy (KRACK)" msgid "Enable learning and aging" msgstr "Włącz uczenie się i starzenie" @@ -1094,19 +1096,22 @@ msgstr "Wlącz/Wyłącz" msgid "Enabled" msgstr "Włączony" +msgid "Enables IGMP snooping on this bridge" +msgstr "Włącz nasłuchiwanie IGMP na tym moście" + msgid "" "Enables fast roaming among access points that belong to the same Mobility " "Domain" -msgstr "" +msgstr "Aktywuje szybki roaming pomiędzy punktami dostępowymi, które należą " +"do tej samej domeny" msgid "Enables the Spanning Tree Protocol on this bridge" msgstr "" "Włącz protokół <abbr title=\"Spanning Tree Protocol\">STP</abbr> na tym " "moście" -# a może sposób kapsułkowania byłby lepszy? msgid "Encapsulation mode" -msgstr "Sposób Enkapsulacji" +msgstr "Sposób enkapsulacji" msgid "Encryption" msgstr "Szyfrowanie" @@ -1133,7 +1138,7 @@ msgid "Ethernet Switch" msgstr "Switch Ethernet" msgid "Exclude interfaces" -msgstr "" +msgstr "Wyklucz interfejsy" msgid "Expand hosts" msgstr "Rozwiń hosty" @@ -1157,13 +1162,13 @@ msgid "External R1 Key Holder List" msgstr "" msgid "External system log server" -msgstr "Zewnętrzny serwer dla loga systemowego" +msgstr "Zewnętrzny serwer dla logów systemowych" msgid "External system log server port" -msgstr "Port zewnętrznego serwera dla loga systemowego" +msgstr "Port zewnętrznego serwera dla logów systemowych" msgid "External system log server protocol" -msgstr "" +msgstr "Protokół zewnętrznego serwera dla logów systemowych" msgid "Extra SSH command options" msgstr "" @@ -1215,7 +1220,6 @@ msgstr "Firewall" msgid "Firewall Mark" msgstr "" -# Nie ma potrzeby pisania z dużej litery msgid "Firewall Settings" msgstr "Ustawienia firewalla" @@ -1263,7 +1267,7 @@ msgid "Force TKIP and CCMP (AES)" msgstr "Wymuś TKIP i CCMP (AES)" msgid "Force link" -msgstr "" +msgstr "Wymuś połączenie" msgid "Force use of NAT-T" msgstr "" @@ -1280,6 +1284,9 @@ msgstr "" msgid "Forward broadcast traffic" msgstr "Przekazuj broadcast`y" +msgid "Forward mesh peer traffic" +msgstr "" + msgid "Forwarding mode" msgstr "Tryb przekazywania" @@ -1322,10 +1329,10 @@ msgid "General options for opkg" msgstr "" msgid "Generate Config" -msgstr "" +msgstr "Wygeneruj konfigurację" msgid "Generate PMK locally" -msgstr "" +msgstr "Wygeneruj PMK lokalnie" msgid "Generate archive" msgstr "Twórz archiwum" @@ -1354,7 +1361,7 @@ msgid "Group Password" msgstr "" msgid "Guest" -msgstr "" +msgstr "Gość" msgid "HE.net password" msgstr "Hasło HE.net" @@ -1365,9 +1372,6 @@ msgstr "" msgid "HT mode (802.11n)" msgstr "" -msgid "Handler" -msgstr "Uchwyt" - msgid "Hang Up" msgstr "Rozłącz" @@ -1416,7 +1420,7 @@ msgid "Hostname" msgstr "Nazwa hosta" msgid "Hostname to send when requesting DHCP" -msgstr "Nazwa hosta do wysłania podczas negocjacji DHCP" +msgstr "Nazwa hosta wysyłana podczas negocjacji DHCP" msgid "Hostnames" msgstr "Nazwy hostów" @@ -1619,7 +1623,7 @@ msgid "Install" msgstr "Instaluj" msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" +msgstr "Zainstaluj iputils-traceroute6 w celu skorzystania z traceroute dla iPv6" msgid "Install package %q" msgstr "Instaluj pakiet %q" @@ -1650,7 +1654,7 @@ msgid "Interface is shutting down..." msgstr "Interfejs jest wyłączany..." msgid "Interface name" -msgstr "" +msgstr "Nazwa interfejsu" msgid "Interface not present or not connected yet." msgstr "Interfejs nie istnieje lub nie jest jeszcze podłączony." @@ -1684,7 +1688,7 @@ msgid "Invalid username and/or password! Please try again." msgstr "Niewłaściwy login i/lub hasło! Spróbuj ponownie." msgid "Isolate Clients" -msgstr "" +msgstr "Izoluj klientów" #, fuzzy msgid "" @@ -1701,10 +1705,10 @@ msgid "Join Network" msgstr "Połącz z siecią" msgid "Join Network: Wireless Scan" -msgstr "Przyłącz do sieci: Skanuj sieci WiFi" +msgstr "Przyłącz do sieci: Skanuj sieci Wi-Fi" msgid "Joining Network: %q" -msgstr "" +msgstr "Przyłączanie do sieci: %q" msgid "Keep settings" msgstr "Zachowaj ustawienia" @@ -1749,13 +1753,13 @@ msgid "Language and Style" msgstr "Wygląd i język" msgid "Latency" -msgstr "" +msgstr "Opoźnienie" msgid "Leaf" msgstr "" msgid "Lease time" -msgstr "" +msgstr "Czas dzierżawy" msgid "Lease validity time" msgstr "Czas ważności dzierżawy" @@ -1782,7 +1786,7 @@ msgid "Limit DNS service to subnets interfaces on which we are serving DNS." msgstr "" msgid "Limit listening to these interfaces, and loopback." -msgstr "" +msgstr "Ogranicz nasłuchiwanie do tych interfesjów, oraz loopbacku." msgid "Line Attenuation (LATN)" msgstr "" @@ -1832,10 +1836,10 @@ msgid "List of hosts that supply bogus NX domain results" msgstr "Lista hostów które dostarczają zafałszowane wyniki NX domain" msgid "Listen Interfaces" -msgstr "" +msgstr "Nasłuchuj interfejs" msgid "Listen Port" -msgstr "" +msgstr "Nasłuchuj port" msgid "Listen only on the given interface or, if unspecified, on all" msgstr "" @@ -1854,7 +1858,7 @@ msgid "Loading" msgstr "Ładowanie" msgid "Local IP address to assign" -msgstr "" +msgstr "Lokalny adres IP do przypisania" msgid "Local IPv4 address" msgstr "Lokalny adres IPv4" @@ -1942,7 +1946,7 @@ msgid "MB/s" msgstr "MB/s" msgid "MD5" -msgstr "" +msgstr "MD5" msgid "MHz" msgstr "MHz" @@ -1954,6 +1958,8 @@ msgid "" "Make sure to clone the root filesystem using something like the commands " "below:" msgstr "" +"Upewnij się, że klonujesz główny system plików, używając czegoś podobnego " +"do poleceń poniżej:" msgid "Manual" msgstr "" @@ -1973,9 +1979,6 @@ msgstr "Maksymalny dozwolony rozmiar pakietu EDNS.0 UDP" msgid "Maximum amount of seconds to wait for the modem to become ready" msgstr "Maksymalny czas podany w sekundach do pełnej gotowości modemu" -msgid "Maximum hold time" -msgstr "Maksymalny czas podtrzymania" - msgid "" "Maximum length of the name is 15 characters including the automatic protocol/" "bridge prefix (br-, 6in4-, pppoe- etc.)" @@ -1993,12 +1996,12 @@ msgstr "Pamięć" msgid "Memory usage (%)" msgstr "Użycie pamięci (%)" +msgid "Mesh Id" +msgstr "" + msgid "Metric" msgstr "Metryka" -msgid "Minimum hold time" -msgstr "Minimalny czas podtrzymania" - msgid "Mirror monitor port" msgstr "" @@ -2015,7 +2018,7 @@ msgid "Mode" msgstr "Tryb" msgid "Model" -msgstr "" +msgstr "Model" msgid "Modem device" msgstr "Modem" @@ -2082,7 +2085,7 @@ msgid "NAT64 Prefix" msgstr "" msgid "NCM" -msgstr "" +msgstr "NCM" msgid "NDP-Proxy" msgstr "" @@ -2166,7 +2169,7 @@ msgid "Noise" msgstr "Szum" msgid "Noise Margin (SNR)" -msgstr "" +msgstr "Margines szumów (SNR)" msgid "Noise:" msgstr "Szum:" @@ -2193,7 +2196,7 @@ msgid "Not connected" msgstr "Nie podłączony" msgid "Note: Configuration files will be erased." -msgstr "UWAGA: Pliki konfiguracyjne zostaną usunięte." +msgstr "Uwaga: Pliki konfiguracyjne zostaną usunięte." msgid "Note: interface name length" msgstr "" @@ -2204,6 +2207,9 @@ msgstr "Spostrzeżenie" msgid "Nslookup" msgstr "Nslookup" +msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" +msgstr "" + msgid "OK" msgstr "OK" @@ -2255,7 +2261,7 @@ msgid "OpenConnect (CISCO AnyConnect)" msgstr "" msgid "Operating frequency" -msgstr "" +msgstr "Częstotliwość" msgid "Option changed" msgstr "Wartość zmieniona" @@ -2264,7 +2270,7 @@ msgid "Option removed" msgstr "Usunięto wartość" msgid "Optional" -msgstr "" +msgstr "Opcjonalny" msgid "Optional, specify to override default server (tic.sixxs.net)" msgstr "" @@ -2333,13 +2339,13 @@ msgid "Override MTU" msgstr "Nadpisz MTU" msgid "Override TOS" -msgstr "" +msgstr "Nadpisz TOS" msgid "Override TTL" -msgstr "" +msgstr "Nadpisz TTL" msgid "Override default interface name" -msgstr "" +msgstr "Nadpisz domyślną nazwę interfejsu" msgid "Override the gateway in DHCP responses" msgstr "Nadpisz adres bramy w odpowiedziach DHCP" @@ -2373,7 +2379,7 @@ msgid "PIN" msgstr "PIN" msgid "PMK R1 Push" -msgstr "" +msgstr "PMK R1 Push" msgid "PPP" msgstr "PPP" @@ -2388,7 +2394,7 @@ msgid "PPPoE" msgstr "PPPoE" msgid "PPPoSSH" -msgstr "" +msgstr "PPPoSSH" msgid "PPtP" msgstr "PPtP" @@ -2421,13 +2427,13 @@ msgid "Password" msgstr "Hasło" msgid "Password authentication" -msgstr "Identyfikacja hasłem" +msgstr "Uwierzytelnianie hasłem" msgid "Password of Private Key" msgstr "Hasło lub klucz prywatny" msgid "Password of inner Private Key" -msgstr "" +msgstr "Wewnętrzne hasło klucza prywatnego" msgid "Password successfully changed!" msgstr "Pomyślnie zmieniono hasło!" @@ -2439,24 +2445,19 @@ msgid "Path to CA-Certificate" msgstr "Ścieżka do certyfikatu CA" msgid "Path to Client-Certificate" -msgstr "Ścieżka do certyfikatu Klienta" +msgstr "Ścieżka do certyfikatu klienta" msgid "Path to Private Key" msgstr "Ścieżka do Klucza Prywatnego" -msgid "Path to executable which handles the button event" -msgstr "" -"Ścieżka do pliku wykonywalnego, który obsługuje zdarzenie dla danego " -"przycisku" - msgid "Path to inner CA-Certificate" -msgstr "" +msgstr "Ścieżka do wewnętrznego certyfikatu CA" msgid "Path to inner Client-Certificate" -msgstr "" +msgstr "Ścieżka do wewnętrznego certyfikatu Klienta" msgid "Path to inner Private Key" -msgstr "" +msgstr "Ścieżka do wewnętrznego klucza prywatnego " msgid "Peak:" msgstr "Szczyt:" @@ -2504,7 +2505,7 @@ msgid "Port status:" msgstr "Status portu:" msgid "Power Management Mode" -msgstr "" +msgstr "Tryb zarządzania energią" msgid "Pre-emtive CRC errors (CRCP_P)" msgstr "" @@ -2529,16 +2530,16 @@ msgstr "" "wpisz 0 aby zignorować błędy" msgid "Prevent listening on these interfaces." -msgstr "" +msgstr "Zapobiegaj nasłuchiwaniu na tych interfejsach." msgid "Prevents client-to-client communication" -msgstr "Zapobiegaj komunikacji klientów pomiędzy sobą" +msgstr "Zabroń klientą na komunikacje między sobą" msgid "Prism2/2.5/3 802.11b Wireless Controller" msgstr "Kontroler bezprzewodowy Prism2/2.5/3 802.11b" msgid "Private Key" -msgstr "" +msgstr "Klucz prywatny" msgid "Proceed" msgstr "Wykonaj" @@ -2547,7 +2548,7 @@ msgid "Processes" msgstr "Procesy" msgid "Profile" -msgstr "" +msgstr "Profil" msgid "Prot." msgstr "Prot." @@ -2564,7 +2565,6 @@ msgstr "Protokół nowego interfejsu" msgid "Protocol support is not installed" msgstr "Wsparcie dla protokołu nie jest zainstalowane" -# Opcja dotyczy włączenia serwera czasu, więc "podaj" nie jest właściwym tłumaczeniem w tym miejscu - obsy msgid "Provide NTP server" msgstr "Włącz serwer NTP" @@ -2575,7 +2575,7 @@ msgid "Pseudo Ad-Hoc (ahdemo)" msgstr "Pseudo Ad-Hoc (ahdemo)" msgid "Public Key" -msgstr "" +msgstr "Klucz publiczny" msgid "Public prefix routed to this device for distribution to clients." msgstr "" @@ -2684,10 +2684,10 @@ msgid "Realtime Traffic" msgstr "Ruch w czasie rzeczywistym" msgid "Realtime Wireless" -msgstr "WiFi w czasie rzeczywistym" +msgstr "Wi-Fi w czasie rzeczywistym" msgid "Reassociation Deadline" -msgstr "" +msgstr "Termin reasocjacji" msgid "Rebind protection" msgstr "Przypisz ochronę" @@ -2735,7 +2735,7 @@ msgid "Remote IPv4 address" msgstr "Zdalny adres IPv4" msgid "Remote IPv4 address or FQDN" -msgstr "" +msgstr "Zdalny adres IPv4 lub FQDN" msgid "Remove" msgstr "Usuń" @@ -2750,16 +2750,16 @@ msgid "Replace wireless configuration" msgstr "Zamień konfigurację WiFi" msgid "Request IPv6-address" -msgstr "" +msgstr "Zażądaj adresu IPv6" msgid "Request IPv6-prefix of length" msgstr "" msgid "Require TLS" -msgstr "" +msgstr "Wymagaj TLS" msgid "Required" -msgstr "" +msgstr "Wymagany" msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" msgstr "Wymagany dla niektórych dostawców internetu, np. Charter z DOCSIS 3" @@ -2869,16 +2869,16 @@ msgid "SIXXS-handle[/Tunnel-ID]" msgstr "" msgid "SNR" -msgstr "" +msgstr "SNR" msgid "SSH Access" msgstr "Dostęp SSH" msgid "SSH server address" -msgstr "" +msgstr "Adres serwera SSH" msgid "SSH server port" -msgstr "" +msgstr "Port serwera SSH" msgid "SSH username" msgstr "" @@ -2951,6 +2951,8 @@ msgid "" "Set interface properties regardless of the link carrier (If set, carrier " "sense events do not invoke hotplug handlers)." msgstr "" +"Ustaw właściwości interfejsu, niezależnie od operatora łącza (nie wpływa" +" na programy operatora które ustanawiają połączenie)." #, fuzzy msgid "Set up Time Synchronization" @@ -2989,6 +2991,9 @@ msgstr "Rozmiar" msgid "Size (.ipk)" msgstr "" +msgid "Size of DNS query cache" +msgstr "" + msgid "Skip" msgstr "Pomiń" @@ -3005,7 +3010,7 @@ msgid "Software" msgstr "Oprogramowanie" msgid "Software VLAN" -msgstr "" +msgstr "VLAN programowy" msgid "Some fields are invalid, cannot save values!" msgstr "Wartości pewnych pól są niewłaściwe, nie mogę ich zachować!" @@ -3034,9 +3039,6 @@ msgstr "Źródło" msgid "Source routing" msgstr "" -msgid "Specifies the button state to handle" -msgstr "Określa zachowanie w zależności od stanu przycisku" - msgid "Specifies the directory the device is attached to" msgstr "Podaje katalog do którego jest podłączone urządzenie" @@ -3143,6 +3145,9 @@ msgid "" "Switch %q has an unknown topology - the VLAN settings might not be accurate." msgstr "" +msgid "Switch Port Mask" +msgstr "" + msgid "Switch VLAN" msgstr "" @@ -3278,7 +3283,7 @@ msgid "The following rules are currently active on this system." msgstr "Następujące zasady są obecnie aktywne w tym systemie." msgid "The given network name is not unique" -msgstr "Podana sieć NIE jest unikalna" +msgstr "Podana sieć nie jest unikalna" #, fuzzy msgid "" @@ -3411,10 +3416,10 @@ msgstr "" msgid "" "This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with <code>:2</code>" +"ends with <code>...:2/64</code>" msgstr "" "To jest lokalny adres końcowy przypisany przez tunnel broker'a, zwykle " -"kończący się z <code>:2</code>" +"kończący się z <code>...:2/64</code>" # w tłumaczeniu pojawiła się spacja po DHCP</abbr> co powoduje niepoprawne wyświetlanie się strony z lang PL msgid "" @@ -3447,10 +3452,6 @@ msgstr "" "Poniższa lista przedstawia aktualnie uruchomione procesy systemowe i ich " "status." -msgid "This page allows the configuration of custom button actions" -msgstr "" -"Poniższa strona umożliwia konfigurację działania niestandardowych przycisków" - msgid "This page gives an overview over currently active network connections." msgstr "Poniższa strona przedstawia aktualnie aktywne połączenia sieciowe." @@ -3470,8 +3471,8 @@ msgid "" "To restore configuration files, you can upload a previously generated backup " "archive here." msgstr "" -"Aby przywrócić pliki konfiguracyjne, można tutaj wczytać wcześniej utworzone " -"archiwum kopii zapasowej." +"Aby przywrócić pliki konfiguracyjne, możesz tutaj przesłać wcześniej utworzoną " +"kopię zapasową." msgid "Tone" msgstr "" @@ -3504,7 +3505,7 @@ msgid "Trigger" msgstr "Trigger" msgid "Trigger Mode" -msgstr "Tryb Trigger" +msgstr "Rodzaj Triggeru" msgid "Tunnel ID" msgstr "Numer identyfikacyjny tunelu" @@ -3522,7 +3523,7 @@ msgid "Tunnel setup server" msgstr "" msgid "Tunnel type" -msgstr "" +msgstr "Typ tunelu" msgid "Tx-Power" msgstr "Moc nadawania" @@ -3543,7 +3544,7 @@ msgid "USB Device" msgstr "Urządzenie USB" msgid "USB Ports" -msgstr "" +msgstr "Porty USB" msgid "UUID" msgstr "UUID" @@ -3558,13 +3559,13 @@ msgid "Unknown" msgstr "Nieznany" msgid "Unknown Error, password not changed!" -msgstr "Nieznany błąd, hasło nie zostało zmienione" +msgstr "Nieznany błąd, hasło nie zostało zmienione!" msgid "Unmanaged" msgstr "Niezarządzalny" msgid "Unmount" -msgstr "" +msgstr "Odmontuj" msgid "Unsaved Changes" msgstr "Niezapisane zmiany" @@ -3580,9 +3581,9 @@ msgid "" "Check \"Keep settings\" to retain the current configuration (requires a " "compatible firmware image)." msgstr "" -"Prześlij zgodny z funkcją sysupgrade obraz tutaj, aby zastąpić aktualnie " -"działające firmware. Zaznacz opcję \"Zachowaj ustawienia\", aby zachować " -"bieżącą konfigurację (wymaga zgodnego obrazu firmware)." +"Prześlij tutaj obraz zgodny z funkcją sysupgrade, aby zastąpić aktualnie " +"działające opragramowanie. Zaznacz opcję \"Zachowaj ustawienia\", aby zachować " +"bieżącą konfigurację (wymagany obraz zgodny z bieżącym opragramowaniem)." msgid "Upload archive..." msgstr "Załaduj archiwum..." @@ -3615,16 +3616,16 @@ msgid "Use as external overlay (/overlay)" msgstr "" msgid "Use as root filesystem (/)" -msgstr "" +msgstr "Użyj jako systemu plików root (/)" msgid "Use broadcast flag" msgstr "Użyj flagi rozgłaszania" msgid "Use builtin IPv6-management" -msgstr "" +msgstr "Skorzystaj z wbudowanego zarządzania protokołem IPv6" msgid "Use custom DNS servers" -msgstr "Użyj własnych serwerów DNS" +msgstr "Użyj własne serwery DNS" msgid "Use default gateway" msgstr "Użyj domyślnej bramy" @@ -3637,9 +3638,9 @@ msgstr "Użyj tabeli routingu" msgid "" "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</" -"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed " -"address to use and the <em>Hostname</em> is assigned as symbolic name to the " -"requesting host. The optional <em>Lease time</em> can be used to set non-" +"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed " +"address to use, and the <em>Hostname</em> is assigned as a symbolic name to " +"the requesting host. The optional <em>Lease time</em> can be used to set non-" "standard host-specific lease time, e.g. 12h, 3d or infinite." msgstr "" "Użyj przycisku <em>Dodaj</em>, aby dodać nowy wpis dzierżawy. <em>Adres MAC</" @@ -3660,10 +3661,10 @@ msgid "" msgstr "" msgid "User certificate (PEM encoded)" -msgstr "" +msgstr "Certyfikat użytkownika (kodowany PEM)" msgid "User key (PEM encoded)" -msgstr "" +msgstr "Klucz użytkownika (kodowany PEM)" msgid "Username" msgstr "Nazwa użytkownika" @@ -3672,7 +3673,7 @@ msgid "VC-Mux" msgstr "VC-Mux" msgid "VDSL" -msgstr "" +msgstr "VDSL" msgid "VLANs on %q" msgstr "Sieci VLAN na %q" @@ -3690,7 +3691,7 @@ msgid "VPN Server" msgstr "Serwer VPN" msgid "VPN Server port" -msgstr "" +msgstr "Port serwera VPN" msgid "VPN Server's certificate SHA1 hash" msgstr "" @@ -3699,7 +3700,7 @@ msgid "VPNC (CISCO 3000 (and others) VPN)" msgstr "" msgid "Vendor" -msgstr "" +msgstr "Producent" msgid "Vendor Class to send when requesting DHCP" msgstr "Klasa producenta do wysłania podczas żądania DHCP" @@ -3738,14 +3739,13 @@ msgid "" "WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " "and ad-hoc mode) to be installed." msgstr "" -"Kodowanie WPA wymaga zainstalowanych modułów wpa_supplicant (na tryb " -"klienta) lub hostapd (dla trybów AP lub ad-hoc)" +"Kodowanie WPA wymaga zainstalowanych modułów wpa_supplicant (tryb " +"klienta) lub hostapd (tryb AP lub ad-hoc)" msgid "" "Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" msgstr "" -# obsy: Brzmi to lepiej niż "czekanie na wprowadzanie zmian. msgid "Waiting for changes to be applied..." msgstr "Trwa wprowadzenie zmian..." @@ -3753,13 +3753,14 @@ msgid "Waiting for command to complete..." msgstr "Trwa wykonanie polecenia..." msgid "Waiting for device..." -msgstr "" +msgstr "Oczekiwanie na urządzenie..." msgid "Warning" msgstr "Ostrzeżenie" msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" +msgstr "Ostrzeżenie: Istnieją niezapisane zmiany, które zostaną utracone " +"po ponownym uruchomieniu urządzenia!" msgid "" "When using a PSK, the PMK can be generated locally without inter AP " @@ -3773,7 +3774,7 @@ msgid "Whether to route only packets from delegated prefixes" msgstr "" msgid "Width" -msgstr "" +msgstr "Szerokość" msgid "WireGuard VPN" msgstr "" @@ -3815,7 +3816,7 @@ msgid "Write received DNS requests to syslog" msgstr "Zapisz otrzymane żądania DNS do syslog'a" msgid "Write system log to file" -msgstr "" +msgstr "Zapisz log systemowy do pliku" msgid "" "You can enable or disable installed init scripts here. Changes will applied " @@ -3838,6 +3839,9 @@ msgid "" "upgrade it to at least version 7 or use another browser like Firefox, Opera " "or Safari." msgstr "" +"Twój Internet Explorer jest za stary, aby poprawnie wyświetlić tę stronę" +"zaktualizuj go do wersji co najmniej 7 lub użyj innej przeglądarki, takiej " +"jak Firefox, Opera czy Safari". msgid "any" msgstr "dowolny" @@ -3849,13 +3853,13 @@ msgid "baseT" msgstr "baseT" msgid "bridged" -msgstr "bridged" +msgstr "zmostkowany" msgid "create:" msgstr "utwórz:" msgid "creates a bridge over specified interface(s)" -msgstr "utwórz bridge na określonych interfejsach" +msgstr "utwórz most na określonych interfejsach" msgid "dB" msgstr "dB" @@ -3867,7 +3871,7 @@ msgid "disable" msgstr "wyłącz" msgid "disabled" -msgstr "" +msgstr "wyłączony" msgid "expired" msgstr "wygasły" @@ -3895,7 +3899,7 @@ msgid "hidden" msgstr "ukryty" msgid "hybrid mode" -msgstr "" +msgstr "tryb hybrydowy" msgid "if target is a network" msgstr "jeżeli celem jest sieć" @@ -3916,10 +3920,10 @@ msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file" msgstr "lokalny plik <abbr title=\"Domain Name System\">DNS</abbr>" msgid "minimum 1280, maximum 1480" -msgstr "" +msgstr "minimum 1280, maksimum 1480" msgid "minutes" -msgstr "" +msgstr "minuty" msgid "no" msgstr "nie" @@ -3932,7 +3936,7 @@ msgid "none" msgstr "żaden" msgid "not present" -msgstr "" +msgstr "nieobecny" msgid "off" msgstr "wyłączone" @@ -3946,6 +3950,9 @@ msgstr "otwarte" msgid "overlay" msgstr "" +msgid "random" +msgstr "losowy" + msgid "relay mode" msgstr "" @@ -3953,7 +3960,7 @@ msgid "routed" msgstr "routowane" msgid "server mode" -msgstr "" +msgstr "tryb serwera" msgid "stateful-only" msgstr "" @@ -3965,10 +3972,10 @@ msgid "stateless + stateful" msgstr "" msgid "tagged" -msgstr "tagowane" +msgstr "otagowane" msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" +msgstr "jednostki czasu (TUs / 1.024 ms) [1000-65535]" msgid "unknown" msgstr "nieznane" @@ -3983,7 +3990,7 @@ msgid "unspecified -or- create:" msgstr "nieokreślone -lub- utwórz:" msgid "untagged" -msgstr "nietagowane" +msgstr "nieotagowane" msgid "yes" msgstr "tak" @@ -3991,6 +3998,34 @@ msgstr "tak" msgid "« Back" msgstr "« Wróć" +#~ msgid "Action" +#~ msgstr "Akcja" + +#~ msgid "Buttons" +#~ msgstr "Przyciski" + +#~ msgid "Handler" +#~ msgstr "Uchwyt" + +#~ msgid "Maximum hold time" +#~ msgstr "Maksymalny czas podtrzymania" + +#~ msgid "Minimum hold time" +#~ msgstr "Minimalny czas podtrzymania" + +#~ msgid "Path to executable which handles the button event" +#~ msgstr "" +#~ "Ścieżka do pliku wykonywalnego, który obsługuje zdarzenie dla danego " +#~ "przycisku" + +#~ msgid "Specifies the button state to handle" +#~ msgstr "Określa zachowanie w zależności od stanu przycisku" + +#~ msgid "This page allows the configuration of custom button actions" +#~ msgstr "" +#~ "Poniższa strona umożliwia konfigurację działania niestandardowych " +#~ "przycisków" + #~ msgid "Leasetime" #~ msgstr "Czas dzierżawy" diff --git a/modules/luci-base/po/pt-br/base.po b/modules/luci-base/po/pt-br/base.po index eef8ebac38..bbfb8cf8d9 100644 --- a/modules/luci-base/po/pt-br/base.po +++ b/modules/luci-base/po/pt-br/base.po @@ -241,9 +241,6 @@ msgstr "Concentrador de Acesso" msgid "Access Point" msgstr "Ponto de Acceso (AP)" -msgid "Action" -msgstr "Ação" - msgid "Actions" msgstr "Ações" @@ -322,6 +319,9 @@ msgstr "" msgid "Allow all except listed" msgstr "Permitir todos, exceto os listados" +msgid "Allow legacy 802.11b rates" +msgstr "" + msgid "Allow listed only" msgstr "Permitir somente os listados" @@ -434,11 +434,11 @@ msgstr "configuração de antena" msgid "Any zone" msgstr "Qualquer zona" -msgid "Apply" -msgstr "Aplicar" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "Aplicar as alterações" +msgid "Apply unchecked" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -609,9 +609,6 @@ msgstr "" "Fonte de pacotes específico da compilação/distribuição. Esta NÃO será " "preservada em qualquer atualização do sistema." -msgid "Buttons" -msgstr "Botões" - msgid "CA certificate; if empty it will be saved after the first connection." msgstr "" "Certificado da CA; se em branco, será salvo depois da primeira conexão." @@ -634,16 +631,24 @@ msgstr "Alterações" msgid "Changes applied." msgstr "Alterações aplicadas." +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "Muda a senha do administrador para acessar este dispositivo" msgid "Channel" msgstr "Canal" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "Verificar" -msgid "Check fileystems before mount" +msgid "Check filesystems before mount" msgstr "" "Execute a verificação do sistema de arquivos antes da montagem do dispositivo" @@ -722,12 +727,15 @@ msgstr "" msgid "Configuration" msgstr "Configuração" -msgid "Configuration applied." -msgstr "Configuração aplicada." - msgid "Configuration files will be kept." msgstr "Os arquivos de configuração serão mantidos." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "Confirmação" @@ -746,6 +754,12 @@ msgstr "A conexão para este servidor falhará quando o TLS não puder ser usado msgid "Connections" msgstr "Conexões" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "País" @@ -790,6 +804,11 @@ msgid "Custom feeds" msgstr "Fontes de pacotes customizadas" msgid "" +"Custom files (certificates, scripts) may remain on the system. To prevent " +"this, perform a factory-reset first." +msgstr "" + +msgid "" "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode" "\">LED</abbr>s if possible." msgstr "" @@ -916,6 +935,9 @@ msgstr "O dispositivo está reiniciando..." msgid "Device unreachable" msgstr "Dispositivo não alcançável" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "Diagnóstico" @@ -951,6 +973,9 @@ msgid "Discard upstream RFC1918 responses" msgstr "" "Descartar respostas de servidores externos para redes privadas (RFC1918)" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "Mostre somente os pacotes contendo" @@ -1073,6 +1098,11 @@ msgstr "Emergência" msgid "Enable" msgstr "Ativar" +msgid "" +"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> " +"snooping" +msgstr "" + msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>" msgstr "Ativar <abbr title=\"Spanning Tree Protocol\">STP</abbr>" @@ -1130,6 +1160,9 @@ msgstr "Ativar/Desativar" msgid "Enabled" msgstr "Ativado" +msgid "Enables IGMP snooping on this bridge" +msgstr "" + msgid "" "Enables fast roaming among access points that belong to the same Mobility " "Domain" @@ -1212,6 +1245,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "Arquivo" @@ -1318,6 +1354,9 @@ msgstr "" msgid "Forward broadcast traffic" msgstr "Encaminhar tráfego broadcast" +msgid "Forward mesh peer traffic" +msgstr "" + msgid "Forwarding mode" msgstr "Modo de encaminhamento" @@ -1405,10 +1444,6 @@ msgstr "" "Modo <abbr title=\"High Throughput/Alta Taxa de Transferência\">HT</abbr> " "(802.11n)" -# Não sei que contexto isto está sendo usado -msgid "Handler" -msgstr "Responsável" - msgid "Hang Up" msgstr "Suspender" @@ -2051,10 +2086,6 @@ msgstr "Tamanho máximo permitido dos pacotes UDP EDNS.0" msgid "Maximum amount of seconds to wait for the modem to become ready" msgstr "Tempo máximo, em segundos, para esperar que o modem fique pronto" -# Desconheço o uso -msgid "Maximum hold time" -msgstr "Tempo máximo de espera" - msgid "" "Maximum length of the name is 15 characters including the automatic protocol/" "bridge prefix (br-, 6in4-, pppoe- etc.)" @@ -2074,12 +2105,12 @@ msgstr "Memória" msgid "Memory usage (%)" msgstr "Uso da memória (%)" +msgid "Mesh Id" +msgstr "" + msgid "Metric" msgstr "Métrica" -msgid "Minimum hold time" -msgstr "Tempo mínimo de espera" - msgid "Mirror monitor port" msgstr "Porta de monitoramento do espelho" @@ -2287,6 +2318,9 @@ msgstr "Aviso" msgid "Nslookup" msgstr "Nslookup" +msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" +msgstr "" + msgid "OK" msgstr "OK" @@ -2299,6 +2333,9 @@ msgstr "Senha Ofuscada do Grupo" msgid "Obfuscated Password" msgstr "Senha Ofuscada" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "Atraso no estado de desligado" @@ -2540,9 +2577,6 @@ msgstr "Caminho para o Certificado do Cliente" msgid "Path to Private Key" msgstr "Caminho para a Chave Privada" -msgid "Path to executable which handles the button event" -msgstr "Caminho para o executável que trata o evento do botão" - msgid "Path to inner CA-Certificate" msgstr "Caminho para os certificados CA interno" @@ -2918,6 +2952,15 @@ msgstr "Relevar/esconder senha" msgid "Revert" msgstr "Reverter" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "Raiz" @@ -2999,9 +3042,6 @@ msgstr "Salvar" msgid "Save & Apply" msgstr "Salvar & Aplicar" -msgid "Save & Apply" -msgstr "Save & Aplicar" - msgid "Scan" msgstr "Procurar" @@ -3095,6 +3135,9 @@ msgstr "Tamanho" msgid "Size (.ipk)" msgstr "Tamanho (.ipk)" +msgid "Size of DNS query cache" +msgstr "" + msgid "Skip" msgstr "Pular" @@ -3140,9 +3183,6 @@ msgstr "Origem" msgid "Source routing" msgstr "Roteamento pela origem" -msgid "Specifies the button state to handle" -msgstr "Especifica o estado do botão para ser tratado" - msgid "Specifies the directory the device is attached to" msgstr "Especifica o diretório que o dispositivo está conectado" @@ -3189,6 +3229,9 @@ msgstr "Iniciar" msgid "Start priority" msgstr "Prioridade de iniciação" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "Iniciação" @@ -3256,6 +3299,9 @@ msgstr "" "O Switch %q tem uma topologia desconhecida - as configurações de VLAN podem " "não ser precisas." +msgid "Switch Port Mask" +msgstr "" + msgid "Switch VLAN" msgstr "Switch VLAN" @@ -3356,6 +3402,16 @@ msgstr "" "O arquivo de configuração não pode ser carregado devido ao seguinte erro:" msgid "" +"The device could not be reached within %d seconds after applying the pending " +"changes, which caused the configuration to be rolled back for safety " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3381,9 +3437,6 @@ msgstr "" "garantir a integridade dos dados. <br /> Clique em \"Proceder\" para iniciar " "o procedimetno de gravação." -msgid "The following changes have been committed" -msgstr "As seguintes mudanças foram aplicadas" - msgid "The following changes have been reverted" msgstr "As seguintes alterações foram revertidas" @@ -3469,8 +3522,8 @@ msgstr "" msgid "There are no active leases." msgstr "Não existem alocações ativas." -msgid "There are no pending changes to apply!" -msgstr "Não existem modificações pendentes para aplicar!" +msgid "There are no changes to apply." +msgstr "" msgid "There are no pending changes to revert!" msgstr "Não existem modificações pendentes para reverter!" @@ -3530,10 +3583,10 @@ msgstr "" msgid "" "This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with <code>:2</code>" +"ends with <code>...:2/64</code>" msgstr "" "Este é o endereço da ponta local designado pelo agente de túnel. normalmente " -"ele termina com <code>:2</code>" +"ele termina com <code>...:2/64</code>" msgid "" "This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</" @@ -3566,10 +3619,6 @@ msgid "" msgstr "" "Esta lista fornece uma visão geral sobre os processos em execução no sistema." -msgid "This page allows the configuration of custom button actions" -msgstr "" -"Esta página permite a configuração de ações personalizadas para os botões" - msgid "This page gives an overview over currently active network connections." msgstr "Esta página fornece informações sobre as conexões de rede ativas." @@ -3760,9 +3809,9 @@ msgstr "Use a tabela de roteamento" msgid "" "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</" -"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed " -"address to use and the <em>Hostname</em> is assigned as symbolic name to the " -"requesting host. The optional <em>Lease time</em> can be used to set non-" +"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed " +"address to use, and the <em>Hostname</em> is assigned as a symbolic name to " +"the requesting host. The optional <em>Lease time</em> can be used to set non-" "standard host-specific lease time, e.g. 12h, 3d or infinite." msgstr "" "Use o botão <em>Adicionar</em> para adicionar uma nova entrada de " @@ -3878,6 +3927,9 @@ msgstr "Esperando a aplicação das mudanças..." msgid "Waiting for command to complete..." msgstr "Esperando o término do comando..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "Esperando pelo dispositivo..." @@ -4077,6 +4129,9 @@ msgstr "aberto" msgid "overlay" msgstr "sobreposição" +msgid "random" +msgstr "" + msgid "relay mode" msgstr "modo retransmissor" @@ -4122,6 +4177,51 @@ msgstr "sim" msgid "« Back" msgstr "« Voltar" +#~ msgid "Apply" +#~ msgstr "Aplicar" + +#~ msgid "Applying changes" +#~ msgstr "Aplicar as alterações" + +#~ msgid "Configuration applied." +#~ msgstr "Configuração aplicada." + +#~ msgid "Save & Apply" +#~ msgstr "Save & Aplicar" + +#~ msgid "The following changes have been committed" +#~ msgstr "As seguintes mudanças foram aplicadas" + +#~ msgid "There are no pending changes to apply!" +#~ msgstr "Não existem modificações pendentes para aplicar!" + +#~ msgid "Action" +#~ msgstr "Ação" + +#~ msgid "Buttons" +#~ msgstr "Botões" + +# Não sei que contexto isto está sendo usado +#~ msgid "Handler" +#~ msgstr "Responsável" + +# Desconheço o uso +#~ msgid "Maximum hold time" +#~ msgstr "Tempo máximo de espera" + +#~ msgid "Minimum hold time" +#~ msgstr "Tempo mínimo de espera" + +#~ msgid "Path to executable which handles the button event" +#~ msgstr "Caminho para o executável que trata o evento do botão" + +#~ msgid "Specifies the button state to handle" +#~ msgstr "Especifica o estado do botão para ser tratado" + +#~ msgid "This page allows the configuration of custom button actions" +#~ msgstr "" +#~ "Esta página permite a configuração de ações personalizadas para os botões" + #~ msgid "Leasetime" #~ msgstr "Tempo de atribuição do DHCP" diff --git a/modules/luci-base/po/pt/base.po b/modules/luci-base/po/pt/base.po index aadccccc39..7e191809b8 100644 --- a/modules/luci-base/po/pt/base.po +++ b/modules/luci-base/po/pt/base.po @@ -225,9 +225,6 @@ msgstr "Concentrador de Acesso" msgid "Access Point" msgstr "Access Point (AP)" -msgid "Action" -msgstr "Acção" - msgid "Actions" msgstr "Acções" @@ -304,6 +301,9 @@ msgstr "" msgid "Allow all except listed" msgstr "Permitir todos, excepto os listados" +msgid "Allow legacy 802.11b rates" +msgstr "" + msgid "Allow listed only" msgstr "Permitir somente os listados" @@ -411,11 +411,11 @@ msgstr "Configuração das Antenas" msgid "Any zone" msgstr "Qualquer zona" -msgid "Apply" -msgstr "Aplicar" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "A aplicar as alterações" +msgid "Apply unchecked" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -574,9 +574,6 @@ msgid "" "preserved in any sysupgrade." msgstr "" -msgid "Buttons" -msgstr "Botões" - msgid "CA certificate; if empty it will be saved after the first connection." msgstr "" @@ -598,16 +595,24 @@ msgstr "Alterações" msgid "Changes applied." msgstr "Alterações aplicadas." +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "Altera a password de administrador para acesso ao dispositivo" msgid "Channel" msgstr "Canal" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "Verificar" -msgid "Check fileystems before mount" +msgid "Check filesystems before mount" msgstr "" msgid "Check this option to delete the existing networks from this radio." @@ -684,12 +689,15 @@ msgstr "" msgid "Configuration" msgstr "Configuração" -msgid "Configuration applied." -msgstr "Configuração aplicada." - msgid "Configuration files will be kept." msgstr "Os ficheiros de configuração serão mantidos." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "Confirmação" @@ -708,6 +716,12 @@ msgstr "" msgid "Connections" msgstr "Ligações" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "País" @@ -750,6 +764,11 @@ msgid "Custom feeds" msgstr "" msgid "" +"Custom files (certificates, scripts) may remain on the system. To prevent " +"this, perform a factory-reset first." +msgstr "" + +msgid "" "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode" "\">LED</abbr>s if possible." msgstr "" @@ -876,6 +895,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "Diagnósticos" @@ -910,6 +932,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "Descartar respostas RFC1918 a montante" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "Mostrar somente pacotes contendo" @@ -1027,6 +1052,11 @@ msgstr "Emergência" msgid "Enable" msgstr "Ativar" +msgid "" +"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> " +"snooping" +msgstr "" + msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>" msgstr "Ativar <abbr title=\"Spanning Tree Protocol\">STP</abbr>" @@ -1084,6 +1114,9 @@ msgstr "Ativar/Desativar" msgid "Enabled" msgstr "Ativado" +msgid "Enables IGMP snooping on this bridge" +msgstr "" + msgid "" "Enables fast roaming among access points that belong to the same Mobility " "Domain" @@ -1165,6 +1198,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "Ficheiro" @@ -1266,6 +1302,9 @@ msgstr "" msgid "Forward broadcast traffic" msgstr "Encaminhar trafego de broadcast" +msgid "Forward mesh peer traffic" +msgstr "" + msgid "Forwarding mode" msgstr "Modo de encaminhamento" @@ -1350,9 +1389,6 @@ msgstr "" msgid "HT mode (802.11n)" msgstr "" -msgid "Handler" -msgstr "Handler" - msgid "Hang Up" msgstr "Suspender" @@ -1952,9 +1988,6 @@ msgstr "" msgid "Maximum amount of seconds to wait for the modem to become ready" msgstr "Número máximo de segundos a esperar pelo modem para ficar pronto" -msgid "Maximum hold time" -msgstr "Tempo máximo de espera" - msgid "" "Maximum length of the name is 15 characters including the automatic protocol/" "bridge prefix (br-, 6in4-, pppoe- etc.)" @@ -1972,12 +2005,12 @@ msgstr "Memória" msgid "Memory usage (%)" msgstr "Uso de memória (%)" +msgid "Mesh Id" +msgstr "" + msgid "Metric" msgstr "Métrica" -msgid "Minimum hold time" -msgstr "Tempo de retenção mínimo" - msgid "Mirror monitor port" msgstr "" @@ -2183,6 +2216,9 @@ msgstr "Reparo" msgid "Nslookup" msgstr "Nslookup" +msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" +msgstr "" + msgid "OK" msgstr "OK" @@ -2195,6 +2231,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "Atraso do Off-State" @@ -2422,9 +2461,6 @@ msgstr "Caminho para o Certificado de Cliente" msgid "Path to Private Key" msgstr "Caminho da Chave Privada" -msgid "Path to executable which handles the button event" -msgstr "Caminho do executável que lida com o botão de eventos" - msgid "Path to inner CA-Certificate" msgstr "" @@ -2787,6 +2823,15 @@ msgstr "Revelar/esconder password" msgid "Revert" msgstr "Reverter" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "" @@ -2866,9 +2911,6 @@ msgstr "Salvar" msgid "Save & Apply" msgstr "Salvar & Aplicar" -msgid "Save & Apply" -msgstr "Salvar & Aplicar" - msgid "Scan" msgstr "Procurar" @@ -2957,6 +2999,9 @@ msgstr "Tamanho" msgid "Size (.ipk)" msgstr "" +msgid "Size of DNS query cache" +msgstr "" + msgid "Skip" msgstr "Saltar" @@ -2999,9 +3044,6 @@ msgstr "Origem" msgid "Source routing" msgstr "" -msgid "Specifies the button state to handle" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "" @@ -3040,6 +3082,9 @@ msgstr "Iniciar" msgid "Start priority" msgstr "Prioridade de inicialização" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "" @@ -3101,6 +3146,9 @@ msgid "" "Switch %q has an unknown topology - the VLAN settings might not be accurate." msgstr "" +msgid "Switch Port Mask" +msgstr "" + msgid "Switch VLAN" msgstr "" @@ -3193,6 +3241,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" msgid "" +"The device could not be reached within %d seconds after applying the pending " +"changes, which caused the configuration to be rolled back for safety " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3217,9 +3275,6 @@ msgstr "" "compare com o ficheiro original para assegurar a integração de dados.<br /> " "Click em \"Proceder\" para iniciar o procedimento." -msgid "The following changes have been committed" -msgstr "As seguintes alterações foram escritas" - msgid "The following changes have been reverted" msgstr "Foram recuperadas as seguintes alterações " @@ -3304,8 +3359,8 @@ msgstr "" msgid "There are no active leases." msgstr "Não há concessões ativas." -msgid "There are no pending changes to apply!" -msgstr "Não há alterações pendentes para aplicar!" +msgid "There are no changes to apply." +msgstr "" msgid "There are no pending changes to revert!" msgstr "Não há alterações pendentes para reverter!" @@ -3356,7 +3411,7 @@ msgstr "" msgid "" "This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with <code>:2</code>" +"ends with <code>...:2/64</code>" msgstr "" msgid "" @@ -3386,10 +3441,6 @@ msgid "" msgstr "" "Esta lista fornece uma visão geral sobre os processos em execução no sistema." -msgid "This page allows the configuration of custom button actions" -msgstr "" -"Esta página permite a configuração de botões para acções personalizadas." - msgid "This page gives an overview over currently active network connections." msgstr "Esta página fornece informações sobre as ligações de rede ativas." @@ -3573,9 +3624,9 @@ msgstr "Usar tabela de roteamento" msgid "" "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</" -"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed " -"address to use and the <em>Hostname</em> is assigned as symbolic name to the " -"requesting host. The optional <em>Lease time</em> can be used to set non-" +"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed " +"address to use, and the <em>Hostname</em> is assigned as a symbolic name to " +"the requesting host. The optional <em>Lease time</em> can be used to set non-" "standard host-specific lease time, e.g. 12h, 3d or infinite." msgstr "" @@ -3682,6 +3733,9 @@ msgstr "A aguardar que as mudanças sejam aplicadas..." msgid "Waiting for command to complete..." msgstr "A aguardar que o comando termine..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3877,6 +3931,9 @@ msgstr "abrir" msgid "overlay" msgstr "" +msgid "random" +msgstr "" + msgid "relay mode" msgstr "" @@ -3922,6 +3979,46 @@ msgstr "sim" msgid "« Back" msgstr "« Voltar" +#~ msgid "Apply" +#~ msgstr "Aplicar" + +#~ msgid "Applying changes" +#~ msgstr "A aplicar as alterações" + +#~ msgid "Configuration applied." +#~ msgstr "Configuração aplicada." + +#~ msgid "Save & Apply" +#~ msgstr "Salvar & Aplicar" + +#~ msgid "The following changes have been committed" +#~ msgstr "As seguintes alterações foram escritas" + +#~ msgid "There are no pending changes to apply!" +#~ msgstr "Não há alterações pendentes para aplicar!" + +#~ msgid "Action" +#~ msgstr "Acção" + +#~ msgid "Buttons" +#~ msgstr "Botões" + +#~ msgid "Handler" +#~ msgstr "Handler" + +#~ msgid "Maximum hold time" +#~ msgstr "Tempo máximo de espera" + +#~ msgid "Minimum hold time" +#~ msgstr "Tempo de retenção mínimo" + +#~ msgid "Path to executable which handles the button event" +#~ msgstr "Caminho do executável que lida com o botão de eventos" + +#~ msgid "This page allows the configuration of custom button actions" +#~ msgstr "" +#~ "Esta página permite a configuração de botões para acções personalizadas." + #~ msgid "Leasetime" #~ msgstr "Tempo de concessão" diff --git a/modules/luci-base/po/ro/base.po b/modules/luci-base/po/ro/base.po index 029b3958f9..a7d45e6f6d 100644 --- a/modules/luci-base/po/ro/base.po +++ b/modules/luci-base/po/ro/base.po @@ -216,9 +216,6 @@ msgstr "Concentrator de Access " msgid "Access Point" msgstr "Punct de Acces" -msgid "Action" -msgstr "Actiune" - msgid "Actions" msgstr "Actiune" @@ -291,6 +288,9 @@ msgstr "" msgid "Allow all except listed" msgstr "Permite toate cu exceptia celor listate" +msgid "Allow legacy 802.11b rates" +msgstr "" + msgid "Allow listed only" msgstr "Permite doar cele listate" @@ -397,11 +397,11 @@ msgstr "Configurarea Antenei" msgid "Any zone" msgstr "Orice Zona" -msgid "Apply" -msgstr "Aplica" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "Se aplica modificarile" +msgid "Apply unchecked" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -557,9 +557,6 @@ msgid "" "preserved in any sysupgrade." msgstr "" -msgid "Buttons" -msgstr "Butoane" - msgid "CA certificate; if empty it will be saved after the first connection." msgstr "" @@ -581,16 +578,24 @@ msgstr "Modificari" msgid "Changes applied." msgstr "Modificari aplicate." +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "Schimba parola administratorului pentru accesarea dispozitivului" msgid "Channel" msgstr "Canal" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "Verificare" -msgid "Check fileystems before mount" +msgid "Check filesystems before mount" msgstr "" msgid "Check this option to delete the existing networks from this radio." @@ -659,12 +664,15 @@ msgstr "" msgid "Configuration" msgstr "Configurare" -msgid "Configuration applied." -msgstr "Configurarea aplicata." - msgid "Configuration files will be kept." msgstr "Fisierele de configurare vor fi pastrate." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "Confirmare" @@ -683,6 +691,12 @@ msgstr "" msgid "Connections" msgstr "Conexiuni" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "Tara" @@ -725,6 +739,11 @@ msgid "Custom feeds" msgstr "" msgid "" +"Custom files (certificates, scripts) may remain on the system. To prevent " +"this, perform a factory-reset first." +msgstr "" + +msgid "" "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode" "\">LED</abbr>s if possible." msgstr "" @@ -846,6 +865,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "Diagnosticuri" @@ -880,6 +902,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "" @@ -982,6 +1007,11 @@ msgstr "Urgenta" msgid "Enable" msgstr "Activeaza" +msgid "" +"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> " +"snooping" +msgstr "" + msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>" msgstr "Activeaza <abbr title=\"Spanning Tree Protocol\">STP</abbr>" @@ -1039,6 +1069,9 @@ msgstr "Activeaza/Dezactiveaza" msgid "Enabled" msgstr "Activat" +msgid "Enables IGMP snooping on this bridge" +msgstr "" + msgid "" "Enables fast roaming among access points that belong to the same Mobility " "Domain" @@ -1117,6 +1150,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "Fisier" @@ -1219,6 +1255,9 @@ msgstr "" msgid "Forward broadcast traffic" msgstr "" +msgid "Forward mesh peer traffic" +msgstr "" + msgid "Forwarding mode" msgstr "" @@ -1302,9 +1341,6 @@ msgstr "" msgid "HT mode (802.11n)" msgstr "" -msgid "Handler" -msgstr "" - msgid "Hang Up" msgstr "" @@ -1884,9 +1920,6 @@ msgstr "" msgid "Maximum amount of seconds to wait for the modem to become ready" msgstr "" -msgid "Maximum hold time" -msgstr "" - msgid "" "Maximum length of the name is 15 characters including the automatic protocol/" "bridge prefix (br-, 6in4-, pppoe- etc.)" @@ -1904,12 +1937,12 @@ msgstr "Memorie" msgid "Memory usage (%)" msgstr "Utilizarea memoriei (%)" +msgid "Mesh Id" +msgstr "" + msgid "Metric" msgstr "Metrica" -msgid "Minimum hold time" -msgstr "" - msgid "Mirror monitor port" msgstr "" @@ -2113,6 +2146,9 @@ msgstr "Notificare" msgid "Nslookup" msgstr "" +msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" +msgstr "" + msgid "OK" msgstr "OK" @@ -2125,6 +2161,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "" @@ -2346,9 +2385,6 @@ msgstr "" msgid "Path to Private Key" msgstr "Calea catre cheia privata" -msgid "Path to executable which handles the button event" -msgstr "Calea catre executabilul care se ocupa de evenimentul butonului" - msgid "Path to inner CA-Certificate" msgstr "" @@ -2700,6 +2736,15 @@ msgstr "Arata / ascunde parola" msgid "Revert" msgstr "" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "" @@ -2776,9 +2821,6 @@ msgstr "Salveaza" msgid "Save & Apply" msgstr "Salveaza si aplica" -msgid "Save & Apply" -msgstr "Salveaza & Aplica" - msgid "Scan" msgstr "Scan" @@ -2867,6 +2909,9 @@ msgstr "Marime" msgid "Size (.ipk)" msgstr "" +msgid "Size of DNS query cache" +msgstr "" + msgid "Skip" msgstr "" @@ -2909,9 +2954,6 @@ msgstr "Sursa" msgid "Source routing" msgstr "" -msgid "Specifies the button state to handle" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "" @@ -2950,6 +2992,9 @@ msgstr "Start" msgid "Start priority" msgstr "" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "Pornire" @@ -3011,6 +3056,9 @@ msgid "" "Switch %q has an unknown topology - the VLAN settings might not be accurate." msgstr "" +msgid "Switch Port Mask" +msgstr "" + msgid "Switch VLAN" msgstr "" @@ -3097,6 +3145,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" msgid "" +"The device could not be reached within %d seconds after applying the pending " +"changes, which caused the configuration to be rolled back for safety " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3113,9 +3171,6 @@ msgid "" "\"Proceed\" below to start the flash procedure." msgstr "" -msgid "The following changes have been committed" -msgstr "" - msgid "The following changes have been reverted" msgstr "" @@ -3181,8 +3236,8 @@ msgstr "" msgid "There are no active leases." msgstr "" -msgid "There are no pending changes to apply!" -msgstr "Nu exista modificari in asteptare de aplicat !" +msgid "There are no changes to apply." +msgstr "" msgid "There are no pending changes to revert!" msgstr "Nu exista modificari in asteptare de anulat !" @@ -3229,7 +3284,7 @@ msgstr "" msgid "" "This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with <code>:2</code>" +"ends with <code>...:2/64</code>" msgstr "" msgid "" @@ -3256,9 +3311,6 @@ msgid "" "their status." msgstr "" -msgid "This page allows the configuration of custom button actions" -msgstr "" - msgid "This page gives an overview over currently active network connections." msgstr "" @@ -3440,9 +3492,9 @@ msgstr "" msgid "" "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</" -"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed " -"address to use and the <em>Hostname</em> is assigned as symbolic name to the " -"requesting host. The optional <em>Lease time</em> can be used to set non-" +"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed " +"address to use, and the <em>Hostname</em> is assigned as a symbolic name to " +"the requesting host. The optional <em>Lease time</em> can be used to set non-" "standard host-specific lease time, e.g. 12h, 3d or infinite." msgstr "" @@ -3549,6 +3601,9 @@ msgstr "" msgid "Waiting for command to complete..." msgstr "" +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3734,6 +3789,9 @@ msgstr "" msgid "overlay" msgstr "" +msgid "random" +msgstr "" + msgid "relay mode" msgstr "" @@ -3779,6 +3837,30 @@ msgstr "da" msgid "« Back" msgstr "« Inapoi" +#~ msgid "Apply" +#~ msgstr "Aplica" + +#~ msgid "Applying changes" +#~ msgstr "Se aplica modificarile" + +#~ msgid "Configuration applied." +#~ msgstr "Configurarea aplicata." + +#~ msgid "Save & Apply" +#~ msgstr "Salveaza & Aplica" + +#~ msgid "There are no pending changes to apply!" +#~ msgstr "Nu exista modificari in asteptare de aplicat !" + +#~ msgid "Action" +#~ msgstr "Actiune" + +#~ msgid "Buttons" +#~ msgstr "Butoane" + +#~ msgid "Path to executable which handles the button event" +#~ msgstr "Calea catre executabilul care se ocupa de evenimentul butonului" + #~ msgid "AR Support" #~ msgstr "Suport AR" diff --git a/modules/luci-base/po/ru/base.po b/modules/luci-base/po/ru/base.po index 9a3cf434fc..91aacdeb49 100644 --- a/modules/luci-base/po/ru/base.po +++ b/modules/luci-base/po/ru/base.po @@ -1,25 +1,25 @@ msgid "" msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: LuCI: base\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2014-01-31 21:08+0200\n" -"Last-Translator: Moon_dark <lenayxa@gmail.com>\n" -"Language-Team: Russian <x12ozmouse@ya.ru>\n" -"Language: ru\n" +"POT-Creation-Date: 2010-05-09 01:01+0300\n" +"PO-Revision-Date: 2018-01-24 15:00+0300\n" +"Language-Team: http://cyber-place.ru\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" -"X-Poedit-SourceCharset: UTF-8\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 "%.1f dB" -msgstr "" +msgstr "%.1f dB" msgid "%s is untagged in multiple VLANs!" -msgstr "" +msgstr "%s is untagged in multiple VLANs!" msgid "(%d minute window, %d second interval)" msgstr "(%d минутное окно, %d секундный интервал)" @@ -34,22 +34,22 @@ msgid "(no interfaces attached)" msgstr "(нет связанных интерфейсов)" msgid "-- Additional Field --" -msgstr "-- Дополнительное поле --" +msgstr "-- Дополнительно --" msgid "-- Please choose --" -msgstr "-- Пожалуйста, выберите --" +msgstr "-- Сделайте выбор --" msgid "-- custom --" msgstr "-- пользовательский --" msgid "-- match by device --" -msgstr "" +msgstr "-- проверка по устройству --" msgid "-- match by label --" -msgstr "" +msgstr "-- проверка по метке --" msgid "-- match by uuid --" -msgstr "" +msgstr "-- проверка по uuid --" msgid "1 Minute Load:" msgstr "Загрузка за 1 минуту:" @@ -58,106 +58,106 @@ msgid "15 Minute Load:" msgstr "Загрузка за 15 минут:" msgid "4-character hexadecimal ID" -msgstr "" +msgstr "4-х значное шестнадцатеричное ID" msgid "464XLAT (CLAT)" -msgstr "" +msgstr "464XLAT (CLAT)" msgid "5 Minute Load:" msgstr "Загрузка за 5 минут:" msgid "6-octet identifier as a hex string - no colons" -msgstr "" +msgstr "6-октетный идентификатор в виде шестнадцатеричной строки-без двоеточий" msgid "802.11r Fast Transition" -msgstr "" +msgstr "802.11r Быстрый Роуминг" msgid "802.11w Association SA Query maximum timeout" -msgstr "" +msgstr "802.11w Association SA Query максимальное время ожидания" msgid "802.11w Association SA Query retry timeout" -msgstr "" +msgstr "802.11w время ожидания повтора Association SA Query" msgid "802.11w Management Frame Protection" -msgstr "" +msgstr "802.11w Management Frame Protection" msgid "802.11w maximum timeout" -msgstr "" +msgstr "802.11w максимальное время ожидания" msgid "802.11w retry timeout" -msgstr "" +msgstr "802.11w время ожидания повтора" msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>" -msgstr "<abbr title=\"Базовый идентификатор обслуживания\">BSSID</abbr>" +msgstr "<abbr title=\"Идентификатор Набора Базовых Сервисов\">BSSID</abbr>" msgid "<abbr title=\"Domain Name System\">DNS</abbr> query port" -msgstr "Порт запроса <abbr title=\"Система доменных имён\">DNS</abbr>" +msgstr "<abbr title=\"Система доменных имён\">DNS</abbr> порт запроса" msgid "<abbr title=\"Domain Name System\">DNS</abbr> server port" -msgstr "Порт <abbr title=\"Система доменных имён\">DNS</abbr>-сервера" +msgstr "<abbr title=\"Система доменных имен\">DNS</abbr> порт сервера" msgid "" "<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the " "order of the resolvfile" msgstr "" -"<abbr title=\"Система доменных имён\">DNS</abbr> серверы будут опрошены в " -"порядке, определенном в resolvfile файле" +"<abbr title=\"Система доменных имен\">DNS</abbr> сервера будут опрошены в " +"порядке, определенном в resolvfile файле." msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>" msgstr "<abbr title=\"Расширенный идентификатор обслуживания\">ESSID</abbr>" msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address" -msgstr "<abbr title=\"Интернет протокол версии 4\">IPv4</abbr>-адрес" +msgstr "<abbr title=\"Интернет протокол версии 4\">IPv4</abbr>-Адрес" msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway" -msgstr "<abbr title=\"Интернет протокол версии 4\">IPv4</abbr>-адрес шлюза" +msgstr "<abbr title=\"Интернет протокол версии 4\">IPv4</abbr>-Шлюз" msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask" -msgstr "Маска сети <abbr title=\"Интернет протокол версии 4\">IPv4</abbr>" +msgstr "<abbr title=\"Интернет протокол версии 4\">IPv4</abbr>-Маска сети" msgid "" "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network " "(CIDR)" msgstr "" -"<abbr title=\"Интернет протокол версии 6\">IPv6</abbr>-адрес или сеть (CIDR)" +"<abbr title=\"Интернет протокол версии 6\">IPv6</abbr>-Адрес или Сеть (CIDR)" msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway" -msgstr "<abbr title=\"Интернет протокол версии 6\">IPv6</abbr>-адрес шлюза" +msgstr "<abbr title=\"Интернет протокол версии 6\">IPv6</abbr>-Шлюз" msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)" -msgstr "" +msgstr "<abbr title=\"Интернет протокол версии 6\">IPv6</abbr>-Суффикс (hex)" msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration" -msgstr "Настройка <abbr title=\"Светодиод\">LED</abbr>" +msgstr "Настройка <abbr title=\"Светодиод\">LED</abbr> индикации" msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name" -msgstr "Название <abbr title=\"Светодиод\">LED</abbr>" +msgstr "<abbr title=\"Светодиод\">LED</abbr> Имя" msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address" -msgstr "<abbr title=\"Управление доступом к носителю\">MAC</abbr>-адрес" +msgstr "<abbr title=\"Управление доступом к носителю\">MAC</abbr>-Адрес" msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>" -msgstr "" +msgstr "<abbr title=\"Уникальный идентификатор DHCP\">DUID</abbr>" msgid "" "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration " "Protocol\">DHCP</abbr> leases" msgstr "" -"<abbr title=\"максимальное\">Макс.</abbr> кол-во аренд <abbr title=" -"\"Протокол динамической конфигурации узла\">DHCP</abbr>" +"<abbr title=\"максимальное\">Макс.</abbr> кол-во аренд<br /><abbr title=" +"\"Протокол динамической настройки узла\">DHCP</abbr> аренды" msgid "" "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for " "Domain Name System\">EDNS0</abbr> packet size" msgstr "" -"<abbr title=\"максимальный\">Макс.</abbr> размер пакета <abbr title=" -"\"Extension Mechanisms for Domain Name System\">EDNS0</abbr>" +"<abbr title=\"максимальный\">Макс.</abbr><abbr title=\"Extension Mechanisms " +"for Domain Name System\">EDNS0</abbr> размер пакета" msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries" msgstr "" -"<abbr title=\"максимальное\">Макс.</abbr> кол-во одновременных запросов" +"<abbr title=\"максимальное\">Макс.</abbr> кол-во<br />одновременных<br /" +">запросов" -# Парный шифр используется для одноадресной передачи, а групповой - для широковещательной и мультикаста msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>" msgstr "<abbr title='Парный: %s / Групповой: %s'>%s - %s</abbr>" @@ -165,21 +165,23 @@ msgid "" "<br/>Note: you need to manually restart the cron service if the crontab file " "was empty before editing." msgstr "" +"<br />Внимание: вы должны вручную перезапустить службу cron, если этот файл " +"был пустым перед внесением ваших изменений." msgid "A43C + J43 + A43" -msgstr "" +msgstr "A43C + J43 + A43" msgid "A43C + J43 + A43 + V43" -msgstr "" +msgstr "A43C + J43 + A43 + V43" msgid "ADSL" -msgstr "" +msgstr "ADSL" msgid "AICCU (SIXXS)" -msgstr "" +msgstr "AICCU (SIXXS)" msgid "ANSI T1.413" -msgstr "" +msgstr "ANSI T1.413" msgid "APN" msgstr "APN" @@ -188,34 +190,34 @@ msgid "ARP retry threshold" msgstr "Порог повтора ARP" msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" +msgstr "ATM (Режим Асинхронной Передачи)" msgid "ATM Bridges" -msgstr "Мосты ATM" +msgstr "ATM Мосты" msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "Идентификатор виртуального канала ATM (VCI)" +msgstr "ATM Идентификатор Виртуального Канала (VCI)" msgid "ATM Virtual Path Identifier (VPI)" -msgstr "Идентификатор виртуального пути ATM (VPI)" +msgstr "ATM Идентификатор Виртуального Пути(VPI)" msgid "" "ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " "Linux network interfaces which can be used in conjunction with DHCP or PPP " "to dial into the provider network." msgstr "" -"ATM-мосты выставляют инкапсулированный Ethernet в соединениях AAL5 в " -"качестве виртуальных сетевых интерфейсов Linux, которые могут быть " -"использованы в сочетании с DHCP или PPP для подключения к сети провайдера." +"Мосты ATM предоставляют собой инкапсулированные ethernet соединения в AAL5, " +"как виртуальные сетевые интерфейсы Linux, которые могут использоваться " +"совместно с DHCP или PPP для набора номера в сети провайдера." msgid "ATM device number" -msgstr "Номер устройства ATM" +msgstr "ATM номер устройства" msgid "ATU-C System Vendor ID" -msgstr "" +msgstr "ATU-C System Vendor ID" msgid "AYIYA" -msgstr "" +msgstr "AYIYA" msgid "Access Concentrator" msgstr "Концентратор доступа" @@ -223,9 +225,6 @@ msgstr "Концентратор доступа" msgid "Access Point" msgstr "Точка доступа" -msgid "Action" -msgstr "Действие" - msgid "Actions" msgstr "Действия" @@ -233,21 +232,19 @@ msgid "Activate this network" msgstr "Активировать эту сеть" msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes" -msgstr "" -"Активные маршруты <abbr title=\"Интернет протокол версии 4\">IPv4</abbr>" +msgstr "Active <abbr title=\"Интернет протокол версии 4\">IPv4</abbr>-Маршруты" msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes" -msgstr "" -"Активные маршруты <abbr title=\"Интернет протокол версии 6\">IPv6</abbr>" +msgstr "Active <abbr title=\"Интернет протокол версии 6\">IPv6</abbr>-Маршруты" msgid "Active Connections" msgstr "Активные соединения" msgid "Active DHCP Leases" -msgstr "Активные аренды DHCP" +msgstr "Активные DHCP аренды" msgid "Active DHCPv6 Leases" -msgstr "Активные аренды DHCPv6" +msgstr "Активные DHCPv6 аренды" msgid "Ad-Hoc" msgstr "Ad-Hoc" @@ -257,16 +254,16 @@ msgstr "Добавить" msgid "Add local domain suffix to names served from hosts files" msgstr "" -"Добавить суффикс локального домена к именам, полученным из файлов hosts" +"Добавить локальный суффикс домена для имен из файла хостов (/etc/hosts)." msgid "Add new interface..." -msgstr "Добавить новый интерфейс..." +msgstr "Добавить новый интерфейс" msgid "Additional Hosts files" -msgstr "Дополнительные файлы hosts" +msgstr "Дополнительный<br />hosts файл" msgid "Additional servers file" -msgstr "" +msgstr "Дополнительные<br />файлы серверов" msgid "Address" msgstr "Адрес" @@ -278,30 +275,34 @@ msgid "Administration" msgstr "Управление" msgid "Advanced Settings" -msgstr "Расширенные настройки" +msgstr "Дополнительные настройки" msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" +msgstr "Aggregate Transmit Power(ACTATP)" msgid "Alert" -msgstr "Тревожная ситуация" +msgstr "Тревога" msgid "" "Allocate IP addresses sequentially, starting from the lowest available " "address" msgstr "" +"Выделять IP адреса последовательно, начинать с меньшего доступного адреса." msgid "Allocate IP sequentially" -msgstr "" +msgstr "IP последовательно" msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication" msgstr "" -"Разрешить <abbr title=\"Secure Shell\">SSH</abbr>-аутентификацию с помощью " -"пароля" +"Разрешить <abbr title=\"Secure Shell\">SSH</abbr> аутентификацию с помощью " +"пароля." msgid "Allow all except listed" msgstr "Разрешить все, кроме перечисленных" +msgid "Allow legacy 802.11b rates" +msgstr "Разрешить использование<br />стандарта 802.11b" + msgid "Allow listed only" msgstr "Разрешить только перечисленные" @@ -310,93 +311,99 @@ msgstr "Разрешить локальный хост" msgid "Allow remote hosts to connect to local SSH forwarded ports" msgstr "" -"Разрешить удалённым хостам подключаться к локальным перенаправленным портам " -"SSH" +"Разрешить удаленным хостам подключаться к локальным перенаправленным портам " +"SSH." msgid "Allow root logins with password" -msgstr "Разрешить пользователю root вход с помощью пароля" +msgstr "Root входит по паролю" msgid "Allow the <em>root</em> user to login with password" msgstr "" -"Разрешить пользователю <em>root</em> входить в систему с помощью пароля" +"Разрешить пользователю <em>root</em> входить в систему с помощью пароля." msgid "" "Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "Разрешить ответы в диапазоне 127.0.0.0/8, например, для RBL-сервисов" +msgstr "" +"Разрешить ответы внешней сети в диапазоне 127.0.0.0/8, например, для RBL-" +"сервисов." msgid "Allowed IPs" -msgstr "" +msgstr "Разрешенные IP-адреса" msgid "" "Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison" "\">Tunneling Comparison</a> on SIXXS" msgstr "" +"Также смотрите <a href=\"https://www.sixxs.net/faq/connectivity/?" +"faq=comparison\">Tunneling Comparison</a> on SIXXS" msgid "Always announce default router" -msgstr "" +msgstr "Объявлять всегда, как дефолтный маршрутизатор" msgid "Annex" -msgstr "" +msgstr "Annex" msgid "Annex A + L + M (all)" -msgstr "" +msgstr "Annex A + L + M (all)" msgid "Annex A G.992.1" -msgstr "" +msgstr "Annex A G.992.1" msgid "Annex A G.992.2" -msgstr "" +msgstr "Annex A G.992.2" msgid "Annex A G.992.3" -msgstr "" +msgstr "Annex A G.992.3" msgid "Annex A G.992.5" -msgstr "" +msgstr "Annex A G.992.5" msgid "Annex B (all)" -msgstr "" +msgstr "Annex B (all)" msgid "Annex B G.992.1" -msgstr "" +msgstr "Annex B G.992.1" msgid "Annex B G.992.3" -msgstr "" +msgstr "Annex B G.992.3" msgid "Annex B G.992.5" -msgstr "" +msgstr "Annex B G.992.5" msgid "Annex J (all)" -msgstr "" +msgstr "Annex J (all)" msgid "Annex L G.992.3 POTS 1" -msgstr "" +msgstr "Annex L G.992.3 POTS 1" msgid "Annex M (all)" -msgstr "" +msgstr "Annex M (all)" msgid "Annex M G.992.3" -msgstr "" +msgstr "Annex M G.992.3" msgid "Annex M G.992.5" -msgstr "" +msgstr "Annex M G.992.5" msgid "Announce as default router even if no public prefix is available." msgstr "" +"Объявить маршрутизатором по умолчанию, даже если общедоступный префикс " +"недоступен." msgid "Announced DNS domains" -msgstr "" +msgstr "Объявить DNS домены" msgid "Announced DNS servers" -msgstr "" +msgstr "Объявить DNS сервера" msgid "Anonymous Identity" -msgstr "" +msgstr "Анонимная идентификация" msgid "Anonymous Mount" -msgstr "" +msgstr "Неизвестный раздел" msgid "Anonymous Swap" -msgstr "" +msgstr "Неизвестный swap" msgid "Antenna 1" msgstr "Антенна 1" @@ -405,20 +412,22 @@ msgid "Antenna 2" msgstr "Антенна 2" msgid "Antenna Configuration" -msgstr "Конфигурация антенн" +msgstr "Настройка антенн" msgid "Any zone" msgstr "Любая зона" -msgid "Apply" -msgstr "Принять" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "Применение изменений" +msgid "Apply unchecked" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" msgstr "" +"Задайте часть данной длины, каждому публичному IPv6-префиксу этого " +"интерфейса." msgid "Assign interfaces..." msgstr "Назначить интерфейсы..." @@ -426,48 +435,56 @@ msgstr "Назначить интерфейсы..." msgid "" "Assign prefix parts using this hexadecimal subprefix ID for this interface." msgstr "" +"Назначьте префикс части, используя этот шестнадцатеричный ID вложенного " +"исправления для этого интерфейса." msgid "Associated Stations" msgstr "Подключенные клиенты" msgid "Auth Group" -msgstr "" +msgstr "Группа аутентификации" msgid "Authentication" msgstr "Аутентификация" msgid "Authentication Type" -msgstr "" +msgstr "Тип аутентификации" msgid "Authoritative" -msgstr "Авторитетный" +msgstr "Основной" msgid "Authorization Required" -msgstr "Требуется авторизация" +msgstr "Выполните аутентификацию" msgid "Auto Refresh" msgstr "Автообновление" msgid "Automatic" -msgstr "" +msgstr "Автоматически" msgid "Automatic Homenet (HNCP)" -msgstr "" +msgstr "Автоматическая Homenet (HNCP)" msgid "Automatically check filesystem for errors before mounting" msgstr "" +"Автоматическая проверка файловой системы раздела на ошибки, перед " +"монтированием." msgid "Automatically mount filesystems on hotplug" msgstr "" +"Автоматическое монтирование раздела, при подключении к системе во время ее " +"работы, без выключения питания и остановки системы (hotplug)." msgid "Automatically mount swap on hotplug" msgstr "" +"Автоматическое монтирование swap-а при подключении к системе во время ее " +"работы без выключения питания и остановки системы (hotplug)." msgid "Automount Filesystem" -msgstr "" +msgstr "Hotplug раздела" msgid "Automount Swap" -msgstr "" +msgstr "Hotplug swap-а" msgid "Available" msgstr "Доступно" @@ -479,13 +496,13 @@ msgid "Average:" msgstr "Средняя:" msgid "B43 + B43C" -msgstr "" +msgstr "B43 + B43C" msgid "B43 + B43C + V43" -msgstr "" +msgstr "B43 + B43C + V43" msgid "BR / DMR / AFTR" -msgstr "" +msgstr "BR / DMR / AFTR" msgid "BSSID" msgstr "BSSID" @@ -494,19 +511,19 @@ msgid "Back" msgstr "Назад" msgid "Back to Overview" -msgstr "Назад к обзору" +msgstr "Назад в меню" msgid "Back to configuration" msgstr "Назад к настройке" msgid "Back to overview" -msgstr "Назад к обзору" +msgstr "назад в меню" msgid "Back to scan results" -msgstr "Назад к результатам сканирования" +msgstr "Назад к результатам поиска" msgid "Backup / Flash Firmware" -msgstr "Резервная копия / прошивка" +msgstr "Резервное копирование / Перепрошивка" msgid "Backup / Restore" msgstr "Резервное копирование / Восстановление" @@ -518,10 +535,10 @@ msgid "Bad address specified!" msgstr "Указан неправильный адрес!" msgid "Band" -msgstr "" +msgstr "Диапазон" msgid "Behind NAT" -msgstr "" +msgstr "За NAT-ом" msgid "" "Below is the determined list of files to backup. It consists of changed " @@ -529,18 +546,19 @@ msgid "" "defined backup patterns." msgstr "" "Ниже приводится определённый список файлов для резервного копирования. Он " -"состоит из изменённых конфигурационных файлов, отмеченных opkg, необходимых " -"базовых файлов, а также шаблонов резервного копирования, определённых " -"пользователем." +"состоит из измененных config файлов, отмеченных opkg, необходимых базовых " +"файлов, а также шаблонов резервного копирования, определенных пользователем." msgid "Bind interface" -msgstr "" +msgstr "Открытый интерфейс" msgid "Bind only to specific interfaces rather than wildcard address." msgstr "" +"Соединение только с определенными интерфейсами, не использующими " +"подстановочные адреса (wildcard)." msgid "Bind the tunnel to this interface (optional)." -msgstr "" +msgstr "Открытый туннель для этого интерфейса (необязательно)." msgid "Bitrate" msgstr "Скорость" @@ -573,12 +591,12 @@ msgid "" "Build/distribution specific feed definitions. This file will NOT be " "preserved in any sysupgrade." msgstr "" - -msgid "Buttons" -msgstr "Кнопки" +"Build/distribution оригинальные feed-ы. Изменения в этом файле НЕ сохранятся " +"при перепрошивке sysupgrade-совместимым образом." msgid "CA certificate; if empty it will be saved after the first connection." msgstr "" +"CA сертификат; если отсутствует, будет сохранен после первого соединения." msgid "CPU usage (%)" msgstr "Загрузка ЦП (%)" @@ -587,7 +605,7 @@ msgid "Cancel" msgstr "Отменить" msgid "Category" -msgstr "" +msgstr "Категория" msgid "Chain" msgstr "Цепочка" @@ -598,20 +616,30 @@ msgstr "Изменения" msgid "Changes applied." msgstr "Изменения приняты." +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" -msgstr "Изменить пароль администратора для доступа к устройству" +msgstr "Изменить пароль администратора для доступа к устройству." msgid "Channel" msgstr "Канал" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "Проверить" -msgid "Check fileystems before mount" -msgstr "" +msgid "Check filesystems before mount" +msgstr "Проверка" msgid "Check this option to delete the existing networks from this radio." msgstr "" +"Проверьте эту опцию, чтобы удалить существующие сети беспроводного " +"устройства." msgid "Checksum" msgstr "Контрольная сумма" @@ -622,32 +650,34 @@ msgid "" "fill out the <em>create</em> field to define a new zone and attach the " "interface to it." msgstr "" -"Укажите зону, которую вы хотите прикрепить к этому интерфейсу. Выберите " -"<em>не определено</em>, чтобы удалить этот интерфейс из зоны, или заполните " -"поле <em>создать</em>, чтобы определить новую зону и прикрепить к ней этот " -"интерфейс." +"Укажите зону, которую вы хотите прикрепить к этому интерфейсу.<br />Выберите " +"<em>'не определено'</em>, чтобы удалить этот интерфейс из зоны, или " +"заполните поле <em>'создать'</em>, чтобы определить новую зону и прикрепить " +"к ней этот интерфейс." msgid "" "Choose the network(s) you want to attach to this wireless interface or fill " "out the <em>create</em> field to define a new network." msgstr "" -"Выберите сеть (сети), которые вы хотите прикрепить к этому беспроводному " -"интерфейсу, или заполните поле <em>создать</em>, чтобы определить новую сеть." +"Выберите интерфейс или интерфейсы, которые вы хотите прикрепить к данной " +"беспроводной сети или заполните поле <em>создать</em>, чтобы создать новый " +"интерфейс." msgid "Cipher" -msgstr "Шифрование" +msgstr "Алгоритм шифрования" msgid "Cisco UDP encapsulation" -msgstr "" +msgstr "формирование пакетов данных Cisco UDP " msgid "" "Click \"Generate archive\" to download a tar archive of the current " "configuration files. To reset the firmware to its initial state, click " "\"Perform reset\" (only possible with squashfs images)." msgstr "" -"Нажмите \"Создать архив\", чтобы загрузить tar-архив текущих " -"конфигурационных файлов. Для сброса настроек прошивки к исходному состоянию " -"нажмите \"Выполнить сброс\" (возможно только для squashfs-образов)." +"Нажмите 'Создать архив', чтобы загрузить tar-архив текущих config файлов " +"прошивки устройства, таким образом вы сохраните его настройки. Для сброса " +"настроек прошивки к исходному состоянию нажмите 'Выполнить сброс' (возможно " +"только для squashfs-образов)." msgid "Client" msgstr "Клиент" @@ -660,19 +690,19 @@ msgid "" "persist connection" msgstr "" "Завершать неактивное соединение после заданного интервала (сек.), " -"используйте значение 0 для удержания неактивного соединения" +"используйте значение 0 для удержания неактивного соединения." msgid "Close list..." msgstr "Закрыть список..." msgid "Collecting data..." -msgstr "Сбор информации..." +msgstr "Сбор данных..." msgid "Command" msgstr "Команда" msgid "Common Configuration" -msgstr "Общая конфигурация" +msgstr "Общие настройки" msgid "" "Complicates key reinstallation attacks on the client side by disabling " @@ -680,15 +710,22 @@ msgid "" "workaround might cause interoperability issues and reduced robustness of key " "negotiation especially in environments with heavy traffic load." msgstr "" +"Усложняет атаки на переустановку ключа на стороне клиента, отключая " +"ретрансляцию фреймов EAPOL-Key, которые используются для установки ключей. " +"Может вызвать проблемы совместимости и снижение надежности согласования " +"нового ключа, при наличии большого трафика." msgid "Configuration" -msgstr "Конфигурация" - -msgid "Configuration applied." -msgstr "Конфигурация применена." +msgstr "Настройка config файла" msgid "Configuration files will be kept." -msgstr "Конфигурационные файлы будут сохранены." +msgstr "Config файлы будут сохранены." + +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" msgid "Confirmation" msgstr "Подтверждение пароля" @@ -703,11 +740,17 @@ msgid "Connection Limit" msgstr "Ограничение соединений" msgid "Connection to server fails when TLS cannot be used" -msgstr "" +msgstr "Связь с сервером прерывается, когда TLS не может быть использован" msgid "Connections" msgstr "Соединения" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "Страна" @@ -721,7 +764,7 @@ msgid "Cover the following interfaces" msgstr "Включить следующие интерфейсы" msgid "Create / Assign firewall-zone" -msgstr "Создать / назначить зону сетевого экрана" +msgstr "Создать / назначить<br />зону сетевого экрана" msgid "Create Interface" msgstr "Создать интерфейс" @@ -733,27 +776,35 @@ msgid "Critical" msgstr "Критическая ситуация" msgid "Cron Log Level" -msgstr "Уровень вывода Cron" +msgstr "Запись событий Cron" msgid "Custom Interface" msgstr "Пользовательский интерфейс" msgid "Custom delegated IPv6-prefix" -msgstr "" +msgstr "Установленный пользователем IPv6-prefix" msgid "" "Custom feed definitions, e.g. private feeds. This file can be preserved in a " "sysupgrade." msgstr "" +"Custom-ные feed-ы - это пользовательские feed-ы. Этот файл может быть " +"сохранен при перепрошивке sysupgrade-совместимым образом." msgid "Custom feeds" +msgstr "Список custom-ных feed-ов" + +msgid "" +"Custom files (certificates, scripts) may remain on the system. To prevent " +"this, perform a factory-reset first." msgstr "" msgid "" "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode" "\">LED</abbr>s if possible." msgstr "" -"Настройка поведения <abbr title=\"Светодиод\">LED</abbr> если это возможно." +"Настройка поведения светодиодной индикации <abbr title=\"Светодиод\">LED</" +"abbr>s устройства, если это возможно." msgid "DHCP Leases" msgstr "Аренды DHCP" @@ -774,49 +825,49 @@ msgid "DHCPv6 Leases" msgstr "Аренды DHCPv6" msgid "DHCPv6 client" -msgstr "" +msgstr "DHCPv6 клиент" msgid "DHCPv6-Mode" -msgstr "" +msgstr "DHCPv6-Режим" msgid "DHCPv6-Service" -msgstr "" +msgstr "DHCPv6-Сервис" msgid "DNS" msgstr "DNS" msgid "DNS forwardings" -msgstr "Перенаправление запросов DNS" +msgstr "Перенаправление<br />запросов DNS" msgid "DNS-Label / FQDN" -msgstr "" +msgstr "DNS-Label / FQDN" msgid "DNSSEC" -msgstr "" +msgstr "DNSSEC" msgid "DNSSEC check unsigned" -msgstr "" +msgstr "DNSSEC проверка без знака" msgid "DPD Idle Timeout" -msgstr "" +msgstr "DPD время простоя" msgid "DS-Lite AFTR address" -msgstr "" +msgstr "DS-Lite AFTR-адрес" msgid "DSL" -msgstr "" +msgstr "DSL" msgid "DSL Status" -msgstr "" +msgstr "Состояние DSL" msgid "DSL line mode" -msgstr "" +msgstr "DSL линейный режим" msgid "DUID" msgstr "DUID" msgid "Data Rate" -msgstr "" +msgstr "Скорость передачи данных" msgid "Debug" msgstr "Отладка" @@ -828,10 +879,10 @@ msgid "Default gateway" msgstr "Шлюз по умолчанию" msgid "Default is stateless + stateful" -msgstr "" +msgstr "Значение по умолчанию - 'stateless + stateful'." msgid "Default route" -msgstr "" +msgstr "Маршрут по умолчанию" msgid "Default state" msgstr "Начальное состояние" @@ -861,28 +912,31 @@ msgid "Design" msgstr "Тема" msgid "Destination" -msgstr "Назначение" +msgstr "Направление" msgid "Device" msgstr "Устройство" msgid "Device Configuration" -msgstr "Конфигурация устройства" +msgstr "Настройка устройства" msgid "Device is rebooting..." -msgstr "" +msgstr "Перезагрузка..." msgid "Device unreachable" +msgstr "Устройство недоступно" + +msgid "Device unreachable!" msgstr "" msgid "Diagnostics" msgstr "Диагностика" msgid "Dial number" -msgstr "" +msgstr "Dial номер" msgid "Directory" -msgstr "Директория" +msgstr "Папка" msgid "Disable" msgstr "Отключить" @@ -891,23 +945,26 @@ msgid "" "Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for " "this interface." msgstr "" -"Отключить <abbr title=\"Протокол динамической конфигурации узла\">DHCP</" -"abbr> для этого интерфейса." +"Отключить <abbr title=\"Протокол динамической настройки узла\">DHCP</abbr> " +"для этого интерфейса." msgid "Disable DNS setup" -msgstr "Отключить настройку DNS" +msgstr "Отключить DNS настройки" msgid "Disable Encryption" -msgstr "" +msgstr "Отключить шифрование" msgid "Disabled" msgstr "Отключено" msgid "Disabled (default)" -msgstr "" +msgstr "Отключено (по умолчанию)" msgid "Discard upstream RFC1918 responses" -msgstr "Отбрасывать ответы RFC1918" +msgstr "Отбрасывать ответы внешней сети RFC1918." + +msgid "Dismiss" +msgstr "" msgid "Displaying only packages containing" msgstr "Показываются только пакеты, содержащие" @@ -919,7 +976,7 @@ msgid "Distance to farthest network member in meters." msgstr "Расстояние до самого удалённого сетевого узла в метрах." msgid "Distribution feeds" -msgstr "" +msgstr "Список feed-ов дистрибутива" msgid "Diversity" msgstr "Разновидность антенн" @@ -930,21 +987,21 @@ msgid "" "Forwarder for <abbr title=\"Network Address Translation\">NAT</abbr> " "firewalls" msgstr "" -"Dnsmasq содержит в себе <abbr title=\"Протокол динамической конфигурации узла" +"Dnsmasq содержит в себе <abbr title=\"Протокол динамической настройки узла" "\">DHCP</abbr>-сервер и <abbr title=\"Служба доменных имён\">DNS</abbr>-" "прокси для сетевых экранов <abbr title=\"Преобразование сетевых адресов" "\">NAT</abbr>" msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "Не кешировать отрицательные ответы, в т.ч. для несуществующих доменов" +msgstr "Не кешировать отрицательные ответы, в т.ч. для несуществующих доменов." msgid "Do not forward requests that cannot be answered by public name servers" msgstr "" "Не перенаправлять запросы, которые не могут быть обработаны публичными DNS-" -"серверами" +"серверами." msgid "Do not forward reverse lookups for local networks" -msgstr "Не перенаправлять обратные DNS-запросы для локальных сетей" +msgstr "Не перенаправлять обратные DNS-запросы для локальных сетей." msgid "Domain required" msgstr "Требуется домен" @@ -953,14 +1010,14 @@ msgid "Domain whitelist" msgstr "Белый список доменов" msgid "Don't Fragment" -msgstr "" +msgstr "Не фрагментировать" msgid "" "Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without " "<abbr title=\"Domain Name System\">DNS</abbr>-Name" msgstr "" "Не перенаправлять <abbr title=\"Служба доменных имён\">DNS</abbr>-запросы " -"без <abbr title=\"Служба доменных имён\">DNS</abbr>-имени" +"без <abbr title=\"Служба доменных имён\">DNS</abbr>-имени." msgid "Download and install package" msgstr "Загрузить и установить пакет" @@ -969,25 +1026,24 @@ msgid "Download backup" msgstr "Загрузить резервную копию" msgid "Downstream SNR offset" -msgstr "" +msgstr "SNR offset внутренней сети" msgid "Dropbear Instance" -msgstr "Dropbear" +msgstr "Исключение Dropbear" msgid "" "Dropbear offers <abbr title=\"Secure Shell\">SSH</abbr> network shell access " "and an integrated <abbr title=\"Secure Copy\">SCP</abbr> server" msgstr "" "Dropbear - это <abbr title=\"Secure Shell\">SSH</abbr>-сервер со встроенным " -"<abbr title=\"Secure Copy\">SCP</abbr>" +"<abbr title=\"Secure Copy\">SCP</abbr>." msgid "Dual-Stack Lite (RFC6333)" -msgstr "" +msgstr "Dual-Stack Lite (RFC6333)" msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>" msgstr "" -"Динамический <abbr title=\"Протокол динамической конфигурации узла\">DHCP</" -"abbr>" +"Динамический <abbr title=\"Протокол динамической настройки узла\">DHCP</abbr>" msgid "Dynamic tunnel" msgstr "Динамический туннель" @@ -1000,24 +1056,23 @@ msgstr "" "обслужены только клиенты с постоянно арендованными адресами." msgid "EA-bits length" -msgstr "" +msgstr "EA-bits длина" msgid "EAP-Method" msgstr "Метод EAP" -# "Редактировать" длинно и не влазит по ширине в кнопку - текст наезжает на иконку -#, fuzzy msgid "Edit" -msgstr "Редактировать" +msgstr "Изменить" msgid "" "Edit the raw configuration data above to fix any error and hit \"Save\" to " "reload the page." msgstr "" +"Изменить данные конфигурации raw выше, чтобы исправить любую ошибку и " +"нажмите 'Сохранить', чтобы перезагрузить страницу." -#, fuzzy msgid "Edit this interface" -msgstr "Редактировать этот интерфейс" +msgstr "Изменить этот интерфейс" msgid "Edit this network" msgstr "Редактировать эту сеть" @@ -1028,6 +1083,11 @@ msgstr "Чрезвычайная ситуация" msgid "Enable" msgstr "Включить" +msgid "" +"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> " +"snooping" +msgstr "" + msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>" msgstr "Включить <abbr title=\"Spanning Tree Protocol\">STP</abbr>" @@ -1035,7 +1095,7 @@ msgid "Enable HE.net dynamic endpoint update" msgstr "Включить динамическое обновление оконечной точки HE.net" msgid "Enable IPv6 negotiation" -msgstr "" +msgstr "Включить IPv6 negotiation" msgid "Enable IPv6 negotiation on the PPP link" msgstr "Включить IPv6-согласование на PPP-соединении" @@ -1047,7 +1107,7 @@ msgid "Enable NTP client" msgstr "Включить NTP-клиент" msgid "Enable Single DES" -msgstr "" +msgstr "Включить Single DES" msgid "Enable TFTP server" msgstr "Включить TFTP-сервер" @@ -1056,25 +1116,25 @@ msgid "Enable VLAN functionality" msgstr "Включить поддержку VLAN" msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" +msgstr "Включить WPS при нажатии на кнопку, в режиме WPA(2)-PSK" msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" +msgstr "Включить защиту<br />от атаки KRACK" msgid "Enable learning and aging" msgstr "Включить изучение и устаревание (learning/aging)" msgid "Enable mirroring of incoming packets" -msgstr "" +msgstr "Включить отражение входящих пакетов" msgid "Enable mirroring of outgoing packets" -msgstr "" +msgstr "Включить отражение исходящих пакетов" msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" +msgstr "Включите флаг DF (не Фрагментировать) инкапсулирующих пакетов." msgid "Enable this mount" -msgstr "Включить эту точку монтирования" +msgstr "Включить эту<br />точку монтирования" msgid "Enable this swap" msgstr "Включить этот раздел подкачки" @@ -1085,13 +1145,18 @@ msgstr "Включить/выключить" msgid "Enabled" msgstr "Включено" +msgid "Enables IGMP snooping on this bridge" +msgstr "" + 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 "Включает Spanning Tree Protocol на этом мосту" +msgstr "Включает Spanning Tree Protocol на этом мосту." msgid "Encapsulation mode" msgstr "Режим инкапсуляции" @@ -1100,10 +1165,10 @@ msgid "Encryption" msgstr "Шифрование" msgid "Endpoint Host" -msgstr "" +msgstr "Конечная точка Хоста" msgid "Endpoint Port" -msgstr "" +msgstr "Конечная точка Порта" msgid "Erasing..." msgstr "Стирание..." @@ -1112,7 +1177,7 @@ msgid "Error" msgstr "Ошибка" msgid "Errored seconds (ES)" -msgstr "" +msgstr "Ошибочные секунды (ES)" msgid "Ethernet Adapter" msgstr "Ethernet-адаптер" @@ -1121,7 +1186,7 @@ msgid "Ethernet Switch" msgstr "Ethernet-коммутатор" msgid "Exclude interfaces" -msgstr "" +msgstr "Исключите интерфейсы" msgid "Expand hosts" msgstr "Расширять имена узлов" @@ -1129,41 +1194,43 @@ msgstr "Расширять имена узлов" msgid "Expires" msgstr "Истекает" -#, fuzzy msgid "" "Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)." msgstr "" -"Время, через которое истекает аренда адреса, минимум 2 минуты (<code>2m</" -"code>)." +"Время истечения срока аренды арендованных адресов, минимум 2 минуты " +"(<code>2m</code>)." msgid "External" -msgstr "" +msgstr "Внешний" msgid "External R0 Key Holder List" -msgstr "" +msgstr "Внешний R0 Key Holder List" msgid "External R1 Key Holder List" -msgstr "" +msgstr "Внешний R0 Key Holder List" msgid "External system log server" -msgstr "Сервер системного журнала" +msgstr "Внешний сервер<br />системного журнала" msgid "External system log server port" -msgstr "Порт сервера системного журнала" +msgstr "Порт внешнего сервера системного журнала" msgid "External system log server protocol" -msgstr "" +msgstr "Внешний протокол<br /> лог-сервера" msgid "Extra SSH command options" -msgstr "" +msgstr "Дополнительные опции команды SSH" msgid "FT over DS" -msgstr "" +msgstr "FT над DS" msgid "FT over the Air" -msgstr "" +msgstr "FT над the Air" msgid "FT protocol" +msgstr "FT протокол" + +msgid "Failed to confirm apply within %ds, waiting for rollback…" msgstr "" msgid "File" @@ -1188,6 +1255,9 @@ msgid "" "Find all currently attached filesystems and swap and replace configuration " "with defaults based on what was detected" msgstr "" +"Найти все разделы включая swap и изменить config файл fstab с дефолтными " +"значениями всех обнаруженных разделов, т.е. выполнить команду 'block detect " +"> /etc/config/fstab'." msgid "Find and join network" msgstr "Найти и присоединиться к сети" @@ -1202,22 +1272,22 @@ msgid "Firewall" msgstr "Межсетевой экран" msgid "Firewall Mark" -msgstr "" +msgstr "Метка межсетевого экрана" msgid "Firewall Settings" msgstr "Настройки межсетевого экрана" msgid "Firewall Status" -msgstr "Статус межсетевого экрана" +msgstr "Состояние межсетевого экрана" msgid "Firmware File" -msgstr "" +msgstr "Файл прошивки" msgid "Firmware Version" msgstr "Версия прошивки" msgid "Fixed source port for outbound DNS queries" -msgstr "Фиксированный порт для исходящих DNS-запросов" +msgstr "Фиксированный порт для исходящих DNS-запросов." msgid "Flash Firmware" msgstr "Установить прошивку" @@ -1234,40 +1304,42 @@ msgstr "Операции с прошивкой" msgid "Flashing..." msgstr "Прошивка..." -# Force DHCP on the network msgid "Force" -msgstr "Принудительно" +msgstr "Назначить" msgid "Force CCMP (AES)" -msgstr "Требовать CCMP (AES)" +msgstr "Назначить CCMP (AES)" msgid "Force DHCP on this network even if another server is detected." -msgstr "Использовать DHCP в этой сети, даже если найден другой сервер." +msgstr "Назначить DHCP в этой сети, даже если найден другой сервер." msgid "Force TKIP" -msgstr "Требовать TKIP" +msgstr "Назначить TKIP" msgid "Force TKIP and CCMP (AES)" -msgstr "TKIP или CCMP (AES)" +msgstr "Назначить TKIP и CCMP (AES)" msgid "Force link" -msgstr "" +msgstr "Активировать соединение" msgid "Force use of NAT-T" -msgstr "" +msgstr "Принудительно использовать NAT-T" msgid "Form token mismatch" -msgstr "" +msgstr "Несоответствие маркеров формы" msgid "Forward DHCP traffic" msgstr "Перенаправлять трафик DHCP" msgid "Forward Error Correction Seconds (FECS)" -msgstr "" +msgstr "Секунды прямой коррекции ошибок (FECS)" msgid "Forward broadcast traffic" msgstr "Перенаправлять широковещательный траффик" +msgid "Forward mesh peer traffic" +msgstr "Перенаправлять запросы трафика Mesh" + msgid "Forwarding mode" msgstr "Режим перенаправления" @@ -1287,6 +1359,8 @@ msgid "" "Further information about WireGuard interfaces and peers at <a href=\"http://" "wireguard.io\">wireguard.io</a>." msgstr "" +"Дополнительная информация о интерфейсах и партнерах WireGuard приведена в <a " +"href=\"http://wireguard.io\">wireguard.io</a>." msgid "GHz" msgstr "ГГц" @@ -1307,13 +1381,13 @@ msgid "General Setup" msgstr "Основные настройки" msgid "General options for opkg" -msgstr "" +msgstr "Основные настройки opkg." msgid "Generate Config" -msgstr "" +msgstr "Создать config" msgid "Generate PMK locally" -msgstr "" +msgstr "Создать PMK локально" msgid "Generate archive" msgstr "Создать архив" @@ -1325,51 +1399,47 @@ msgid "Given password confirmation did not match, password not changed!" msgstr "Введённые пароли не совпадают, пароль не изменён!" msgid "Global Settings" -msgstr "" +msgstr "Основные настройки" msgid "Global network options" -msgstr "" +msgstr "Основные настройки сети" msgid "Go to password configuration..." msgstr "Перейти к настройке пароля..." msgid "Go to relevant configuration page" -msgstr "Перейти к странице конфигурации" +msgstr "Перейти к странице настройки" msgid "Group Password" -msgstr "" +msgstr "Групповой пароль" msgid "Guest" -msgstr "" +msgstr "Гость" msgid "HE.net password" msgstr "Пароль HE.net" msgid "HE.net username" -msgstr "" +msgstr "HE.net логин" msgid "HT mode (802.11n)" -msgstr "" - -msgid "Handler" -msgstr "Обработчик" +msgstr "HT режим (802.11n)" -# Вообще, SIGHUP означает, что "пользователь отключился от терминала". Но чаще всего сигнал используется для перезапуска, так что переведу именно так. msgid "Hang Up" msgstr "Перезапустить" msgid "Header Error Code Errors (HEC)" -msgstr "" +msgstr "Ошибки кода ошибки заголовка (HEC)" msgid "Heartbeat" -msgstr "" +msgstr "Heartbeat" msgid "" "Here you can configure the basic aspects of your device like its hostname or " "the timezone." msgstr "" -"Здесь вы можете настроить основные параметры вашего устройства такие как имя " -"хоста или часовой пояс." +"На странице вы можете настроить основные параметры вашего устройства, такие " +"как имя хоста или часовой пояс." msgid "" "Here you can paste public SSH-Keys (one per line) for SSH public-key " @@ -1385,16 +1455,16 @@ msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>" msgstr "Скрыть <abbr title=\"Расширенный идентификатор сети\">ESSID</abbr>" msgid "Host" -msgstr "" +msgstr "Хост" msgid "Host entries" -msgstr "Записи хостов" +msgstr "Список хостов" msgid "Host expiry timeout" -msgstr "Таймаут хоста" +msgstr "Время ожидания хоста" msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network" -msgstr "<abbr title=\"Адрес интернет протокола\">IP</abbr>-адрес или сеть" +msgstr "<abbr title=\"Адрес Интернет протокола\">IP</abbr>-адрес или сеть" msgid "Hostname" msgstr "Имя хоста" @@ -1406,13 +1476,13 @@ msgid "Hostnames" msgstr "Имена хостов" msgid "Hybrid" -msgstr "" +msgstr "Гибрид" msgid "IKE DH Group" -msgstr "" +msgstr "IKE DH Group" msgid "IP Addresses" -msgstr "" +msgstr "IP-Адреса" msgid "IP address" msgstr "IP-адрес" @@ -1424,7 +1494,7 @@ msgid "IPv4 Firewall" msgstr "Межсетевой экран IPv4" msgid "IPv4 WAN Status" -msgstr "Статус IPv4 WAN" +msgstr "Состояние IPv4 WAN" msgid "IPv4 address" msgstr "IPv4-адрес" @@ -1433,10 +1503,10 @@ msgid "IPv4 and IPv6" msgstr "IPv4 и IPv6" msgid "IPv4 assignment length" -msgstr "" +msgstr "IPv4 assignment length" msgid "IPv4 broadcast" -msgstr "Широковещательный IPv4-адрес" +msgstr "Широковещательный<br />IPv4-адрес" msgid "IPv4 gateway" msgstr "IPv4-адрес шлюза" @@ -1448,7 +1518,7 @@ msgid "IPv4 only" msgstr "Только IPv4" msgid "IPv4 prefix" -msgstr "" +msgstr "IPv4 префикс" msgid "IPv4 prefix length" msgstr "Длина префикса IPv4" @@ -1457,7 +1527,7 @@ msgid "IPv4-Address" msgstr "IPv4-адрес" msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" +msgstr "IPv4-in-IPv4 (RFC2003)" msgid "IPv6" msgstr "IPv6" @@ -1466,28 +1536,29 @@ msgid "IPv6 Firewall" msgstr "Межсетевой экран IPv6" msgid "IPv6 Neighbours" -msgstr "" +msgstr "IPv6 Neighbours" msgid "IPv6 Settings" -msgstr "" +msgstr "IPv6 Настройки" msgid "IPv6 ULA-Prefix" -msgstr "" +msgstr "IPv6 ULA-Prefix" msgid "IPv6 WAN Status" -msgstr "Статус IPv6 WAN" +msgstr "Состояние IPv6 WAN" msgid "IPv6 address" msgstr "IPv6-адрес" msgid "IPv6 address delegated to the local tunnel endpoint (optional)" msgstr "" +"IPv6-адрес, делегированный локальной конечной точке туннеля (необязательно)." msgid "IPv6 assignment hint" -msgstr "" +msgstr "IPv6 подсказка присвоения" msgid "IPv6 assignment length" -msgstr "" +msgstr "IPv6 назначение длины" msgid "IPv6 gateway" msgstr "IPv6-адрес шлюза" @@ -1502,16 +1573,16 @@ msgid "IPv6 prefix length" msgstr "Длина префикса IPv6" msgid "IPv6 routed prefix" -msgstr "" +msgstr "IPv6 направление префикса" msgid "IPv6 suffix" -msgstr "" +msgstr "IPv6 суффикс" msgid "IPv6-Address" msgstr "IPv6-адрес" msgid "IPv6-PD" -msgstr "" +msgstr "IPv6-PD" msgid "IPv6-in-IPv4 (RFC4213)" msgstr "IPv6 в IPv4 (RFC4213)" @@ -1526,29 +1597,29 @@ msgid "Identity" msgstr "Идентификация EAP" msgid "If checked, 1DES is enabled" -msgstr "" +msgstr "Если выбрано, что 1DES включено" msgid "If checked, encryption is disabled" -msgstr "" +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 " "device node" msgstr "" -"Если выбрано, монтировать устройство, используя название его раздела, вместо " -"фиксированного файла устройства" +"Если выбрано монтировать устройство используя название его раздела, вместо " +"фиксированного файла устройства." msgid "If unchecked, no default route is configured" -msgstr "Если не выбрано, то маршрут по умолчанию не настраивается" +msgstr "Если не выбрано, то маршрут по умолчанию не настраивается." msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "Если не выбрано, то извещаемые адреса DNS-серверов игнорируются" +msgstr "Если не выбрано, то извещаемые адреса DNS серверов игнорируются." msgid "" "If your physical memory is insufficient unused data can be temporarily " @@ -1559,19 +1630,19 @@ msgid "" msgstr "" "Если физической памяти не достаточно, то неиспользуемые данные могут быть " "временно перемещены в раздел подкачки, что в свою очередь приведет к " -"увеличению объёму свободной <abbr title=\"Random Access Memory\">RAM</abbr>. " -"Однако, перемещение в файл - это достаточно долгий процесс, так как " +"увеличению объёму свободной <abbr title=\"Random Access Memory\">RAM</abbr>." +"<br />Однако, перемещение в файл - это достаточно долгий процесс, так как " "устройство, на котором располагается раздел подкачки, работает гораздо " "медленнее, чем <abbr title=\"Random Access Memory\">RAM</abbr>." msgid "Ignore <code>/etc/hosts</code>" -msgstr "Ignore <code>/etc/hosts</code>" +msgstr "Игнорировать<br /><code>/etc/hosts</code>" msgid "Ignore interface" msgstr "Игнорировать интерфейс" msgid "Ignore resolve file" -msgstr "Игнорировать файл resolv" +msgstr "Игнорировать<br />файл resolv" msgid "Image" msgstr "Образ" @@ -1583,9 +1654,12 @@ msgid "" "In order to prevent unauthorized access to the system, your request has been " "blocked. Click \"Continue »\" below to return to the previous page." msgstr "" +"Для предотвращения несанкционированного доступа к системе ваш запрос " +"заблокирован. Нажмите кнопку 'Продолжить' ниже, чтобы вернуться на " +"предыдущую страницу." msgid "Inactivity timeout" -msgstr "Таймаут бездействия" +msgstr "Промежуток времени бездействия" msgid "Inbound:" msgstr "Входящий:" @@ -1603,7 +1677,7 @@ msgid "Install" msgstr "Установить" msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" +msgstr "Для IPv6, установите пакет iputils-traceroute6." msgid "Install package %q" msgstr "Установить пакет %q" @@ -1618,13 +1692,13 @@ msgid "Interface" msgstr "Интерфейс" msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" +msgstr "Интерфейс %q устройство авт.перемещается из %q в %q." msgid "Interface Configuration" -msgstr "Конфигурация интерфейса" +msgstr "Настройка сети" msgid "Interface Overview" -msgstr "Обзор интерфейса" +msgstr "Список интерфейсов" msgid "Interface is reconnecting..." msgstr "Интерфейс переподключается..." @@ -1633,7 +1707,7 @@ msgid "Interface is shutting down..." msgstr "Интерфейс отключается..." msgid "Interface name" -msgstr "" +msgstr "Имя интерфейса" msgid "Interface not present or not connected yet." msgstr "Интерфейс не существует или пока не подключен." @@ -1648,13 +1722,13 @@ msgid "Interfaces" msgstr "Интерфейсы" msgid "Internal" -msgstr "" +msgstr "Внутренний" msgid "Internal Server Error" msgstr "Внутренняя ошибка сервера" msgid "Invalid" -msgstr "Введённое значение не верно" +msgstr "Неверно" msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." msgstr "" @@ -1665,30 +1739,29 @@ msgid "Invalid VLAN ID given! Only unique IDs are allowed" msgstr "Указан неверный VLAN ID! Доступны только уникальные ID" msgid "Invalid username and/or password! Please try again." -msgstr "Неверный логин и/или пароль! Пожалуйста попробуйте снова." +msgstr "Неверный логин и/или пароль! Попробуйте снова." msgid "Isolate Clients" -msgstr "" +msgstr "Изолировать клиентов" -#, fuzzy msgid "" "It appears that you are trying to flash an image that does not fit into the " "flash memory, please verify the image file!" msgstr "" -"Вы пытаетесь обновить прошивку файлом, который не помещается в память " -"устройства! Пожалуйста, проверьте файл образа." +"Оказалось, что вы пытаетесь прошить устройство прошивкой, которая по размеру " +"не помещается в чип флэш-памяти, проверьте ваш файл прошивки!" msgid "JavaScript required!" -msgstr "Требуется JavaScript!" +msgstr "Требуется Java скрипт!" msgid "Join Network" msgstr "Подключение к сети" msgid "Join Network: Wireless Scan" -msgstr "Подключение к сети: сканирование" +msgstr "Найденные точки доступа Wi-Fi" msgid "Joining Network: %q" -msgstr "" +msgstr "Подключение к сети: %q" msgid "Keep settings" msgstr "Сохранить настройки" @@ -1700,7 +1773,7 @@ msgid "Kernel Version" msgstr "Версия ядра" msgid "Key" -msgstr "Ключ" +msgstr "Пароль (ключ)" msgid "Key #%d" msgstr "Ключ №%d" @@ -1733,13 +1806,13 @@ msgid "Language and Style" msgstr "Язык и тема" msgid "Latency" -msgstr "" +msgstr "Задержка" msgid "Leaf" -msgstr "" +msgstr "Лист" msgid "Lease time" -msgstr "" +msgstr "Время аренды адреса" msgid "Lease validity time" msgstr "Срок действия аренды" @@ -1751,34 +1824,34 @@ msgid "Leasetime remaining" msgstr "Оставшееся время аренды" msgid "Leave empty to autodetect" -msgstr "Оставьте поле пустым для автоопределения" +msgstr "Оставьте поле пустым для автоопределения." msgid "Leave empty to use the current WAN address" msgstr "Оставьте пустым для использования текущего адреса WAN" msgid "Legend:" -msgstr "Легенда:" +msgstr "События:" msgid "Limit" msgstr "Предел" msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" +msgstr "Ограничение сервиса DNS, для подсетей интерфейса используещего DNS." msgid "Limit listening to these interfaces, and loopback." -msgstr "" +msgstr "Ограничьте прослушивание этих интерфейсов и замыкание на себя." msgid "Line Attenuation (LATN)" -msgstr "" +msgstr "Затухание линии (LATN)" msgid "Line Mode" -msgstr "" +msgstr "Режим линии" msgid "Line State" -msgstr "" +msgstr "Состояние Линии" msgid "Line Uptime" -msgstr "" +msgstr "Время бесперебойной работы линии" msgid "Link On" msgstr "Подключение" @@ -1788,7 +1861,7 @@ msgid "" "requests to" msgstr "" "Список <abbr title=\"Domain Name System\">DNS</abbr>-серверов для " -"перенаправления запросов" +"перенаправления запросов." msgid "" "List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-" @@ -1797,6 +1870,11 @@ msgid "" "from the R0KH that the STA used during the Initial Mobility Domain " "Association." msgstr "" +"Список R0KHs в том же мобильном домене. <br />В формате: MAC-адрес,NAS-" +"идентификатор,128-битный ключ как hex строка. <br />этот список используется " +"для сопоставления R0KH-ID (NAS ID) с целевым MAC-адресом при запросе ключа " +"PMK-R1 из R0KH , который использовался STA во время начальной ассоциации " +"доменов Mobility." msgid "" "List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID " @@ -1805,27 +1883,34 @@ msgid "" "R0KH. This is also the list of authorized R1KHs in the MD that can request " "PMK-R1 keys." msgstr "" +"Список R1KHs в том же домене мобильности. <br />Формат: MAC-адрес,R1KH-ID " +"как 6 октетов с двоеточиями, 128-битный ключ, как шестнадцатеричная строка. " +"<br />Этот список используется для сопоставления R1KH-ID с целевым MAC-" +"адресом при отправке ключа PMK-R1 из R0KH. Это также список авторизованных " +"R1KHs в MD, которые могут запросить PMK-R1 ключи." msgid "List of SSH key files for auth" -msgstr "" +msgstr "Список файлов ключей SSH для авторизации." msgid "List of domains to allow RFC1918 responses for" -msgstr "Список доменов, для которых разрешены ответы RFC1918" +msgstr "Список доменов, для которых разрешены ответы RFC1918." msgid "List of hosts that supply bogus NX domain results" -msgstr "Список хостов, поставляющих поддельные результаты домена NX" +msgstr "Список хостов, поставляющих поддельные результаты домена NX." msgid "Listen Interfaces" -msgstr "" +msgstr "Интерфейс для входящих соединений" msgid "Listen Port" -msgstr "" +msgstr "Порт для входящих соединений" msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "Слушать только на данном интерфейсе или, если не определено, на всех" +msgstr "" +"Этот интерфейс работает с входящими соединениями или если интерфейс не " +"задан, значит все интерфейсы." msgid "Listening port for inbound DNS queries" -msgstr "Порт для входящих DNS-запросов" +msgstr "Порт для входящих DNS-запросов." msgid "Load" msgstr "Загрузка" @@ -1837,7 +1922,7 @@ msgid "Loading" msgstr "Загрузка" msgid "Local IP address to assign" -msgstr "" +msgstr "Присвоение локального IP адреса" msgid "Local IPv4 address" msgstr "Локальный IPv4-адрес" @@ -1846,29 +1931,29 @@ msgid "Local IPv6 address" msgstr "Локальный IPv6-адрес" msgid "Local Service Only" -msgstr "" +msgstr "Только локальный DNS" msgid "Local Startup" -msgstr "Локальная загрузка" +msgstr "Запуск пакетов и служб пользователя, при включении устройства" msgid "Local Time" -msgstr "Местное время" +msgstr "Дата и время" msgid "Local domain" msgstr "Локальный домен" -#, fuzzy msgid "" "Local domain specification. Names matching this domain are never forwarded " "and are resolved from DHCP or hosts files only" msgstr "" -"Определение локального домена. Имена в этом домене никогда не запрашиваются " -"у DNS-сервера, а разрешаются на основе данных DHCP и файлов hosts" +"Согласно требованиям, имена соответствующие этому домену, никогда не " +"передаются.<br />И разрешаются только из файла DHCP(/etc/config/dhcp) или " +"файла хостов (/etc/hosts)." msgid "Local domain suffix appended to DHCP names and hosts file entries" msgstr "" -"Суффикс локального домена, который будет добавлен к DHCP-именам и записям из " -"файлов hosts" +"Суффикс локального домена, который будет добавлен к DHCP-именам и записи " +"файла хостов (/etc/hosts)." msgid "Local server" msgstr "Локальный сервер" @@ -1884,16 +1969,16 @@ msgid "Localise queries" msgstr "Локализовывать запросы" msgid "Locked to channel %s used by: %s" -msgstr "" +msgstr "Блокировать канал %s используемый: %s" msgid "Log output level" -msgstr "Уровень вывода" +msgstr "Запись событий" msgid "Log queries" -msgstr "Записывать запросы в журнал" +msgstr "Запись запросов" msgid "Logging" -msgstr "Журналирование" +msgstr "Настройка журнала" msgid "Login" msgstr "Войти" @@ -1902,7 +1987,7 @@ msgid "Logout" msgstr "Выйти" msgid "Loss of Signal Seconds (LOSS)" -msgstr "" +msgstr "Потеря сигнала в секундах (LOSS)" msgid "Lowest leased address as offset from the network address." msgstr "Минимальный адрес аренды." @@ -1920,13 +2005,13 @@ msgid "MAC-List" msgstr "Список MAC" msgid "MAP / LW4over6" -msgstr "" +msgstr "MAP / LW4over6" msgid "MB/s" msgstr "МБ/с" msgid "MD5" -msgstr "" +msgstr "MD5" msgid "MHz" msgstr "МГц" @@ -1938,32 +2023,33 @@ msgid "" "Make sure to clone the root filesystem using something like the commands " "below:" msgstr "" +"Прежде чем перенести корень на внешний носитель, используйте команды " +"приведенные ниже:" msgid "Manual" -msgstr "" +msgstr "Вручную" msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" +msgstr "Max. Attainable Data Rate (ATTNDR)" msgid "Maximum allowed number of active DHCP leases" -msgstr "Максимальное количество активных арендованных DHCP-адресов" +msgstr "Максимальное количество активных арендованных DHCP-адресов." msgid "Maximum allowed number of concurrent DNS queries" -msgstr "Максимально допустимое количество одновременных DNS-запросов" +msgstr "Максимально допустимое количество одновременных DNS-запросов." msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "Максимально допустимый размер UDP пакетов-EDNS.0" +msgstr "Максимально допустимый размер UDP пакетов-EDNS.0." msgid "Maximum amount of seconds to wait for the modem to become ready" msgstr "Максимальное время ожидания готовности модема (секунды)" -msgid "Maximum hold time" -msgstr "Максимальное время удержания" - msgid "" "Maximum length of the name is 15 characters including the automatic protocol/" "bridge prefix (br-, 6in4-, pppoe- etc.)" msgstr "" +"Максимальная длина имени составляет 15 символов, включая префикс " +"автоматического протокола/моста (br-, 6in4-, pppoe- etc.)" msgid "Maximum number of leased addresses." msgstr "Максимальное количество арендованных адресов." @@ -1972,69 +2058,68 @@ msgid "Mbit/s" msgstr "Мбит/с" msgid "Memory" -msgstr "Память" +msgstr "Оперативная память (RAM)" msgid "Memory usage (%)" msgstr "Использование памяти (%)" +msgid "Mesh Id" +msgstr "Mesh ID" + msgid "Metric" msgstr "Метрика" -msgid "Minimum hold time" -msgstr "Минимальное время удержания" - msgid "Mirror monitor port" -msgstr "" +msgstr "Зеркальный порт наблюдения" msgid "Mirror source port" -msgstr "" +msgstr "Зеркальный исходящий порт" msgid "Missing protocol extension for proto %q" msgstr "Отсутствует расширение протокола %q" msgid "Mobility Domain" -msgstr "" +msgstr "Мобильный домен" msgid "Mode" msgstr "Режим" msgid "Model" -msgstr "" +msgstr "Модель" msgid "Modem device" msgstr "Модем" msgid "Modem init timeout" -msgstr "Таймаут инициализации модема" +msgstr "Время ожидания инициализации модема" -# 802.11 monitor mode msgid "Monitor" msgstr "Монитор" msgid "Mount Entry" -msgstr "Точка монтирования" +msgstr "Настройка config файла fstab (/etc/config/fstab)" msgid "Mount Point" msgstr "Точка монтирования" msgid "Mount Points" -msgstr "Точки монтирования" +msgstr "Монтирование разделов" msgid "Mount Points - Mount Entry" -msgstr "Точки монтирования - Запись" +msgstr "Точки монтирования - Настройка разделов" msgid "Mount Points - Swap Entry" -msgstr "Точки монтирования - Запись подкачки" +msgstr "Точки монтирования - Настройка Swap" msgid "" "Mount Points define at which point a memory device will be attached to the " "filesystem" msgstr "" -"Точки монтирования определяют, куда в файловой системе будет прикреплено " -"запоминающее устройство" +"Точки монтирования определяют, куда в файловой системе будут смонтированы " +"разделы запоминающего устройства." msgid "Mount filesystems not specifically configured" -msgstr "" +msgstr "Монтирование не подготовленного раздела." msgid "Mount options" msgstr "Опции монтирования" @@ -2043,10 +2128,10 @@ msgid "Mount point" msgstr "Точка монтирования" msgid "Mount swap not specifically configured" -msgstr "" +msgstr "Монтирование не подготовленного swap-а." msgid "Mounted file systems" -msgstr "Смонтированные файловые системы" +msgstr "Смонтированные разделы" msgid "Move down" msgstr "Переместить вниз" @@ -2055,31 +2140,31 @@ msgid "Move up" msgstr "Переместить вверх" msgid "Multicast address" -msgstr "Адрес групповой передачи" +msgstr "Адрес мультивещания" msgid "NAS ID" -msgstr "Идентификатор NAS" +msgstr "NAS ID" msgid "NAT-T Mode" -msgstr "" +msgstr "NAT-T режим" msgid "NAT64 Prefix" -msgstr "" +msgstr "NAT64 префикс" msgid "NCM" -msgstr "" +msgstr "NCM" msgid "NDP-Proxy" -msgstr "" +msgstr "NDP-прокси" msgid "NT Domain" -msgstr "" +msgstr "NT домен" msgid "NTP server candidates" msgstr "Список NTP-серверов" msgid "NTP sync time-out" -msgstr "" +msgstr "NTP синхронизация времени ожидания" msgid "Name" msgstr "Имя" @@ -2115,7 +2200,7 @@ msgid "No DHCP Server configured for this interface" msgstr "DHCP-сервер не настроен для этого интерфейса" msgid "No NAT-T" -msgstr "" +msgstr "не NAT-T" msgid "No chains in this table" msgstr "Нет цепочек в этой таблице" @@ -2127,7 +2212,7 @@ msgid "No information available" msgstr "Нет доступной информации" msgid "No negative cache" -msgstr "Отключить кэш отрицательных ответов" +msgstr "Отключить кэш<br />отрицательных ответов" msgid "No network configured on this device" msgstr "Не настроена сеть на устройстве" @@ -2151,19 +2236,19 @@ msgid "Noise" msgstr "Шум" msgid "Noise Margin (SNR)" -msgstr "" +msgstr "Соотношение сигнал/шум (SNR)" msgid "Noise:" msgstr "Шум:" msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" +msgstr "Non Pre-emtive CRC errors (CRC_P)" msgid "Non-wildcard" -msgstr "" +msgstr "Не использовать wildcard" msgid "None" -msgstr "Нет" +msgstr "Ничего" msgid "Normal" msgstr "Нормально" @@ -2178,10 +2263,10 @@ msgid "Not connected" msgstr "Не подключено" msgid "Note: Configuration files will be erased." -msgstr "Примечание: конфигурационные файлы будут стёрты." +msgstr "Примечание: config файлы будут удалены." msgid "Note: interface name length" -msgstr "" +msgstr "Внимание: длина имени интерфейса" msgid "Notice" msgstr "Заметка" @@ -2189,6 +2274,9 @@ msgstr "Заметка" msgid "Nslookup" msgstr "DNS-запрос" +msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" +msgstr "" + msgid "OK" msgstr "OK" @@ -2196,9 +2284,12 @@ msgid "OPKG-Configuration" msgstr "Настройка OPKG" msgid "Obfuscated Group Password" -msgstr "" +msgstr "Obfuscated Group Password" msgid "Obfuscated Password" +msgstr "Obfuscated Password" + +msgid "Obtain IPv6-Address" msgstr "" msgid "Off-State Delay" @@ -2212,9 +2303,9 @@ msgid "" "<samp>INTERFACE.VLANNR</samp> (<abbr title=\"for example\">e.g.</abbr>: " "<samp>eth0.1</samp>)." msgstr "" -"На этой странице вы можете настроить сетевые интерфейсы. Вы можете " -"объединить несколько интерфейсов в мост, выбрав опцию \"Объединить в мост\" " -"и введя список интерфейсов, разделенных пробелами. Вы также можете " +"На этой странице вы можете настроить сетевые интерфейсы.<br />Вы можете " +"объединить несколько интерфейсов в мост, выбрав опцию 'Объединить в мост' и " +"введя список интерфейсов, разделенных пробелами.<br />Вы также можете " "использовать <abbr title=\"Виртуальные локальные сети\">VLAN</abbr>-" "обозначения вида <samp>ИНТЕРФЕЙС.НОМЕРVLAN</samp> (<abbr title=\"например" "\">напр.</abbr>: <samp>eth0.1</samp>)." @@ -2229,7 +2320,7 @@ msgid "One or more fields contain invalid values!" msgstr "Одно или несколько полей содержат недопустимые значения!" msgid "One or more invalid/required values on tab" -msgstr "" +msgstr "Одно или несколько недопустимых / обязательных значений на странице" msgid "One or more required fields have no value!" msgstr "Одно или несколько обязательных полей не заполнены!" @@ -2238,10 +2329,10 @@ msgid "Open list..." msgstr "Открыть список..." msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" +msgstr "OpenConnect (CISCO AnyConnect)" msgid "Operating frequency" -msgstr "" +msgstr "Настройка частоты" msgid "Option changed" msgstr "Опция изменена" @@ -2250,18 +2341,24 @@ msgid "Option removed" msgstr "Опция удалена" msgid "Optional" -msgstr "" +msgstr "Необязательно" msgid "Optional, specify to override default server (tic.sixxs.net)" msgstr "" +"Необязательно. Укажите, чтобы переопределить дефолтный сервер (tic.sixxs." +"net)." msgid "Optional, use when the SIXXS account has more than one tunnel" msgstr "" +"Необязательно. Используется, когда учетная запись SIXXS имеет более одного " +"туннеля." msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." msgstr "" +"Необязательно. 32-разрядная метка для исходящих зашифрованных пакетов. " +"Введите значение в шестнадцатеричной форме, начиная с <code>0x</code>." msgid "" "Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " @@ -2269,33 +2366,45 @@ msgid "" "server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " "for the interface." msgstr "" +"Необязательно. Допустимые значения: 'eui64', 'random', фиксированное " +"значение например '::1' или '::1:2'.<br />Когда IPv6 префикс такой как - ('a:" +"b:c:d::'), используйте суффикс на вроде ('::1') для этого IPv6 адреса ('a:b:" +"c:d::1') для этого интерфейса." msgid "" "Optional. Base64-encoded preshared key. Adds in an additional layer of " "symmetric-key cryptography for post-quantum resistance." msgstr "" +"Необязательно. Base64-шифрованный общий ключ. Добавляет дополнительный слой " +"криптографии с симметричным ключом для пост-квантового сопротивления." msgid "Optional. Create routes for Allowed IPs for this peer." msgstr "" +"Необязательно. Создавать маршруты для разрешенных IP адресов для этого узла." msgid "" "Optional. Host of peer. Names are resolved prior to bringing up the " "interface." msgstr "" +"Необязательно. Запрашивающий хост. Имена разрешаются до появления интерфейса." msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" +msgstr "Необязательно. Максимальная единица передачи туннельного интерфейса." msgid "Optional. Port of peer." -msgstr "" +msgstr "Необязательно. Порт узла." msgid "" "Optional. Seconds between keep alive messages. Default is 0 (disabled). " "Recommended value if this device is behind a NAT is 25." msgstr "" +"Необязательно. Кол-во секунд между сохранением сообщений. По умолчанию равно " +"'0' (отключено). Рекомендуемое значение, если это устройство находится за " +"NAT 25." msgid "Optional. UDP port used for outgoing and incoming packets." msgstr "" +"Необязательно. Udp-порт, используемый для исходящих и входящих пакетов." msgid "Options" msgstr "Опции" @@ -2310,7 +2419,7 @@ msgid "Outbound:" msgstr "Исходящий:" msgid "Output Interface" -msgstr "" +msgstr "Исходящий интерфейс" msgid "Override MAC address" msgstr "Назначить MAC-адрес" @@ -2319,13 +2428,13 @@ msgid "Override MTU" msgstr "Назначить MTU" msgid "Override TOS" -msgstr "" +msgstr "Отвергать TOS" msgid "Override TTL" -msgstr "" +msgstr "Отвергать TTL" msgid "Override default interface name" -msgstr "" +msgstr "Назначить имя интерфейса по дефолту." msgid "Override the gateway in DHCP responses" msgstr "Назначить шлюз в ответах DHCP" @@ -2341,10 +2450,10 @@ msgid "Override the table used for internal routes" msgstr "Назначить таблицу внутренних маршрутов" msgid "Overview" -msgstr "Обзор" +msgstr "Главное меню" msgid "Owner" -msgstr "Владелец" +msgstr "Пользователь" msgid "PAP/CHAP password" msgstr "Пароль PAP/CHAP" @@ -2359,7 +2468,7 @@ msgid "PIN" msgstr "PIN" msgid "PMK R1 Push" -msgstr "" +msgstr "PMK R1 Push" msgid "PPP" msgstr "PPP" @@ -2374,19 +2483,19 @@ msgid "PPPoE" msgstr "PPPoE" msgid "PPPoSSH" -msgstr "" +msgstr "PPPoSSH" msgid "PPtP" -msgstr "PPTP" +msgstr "PPtP" msgid "PSID offset" -msgstr "" +msgstr "PSID смещение" msgid "PSID-bits length" -msgstr "" +msgstr "PSID длина в битах" msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" +msgstr "PTM/EFM (Packet Transfer Mode)" msgid "Package libiwinfo required!" msgstr "Требуется пакет libiwinfo!" @@ -2407,52 +2516,49 @@ msgid "Password" msgstr "Пароль" msgid "Password authentication" -msgstr "Аутентификация с помощью пароля" +msgstr "С помощью пароля" msgid "Password of Private Key" -msgstr "Пароль или закрытый ключ" +msgstr "Пароль к Приватному ключу" msgid "Password of inner Private Key" -msgstr "" +msgstr "Пароль к внутреннему Приватному ключу" msgid "Password successfully changed!" msgstr "Пароль успешно изменён!" msgid "Password2" -msgstr "" +msgstr "Пароль2" msgid "Path to CA-Certificate" -msgstr "Путь к центру сертификации" +msgstr "Путь к CA-Сертификату" msgid "Path to Client-Certificate" -msgstr "Путь к клиентскому сертификату" +msgstr "Путь к Client-Сертификату" msgid "Path to Private Key" -msgstr "Путь к личному ключу" - -msgid "Path to executable which handles the button event" -msgstr "Путь к программе, обрабатывающей нажатие кнопки" +msgstr "Путь к Приватному ключу" msgid "Path to inner CA-Certificate" -msgstr "" +msgstr "Путь к внутренним CA-Сертификатам" msgid "Path to inner Client-Certificate" -msgstr "" +msgstr "Путь к внутренним Client-Сертификатам" msgid "Path to inner Private Key" -msgstr "" +msgstr "Путь к внутреннему Приватному ключу" msgid "Peak:" msgstr "Пиковая:" msgid "Peer IP address to assign" -msgstr "" +msgstr "Запрос IP адреса назначения" msgid "Peers" -msgstr "" +msgstr "Пиры" msgid "Perfect Forward Secrecy" -msgstr "" +msgstr "Perfect Forward Secrecy" msgid "Perform reboot" msgstr "Выполнить перезагрузку" @@ -2461,7 +2567,7 @@ msgid "Perform reset" msgstr "Выполнить сброс" msgid "Persistent Keep Alive" -msgstr "" +msgstr "Постоянно держать включенным" msgid "Phy Rate:" msgstr "Скорость:" @@ -2470,13 +2576,13 @@ msgid "Physical Settings" msgstr "Настройки канала" msgid "Ping" -msgstr "Эхо-запрос" +msgstr "Пинг-запрос" msgid "Pkts." msgstr "Пакетов." msgid "Please enter your username and password." -msgstr "Пожалуйста, введите логин и пароль." +msgstr "Введите логин и пароль." msgid "Policy" msgstr "Политика" @@ -2488,41 +2594,41 @@ msgid "Port status:" msgstr "Состояние порта:" msgid "Power Management Mode" -msgstr "" +msgstr "Режим управления питанием" msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" +msgstr "Pre-emtive CRC errors (CRCP_P)" msgid "Prefer LTE" -msgstr "" +msgstr "Предпочитать LTE" msgid "Prefer UMTS" -msgstr "" +msgstr "Предпочитать UMTS" msgid "Prefix Delegated" -msgstr "" +msgstr "Делегированный префикс" msgid "Preshared Key" -msgstr "" +msgstr "Предварительный ключ" msgid "" "Presume peer to be dead after given amount of LCP echo failures, use 0 to " "ignore failures" msgstr "" "Предполагать, что узел недоступен после указанного количества ошибок " -"получения эхо-пакета LCP, введите 0 для игнорирования ошибок" +"получения эхо-пакета LCP, введите '0' для игнорирования ошибок." msgid "Prevent listening on these interfaces." -msgstr "" +msgstr "Запретить прослушивание этих интерфейсов." msgid "Prevents client-to-client communication" -msgstr "Не позволяет клиентам обмениваться друг с другом информацией" +msgstr "Не позволяет клиентам обмениваться друг с другом информацией." msgid "Prism2/2.5/3 802.11b Wireless Controller" msgstr "Беспроводной 802.11b контроллер Prism2/2.5/3" msgid "Private Key" -msgstr "" +msgstr "Приватный ключ" msgid "Proceed" msgstr "Продолжить" @@ -2531,7 +2637,7 @@ msgid "Processes" msgstr "Процессы" msgid "Profile" -msgstr "" +msgstr "Профиль" msgid "Prot." msgstr "Прот." @@ -2558,34 +2664,36 @@ msgid "Pseudo Ad-Hoc (ahdemo)" msgstr "Псевдо Ad-Hoc (ahdemo)" msgid "Public Key" -msgstr "" +msgstr "Публичный ключ" msgid "Public prefix routed to this device for distribution to clients." msgstr "" +"Публичный префикс, направляемый на это устройство для распространения среди " +"клиентов." msgid "QMI Cellular" -msgstr "" +msgstr "QMI сотовый" msgid "Quality" msgstr "Качество" msgid "R0 Key Lifetime" -msgstr "" +msgstr "R0 Key время жизни" msgid "R1 Key Holder" -msgstr "" +msgstr "R1 Key Holder" msgid "RFC3947 NAT-T mode" -msgstr "" +msgstr "RFC3947 NAT-T режим" msgid "RTS/CTS Threshold" msgstr "Порог RTS/CTS" msgid "RX" -msgstr "RX" +msgstr "Получение (RX)" msgid "RX Rate" -msgstr "Скорость приёма" +msgstr "Скорость получения" msgid "RaLink 802.11%s Wireless Controller" msgstr "Беспроводной 802.11%s контроллер RaLink" @@ -2613,7 +2721,7 @@ msgid "" "Configuration Protocol\">DHCP</abbr>-Server" msgstr "" "Читать <code>/etc/ethers</code> для настройки <abbr title=\"Протокол " -"динамической конфигурации узла\">DHCP</abbr>-сервера" +"динамической настройки узла\">DHCP</abbr>-сервера." msgid "" "Really delete this interface? The deletion cannot be undone!\\nYou might " @@ -2634,13 +2742,12 @@ msgstr "" msgid "Really reset all changes?" msgstr "Действительно сбросить все изменения?" -#, fuzzy msgid "" "Really shut down network?\\nYou might lose access to this device if you are " "connected via this interface." msgstr "" -"Действительно выключить сеть?\\nВы можете потерять доступ к этому " -"устройству, если вы подключены через этот интерфейс." +"Действительно отключить сеть? Вы можете потерять доступ к этому устройству, " +"если вы подключены через этот интерфейс." msgid "" "Really shutdown interface \"%s\" ?\\nYou might lose access to this device if " @@ -2668,7 +2775,7 @@ msgid "Realtime Wireless" msgstr "Беспроводная сеть в реальном времени" msgid "Reassociation Deadline" -msgstr "" +msgstr "Срок Реассоциации" msgid "Rebind protection" msgstr "Защита от DNS Rebinding" @@ -2680,7 +2787,8 @@ msgid "Rebooting..." msgstr "Перезагрузка..." msgid "Reboots the operating system of your device" -msgstr "Перезагрузить операционную систему вашего устройства" +msgstr "" +"Программная перезагрузка вашего устройства, т.е. выполнить команду 'reboot'." msgid "Receive" msgstr "Приём" @@ -2689,7 +2797,7 @@ msgid "Receiver Antenna" msgstr "Приёмная антенна" msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" +msgstr "Рекомендуемый. IP адреса интерфейса WireGuard." msgid "Reconnect this interface" msgstr "Переподключить этот интерфейс" @@ -2697,7 +2805,6 @@ msgstr "Переподключить этот интерфейс" msgid "Reconnecting interface" msgstr "Интерфейс переподключается" -# References to firewall chains msgid "References" msgstr "Ссылки" @@ -2705,7 +2812,7 @@ msgid "Relay" msgstr "Ретранслятор" msgid "Relay Bridge" -msgstr "Мост-ретранслятор" +msgstr "Мост-Ретранслятор" msgid "Relay between networks" msgstr "Ретранслятор между сетями" @@ -2717,56 +2824,64 @@ msgid "Remote IPv4 address" msgstr "Удалённый IPv4-адрес" msgid "Remote IPv4 address or FQDN" -msgstr "" +msgstr "Удалённый IPv4-адрес или FQDN" msgid "Remove" msgstr "Удалить" msgid "Repeat scan" -msgstr "Повторить сканирование" +msgstr "Повторить поиск" msgid "Replace entry" msgstr "Заменить запись" msgid "Replace wireless configuration" -msgstr "Заменить беспроводную конфигурацию" +msgstr "Заменить настройку беспроводного соединения" msgid "Request IPv6-address" -msgstr "" +msgstr "Запрос IPv6 адреса" msgid "Request IPv6-prefix of length" -msgstr "" +msgstr "Запрос IPv6 префикс длины" msgid "Require TLS" -msgstr "" +msgstr "Требовать TLS" msgid "Required" -msgstr "" +msgstr "Требовать" msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "Требуется для некоторых интернет-провайдеров" +msgstr "" +"Требуется для некоторых Интернет провайдеров, например глава с DOCSIS 3." msgid "Required. Base64-encoded private key for this interface." -msgstr "" +msgstr "Требовать Приватный ключ в кодировке Base64 для этого интерфейса." msgid "Required. Base64-encoded public key of peer." -msgstr "" +msgstr "Требовать Публичный ключ узла в кодировке Base64." msgid "" "Required. IP addresses and prefixes that this peer is allowed to use inside " "the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " "routes through the tunnel." msgstr "" +"Требовать IP-адреса и префиксы, которые разрешено использовать этому " +"одноранговому узлу внутри туннеля. Обычно туннельные IP-адреса однорангового " +"узла и сети одноранговых маршрутов через туннель." msgid "" "Requires the 'full' version of wpad/hostapd and support from the wifi driver " "<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" msgstr "" +"Требуется 'полная' версия wpad/hostapd и поддержка со стороны WiFi драйвера " +"в <br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" msgid "" "Requires upstream supports DNSSEC; verify unsigned domain responses really " "come from unsigned domains" msgstr "" +"Требуется поддержка внешней сетью DNSSEC; убедитесь, что ответы " +"неподписанного домена - действительно поступают от неподписанных доменов." msgid "Reset" msgstr "Сбросить" @@ -2798,26 +2913,35 @@ msgstr "Показать/скрыть пароль" msgid "Revert" msgstr "Вернуть" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "Корень" msgid "Root directory for files served via TFTP" -msgstr "Корневая директория для TFTP" +msgstr "Корневая директория для файлов сервера, вроде TFTP" msgid "Root preparation" -msgstr "" +msgstr "Подготовка корневой директории" msgid "Route Allowed IPs" -msgstr "" +msgstr "Маршрут разрешенный для IP адресов" msgid "Route type" -msgstr "" +msgstr "Тип маршрута" msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" +msgstr "Префикс маршрутизации IPv6 для интерфейсов внутренней сети" msgid "Router Advertisement-Service" -msgstr "" +msgstr "Доступные<br />режимы работы" msgid "Router Password" msgstr "Пароль маршрутизатора" @@ -2829,40 +2953,42 @@ msgid "" "Routes specify over which interface and gateway a certain host or network " "can be reached." msgstr "" -"Маршрутизация служит для определения через какой интерфейс и шлюз можно " -"достичть определённого хоста или сети." +"Маршрутизация служит для определения через, какой интерфейс и шлюз можно " +"достичь определенного хоста или сети." msgid "Run a filesystem check before mounting the device" -msgstr "Проверять файловую систему перед монтированием устройства" +msgstr "Проверять файловую систему перед монтированием раздела." msgid "Run filesystem check" -msgstr "Проверять файловую систему" +msgstr "Проверить" msgid "SHA256" -msgstr "" +msgstr "SHA256" msgid "" "SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " "use 6in4 instead" msgstr "" +"SIXXS поддерживает только TIC, для статических туннелей с использованием IP-" +"протокола 41 (RFC4213) используется вместо 6in4." msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" +msgstr "SIXXS-управление[/Туннель-ID]" msgid "SNR" -msgstr "" +msgstr "SNR" msgid "SSH Access" msgstr "Доступ по SSH" msgid "SSH server address" -msgstr "" +msgstr "Адрес сервера SSH" msgid "SSH server port" -msgstr "" +msgstr "Порт сервера SSH" msgid "SSH username" -msgstr "" +msgstr "SSH логин" msgid "SSH-Keys" msgstr "SSH-ключи" @@ -2876,30 +3002,27 @@ msgstr "Сохранить" msgid "Save & Apply" msgstr "Сохранить и применить" -msgid "Save & Apply" -msgstr "Сохранить и применить" - msgid "Scan" -msgstr "Сканировать" +msgstr "Поиск" msgid "Scheduled Tasks" msgstr "Запланированные задания" msgid "Section added" -msgstr "Секция добавлена" +msgstr "Строки добавлены" msgid "Section removed" -msgstr "Секция удалена" +msgstr "Строки удалены" msgid "See \"mount\" manpage for details" -msgstr "Для подробной информации обратитесь к справке по \"mount\" (man mount)" +msgstr "Для подробной информации обратитесь к справке по 'mount' (man mount)." msgid "" "Send LCP echo requests at the given interval in seconds, only effective in " "conjunction with failure threshold" msgstr "" "Отправлять эхо-пакеты LCP с указанным интервалом (секунды), эффективно " -"только в сочетании с порогом ошибок" +"только в сочетании с порогом ошибок." msgid "Separate Clients" msgstr "Разделять клиентов" @@ -2908,15 +3031,17 @@ msgid "Server Settings" msgstr "Настройки сервера" msgid "Server password" -msgstr "" +msgstr "Пароль доступа к серверу" msgid "" "Server password, enter the specific password of the tunnel when the username " "contains the tunnel ID" msgstr "" +"Пароль сервера. Введите пароль из тоннеля, когда имя пользователя содержит " +"ID туннеля." msgid "Server username" -msgstr "" +msgstr "Логин доступа к серверу" msgid "Service Name" msgstr "Имя службы" @@ -2931,22 +3056,22 @@ msgid "" "Set interface properties regardless of the link carrier (If set, carrier " "sense events do not invoke hotplug handlers)." msgstr "" +"Автоматически активировать соединение, при подключении в разъем кабеля." -#, fuzzy msgid "Set up Time Synchronization" -msgstr "Настроить синхронизацию времени" +msgstr "Настройка синхронизации времени" msgid "Setup DHCP Server" msgstr "Настроить сервер DHCP" msgid "Severely Errored Seconds (SES)" -msgstr "" +msgstr "Секунды с большим числом ошибок (SES)." msgid "Short GI" -msgstr "" +msgstr "Short GI" msgid "Show current backup file list" -msgstr "Показать текущий список файлов резервной копии" +msgstr "Показать текущий список<br />файлов резервной копии" msgid "Shutdown this interface" msgstr "Выключить этот интерфейс" @@ -2958,7 +3083,7 @@ msgid "Signal" msgstr "Сигнал" msgid "Signal Attenuation (SATN)" -msgstr "" +msgstr "Затухание сигнала (SATN)" msgid "Signal:" msgstr "Сигнал:" @@ -2967,6 +3092,9 @@ msgid "Size" msgstr "Размер" msgid "Size (.ipk)" +msgstr "Размер (.ipk)" + +msgid "Size of DNS query cache" msgstr "" msgid "Skip" @@ -2985,7 +3113,7 @@ msgid "Software" msgstr "Программное обеспечение" msgid "Software VLAN" -msgstr "" +msgstr "Программное обеспечение VLAN" msgid "Some fields are invalid, cannot save values!" msgstr "Некоторые значения полей недопустимы, невозможно сохранить информацию!" @@ -3002,7 +3130,7 @@ msgid "" "instructions." msgstr "" "К сожалению, автоматическое обновление не поддерживается, новая прошивка " -"должна быть установлена вручную. Обратитесь к вики для получения конкретных " +"должна быть установлена вручную. Обратитесь к wiki для получения конкретных " "инструкций для вашего устройства." msgid "Sort" @@ -3012,52 +3140,56 @@ msgid "Source" msgstr "Источник" msgid "Source routing" -msgstr "" - -msgid "Specifies the button state to handle" -msgstr "Состояние кнопки, которое необходимо обработать" +msgstr "маршрутизация от источника" msgid "Specifies the directory the device is attached to" -msgstr "Директория, к которой присоединено устройство" +msgstr "Папка, к которой монтируется раздел устройства." msgid "Specifies the listening port of this <em>Dropbear</em> instance" -msgstr "Порт данного процесса <em>Dropbear</em>" +msgstr "Порт данного процесса <em>Dropbear</em>." msgid "" "Specifies the maximum amount of failed ARP requests until hosts are presumed " "to be dead" msgstr "" "Максимальное количество неудачных запросов ARP, после которого узлы " -"считаются отключенными" +"считаются отключенными." msgid "" "Specifies the maximum amount of seconds after which hosts are presumed to be " "dead" msgstr "" -"Максимальное количество секунд, после которого узлы считаются отключенными" +"Максимальное количество секунд, после которого узлы считаются отключёнными." msgid "Specify a TOS (Type of Service)." -msgstr "" +msgstr "Укажите TOS (Тип обслуживания)." msgid "" "Specify a TTL (Time to Live) for the encapsulating packet other than the " "default (64)." msgstr "" +"Укажите значение TTL (Время Жизни) для инкапсуляции пакетов, по умолчанию " +"(64)." msgid "" "Specify an MTU (Maximum Transmission Unit) other than the default (1280 " "bytes)." msgstr "" +"Укажите MTU (Максимальный Объем Данных), отличный от стандартного (1280 " +"байт)." msgid "Specify the secret encryption key here." msgstr "Укажите закрытый ключ." msgid "Start" -msgstr "Запустить" +msgstr "Старт" msgid "Start priority" msgstr "Приоритет" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "Загрузка" @@ -3082,11 +3214,11 @@ msgid "" "configurations where only hosts with a corresponding lease are served." msgstr "" "Постоянная аренда используется для присвоения фиксированных IP-адресов и " -"имён DHCP-клиентам. Постоянная аренда также необходима для статических " +"имён DHCP-клиентам.<br />Постоянная аренда также необходима для статических " "интерфейсов, в которых обслуживаются только клиенты с присвоенными адресами." msgid "Status" -msgstr "Статус" +msgstr "Состояние" msgid "Stop" msgstr "Остановить" @@ -3098,16 +3230,16 @@ msgid "Submit" msgstr "Применить" msgid "Suppress logging" -msgstr "" +msgstr "Подавить логирование" msgid "Suppress logging of the routine operation of these protocols" -msgstr "" +msgstr "Подавить логирование стандартной работы этих протоколов." msgid "Swap" -msgstr "" +msgstr "Раздел подкачки (Swap)" msgid "Swap Entry" -msgstr "Раздел подкачки" +msgstr "Настройка config файла fstab (/etc/config/fstab)" msgid "Switch" msgstr "Коммутатор" @@ -3121,9 +3253,14 @@ msgstr "Коммутатор %q (%s)" msgid "" "Switch %q has an unknown topology - the VLAN settings might not be accurate." msgstr "" +"Коммутатор %q имеет неизвестную топологию-настройки VLAN не могут быть " +"точными." + +msgid "Switch Port Mask" +msgstr "Изменить маску порта" msgid "Switch VLAN" -msgstr "" +msgstr "Изменить VLAN" msgid "Switch protocol" msgstr "Изменить протокол" @@ -3153,27 +3290,26 @@ msgid "TFTP Settings" msgstr "Настройки TFTP" msgid "TFTP server root" -msgstr "Корень TFTP-сервера" +msgstr "TFTP сервер root" msgid "TX" -msgstr "TX" +msgstr "Передача (TX)" msgid "TX Rate" -msgstr "Скорость передачи" +msgstr "Cкорость передачи" msgid "Table" msgstr "Таблица" msgid "Target" -msgstr "Цель" +msgstr "Назначение" msgid "Target network" -msgstr "" +msgstr "Сеть назначения" msgid "Terminate" msgstr "Завершить" -#, fuzzy msgid "" "The <em>Device Configuration</em> section covers physical settings of the " "radio hardware such as channel, transmit power or antenna selection which " @@ -3181,12 +3317,12 @@ msgid "" "multi-SSID capable). Per network settings like encryption or operation mode " "are grouped in the <em>Interface Configuration</em>." msgstr "" -"Раздел <em>Конфигурация устройства</em> содержит физические настройки " -"беспроводного оборудования, такие как канал, мощность передатчика или выбор " -"антенны, которые являются общими для всех определённых беспроводных сетей " -"(если оборудование поддерживает несколько SSID). Настройки отдельных сетей, " -"такие как шифрование или режим работы, сгруппированы в разделе " -"<em>Конфигурация интерфейса</em>." +"Вкладка меню <em>'Настройка устройства'</em> содержит физические настройки " +"радиооборудования, такие как канал, мощность передачи или выбор антенны, " +"которые совместно используются всеми настроенными беспроводными сетями (если " +"радиооборудование поддерживает несколько SSID).<br />Параметры сети, такие " +"как шифрование или режим работы, смотрите на вкладке <em>'Настройка сети'</" +"em>." msgid "" "The <em>libiwinfo-lua</em> package is not installed. You must install this " @@ -3199,10 +3335,12 @@ msgid "" "The HE.net endpoint update configuration changed, you must now use the plain " "username instead of the user ID!" msgstr "" +"HE.net конфигурация обновления конечной точки изменена, теперь вы должны " +"использовать простое имя пользователя вместо ID пользователя!" msgid "" "The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" +msgstr "IPv4-адрес или полное доменное имя удаленного конца туннеля." msgid "" "The IPv6 prefix assigned to the provider, usually ends with <code>::</code>" @@ -3217,6 +3355,16 @@ msgstr "" "<code>_</code>" msgid "The configuration file could not be loaded due to the following error:" +msgstr "Не удалось загрузить config файл из-за следующей ошибки:" + +msgid "" +"The device could not be reached within %d seconds after applying the pending " +"changes, which caused the configuration to be rolled back for safety " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." msgstr "" msgid "" @@ -3231,37 +3379,33 @@ msgid "" "\">e.g.</abbr> <samp><abbr title=\"Third Extended Filesystem\">ext3</abbr></" "samp>)" msgstr "" -"Формат файловой системы (<abbr title=\"например\">напр.</abbr> <samp><abbr " -"title=\"Third Extended Filesystem\">ext3</abbr></samp>)" +"Файловая система (<abbr title=\"например\">напр.</abbr> <samp><abbr title=" +"\"Third Extended Filesystem\">ext3</abbr></samp>)." msgid "" "The flash image was uploaded. Below is the checksum and file size listed, " "compare them with the original file to ensure data integrity.<br /> Click " "\"Proceed\" below to start the flash procedure." msgstr "" -"Образ загружен. Пожалуйста, сравните размер файла и контрольную сумму, чтобы " -"удостовериться в целостности данных.<br /> Нажмите \"Продолжить\", чтобы " +"Образ загружен. Сравните размер файла и контрольную сумму, чтобы " +"удостовериться в целостности данных.<br /> Нажмите 'Продолжить', чтобы " "начать процедуру обновления прошивки." -msgid "The following changes have been committed" -msgstr "Данные изменения были применены" - msgid "The following changes have been reverted" -msgstr "Данные изменения были отвергнуты" +msgstr "Ваши настройки были отвергнуты." msgid "The following rules are currently active on this system." msgstr "На данном устройстве активны следующие правила." msgid "The given network name is not unique" -msgstr "Заданное имя сети не является уникальным" +msgstr "Заданное имя сети не является уникальным." -#, fuzzy msgid "" "The hardware is not multi-SSID capable and the existing configuration will " "be replaced if you proceed." msgstr "" -"Оборудование не поддерживает несколько SSID, и, если вы продолжите, " -"существующая конфигурация будет заменена." +"Аппаратное обеспечение не поддерживает Multi-SSID, и существующие настройки " +"будут изаменены, если вы продолжите." msgid "" "The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " @@ -3273,7 +3417,7 @@ msgid "The length of the IPv6 prefix in bits" msgstr "Длина префикса IPv6 в битах" msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" +msgstr "Локальный адрес IPv4, по которому создается туннель (необязательно)." msgid "" "The network ports on this device can be combined to several <abbr title=" @@ -3285,53 +3429,53 @@ msgid "" msgstr "" "Сетевые порты этого устройства могут быть объединены в несколько <abbr title=" "\"Virtual Local Area Network\">VLAN</abbr>ов, в которых компьютеры могут " -"связываться напрямую между собой. <abbr title=\"Virtual Local Area Network" -"\">VLAN</abbr>ы часто используются для разделения нескольких сетевых " -"сегментов. Обычно по умолчанию используется один восходящий порт для " -"подключения к высшей рангом сети, например к интернету или к другим портам " -"локальной сети." +"связываться напрямую между собой.<br /><abbr title=\"Виртуальные локальные " +"сети\">VLAN</abbr>ы часто используются для разделения нескольких сетевых " +"сегментов.<br />Обычно по умолчанию используется один порт для подключения к " +"внешней сети, например к Интернету и другие порты предназначенные для " +"внутренней - локальной сети." msgid "The selected protocol needs a device assigned" msgstr "Для выбранного протокола необходимо задать устройство" msgid "The submitted security token is invalid or already expired!" -msgstr "" +msgstr "Представленный маркер безопасности недействителен или уже истек!" msgid "" "The system is erasing the configuration partition now and will reboot itself " "when finished." -msgstr "" -"Идёт удаление раздела конфигурации с последующей перезагрузкой сиситемы." +msgstr "Идёт удаление настроек раздела с последующей перезагрузкой системы." -#, fuzzy msgid "" "The system is flashing now.<br /> DO NOT POWER OFF THE DEVICE!<br /> Wait a " "few minutes before you try to reconnect. It might be necessary to renew the " "address of your computer to reach the device again, depending on your " "settings." msgstr "" -"Система обновляется.<br /> НЕ ОТКЛЮЧАЙТЕ ПИТАНИЕ УСТРОЙСТВА!<br /> Подождите " -"несколько минут перед тем, как попытаетесь заново соединиться. В зависимости " -"от ваших настроек, возможно вам понадобится обновить адрес вашего " -"компьютера, чтобы снова получить доступ к устройству." +"Сейчас система перепрошивается.<br /> НЕ ОТКЛЮЧАЙТЕ ПИТАНИЕ УСТРОЙСТВА!<br /" +"> Подождите несколько минут, прежде чем попытаться соединится. Возможно, " +"потребуется обновить адрес компьютера, чтобы снова подключится к устройству, " +"в зависимости от настроек." msgid "" "The tunnel end-point is behind NAT, defaults to disabled and only applies to " "AYIYA" msgstr "" +"Конечная точка туннеля находится за NAT, по умолчанию отключена и " +"применяется только к AYIYA." msgid "" "The uploaded image file does not contain a supported format. Make sure that " "you choose the generic image format for your platform." msgstr "" -"Загруженный файл образа не поддерживается. Пожалуйста, проверьте, что вы " -"загрузили правильный образ для вашей платформы." +"Загруженный файл прошивки не поддерживается. Проверьте, что вы загрузили " +"подходящую прошивку для чипа вашего устройства." msgid "There are no active leases." msgstr "Нет активных арендованных адресов." -msgid "There are no pending changes to apply!" -msgstr "Нет изменений, которые можно применить!" +msgid "There are no changes to apply." +msgstr "" msgid "There are no pending changes to revert!" msgstr "Нет изменений, которые можно отменить!" @@ -3343,15 +3487,15 @@ msgid "" "There is no device assigned yet, please attach a network device in the " "\"Physical Settings\" tab" msgstr "" -"Устройство не назначено. Пожалуйста, назначьте сетевое устройство во вкладке " -"\"Настройки канала\"" +"Устройство не назначено. Назначьте сетевое устройство на странице 'Настройки " +"канала'." msgid "" "There is no password set on this router. Please configure a root password to " "protect the web interface and enable SSH." msgstr "" -"Пароль пользователя root не установлен. Пожалуйста, установите пароль, чтобы " -"защитить веб-интерфейс и включить SSH." +"Пароль пользователя root не установлен. Установите пароль, чтобы защитить " +"веб-интерфейс и включить SSH." msgid "This IPv4 address of the relay" msgstr "IPv4-адрес ретранслятора" @@ -3361,74 +3505,76 @@ msgid "" "'server=1.2.3.4' fordomain-specific or full upstream <abbr title=\"Domain " "Name System\">DNS</abbr> servers." msgstr "" +"Этот файл может содержать такие строки, как 'server=/domain/1.2.3.4' или " +"'server=1.2.3.4' fordomain-specific или полный список внешней сети <abbr " +"title=\"Domain Name System\">DNS</abbr> servers." msgid "" "This is a list of shell glob patterns for matching files and directories to " "include during sysupgrade. Modified files in /etc/config/ and certain other " "configurations are automatically preserved." msgstr "" -"Это список шаблонов для соответствия файлов и директорий для сохранения при " -"использовании sysupgrade. Изменённые файлы в /etc/config и некоторые другие " -"конфигурации автоматически сохраняются." +"Настройка данного config файла, позволит пользователю создать резервную " +"копию своих настроек.<br />Копируются config файлы из папки /etc/config и " +"некоторые другие.<br />При перепрошивке устройства sysupgrade-совместимым " +"образом, вы сможете воспользоваться резервной копией своих настроек." msgid "" "This is either the \"Update Key\" configured for the tunnel or the account " "password if no update key has been configured" msgstr "" +"Это либо \"Update Key\", настроенный для туннеля, либо пароль учетной " +"записи, если ключ обновления не был настроен." msgid "" "This is the content of /etc/rc.local. Insert your own commands here (in " "front of 'exit 0') to execute them at the end of the boot process." msgstr "" -"Это содержимое /etc/rc.local. Вы можете добавить свои команды (перед 'exit " -"0'), чтобы выполнить их в конце загрузки." +"Cодержимое config файла /etc/rc.local. Вы можете добавить свои команды " +"(перед 'exit 0'), чтобы выполнить их во время загрузки устройства." -# Maybe it usually ends with ::2? msgid "" "This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with <code>:2</code>" +"ends with <code>...:2/64</code>" msgstr "" "Это локальный адрес, назначенный туннельным брокером, обычно заканчивается " -"на <code>:2</code>" +"на <code>...:2/64</code>." msgid "" "This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</" "abbr> in the local network" msgstr "" -"Это единственный <abbr title=\"Протокол динамической конфигурации узла" -"\">DHCP</abbr>-сервер в локальной сети" +"Это единственный <abbr title=\"Протокол динамической настройки узла\">DHCP</" +"abbr>-сервер в локальной сети." msgid "This is the plain username for logging into the account" -msgstr "" +msgstr "Это просто имя пользователя, для входа в учетную запись." msgid "" "This is the prefix routed to you by the tunnel broker for use by clients" msgstr "" +"Это префикс, направлен вам брокером туннелей для использования клиентами." msgid "This is the system crontab in which scheduled tasks can be defined." msgstr "" -"Это таблица cron (crontab), в которой вы можете определить запланированные " -"задания." +"На странице содержимое /etc/crontabs/root - файла (задания crontab), здесь " +"вы можете запланировать ваши задания. " msgid "" "This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "Это адрес ближайшей точки присутствия туннельного брокера" +msgstr "Это адрес ближайшей точки присутствия туннельного брокера." msgid "" "This list gives an overview over currently running system processes and " "their status." -msgstr "Данный список содержит работающие процессы и их статус." - -msgid "This page allows the configuration of custom button actions" -msgstr "Данная страница позволяет настроить обработку кнопок" +msgstr "Страница содержит работающие процессы и их состояние." msgid "This page gives an overview over currently active network connections." msgstr "" -"Данная страница содержит обзор всех активных на данный момент сетевых " -"соединений." +"Страница содержит список всех активных на данный момент сетевых соединений." msgid "This section contains no values yet" -msgstr "Эта секция пока не содержит значений" +msgstr "Здесь не содержатся необходимые значения" msgid "Time Synchronization" msgstr "Синхронизация времени" @@ -3443,11 +3589,11 @@ msgid "" "To restore configuration files, you can upload a previously generated backup " "archive here." msgstr "" -"Чтобы восстановить файлы конфигурации, вы можете загрузить ранее созданный " -"архив здесь." +"Чтобы восстановить config файлы, ваши настройки прошивки устройства, вы " +"можете загрузить ранее созданный вами архив здесь." msgid "Tone" -msgstr "" +msgstr "Тон" msgid "Total Available" msgstr "Всего доступно" @@ -3474,10 +3620,10 @@ msgid "Transmitter Antenna" msgstr "Передающая антенна" msgid "Trigger" -msgstr "Триггер" +msgstr "Назначить" msgid "Trigger Mode" -msgstr "Режим срабатывания" +msgstr "Режим работы" msgid "Tunnel ID" msgstr "Идентификатор туннеля" @@ -3486,16 +3632,16 @@ msgid "Tunnel Interface" msgstr "Интерфейс туннеля" msgid "Tunnel Link" -msgstr "" +msgstr "Ссылка на туннель" msgid "Tunnel broker protocol" -msgstr "" +msgstr "Протокол посредника туннеля" msgid "Tunnel setup server" -msgstr "" +msgstr "Сервер настройки туннеля" msgid "Tunnel type" -msgstr "" +msgstr "Тип туннеля" msgid "Tx-Power" msgstr "Мощность передатчика" @@ -3513,10 +3659,10 @@ msgid "UMTS/GPRS/EV-DO" msgstr "UMTS/GPRS/EV-DO" msgid "USB Device" -msgstr "USB-устройство" +msgstr "USB устройство" msgid "USB Ports" -msgstr "" +msgstr "USB порты" msgid "UUID" msgstr "UUID" @@ -3525,7 +3671,7 @@ msgid "Unable to dispatch" msgstr "Невозможно обработать запрос для" msgid "Unavailable Seconds (UAS)" -msgstr "" +msgstr "Секунды неготовности (UAS)" msgid "Unknown" msgstr "Неизвестно" @@ -3537,7 +3683,7 @@ msgid "Unmanaged" msgstr "Неуправляемый" msgid "Unmount" -msgstr "" +msgstr "Отмонтировать" msgid "Unsaved Changes" msgstr "Непринятые изменения" @@ -3553,12 +3699,13 @@ msgid "" "Check \"Keep settings\" to retain the current configuration (requires a " "compatible firmware image)." msgstr "" -"Загрузите sysupgrade-совместимый образ, чтобы заменить текущую прошивку. " -"Установите флажок \"Сохранить настройки\", чтобы сохранить текущую " -"конфигурацию (требуется совместимый образ прошивки)." +"Загрузите sysupgrade-совместимый образ, чтобы заменить текущую прошивку " +"устройства. Поставьте галочку 'Сохранить настройки', чтобы сохранить текущие " +"config файлы - ваши настройки устройства (требуется совместимый образ " +"прошивки)." msgid "Upload archive..." -msgstr "Загрузить архив..." +msgstr "Загрузка архива..." msgid "Uploaded File" msgstr "Загруженный файл" @@ -3567,13 +3714,13 @@ msgid "Uptime" msgstr "Время работы" msgid "Use <code>/etc/ethers</code>" -msgstr "Использовать <code>/etc/ethers</code>" +msgstr "Использовать<br /><code>/etc/ethers</code>" msgid "Use DHCP gateway" msgstr "Использовать шлюз DHCP" msgid "Use DNS servers advertised by peer" -msgstr "Использовать объявляемые узлом DNS-серверы" +msgstr "Использовать объявляемые узлом DNS сервера" msgid "Use ISO/IEC 3166 alpha2 country codes." msgstr "Использовать коды стран ISO/IEC 3166 alpha2." @@ -3585,40 +3732,42 @@ msgid "Use TTL on tunnel interface" msgstr "Использовать TTL на интерфейсе туннеля" msgid "Use as external overlay (/overlay)" -msgstr "" +msgstr "Использовать как внешний overlay (/overlay)" msgid "Use as root filesystem (/)" -msgstr "" +msgstr "Использовать как корень (/)" msgid "Use broadcast flag" msgstr "Использовать широковещательный флаг" msgid "Use builtin IPv6-management" -msgstr "" +msgstr "Использовать встроенный<br />IPv6-менеджмент" msgid "Use custom DNS servers" -msgstr "Использовать собственные DNS-серверы" +msgstr "Использовать собственные DNS сервера" msgid "Use default gateway" msgstr "Использовать шлюз по умолчанию" msgid "Use gateway metric" -msgstr "Использовать метрику шлюза" +msgstr "Использовать<br />метрику шлюза" msgid "Use routing table" msgstr "Использовать таблицу маршрутизации" msgid "" "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</" -"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed " -"address to use and the <em>Hostname</em> is assigned as symbolic name to the " -"requesting host. The optional <em>Lease time</em> can be used to set non-" +"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed " +"address to use, and the <em>Hostname</em> is assigned as a symbolic name to " +"the requesting host. The optional <em>Lease time</em> can be used to set non-" "standard host-specific lease time, e.g. 12h, 3d or infinite." msgstr "" -"Нажмите кнопку <em>Добавить</em>, чтобы добавить новую запись аренды. " -"<em>MAC-адрес</em> идентифицирует хост, <em>IPv4-адрес</em> указывает " -"фиксированный адрес, а <em>Имя хоста</em> присваивается в качестве " -"символьного имени для запрашивающего хоста." +"Нажмите кнопку <em>'Добавить'</em>, чтобы добавить новую запись аренды. " +"<em>'MAC-Адрес'</em> идентифицирует хост, <em>'IPv4-Адрес'</em> указывает " +"фиксированный адрес, а <em>'Имя хоста'</em> присваивается в качестве " +"символьного имени для запрашивающего хоста.<br />Необязательно <em>'Время " +"аренды адреса'</em> может быть использовано для того, чтобы установить " +"индивидуальное время аренды, например 12h, 3d или бесконечное." msgid "Used" msgstr "Использовано" @@ -3630,12 +3779,14 @@ msgid "" "Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " "needed with normal WPA(2)-PSK." msgstr "" +"Используется для двух различных целей: RADIUS NAS ID и 802.11r R0KH-ID. Не " +"используется с обычным WPA(2)-PSK." msgid "User certificate (PEM encoded)" -msgstr "" +msgstr "Сертификат пользователя (PEM encoded)" msgid "User key (PEM encoded)" -msgstr "" +msgstr "Ключ пользователя (PEM encoded)" msgid "Username" msgstr "Имя пользователя" @@ -3644,7 +3795,7 @@ msgid "VC-Mux" msgstr "VC-Mux" msgid "VDSL" -msgstr "" +msgstr "VDSL" msgid "VLANs on %q" msgstr "VLANы на %q" @@ -3653,35 +3804,35 @@ msgid "VLANs on %q (%s)" msgstr "VLANы на %q (%s)" msgid "VPN Local address" -msgstr "" +msgstr "Локальный адрес VPN" msgid "VPN Local port" -msgstr "" +msgstr "Локальный порт VPN" msgid "VPN Server" msgstr "Сервер VPN" msgid "VPN Server port" -msgstr "" +msgstr "Порт VPN сервера" msgid "VPN Server's certificate SHA1 hash" -msgstr "" +msgstr "Сертификат SHA1 hash VPN сервера" msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" +msgstr "VPNC (CISCO 3000 (and others) VPN)" msgid "Vendor" -msgstr "" +msgstr "Производитель (Vendor)" msgid "Vendor Class to send when requesting DHCP" msgstr "" "Класс производителя (Vendor class), который отправлять при DHCP-запросах" msgid "Verbose" -msgstr "" +msgstr "Verbose" msgid "Verbose logging by aiccu daemon" -msgstr "" +msgstr "Verbose ведение журнала демоном aiccu" msgid "Verify" msgstr "Проверить" @@ -3717,6 +3868,8 @@ msgstr "" msgid "" "Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" msgstr "" +"Задать время ожидания синхронизации NTP, установка значения - '0', отключает " +"ожидание (необязательно)." msgid "Waiting for changes to be applied..." msgstr "Ожидание применения изменений..." @@ -3724,31 +3877,36 @@ msgstr "Ожидание применения изменений..." msgid "Waiting for command to complete..." msgstr "Ожидание завершения выполнения команды..." -msgid "Waiting for device..." +msgid "Waiting for configuration to get applied… %ds" msgstr "" +msgid "Waiting for device..." +msgstr "Ожидание подключения устройства..." + msgid "Warning" msgstr "Внимание" msgid "Warning: There are unsaved changes that will get lost on reboot!" msgstr "" +"Внимание: Есть не сохраненные изменения, которые будут потеряны при " +"перезагрузке!" msgid "" "When using a PSK, the PMK can be generated locally without inter AP " "communications" -msgstr "" +msgstr "При использовании PSK, PMK может быть создан локально, без AP в связи." msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" +msgstr "Создание маршрута по умолчанию IPv6 через туннель." msgid "Whether to route only packets from delegated prefixes" -msgstr "" +msgstr "Маршрутизация только пакетов из делегированных префиксов." msgid "Width" -msgstr "" +msgstr "Ширина" msgid "WireGuard VPN" -msgstr "" +msgstr "WireGuard VPN" msgid "Wireless" msgstr "Wi-Fi" @@ -3760,7 +3918,7 @@ msgid "Wireless Network" msgstr "Беспроводная сеть" msgid "Wireless Overview" -msgstr "Обзор беспроводных сетей" +msgstr "Список беспроводных сетей" msgid "Wireless Security" msgstr "Безопасность беспроводной сети" @@ -3775,7 +3933,7 @@ msgid "Wireless network is disabled" msgstr "Беспроводная сеть отключена" msgid "Wireless network is enabled" -msgstr "Беспроводная сеть включена" +msgstr "Беспроводная<br />сеть включена" msgid "Wireless restarted" msgstr "Беспроводная сеть перезапущена" @@ -3784,10 +3942,10 @@ msgid "Wireless shut down" msgstr "Выключение беспроводной сети" msgid "Write received DNS requests to syslog" -msgstr "Записывать полученные DNS-запросы в системный журнал" +msgstr "Записывать полученные DNS-запросы в системный журнал." msgid "Write system log to file" -msgstr "" +msgstr "Записывать системные события в файл" msgid "" "You can enable or disable installed init scripts here. Changes will applied " @@ -3797,7 +3955,7 @@ msgstr "" "Здесь вы можете включить или выключить установленные скрипты инициализации. " "Изменения вступят в силу после перезагрузки устройства.<br /" "><strong>Внимание: если вы выключите один из основных скриптов инициализации " -"(например \"network\"), ваше устройство может оказаться недоступным!</strong>" +"(например 'network'), ваше устройство может оказаться недоступным!</strong>" msgid "" "You must enable JavaScript in your browser or LuCI will not work properly." @@ -3810,6 +3968,9 @@ msgid "" "upgrade it to at least version 7 or use another browser like Firefox, Opera " "or Safari." msgstr "" +"Ваш Internet Explorer слишком стар, чтобы отобразить эту страницу правильно. " +"Обновите его до версии 7 или используйте другой браузер, например Firefox, " +"Opera или Safari." msgid "any" msgstr "любой" @@ -3827,30 +3988,29 @@ msgid "create:" msgstr "создать:" msgid "creates a bridge over specified interface(s)" -msgstr "создаёт мост для выбранных сетевых интерфейсов" +msgstr "Создаёт мост для выбранных сетевых интерфейсов." msgid "dB" -msgstr "дБ" +msgstr "dB" msgid "dBm" -msgstr "дБм" +msgstr "dBm" msgid "disable" -msgstr "выключено" +msgstr "отключить" msgid "disabled" -msgstr "" +msgstr "отключено" msgid "expired" msgstr "истекло" -# убил бы msgid "" "file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</" "abbr>-leases will be stored" msgstr "" -"файл, где хранятся арендованные <abbr title=\"Протокол динамической " -"конфигурации узла\">DHCP</abbr>-адреса" +"Файл, где хранятся арендованные <abbr title=\"Протокол динамической " +"настройки узла\">DHCP</abbr>-адреса." msgid "forward" msgstr "перенаправить" @@ -3868,7 +4028,7 @@ msgid "hidden" msgstr "скрытый" msgid "hybrid mode" -msgstr "" +msgstr "гибридный режим" msgid "if target is a network" msgstr "если сеть" @@ -3877,22 +4037,22 @@ msgid "input" msgstr "ввод" msgid "kB" -msgstr "кБ" +msgstr "kB" msgid "kB/s" -msgstr "кБ/с" +msgstr "kB/s" msgid "kbit/s" -msgstr "кбит/с" +msgstr "kbit/s" msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file" -msgstr "локальный <abbr title=\"Служба доменных имён\">DNS</abbr>-файл" +msgstr "Локальный <abbr title=\"Служба доменных имён\">DNS</abbr>-файл." msgid "minimum 1280, maximum 1480" -msgstr "" +msgstr "минимум 1280, максимум 1480" msgid "minutes" -msgstr "" +msgstr "минут(ы)" msgid "no" msgstr "нет" @@ -3904,7 +4064,7 @@ msgid "none" msgstr "ничего" msgid "not present" -msgstr "" +msgstr "не существует" msgid "off" msgstr "выключено" @@ -3913,34 +4073,37 @@ msgid "on" msgstr "включено" msgid "open" -msgstr "открытая" +msgstr "открыть" msgid "overlay" -msgstr "" +msgstr "overlay" + +msgid "random" +msgstr "случайно" msgid "relay mode" -msgstr "" +msgstr "режим передачи" msgid "routed" msgstr "маршрутизируемый" msgid "server mode" -msgstr "" +msgstr "режим сервера" msgid "stateful-only" -msgstr "" +msgstr "stateful-only" msgid "stateless" -msgstr "" +msgstr "stateless" msgid "stateless + stateful" -msgstr "" +msgstr "stateless + stateful" msgid "tagged" msgstr "с тегом" msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" +msgstr "единицы измерения времени (TUs / 1.024 ms) [1000-65535]" msgid "unknown" msgstr "неизвестный" @@ -3963,76 +4126,20 @@ msgstr "да" msgid "« Back" msgstr "« Назад" -#~ msgid "Leasetime" -#~ msgstr "Время аренды" - -#, fuzzy -#~ msgid "automatic" -#~ msgstr "статический" - -#~ msgid "AR Support" -#~ msgstr "Поддержка AR" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Беспроводной 802.11%s контроллер Atheros" - -#~ msgid "Background Scan" -#~ msgstr "Фоновое сканирование" - -#~ msgid "Compression" -#~ msgstr "Сжатие" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "Отключить таймер HW-Beacon" - -#~ msgid "Do not send probe responses" -#~ msgstr "Не посылать тестовые ответы" - -#~ msgid "Fast Frames" -#~ msgstr "Быстрые кадры" - -#~ msgid "Maximum Rate" -#~ msgstr "Максимальная скорость" - -#~ msgid "Minimum Rate" -#~ msgstr "Минимальная скорость" - -#~ msgid "Multicast Rate" -#~ msgstr "Скорость групповой передачи" - -#~ msgid "Outdoor Channels" -#~ msgstr "Внешние каналы" - -#~ msgid "Regulatory Domain" -#~ msgstr "Нормативная зона" - -#~ msgid "Separate WDS" -#~ msgstr "Отдельный WDS" - -#~ msgid "Static WDS" -#~ msgstr "Статический WDS" - -#~ msgid "Turbo Mode" -#~ msgstr "Турбо-режим" - -#~ msgid "XR Support" -#~ msgstr "Поддержка XR" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "" -#~ "Если вы не выберите эту опцию, то будет создана дополнительная сеть." +#~ msgid "Apply" +#~ msgstr "Принять" -#~ msgid "Join Network: Settings" -#~ msgstr "Подключение к сети: настройки" +#~ msgid "Applying changes" +#~ msgstr "Применение изменений" -#~ msgid "CPU" -#~ msgstr "ЦП" +#~ msgid "Configuration applied." +#~ msgstr "Изменение настроек config файлов." -#~ msgid "Port %d" -#~ msgstr "Порт %d" +#~ msgid "Save & Apply" +#~ msgstr "Сохранить и применить" -#~ msgid "Port %d is untagged in multiple VLANs!" -#~ msgstr "Порт %d нетегирован в нескольких VLANах!" +#~ msgid "The following changes have been committed" +#~ msgstr "Ваши настройки были применены." -#~ msgid "VLAN Interface" -#~ msgstr "Интерфейс VLAN" +#~ msgid "There are no pending changes to apply!" +#~ msgstr "Нет изменений, которые можно применить!" diff --git a/modules/luci-base/po/sk/base.po b/modules/luci-base/po/sk/base.po index 82fd38949b..7f3d249e15 100644 --- a/modules/luci-base/po/sk/base.po +++ b/modules/luci-base/po/sk/base.po @@ -204,9 +204,6 @@ msgstr "" msgid "Access Point" msgstr "" -msgid "Action" -msgstr "" - msgid "Actions" msgstr "" @@ -278,6 +275,9 @@ msgstr "" msgid "Allow all except listed" msgstr "" +msgid "Allow legacy 802.11b rates" +msgstr "" + msgid "Allow listed only" msgstr "" @@ -383,10 +383,10 @@ msgstr "" msgid "Any zone" msgstr "" -msgid "Apply" +msgid "Apply request failed with status <code>%h</code>" msgstr "" -msgid "Applying changes" +msgid "Apply unchecked" msgstr "" msgid "" @@ -543,9 +543,6 @@ msgid "" "preserved in any sysupgrade." msgstr "" -msgid "Buttons" -msgstr "" - msgid "CA certificate; if empty it will be saved after the first connection." msgstr "" @@ -567,16 +564,24 @@ msgstr "" msgid "Changes applied." msgstr "" +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "" msgid "Channel" msgstr "" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "" -msgid "Check fileystems before mount" +msgid "Check filesystems before mount" msgstr "" msgid "Check this option to delete the existing networks from this radio." @@ -642,10 +647,13 @@ msgstr "" msgid "Configuration" msgstr "" -msgid "Configuration applied." +msgid "Configuration files will be kept." msgstr "" -msgid "Configuration files will be kept." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" msgstr "" msgid "Confirmation" @@ -666,6 +674,12 @@ msgstr "" msgid "Connections" msgstr "" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "" @@ -708,6 +722,11 @@ msgid "Custom feeds" msgstr "" msgid "" +"Custom files (certificates, scripts) may remain on the system. To prevent " +"this, perform a factory-reset first." +msgstr "" + +msgid "" "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode" "\">LED</abbr>s if possible." msgstr "" @@ -829,6 +848,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "" @@ -861,6 +883,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "" @@ -963,6 +988,11 @@ msgstr "" msgid "Enable" msgstr "" +msgid "" +"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> " +"snooping" +msgstr "" + msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>" msgstr "" @@ -1020,6 +1050,9 @@ msgstr "" msgid "Enabled" msgstr "" +msgid "Enables IGMP snooping on this bridge" +msgstr "" + msgid "" "Enables fast roaming among access points that belong to the same Mobility " "Domain" @@ -1098,6 +1131,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "" @@ -1199,6 +1235,9 @@ msgstr "" msgid "Forward broadcast traffic" msgstr "" +msgid "Forward mesh peer traffic" +msgstr "" + msgid "Forwarding mode" msgstr "" @@ -1282,9 +1321,6 @@ msgstr "" msgid "HT mode (802.11n)" msgstr "" -msgid "Handler" -msgstr "" - msgid "Hang Up" msgstr "" @@ -1859,9 +1895,6 @@ msgstr "" msgid "Maximum amount of seconds to wait for the modem to become ready" msgstr "" -msgid "Maximum hold time" -msgstr "" - msgid "" "Maximum length of the name is 15 characters including the automatic protocol/" "bridge prefix (br-, 6in4-, pppoe- etc.)" @@ -1879,10 +1912,10 @@ msgstr "" msgid "Memory usage (%)" msgstr "" -msgid "Metric" +msgid "Mesh Id" msgstr "" -msgid "Minimum hold time" +msgid "Metric" msgstr "" msgid "Mirror monitor port" @@ -2088,6 +2121,9 @@ msgstr "" msgid "Nslookup" msgstr "" +msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" +msgstr "" + msgid "OK" msgstr "" @@ -2100,6 +2136,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "" @@ -2321,9 +2360,6 @@ msgstr "" msgid "Path to Private Key" msgstr "" -msgid "Path to executable which handles the button event" -msgstr "" - msgid "Path to inner CA-Certificate" msgstr "" @@ -2673,6 +2709,15 @@ msgstr "" msgid "Revert" msgstr "" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "" @@ -2749,9 +2794,6 @@ msgstr "" msgid "Save & Apply" msgstr "" -msgid "Save & Apply" -msgstr "" - msgid "Scan" msgstr "" @@ -2839,6 +2881,9 @@ msgstr "" msgid "Size (.ipk)" msgstr "" +msgid "Size of DNS query cache" +msgstr "" + msgid "Skip" msgstr "" @@ -2881,9 +2926,6 @@ msgstr "" msgid "Source routing" msgstr "" -msgid "Specifies the button state to handle" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "" @@ -2922,6 +2964,9 @@ msgstr "" msgid "Start priority" msgstr "" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "" @@ -2983,6 +3028,9 @@ msgid "" "Switch %q has an unknown topology - the VLAN settings might not be accurate." msgstr "" +msgid "Switch Port Mask" +msgstr "" + msgid "Switch VLAN" msgstr "" @@ -3069,6 +3117,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" msgid "" +"The device could not be reached within %d seconds after applying the pending " +"changes, which caused the configuration to be rolled back for safety " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3085,9 +3143,6 @@ msgid "" "\"Proceed\" below to start the flash procedure." msgstr "" -msgid "The following changes have been committed" -msgstr "" - msgid "The following changes have been reverted" msgstr "" @@ -3153,7 +3208,7 @@ msgstr "" msgid "There are no active leases." msgstr "" -msgid "There are no pending changes to apply!" +msgid "There are no changes to apply." msgstr "" msgid "There are no pending changes to revert!" @@ -3199,7 +3254,7 @@ msgstr "" msgid "" "This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with <code>:2</code>" +"ends with <code>...:2/64</code>" msgstr "" msgid "" @@ -3226,9 +3281,6 @@ msgid "" "their status." msgstr "" -msgid "This page allows the configuration of custom button actions" -msgstr "" - msgid "This page gives an overview over currently active network connections." msgstr "" @@ -3410,9 +3462,9 @@ msgstr "" msgid "" "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</" -"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed " -"address to use and the <em>Hostname</em> is assigned as symbolic name to the " -"requesting host. The optional <em>Lease time</em> can be used to set non-" +"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed " +"address to use, and the <em>Hostname</em> is assigned as a symbolic name to " +"the requesting host. The optional <em>Lease time</em> can be used to set non-" "standard host-specific lease time, e.g. 12h, 3d or infinite." msgstr "" @@ -3517,6 +3569,9 @@ msgstr "" msgid "Waiting for command to complete..." msgstr "" +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3702,6 +3757,9 @@ msgstr "" msgid "overlay" msgstr "" +msgid "random" +msgstr "" + msgid "relay mode" msgstr "" diff --git a/modules/luci-base/po/sv/base.po b/modules/luci-base/po/sv/base.po index 3360ccb230..770fca2e53 100644 --- a/modules/luci-base/po/sv/base.po +++ b/modules/luci-base/po/sv/base.po @@ -212,9 +212,6 @@ msgstr "" msgid "Access Point" msgstr "Accesspunkt" -msgid "Action" -msgstr "Åtgärd" - msgid "Actions" msgstr "Åtgärder" @@ -287,6 +284,9 @@ msgstr "Tillåt <abbr title=\"Secure Shell\">SSH</abbr> lösenordsautentisering" msgid "Allow all except listed" msgstr "Tillåt alla utom listade" +msgid "Allow legacy 802.11b rates" +msgstr "" + msgid "Allow listed only" msgstr "Tillåt enbart listade" @@ -394,11 +394,11 @@ msgstr "Konfiguration av antenn" msgid "Any zone" msgstr "Någon zon" -msgid "Apply" -msgstr "Verkställ" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "Verkställer ändringar" +msgid "Apply unchecked" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -554,9 +554,6 @@ msgid "" "preserved in any sysupgrade." msgstr "" -msgid "Buttons" -msgstr "Knappar" - msgid "CA certificate; if empty it will be saved after the first connection." msgstr "" "CA-certifikat; om tom så kommer den att sparas efter första anslutningen." @@ -579,16 +576,24 @@ msgstr "Ändringar" msgid "Changes applied." msgstr "Tillämpade ändringar" +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "Ändrar administratörens lösenord för att få tillgång till enheten" msgid "Channel" msgstr "Kanal" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "Kontrollera" -msgid "Check fileystems before mount" +msgid "Check filesystems before mount" msgstr "Kontrollera filsystemen innan de monteras" msgid "Check this option to delete the existing networks from this radio." @@ -656,12 +661,15 @@ msgstr "" msgid "Configuration" msgstr "Konfiguration" -msgid "Configuration applied." -msgstr "Konfigurationen tillämpades" - msgid "Configuration files will be kept." msgstr "Konfigurationsfiler kommer att behållas." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "Bekräftelse" @@ -680,6 +688,12 @@ msgstr "" msgid "Connections" msgstr "Anslutningar" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "Land" @@ -722,6 +736,11 @@ msgid "Custom feeds" msgstr "Anpassade flöden" msgid "" +"Custom files (certificates, scripts) may remain on the system. To prevent " +"this, perform a factory-reset first." +msgstr "" + +msgid "" "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode" "\">LED</abbr>s if possible." msgstr "" @@ -843,6 +862,9 @@ msgstr "Enheten startar om..." msgid "Device unreachable" msgstr "Enheten kan inte nås" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "" @@ -877,6 +899,9 @@ msgstr "Inaktiverad (standard)" msgid "Discard upstream RFC1918 responses" msgstr "" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "" @@ -983,6 +1008,11 @@ msgstr "Nödsituation" msgid "Enable" msgstr "Aktivera" +msgid "" +"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> " +"snooping" +msgstr "" + msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>" msgstr "Aktivera <abbr title=\"Spanning Tree Protocol\">STP</abbr>" @@ -1040,6 +1070,9 @@ msgstr "Aktivera/Inaktivera" msgid "Enabled" msgstr "Aktiverad" +msgid "Enables IGMP snooping on this bridge" +msgstr "" + msgid "" "Enables fast roaming among access points that belong to the same Mobility " "Domain" @@ -1118,6 +1151,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "Fil" @@ -1219,6 +1255,9 @@ msgstr "" msgid "Forward broadcast traffic" msgstr "" +msgid "Forward mesh peer traffic" +msgstr "" + msgid "Forwarding mode" msgstr "Vidarebefordringsläge" @@ -1302,9 +1341,6 @@ msgstr "HE.net-användarnamn" msgid "HT mode (802.11n)" msgstr "HT-läge (802.11n)" -msgid "Handler" -msgstr "" - msgid "Hang Up" msgstr "Lägg på" @@ -1880,9 +1916,6 @@ msgstr "" msgid "Maximum amount of seconds to wait for the modem to become ready" msgstr "" -msgid "Maximum hold time" -msgstr "" - msgid "" "Maximum length of the name is 15 characters including the automatic protocol/" "bridge prefix (br-, 6in4-, pppoe- etc.)" @@ -1900,12 +1933,12 @@ msgstr "Minne" msgid "Memory usage (%)" msgstr "Minnesanvändning (%)" +msgid "Mesh Id" +msgstr "" + msgid "Metric" msgstr "Metrisk" -msgid "Minimum hold time" -msgstr "" - msgid "Mirror monitor port" msgstr "" @@ -2109,6 +2142,9 @@ msgstr "Avisering" msgid "Nslookup" msgstr "Nslookup" +msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" +msgstr "" + msgid "OK" msgstr "OK" @@ -2121,6 +2157,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "" @@ -2342,9 +2381,6 @@ msgstr "Genväg till klient-certifikat" msgid "Path to Private Key" msgstr "Genväg till privat nyckel" -msgid "Path to executable which handles the button event" -msgstr "" - msgid "Path to inner CA-Certificate" msgstr "Genväg till det inre CA-certifikatet" @@ -2696,6 +2732,15 @@ msgstr "Visa/göm lösenord" msgid "Revert" msgstr "Återgå" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "Root" @@ -2772,9 +2817,6 @@ msgstr "Spara" msgid "Save & Apply" msgstr "Spara och Verkställ" -msgid "Save & Apply" -msgstr "Spara & Verkställ" - msgid "Scan" msgstr "Skanna" @@ -2862,6 +2904,9 @@ msgstr "Storlek" msgid "Size (.ipk)" msgstr "Storlek (.ipk)" +msgid "Size of DNS query cache" +msgstr "" + msgid "Skip" msgstr "Hoppa över" @@ -2904,9 +2949,6 @@ msgstr "Källa" msgid "Source routing" msgstr "" -msgid "Specifies the button state to handle" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "" @@ -2945,6 +2987,9 @@ msgstr "" msgid "Start priority" msgstr "" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "" @@ -3006,6 +3051,9 @@ msgid "" "Switch %q has an unknown topology - the VLAN settings might not be accurate." msgstr "" +msgid "Switch Port Mask" +msgstr "" + msgid "Switch VLAN" msgstr "Byt VLAN" @@ -3092,6 +3140,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" msgid "" +"The device could not be reached within %d seconds after applying the pending " +"changes, which caused the configuration to be rolled back for safety " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3108,9 +3166,6 @@ msgid "" "\"Proceed\" below to start the flash procedure." msgstr "" -msgid "The following changes have been committed" -msgstr "Följande ändringar har skickats in" - msgid "The following changes have been reverted" msgstr "" @@ -3176,8 +3231,8 @@ msgstr "" msgid "There are no active leases." msgstr "Det finns inga aktiva kontrakt." -msgid "There are no pending changes to apply!" -msgstr "Det finns inga pendlande ändringar att verkställa!" +msgid "There are no changes to apply." +msgstr "" msgid "There are no pending changes to revert!" msgstr "Det finns inga pendlande ändringar att återkalla" @@ -3224,7 +3279,7 @@ msgstr "" msgid "" "This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with <code>:2</code>" +"ends with <code>...:2/64</code>" msgstr "" msgid "" @@ -3251,9 +3306,6 @@ msgid "" "their status." msgstr "" -msgid "This page allows the configuration of custom button actions" -msgstr "" - msgid "This page gives an overview over currently active network connections." msgstr "" @@ -3437,9 +3489,9 @@ msgstr "" msgid "" "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</" -"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed " -"address to use and the <em>Hostname</em> is assigned as symbolic name to the " -"requesting host. The optional <em>Lease time</em> can be used to set non-" +"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed " +"address to use, and the <em>Hostname</em> is assigned as a symbolic name to " +"the requesting host. The optional <em>Lease time</em> can be used to set non-" "standard host-specific lease time, e.g. 12h, 3d or infinite." msgstr "" @@ -3544,6 +3596,9 @@ msgstr "Väntar på att ändringarna ska tillämpas..." msgid "Waiting for command to complete..." msgstr "Väntar på att kommandot ska avsluta..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "Väntar på enheten..." @@ -3735,6 +3790,9 @@ msgstr "öppen" msgid "overlay" msgstr "" +msgid "random" +msgstr "" + msgid "relay mode" msgstr "relä-läge" @@ -3779,3 +3837,27 @@ msgstr "ja" msgid "« Back" msgstr "« Bakåt" + +#~ msgid "Apply" +#~ msgstr "Verkställ" + +#~ msgid "Applying changes" +#~ msgstr "Verkställer ändringar" + +#~ msgid "Configuration applied." +#~ msgstr "Konfigurationen tillämpades" + +#~ msgid "Save & Apply" +#~ msgstr "Spara & Verkställ" + +#~ msgid "The following changes have been committed" +#~ msgstr "Följande ändringar har skickats in" + +#~ msgid "There are no pending changes to apply!" +#~ msgstr "Det finns inga pendlande ändringar att verkställa!" + +#~ msgid "Action" +#~ msgstr "Åtgärd" + +#~ msgid "Buttons" +#~ msgstr "Knappar" diff --git a/modules/luci-base/po/templates/base.pot b/modules/luci-base/po/templates/base.pot index 1c21925fcd..ebbe6c6dcf 100644 --- a/modules/luci-base/po/templates/base.pot +++ b/modules/luci-base/po/templates/base.pot @@ -197,9 +197,6 @@ msgstr "" msgid "Access Point" msgstr "" -msgid "Action" -msgstr "" - msgid "Actions" msgstr "" @@ -271,6 +268,9 @@ msgstr "" msgid "Allow all except listed" msgstr "" +msgid "Allow legacy 802.11b rates" +msgstr "" + msgid "Allow listed only" msgstr "" @@ -376,10 +376,10 @@ msgstr "" msgid "Any zone" msgstr "" -msgid "Apply" +msgid "Apply request failed with status <code>%h</code>" msgstr "" -msgid "Applying changes" +msgid "Apply unchecked" msgstr "" msgid "" @@ -536,9 +536,6 @@ msgid "" "preserved in any sysupgrade." msgstr "" -msgid "Buttons" -msgstr "" - msgid "CA certificate; if empty it will be saved after the first connection." msgstr "" @@ -560,16 +557,24 @@ msgstr "" msgid "Changes applied." msgstr "" +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "" msgid "Channel" msgstr "" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "" -msgid "Check fileystems before mount" +msgid "Check filesystems before mount" msgstr "" msgid "Check this option to delete the existing networks from this radio." @@ -635,10 +640,13 @@ msgstr "" msgid "Configuration" msgstr "" -msgid "Configuration applied." +msgid "Configuration files will be kept." msgstr "" -msgid "Configuration files will be kept." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" msgstr "" msgid "Confirmation" @@ -659,6 +667,12 @@ msgstr "" msgid "Connections" msgstr "" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "" @@ -701,6 +715,11 @@ msgid "Custom feeds" msgstr "" msgid "" +"Custom files (certificates, scripts) may remain on the system. To prevent " +"this, perform a factory-reset first." +msgstr "" + +msgid "" "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode" "\">LED</abbr>s if possible." msgstr "" @@ -822,6 +841,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "" @@ -854,6 +876,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "" @@ -956,6 +981,11 @@ msgstr "" msgid "Enable" msgstr "" +msgid "" +"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> " +"snooping" +msgstr "" + msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>" msgstr "" @@ -1013,6 +1043,9 @@ msgstr "" msgid "Enabled" msgstr "" +msgid "Enables IGMP snooping on this bridge" +msgstr "" + msgid "" "Enables fast roaming among access points that belong to the same Mobility " "Domain" @@ -1091,6 +1124,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "" @@ -1192,6 +1228,9 @@ msgstr "" msgid "Forward broadcast traffic" msgstr "" +msgid "Forward mesh peer traffic" +msgstr "" + msgid "Forwarding mode" msgstr "" @@ -1275,9 +1314,6 @@ msgstr "" msgid "HT mode (802.11n)" msgstr "" -msgid "Handler" -msgstr "" - msgid "Hang Up" msgstr "" @@ -1852,9 +1888,6 @@ msgstr "" msgid "Maximum amount of seconds to wait for the modem to become ready" msgstr "" -msgid "Maximum hold time" -msgstr "" - msgid "" "Maximum length of the name is 15 characters including the automatic protocol/" "bridge prefix (br-, 6in4-, pppoe- etc.)" @@ -1872,10 +1905,10 @@ msgstr "" msgid "Memory usage (%)" msgstr "" -msgid "Metric" +msgid "Mesh Id" msgstr "" -msgid "Minimum hold time" +msgid "Metric" msgstr "" msgid "Mirror monitor port" @@ -2081,6 +2114,9 @@ msgstr "" msgid "Nslookup" msgstr "" +msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" +msgstr "" + msgid "OK" msgstr "" @@ -2093,6 +2129,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "" @@ -2314,9 +2353,6 @@ msgstr "" msgid "Path to Private Key" msgstr "" -msgid "Path to executable which handles the button event" -msgstr "" - msgid "Path to inner CA-Certificate" msgstr "" @@ -2666,6 +2702,15 @@ msgstr "" msgid "Revert" msgstr "" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "" @@ -2742,9 +2787,6 @@ msgstr "" msgid "Save & Apply" msgstr "" -msgid "Save & Apply" -msgstr "" - msgid "Scan" msgstr "" @@ -2832,6 +2874,9 @@ msgstr "" msgid "Size (.ipk)" msgstr "" +msgid "Size of DNS query cache" +msgstr "" + msgid "Skip" msgstr "" @@ -2874,9 +2919,6 @@ msgstr "" msgid "Source routing" msgstr "" -msgid "Specifies the button state to handle" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "" @@ -2915,6 +2957,9 @@ msgstr "" msgid "Start priority" msgstr "" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "" @@ -2976,6 +3021,9 @@ msgid "" "Switch %q has an unknown topology - the VLAN settings might not be accurate." msgstr "" +msgid "Switch Port Mask" +msgstr "" + msgid "Switch VLAN" msgstr "" @@ -3062,6 +3110,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" msgid "" +"The device could not be reached within %d seconds after applying the pending " +"changes, which caused the configuration to be rolled back for safety " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3078,9 +3136,6 @@ msgid "" "\"Proceed\" below to start the flash procedure." msgstr "" -msgid "The following changes have been committed" -msgstr "" - msgid "The following changes have been reverted" msgstr "" @@ -3146,7 +3201,7 @@ msgstr "" msgid "There are no active leases." msgstr "" -msgid "There are no pending changes to apply!" +msgid "There are no changes to apply." msgstr "" msgid "There are no pending changes to revert!" @@ -3192,7 +3247,7 @@ msgstr "" msgid "" "This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with <code>:2</code>" +"ends with <code>...:2/64</code>" msgstr "" msgid "" @@ -3219,9 +3274,6 @@ msgid "" "their status." msgstr "" -msgid "This page allows the configuration of custom button actions" -msgstr "" - msgid "This page gives an overview over currently active network connections." msgstr "" @@ -3403,9 +3455,9 @@ msgstr "" msgid "" "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</" -"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed " -"address to use and the <em>Hostname</em> is assigned as symbolic name to the " -"requesting host. The optional <em>Lease time</em> can be used to set non-" +"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed " +"address to use, and the <em>Hostname</em> is assigned as a symbolic name to " +"the requesting host. The optional <em>Lease time</em> can be used to set non-" "standard host-specific lease time, e.g. 12h, 3d or infinite." msgstr "" @@ -3510,6 +3562,9 @@ msgstr "" msgid "Waiting for command to complete..." msgstr "" +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3695,6 +3750,9 @@ msgstr "" msgid "overlay" msgstr "" +msgid "random" +msgstr "" + msgid "relay mode" msgstr "" diff --git a/modules/luci-base/po/tr/base.po b/modules/luci-base/po/tr/base.po index 334ef00536..aba91126d6 100644 --- a/modules/luci-base/po/tr/base.po +++ b/modules/luci-base/po/tr/base.po @@ -213,9 +213,6 @@ msgstr "" msgid "Access Point" msgstr "Erişim Noktası" -msgid "Action" -msgstr "Eylem" - msgid "Actions" msgstr "Eylemler" @@ -291,6 +288,9 @@ msgstr "" msgid "Allow all except listed" msgstr "Listelenenlerin haricindekilere izin ver" +msgid "Allow legacy 802.11b rates" +msgstr "" + msgid "Allow listed only" msgstr "Yanlızca listelenenlere izin ver" @@ -396,11 +396,11 @@ msgstr "Anten Yapılandırması" msgid "Any zone" msgstr "" -msgid "Apply" -msgstr "Uygula" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "Değişiklikleri uygula" +msgid "Apply unchecked" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -556,9 +556,6 @@ msgid "" "preserved in any sysupgrade." msgstr "" -msgid "Buttons" -msgstr "" - msgid "CA certificate; if empty it will be saved after the first connection." msgstr "" @@ -580,16 +577,24 @@ msgstr "" msgid "Changes applied." msgstr "" +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "" msgid "Channel" msgstr "" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "" -msgid "Check fileystems before mount" +msgid "Check filesystems before mount" msgstr "" msgid "Check this option to delete the existing networks from this radio." @@ -655,10 +660,13 @@ msgstr "" msgid "Configuration" msgstr "" -msgid "Configuration applied." +msgid "Configuration files will be kept." msgstr "" -msgid "Configuration files will be kept." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" msgstr "" msgid "Confirmation" @@ -679,6 +687,12 @@ msgstr "" msgid "Connections" msgstr "" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "" @@ -721,6 +735,11 @@ msgid "Custom feeds" msgstr "" msgid "" +"Custom files (certificates, scripts) may remain on the system. To prevent " +"this, perform a factory-reset first." +msgstr "" + +msgid "" "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode" "\">LED</abbr>s if possible." msgstr "" @@ -842,6 +861,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "" @@ -874,6 +896,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "" @@ -976,6 +1001,11 @@ msgstr "" msgid "Enable" msgstr "" +msgid "" +"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> " +"snooping" +msgstr "" + msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>" msgstr "" @@ -1033,6 +1063,9 @@ msgstr "" msgid "Enabled" msgstr "" +msgid "Enables IGMP snooping on this bridge" +msgstr "" + msgid "" "Enables fast roaming among access points that belong to the same Mobility " "Domain" @@ -1111,6 +1144,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "" @@ -1212,6 +1248,9 @@ msgstr "" msgid "Forward broadcast traffic" msgstr "" +msgid "Forward mesh peer traffic" +msgstr "" + msgid "Forwarding mode" msgstr "" @@ -1295,9 +1334,6 @@ msgstr "" msgid "HT mode (802.11n)" msgstr "" -msgid "Handler" -msgstr "" - msgid "Hang Up" msgstr "" @@ -1872,9 +1908,6 @@ msgstr "" msgid "Maximum amount of seconds to wait for the modem to become ready" msgstr "" -msgid "Maximum hold time" -msgstr "" - msgid "" "Maximum length of the name is 15 characters including the automatic protocol/" "bridge prefix (br-, 6in4-, pppoe- etc.)" @@ -1892,10 +1925,10 @@ msgstr "" msgid "Memory usage (%)" msgstr "" -msgid "Metric" +msgid "Mesh Id" msgstr "" -msgid "Minimum hold time" +msgid "Metric" msgstr "" msgid "Mirror monitor port" @@ -2101,6 +2134,9 @@ msgstr "" msgid "Nslookup" msgstr "" +msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" +msgstr "" + msgid "OK" msgstr "" @@ -2113,6 +2149,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "" @@ -2334,9 +2373,6 @@ msgstr "" msgid "Path to Private Key" msgstr "" -msgid "Path to executable which handles the button event" -msgstr "" - msgid "Path to inner CA-Certificate" msgstr "" @@ -2686,6 +2722,15 @@ msgstr "" msgid "Revert" msgstr "" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "" @@ -2762,9 +2807,6 @@ msgstr "" msgid "Save & Apply" msgstr "" -msgid "Save & Apply" -msgstr "" - msgid "Scan" msgstr "" @@ -2852,6 +2894,9 @@ msgstr "" msgid "Size (.ipk)" msgstr "" +msgid "Size of DNS query cache" +msgstr "" + msgid "Skip" msgstr "" @@ -2894,9 +2939,6 @@ msgstr "" msgid "Source routing" msgstr "" -msgid "Specifies the button state to handle" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "" @@ -2935,6 +2977,9 @@ msgstr "" msgid "Start priority" msgstr "" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "" @@ -2996,6 +3041,9 @@ msgid "" "Switch %q has an unknown topology - the VLAN settings might not be accurate." msgstr "" +msgid "Switch Port Mask" +msgstr "" + msgid "Switch VLAN" msgstr "" @@ -3082,6 +3130,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" msgid "" +"The device could not be reached within %d seconds after applying the pending " +"changes, which caused the configuration to be rolled back for safety " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3098,9 +3156,6 @@ msgid "" "\"Proceed\" below to start the flash procedure." msgstr "" -msgid "The following changes have been committed" -msgstr "" - msgid "The following changes have been reverted" msgstr "" @@ -3166,7 +3221,7 @@ msgstr "" msgid "There are no active leases." msgstr "" -msgid "There are no pending changes to apply!" +msgid "There are no changes to apply." msgstr "" msgid "There are no pending changes to revert!" @@ -3212,7 +3267,7 @@ msgstr "" msgid "" "This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with <code>:2</code>" +"ends with <code>...:2/64</code>" msgstr "" msgid "" @@ -3239,9 +3294,6 @@ msgid "" "their status." msgstr "" -msgid "This page allows the configuration of custom button actions" -msgstr "" - msgid "This page gives an overview over currently active network connections." msgstr "" @@ -3423,9 +3475,9 @@ msgstr "" msgid "" "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</" -"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed " -"address to use and the <em>Hostname</em> is assigned as symbolic name to the " -"requesting host. The optional <em>Lease time</em> can be used to set non-" +"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed " +"address to use, and the <em>Hostname</em> is assigned as a symbolic name to " +"the requesting host. The optional <em>Lease time</em> can be used to set non-" "standard host-specific lease time, e.g. 12h, 3d or infinite." msgstr "" @@ -3530,6 +3582,9 @@ msgstr "" msgid "Waiting for command to complete..." msgstr "" +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3717,6 +3772,9 @@ msgstr "" msgid "overlay" msgstr "" +msgid "random" +msgstr "" + msgid "relay mode" msgstr "" @@ -3762,6 +3820,15 @@ msgstr "evet" msgid "« Back" msgstr "« Geri" +#~ msgid "Apply" +#~ msgstr "Uygula" + +#~ msgid "Applying changes" +#~ msgstr "Değişiklikleri uygula" + +#~ msgid "Action" +#~ msgstr "Eylem" + #~ msgid "AR Support" #~ msgstr "AR Desteği" diff --git a/modules/luci-base/po/uk/base.po b/modules/luci-base/po/uk/base.po index de7259b5d4..e86bd81a8e 100644 --- a/modules/luci-base/po/uk/base.po +++ b/modules/luci-base/po/uk/base.po @@ -236,9 +236,6 @@ msgstr "Концентратор доступу" msgid "Access Point" msgstr "Точка доступу" -msgid "Action" -msgstr "Дія" - msgid "Actions" msgstr "Дії" @@ -312,6 +309,9 @@ msgstr "" msgid "Allow all except listed" msgstr "Дозволити всі, крім зазначених" +msgid "Allow legacy 802.11b rates" +msgstr "" + msgid "Allow listed only" msgstr "Дозволити тільки зазначені" @@ -420,11 +420,11 @@ msgstr "Конфигурація антени" msgid "Any zone" msgstr "Будь-яка зона" -msgid "Apply" -msgstr "Застосувати" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "Застосування змін" +msgid "Apply unchecked" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -583,9 +583,6 @@ msgid "" "preserved in any sysupgrade." msgstr "" -msgid "Buttons" -msgstr "Кнопки" - msgid "CA certificate; if empty it will be saved after the first connection." msgstr "" @@ -607,16 +604,24 @@ msgstr "Зміни" msgid "Changes applied." msgstr "Зміни застосовано." +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "Зміна пароля адміністратора для доступу до пристрою" msgid "Channel" msgstr "Канал" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "Перевірити" -msgid "Check fileystems before mount" +msgid "Check filesystems before mount" msgstr "" msgid "Check this option to delete the existing networks from this radio." @@ -693,12 +698,15 @@ msgstr "" msgid "Configuration" msgstr "Конфігурація" -msgid "Configuration applied." -msgstr "Конфігурація застосована." - msgid "Configuration files will be kept." msgstr "Конфігураційні файли будуть збережені." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "Підтвердження" @@ -717,6 +725,12 @@ msgstr "" msgid "Connections" msgstr "Підключення" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "Країна" @@ -759,6 +773,11 @@ msgid "Custom feeds" msgstr "" msgid "" +"Custom files (certificates, scripts) may remain on the system. To prevent " +"this, perform a factory-reset first." +msgstr "" + +msgid "" "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode" "\">LED</abbr>s if possible." msgstr "" @@ -885,6 +904,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "Діагностика" @@ -919,6 +941,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "Відкидати RFC1918-відповіді від клієнта на сервер" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "Показані тільки непорожні пакети" @@ -1037,6 +1062,11 @@ msgstr "Аварійний" msgid "Enable" msgstr "Увімкнути" +msgid "" +"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> " +"snooping" +msgstr "" + msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>" msgstr "Увімкнути <abbr title=\"Spanning Tree Protocol\">STP</abbr>" @@ -1094,6 +1124,9 @@ msgstr "Увімкнено/Вимкнено" msgid "Enabled" msgstr "Увімкнено" +msgid "Enables IGMP snooping on this bridge" +msgstr "" + msgid "" "Enables fast roaming among access points that belong to the same Mobility " "Domain" @@ -1174,6 +1207,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "Файл" @@ -1275,6 +1311,9 @@ msgstr "" msgid "Forward broadcast traffic" msgstr "Спрямовувати широкомовний трафік" +msgid "Forward mesh peer traffic" +msgstr "" + msgid "Forwarding mode" msgstr "Режим спрямовування" @@ -1358,9 +1397,6 @@ msgstr "" msgid "HT mode (802.11n)" msgstr "" -msgid "Handler" -msgstr "Обробник" - msgid "Hang Up" msgstr "Призупинити" @@ -1966,9 +2002,6 @@ msgstr "Максимально допустимий розмір UDP-пакет msgid "Maximum amount of seconds to wait for the modem to become ready" msgstr "Максимальний час очікування готовності модему (секунд)" -msgid "Maximum hold time" -msgstr "Максимальний час утримування" - msgid "" "Maximum length of the name is 15 characters including the automatic protocol/" "bridge prefix (br-, 6in4-, pppoe- etc.)" @@ -1986,12 +2019,12 @@ msgstr "Пам'ять" msgid "Memory usage (%)" msgstr "Використання пам'яті, %" +msgid "Mesh Id" +msgstr "" + msgid "Metric" msgstr "Метрика" -msgid "Minimum hold time" -msgstr "Мінімальний час утримування" - msgid "Mirror monitor port" msgstr "" @@ -2197,6 +2230,9 @@ msgstr "Попередження" msgid "Nslookup" msgstr "DNS-запит" +msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" +msgstr "" + msgid "OK" msgstr "OK" @@ -2209,6 +2245,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "Затримка Off-State" @@ -2441,9 +2480,6 @@ msgstr "Шлях до сертифікату клієнта" msgid "Path to Private Key" msgstr "Шлях до закритого ключа" -msgid "Path to executable which handles the button event" -msgstr "Шлях до програми, яка обробляє натискання кнопки" - msgid "Path to inner CA-Certificate" msgstr "" @@ -2811,6 +2847,15 @@ msgstr "Показати/приховати пароль" msgid "Revert" msgstr "Скасувати зміни" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "Корінь" @@ -2889,9 +2934,6 @@ msgstr "Зберегти" msgid "Save & Apply" msgstr "Зберегти і застосувати" -msgid "Save & Apply" -msgstr "Зберегти і застосувати" - msgid "Scan" msgstr "Сканувати" @@ -2982,6 +3024,9 @@ msgstr "Розмір" msgid "Size (.ipk)" msgstr "" +msgid "Size of DNS query cache" +msgstr "" + msgid "Skip" msgstr "Пропустити" @@ -3027,9 +3072,6 @@ msgstr "Джерело" msgid "Source routing" msgstr "" -msgid "Specifies the button state to handle" -msgstr "Визначає стан кнопки для обробки" - msgid "Specifies the directory the device is attached to" msgstr "Визначає каталог, до якого приєднаний пристрій" @@ -3072,6 +3114,9 @@ msgstr "Запустити" msgid "Start priority" msgstr "Стартовий пріоритет" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "Запуск" @@ -3137,6 +3182,9 @@ msgid "" "Switch %q has an unknown topology - the VLAN settings might not be accurate." msgstr "" +msgid "Switch Port Mask" +msgstr "" + msgid "Switch VLAN" msgstr "" @@ -3235,6 +3283,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" msgid "" +"The device could not be reached within %d seconds after applying the pending " +"changes, which caused the configuration to be rolled back for safety " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "Файл пристрою пам'яті або розділу (наприклад, <code>/dev/sda1</code>)" @@ -3257,9 +3315,6 @@ msgstr "" "їх з вихідним файлом для забезпечення цілісності даних.<br /> Натисніть " "\"Продовжити\", щоб розпочати процедуру оновлення прошивки." -msgid "The following changes have been committed" -msgstr "Нижче наведені зміни були застосовані" - msgid "The following changes have been reverted" msgstr "Нижче наведені зміни були скасовані" @@ -3345,8 +3400,8 @@ msgstr "" msgid "There are no active leases." msgstr "Активних оренд немає." -msgid "There are no pending changes to apply!" -msgstr "Немає жодних змін до застосування!" +msgid "There are no changes to apply." +msgstr "" msgid "There are no pending changes to revert!" msgstr "Немає жодних змін до скасування!" @@ -3400,10 +3455,10 @@ msgstr "" msgid "" "This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with <code>:2</code>" +"ends with <code>...:2/64</code>" msgstr "" "Це локальна адреса кінцевої точки, присвоєна тунельним брокером, зазвичай " -"закінчується на <code>:2</code>" +"закінчується на <code>...:2/64</code>" msgid "" "This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</" @@ -3437,9 +3492,6 @@ msgstr "" "У цьому списку наведені працюючі на даний момент системні процеси та їх " "статус." -msgid "This page allows the configuration of custom button actions" -msgstr "Ця сторінка дозволяє настроїти нетипові дії кнопки" - msgid "This page gives an overview over currently active network connections." msgstr "Ця сторінка надає огляд поточних активних мережних підключень." @@ -3626,9 +3678,9 @@ msgstr "Використовувати таблицю маршрутизації msgid "" "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</" -"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed " -"address to use and the <em>Hostname</em> is assigned as symbolic name to the " -"requesting host. The optional <em>Lease time</em> can be used to set non-" +"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed " +"address to use, and the <em>Hostname</em> is assigned as a symbolic name to " +"the requesting host. The optional <em>Lease time</em> can be used to set non-" "standard host-specific lease time, e.g. 12h, 3d or infinite." msgstr "" "Використовуйте кнопку <em>Додати</em>, щоб додати новий запис оренди. " @@ -3739,6 +3791,9 @@ msgstr "Очікуємо, доки зміни наберуть чинності. msgid "Waiting for command to complete..." msgstr "Очікуємо завершення виконання команди..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3934,6 +3989,9 @@ msgstr "відкрита" msgid "overlay" msgstr "" +msgid "random" +msgstr "" + msgid "relay mode" msgstr "" @@ -3979,6 +4037,48 @@ msgstr "так" msgid "« Back" msgstr "« Назад" +#~ msgid "Apply" +#~ msgstr "Застосувати" + +#~ msgid "Applying changes" +#~ msgstr "Застосування змін" + +#~ msgid "Configuration applied." +#~ msgstr "Конфігурація застосована." + +#~ msgid "Save & Apply" +#~ msgstr "Зберегти і застосувати" + +#~ msgid "The following changes have been committed" +#~ msgstr "Нижче наведені зміни були застосовані" + +#~ msgid "There are no pending changes to apply!" +#~ msgstr "Немає жодних змін до застосування!" + +#~ msgid "Action" +#~ msgstr "Дія" + +#~ msgid "Buttons" +#~ msgstr "Кнопки" + +#~ msgid "Handler" +#~ msgstr "Обробник" + +#~ msgid "Maximum hold time" +#~ msgstr "Максимальний час утримування" + +#~ msgid "Minimum hold time" +#~ msgstr "Мінімальний час утримування" + +#~ msgid "Path to executable which handles the button event" +#~ msgstr "Шлях до програми, яка обробляє натискання кнопки" + +#~ msgid "Specifies the button state to handle" +#~ msgstr "Визначає стан кнопки для обробки" + +#~ msgid "This page allows the configuration of custom button actions" +#~ msgstr "Ця сторінка дозволяє настроїти нетипові дії кнопки" + #~ msgid "Leasetime" #~ msgstr "Час оренди" diff --git a/modules/luci-base/po/vi/base.po b/modules/luci-base/po/vi/base.po index 48f6b73e82..8dacc12e65 100644 --- a/modules/luci-base/po/vi/base.po +++ b/modules/luci-base/po/vi/base.po @@ -211,9 +211,6 @@ msgstr "" msgid "Access Point" msgstr "Điểm truy cập" -msgid "Action" -msgstr "Action" - msgid "Actions" msgstr "Hành động" @@ -285,6 +282,9 @@ msgstr "Cho phép <abbr title=\"Secure Shell\">SSH</abbr> xác thực mật mã" msgid "Allow all except listed" msgstr "Cho phép tất cả trừ danh sách liệt kê" +msgid "Allow legacy 802.11b rates" +msgstr "" + msgid "Allow listed only" msgstr "Chỉ cho phép danh sách liệt kê" @@ -390,11 +390,11 @@ msgstr "" msgid "Any zone" msgstr "" -msgid "Apply" -msgstr "Áp dụng" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "Tiến hành thay đổi" +msgid "Apply unchecked" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -550,9 +550,6 @@ msgid "" "preserved in any sysupgrade." msgstr "" -msgid "Buttons" -msgstr "" - msgid "CA certificate; if empty it will be saved after the first connection." msgstr "" @@ -574,16 +571,24 @@ msgstr "Thay đổi" msgid "Changes applied." msgstr "Thay đổi đã áp dụng" +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "" msgid "Channel" msgstr "Kênh" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "" -msgid "Check fileystems before mount" +msgid "Check filesystems before mount" msgstr "" msgid "Check this option to delete the existing networks from this radio." @@ -649,10 +654,13 @@ msgstr "" msgid "Configuration" msgstr "Cấu hình" -msgid "Configuration applied." +msgid "Configuration files will be kept." msgstr "" -msgid "Configuration files will be kept." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" msgstr "" msgid "Confirmation" @@ -673,6 +681,12 @@ msgstr "" msgid "Connections" msgstr "" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "" @@ -715,6 +729,11 @@ msgid "Custom feeds" msgstr "" msgid "" +"Custom files (certificates, scripts) may remain on the system. To prevent " +"this, perform a factory-reset first." +msgstr "" + +msgid "" "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode" "\">LED</abbr>s if possible." msgstr "" @@ -838,6 +857,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "" @@ -870,6 +892,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "" @@ -981,6 +1006,11 @@ msgstr "" msgid "Enable" msgstr "" +msgid "" +"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> " +"snooping" +msgstr "" + msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>" msgstr "Kích hoạt <abbr title=\"Spanning Tree Protocol\">STP</abbr>" @@ -1038,6 +1068,9 @@ msgstr "Cho kích hoạt/ Vô hiệu hóa" msgid "Enabled" msgstr "" +msgid "Enables IGMP snooping on this bridge" +msgstr "" + msgid "" "Enables fast roaming among access points that belong to the same Mobility " "Domain" @@ -1116,6 +1149,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "" @@ -1217,6 +1253,9 @@ msgstr "" msgid "Forward broadcast traffic" msgstr "" +msgid "Forward mesh peer traffic" +msgstr "" + msgid "Forwarding mode" msgstr "" @@ -1300,9 +1339,6 @@ msgstr "" msgid "HT mode (802.11n)" msgstr "" -msgid "Handler" -msgstr "" - msgid "Hang Up" msgstr "Hang Up" @@ -1887,9 +1923,6 @@ msgstr "" msgid "Maximum amount of seconds to wait for the modem to become ready" msgstr "" -msgid "Maximum hold time" -msgstr "Mức cao nhất" - msgid "" "Maximum length of the name is 15 characters including the automatic protocol/" "bridge prefix (br-, 6in4-, pppoe- etc.)" @@ -1907,12 +1940,12 @@ msgstr "Bộ nhớ" msgid "Memory usage (%)" msgstr "Memory usage (%)" +msgid "Mesh Id" +msgstr "" + msgid "Metric" msgstr "Metric" -msgid "Minimum hold time" -msgstr "Mức thấp nhất" - msgid "Mirror monitor port" msgstr "" @@ -2118,6 +2151,9 @@ msgstr "" msgid "Nslookup" msgstr "" +msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" +msgstr "" + msgid "OK" msgstr "OK " @@ -2130,6 +2166,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "" @@ -2357,9 +2396,6 @@ msgstr "" msgid "Path to Private Key" msgstr "Đường dẫn tới private key" -msgid "Path to executable which handles the button event" -msgstr "" - msgid "Path to inner CA-Certificate" msgstr "" @@ -2711,6 +2747,15 @@ msgstr "" msgid "Revert" msgstr "Revert" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "" @@ -2789,9 +2834,6 @@ msgstr "Lưu" msgid "Save & Apply" msgstr "Lưu & áp dụng " -msgid "Save & Apply" -msgstr "" - msgid "Scan" msgstr "Scan" @@ -2879,6 +2921,9 @@ msgstr "Dung lượng " msgid "Size (.ipk)" msgstr "" +msgid "Size of DNS query cache" +msgstr "" + msgid "Skip" msgstr "" @@ -2921,9 +2966,6 @@ msgstr "Nguồn" msgid "Source routing" msgstr "" -msgid "Specifies the button state to handle" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "" @@ -2962,6 +3004,9 @@ msgstr "Bắt đầu " msgid "Start priority" msgstr "Bắt đầu ưu tiên" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "" @@ -3023,6 +3068,9 @@ msgid "" "Switch %q has an unknown topology - the VLAN settings might not be accurate." msgstr "" +msgid "Switch Port Mask" +msgstr "" + msgid "Switch VLAN" msgstr "" @@ -3109,6 +3157,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" msgid "" +"The device could not be reached within %d seconds after applying the pending " +"changes, which caused the configuration to be rolled back for safety " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3129,9 +3187,6 @@ msgid "" "\"Proceed\" below to start the flash procedure." msgstr "" -msgid "The following changes have been committed" -msgstr "" - msgid "The following changes have been reverted" msgstr "Những thay đối sau đây đã được để trở về tình trạng cũ. " @@ -3203,7 +3258,7 @@ msgstr "" msgid "There are no active leases." msgstr "" -msgid "There are no pending changes to apply!" +msgid "There are no changes to apply." msgstr "" msgid "There are no pending changes to revert!" @@ -3249,7 +3304,7 @@ msgstr "" msgid "" "This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with <code>:2</code>" +"ends with <code>...:2/64</code>" msgstr "" msgid "" @@ -3280,9 +3335,6 @@ msgstr "" "List này đưa ra một tầm nhìn tổng quát về xử lý hệ thống đang chạy và tình " "trạng của chúng." -msgid "This page allows the configuration of custom button actions" -msgstr "" - msgid "This page gives an overview over currently active network connections." msgstr "" "Trang này cung cấp một tổng quan về đang hoạt động kết nối mạng hiện tại." @@ -3465,9 +3517,9 @@ msgstr "" msgid "" "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</" -"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed " -"address to use and the <em>Hostname</em> is assigned as symbolic name to the " -"requesting host. The optional <em>Lease time</em> can be used to set non-" +"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed " +"address to use, and the <em>Hostname</em> is assigned as a symbolic name to " +"the requesting host. The optional <em>Lease time</em> can be used to set non-" "standard host-specific lease time, e.g. 12h, 3d or infinite." msgstr "" @@ -3572,6 +3624,9 @@ msgstr "" msgid "Waiting for command to complete..." msgstr "" +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3763,6 +3818,9 @@ msgstr "" msgid "overlay" msgstr "" +msgid "random" +msgstr "" + msgid "relay mode" msgstr "" @@ -3808,6 +3866,21 @@ msgstr "" msgid "« Back" msgstr "" +#~ msgid "Apply" +#~ msgstr "Áp dụng" + +#~ msgid "Applying changes" +#~ msgstr "Tiến hành thay đổi" + +#~ msgid "Action" +#~ msgstr "Action" + +#~ msgid "Maximum hold time" +#~ msgstr "Mức cao nhất" + +#~ msgid "Minimum hold time" +#~ msgstr "Mức thấp nhất" + #~ msgid "Leasetime" #~ msgstr "Leasetime" diff --git a/modules/luci-base/po/zh-cn/base.po b/modules/luci-base/po/zh-cn/base.po index f516d42942..8399e947b8 100644 --- a/modules/luci-base/po/zh-cn/base.po +++ b/modules/luci-base/po/zh-cn/base.po @@ -7,7 +7,7 @@ msgid "%.1f dB" msgstr "" msgid "%s is untagged in multiple VLANs!" -msgstr "%s 在多个 VLAN 中均未关联!" +msgstr "%s 在多个 VLAN 中均未标记!" msgid "(%d minute window, %d second interval)" msgstr "(最近 %d 分钟信息,每 %d 秒刷新)" @@ -209,9 +209,6 @@ msgstr "接入集中器" msgid "Access Point" msgstr "接入点 AP" -msgid "Action" -msgstr "动作" - msgid "Actions" msgstr "动作" @@ -283,6 +280,9 @@ msgstr "允许 <abbr title=\"Secure Shell\">SSH</abbr> 密码验证" msgid "Allow all except listed" msgstr "仅允许列表外" +msgid "Allow legacy 802.11b rates" +msgstr "允许传统的 802.11b 速率" + msgid "Allow listed only" msgstr "仅允许列表内" @@ -390,11 +390,11 @@ msgstr "天线配置" msgid "Any zone" msgstr "任意区域" -msgid "Apply" -msgstr "应用" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "正在应用更改" +msgid "Apply unchecked" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -552,9 +552,6 @@ msgid "" "preserved in any sysupgrade." msgstr "由固件指定的软件源。此处的设置在任何系统升级中都不会被保留。" -msgid "Buttons" -msgstr "按键" - msgid "CA certificate; if empty it will be saved after the first connection." msgstr "CA 证书,如果留空,则证书将在第一次连接后被保存。" @@ -576,16 +573,24 @@ msgstr "修改数" msgid "Changes applied." msgstr "更改已应用" +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "修改访问设备的管理员密码" msgid "Channel" msgstr "信道" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "检查" -msgid "Check fileystems before mount" +msgid "Check filesystems before mount" msgstr "在挂载前检查文件系统" msgid "Check this option to delete the existing networks from this radio." @@ -651,16 +656,22 @@ msgid "" "workaround might cause interoperability issues and reduced robustness of key " "negotiation especially in environments with heavy traffic load." msgstr "" +"通过禁用用于安装密钥的 EAPOL-Key 帧的重新传输,来增加客户端密钥重安装攻击的复" +"杂度。此解决方法可能会导致互操作性问题,并降低密钥协商的可靠性,特别是在流量" +"负载较重的环境中。" msgid "Configuration" msgstr "配置" -msgid "Configuration applied." -msgstr "配置已应用。" - msgid "Configuration files will be kept." msgstr "配置文件将被保留。" +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "确认密码" @@ -679,6 +690,12 @@ msgstr "当 TLS 不可用时,与服务器连接失败" msgid "Connections" msgstr "连接" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "国家" @@ -721,6 +738,12 @@ msgid "Custom feeds" msgstr "自定义软件源" msgid "" +"Custom files (certificates, scripts) may remain on the system. To prevent " +"this, perform a factory-reset first." +msgstr "" +"自定义文件(证书、脚本)会保留在系统上。若无需保留,请先执行恢复出厂设置。" + +msgid "" "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode" "\">LED</abbr>s if possible." msgstr "自定义此设备的 <abbr title=\"Light Emitting Diode\">LED</abbr> 行为。" @@ -844,6 +867,9 @@ msgstr "设备正在重启..." msgid "Device unreachable" msgstr "无法连接到设备" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "网络诊断" @@ -878,6 +904,9 @@ msgstr "禁用(默认)" msgid "Discard upstream RFC1918 responses" msgstr "丢弃 RFC1918 上行响应数据" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "只显示有内容的软件包" @@ -934,7 +963,7 @@ msgid "Download backup" msgstr "下载备份" msgid "Downstream SNR offset" -msgstr "" +msgstr "下游 SNR 偏移" msgid "Dropbear Instance" msgstr "Dropbear 实例" @@ -987,6 +1016,11 @@ msgstr "紧急" msgid "Enable" msgstr "启用" +msgid "" +"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> " +"snooping" +msgstr "" + msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>" msgstr "开启 <abbr title=\"Spanning Tree Protocol\">STP</abbr>" @@ -1018,7 +1052,7 @@ msgid "Enable WPS pushbutton, requires WPA(2)-PSK" msgstr "启用 WPS 一键加密按钮,需要 WPA(2)-PSK" msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" +msgstr "启用密钥重新安装(KRACK)对策" msgid "Enable learning and aging" msgstr "启用智能交换学习" @@ -1044,6 +1078,9 @@ msgstr "启用/禁用" msgid "Enabled" msgstr "启用" +msgid "Enables IGMP snooping on this bridge" +msgstr "" + msgid "" "Enables fast roaming among access points that belong to the same Mobility " "Domain" @@ -1120,6 +1157,9 @@ msgid "FT over the Air" msgstr "" msgid "FT protocol" +msgstr "FT 协议" + +msgid "Failed to confirm apply within %ds, waiting for rollback…" msgstr "" msgid "File" @@ -1223,6 +1263,9 @@ msgstr "前向纠错秒数(FECS)" msgid "Forward broadcast traffic" msgstr "转发广播数据包" +msgid "Forward mesh peer traffic" +msgstr "转发 mesh 节点数据包" + msgid "Forwarding mode" msgstr "转发模式" @@ -1270,7 +1313,7 @@ msgid "Generate Config" msgstr "生成配置" msgid "Generate PMK locally" -msgstr "" +msgstr "本地生成 PMK" msgid "Generate archive" msgstr "生成备份" @@ -1308,9 +1351,6 @@ msgstr "HE.net 用户名" msgid "HT mode (802.11n)" msgstr "HT 模式(802.11n)" -msgid "Handler" -msgstr "处理程序" - msgid "Hang Up" msgstr "挂起" @@ -1899,9 +1939,6 @@ msgstr "允许的最大 EDNS.0 UDP 数据包大小" msgid "Maximum amount of seconds to wait for the modem to become ready" msgstr "调制解调器就绪的最大等待时间(秒)" -msgid "Maximum hold time" -msgstr "最大持续时间" - msgid "" "Maximum length of the name is 15 characters including the automatic protocol/" "bridge prefix (br-, 6in4-, pppoe- etc.)" @@ -1921,12 +1958,12 @@ msgstr "内存" msgid "Memory usage (%)" msgstr "内存使用率(%)" +msgid "Mesh Id" +msgstr "Mesh ID" + msgid "Metric" msgstr "跃点数" -msgid "Minimum hold time" -msgstr "最低持续时间" - msgid "Mirror monitor port" msgstr "数据包镜像监听端口" @@ -2130,6 +2167,9 @@ msgstr "注意" msgid "Nslookup" msgstr "Nslookup" +msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" +msgstr "缓存的 DNS 条目数量(最大 10000,0 表示不缓存)" + msgid "OK" msgstr "确认" @@ -2142,6 +2182,9 @@ msgstr "混淆组密码" msgid "Obfuscated Password" msgstr "混淆密码" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "关闭时间" @@ -2302,7 +2345,7 @@ msgid "PIN" msgstr "PIN" msgid "PMK R1 Push" -msgstr "PMK R1 Push" +msgstr "R1 推送 PMK" msgid "PPP" msgstr "PPP" @@ -2373,9 +2416,6 @@ msgstr "客户端证书路径" msgid "Path to Private Key" msgstr "私钥路径" -msgid "Path to executable which handles the button event" -msgstr "处理按键动作的可执行文件路径" - msgid "Path to inner CA-Certificate" msgstr "内部 CA 证书的路径" @@ -2511,10 +2551,10 @@ msgid "Quality" msgstr "质量" msgid "R0 Key Lifetime" -msgstr "R0 Key Lifetime" +msgstr "R0 密钥生存期" msgid "R1 Key Holder" -msgstr "R1 Key Holder" +msgstr "R1 密钥持有者" msgid "RFC3947 NAT-T mode" msgstr "RFC3947 NAT-T 模式" @@ -2738,6 +2778,15 @@ msgstr "显示/隐藏 密码" msgid "Revert" msgstr "放弃" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "Root" @@ -2814,9 +2863,6 @@ msgstr "保存" msgid "Save & Apply" msgstr "保存&应用" -msgid "Save & Apply" -msgstr "保存&应用" - msgid "Scan" msgstr "扫描" @@ -2906,6 +2952,9 @@ msgstr "大小" msgid "Size (.ipk)" msgstr "大小(.ipk)" +msgid "Size of DNS query cache" +msgstr "DNS 查询缓存的大小" + msgid "Skip" msgstr "跳过" @@ -2950,9 +2999,6 @@ msgstr "源地址" msgid "Source routing" msgstr "源路由" -msgid "Specifies the button state to handle" -msgstr "指定要处理的按键状态" - msgid "Specifies the directory the device is attached to" msgstr "指定设备的挂载目录" @@ -2991,6 +3037,9 @@ msgstr "开始" msgid "Start priority" msgstr "启动优先级" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "启动项" @@ -3054,6 +3103,9 @@ msgid "" "Switch %q has an unknown topology - the VLAN settings might not be accurate." msgstr "交换机 %q 具有未知的拓扑结构,VLAN 设置可能不正确。" +msgid "Switch Port Mask" +msgstr "交换机端口掩码" + msgid "Switch VLAN" msgstr "交换机 VLAN" @@ -3145,6 +3197,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "由于以下错误,配置文件无法被加载:" msgid "" +"The device could not be reached within %d seconds after applying the pending " +"changes, which caused the configuration to be rolled back for safety " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "存储器或分区的设备文件,(例如:<code>/dev/sda1</code>)" @@ -3165,9 +3227,6 @@ msgstr "" "固件已上传,请注意核对文件大小和校验值!<br />点击下面的“继续”开始刷写,刷新" "过程中切勿断电!" -msgid "The following changes have been committed" -msgstr "以下更改已提交" - msgid "The following changes have been reverted" msgstr "以下更改已放弃" @@ -3239,8 +3298,8 @@ msgstr "不支持所上传的映像文件格式,请选择适合当前平台的 msgid "There are no active leases." msgstr "没有已分配的租约。" -msgid "There are no pending changes to apply!" -msgstr "没有待生效的更改!" +msgid "There are no changes to apply." +msgstr "" msgid "There are no pending changes to revert!" msgstr "没有可放弃的更改!" @@ -3289,8 +3348,8 @@ msgstr "启动脚本插入到 'exit 0' 之前即可随系统启动运行。" msgid "" "This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with <code>:2</code>" -msgstr "隧道代理分配的本地终端地址,通常以 <code>:2</code> 结尾" +"ends with <code>...:2/64</code>" +msgstr "隧道代理分配的本地终端地址,通常以 <code>...:2/64</code> 结尾" msgid "" "This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</" @@ -3318,9 +3377,6 @@ msgid "" "their status." msgstr "系统中正在运行的进程概况和它们的状态信息。" -msgid "This page allows the configuration of custom button actions" -msgstr "自定义按键动作。" - msgid "This page gives an overview over currently active network connections." msgstr "活跃的网络连接概况。" @@ -3504,9 +3560,9 @@ msgstr "使用路由表" msgid "" "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</" -"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed " -"address to use and the <em>Hostname</em> is assigned as symbolic name to the " -"requesting host. The optional <em>Lease time</em> can be used to set non-" +"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed " +"address to use, and the <em>Hostname</em> is assigned as a symbolic name to " +"the requesting host. The optional <em>Lease time</em> can be used to set non-" "standard host-specific lease time, e.g. 12h, 3d or infinite." msgstr "" "使用“添加”按钮来增加新的租约条目。“IPv4 地址”和“主机名”字段的值将被固定分配" @@ -3618,6 +3674,9 @@ msgstr "正在应用更改..." msgid "Waiting for command to complete..." msgstr "等待命令执行完成..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "等待设备..." @@ -3630,7 +3689,7 @@ msgstr "警告:一些未保存的配置将在重启后丢失!" msgid "" "When using a PSK, the PMK can be generated locally without inter AP " "communications" -msgstr "" +msgstr "当使用 PSK 时,PMK 可以在没有 AP 间通信的情况下在本地生成" msgid "Whether to create an IPv6 default route over the tunnel" msgstr "是否添加一条通向隧道的 IPv6 默认路由" @@ -3809,6 +3868,9 @@ msgstr "开放式" msgid "overlay" msgstr "覆盖" +msgid "random" +msgstr "" + msgid "relay mode" msgstr "中继模式" @@ -3828,7 +3890,7 @@ msgid "stateless + stateful" msgstr "无状态的 + 有状态的" msgid "tagged" -msgstr "已关联" +msgstr "已标记" msgid "time units (TUs / 1.024 ms) [1000-65535]" msgstr "时间单位(TUs / 1.024ms)[1000-65535]" @@ -3846,7 +3908,7 @@ msgid "unspecified -or- create:" msgstr "不指定或新建:" msgid "untagged" -msgstr "未关联" +msgstr "未标记" msgid "yes" msgstr "是" @@ -3854,6 +3916,48 @@ msgstr "是" msgid "« Back" msgstr "« 后退" +#~ msgid "Apply" +#~ msgstr "应用" + +#~ msgid "Applying changes" +#~ msgstr "正在应用更改" + +#~ msgid "Configuration applied." +#~ msgstr "配置已应用。" + +#~ msgid "Save & Apply" +#~ msgstr "保存&应用" + +#~ msgid "The following changes have been committed" +#~ msgstr "以下更改已提交" + +#~ msgid "There are no pending changes to apply!" +#~ msgstr "没有待生效的更改!" + +#~ msgid "Action" +#~ msgstr "动作" + +#~ msgid "Buttons" +#~ msgstr "按键" + +#~ msgid "Handler" +#~ msgstr "处理程序" + +#~ msgid "Maximum hold time" +#~ msgstr "最大持续时间" + +#~ msgid "Minimum hold time" +#~ msgstr "最低持续时间" + +#~ msgid "Path to executable which handles the button event" +#~ msgstr "处理按键动作的可执行文件路径" + +#~ msgid "Specifies the button state to handle" +#~ msgstr "指定要处理的按键状态" + +#~ msgid "This page allows the configuration of custom button actions" +#~ msgstr "自定义按键动作。" + #~ msgid "Leasetime" #~ msgstr "租用时间" @@ -3942,7 +4046,7 @@ msgstr "« 后退" #~ msgstr "端口 %d" #~ msgid "Port %d is untagged in multiple VLANs!" -#~ msgstr "端口 %d 在多个 VLAN 中均未关联!" +#~ msgstr "端口 %d 在多个 VLAN 中均未标记!" #~ msgid "VLAN Interface" #~ msgstr "VLAN 接口" diff --git a/modules/luci-base/po/zh-tw/base.po b/modules/luci-base/po/zh-tw/base.po index c0abad2a76..c62fd0d9b9 100644 --- a/modules/luci-base/po/zh-tw/base.po +++ b/modules/luci-base/po/zh-tw/base.po @@ -214,9 +214,6 @@ msgstr "接入集線器" msgid "Access Point" msgstr "存取點 (AP)" -msgid "Action" -msgstr "動作" - msgid "Actions" msgstr "動作" @@ -288,6 +285,9 @@ msgstr "允許 <abbr title=\"Secure Shell\">SSH</abbr> 密碼驗證" msgid "Allow all except listed" msgstr "僅允許列表外" +msgid "Allow legacy 802.11b rates" +msgstr "" + msgid "Allow listed only" msgstr "僅允許列表內" @@ -393,11 +393,11 @@ msgstr "天線設定" msgid "Any zone" msgstr "任意區域" -msgid "Apply" -msgstr "套用" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "正在套用變更" +msgid "Apply unchecked" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -555,9 +555,6 @@ msgid "" "preserved in any sysupgrade." msgstr "" -msgid "Buttons" -msgstr "按鈕" - msgid "CA certificate; if empty it will be saved after the first connection." msgstr "" @@ -579,16 +576,24 @@ msgstr "待修改" msgid "Changes applied." msgstr "修改已套用" +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "修改管理員密碼" msgid "Channel" msgstr "頻道" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "檢查" -msgid "Check fileystems before mount" +msgid "Check filesystems before mount" msgstr "" msgid "Check this option to delete the existing networks from this radio." @@ -660,12 +665,15 @@ msgstr "" msgid "Configuration" msgstr "設定" -msgid "Configuration applied." -msgstr "啟用設定" - msgid "Configuration files will be kept." msgstr "設定檔將被存檔" +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "再確認" @@ -684,6 +692,12 @@ msgstr "" msgid "Connections" msgstr "連線數" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "國別" @@ -726,6 +740,11 @@ msgid "Custom feeds" msgstr "" msgid "" +"Custom files (certificates, scripts) may remain on the system. To prevent " +"this, perform a factory-reset first." +msgstr "" + +msgid "" "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode" "\">LED</abbr>s if possible." msgstr "" @@ -851,6 +870,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "診斷" @@ -884,6 +906,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "丟棄上游RFC1918 虛擬IP網路的回應" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "僅顯示內含的軟體" @@ -993,6 +1018,11 @@ msgstr "緊急" msgid "Enable" msgstr "啟用" +msgid "" +"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> " +"snooping" +msgstr "" + msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>" msgstr "啟用 <abbr title=\"Spanning Tree Protocol\">STP</abbr>" @@ -1050,6 +1080,9 @@ msgstr "啟用/關閉" msgid "Enabled" msgstr "啟用" +msgid "Enables IGMP snooping on this bridge" +msgstr "" + msgid "" "Enables fast roaming among access points that belong to the same Mobility " "Domain" @@ -1129,6 +1162,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "檔案" @@ -1230,6 +1266,9 @@ msgstr "" msgid "Forward broadcast traffic" msgstr "轉發廣播流量" +msgid "Forward mesh peer traffic" +msgstr "" + msgid "Forwarding mode" msgstr "轉發模式" @@ -1313,9 +1352,6 @@ msgstr "" msgid "HT mode (802.11n)" msgstr "" -msgid "Handler" -msgstr "多執行緒" - msgid "Hang Up" msgstr "斷線" @@ -1896,9 +1932,6 @@ msgstr "允許EDNS.0 協定的UDP封包最大數量" msgid "Maximum amount of seconds to wait for the modem to become ready" msgstr "等待數據機待命的最大秒數" -msgid "Maximum hold time" -msgstr "可持有最長時間" - msgid "" "Maximum length of the name is 15 characters including the automatic protocol/" "bridge prefix (br-, 6in4-, pppoe- etc.)" @@ -1916,12 +1949,12 @@ msgstr "記憶體" msgid "Memory usage (%)" msgstr "記憶體使用 (%)" +msgid "Mesh Id" +msgstr "" + msgid "Metric" msgstr "公測單位" -msgid "Minimum hold time" -msgstr "可持有的最低時間" - msgid "Mirror monitor port" msgstr "" @@ -2125,6 +2158,9 @@ msgstr "通知" msgid "Nslookup" msgstr "DNS偵錯Nslookup" +msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" +msgstr "" + msgid "OK" msgstr "行" @@ -2137,6 +2173,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "關閉狀態延遲" @@ -2362,9 +2401,6 @@ msgstr "用戶端-證書的路徑" msgid "Path to Private Key" msgstr "私人金鑰的路徑" -msgid "Path to executable which handles the button event" -msgstr "處理按鍵效果可執行檔路徑" - msgid "Path to inner CA-Certificate" msgstr "" @@ -2725,6 +2761,15 @@ msgstr "明示/隱藏 密碼" msgid "Revert" msgstr "回溯" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "根" @@ -2801,9 +2846,6 @@ msgstr "保存" msgid "Save & Apply" msgstr "保存並啟用" -msgid "Save & Apply" -msgstr "保存 & 啟用" - msgid "Scan" msgstr "掃描" @@ -2892,6 +2934,9 @@ msgstr "大小" msgid "Size (.ipk)" msgstr "" +msgid "Size of DNS query cache" +msgstr "" + msgid "Skip" msgstr "跳過" @@ -2936,9 +2981,6 @@ msgstr "來源" msgid "Source routing" msgstr "" -msgid "Specifies the button state to handle" -msgstr "指定這個按鈕狀態以便操作" - msgid "Specifies the directory the device is attached to" msgstr "指定這個設備被附掛到那個目錄" @@ -2977,6 +3019,9 @@ msgstr "啟用" msgid "Start priority" msgstr "啟用優先權順序" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "啟動" @@ -3040,6 +3085,9 @@ msgid "" "Switch %q has an unknown topology - the VLAN settings might not be accurate." msgstr "" +msgid "Switch Port Mask" +msgstr "" + msgid "Switch VLAN" msgstr "" @@ -3135,6 +3183,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" msgid "" +"The device could not be reached within %d seconds after applying the pending " +"changes, which caused the configuration to be rolled back for safety " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3157,9 +3215,6 @@ msgstr "" "要刷的映像檔已上傳.下面是這個校驗碼和檔案大小詳列, 用原始檔比對它門以確保資料" "完整性.<br />按下面的\"繼續\"便可以開啟更新流程." -msgid "The following changes have been committed" -msgstr "接下來的修改已經被承諾" - msgid "The following changes have been reverted" msgstr "接下來的修改已經被回復" @@ -3234,8 +3289,8 @@ msgstr "" msgid "There are no active leases." msgstr "租賃尚未啟動." -msgid "There are no pending changes to apply!" -msgstr "尚無聽候的修改被採用" +msgid "There are no changes to apply." +msgstr "" msgid "There are no pending changes to revert!" msgstr "尚無聽候的修改被復元!" @@ -3284,8 +3339,8 @@ msgstr "" msgid "" "This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with <code>:2</code>" -msgstr "這是由通道代理人指定的本地終端位址, 通常用 <code>:2</code>結尾." +"ends with <code>...:2/64</code>" +msgstr "這是由通道代理人指定的本地終端位址, 通常用 <code>...:2/64</code>結尾." msgid "" "This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</" @@ -3313,9 +3368,6 @@ msgid "" "their status." msgstr "這清單提供目前正在執行的系統的執行緒和狀態的預覽." -msgid "This page allows the configuration of custom button actions" -msgstr "這一頁允許客製化按鍵動作的設定" - msgid "This page gives an overview over currently active network connections." msgstr "這一頁提供目前正在活動中網路連線的預覽." @@ -3499,9 +3551,9 @@ msgstr "使用路由表" msgid "" "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</" -"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed " -"address to use and the <em>Hostname</em> is assigned as symbolic name to the " -"requesting host. The optional <em>Lease time</em> can be used to set non-" +"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed " +"address to use, and the <em>Hostname</em> is assigned as a symbolic name to " +"the requesting host. The optional <em>Lease time</em> can be used to set non-" "standard host-specific lease time, e.g. 12h, 3d or infinite." msgstr "" "使用 <em>Add</em> 鍵以便新增一個租賃的項目. 這個 <em>MAC-Address</em> 標誌這" @@ -3611,6 +3663,9 @@ msgstr "等待修改被啟用..." msgid "Waiting for command to complete..." msgstr "等待完整性指令..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3800,6 +3855,9 @@ msgstr "打開" msgid "overlay" msgstr "" +msgid "random" +msgstr "" + msgid "relay mode" msgstr "" @@ -3845,6 +3903,48 @@ msgstr "是的" msgid "« Back" msgstr "« 倒退" +#~ msgid "Apply" +#~ msgstr "套用" + +#~ msgid "Applying changes" +#~ msgstr "正在套用變更" + +#~ msgid "Configuration applied." +#~ msgstr "啟用設定" + +#~ msgid "Save & Apply" +#~ msgstr "保存 & 啟用" + +#~ msgid "The following changes have been committed" +#~ msgstr "接下來的修改已經被承諾" + +#~ msgid "There are no pending changes to apply!" +#~ msgstr "尚無聽候的修改被採用" + +#~ msgid "Action" +#~ msgstr "動作" + +#~ msgid "Buttons" +#~ msgstr "按鈕" + +#~ msgid "Handler" +#~ msgstr "多執行緒" + +#~ msgid "Maximum hold time" +#~ msgstr "可持有最長時間" + +#~ msgid "Minimum hold time" +#~ msgstr "可持有的最低時間" + +#~ msgid "Path to executable which handles the button event" +#~ msgstr "處理按鍵效果可執行檔路徑" + +#~ msgid "Specifies the button state to handle" +#~ msgstr "指定這個按鈕狀態以便操作" + +#~ msgid "This page allows the configuration of custom button actions" +#~ msgstr "這一頁允許客製化按鍵動作的設定" + #~ msgid "Leasetime" #~ msgstr "租賃時間" diff --git a/modules/luci-base/root/etc/config/luci b/modules/luci-base/root/etc/config/luci index baa3ac5d1e..82c2230e55 100644 --- a/modules/luci-base/root/etc/config/luci +++ b/modules/luci-base/root/etc/config/luci @@ -22,3 +22,9 @@ config internal ccache option enable 1 config internal themes + +config internal apply + option rollback 30 + option holdoff 4 + option timeout 5 + option display 1.5 diff --git a/modules/luci-base/root/etc/config/ucitrack b/modules/luci-base/root/etc/config/ucitrack index d083922955..1d4d110f2a 100644 --- a/modules/luci-base/root/etc/config/ucitrack +++ b/modules/luci-base/root/etc/config/ucitrack @@ -36,6 +36,7 @@ config qos config system option init led + option exec '/etc/init.d/log reload' list affects luci_statistics list affects dhcp diff --git a/modules/luci-base/root/etc/init.d/ucitrack b/modules/luci-base/root/etc/init.d/ucitrack new file mode 100755 index 0000000000..27d34fa297 --- /dev/null +++ b/modules/luci-base/root/etc/init.d/ucitrack @@ -0,0 +1,57 @@ +#!/bin/sh /etc/rc.common + +START=80 +USE_PROCD=1 + +register_init() { + local config="$1" + local init="$2" + shift; shift + + if [ -x "$init" ] && "$init" enabled && ! grep -sqE 'USE_PROCD=.' "$init"; then + logger -t "ucitrack" "Setting up /etc/config/$config reload trigger for non-procd $init" + procd_add_config_trigger "config.change" "$config" "$init" "$@" + fi +} + +register_trigger() { + local sid="$1" + local config init exec affects affected + + config_get config "$sid" TYPE + config_get init "$sid" init + config_get exec "$sid" exec + config_get affects "$sid" affects + + if [ -n "$init" ]; then + register_init "$config" "/etc/init.d/$init" "reload" + fi + + if [ -n "$exec" ]; then + case "$exec" in + /etc/init.d/*) + set -- $exec + register_init "$config" "$@" + ;; + *) + logger -t "ucitrack" "Setting up non-init /etc/config/$config reload handler: $exec" + procd_add_config_trigger "config.change" "$config" "$exec" + ;; + esac + fi + + for affected in $affects; do + logger -t "ucitrack" "Setting up /etc/config/$config reload dependency on /etc/config/$affected" + procd_add_config_trigger "config.change" "$affected" \ + ubus call service event \ + "$(printf '{"type":"config.change","data":{"package":"%s"}}' $config)" + done +} + +service_triggers() { + config_foreach register_trigger +} + +start_service() { + config_load ucitrack +} diff --git a/modules/luci-base/root/usr/share/rpcd/acl.d/luci-base.json b/modules/luci-base/root/usr/share/rpcd/acl.d/luci-base.json new file mode 100644 index 0000000000..ed7ad8aa8a --- /dev/null +++ b/modules/luci-base/root/usr/share/rpcd/acl.d/luci-base.json @@ -0,0 +1,11 @@ +{ + "uci-access": { + "description": "Grant uci write access to all configurations", + "read": { + "uci": [ "*" ] + }, + "write": { + "uci": [ "*" ] + } + } +} diff --git a/modules/luci-mod-admin-full/luasrc/controller/admin/network.lua b/modules/luci-mod-admin-full/luasrc/controller/admin/network.lua index 2cb2108b9f..a26d3d14e1 100644 --- a/modules/luci-mod-admin-full/luasrc/controller/admin/network.lua +++ b/modules/luci-mod-admin-full/luasrc/controller/admin/network.lua @@ -82,7 +82,7 @@ function index() end - page = entry({"admin", "network", "iface_add"}, cbi("admin_network/iface_add"), nil) + page = entry({"admin", "network", "iface_add"}, form("admin_network/iface_add"), nil) page.leaf = true page = entry({"admin", "network", "iface_delete"}, post("iface_delete"), nil) @@ -258,7 +258,6 @@ function iface_status(ifaces) type = device:type(), ifname = device:name(), macaddr = device:mac(), - macaddr = device:mac(), is_up = device:is_up(), rx_bytes = device:rx_bytes(), tx_bytes = device:tx_bytes(), @@ -290,7 +289,8 @@ function iface_reconnect(iface) local netmd = require "luci.model.network".init() local net = netmd:get_network(iface) if net then - luci.sys.call("env -i /sbin/ifup %q >/dev/null 2>/dev/null" % iface) + luci.sys.call("env -i /sbin/ifup %s >/dev/null 2>/dev/null" + % luci.util.shellquote(iface)) luci.http.status(200, "Reconnected") return end @@ -302,7 +302,8 @@ function iface_shutdown(iface) local netmd = require "luci.model.network".init() local net = netmd:get_network(iface) if net then - luci.sys.call("env -i /sbin/ifdown %q >/dev/null 2>/dev/null" % iface) + luci.sys.call("env -i /sbin/ifdown %s >/dev/null 2>/dev/null" + % luci.util.shellquote(iface)) luci.http.status(200, "Shutdown") return end @@ -314,7 +315,8 @@ function iface_delete(iface) local netmd = require "luci.model.network".init() local net = netmd:del_network(iface) if net then - luci.sys.call("env -i /sbin/ifdown %q >/dev/null 2>/dev/null" % iface) + luci.sys.call("env -i /sbin/ifdown %s >/dev/null 2>/dev/null" + % luci.util.shellquote(iface)) luci.http.redirect(luci.dispatcher.build_url("admin/network/network")) netmd:commit("network") netmd:commit("wireless") @@ -328,9 +330,11 @@ function wifi_status(devs) local s = require "luci.tools.status" local rv = { } - local dev - for dev in devs:gmatch("[%w%.%-]+") do - rv[#rv+1] = s.wifi_network(dev) + if type(devs) == "string" then + local dev + for dev in devs:gmatch("[%w%.%-]+") do + rv[#rv+1] = s.wifi_network(dev) + end end if #rv > 0 then @@ -390,7 +394,7 @@ function diag_command(cmd, addr) if addr and addr:match("^[a-zA-Z0-9%-%.:_]+$") then luci.http.prepare_content("text/plain") - local util = io.popen(cmd % addr) + local util = io.popen(cmd % luci.util.shellquote(addr)) if util then while true do local ln = util:read("*l") @@ -409,21 +413,21 @@ function diag_command(cmd, addr) end function diag_ping(addr) - diag_command("ping -c 5 -W 1 %q 2>&1", addr) + diag_command("ping -c 5 -W 1 %s 2>&1", addr) end function diag_traceroute(addr) - diag_command("traceroute -q 1 -w 1 -n %q 2>&1", addr) + diag_command("traceroute -q 1 -w 1 -n %s 2>&1", addr) end function diag_nslookup(addr) - diag_command("nslookup %q 2>&1", addr) + diag_command("nslookup %s 2>&1", addr) end function diag_ping6(addr) - diag_command("ping6 -c 5 %q 2>&1", addr) + diag_command("ping6 -c 5 %s 2>&1", addr) end function diag_traceroute6(addr) - diag_command("traceroute6 -q 1 -w 2 -n %q 2>&1", addr) + diag_command("traceroute6 -q 1 -w 2 -n %s 2>&1", addr) end diff --git a/modules/luci-mod-admin-full/luasrc/controller/admin/status.lua b/modules/luci-mod-admin-full/luasrc/controller/admin/status.lua index 22e1b7e173..4471fd597a 100644 --- a/modules/luci-mod-admin-full/luasrc/controller/admin/status.lua +++ b/modules/luci-mod-admin-full/luasrc/controller/admin/status.lua @@ -14,7 +14,7 @@ function index() entry({"admin", "status", "routes"}, template("admin_status/routes"), _("Routes"), 3) entry({"admin", "status", "syslog"}, call("action_syslog"), _("System Log"), 4) entry({"admin", "status", "dmesg"}, call("action_dmesg"), _("Kernel Log"), 5) - entry({"admin", "status", "processes"}, cbi("admin_status/processes"), _("Processes"), 6) + entry({"admin", "status", "processes"}, form("admin_status/processes"), _("Processes"), 6) entry({"admin", "status", "realtime"}, alias("admin", "status", "realtime", "load"), _("Realtime Graphs"), 7) @@ -62,7 +62,9 @@ end function action_bandwidth(iface) luci.http.prepare_content("application/json") - local bwc = io.popen("luci-bwc -i %q 2>/dev/null" % iface) + local bwc = io.popen("luci-bwc -i %s 2>/dev/null" + % luci.util.shellquote(iface)) + if bwc then luci.http.write("[") @@ -80,7 +82,9 @@ end function action_wireless(iface) luci.http.prepare_content("application/json") - local bwc = io.popen("luci-bwc -r %q 2>/dev/null" % iface) + local bwc = io.popen("luci-bwc -r %s 2>/dev/null" + % luci.util.shellquote(iface)) + if bwc then luci.http.write("[") diff --git a/modules/luci-mod-admin-full/luasrc/controller/admin/system.lua b/modules/luci-mod-admin-full/luasrc/controller/admin/system.lua index 5478afa3e6..6fcd66f441 100644 --- a/modules/luci-mod-admin-full/luasrc/controller/admin/system.lua +++ b/modules/luci-mod-admin-full/luasrc/controller/admin/system.lua @@ -27,7 +27,8 @@ function index() entry({"admin", "system", "fstab", "swap"}, cbi("admin_system/fstab/swap"), nil).leaf = true end - if fs.access("/sys/class/leds") then + local nodes, number = fs.glob("/sys/class/leds/*") + if number > 0 then entry({"admin", "system", "leds"}, cbi("admin_system/leds"), _("<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"), 60) end @@ -195,7 +196,7 @@ local function supports_sysupgrade() end local function supports_reset() - return (os.execute([[grep -sqE '"rootfs_data"|"ubi"' /proc/mtd]]) == 0) + return (os.execute([[grep -sq "^overlayfs:/overlay / overlay " /proc/mounts]]) == 0) end local function storage_size() 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 9c33d9c18b..9533ff5e6e 100644 --- a/modules/luci-mod-admin-full/luasrc/controller/admin/uci.lua +++ b/modules/luci-mod-admin-full/luasrc/controller/admin/uci.lua @@ -5,60 +5,97 @@ module("luci.controller.admin.uci", package.seeall) function index() - local redir = luci.http.formvalue("redir", true) or - luci.dispatcher.build_url(unpack(luci.dispatcher.context.request)) + local redir = luci.http.formvalue("redir", true) + 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", "revert"}, post("action_revert"), _("Revert"), 30).query = {redir=redir} - entry({"admin", "uci", "apply"}, post("action_apply"), _("Apply"), 20).query = {redir=redir} - entry({"admin", "uci", "saveapply"}, post("action_apply"), _("Save & Apply"), 10).query = {redir=redir} + + local node + local authen = function(checkpass, allowed_users) + return "root", luci.http.formvalue("sid") + end + + node = entry({"admin", "uci", "apply_rollback"}, post("action_apply_rollback"), nil) + node.cors = true + node.sysauth_authenticator = authen + + node = entry({"admin", "uci", "apply_unchecked"}, post("action_apply_unchecked"), nil) + node.cors = true + node.sysauth_authenticator = authen + + node = entry({"admin", "uci", "confirm"}, post("action_confirm"), nil) + node.cors = true + node.sysauth_authenticator = authen end + function action_changes() - local uci = luci.model.uci.cursor() + local uci = require "luci.model.uci" local changes = uci:changes() luci.template.render("admin_uci/changes", { - changes = next(changes) and changes + changes = next(changes) and changes, + timeout = timeout }) end -function action_apply() - local path = luci.dispatcher.context.path - local uci = luci.model.uci.cursor() +function action_revert() + local uci = require "luci.model.uci" local changes = uci:changes() - local reload = {} - -- Collect files to be applied and commit changes + -- Collect files to be reverted + local r, tbl for r, tbl in pairs(changes) do - table.insert(reload, r) - if path[#path] ~= "apply" then - uci:load(r) - uci:commit(r) - uci:unload(r) - end + uci:revert(r) end - luci.template.render("admin_uci/apply", { - changes = next(changes) and changes, - configs = reload + luci.template.render("admin_uci/revert", { + changes = next(changes) and changes }) end -function action_revert() - local uci = luci.model.uci.cursor() - local changes = uci:changes() +local function ubus_state_to_http(errstr) + local map = { + ["Invalid command"] = 400, + ["Invalid argument"] = 400, + ["Method not found"] = 404, + ["Entry not found"] = 404, + ["No data"] = 204, + ["Permission denied"] = 403, + ["Timeout"] = 504, + ["Not supported"] = 500, + ["Unknown error"] = 500, + ["Connection failed"] = 503 + } - -- Collect files to be reverted - for r, tbl in pairs(changes) do - uci:load(r) - uci:revert(r) - uci:unload(r) + local code = map[errstr] or 200 + local msg = errstr or "OK" + + luci.http.status(code, msg) + + if code ~= 204 then + luci.http.prepare_content("text/plain") + luci.http.write(msg) end +end - luci.template.render("admin_uci/revert", { - changes = next(changes) and changes - }) +function action_apply_rollback() + local uci = require "luci.model.uci" + local _, errstr = uci:apply(true) + ubus_state_to_http(errstr) +end + +function action_apply_unchecked() + local uci = require "luci.model.uci" + local _, errstr = uci:apply(false) + ubus_state_to_http(errstr) +end + +function action_confirm() + local uci = require "luci.model.uci" + local _, errstr = uci:confirm() + ubus_state_to_http(errstr) end diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua index 0c01ceffca..855ed31f10 100644 --- a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua +++ b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua @@ -2,6 +2,7 @@ -- Licensed to the public under the Apache License 2.0. local ipc = require "luci.ip" +local sys = require "luci.sys" local o require "luci.util" @@ -114,7 +115,7 @@ s:taboption("advanced", Flag, "nonegcache", s:taboption("advanced", Value, "serversfile", translate("Additional servers file"), translate("This file may contain lines like 'server=/domain/1.2.3.4' or 'server=1.2.3.4' for".. - "domain-specific or full upstream <abbr title=\"Domain Name System\">DNS</abbr> servers.")) + "domain-specific or full upstream <abbr title=\"Domain Name System\">DNS</abbr> servers.")) s:taboption("advanced", Flag, "strictorder", translate("Strict order"), @@ -211,6 +212,12 @@ cq.optional = true cq.datatype = "uinteger" cq.placeholder = 150 +cs = s:taboption("advanced", Value, "cachesize", + translate("Size of DNS query cache"), + translate("Number of cached DNS entries (max is 10000, 0 is no caching)")) +cs.optional = true +cs.datatype = "range(0,10000)" +cs.placeholder = 150 s:taboption("tftp", Flag, "enable_tftp", translate("Enable TFTP server")).optional = true @@ -263,8 +270,8 @@ s = m:section(TypedSection, "host", translate("Static Leases"), "DHCP clients. They are also required for non-dynamic interface configurations where " .. "only hosts with a corresponding lease are served.") .. "<br />" .. translate("Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</em> " .. - "indentifies the host, the <em>IPv4-Address</em> specifies to the fixed address to " .. - "use and the <em>Hostname</em> is assigned as symbolic name to the requesting host. " .. + "identifies the host, the <em>IPv4-Address</em> specifies the fixed address to " .. + "use, and the <em>Hostname</em> is assigned as a symbolic name to the requesting host. " .. "The optional <em>Lease time</em> can be used to set non-standard host-specific " .. "lease time, e.g. 12h, 3d or infinite.")) @@ -273,7 +280,7 @@ s.anonymous = true s.template = "cbi/tblsection" name = s:option(Value, "name", translate("Hostname")) -name.datatype = "hostname" +name.datatype = "hostname('strict')" name.rmempty = true function name.write(self, section, value) @@ -290,14 +297,19 @@ mac = s:option(Value, "mac", translate("<abbr title=\"Media Access Control\">MAC mac.datatype = "list(macaddr)" mac.rmempty = true +function mac.cfgvalue(self, section) + local val = Value.cfgvalue(self, section) + return ipc.checkmac(val) or val +end + ip = s:option(Value, "ip", translate("<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address")) ip.datatype = "or(ip4addr,'ignore')" time = s:option(Value, "leasetime", translate("Lease time")) -time.rmempty = true +time.rmempty = true duid = s:option(Value, "duid", translate("<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>")) -duid.datatype = "and(rangelength(28,36),hexstring)" +duid.datatype = "and(rangelength(20,36),hexstring)" fp = io.open("/var/hosts/odhcpd") if fp then for line in fp:lines() do @@ -311,10 +323,10 @@ end hostid = s:option(Value, "hostid", translate("<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)")) -ipc.neighbors({ family = 4 }, function(n) - if n.mac and n.dest then - ip:value(n.dest:string()) - mac:value(n.mac, "%s (%s)" %{ n.mac, n.dest:string() }) +sys.net.host_hints(function(m, v4, v6, name) + if m and v4 then + ip:value(v4) + mac:value(m, "%s (%s)" %{ m, name or v4 }) end end) diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/hosts.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/hosts.lua index fafacf35c5..46945af58b 100644 --- a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/hosts.lua +++ b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/hosts.lua @@ -3,6 +3,7 @@ -- Licensed to the public under the Apache License 2.0. local ipc = require "luci.ip" +local sys = require "luci.sys" m = Map("dhcp", translate("Hostnames")) @@ -19,9 +20,11 @@ ip = s:option(Value, "ip", translate("IP address")) ip.datatype = "ipaddr" ip.rmempty = true -ipc.neighbors({ }, function(n) - if n.mac and n.dest and not n.dest:is6linklocal() then - ip:value(n.dest:string(), "%s (%s)" %{ n.dest:string(), n.mac }) +sys.net.host_hints(function(mac, v4, v6, name) + v6 = v6 and ipc.IPv6(v6) + + if v4 or (v6 and not v6:is6linklocal()) then + ip:value(tostring(v4 or v6), "%s (%s)" %{ tostring(v4 or v6), name or mac }) end end) diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua index 4fc71cefab..38e5de7b39 100644 --- a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua +++ b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua @@ -16,6 +16,7 @@ local has_firewall = fs.access("/etc/config/firewall") m = Map("network", translate("Interfaces") .. " - " .. arg[1]:upper(), translate("On this page you can configure the network interfaces. You can bridge several interfaces by ticking the \"bridge interfaces\" field and enter the names of several network interfaces separated by spaces. You can also use <abbr title=\"Virtual Local Area Network\">VLAN</abbr> notation <samp>INTERFACE.VLANNR</samp> (<abbr title=\"for example\">e.g.</abbr>: <samp>eth0.1</samp>).")) m.redirect = luci.dispatcher.build_url("admin", "network", "network") m:chain("wireless") +m:chain("luci") if has_firewall then m:chain("firewall") @@ -27,18 +28,52 @@ fw.init(m.uci) local net = nw:get_network(arg[1]) +local function set_ifstate(name, option, value) + local found = false + + m.uci:foreach("luci", "ifstate", function (s) + if s.interface == name then + m.uci:set("luci", s[".name"], option, value) + found = true + return false + end + end) + + if not found then + local sid = m.uci:add("luci", "ifstate") + m.uci:set("luci", sid, "interface", name) + m.uci:set("luci", sid, option, value) + end + + m.uci:save("luci") +end + +local function get_ifstate(name, option) + local val + + m.uci:foreach("luci", "ifstate", function (s) + if s.interface == name then + val = m.uci:get("luci", s[".name"], option) + return false + end + end) + + return val +end + local function backup_ifnames(is_bridge) - if not net:is_floating() and not m:get(net:name(), "_orig_ifname") then + if not net:is_floating() and not get_ifstate(net:name(), "ifname") then local ifcs = net:get_interfaces() or { net:get_interface() } if ifcs then local _, ifn local ifns = { } for _, ifn in ipairs(ifcs) do - ifns[#ifns+1] = ifn:name() + local wif = ifn:get_wifinet() + ifns[#ifns+1] = wif and wif:id() or ifn:name() end if #ifns > 0 then - m:set(net:name(), "_orig_ifname", table.concat(ifns, " ")) - m:set(net:name(), "_orig_bridge", tostring(net:is_bridge())) + set_ifstate(net:name(), "ifname", table.concat(ifns, " ")) + set_ifstate(net:name(), "bridge", tostring(net:is_bridge())) end end end @@ -84,10 +119,10 @@ if m:formvalue("cbid.network.%s._switch" % net:name()) then elseif net:is_floating() and not proto:is_floating() then -- if we have backup data, then re-add all orphaned interfaces -- from it and restore the bridge choice - local br = (m:get(net:name(), "_orig_bridge") == "true") + local br = (get_ifstate(net:name(), "bridge") == "true") local ifn local ifns = { } - for ifn in ut.imatch(m:get(net:name(), "_orig_ifname")) do + for ifn in ut.imatch(get_ifstate(net:name(), "ifname")) do ifn = nw:get_interface(ifn) if ifn and not ifn:get_network() then proto:add_interface(ifn) @@ -114,9 +149,7 @@ if m:formvalue("cbid.network.%s._switch" % net:name()) then for k, v in pairs(m:get(net:name())) do if k:sub(1,1) ~= "." and k ~= "type" and - k ~= "ifname" and - k ~= "_orig_ifname" and - k ~= "_orig_bridge" + k ~= "ifname" then m:del(net:name(), k) end @@ -239,6 +272,11 @@ if not net:is_virtual() then translate("Enables the Spanning Tree Protocol on this bridge")) stp:depends("type", "bridge") stp.rmempty = true + + igmp = s:taboption("physical", Flag, "igmp_snooping", translate("Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> snooping"), + translate("Enables IGMP snooping on this bridge")) + igmp:depends("type", "bridge") + igmp.rmempty = true end diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/network.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/network.lua index 83fdaadcbb..2bfe974af1 100644 --- a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/network.lua +++ b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/network.lua @@ -56,9 +56,9 @@ if fs.access("/etc/init.d/dsl_control") then line_mode:value("vdsl", translate("VDSL")) ds_snr = dsl:option(ListValue, "ds_snr_offset", translate("Downstream SNR offset")) - ds_snr:depends("line_mode", "adsl") - for i = -50, 50, 5 do - ds_snr:value(i, translate("%.1f dB" %{ i / 10} )) + ds_snr.default = "0" + for i = -100, 100, 5 do + ds_snr:value(i, translatef("%.1f dB", i / 10)) end end diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/vlan.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/vlan.lua index 89a73a5ca8..b52dff13ac 100644 --- a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/vlan.lua +++ b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/vlan.lua @@ -5,6 +5,7 @@ m = Map("network", translate("Switch"), translate("The network ports on this device can be combined to several <abbr title=\"Virtual Local Area Network\">VLAN</abbr>s in which computers can communicate directly with each other. <abbr title=\"Virtual Local Area Network\">VLAN</abbr>s are often used to separate different network segments. Often there is by default one Uplink port for a connection to the next greater network like the internet and other ports for a local network.")) local fs = require "nixio.fs" +local ut = require "luci.util" local nw = require "luci.model.network" local switches = { } @@ -74,7 +75,7 @@ m.uci:foreach("network", "switch", end -- Parse some common switch properties from swconfig help output. - local swc = io.popen("swconfig dev %q help 2>/dev/null" % switch_name) + local swc = io.popen("swconfig dev %s help 2>/dev/null" % ut.shellquote(switch_name)) if swc then local is_port_attr = false diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua index c64226931c..cacaa25958 100644 --- a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua +++ b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua @@ -7,6 +7,17 @@ local ut = require "luci.util" local nt = require "luci.sys".net local fs = require "nixio.fs" +local acct_port, acct_secret, acct_server, anonymous_identity, ant1, ant2, + auth, auth_port, auth_secret, auth_server, bssid, cacert, cacert2, + cc, ch, cipher, clientcert, clientcert2, ea, eaptype, en, encr, + ft_protocol, ft_psk_generate_local, hidden, htmode, identity, + ieee80211r, ieee80211w, ifname, isolate, key_retries, + legacyrates, max_timeout, meshfwd, meshid, ml, mobility_domain, mode, + mp, nasid, network, password, pmk_r1_push, privkey, privkey2, privkeypwd, + privkeypwd2, r0_key_lifetime, r0kh, r1_key_holder, r1kh, + reassociation_deadline, retry_timeout, ssid, st, tp, wepkey, wepslot, + wmm, wpakey, wps + arg[1] = arg[1] or "" m = Map("wireless", "", @@ -19,16 +30,6 @@ m:chain("network") m:chain("firewall") m.redirect = luci.dispatcher.build_url("admin/network/wireless") -local ifsection - -function m.on_commit(map) - local wnet = nw:get_wifinet(arg[1]) - if ifsection and wnet then - ifsection.section = wnet.sid - m.title = luci.util.pcdata(wnet:get_i18n()) - end -end - nw.init(m.uci) local wnet = nw:get_wifinet(arg[1]) @@ -40,38 +41,6 @@ if not wnet or not wdev then return end --- wireless toggle was requested, commit and reload page -function m.parse(map) - local new_cc = m:formvalue("cbid.wireless.%s.country" % wdev:name()) - local old_cc = m:get(wdev:name(), "country") - - if m:formvalue("cbid.wireless.%s.__toggle" % wdev:name()) then - if wdev:get("disabled") == "1" or wnet:get("disabled") == "1" then - wnet:set("disabled", nil) - else - wnet:set("disabled", "1") - end - wdev:set("disabled", nil) - - nw:commit("wireless") - luci.sys.call("(env -i /bin/ubus call network reload) >/dev/null 2>/dev/null") - - luci.http.redirect(luci.dispatcher.build_url("admin/network/wireless", arg[1])) - return - end - - Map.parse(map) - - if m:get(wdev:name(), "type") == "mac80211" and new_cc and new_cc ~= old_cc then - luci.sys.call("iw reg set %q" % new_cc) - luci.http.redirect(luci.dispatcher.build_url("admin/network/wireless", arg[1])) - return - end -end - -m.title = luci.util.pcdata(wnet:get_i18n()) - - local function txpower_list(iw) local list = iw.txpwrlist or { } local off = tonumber(iw.txpower_offset) or 0 @@ -112,6 +81,57 @@ local hw_modes = iw.hwmodelist or { } local tx_power_list = txpower_list(iw) local tx_power_cur = txpower_current(wdev:get("txpower"), tx_power_list) +-- wireless toggle was requested, commit and reload page +function m.parse(map) + local new_cc = m:formvalue("cbid.wireless.%s.country" % wdev:name()) + local old_cc = m:get(wdev:name(), "country") + + if m:formvalue("cbid.wireless.%s.__toggle" % wdev:name()) then + if wdev:get("disabled") == "1" or wnet:get("disabled") == "1" then + wnet:set("disabled", nil) + else + wnet:set("disabled", "1") + end + wdev:set("disabled", nil) + m.apply_needed = true + m.redirect = nil + end + + Map.parse(map) + + if m:get(wdev:name(), "type") == "mac80211" and new_cc and new_cc ~= old_cc then + luci.sys.call("iw reg set %s" % ut.shellquote(new_cc)) + + local old_ch = tonumber(m:formvalue("cbid.wireless.%s._mode_freq.channel" % wdev:name()) or "") + if old_ch then + local _, c, new_ch + for _, c in ipairs(iw.freqlist) do + if c.channel > old_ch or (old_ch <= 14 and c.channel > 14) then + break + end + new_ch = c.channel + end + if new_ch ~= old_ch then + wdev:set("channel", new_ch) + m.message = translatef("Channel %d is not available in the %s regulatory domain and has been auto-adjusted to %d.", + old_ch, new_cc, new_ch) + end + end + end + + if wdev:get("disabled") == "1" or wnet:get("disabled") == "1" then + en.title = translate("Wireless network is disabled") + en.inputtitle = translate("Enable") + en.inputstyle = "apply" + else + en.title = translate("Wireless network is enabled") + en.inputtitle = translate("Disable") + en.inputstyle = "reset" + end +end + +m.title = luci.util.pcdata(wnet:get_i18n()) + s = m:section(NamedSection, wdev:name(), "wifi-device", translate("Device Configuration")) s.addremove = false @@ -119,29 +139,12 @@ s:tab("general", translate("General Setup")) s:tab("macfilter", translate("MAC-Filter")) s:tab("advanced", translate("Advanced Settings")) ---[[ -back = s:option(DummyValue, "_overview", translate("Overview")) -back.value = "" -back.titleref = luci.dispatcher.build_url("admin", "network", "wireless") -]] - st = s:taboption("general", DummyValue, "__status", translate("Status")) st.template = "admin_network/wifi_status" st.ifname = arg[1] en = s:taboption("general", Button, "__toggle") -if wdev:get("disabled") == "1" or wnet:get("disabled") == "1" then - en.title = translate("Wireless network is disabled") - en.inputtitle = translate("Enable") - en.inputstyle = "apply" -else - en.title = translate("Wireless network is enabled") - en.inputtitle = translate("Disable") - en.inputstyle = "reset" -end - - local hwtype = wdev:get("type") -- NanoFoo @@ -170,9 +173,7 @@ if found_sta then found_sta.channel or "(auto)", table.concat(found_sta.names, ", ")) else ch = s:taboption("general", Value, "_mode_freq", '<br />'..translate("Operating frequency")) - ch.hwmodes = hw_modes - ch.htmodes = iw.htmodelist - ch.freqlist = iw.freqlist + ch.iwinfo = iw ch.template = "cbi/wireless_modefreq" function ch.cfgvalue(self, section) @@ -228,6 +229,10 @@ if hwtype == "mac80211" then s:taboption("advanced", Value, "country", translate("Country Code"), translate("Use ISO/IEC 3166 alpha2 country codes.")) end + legacyrates = s:taboption("advanced", Flag, "legacy_rates", translate("Allow legacy 802.11b rates")) + legacyrates.rmempty = false + legacyrates.default = "1" + s:taboption("advanced", Value, "distance", translate("Distance Optimization"), translate("Distance to farthest network member in meters.")) @@ -337,7 +342,6 @@ end ----------------------- Interface ----------------------- s = m:section(NamedSection, wnet.sid, "wifi-iface", translate("Interface Configuration")) -ifsection = s s.addremove = false s.anonymous = true s.defaults.device = wdev:name() @@ -347,15 +351,31 @@ s:tab("encryption", translate("Wireless Security")) s:tab("macfilter", translate("MAC-Filter")) s:tab("advanced", translate("Advanced Settings")) -ssid = s:taboption("general", Value, "ssid", translate("<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>")) -ssid.datatype = "maxlength(32)" - mode = s:taboption("general", ListValue, "mode", translate("Mode")) mode.override_values = true mode:value("ap", translate("Access Point")) mode:value("sta", translate("Client")) mode:value("adhoc", translate("Ad-Hoc")) +meshid = s:taboption("general", Value, "mesh_id", translate("Mesh Id")) +meshid:depends({mode="mesh"}) + +meshfwd = s:taboption("advanced", Flag, "mesh_fwding", translate("Forward mesh peer traffic")) +meshfwd.rmempty = false +meshfwd.default = "1" +meshfwd:depends({mode="mesh"}) + +ssid = s:taboption("general", Value, "ssid", translate("<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>")) +ssid.datatype = "maxlength(32)" +ssid:depends({mode="ap"}) +ssid:depends({mode="sta"}) +ssid:depends({mode="adhoc"}) +ssid:depends({mode="ahdemo"}) +ssid:depends({mode="monitor"}) +ssid:depends({mode="ap-wds"}) +ssid:depends({mode="sta-wds"}) +ssid:depends({mode="wds"}) + bssid = s:taboption("general", Value, "bssid", translate("<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>")) network = s:taboption("general", Value, "network", translate("Network"), @@ -1029,7 +1049,7 @@ if hwtype == "mac80211" then retry_timeout.rmempty = true end - local key_retries = s:taboption("encryption", Flag, "wpa_disable_eapol_key_retries", + key_retries = s:taboption("encryption", Flag, "wpa_disable_eapol_key_retries", translate("Enable key reinstallation (KRACK) countermeasures"), translate("Complicates key reinstallation attacks on the client side by disabling retransmission of EAPOL-Key frames that are used to install keys. This workaround might cause interoperability issues and reduced robustness of key negotiation especially in environments with heavy traffic load.")) diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/buttons.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/buttons.lua deleted file mode 100644 index 6a81d7154e..0000000000 --- a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/buttons.lua +++ /dev/null @@ -1,27 +0,0 @@ --- Copyright 2008 Steven Barth <steven@midlink.org> --- Licensed to the public under the Apache License 2.0. - -m = Map("system", translate("Buttons"), - translate("This page allows the configuration of custom button actions")) - -s = m:section(TypedSection, "button", "") -s.anonymous = true -s.addremove = true - -s:option(Value, "button", translate("Name")) - -act = s:option(ListValue, "action", - translate("Action"), - translate("Specifies the button state to handle")) - -act:value("released") - -s:option(Value, "handler", - translate("Handler"), - translate("Path to executable which handles the button event")) - -min = s:option(Value, "min", translate("Minimum hold time")) -min.rmempty = true - -max = s:option(Value, "max", translate("Maximum hold time")) -max.rmempty = true diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/fstab.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/fstab.lua index fd466d5c26..3ce5351bf0 100644 --- a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/fstab.lua +++ b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/fstab.lua @@ -62,7 +62,7 @@ o = s:option(Flag, "auto_mount", translate("Automount Filesystem"), translate("A o.default = o.enabled o.rmempty = false -o = s:option(Flag, "check_fs", translate("Check fileystems before mount"), translate("Automatically check filesystem for errors before mounting")) +o = s:option(Flag, "check_fs", translate("Check filesystems before mount"), translate("Automatically check filesystem for errors before mounting")) o.default = o.disabled o.rmempty = false diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/leds.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/leds.lua index 74e2f1a19d..2ea044e16a 100644 --- a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/leds.lua +++ b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/leds.lua @@ -152,4 +152,7 @@ for p in nixio.fs.glob("/sys/bus/usb/devices/*/usb[0-9]*-port[0-9]*") do end end +port_mask = s:option(Value, "port_mask", translate ("Switch Port Mask")) +port_mask:depends("trigger", "switch0") + return m diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_network/lease_status.htm b/modules/luci-mod-admin-full/luasrc/view/admin_network/lease_status.htm index ea6ee91c71..28a37dcd98 100644 --- a/modules/luci-mod-admin-full/luasrc/view/admin_network/lease_status.htm +++ b/modules/luci-mod-admin-full/luasrc/view/admin_network/lease_status.htm @@ -5,7 +5,7 @@ return duid.substr(16).replace(/(..)(?=..)/g, '$1:').toUpperCase(); // DUID-LL / Ethernet - if (duid.length === 24 && duid.substr(0, 8) === '00030001') + if (duid.length === 20 && duid.substr(0, 8) === '00030001') return duid.substr(8).replace(/(..)(?=..)/g, '$1:').toUpperCase(); return null; 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 18f66c2a82..5e6e494ad6 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 @@ -40,10 +40,9 @@ local conn_count = tonumber( fs.readfile("/proc/sys/net/netfilter/nf_conntrack_count") or "") or 0 - local conn_max = tonumber(( - luci.sys.exec("sysctl net.nf_conntrack_max") or - luci.sys.exec("sysctl net.ipv4.netfilter.ip_conntrack_max") or - ""):match("%d+")) or 4096 + local conn_max = tonumber(luci.sys.exec( + "sysctl -n -e net.nf_conntrack_max net.ipv4.netfilter.ip_conntrack_max" + ):match("%d+")) or 4096 local rv = { uptime = sysinfo.uptime or 0, @@ -150,7 +149,7 @@ return duid.substr(16).replace(/(..)(?=..)/g, '$1:').toUpperCase(); // DUID-LL / Ethernet - if (duid.length === 24 && duid.substr(0, 8) === '00030001') + if (duid.length === 20 && duid.substr(0, 8) === '00030001') return duid.substr(8).replace(/(..)(?=..)/g, '$1:').toUpperCase(); return null; diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_status/routes.htm b/modules/luci-mod-admin-full/luasrc/view/admin_status/routes.htm index 5f2c074939..f474c71568 100644 --- a/modules/luci-mod-admin-full/luasrc/view/admin_status/routes.htm +++ b/modules/luci-mod-admin-full/luasrc/view/admin_status/routes.htm @@ -53,7 +53,7 @@ <tr class="cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>"> <td class="cbi-value-field"><%=v.dest%></td> <td class="cbi-value-field"><%=v.mac%></td> - <td class="cbi-value-field"><%=v.dev%></td> + <td class="cbi-value-field"><%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%></td> </tr> <% style = not style diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_system/flashops.htm b/modules/luci-mod-admin-full/luasrc/view/admin_system/flashops.htm index 3e3f65d919..b32ef78263 100644 --- a/modules/luci-mod-admin-full/luasrc/view/admin_system/flashops.htm +++ b/modules/luci-mod-admin-full/luasrc/view/admin_system/flashops.htm @@ -54,6 +54,9 @@ </div> </form> </div> + <% if reset_avail then %> + <div class="alert-message warning"><%:Custom files (certificates, scripts) may remain on the system. To prevent this, perform a factory-reset first.%></div> + <% end %> </fieldset> <br /> 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 d5d78289be..88e0fffd9c 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 @@ -69,7 +69,7 @@ end <% if querypat then %> <div class="cbi-value"> <%:Displaying only packages containing%> <strong>"<%=pcdata(query)%>"</strong> - <input type="button" onclick="location.href='?display=<%=pcdata(display)%>'" href="#" class="cbi-button cbi-button-reset" style="margin-left:1em" value="<%:Reset%>" /> + <input type="button" onclick="location.href='?display=<%=luci.http.urlencode(display)%>'" href="#" class="cbi-button cbi-button-reset" style="margin-left:1em" value="<%:Reset%>" /> <br style="clear:both" /> </div> <% end %> diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_uci/apply.htm b/modules/luci-mod-admin-full/luasrc/view/admin_uci/apply.htm deleted file mode 100644 index 370027e510..0000000000 --- a/modules/luci-mod-admin-full/luasrc/view/admin_uci/apply.htm +++ /dev/null @@ -1,23 +0,0 @@ -<%# - Copyright 2008 Steven Barth <steven@midlink.org> - Copyright 2008 Jo-Philipp Wich <jow@openwrt.org> - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - -<h2 name="content"><%:Configuration%> / <%:Apply%></h2> - -<% if changes then %> - <%+cbi/apply_xhr%> - <%+admin_uci/changelog%> - - <%- cbi_apply_xhr('uci-apply', configs) -%> - - <p><strong><%:The following changes have been committed%>:</strong></p> - <%- uci_changelog(changes) -%> -<% else %> - <p><strong><%:There are no pending changes to apply!%></strong></p> -<% end %> - -<%+footer%> 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 c3373604f3..9e9ce2be2a 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 @@ -1,40 +1,41 @@ <%# Copyright 2008 Steven Barth <steven@midlink.org> - Copyright 2008-2015 Jo-Philipp Wich <jow@openwrt.org> + Copyright 2008-2018 Jo-Philipp Wich <jo@mein.io> Licensed to the public under the Apache License 2.0. -%> <%+header%> +<%- + local node, redir_url = luci.dispatcher.lookup(luci.http.formvalue("redir")) + + include("cbi/apply_widget") + include("admin_uci/changelog") + + cbi_apply_widget(redir_url or url("admin/uci/changes")) +-%> + <h2 name="content"><%:Configuration%> / <%:Changes%></h2> <% if changes then %> - <%+admin_uci/changelog%> <%- uci_changelog(changes) -%> <% else %> <p><strong><%:There are no pending changes!%></strong></p> <% end %> +<div class="alert-message" id="cbi_apply_status" style="display:none"></div> + <div class="cbi-page-actions"> - <% local r = luci.http.formvalue("redir"); if r and #r > 0 then %> + <% if redir_url then %> <div style="float:left"> - <form class="inline" method="get" action="<%=luci.util.pcdata(r)%>"> + <form class="inline" method="get" action="<%=luci.util.pcdata(redir_url)%>"> <input class="cbi-button cbi-button-link" style="float:left; margin:0" type="submit" value="<%:Back%>" /> </form> </div> <% end %> <div style="text-align:right"> - <form class="inline" method="post" action="<%=controller%>/admin/uci/apply"> - <input type="hidden" name="token" value="<%=token%>" /> - <input type="hidden" name="redir" value="<%=pcdata(luci.http.formvalue("redir"))%>" /> - <input class="cbi-button cbi-button-apply" type="submit" value="<%:Apply%>" /> - </form> - <form class="inline" method="post" action="<%=controller%>/admin/uci/saveapply"> - <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" value="<%:Save & Apply%>" /> - </form> + <input class="cbi-button cbi-button-save" type="button" id="apply_button" value="<%:Save & Apply%>" onclick="uci_apply(true); this.blur()" /> <form class="inline" method="post" action="<%=controller%>/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 5da7281a80..dff53420aa 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 @@ -1,27 +1,42 @@ <%# Copyright 2008 Steven Barth <steven@midlink.org> - Copyright 2008 Jo-Philipp Wich <jow@openwrt.org> + Copyright 2008-2018 Jo-Philipp Wich <jo@mein.io> Licensed to the public under the Apache License 2.0. -%> <%+header%> +<%- + local node, redir_url = luci.dispatcher.lookup(luci.http.formvalue("redir")) + + include("cbi/apply_widget") + include("admin_uci/changelog") + + cbi_apply_widget(redir_url or url("admin/uci/revert")) +-%> + <h2 name="content"><%:Configuration%> / <%:Revert%></h2> <% if changes then %> - <%+cbi/apply_xhr%> - <%+admin_uci/changelog%> - <p><strong><%:The following changes have been reverted%>:</strong></p> <%- uci_changelog(changes) -%> <% else %> <p><strong><%:There are no pending changes to revert!%></strong></p> <% end %> -<div class="cbi-page-actions"> - <form class="inline" method="get" action="<%=luci.util.pcdata(luci.http.formvalue("redir"))%>"> - <input class="cbi-button cbi-button-link" style="margin:0" type="submit" value="<%:Back%>" /> - </form> -</div> +<div class="alert-message" id="cbi_apply_status" style="display:none"></div> +<script type="text/javascript"> + document.addEventListener("DOMContentLoaded", function() { + uci_apply(true); + }); +</script> + +<% if redir_url then %> + <div class="cbi-page-actions"> + <form class="inline" method="get" action="<%=luci.util.pcdata(redir_url)%>"> + <input class="cbi-button cbi-button-link" style="margin:0" type="submit" value="<%:Back%>" /> + </form> + </div> +<% end %> <%+footer%> diff --git a/modules/luci-mod-admin-full/luasrc/view/cbi/wireless_modefreq.htm b/modules/luci-mod-admin-full/luasrc/view/cbi/wireless_modefreq.htm index 2fb64b3c42..ebb02e489b 100644 --- a/modules/luci-mod-admin-full/luasrc/view/cbi/wireless_modefreq.htm +++ b/modules/luci-mod-admin-full/luasrc/view/cbi/wireless_modefreq.htm @@ -1,9 +1,9 @@ <%+cbi/valueheader%> <script type="text/javascript">//<![CDATA[ - var freqlist = <%= luci.http.write_json(self.freqlist) %>; - var hwmodes = <%= luci.http.write_json(self.hwmodes) %>; - var htmodes = <%= luci.http.write_json(self.htmodes) %>; + var freqlist = <%= luci.http.write_json(self.iwinfo.freqlist) %>; + var hwmodes = <%= luci.http.write_json(self.iwinfo.hwmodelist or {}) %>; + var htmodes = <%= luci.http.write_json(self.iwinfo.htmodelist) %>; var channels = { '11g': [ diff --git a/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/dhcp.lua b/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/dhcp.lua index 9a1c1fea45..bcc26cd442 100644 --- a/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/dhcp.lua +++ b/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/dhcp.lua @@ -3,7 +3,7 @@ -- Licensed to the public under the Apache License 2.0. local uci = require "luci.model.uci".cursor() -local ipc = require "luci.ip" +local sys = require "luci.sys" local wa = require "luci.tools.webadmin" local fs = require "nixio.fs" @@ -87,12 +87,11 @@ name = s2:option(Value, "name", translate("Hostname")) mac = s2:option(Value, "mac", translate("<abbr title=\"Media Access Control\">MAC</abbr>-Address")) ip = s2:option(Value, "ip", translate("<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address")) -ipc.neighbors({ family = 4 }, function(n) - if n.mac and n.dest then - ip:value(n.dest:string()) - mac:value(n.mac, "%s (%s)" %{ n.mac, n.dest:string() }) +sys.host_hints(function(m, v4, v6, name) + if m and v4 then + ip:value(v4) + mac:value(m, "%s (%s)" %{ m, name or v4 }) end end) return m - diff --git a/modules/luci-mod-freifunk/htdocs/luci-static/flashing.html b/modules/luci-mod-freifunk/htdocs/luci-static/flashing.html index 43e51236d7..f9e882ff30 100644 --- a/modules/luci-mod-freifunk/htdocs/luci-static/flashing.html +++ b/modules/luci-mod-freifunk/htdocs/luci-static/flashing.html @@ -45,7 +45,7 @@ if( time_remaining <= 0 ) { window.clearInterval(interval); - location.href = 'http://' + location.hostname + '/'; + location.href = 'http://' + location.host + '/'; } else { diff --git a/modules/luci-mod-freifunk/htdocs/luci-static/resources/OSMLatLon.htm b/modules/luci-mod-freifunk/htdocs/luci-static/resources/OSMLatLon.htm index 18be30be35..9f017c9e72 100644 --- a/modules/luci-mod-freifunk/htdocs/luci-static/resources/OSMLatLon.htm +++ b/modules/luci-mod-freifunk/htdocs/luci-static/resources/OSMLatLon.htm @@ -6,7 +6,7 @@ <script type="text/javascript" src="http://www.openstreetmap.org/openlayers/OpenStreetMap.js"></script> <script type="text/javascript" src="osm.js"></script> </head> -<body onload="init();drawmap();" style="padding:0px; margin:0px"> +<body onload="init();drawmap();" style="padding:0px; margin:0px"> <div id="map"></div> <div style="position:absolute; bottom:0%; width:100%; background:url('cbi/black_60.png'); font-size:10px; color:#fff;z-index:1000"> Map by <a href="http://www.openstreetmap.org" title="www.openstreetmap.org" style="color:#fff;" >openstreetmap.org</a>, License CC-BY-SA @@ -16,5 +16,4 @@ Longitude: <input id="osmlon" name="osmlon" type="text" size="20" style="font-size:10px;"> </span> </div> - </body> diff --git a/modules/luci-mod-freifunk/luasrc/controller/freifunk/freifunk.lua b/modules/luci-mod-freifunk/luasrc/controller/freifunk/freifunk.lua index e2291e5ca6..adad7508bc 100644 --- a/modules/luci-mod-freifunk/luasrc/controller/freifunk/freifunk.lua +++ b/modules/luci-mod-freifunk/luasrc/controller/freifunk/freifunk.lua @@ -77,7 +77,7 @@ function index() page.order = 10 page = node("admin", "freifunk", "basics", "profile_expert") - page.target = cbi("freifunk/profile_expert") + page.target = form("freifunk/profile_expert") page.title = _("Profile (Expert)") page.order = 20 diff --git a/modules/luci-mod-freifunk/po/ru/freifunk.po b/modules/luci-mod-freifunk/po/ru/freifunk.po index 0943a3b485..f9b44a2c61 100644 --- a/modules/luci-mod-freifunk/po/ru/freifunk.po +++ b/modules/luci-mod-freifunk/po/ru/freifunk.po @@ -1,34 +1,32 @@ msgid "" msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: LuCI: freifunk\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2013-09-06 09:41+0200\n" -"Last-Translator: datasheet <michael.gritsaenko@gmail.com>\n" -"Language-Team: Russian <x12ozmouse@ya.ru>\n" -"Language: ru\n" +"POT-Creation-Date: 2013-09-06 09:41+0200\n" +"PO-Revision-Date: 2018-01-30 17:02+0300\n" +"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n" +"Language-Team: http://cyber-place.ru\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" -"X-Poedit-SourceCharset: UTF-8\n" +"Language: ru\n" +"X-Generator: Poedit 1.8.7.1\n" +"Project-Info: Это технический перевод, не дословный. Главное-удобный русский " +"интерфейс, все проверялось в графическом режиме, совместим с другими apps\n" msgid "BSSID" msgstr "BSSID" msgid "Bad (ETX > 10)" -msgstr "Плохой (ETX > 10)" +msgstr "Плохо (ETX > 10)" msgid "Basic Settings" -msgstr "Базовые настройки" +msgstr "Основные настройки" msgid "Basic settings" -msgstr "Базовые настройки" +msgstr "Основные настройки" msgid "Basic settings are incomplete. Please go to" -msgstr "Базовые настройки не верны. Пожалуйста, перейдите в" +msgstr "Основные настройки не верны. Пожалуйста, перейдите в" msgid "Basic system settings" msgstr "Основные настройки системы" @@ -60,7 +58,7 @@ msgid "Confirm Upgrade" msgstr "Подтвердить обновление" msgid "Contact" -msgstr "Контактная информация" +msgstr "Контакты для связи" msgid "Contact information is incomplete. Please go to" msgstr "Контактная информация не верна. Пожалуйста, перейдите в" @@ -81,7 +79,7 @@ msgid "Diversity is enabled for device" msgstr "Неопределенность пути включена" msgid "E-Mail" -msgstr "Эл. почта" +msgstr "E-Mail" msgid "ESSID" msgstr "ESSID" @@ -94,6 +92,8 @@ msgstr "Включить IPv6" msgid "Enable a virtual access point (VAP) by default if possible." msgstr "" +"Включить виртуальную точку доступа (VAP) с настройками по умолчанию, если " +"это возможно." msgid "Error" msgstr "Ошибка" @@ -105,7 +105,7 @@ msgid "Freifunk" msgstr "Freifunk" msgid "Freifunk Overview" -msgstr "Обзор Freifunk" +msgstr "Главное меню Freifunk" msgid "Freifunk Remote Update" msgstr "Удалённое обновление Freifunk" @@ -117,11 +117,10 @@ msgid "Go to" msgstr "Перейти" msgid "Good (2 < ETX < 4)" -msgstr "Хороший (2 < ETX < 4)" +msgstr "Хорошо (2 < ETX < 4)" -#, fuzzy msgid "Green" -msgstr "Зелёный" +msgstr "Зеленый" msgid "Hello and welcome in the network of" msgstr "Здравствуйте и добро пожаловать в сеть" @@ -135,9 +134,8 @@ msgstr "Домашняя страница" msgid "Hostname" msgstr "Имя хоста" -#, fuzzy msgid "IPv6 Config" -msgstr "Конфигурация IPv6" +msgstr "Настройка IPv6" msgid "IPv6 Prefix" msgstr "Префикс IPv6" @@ -162,30 +160,29 @@ msgid "" "Internet access depends on technical and organisational conditions and may " "or may not work for you." msgstr "" -"Доступ в интернет зависит от технических и организационных условий и может " +"Доступ в Интернет зависит от технических и организационных условий и может " "быть не доступен для вас." -# It - access point msgid "It is operated by" -msgstr "Она управляется" +msgstr "Точка доступа управляется" msgid "Keep configuration" -msgstr "Сохранить конфигурацию" +msgstr "Сохранить настройки" msgid "Latitude" msgstr "Широта" msgid "Legend" -msgstr "Надпись" +msgstr "События" msgid "Load" msgstr "Загрузка" msgid "Local Time" -msgstr "Местное время" +msgstr "Дата и время" msgid "Location" -msgstr "Местоположение" +msgstr "Расположение" msgid "Longitude" msgstr "Долгота" @@ -197,10 +194,10 @@ msgid "Map Error" msgstr "Ошибка карты" msgid "Memory" -msgstr "Память" +msgstr "Оперативная память (RAM)" msgid "Mesh prefix" -msgstr "Префикс ячейки" +msgstr "Mesh префикс" msgid "Metric" msgstr "Метрика" @@ -212,16 +209,16 @@ msgid "Network" msgstr "Сеть" msgid "Network for client DHCP addresses" -msgstr "Сеть для клиентских DHCP-адресов" +msgstr "Сеть для клиентских<br />DHCP-адресов" msgid "Nickname" -msgstr "Псевдоним" +msgstr "Никнейм" msgid "No default routes known." msgstr "Маршруты по умолчанию не известны." msgid "Notice" -msgstr "Внимание" +msgstr "Заметка" msgid "OLSR" msgstr "OLSR" @@ -229,15 +226,14 @@ msgstr "OLSR" msgid "Operator" msgstr "Оператор" -#, fuzzy msgid "Orange" msgstr "Оранжевый" msgid "Overview" -msgstr "Обзор" +msgstr "Главное меню" msgid "Package libiwinfo required!" -msgstr "Требуется libiwinfo!" +msgstr "Требуется пакет libiwinfo!" msgid "Phone" msgstr "Телефон" @@ -252,7 +248,7 @@ msgid "Power" msgstr "Питание" msgid "Processor" -msgstr "Процессор" +msgstr "CPU" msgid "Profile" msgstr "Профиль" @@ -263,7 +259,6 @@ msgstr "Профиль (эксперт)" msgid "Realname" msgstr "Имя" -#, fuzzy msgid "Red" msgstr "Красный" @@ -275,7 +270,7 @@ msgid "" "up if you are connected to the Internet." msgstr "" "Укажите ваше местоположение на карте с помощью щелчка мыши. Карта будет " -"показана только если вы подключены к интернету." +"показана только если вы подключены к Интернету." msgid "Show OpenStreetMap" msgstr "Показать карту OpenStreetMap" @@ -296,16 +291,16 @@ msgid "Statistics" msgstr "Статистика" msgid "Status" -msgstr "Статус" +msgstr "Состояние" msgid "Still usable (4 < ETX < 10)" -msgstr "" +msgstr "Еще можно использовать (4 < ETX < 10)" msgid "System" msgstr "Система" msgid "TX" -msgstr "TX" +msgstr "Передача (TX)" msgid "" "The <em>libiwinfo</em> package is not installed. You must install this " @@ -319,9 +314,9 @@ msgid "" "network.<br /> Please make sure that the nameservice plugin is properly " "configured and that the <em>latlon_file</em> option is enabled." msgstr "" -"Сервис OLSRd не сконфигурирован на получение данных о местоположении из сети." -"<br /> Пожалуйста, удостоверьтесь, что модуль пространства имён настроен " -"правильно и что опция <em>latlon_file</em> включена." +"Сервис OLSRd не настроен на получение данных о местоположении из сети.<br /> " +"Пожалуйста, удостоверьтесь, что модуль пространства имён настроен правильно " +"и что опция <em>latlon_file</em> включена." msgid "The installed firmware is the most recent version." msgstr "Установлена прошивка самой последней версии." @@ -331,12 +326,12 @@ msgid "" "settings define the default values for the wizard and DO NOT affect the " "actual configuration of the router." msgstr "" -"Это базовые настройки вашего сообщества. Они определяют стандартные " -"настройки для мастера установки и НЕ влияют на конечную конфигурацию " +"Это основные настройки вашего сообщества. Они определяют стандартные " +"настройки для 'Мастера настройки Mesh сети' и НЕ влияют на конечные настройки " "маршрутизатора." msgid "These are the settings of your local community." -msgstr "Это настройки для вашего сообщества." +msgstr "Здесь вы сможете настроить ваше сообщество." msgid "" "These pages will assist you in setting up your router for Freifunk or " @@ -358,27 +353,26 @@ msgid "Uptime" msgstr "Время работы" msgid "VAP" -msgstr "" +msgstr "Виртуальная точка доступа (VAP)" msgid "Verify downloaded images" msgstr "Проверять загруженные образы" msgid "Very good (ETX < 2)" -msgstr "Очень хороший (ETX < 2)" +msgstr "Очень хорошо (ETX < 2)" msgid "" "We are an initiative to establish a free, independent and open wireless mesh " "network." msgstr "" "Мы - это сообщество, цель которого создать бесплатную, независимую и " -"открытую беспроводную ячеистую сеть." +"открытую беспроводную Mesh сеть." msgid "Wireless Overview" -msgstr "Обзор беспроводных сетей" +msgstr "Список беспроводных сетей" -#, fuzzy msgid "Yellow" -msgstr "Жёлтый" +msgstr "Желтый" msgid "" "You can display additional content on the public index page by inserting " @@ -394,7 +388,8 @@ msgid "" msgstr "Вы можете найти дополнительную информацию о Freifunk по адресу" msgid "You can manually edit the selected community profile here." -msgstr "Здесь вы можете редактировать выбранный профиль сообщества." +msgstr "" +"Здесь вы сможете отредактировать config файл выбранного профиля сообщества." msgid "" "You need to select a profile before you can edit it. To select a profile go " @@ -426,26 +421,3 @@ msgstr "использовано" msgid "wireless settings" msgstr "настройки беспроводной сети" - -#~ msgid "" -#~ "No services can be shown, because olsrd is not running or the olsrd-" -#~ "nameservice Plugin is not loaded." -#~ msgstr "" -#~ "Сервис не может быть показан, так как oslrd не запущен или модуль olsrd-" -#~ "nameservice не загружен." - -#~ msgid "Services" -#~ msgstr "Службы" - -#~ msgid "Source" -#~ msgstr "Источник" - -#~ msgid "" -#~ "The <em>libiwinfo-lua</em> package is not installed. You must install " -#~ "this component for working wireless configuration!" -#~ msgstr "" -#~ "Пакет <em>libiwinfo-lua</em> не установлен. Вам необходимо установить " -#~ "этот компонент для настройки беспроводной сети!" - -#~ msgid "Url" -#~ msgstr "Url" diff --git a/modules/luci-mod-rpc/luasrc/controller/rpc.lua b/modules/luci-mod-rpc/luasrc/controller/rpc.lua index 759bb749cf..1e8038b28a 100644 --- a/modules/luci-mod-rpc/luasrc/controller/rpc.lua +++ b/modules/luci-mod-rpc/luasrc/controller/rpc.lua @@ -2,80 +2,109 @@ -- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org> -- Licensed to the public under the Apache License 2.0. -local require = require -local pairs = pairs -local print = print -local pcall = pcall -local table = table +module("luci.controller.rpc", package.seeall) + + +function session_retrieve(sid, allowed_users) + local util = require "luci.util" + local sdat = util.ubus("session", "get", { + ubus_rpc_session = sid + }) + + if type(sdat) == "table" and + type(sdat.values) == "table" and + type(sdat.values.token) == "string" and + type(sdat.values.secret) == "string" and + type(sdat.values.username) == "string" and + util.contains(allowed_users, sdat.values.username) + then + return sid, sdat.values + end -module "luci.controller.rpc" + return nil +end -function index() - local function authenticator(validator, accs) - local auth = luci.http.formvalue("auth", true) - if auth then -- if authentication token was given - local sdat = (luci.util.ubus("session", "get", { ubus_rpc_session = auth }) or { }).values - if sdat then -- if given token is valid - if sdat.user and luci.util.contains(accs, sdat.user) then - return sdat.user, auth - end - end +function authenticator(validator, accs) + local http = require "luci.http" + local ctrl = require "luci.controller.rpc" + local auth = http.formvalue("auth", true) or http.getcookie("sysauth") + + if auth then -- if authentication token was given + local sid, sdat = ctrl.session_retrieve(auth, accs) + if sdat then -- if given token is valid + return sdat.username, sid end - luci.http.status(403, "Forbidden") + http.status(403, "Forbidden") end +end + + +function index() + local ctrl = require "luci.controller.rpc" local rpc = node("rpc") rpc.sysauth = "root" - rpc.sysauth_authenticator = authenticator + rpc.sysauth_authenticator = ctrl.authenticator rpc.notemplate = true entry({"rpc", "uci"}, call("rpc_uci")) entry({"rpc", "fs"}, call("rpc_fs")) entry({"rpc", "sys"}, call("rpc_sys")) entry({"rpc", "ipkg"}, call("rpc_ipkg")) + entry({"rpc", "ip"}, call("rpc_ip")) entry({"rpc", "auth"}, call("rpc_auth")).sysauth = false end function rpc_auth() + local ctrl = require "luci.controller.rpc" local jsonrpc = require "luci.jsonrpc" local http = require "luci.http" local sys = require "luci.sys" local ltn12 = require "luci.ltn12" local util = require "luci.util" - local loginstat - local server = {} server.challenge = function(user, pass) - local sid, token, secret - local config = require "luci.config" - - if sys.user.checkpasswd(user, pass) then - local sdat = util.ubus("session", "create", { timeout = config.sauth.sessiontime }) + local login = util.ubus("session", "login", { + username = user, + password = pass, + timeout = tonumber(config.sauth.sessiontime) + }) + + if type(login) == "table" and + type(login.ubus_rpc_session) == "string" + then + util.ubus("session", "set", { + ubus_rpc_session = login.ubus_rpc_session, + values = { + token = sys.uniqueid(16), + secret = sys.uniqueid(16) + } + }) + + local sid, sdat = ctrl.session_retrieve(login.ubus_rpc_session, { user }) if sdat then - sid = sdat.ubus_rpc_session - token = sys.uniqueid(16) - secret = sys.uniqueid(16) - - http.header("Set-Cookie", "sysauth="..sid.."; path=/") - util.ubus("session", "set", { - ubus_rpc_session = sid, - values = { - user = user, - token = token, - secret = secret - } - }) + return { + sid = sid, + token = sdat.token, + secret = sdat.secret + } end end - return sid and {sid=sid, token=token, secret=secret} + return nil end server.login = function(...) local challenge = server.challenge(...) - return challenge and challenge.sid + if challenge then + http.header("Set-Cookie", 'sysauth=%s; path=%s' %{ + challenge.sid, + http.getenv("SCRIPT_NAME") + }) + return challenge.sid + end end http.prepare_content("application/json") @@ -137,13 +166,40 @@ function rpc_fs() end function rpc_sys() + local util = require "luci.util" local sys = require "luci.sys" local jsonrpc = require "luci.jsonrpc" local http = require "luci.http" local ltn12 = require "luci.ltn12" + local sys2 = util.clone(sys) + sys2.net = util.clone(sys.net) + sys2.wifi = util.clone(sys.wifi) + + function sys2.wifi.getiwinfo(ifname, operation) + local iw = sys.wifi.getiwinfo(ifname) + if iw then + if operation then + assert(type(iwinfo[iw.type][operation]) == "function") + return iw[operation] + end + + local n, f + local rv = { ifname = ifname } + for n, f in pairs(iwinfo[iw.type]) do + if type(f) == "function" and + n ~= "scanlist" and n ~= "countrylist" + then + rv[n] = iw[n] + end + end + return rv + end + return nil + end + http.prepare_content("application/json") - ltn12.pump.all(jsonrpc.handle(sys, http.source()), http.write) + ltn12.pump.all(jsonrpc.handle(sys2, http.source()), http.write) end function rpc_ipkg() @@ -159,3 +215,34 @@ function rpc_ipkg() http.prepare_content("application/json") ltn12.pump.all(jsonrpc.handle(ipkg, http.source()), http.write) end + +function rpc_ip() + if not pcall(require, "luci.ip") then + luci.http.status(404, "Not Found") + return nil + end + + local util = require "luci.util" + local ip = require "luci.ip" + local jsonrpc = require "luci.jsonrpc" + local http = require "luci.http" + local ltn12 = require "luci.ltn12" + + local ip2 = util.clone(ip) + + local _, n + for _, n in ipairs({ "new", "IPv4", "IPv6", "MAC" }) do + ip2[n] = function(address, netmask, operation, argument) + local cidr = ip[n](address, netmask) + if cidr and operation then + assert(type(cidr[operation]) == "function") + local cidr2 = cidr[operation](cidr, argument) + return (type(cidr2) == "userdata") and cidr2:string() or cidr2 + end + return (type(cidr) == "userdata") and cidr:string() or cidr + end + end + + http.prepare_content("application/json") + ltn12.pump.all(jsonrpc.handle(ip2, http.source()), http.write) +end |