1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter-feeds.git synced 2025-03-09 15:40:03 +00:00

Update to 18.06

This commit is contained in:
Ycarus 2018-07-31 17:18:00 +02:00
parent ce9432d93b
commit 110470cb85
50 changed files with 335 additions and 367 deletions

View file

@ -37,13 +37,14 @@ endef
define Host/Compile
$(MAKE) -C src/ clean po2lmo
$(MAKE) -C $(HOST_BUILD_DIR) bin/luasrcdiet
endef
define Host/Install
$(INSTALL_DIR) $(1)/bin
$(INSTALL_DIR) $(1)/lib/lua/5.1
$(INSTALL_BIN) src/po2lmo $(1)/bin/po2lmo
$(INSTALL_BIN) $(HOST_BUILD_DIR)/bin/luasrcdiet $(1)/bin/luasrcdiet
$(CP) $(HOST_BUILD_DIR)/luasrcdiet $(1)/lib/lua/5.1/
endef
$(eval $(call HostBuild))

View file

@ -627,6 +627,18 @@ function cbi_init() {
s.parentNode.classList.add('cbi-tooltip-container');
});
document.querySelectorAll('.cbi-section-remove > input[name^="cbi.rts"]').forEach(function(i) {
var handler = function(ev) {
var bits = this.name.split(/\./),
section = document.getElementById('cbi-' + bits[2] + '-' + bits[3]);
section.style.opacity = (ev.type === 'mouseover') ? 0.5 : '';
};
i.addEventListener('mouseover', handler);
i.addEventListener('mouseout', handler);
});
cbi_d_update();
}
@ -818,9 +830,9 @@ function cbi_dynlist_init(parent, datatype, optional, choices)
t.placeholder = holder;
}
var b = document.createElement('img');
b.src = cbi_strings.path.resource + ((i+1) < values.length ? '/cbi/remove.gif' : '/cbi/add.gif');
b.className = 'cbi-image-button';
var b = E('div', {
class: 'cbi-button cbi-button-' + ((i+1) < values.length ? 'remove' : 'add')
}, (i+1) < values.length ? '×' : '+');
parent.appendChild(t);
parent.appendChild(b);
@ -986,8 +998,7 @@ function cbi_dynlist_init(parent, datatype, optional, choices)
input = input.previousSibling;
}
if (se.src.indexOf('remove') > -1)
{
if (se.classList.contains('cbi-button-remove')) {
input.value = '';
cbi_dynlist_keydown({
@ -995,8 +1006,7 @@ function cbi_dynlist_init(parent, datatype, optional, choices)
keyCode: 8
});
}
else
{
else {
cbi_dynlist_keydown({
target: input,
keyCode: 13

View file

@ -65,12 +65,8 @@ XHR = function()
if (xhr.readyState == 4) {
var json = null;
if (xhr.getResponseHeader("Content-Type") == "application/json") {
try {
json = JSON.parse(xhr.responseText);
}
catch(e) {
json = null;
}
try { json = JSON.parse(xhr.responseText); }
catch(e) { json = null; }
}
callback(xhr, json, Date.now() - ts);
@ -90,8 +86,15 @@ XHR = function()
xhr.onreadystatechange = function()
{
if (xhr.readyState == 4)
callback(xhr, null, Date.now() - ts);
if (xhr.readyState == 4) {
var json = null;
if (xhr.getResponseHeader("Content-Type") == "application/json") {
try { json = JSON.parse(xhr.responseText); }
catch(e) { json = null; }
}
callback(xhr, json, Date.now() - ts);
}
}
xhr.open('POST', url, true);

View file

@ -893,8 +893,6 @@ local function _cbi(self, ...)
local pageaction = true
local parsechain = { }
local is_rollback, time_remaining = uci:rollback_pending()
for i, res in ipairs(maps) do
if res.apply_needed and res.parsechain then
local c
@ -921,8 +919,6 @@ local function _cbi(self, ...)
for i, res in ipairs(maps) do
res:render({
firstmap = (i == 1),
applymap = applymap,
confirmmap = (is_rollback and time_remaining or nil),
redirect = redirect,
messages = messages,
pageaction = pageaction,
@ -932,11 +928,12 @@ local function _cbi(self, ...)
if not config.nofooter then
tpl.render("cbi/footer", {
flow = config,
pageaction = pageaction,
redirect = redirect,
state = state,
autoapply = config.autoapply
flow = config,
pageaction = pageaction,
redirect = redirect,
state = state,
autoapply = config.autoapply,
trigger_apply = applymap
})
end
end

View file

@ -147,19 +147,31 @@ function apply(self, rollback)
local _, err
if rollback then
local sys = require "luci.sys"
local conf = require "luci.config"
local timeout = tonumber(conf and conf.apply and conf.apply.rollback or "") or 0
local timeout = tonumber(conf and conf.apply and conf.apply.rollback or 30) or 0
_, err = call("apply", {
timeout = (timeout > 30) and timeout or 30,
timeout = (timeout > 30) and timeout or 30,
rollback = true
})
if not err then
local now = os.time()
local token = sys.uniqueid(16)
util.ubus("session", "set", {
ubus_rpc_session = session_id,
values = { rollback = os.time() + timeout }
ubus_rpc_session = "00000000000000000000000000000000",
values = {
rollback = {
token = token,
session = session_id,
timeout = now + timeout
}
}
})
return token
end
else
_, err = call("changes", {})
@ -184,40 +196,72 @@ function apply(self, rollback)
return (err == nil), ERRSTR[err]
end
function confirm(self)
local _, err = call("confirm", {})
if not err then
util.ubus("session", "set", {
ubus_rpc_session = session_id,
values = { rollback = 0 }
function confirm(self, token)
local is_pending, time_remaining, rollback_sid, rollback_token = self:rollback_pending()
if is_pending then
if token ~= rollback_token then
return false, "Permission denied"
end
local _, err = util.ubus("uci", "confirm", {
ubus_rpc_session = rollback_sid
})
if not err then
util.ubus("session", "set", {
ubus_rpc_session = "00000000000000000000000000000000",
values = { rollback = {} }
})
end
return (err == nil), ERRSTR[err]
end
return (err == nil), ERRSTR[err]
return false, "No data"
end
function rollback(self)
local _, err = call("rollback", {})
if not err then
util.ubus("session", "set", {
ubus_rpc_session = session_id,
values = { rollback = 0 }
local is_pending, time_remaining, rollback_sid = self:rollback_pending()
if is_pending then
local _, err = util.ubus("uci", "rollback", {
ubus_rpc_session = rollback_sid
})
if not err then
util.ubus("session", "set", {
ubus_rpc_session = "00000000000000000000000000000000",
values = { rollback = {} }
})
end
return (err == nil), ERRSTR[err]
end
return (err == nil), ERRSTR[err]
return false, "No data"
end
function rollback_pending(self)
local deadline, err = util.ubus("session", "get", {
ubus_rpc_session = session_id,
local rv, err = util.ubus("session", "get", {
ubus_rpc_session = "00000000000000000000000000000000",
keys = { "rollback" }
})
if type(deadline) == "table" and
type(deadline.values) == "table" and
type(deadline.values.rollback) == "number" and
deadline.values.rollback > os.time()
local now = os.time()
if type(rv) == "table" and
type(rv.values) == "table" and
type(rv.values.rollback) == "table" and
type(rv.values.rollback.token) == "string" and
type(rv.values.rollback.session) == "string" and
type(rv.values.rollback.timeout) == "number" and
rv.values.rollback.timeout > now
then
return true, deadline.values.rollback - os.time()
return true,
rv.values.rollback.timeout - now,
rv.values.rollback.session,
rv.values.rollback.token
end
return false, ERRSTR[err]

View file

@ -16,7 +16,7 @@ local _ubus = require "ubus"
local _ubus_connection = nil
local getmetatable, setmetatable = getmetatable, setmetatable
local rawget, rawset, unpack = rawget, rawset, unpack
local rawget, rawset, unpack, select = rawget, rawset, unpack, select
local tostring, type, assert, error = tostring, type, assert, error
local ipairs, pairs, next, loadstring = ipairs, pairs, next, loadstring
local require, pcall, xpcall = require, pcall, xpcall
@ -647,6 +647,17 @@ local ubus_codes = {
"CONNECTION_FAILED"
}
local function ubus_return(...)
if select('#', ...) == 2 then
local rv, err = select(1, ...), select(2, ...)
if rv == nil and type(err) == "number" then
return nil, err, ubus_codes[err]
end
end
return ...
end
function ubus(object, method, data)
if not _ubus_connection then
_ubus_connection = _ubus.connect()
@ -657,8 +668,7 @@ function ubus(object, method, data)
if type(data) ~= "table" then
data = { }
end
local rv, err = _ubus_connection:call(object, method, data)
return rv, err, ubus_codes[err]
return ubus_return(_ubus_connection:call(object, method, data))
elseif object then
return _ubus_connection:signatures(object)
else

View file

@ -1,4 +1,4 @@
<% export("cbi_apply_widget", function(redirect_ok) -%>
<% export("cbi_apply_widget", function(redirect_ok, rollback_token) -%>
<style type="text/css">
#cbi_apply_overlay {
position: absolute;
@ -51,6 +51,7 @@
uci_apply_holdoff = <%=math.max(luci.config and luci.config.apply and luci.config.apply.holdoff or 4, 1)%>,
uci_apply_timeout = <%=math.max(luci.config and luci.config.apply and luci.config.apply.timeout or 5, 1)%>,
uci_apply_display = <%=math.max(luci.config and luci.config.apply and luci.config.apply.display or 1.5, 1)%>,
uci_confirm_auth = <% if rollback_token then %>{ token: '<%=rollback_token%>' }<% else %>null<% end %>,
was_xhr_poll_running = false;
function uci_status_message(type, content) {
@ -148,7 +149,7 @@
var delay = isNaN(duration) ? 0 : Math.max(1000 - duration, 0);
window.setTimeout(function() {
xhr.post('<%=url("admin/uci/confirm")%>', uci_apply_auth, call, uci_apply_timeout * 1000);
xhr.post('<%=url("admin/uci/confirm")%>', uci_confirm_auth, call, uci_apply_timeout * 1000);
}, delay);
};
@ -177,8 +178,11 @@
'<img src="<%=resource%>/icons/loading.gif" alt="" style="vertical-align:middle" /> ' +
'<%:Starting configuration apply…%>');
xhr.post('<%=url("admin/uci")%>/' + (checked ? 'apply_rollback' : 'apply_unchecked'), uci_apply_auth, function(r) {
xhr.post('<%=url("admin/uci")%>/' + (checked ? 'apply_rollback' : 'apply_unchecked'), uci_apply_auth, function(r, tok) {
if (r.status === (checked ? 200 : 204)) {
if (checked && tok !== null && typeof(tok) === 'object' && typeof(tok.token) === 'string')
uci_confirm_auth = tok;
uci_confirm(checked, Date.now() + uci_apply_rollback * 1000);
}
else if (checked && r.status === 204) {

View file

@ -1,10 +1,12 @@
<%-
local title = luci.util.trim(striptags(self.title))
local ftype = self.template and self.template:gsub("^.+/", "")
local descr = luci.util.trim(striptags(self.description))
local ftype = self.typename or (self.template and self.template:gsub("^.+/", ""))
-%>
<div class="td cbi-value-field<% if self.error and self.error[section] then %> cbi-value-error<% end %>"<%=
attr("data-name", self.option) ..
ifattr(ftype and #ftype > 0, "data-type", ftype) ..
ifattr(title and #title > 0, "data-title", title)
ifattr(title and #title > 0, "data-title", title) ..
ifattr(descr and #descr > 0, "data-description", descr)
%>>
<div id="cbi-<%=self.config.."-"..section.."-"..self.option%>" data-index="<%=self.index%>" data-depends="<%=pcdata(self:deplist2json(section))%>">

View file

@ -5,21 +5,6 @@
<div class="cbi-map" id="cbi-<%=self.config%>">
<% if self.title and #self.title > 0 then %><h2 name="content"><%=self.title%></h2><% end %>
<% if self.description and #self.description > 0 then %><div class="cbi-map-descr"><%=self.description%></div><% end %>
<%- if firstmap and (applymap or confirmmap) then -%>
<%+cbi/apply_widget%>
<% cbi_apply_widget(redirect) %>
<div class="alert-message" id="cbi_apply_status" style="display:none"></div>
<script type="text/javascript">
document.addEventListener("DOMContentLoaded", function() {
<% if confirmmap then -%>
uci_confirm(true, Date.now() + <%=confirmmap%> * 1000);
<%- else -%>
uci_apply(true);
<%- end %>
});
</script>
<%- end -%>
<% if self.tabbed then %>
<ul class="cbi-tabmenu map">
<%- self.selected_tab = luci.http.formvalue("tab.m-" .. self.config) %>

View file

@ -32,25 +32,25 @@
<% if self.optionals[section] and #self.optionals[section] > 0 or self.dynamic then %>
<div class="cbi-optionals" data-index="<%=#self.children + 1%>">
<%
<%-
if self.dynamic then
local keys, vals, name, opt = { }, { }
for name, opt in pairs(self.optionals[section]) do
keys[#keys+1] = name
vals[#vals+1] = opt.title
end
%>
-%>
<input type="text" id="cbi.opt.<%=self.config%>.<%=section%>" name="cbi.opt.<%=self.config%>.<%=section%>" data-type="uciname" data-optional="true"<%=
ifattr(#keys > 0, "data-choices", luci.util.json_encode({keys, vals}))
%> />
<% else %>
<%- else -%>
<select id="cbi.opt.<%=self.config%>.<%=section%>" name="cbi.opt.<%=self.config%>.<%=section%>" data-optionals="true">
<option><%: -- Additional Field -- %></option>
<% for key, val in pairs(self.optionals[section]) do -%>
<option id="cbi-<%=self.config.."-"..section.."-"..val.option%>" value="<%=val.option%>" data-index="<%=val.index%>" data-depends="<%=pcdata(val:deplist2json(section))%>"><%=striptags(val.title)%></option>
<%- end %>
</select>
<% end %>
<%- end -%>
<input type="submit" class="cbi-button cbi-button-fieldadd" value="<%:Add%>" />
</div>
<% end %>

View file

@ -1,10 +1,16 @@
<%+cbi/valueheader%>
<%- if self.password then -%>
<input type="password" style="position:absolute; left:-1000px"<%=
attr("name", "password." .. cbid)
%> />
<%- end -%>
<input data-update="change"<%=
attr("id", cbid) ..
attr("name", cbid) ..
attr("type", self.password and "password" or "text") ..
attr("class", self.password and "cbi-input-password" or "cbi-input-text") ..
attr("value", self:cfgvalue(section) or self.default) ..
ifattr(self.password, "autocomplete", "new-password") ..
ifattr(self.size, "size") ..
ifattr(self.placeholder, "placeholder") ..
ifattr(self.readonly, "readonly") ..
@ -14,5 +20,7 @@
ifattr(self.combobox_manual, "data-manual", self.combobox_manual) ..
ifattr(#self.keylist > 0, "data-choices", { self.keylist, self.vallist })
%> />
<% if self.password then %><img src="<%=resource%>/cbi/reload.gif" style="vertical-align:middle" title="<%:Reveal/hide password%>" onclick="var e = document.getElementById('<%=cbid%>'); e.type = (e.type=='password') ? 'text' : 'password';" /><% end %>
<%- if self.password then -%>
<div class="cbi-button cbi-button-neutral" title="<%:Reveal/hide password%>" onclick="var e = this.previousElementSibling; e.type = (e.type === 'password') ? 'text' : 'password'"></div>
<% end %>
<%+cbi/valuefooter%>

View file

@ -4,4 +4,27 @@
Licensed to the public under the Apache License 2.0.
-%>
<% include("themes/" .. theme .. "/footer") %>
<%
local is_rollback_pending, rollback_time_remaining, rollback_session, rollback_token = luci.model.uci:rollback_pending()
if is_rollback_pending or trigger_apply or trigger_revert then
include("cbi/apply_widget")
cbi_apply_widget(redirect, rollback_token)
%>
<div class="alert-message" id="cbi_apply_status" style="display:none"></div>
<script type="text/javascript">
document.addEventListener("DOMContentLoaded", function() {
<% if trigger_apply then -%>
uci_apply(true);
<%- elseif trigger_revert then -%>
uci_revert();
<%- else -%>
uci_confirm(true, Date.now() + <%=rollback_time_remaining%> * 1000);
<%- end %>
});
</script>
<%
end
include("themes/" .. theme .. "/footer")
%>

View file

@ -274,9 +274,6 @@ msgstr "Alerta"
msgid "Alias Interface"
msgstr ""
msgid "Alias interface"
msgstr ""
msgid "Alias of \"%s\""
msgstr ""

View file

@ -272,9 +272,6 @@ msgstr "Upozornění"
msgid "Alias Interface"
msgstr ""
msgid "Alias interface"
msgstr ""
msgid "Alias of \"%s\""
msgstr ""

View file

@ -271,9 +271,6 @@ msgid "Alert"
msgstr "Alarm"
msgid "Alias Interface"
msgstr ""
msgid "Alias interface"
msgstr "Alias-Schnittstelle"
msgid "Alias of \"%s\""

View file

@ -274,9 +274,6 @@ msgstr "Ειδοποίηση"
msgid "Alias Interface"
msgstr ""
msgid "Alias interface"
msgstr ""
msgid "Alias of \"%s\""
msgstr ""

View file

@ -271,9 +271,6 @@ msgstr "Alert"
msgid "Alias Interface"
msgstr ""
msgid "Alias interface"
msgstr ""
msgid "Alias of \"%s\""
msgstr ""

View file

@ -275,9 +275,6 @@ msgstr "Alerta"
msgid "Alias Interface"
msgstr ""
msgid "Alias interface"
msgstr ""
msgid "Alias of \"%s\""
msgstr ""

View file

@ -277,9 +277,6 @@ msgstr "Alerte"
msgid "Alias Interface"
msgstr ""
msgid "Alias interface"
msgstr ""
msgid "Alias of \"%s\""
msgstr ""

View file

@ -269,9 +269,6 @@ msgstr "אזעקה"
msgid "Alias Interface"
msgstr ""
msgid "Alias interface"
msgstr ""
msgid "Alias of \"%s\""
msgstr ""

View file

@ -272,9 +272,6 @@ msgstr "Riasztás"
msgid "Alias Interface"
msgstr ""
msgid "Alias interface"
msgstr ""
msgid "Alias of \"%s\""
msgstr ""

View file

@ -281,9 +281,6 @@ msgstr "Allerta"
msgid "Alias Interface"
msgstr ""
msgid "Alias interface"
msgstr ""
msgid "Alias of \"%s\""
msgstr ""

View file

@ -275,9 +275,6 @@ msgstr "警告"
msgid "Alias Interface"
msgstr ""
msgid "Alias interface"
msgstr ""
msgid "Alias of \"%s\""
msgstr ""

View file

@ -266,9 +266,6 @@ msgstr ""
msgid "Alias Interface"
msgstr ""
msgid "Alias interface"
msgstr ""
msgid "Alias of \"%s\""
msgstr ""

View file

@ -261,9 +261,6 @@ msgstr ""
msgid "Alias Interface"
msgstr ""
msgid "Alias interface"
msgstr ""
msgid "Alias of \"%s\""
msgstr ""

View file

@ -270,9 +270,6 @@ msgstr "Varsle"
msgid "Alias Interface"
msgstr ""
msgid "Alias interface"
msgstr ""
msgid "Alias of \"%s\""
msgstr ""

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: LuCI\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-04-20 09:40+0200\n"
"PO-Revision-Date: 2018-07-14 21:35+0200\n"
"PO-Revision-Date: 2018-07-21 18:35+0200\n"
"Last-Translator: Rixerx <krystian.kozak20@gmail.com>\n"
"Language-Team: Polish\n"
"Language: pl\n"
@ -279,16 +279,13 @@ msgid "Alert"
msgstr "Alarm"
msgid "Alias Interface"
msgstr ""
msgid "Alias interface"
msgstr "Alias interfejsu"
msgstr "Alias Interfejsu"
msgid "Alias of \"%s\""
msgstr ""
msgstr "Alias \"%s\""
msgid "All Servers"
msgstr ""
msgstr "Wszystkie serwery"
msgid ""
"Allocate IP addresses sequentially, starting from the lowest available "
@ -303,7 +300,7 @@ msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
msgstr "Pozwól na logowanie <abbr title=\"Secure Shell\">SSH</abbr>"
msgid "Allow AP mode to disconnect STAs based on low ACK condition"
msgstr ""
msgstr "Pozwól aby tryb AP rozłączał stacje STA w oparciu o niski stan ACK"
msgid "Allow all except listed"
msgstr "Pozwól wszystkim oprócz wymienionych"
@ -342,6 +339,8 @@ msgid ""
"Always use 40MHz channels even if the secondary channel overlaps. Using this "
"option does not comply with IEEE 802.11n-2009!"
msgstr ""
"Zawsze używaj kanału 40 MHz, nawet jeśli kanał dodatkowy nachodzi na inny. "
"Używanie tej opcji nie jest zgodne z IEEE 802.11n-2009!"
msgid "Annex"
msgstr ""
@ -541,7 +540,7 @@ msgid "Band"
msgstr ""
msgid "Beacon Interval"
msgstr ""
msgstr "Interwał Beaconu"
msgid ""
"Below is the determined list of files to backup. It consists of changed "
@ -577,7 +576,6 @@ msgstr "Interfejs mostu"
msgid "Bridge unit number"
msgstr "Numer Mostu (urządzenia)"
# Podejrzewam że chodzi o interfejs? mam rację?
msgid "Bring up on boot"
msgstr "Podnieś przy stracie"
@ -860,7 +858,7 @@ msgid "DSL line mode"
msgstr ""
msgid "DTIM Interval"
msgstr ""
msgstr "Interwał DTIM"
msgid "DUID"
msgstr "DUID"
@ -901,12 +899,11 @@ msgid "Delete this network"
msgstr "Usuń tą sieć"
msgid "Delivery Traffic Indication Message Interval"
msgstr ""
msgstr "Interwał komunikatu o wskazaniu dostawy ruchu"
msgid "Description"
msgstr "Opis"
# Ktoś tłumaczył bez zobaczenia tego w gui. Dotyczy zmiany motywu ten opis.
msgid "Design"
msgstr "Motyw"
@ -963,7 +960,7 @@ msgid "Disabled (default)"
msgstr "Wyłączone (domyślnie)"
msgid "Disassociate On Low Acknowledgement"
msgstr ""
msgstr "Rozłączaj przy niskim stanie ramek ACK"
msgid "Discard upstream RFC1918 responses"
msgstr "Odrzuć wychodzące odpowiedzi RFC1918"
@ -990,15 +987,14 @@ msgstr ""
msgid "Diversity"
msgstr "Wielorakość"
# Nie wiem czy nie zamotałem ja rozumiem;)
msgid ""
"Dnsmasq is a combined <abbr title=\"Dynamic Host Configuration Protocol"
"\">DHCP</abbr>-Server and <abbr title=\"Domain Name System\">DNS</abbr>-"
"Forwarder for <abbr title=\"Network Address Translation\">NAT</abbr> "
"firewalls"
msgstr ""
"Dnsmasq jest to serwer <abbr title=\"Dynamic Host Configuration Protocol"
"\">DHCP</abbr> połączony z serwerem <abbr title=\"Domain Name System\">DNS</"
"Dnsmasq jest kombajnem serwera <abbr title=\"Dynamic Host Configuration Protocol"
"\">DHCP</abbr> połączonym z serwerem <abbr title=\"Domain Name System\">DNS</"
"abbr>. Jest to serwer przekazujący (Fowarder) dla firewalli <abbr title="
"\"Network Address Translation\">NAT</abbr>"
@ -1055,7 +1051,6 @@ msgstr ""
msgid "Dual-Stack Lite (RFC6333)"
msgstr ""
# "n" brakowało...
msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
msgstr ""
"<abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> dynamiczne"
@ -1334,7 +1329,7 @@ msgid "Force"
msgstr "Wymuś"
msgid "Force 40MHz mode"
msgstr ""
msgstr "Wymuś tryb 40MHz"
msgid "Force CCMP (AES)"
msgstr "Wymuś CCMP (AES)"
@ -1733,7 +1728,6 @@ msgstr ""
msgid "Interface Configuration"
msgstr "Konfiguracja Interfejsu"
# Tam jest lista interfejsów....
msgid "Interface Overview"
msgstr "Przegląd Interfejsów"
@ -1752,7 +1746,6 @@ msgstr "Interfejsy"
msgid "Internal"
msgstr ""
# Nadużycie tagu abbr uważam za uzasadnione.
msgid "Internal Server Error"
msgstr "Wewnętrzny błąd serwera"
@ -2013,7 +2006,7 @@ msgid "Lowest leased address as offset from the network address."
msgstr "Najniższy wydzierżawiony adres jako offset dla adresu sieci."
msgid "MAC"
msgstr ""
msgstr "MAC"
msgid "MAC-Address"
msgstr "Adres MAC"
@ -2260,7 +2253,7 @@ msgid "No rules in this chain"
msgstr "Brak zasad w tym łańcuchu"
msgid "No scan results available yet..."
msgstr ""
msgstr "Brak wyników skanowania..."
msgid "No zone assigned"
msgstr "Brak przypisanej strefy"
@ -2699,6 +2692,7 @@ msgid ""
"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
"servers"
msgstr ""
"Zapytaj o wszystkie dostępne serwery <abbr title=\"Domain Name System\">DNS</abbr> "
msgid "R0 Key Lifetime"
msgstr ""
@ -2995,11 +2989,10 @@ msgid "Scan"
msgstr "Skanuj"
msgid "Scan request failed"
msgstr ""
msgstr "Próba skanowania nie powiodła się"
# Raczej nie stosuje się kilku dużych liter w tym samym
msgid "Scheduled Tasks"
msgstr "Zaplanowane zadania"
msgstr "Zaplanowane Zadania"
msgid "Section added"
msgstr "Dodano sekcję"
@ -3059,7 +3052,7 @@ msgid "Short GI"
msgstr ""
msgid "Short Preamble"
msgstr ""
msgstr "Krótki Wstęp"
msgid "Show current backup file list"
msgstr "Pokaż aktualną listę plików do backupu"
@ -3169,7 +3162,7 @@ msgid "Starting configuration apply…"
msgstr ""
msgid "Starting wireless scan..."
msgstr ""
msgstr "Rozpoczynanie skanowania..."
msgid "Startup"
msgstr "Autostart"
@ -3935,7 +3928,7 @@ msgid ""
msgstr ""
"Tutaj można włączyć lub wyłączyć zainstalowane skrypty. Zmiany zostaną "
"zastosowane po ponownym uruchomieniu urządzenia.<br /><strong>Ostrzeżenie: "
"Jeśli wyłączysz podstawowe skrypty typu \"networks\", urządzenie może stać "
"Jeśli wyłączysz podstawowe skrypty typu \"network\", urządzenie może stać "
"się nieosiągalne!</strong>"
msgid ""
@ -4033,7 +4026,7 @@ msgid "minutes"
msgstr "minuty"
msgid "mixed WPA/WPA2"
msgstr ""
msgstr "mieszany WPA/WPA2"
msgid "no"
msgstr "nie"

View file

@ -294,9 +294,6 @@ msgstr "Alerta"
msgid "Alias Interface"
msgstr ""
msgid "Alias interface"
msgstr ""
msgid "Alias of \"%s\""
msgstr ""

View file

@ -280,9 +280,6 @@ msgstr "Alerta"
msgid "Alias Interface"
msgstr ""
msgid "Alias interface"
msgstr ""
msgid "Alias of \"%s\""
msgstr ""

View file

@ -267,9 +267,6 @@ msgstr "Alerta"
msgid "Alias Interface"
msgstr ""
msgid "Alias interface"
msgstr ""
msgid "Alias of \"%s\""
msgstr ""

View file

@ -276,9 +276,6 @@ msgstr "Тревога"
msgid "Alias Interface"
msgstr ""
msgid "Alias interface"
msgstr ""
msgid "Alias of \"%s\""
msgstr ""

View file

@ -255,9 +255,6 @@ msgstr ""
msgid "Alias Interface"
msgstr ""
msgid "Alias interface"
msgstr ""
msgid "Alias of \"%s\""
msgstr ""

View file

@ -263,9 +263,6 @@ msgstr "Varning"
msgid "Alias Interface"
msgstr ""
msgid "Alias interface"
msgstr ""
msgid "Alias of \"%s\""
msgstr ""

View file

@ -248,9 +248,6 @@ msgstr ""
msgid "Alias Interface"
msgstr ""
msgid "Alias interface"
msgstr ""
msgid "Alias of \"%s\""
msgstr ""

View file

@ -266,9 +266,6 @@ msgstr "Uyarı"
msgid "Alias Interface"
msgstr ""
msgid "Alias interface"
msgstr ""
msgid "Alias of \"%s\""
msgstr ""

View file

@ -291,9 +291,6 @@ msgstr "Тривога"
msgid "Alias Interface"
msgstr "Інтерфейс псевдоніма"
msgid "Alias interface"
msgstr "Інтерфейс псевдоніма"
msgid "Alias of \"%s\""
msgstr "Псевдонім \"%s\""

View file

@ -262,9 +262,6 @@ msgstr ""
msgid "Alias Interface"
msgstr ""
msgid "Alias interface"
msgstr ""
msgid "Alias of \"%s\""
msgstr ""

View file

@ -4,7 +4,7 @@ msgstr ""
"Last-Translator: Hsing-Wang Liao <kuoruan@gmail.com>\n"
msgid "%.1f dB"
msgstr ""
msgstr "%.1f dB"
msgid "%s is untagged in multiple VLANs!"
msgstr "%s 在多个 VLAN 中均未标记!"
@ -40,7 +40,7 @@ msgid "-- match by uuid --"
msgstr "-- 根据 UUID 匹配 --"
msgid "-- please select --"
msgstr ""
msgstr "-- 请选择 --"
msgid "1 Minute Load:"
msgstr "1 分钟负载:"
@ -258,16 +258,13 @@ msgid "Alert"
msgstr "警戒"
msgid "Alias Interface"
msgstr ""
msgid "Alias interface"
msgstr ""
msgstr "接口别名"
msgid "Alias of \"%s\""
msgstr ""
msgstr "\"%s\" 的别名"
msgid "All Servers"
msgstr ""
msgstr "所有服务器"
msgid ""
"Allocate IP addresses sequentially, starting from the lowest available "
@ -281,7 +278,7 @@ msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
msgstr "允许 <abbr title=\"Secure Shell\">SSH</abbr> 密码验证"
msgid "Allow AP mode to disconnect STAs based on low ACK condition"
msgstr ""
msgstr "允许 AP 模式时在 low ACK 的情况下断开无线终端"
msgid "Allow all except listed"
msgstr "仅允许列表外"
@ -318,6 +315,7 @@ msgid ""
"Always use 40MHz channels even if the secondary channel overlaps. Using this "
"option does not comply with IEEE 802.11n-2009!"
msgstr ""
"即使辅助信道重叠,也始终使用 40MHz 信道。使用此选项不符合IEEE 802.11n-2009"
msgid "Annex"
msgstr "Annex"
@ -398,7 +396,7 @@ msgid "Apply request failed with status <code>%h</code>"
msgstr "应用请求失败,状态 <code>%h</code>"
msgid "Apply unchecked"
msgstr "应用未选中"
msgstr "强制应用"
msgid "Architecture"
msgstr "架构"
@ -511,7 +509,7 @@ msgid "Band"
msgstr "频宽"
msgid "Beacon Interval"
msgstr ""
msgstr "Beacon 间隔"
msgid ""
"Below is the determined list of files to backup. It consists of changed "
@ -569,7 +567,7 @@ msgid "CPU usage (%)"
msgstr "CPU 使用率(%"
msgid "Call failed"
msgstr ""
msgstr "调用失败"
msgid "Cancel"
msgstr "取消"
@ -581,16 +579,16 @@ msgid "Chain"
msgstr "链"
msgid "Changes"
msgstr "改数"
msgstr "改数"
msgid "Changes applied."
msgstr "更改已应用。"
msgid "Changes have been reverted."
msgstr "更改已取消。"
msgstr "更改已恢复。"
msgid "Changes the administrator password for accessing the device"
msgstr "改访问设备的管理员密码"
msgstr "改访问设备的管理员密码"
msgid "Channel"
msgstr "信道"
@ -674,7 +672,7 @@ msgid "Configuration"
msgstr "配置"
msgid "Configuration failed"
msgstr ""
msgstr "配置失败"
msgid "Configuration files will be kept."
msgstr "配置文件将被保留。"
@ -698,7 +696,7 @@ msgid "Connection Limit"
msgstr "连接数限制"
msgid "Connection attempt failed"
msgstr ""
msgstr "尝试连接失败"
msgid "Connections"
msgstr "连接"
@ -708,7 +706,7 @@ msgid ""
"changes. You might need to reconnect if you modified network related "
"settings such as the IP address or wireless security credentials."
msgstr ""
"应用配置更改后,无法重新获得对设备的访问权限。如果您改了网络相关设置如 IP "
"应用配置更改后,无法重新获得对设备的访问权限。如果您改了网络相关设置如 IP "
"地址或无线安全证书,则可能需要重新连接。"
msgid "Country"
@ -815,7 +813,7 @@ msgid "DSL line mode"
msgstr "DSL 线路模式"
msgid "DTIM Interval"
msgstr ""
msgstr "DTIM 间隔"
msgid "DUID"
msgstr "DUID"
@ -856,7 +854,7 @@ msgid "Delete this network"
msgstr "删除此网络"
msgid "Delivery Traffic Indication Message Interval"
msgstr ""
msgstr "发送流量指示消息间隔"
msgid "Description"
msgstr "描述"
@ -880,7 +878,7 @@ msgid "Device unreachable!"
msgstr "无法连接到设备"
msgid "Device unreachable! Still waiting for device..."
msgstr ""
msgstr "无法连接到设备!仍旧等待设备..."
msgid "Diagnostics"
msgstr "网络诊断"
@ -914,16 +912,16 @@ msgid "Disabled"
msgstr "已禁用"
msgid "Disabled (default)"
msgstr "禁用(默认)"
msgstr "禁用(默认)"
msgid "Disassociate On Low Acknowledgement"
msgstr ""
msgstr "在 Low Acknowledgement 时断开连接"
msgid "Discard upstream RFC1918 responses"
msgstr "丢弃 RFC1918 上行响应数据"
msgid "Disconnection attempt failed"
msgstr ""
msgstr "尝试断开连接失败"
msgid "Dismiss"
msgstr "解除"
@ -978,7 +976,7 @@ msgstr ""
"不转发没有 <abbr title=\"Domain Name System\">DNS</abbr> 名称的解析请求"
msgid "Down"
msgstr ""
msgstr "向下"
msgid "Download and install package"
msgstr "下载并安装软件包"
@ -1021,7 +1019,7 @@ msgid "EAP-Method"
msgstr "EAP 类型"
msgid "Edit"
msgstr "修改"
msgstr "编辑"
msgid ""
"Edit the raw configuration data above to fix any error and hit \"Save\" to "
@ -1029,10 +1027,10 @@ msgid ""
msgstr "编辑上方的原始配置数据来修复错误,点击“保存”按钮以重新载入此页面。"
msgid "Edit this interface"
msgstr "修改此接口"
msgstr "编辑此接口"
msgid "Edit this network"
msgstr "修改此网络"
msgstr "编辑此网络"
msgid "Emergency"
msgstr "紧急"
@ -1095,7 +1093,7 @@ msgid "Enable this mount"
msgstr "启用此挂载点"
msgid "Enable this network"
msgstr ""
msgstr "启用此网络"
msgid "Enable this swap"
msgstr "启用此 swap 分区"
@ -1130,10 +1128,10 @@ msgid "Endpoint Port"
msgstr "端点端口"
msgid "Enter custom value"
msgstr ""
msgstr "输入自定义值"
msgid "Enter custom values"
msgstr ""
msgstr "输入自定义值"
msgid "Erasing..."
msgstr "擦除中..."
@ -1185,10 +1183,10 @@ msgid "Extra SSH command options"
msgstr "额外的 SSH 命令选项"
msgid "FT over DS"
msgstr ""
msgstr "FT over DS"
msgid "FT over the Air"
msgstr ""
msgstr "FT over the Air"
msgid "FT protocol"
msgstr "FT 协议"
@ -1215,7 +1213,7 @@ msgid "Filter useless"
msgstr "过滤无用包"
msgid "Finalizing failed"
msgstr ""
msgstr "最终确认失败"
msgid ""
"Find all currently attached filesystems and swap and replace configuration "
@ -1271,7 +1269,7 @@ msgid "Force"
msgstr "强制"
msgid "Force 40MHz mode"
msgstr ""
msgstr "强制 40MHz 模式"
msgid "Force CCMP (AES)"
msgstr "强制 CCMPAES"
@ -1338,7 +1336,7 @@ msgid "Gateway"
msgstr "网关"
msgid "Gateway address is invalid"
msgstr ""
msgstr "网关地址无效"
msgid "Gateway ports"
msgstr "网关端口"
@ -1426,7 +1424,7 @@ msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
msgstr "主机 <abbr title=\"Internet Protocol Address\">IP</abbr> 或网络"
msgid "Host-Uniq tag content"
msgstr ""
msgstr "Host-Uniq 标签内容"
msgid "Hostname"
msgstr "主机名"
@ -1450,10 +1448,10 @@ msgid "IP address"
msgstr "IP 地址"
msgid "IP address in invalid"
msgstr ""
msgstr "IP 地址无效"
msgid "IP address is missing"
msgstr ""
msgstr "IP 地址缺失"
msgid "IPv4"
msgstr "IPv4"
@ -1625,7 +1623,7 @@ msgid "Info"
msgstr "信息"
msgid "Initialization failure"
msgstr ""
msgstr "初始化失败"
msgid "Initscript"
msgstr "启动脚本"
@ -1863,7 +1861,7 @@ msgid "Loading"
msgstr "加载中"
msgid "Local IP address is invalid"
msgstr ""
msgstr "本地 IP 地址无效"
msgid "Local IP address to assign"
msgstr "要分配的本地 IP 地址"
@ -1930,7 +1928,7 @@ msgid "Lowest leased address as offset from the network address."
msgstr "网络地址的起始分配基址。"
msgid "MAC"
msgstr ""
msgstr "MAC"
msgid "MAC-Address"
msgstr "MAC 地址"
@ -1948,7 +1946,7 @@ msgid "MAP / LW4over6"
msgstr "MAP / LW4over6"
msgid "MAP rule is invalid"
msgstr ""
msgstr "MAP 规则无效"
msgid "MB/s"
msgstr "MB/s"
@ -2032,7 +2030,7 @@ msgid "Modem device"
msgstr "调制解调器节点"
msgid "Modem information query failed"
msgstr ""
msgstr "调制解调器信息查询失败"
msgid "Modem init timeout"
msgstr "调制解调器初始化超时"
@ -2130,7 +2128,7 @@ msgid "Network boot image"
msgstr "网络启动镜像"
msgid "Network device is not present"
msgstr ""
msgstr "网络设备不存在"
msgid "Network without interfaces."
msgstr "无接口的网络。"
@ -2154,7 +2152,7 @@ msgid "No information available"
msgstr "无可用信息"
msgid "No matching prefix delegation"
msgstr ""
msgstr "无匹配的前缀委托"
msgid "No negative cache"
msgstr "禁用无效信息缓存"
@ -2175,7 +2173,7 @@ msgid "No rules in this chain"
msgstr "本链没有规则"
msgid "No scan results available yet..."
msgstr ""
msgstr "还没有可用的扫描结果..."
msgid "No zone assigned"
msgstr "未指定区域"
@ -2281,10 +2279,10 @@ msgid "Operating frequency"
msgstr "工作频率"
msgid "Option changed"
msgstr "修改的选项"
msgstr "选项已更改"
msgid "Option removed"
msgstr "移除的选项"
msgstr "选项已移除"
msgid "Optional"
msgstr "可选"
@ -2314,7 +2312,7 @@ msgid "Optional. Create routes for Allowed IPs for this peer."
msgstr "可选,为此 Peer 创建允许 IP 的路由。"
msgid "Optional. Description of peer."
msgstr ""
msgstr "可选Peer 的描述。"
msgid ""
"Optional. Host of peer. Names are resolved prior to bringing up the "
@ -2397,7 +2395,7 @@ msgid "PIN"
msgstr "PIN"
msgid "PIN code rejected"
msgstr ""
msgstr "PIN 码被拒绝"
msgid "PMK R1 Push"
msgstr "R1 推送 PMK"
@ -2457,7 +2455,7 @@ msgid "Password of inner Private Key"
msgstr "内部私钥的密码"
msgid "Password successfully changed!"
msgstr "密码改成功!"
msgstr "密码改成功!"
msgid "Password2"
msgstr "密码 2"
@ -2487,7 +2485,7 @@ msgid "Peer IP address to assign"
msgstr "要分配的 Peer IP 地址"
msgid "Peer address is missing"
msgstr ""
msgstr "Peer 地址缺失"
msgid "Peers"
msgstr "Peers"
@ -2608,7 +2606,7 @@ msgstr "质量"
msgid ""
"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
"servers"
msgstr ""
msgstr "查询所有可用的上游 <abbr title=\"Domain Name System\">DNS</abbr> 服务器"
msgid "R0 Key Lifetime"
msgstr "R0 密钥生存期"
@ -2647,7 +2645,7 @@ msgid "Radius-Authentication-Server"
msgstr "Radius 认证服务器"
msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this"
msgstr ""
msgstr "原始 16 进制编码的字节。除非您的 ISP 要求,否则请留空"
msgid ""
"Read <code>/etc/ethers</code> to configure the <abbr title=\"Dynamic Host "
@ -2660,13 +2658,14 @@ msgid ""
"Really delete this interface? The deletion cannot be undone! You might lose "
"access to this device if you are connected via this interface"
msgstr ""
"确定要删除此接口?删除操作无法撤消!若您删除此接口,可能导致无法再访问此设备"
msgid ""
"Really delete this wireless network? The deletion cannot be undone! You "
"might lose access to this device if you are connected via this network."
msgstr ""
"确定要删除此无线网络?删除操作无法撤销!\\n删除此无线网络,可能导致无法再访问"
"路由器!"
"确定要删除此无线网络?删除操作无法撤销!若您删除此无线网络,可能导致无法再访问"
"此设备。"
msgid "Really reset all changes?"
msgstr "确定要放弃所有更改?"
@ -2809,7 +2808,7 @@ msgid "Restart Firewall"
msgstr "重启防火墙"
msgid "Restart radio interface"
msgstr ""
msgstr "重启无线接口"
msgid "Restore"
msgstr "恢复"
@ -2901,7 +2900,7 @@ msgid "Scan"
msgstr "扫描"
msgid "Scan request failed"
msgstr ""
msgstr "扫描请求失败"
msgid "Scheduled Tasks"
msgstr "计划任务"
@ -2946,10 +2945,10 @@ msgid "Set up Time Synchronization"
msgstr "设置时间同步"
msgid "Setting PLMN failed"
msgstr ""
msgstr "设置 PLMN 失败"
msgid "Setting operation mode failed"
msgstr ""
msgstr "设置操作模式失败"
msgid "Setup DHCP Server"
msgstr "配置 DHCP 服务器"
@ -2961,7 +2960,7 @@ msgid "Short GI"
msgstr "Short GI"
msgid "Short Preamble"
msgstr ""
msgstr "Short Preamble"
msgid "Show current backup file list"
msgstr "显示当前备份文件列表"
@ -3067,7 +3066,7 @@ msgid "Starting configuration apply…"
msgstr "开始应用配置..."
msgid "Starting wireless scan..."
msgstr ""
msgstr "正在启动无线扫描..."
msgid "Startup"
msgstr "启动项"
@ -3223,7 +3222,7 @@ msgstr ""
"code>"
msgid "The backup archive does not appear to be a valid gzip file."
msgstr ""
msgstr "备份存档似乎不是有效的 gzip 文件。"
msgid "The configuration file could not be loaded due to the following error:"
msgstr "由于以下错误,配置文件无法被加载:"
@ -3237,9 +3236,9 @@ msgid ""
"or revert all pending changes to keep the currently working configuration "
"state."
msgstr ""
"在应用挂起的更改后 %d 秒内无法到达该设备,出于安全原因导致配置回滚。如果您认"
"为配置更改仍然正确,请执行未选中的配置应用。或者您可以在尝试再次应用之前解除"
"此警告并编辑更改,或者还原所有未完成的更改以保持当前正在工作的配置状态。"
"在应用挂起的更改后 %d 秒内无法连接到此设备,出于安全原因导致配置回滚。如果您认"
"为配置的更改是正确的,请执行强制应用。或者您可以在再次尝试应用之前解除"
"此警告并编辑配置,或者恢复所有挂起的更改以保持当前正在工作的配置状态。"
msgid ""
"The device file of the memory or partition (<abbr title=\"for example\">e.g."
@ -3263,7 +3262,7 @@ msgstr ""
"过程中切勿断电!"
msgid "The following changes have been reverted"
msgstr "以下更改已放弃"
msgstr "以下更改已恢复"
msgid "The following rules are currently active on this system."
msgstr "以下规则当前在系统中处于活动状态。"
@ -3329,13 +3328,13 @@ msgid "There are no active leases."
msgstr "没有已分配的租约。"
msgid "There are no changes to apply."
msgstr "没有待生效的更改。"
msgstr "没有待应用的更改。"
msgid "There are no pending changes to revert!"
msgstr "没有可放弃的更改"
msgstr "没有挂起的更改可恢复"
msgid "There are no pending changes!"
msgstr "没有待生效的更改!"
msgstr "没有挂起的更改!"
msgid ""
"There is no device assigned yet, please attach a network device in the "
@ -3363,7 +3362,7 @@ msgid ""
"include during sysupgrade. Modified files in /etc/config/ and certain other "
"configurations are automatically preserved."
msgstr ""
"系统升级时要保存的配置文件和目录的清单。目录 /etc/config/ 内改过的文件以及"
"系统升级时要保存的配置文件和目录的清单。目录 /etc/config/ 内改过的文件以及"
"部分其他配置会被自动保存。"
msgid ""
@ -3497,25 +3496,25 @@ msgid "UUID"
msgstr "UUID"
msgid "Unable to determine device name"
msgstr ""
msgstr "无法确认设备名称"
msgid "Unable to determine external IP address"
msgstr ""
msgstr "无法确认外部 IP 地址"
msgid "Unable to determine upstream interface"
msgstr ""
msgstr "无法确认上游接口"
msgid "Unable to dispatch"
msgstr "无法调度"
msgid "Unable to obtain client ID"
msgstr ""
msgstr "无法获取客户端 ID"
msgid "Unable to resolve AFTR host name"
msgstr ""
msgstr "无法解析 AFTR 主机名"
msgid "Unable to resolve peer host name"
msgstr ""
msgstr "无法解析 Pear 主机名"
msgid "Unavailable Seconds (UAS)"
msgstr "不可用秒数UAS"
@ -3527,7 +3526,7 @@ msgid "Unknown Error, password not changed!"
msgstr "未知错误,密码未更改!"
msgid "Unknown error (%s)"
msgstr ""
msgstr "未知错误(%s"
msgid "Unmanaged"
msgstr "不配置协议"
@ -3539,16 +3538,16 @@ msgid "Unsaved Changes"
msgstr "未保存的配置"
msgid "Unsupported MAP type"
msgstr ""
msgstr "不支持的 MAP 类型"
msgid "Unsupported modem"
msgstr ""
msgstr "不支持的调制解调器"
msgid "Unsupported protocol type."
msgstr "不支持的协议类型"
msgid "Up"
msgstr ""
msgstr "向上"
msgid "Update lists"
msgstr "刷新列表"
@ -3688,7 +3687,7 @@ msgid "Version"
msgstr "版本"
msgid "Virtual dynamic interface"
msgstr ""
msgstr "虚拟动态接口"
msgid "WDS"
msgstr "WDS"
@ -3813,7 +3812,7 @@ msgid "bridged"
msgstr "桥接的"
msgid "create"
msgstr ""
msgstr "创建"
msgid "create:"
msgstr "创建:"
@ -3880,7 +3879,7 @@ msgid "minutes"
msgstr "分钟"
msgid "mixed WPA/WPA2"
msgstr ""
msgstr "mixed WPA/WPA2"
msgid "no"
msgstr "否"
@ -3904,7 +3903,7 @@ msgid "open"
msgstr "开放式"
msgid "output"
msgstr ""
msgstr "输出"
msgid "overlay"
msgstr "覆盖"

View file

@ -265,9 +265,6 @@ msgstr "警示"
msgid "Alias Interface"
msgstr ""
msgid "Alias interface"
msgstr ""
msgid "Alias of \"%s\""
msgstr ""

BIN
luci-base/src/po2lmo Executable file

Binary file not shown.

BIN
luci-base/src/po2lmo.o Normal file

Binary file not shown.

Binary file not shown.

View file

@ -9,7 +9,7 @@ function index()
or table.concat(luci.dispatcher.context.request, "/")
entry({"admin", "uci"}, nil, _("Configuration"))
entry({"admin", "uci", "changes"}, call("action_changes"), _("Changes"), 40).query = {redir=redir}
entry({"admin", "uci", "changes"}, post_on({ trigger_apply = true }, "action_changes"), _("Changes"), 40).query = {redir=redir}
entry({"admin", "uci", "revert"}, post("action_revert"), _("Revert"), 30).query = {redir=redir}
local node
@ -25,9 +25,9 @@ function index()
node.cors = true
node.sysauth_authenticator = authen
node = entry({"admin", "uci", "confirm"}, post("action_confirm"), nil)
node = entry({"admin", "uci", "confirm"}, call("action_confirm"), nil)
node.cors = true
node.sysauth_authenticator = authen
node.sysauth = false
end
@ -36,8 +36,9 @@ function action_changes()
local changes = uci:changes()
luci.template.render("admin_uci/changes", {
changes = next(changes) and changes,
timeout = timeout
changes = next(changes) and changes,
timeout = timeout,
trigger_apply = luci.http.formvalue("trigger_apply") and true or false
})
end
@ -52,7 +53,8 @@ function action_revert()
end
luci.template.render("admin_uci/revert", {
changes = next(changes) and changes
changes = next(changes) and changes,
trigger_revert = true
})
end
@ -84,8 +86,13 @@ end
function action_apply_rollback()
local uci = require "luci.model.uci"
local _, errstr = uci:apply(true)
ubus_state_to_http(errstr)
local token, errstr = uci:apply(true)
if token then
luci.http.prepare_content("application/json")
luci.http.write_json({ token = token })
else
ubus_state_to_http(errstr)
end
end
function action_apply_unchecked()
@ -96,6 +103,7 @@ end
function action_confirm()
local uci = require "luci.model.uci"
local _, errstr = uci:confirm()
local token = luci.http.formvalue("token")
local _, errstr = uci:confirm(token)
ubus_state_to_http(errstr)
end

View file

@ -70,7 +70,7 @@ local tpl_radio = tpl.Template(nil, [[
<!-- physical device -->
<div class="tr cbi-rowstyle-2">
<div class="td col-2 center middle">
<span class="ifacebadge"><img src="<%=resource%>/icons/wifi_toggled.png" id="<%=dev:name()%>-iw-upstate" /> <%=dev:name()%></span>
<span class="ifacebadge"><img src="<%=resource%>/icons/wifi_disabled.png" id="<%=dev:name()%>-iw-upstate" /> <%=dev:name()%></span>
</div>
<div class="td col-7 left middle">
<big><strong><%=hw%></strong></big><br />
@ -115,8 +115,8 @@ local tpl_radio = tpl.Template(nil, [[
</div>
<% end %>
<% else %>
<div class="tr cbi-rowstyle-2">
<div class="td left">
<div class="tr placeholder">
<div class="td">
<em><%:No network configured on this device%></em>
</div>
</div>

View file

@ -94,7 +94,7 @@
if (ifc.is_dynamic)
desc = '<%:Virtual dynamic interface%>';
else if (ifc.is_alias)
desc = '<%:Alias interface%>';
desc = '<%:Alias Interface%>';
if (ifc.desc)
desc = desc ? '%s (%s)'.format(desc, ifc.desc) : ifc.desc;
@ -110,7 +110,7 @@
if (!ifc.is_dynamic && !ifc.is_alias)
{
if (ifc.macaddr)
html += String.format('<strong><%:MAC-Address%>:</strong> %s<br />', ifc.macaddr);
html += String.format('<strong><%:MAC%>:</strong> %s<br />', ifc.macaddr);
html += String.format(
'<strong><%:RX%>:</strong> %.2mB (%d <%:Pkts.%>)<br />' +

View file

@ -17,7 +17,7 @@
html += String.format('<strong><%:Uptime%>:</strong> %t<br />', ifc.uptime);
if (ifc.macaddr)
html += String.format('<strong><%:MAC-Address%>:</strong> %s<br />', ifc.macaddr);
html += String.format('<strong><%:MAC%>:</strong> %s<br />', ifc.macaddr);
html += String.format(
'<strong><%:RX%></strong>: %.2mB (%d <%:Pkts.%>)<br />' +

View file

@ -224,63 +224,36 @@
<% end %>
<% if has_dsl then %>
var dsl_i = document.getElementById('dsl_i');
var dsl_s = document.getElementById('dsl_s');
var ds = document.getElementById('dsl_status_table');
var s = String.format(
'<strong><%:Status%>: </strong>%s<br />' +
'<strong><%:Line State%>: </strong>%s [0x%x]<br />' +
'<strong><%:Line Mode%>: </strong>%s<br />' +
'<strong><%:Annex%>: </strong>%s<br />' +
'<strong><%:Profile%>: </strong>%s<br />' +
'<strong><%:Data Rate%>: </strong>%s/s / %s/s<br />' +
'<strong><%:Max. Attainable Data Rate (ATTNDR)%>: </strong>%s/s / %s/s<br />' +
'<strong><%:Latency%>: </strong>%s / %s<br />' +
'<strong><%:Line Attenuation (LATN)%>: </strong>%s dB / %s dB<br />' +
'<strong><%:Signal Attenuation (SATN)%>: </strong>%s dB / %s dB<br />' +
'<strong><%:Noise Margin (SNR)%>: </strong>%s dB / %s dB<br />' +
'<strong><%:Aggregate Transmit Power(ACTATP)%>: </strong>%s dB / %s dB<br />' +
'<strong><%:Forward Error Correction Seconds (FECS)%>: </strong>%s / %s<br />' +
'<strong><%:Errored seconds (ES)%>: </strong>%s / %s<br />' +
'<strong><%:Severely Errored Seconds (SES)%>: </strong>%s / %s<br />' +
'<strong><%:Loss of Signal Seconds (LOSS)%>: </strong>%s / %s<br />' +
'<strong><%:Unavailable Seconds (UAS)%>: </strong>%s / %s<br />' +
'<strong><%:Header Error Code Errors (HEC)%>: </strong>%s / %s<br />' +
'<strong><%:Non Pre-emtive CRC errors (CRC_P)%>: </strong>%s / %s<br />' +
'<strong><%:Pre-emtive CRC errors (CRCP_P)%>: </strong>%s / %s<br />' +
'<strong><%:Line Uptime%>: </strong>%s<br />' +
'<strong><%:ATU-C System Vendor ID%>: </strong>%s<br />' +
'<strong><%:Power Management Mode%>: </strong>%s<br />',
info.dsl.line_state, info.dsl.line_state_detail,
info.dsl.line_state_num,
info.dsl.line_mode_s,
info.dsl.annex_s,
info.dsl.profile_s,
info.dsl.data_rate_down_s, info.dsl.data_rate_up_s,
info.dsl.max_data_rate_down_s, info.dsl.max_data_rate_up_s,
info.dsl.latency_num_down, info.dsl.latency_num_up,
info.dsl.line_attenuation_down, info.dsl.line_attenuation_up,
info.dsl.signal_attenuation_down, info.dsl.signal_attenuation_up,
info.dsl.noise_margin_down, info.dsl.noise_margin_up,
info.dsl.actatp_down, info.dsl.actatp_up,
info.dsl.errors_fec_near, info.dsl.errors_fec_far,
info.dsl.errors_es_near, info.dsl.errors_es_far,
info.dsl.errors_ses_near, info.dsl.errors_ses_far,
info.dsl.errors_loss_near, info.dsl.errors_loss_far,
info.dsl.errors_uas_near, info.dsl.errors_uas_far,
info.dsl.errors_hec_near, info.dsl.errors_hec_far,
info.dsl.errors_crc_p_near, info.dsl.errors_crc_p_far,
info.dsl.errors_crcp_p_near, info.dsl.errors_crcp_p_far,
info.dsl.line_uptime_s,
info.dsl.atuc_vendor_id,
info.dsl.power_mode_s
);
while (ds.lastElementChild)
ds.removeChild(ds.lastElementChild);
dsl_s.innerHTML = String.format('<small>%s</small>', s);
dsl_i.innerHTML = String.format(
'<img src="<%=resource%>/icons/ethernet.png" />' +
'<br /><small>DSL</small>'
);
ds.appendChild(renderBox(
'<%:DSL Status%>',
(info.dsl.line_state === 'UP'), [ ],
'<%:Line State%>', '%s [0x%x]'.format(info.dsl.line_state, info.dsl.line_state_detail),
'<%:Line Mode%>', info.dsl.line_mode_s || '-',
'<%:Line Uptime%>', info.dsl.line_uptime_s || '-',
'<%:Annex%>', info.dsl.annex_s || '-',
'<%:Profile%>', info.dsl.profile_s || '-',
'<%:Data Rate%>', '%s/s / %s/s'.format(info.dsl.data_rate_down_s, info.dsl.data_rate_up_s),
'<%:Max. Attainable Data Rate (ATTNDR)%>', '%s/s / %s/s'.format(info.dsl.max_data_rate_down_s, info.dsl.max_data_rate_up_s),
'<%:Latency%>', '%s / %s'.format(info.dsl.latency_num_down, info.dsl.latency_num_up),
'<%:Line Attenuation (LATN)%>', '%d dB / %d dB'.format(info.dsl.line_attenuation_down, info.dsl.line_attenuation_up),
'<%:Signal Attenuation (SATN)%>', '%d dB / %d dB'.format(info.dsl.signal_attenuation_down, info.dsl.signal_attenuation_up),
'<%:Noise Margin (SNR)%>', '%d dB / %d dB'.format(info.dsl.noise_margin_down, info.dsl.noise_margin_up),
'<%:Aggregate Transmit Power(ACTATP)%>', '%d dB / %d dB'.format(info.dsl.actatp_down, info.dsl.actatp_up),
'<%:Forward Error Correction Seconds (FECS)%>', '%d / %d'.format(info.dsl.errors_fec_near, info.dsl.errors_fec_far),
'<%:Errored seconds (ES)%>', '%d / %d'.format(info.dsl.errors_es_near, info.dsl.errors_es_far),
'<%:Severely Errored Seconds (SES)%>', '%d / %d'.format(info.dsl.errors_ses_near, info.dsl.errors_ses_far),
'<%:Loss of Signal Seconds (LOSS)%>', '%d / %d'.format(info.dsl.errors_loss_near, info.dsl.errors_loss_far),
'<%:Unavailable Seconds (UAS)%>', '%d / %d'.format(info.dsl.errors_uas_near, info.dsl.errors_uas_far),
'<%:Header Error Code Errors (HEC)%>', '%d / %d'.format(info.dsl.errors_hec_near, info.dsl.errors_hec_far),
'<%:Non Pre-emtive CRC errors (CRC_P)%>', '%d / %d'.format(info.dsl.errors_crc_p_near, info.dsl.errors_crc_p_far),
'<%:Pre-emtive CRC errors (CRCP_P)%>', '%d / %d'.format(info.dsl.errors_crcp_p_near, info.dsl.errors_crcp_p_far),
'<%:ATU-C System Vendor ID%>', info.dsl.atuc_vendor_id,
'<%:Power Management Mode%>', info.dsl.power_mode_s));
<% end %>
<% if has_wifi then %>
@ -457,18 +430,8 @@
<div class="cbi-section">
<h3><%:DSL%></h3>
<div class="table" width="100%">
<div class="tr">
<div class="td left" width="33%" style="vertical-align:top"><%:DSL Status%></div>
<div class="td">
<div class="table">
<div class="tr">
<div class="td" id="dsl_i" style="width:16px; text-align:center; padding:3px"><img src="<%=resource%>/icons/ethernet_disabled.png" /><br /><small>?</small></div>
<div class="td left" id="dsl_s" style="vertical-align:middle; padding: 3px"><em><%:Collecting data...%></em></div>
</div>
</div>
</div>
</div>
<div id="dsl_status_table" class="network-status-table">
<p><em><%:Collecting data...%></em></p>
</div>
</div>
<% end %>

View file

@ -102,7 +102,7 @@ end
<div class="cbi-value">
<label class="cbi-value-title"><%:Download and install package%>:</label>
<div class="cbi-value-field">
<input type="text" name="url" size="30" value="" />
<span><input type="text" name="url" size="30" value="" /></span>
<input class="cbi-button cbi-button-save" type="submit" name="go" value="<%:OK%>" />
</div>
</div>
@ -110,7 +110,7 @@ end
<div class="cbi-value cbi-value-last">
<label class="cbi-value-title"><%:Filter%>:</label>
<div class="cbi-value-field">
<input type="text" name="query" size="20" value="<%=pcdata(query)%>" />
<span><input type="text" name="query" size="20" value="<%=pcdata(query)%>" /></span>
<input type="submit" class="cbi-button cbi-button-action" name="search" value="<%:Find package%>" />
</div>
</div>

View file

@ -8,11 +8,9 @@
<%-
local node, redir_url = luci.dispatcher.lookup(luci.http.formvalue("redir"))
export("redirect", redir_url or url("admin/uci/changes"))
include("cbi/apply_widget")
include("admin_uci/changelog")
cbi_apply_widget(redir_url or url("admin/uci/changes"))
-%>
<h2 name="content"><%:Configuration%> / <%:Changes%></h2>
@ -32,7 +30,11 @@
</form>
<% end %>
<input class="cbi-button cbi-button-save" type="button" id="apply_button" value="<%:Save & Apply%>" onclick="uci_apply(true); this.blur()" />
<form method="post" action="<%=url("admin/uci/changes")%>">
<input type="hidden" name="token" value="<%=token%>" />
<input type="hidden" name="redir" value="<%=pcdata(luci.http.formvalue("redir"))%>" />
<input class="cbi-button cbi-button-save" type="submit" name="trigger_apply" value="<%:Save & Apply%>" />
</form>
<form method="post" action="<%=url("admin/uci/revert")%>">
<input type="hidden" name="token" value="<%=token%>" />
<input type="hidden" name="redir" value="<%=pcdata(luci.http.formvalue("redir"))%>" />

View file

@ -8,11 +8,9 @@
<%-
local node, redir_url = luci.dispatcher.lookup(luci.http.formvalue("redir"))
export("redirect", redir_url or url("admin/uci/changes"))
include("cbi/apply_widget")
include("admin_uci/changelog")
cbi_apply_widget(redir_url or url("admin/uci/revert"))
-%>
<h2 name="content"><%:Configuration%> / <%:Revert%></h2>
@ -24,13 +22,6 @@
<p><strong><%:There are no pending changes to revert!%></strong></p>
<% end %>
<div class="alert-message" id="cbi_apply_status" style="display:none"></div>
<script type="text/javascript">
document.addEventListener("DOMContentLoaded", function() {
uci_revert();
});
</script>
<% if redir_url then %>
<div class="cbi-page-actions">
<form class="inline" method="get" action="<%=luci.util.pcdata(redir_url)%>">