summaryrefslogtreecommitdiffhomepage
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/luci-base/Makefile3
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/xhr.js19
-rw-r--r--modules/luci-base/luasrc/dispatcher.lua15
-rw-r--r--modules/luci-base/luasrc/model/uci.lua92
-rw-r--r--modules/luci-base/luasrc/util.lua16
-rw-r--r--modules/luci-base/luasrc/view/cbi/apply_widget.htm12
-rw-r--r--modules/luci-base/luasrc/view/cbi/map.htm15
-rw-r--r--modules/luci-base/luasrc/view/footer.htm25
-rw-r--r--modules/luci-base/po/ca/base.po2
-rw-r--r--modules/luci-base/po/cs/base.po2
-rw-r--r--modules/luci-base/po/de/base.po2
-rw-r--r--modules/luci-base/po/el/base.po2
-rw-r--r--modules/luci-base/po/en/base.po2
-rw-r--r--modules/luci-base/po/es/base.po2
-rw-r--r--modules/luci-base/po/fr/base.po2
-rw-r--r--modules/luci-base/po/he/base.po2
-rw-r--r--modules/luci-base/po/hu/base.po2
-rw-r--r--modules/luci-base/po/it/base.po2
-rw-r--r--modules/luci-base/po/ja/base.po2
-rw-r--r--modules/luci-base/po/ko/base.po2
-rw-r--r--modules/luci-base/po/ms/base.po2
-rw-r--r--modules/luci-base/po/no/base.po2
-rw-r--r--modules/luci-base/po/pl/base.po91
-rw-r--r--modules/luci-base/po/pt-br/base.po2
-rw-r--r--modules/luci-base/po/pt/base.po2
-rw-r--r--modules/luci-base/po/ro/base.po2
-rw-r--r--modules/luci-base/po/ru/base.po2
-rw-r--r--modules/luci-base/po/sk/base.po2
-rw-r--r--modules/luci-base/po/sv/base.po2
-rw-r--r--modules/luci-base/po/templates/base.pot2
-rw-r--r--modules/luci-base/po/tr/base.po2
-rw-r--r--modules/luci-base/po/uk/base.po2
-rw-r--r--modules/luci-base/po/vi/base.po2
-rw-r--r--modules/luci-base/po/zh-cn/base.po243
-rw-r--r--modules/luci-base/po/zh-tw/base.po2
-rw-r--r--modules/luci-mod-admin-full/luasrc/controller/admin/uci.lua26
-rw-r--r--modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi_overview.lua6
-rw-r--r--modules/luci-mod-admin-full/luasrc/view/admin_network/iface_overview_status.htm2
-rw-r--r--modules/luci-mod-admin-full/luasrc/view/admin_network/iface_status.htm2
-rw-r--r--modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm101
-rw-r--r--modules/luci-mod-admin-full/luasrc/view/admin_system/packages.htm4
-rw-r--r--modules/luci-mod-admin-full/luasrc/view/admin_uci/changes.htm10
-rw-r--r--modules/luci-mod-admin-full/luasrc/view/admin_uci/revert.htm11
43 files changed, 394 insertions, 349 deletions
diff --git a/modules/luci-base/Makefile b/modules/luci-base/Makefile
index 5c38d99c58..06ee7985eb 100644
--- a/modules/luci-base/Makefile
+++ b/modules/luci-base/Makefile
@@ -37,13 +37,14 @@ endef
define Host/Compile
$(MAKE) -C src/ clean po2lmo
- $(MAKE) -C $(HOST_BUILD_DIR) bin/luasrcdiet
endef
define Host/Install
$(INSTALL_DIR) $(1)/bin
+ $(INSTALL_DIR) $(1)/lib/lua/5.1
$(INSTALL_BIN) src/po2lmo $(1)/bin/po2lmo
$(INSTALL_BIN) $(HOST_BUILD_DIR)/bin/luasrcdiet $(1)/bin/luasrcdiet
+ $(CP) $(HOST_BUILD_DIR)/luasrcdiet $(1)/lib/lua/5.1/
endef
$(eval $(call HostBuild))
diff --git a/modules/luci-base/htdocs/luci-static/resources/xhr.js b/modules/luci-base/htdocs/luci-static/resources/xhr.js
index 62b525ebb0..25a90e7254 100644
--- a/modules/luci-base/htdocs/luci-static/resources/xhr.js
+++ b/modules/luci-base/htdocs/luci-static/resources/xhr.js
@@ -65,12 +65,8 @@ XHR = function()
if (xhr.readyState == 4) {
var json = null;
if (xhr.getResponseHeader("Content-Type") == "application/json") {
- try {
- json = JSON.parse(xhr.responseText);
- }
- catch(e) {
- json = null;
- }
+ try { json = JSON.parse(xhr.responseText); }
+ catch(e) { json = null; }
}
callback(xhr, json, Date.now() - ts);
@@ -90,8 +86,15 @@ XHR = function()
xhr.onreadystatechange = function()
{
- if (xhr.readyState == 4)
- callback(xhr, null, Date.now() - ts);
+ if (xhr.readyState == 4) {
+ var json = null;
+ if (xhr.getResponseHeader("Content-Type") == "application/json") {
+ try { json = JSON.parse(xhr.responseText); }
+ catch(e) { json = null; }
+ }
+
+ callback(xhr, json, Date.now() - ts);
+ }
}
xhr.open('POST', url, true);
diff --git a/modules/luci-base/luasrc/dispatcher.lua b/modules/luci-base/luasrc/dispatcher.lua
index 6d5a8f4d3d..6cf2712eb4 100644
--- a/modules/luci-base/luasrc/dispatcher.lua
+++ b/modules/luci-base/luasrc/dispatcher.lua
@@ -893,8 +893,6 @@ local function _cbi(self, ...)
local pageaction = true
local parsechain = { }
- local is_rollback, time_remaining = uci:rollback_pending()
-
for i, res in ipairs(maps) do
if res.apply_needed and res.parsechain then
local c
@@ -921,8 +919,6 @@ local function _cbi(self, ...)
for i, res in ipairs(maps) do
res:render({
firstmap = (i == 1),
- applymap = applymap,
- confirmmap = (is_rollback and time_remaining or nil),
redirect = redirect,
messages = messages,
pageaction = pageaction,
@@ -932,11 +928,12 @@ local function _cbi(self, ...)
if not config.nofooter then
tpl.render("cbi/footer", {
- flow = config,
- pageaction = pageaction,
- redirect = redirect,
- state = state,
- autoapply = config.autoapply
+ flow = config,
+ pageaction = pageaction,
+ redirect = redirect,
+ state = state,
+ autoapply = config.autoapply,
+ trigger_apply = applymap
})
end
end
diff --git a/modules/luci-base/luasrc/model/uci.lua b/modules/luci-base/luasrc/model/uci.lua
index 92c0d8f699..b2c1e463bf 100644
--- a/modules/luci-base/luasrc/model/uci.lua
+++ b/modules/luci-base/luasrc/model/uci.lua
@@ -147,19 +147,31 @@ function apply(self, rollback)
local _, err
if rollback then
+ local sys = require "luci.sys"
local conf = require "luci.config"
- local timeout = tonumber(conf and conf.apply and conf.apply.rollback or "") or 0
+ local timeout = tonumber(conf and conf.apply and conf.apply.rollback or 30) or 0
_, err = call("apply", {
- timeout = (timeout > 30) and timeout or 30,
+ timeout = (timeout > 30) and timeout or 30,
rollback = true
})
if not err then
+ local now = os.time()
+ local token = sys.uniqueid(16)
+
util.ubus("session", "set", {
- ubus_rpc_session = session_id,
- values = { rollback = os.time() + timeout }
+ ubus_rpc_session = "00000000000000000000000000000000",
+ values = {
+ rollback = {
+ token = token,
+ session = session_id,
+ timeout = now + timeout
+ }
+ }
})
+
+ return token
end
else
_, err = call("changes", {})
@@ -184,40 +196,72 @@ function apply(self, rollback)
return (err == nil), ERRSTR[err]
end
-function confirm(self)
- local _, err = call("confirm", {})
- if not err then
- util.ubus("session", "set", {
- ubus_rpc_session = session_id,
- values = { rollback = 0 }
+function confirm(self, token)
+ local is_pending, time_remaining, rollback_sid, rollback_token = self:rollback_pending()
+
+ if is_pending then
+ if token ~= rollback_token then
+ return false, "Permission denied"
+ end
+
+ local _, err = util.ubus("uci", "confirm", {
+ ubus_rpc_session = rollback_sid
})
+
+ if not err then
+ util.ubus("session", "set", {
+ ubus_rpc_session = "00000000000000000000000000000000",
+ values = { rollback = {} }
+ })
+ end
+
+ return (err == nil), ERRSTR[err]
end
- return (err == nil), ERRSTR[err]
+
+ return false, "No data"
end
function rollback(self)
- local _, err = call("rollback", {})
- if not err then
- util.ubus("session", "set", {
- ubus_rpc_session = session_id,
- values = { rollback = 0 }
+ local is_pending, time_remaining, rollback_sid = self:rollback_pending()
+
+ if is_pending then
+ local _, err = util.ubus("uci", "rollback", {
+ ubus_rpc_session = rollback_sid
})
+
+ if not err then
+ util.ubus("session", "set", {
+ ubus_rpc_session = "00000000000000000000000000000000",
+ values = { rollback = {} }
+ })
+ end
+
+ return (err == nil), ERRSTR[err]
end
- return (err == nil), ERRSTR[err]
+
+ return false, "No data"
end
function rollback_pending(self)
- local deadline, err = util.ubus("session", "get", {
- ubus_rpc_session = session_id,
+ local rv, err = util.ubus("session", "get", {
+ ubus_rpc_session = "00000000000000000000000000000000",
keys = { "rollback" }
})
- if type(deadline) == "table" and
- type(deadline.values) == "table" and
- type(deadline.values.rollback) == "number" and
- deadline.values.rollback > os.time()
+ local now = os.time()
+
+ if type(rv) == "table" and
+ type(rv.values) == "table" and
+ type(rv.values.rollback) == "table" and
+ type(rv.values.rollback.token) == "string" and
+ type(rv.values.rollback.session) == "string" and
+ type(rv.values.rollback.timeout) == "number" and
+ rv.values.rollback.timeout > now
then
- return true, deadline.values.rollback - os.time()
+ return true,
+ rv.values.rollback.timeout - now,
+ rv.values.rollback.session,
+ rv.values.rollback.token
end
return false, ERRSTR[err]
diff --git a/modules/luci-base/luasrc/util.lua b/modules/luci-base/luasrc/util.lua
index 10428b0b35..f16b3afb2e 100644
--- a/modules/luci-base/luasrc/util.lua
+++ b/modules/luci-base/luasrc/util.lua
@@ -16,7 +16,7 @@ local _ubus = require "ubus"
local _ubus_connection = nil
local getmetatable, setmetatable = getmetatable, setmetatable
-local rawget, rawset, unpack = rawget, rawset, unpack
+local rawget, rawset, unpack, select = rawget, rawset, unpack, select
local tostring, type, assert, error = tostring, type, assert, error
local ipairs, pairs, next, loadstring = ipairs, pairs, next, loadstring
local require, pcall, xpcall = require, pcall, xpcall
@@ -647,6 +647,17 @@ local ubus_codes = {
"CONNECTION_FAILED"
}
+local function ubus_return(...)
+ if select('#', ...) == 2 then
+ local rv, err = select(1, ...), select(2, ...)
+ if rv == nil and type(err) == "number" then
+ return nil, err, ubus_codes[err]
+ end
+ end
+
+ return ...
+end
+
function ubus(object, method, data)
if not _ubus_connection then
_ubus_connection = _ubus.connect()
@@ -657,8 +668,7 @@ function ubus(object, method, data)
if type(data) ~= "table" then
data = { }
end
- local rv, err = _ubus_connection:call(object, method, data)
- return rv, err, ubus_codes[err]
+ return ubus_return(_ubus_connection:call(object, method, data))
elseif object then
return _ubus_connection:signatures(object)
else
diff --git a/modules/luci-base/luasrc/view/cbi/apply_widget.htm b/modules/luci-base/luasrc/view/cbi/apply_widget.htm
index f76846ee87..ce279edd40 100644
--- a/modules/luci-base/luasrc/view/cbi/apply_widget.htm
+++ b/modules/luci-base/luasrc/view/cbi/apply_widget.htm
@@ -1,4 +1,4 @@
-<% export("cbi_apply_widget", function(redirect_ok) -%>
+<% export("cbi_apply_widget", function(redirect_ok, rollback_token) -%>
<style type="text/css">
#cbi_apply_overlay {
position: absolute;
@@ -51,6 +51,7 @@
uci_apply_holdoff = <%=math.max(luci.config and luci.config.apply and luci.config.apply.holdoff or 4, 1)%>,
uci_apply_timeout = <%=math.max(luci.config and luci.config.apply and luci.config.apply.timeout or 5, 1)%>,
uci_apply_display = <%=math.max(luci.config and luci.config.apply and luci.config.apply.display or 1.5, 1)%>,
+ uci_confirm_auth = <% if rollback_token then %>{ token: '<%=rollback_token%>' }<% else %>null<% end %>,
was_xhr_poll_running = false;
function uci_status_message(type, content) {
@@ -148,7 +149,7 @@
var delay = isNaN(duration) ? 0 : Math.max(1000 - duration, 0);
window.setTimeout(function() {
- xhr.post('<%=url("admin/uci/confirm")%>', uci_apply_auth, call, uci_apply_timeout * 1000);
+ xhr.post('<%=url("admin/uci/confirm")%>', uci_confirm_auth, call, uci_apply_timeout * 1000);
}, delay);
};
@@ -157,7 +158,7 @@
uci_status_message('notice',
'<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)));
+ '<%:Waiting for configuration to be applied… %ds%>'.format(Math.max(Math.floor((deadline - Date.now()) / 1000), 0)));
if (now >= deadline)
return;
@@ -177,8 +178,11 @@
'<img src="<%=resource%>/icons/loading.gif" alt="" style="vertical-align:middle" /> ' +
'<%:Starting configuration apply…%>');
- xhr.post('<%=url("admin/uci")%>/' + (checked ? 'apply_rollback' : 'apply_unchecked'), uci_apply_auth, function(r) {
+ xhr.post('<%=url("admin/uci")%>/' + (checked ? 'apply_rollback' : 'apply_unchecked'), uci_apply_auth, function(r, tok) {
if (r.status === (checked ? 200 : 204)) {
+ if (checked && tok !== null && typeof(tok) === 'object' && typeof(tok.token) === 'string')
+ uci_confirm_auth = tok;
+
uci_confirm(checked, Date.now() + uci_apply_rollback * 1000);
}
else if (checked && r.status === 204) {
diff --git a/modules/luci-base/luasrc/view/cbi/map.htm b/modules/luci-base/luasrc/view/cbi/map.htm
index 83c3cb2170..d65a161673 100644
--- a/modules/luci-base/luasrc/view/cbi/map.htm
+++ b/modules/luci-base/luasrc/view/cbi/map.htm
@@ -5,21 +5,6 @@
<div class="cbi-map" id="cbi-<%=self.config%>">
<% if self.title and #self.title > 0 then %><h2 name="content"><%=self.title%></h2><% end %>
<% if self.description and #self.description > 0 then %><div class="cbi-map-descr"><%=self.description%></div><% end %>
- <%- if firstmap and (applymap or confirmmap) then -%>
- <%+cbi/apply_widget%>
- <% cbi_apply_widget(redirect) %>
- <div class="alert-message" id="cbi_apply_status" style="display:none"></div>
- <script type="text/javascript">
- document.addEventListener("DOMContentLoaded", function() {
- <% if confirmmap then -%>
- uci_confirm(true, Date.now() + <%=confirmmap%> * 1000);
- <%- else -%>
- uci_apply(true);
- <%- end %>
- });
- </script>
- <%- end -%>
-
<% if self.tabbed then %>
<ul class="cbi-tabmenu map">
<%- self.selected_tab = luci.http.formvalue("tab.m-" .. self.config) %>
diff --git a/modules/luci-base/luasrc/view/footer.htm b/modules/luci-base/luasrc/view/footer.htm
index f3574b6b10..1667d3aa9a 100644
--- a/modules/luci-base/luasrc/view/footer.htm
+++ b/modules/luci-base/luasrc/view/footer.htm
@@ -4,4 +4,27 @@
Licensed to the public under the Apache License 2.0.
-%>
-<% include("themes/" .. theme .. "/footer") %> \ No newline at end of file
+<%
+ local is_rollback_pending, rollback_time_remaining, rollback_session, rollback_token = luci.model.uci:rollback_pending()
+
+ if is_rollback_pending or trigger_apply or trigger_revert then
+ include("cbi/apply_widget")
+ cbi_apply_widget(redirect, rollback_token)
+%>
+ <div class="alert-message" id="cbi_apply_status" style="display:none"></div>
+ <script type="text/javascript">
+ document.addEventListener("DOMContentLoaded", function() {
+ <% if trigger_apply then -%>
+ uci_apply(true);
+ <%- elseif trigger_revert then -%>
+ uci_revert();
+ <%- else -%>
+ uci_confirm(true, Date.now() + <%=rollback_time_remaining%> * 1000);
+ <%- end %>
+ });
+ </script>
+<%
+ end
+
+ include("themes/" .. theme .. "/footer")
+%>
diff --git a/modules/luci-base/po/ca/base.po b/modules/luci-base/po/ca/base.po
index 5885894499..6fd182693f 100644
--- a/modules/luci-base/po/ca/base.po
+++ b/modules/luci-base/po/ca/base.po
@@ -3744,7 +3744,7 @@ 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"
+msgid "Waiting for configuration to be applied… %ds"
msgstr ""
msgid "Waiting for device..."
diff --git a/modules/luci-base/po/cs/base.po b/modules/luci-base/po/cs/base.po
index 4075c5b06f..6182378a74 100644
--- a/modules/luci-base/po/cs/base.po
+++ b/modules/luci-base/po/cs/base.po
@@ -3776,7 +3776,7 @@ 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"
+msgid "Waiting for configuration to be applied… %ds"
msgstr ""
msgid "Waiting for device..."
diff --git a/modules/luci-base/po/de/base.po b/modules/luci-base/po/de/base.po
index fd7bb4c388..a70a2e9855 100644
--- a/modules/luci-base/po/de/base.po
+++ b/modules/luci-base/po/de/base.po
@@ -3940,7 +3940,7 @@ msgstr "Änderungen werden angewandt..."
msgid "Waiting for command to complete..."
msgstr "Der Befehl wird ausgeführt..."
-msgid "Waiting for configuration to get applied… %ds"
+msgid "Waiting for configuration to be applied… %ds"
msgstr "Warte auf das Anwenden der Konfigurationsänderungen... %d Sekunden"
msgid "Waiting for device..."
diff --git a/modules/luci-base/po/el/base.po b/modules/luci-base/po/el/base.po
index cb5706930a..03055bcca9 100644
--- a/modules/luci-base/po/el/base.po
+++ b/modules/luci-base/po/el/base.po
@@ -3740,7 +3740,7 @@ msgstr ""
msgid "Waiting for command to complete..."
msgstr ""
-msgid "Waiting for configuration to get applied… %ds"
+msgid "Waiting for configuration to be applied… %ds"
msgstr ""
msgid "Waiting for device..."
diff --git a/modules/luci-base/po/en/base.po b/modules/luci-base/po/en/base.po
index dc5c22a659..f9f8f07978 100644
--- a/modules/luci-base/po/en/base.po
+++ b/modules/luci-base/po/en/base.po
@@ -3699,7 +3699,7 @@ msgstr ""
msgid "Waiting for command to complete..."
msgstr ""
-msgid "Waiting for configuration to get applied… %ds"
+msgid "Waiting for configuration to be applied… %ds"
msgstr ""
msgid "Waiting for device..."
diff --git a/modules/luci-base/po/es/base.po b/modules/luci-base/po/es/base.po
index 635dc11603..5ae04552be 100644
--- a/modules/luci-base/po/es/base.po
+++ b/modules/luci-base/po/es/base.po
@@ -3804,7 +3804,7 @@ 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"
+msgid "Waiting for configuration to be applied… %ds"
msgstr ""
msgid "Waiting for device..."
diff --git a/modules/luci-base/po/fr/base.po b/modules/luci-base/po/fr/base.po
index 3805627b6b..f0a593deaf 100644
--- a/modules/luci-base/po/fr/base.po
+++ b/modules/luci-base/po/fr/base.po
@@ -3822,7 +3822,7 @@ 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"
+msgid "Waiting for configuration to be applied… %ds"
msgstr ""
msgid "Waiting for device..."
diff --git a/modules/luci-base/po/he/base.po b/modules/luci-base/po/he/base.po
index 6a5be78feb..cc92f5259d 100644
--- a/modules/luci-base/po/he/base.po
+++ b/modules/luci-base/po/he/base.po
@@ -3650,7 +3650,7 @@ msgstr ""
msgid "Waiting for command to complete..."
msgstr ""
-msgid "Waiting for configuration to get applied… %ds"
+msgid "Waiting for configuration to be applied… %ds"
msgstr ""
msgid "Waiting for device..."
diff --git a/modules/luci-base/po/hu/base.po b/modules/luci-base/po/hu/base.po
index 4b66806a83..b391113314 100644
--- a/modules/luci-base/po/hu/base.po
+++ b/modules/luci-base/po/hu/base.po
@@ -3809,7 +3809,7 @@ 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"
+msgid "Waiting for configuration to be applied… %ds"
msgstr ""
msgid "Waiting for device..."
diff --git a/modules/luci-base/po/it/base.po b/modules/luci-base/po/it/base.po
index 1fe6d06cb9..24efdff558 100644
--- a/modules/luci-base/po/it/base.po
+++ b/modules/luci-base/po/it/base.po
@@ -3778,7 +3778,7 @@ 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"
+msgid "Waiting for configuration to be applied… %ds"
msgstr ""
msgid "Waiting for device..."
diff --git a/modules/luci-base/po/ja/base.po b/modules/luci-base/po/ja/base.po
index fd60f84da6..003b22893e 100644
--- a/modules/luci-base/po/ja/base.po
+++ b/modules/luci-base/po/ja/base.po
@@ -3845,7 +3845,7 @@ msgstr "変更を適用中です..."
msgid "Waiting for command to complete..."
msgstr "コマンド実行中です..."
-msgid "Waiting for configuration to get applied… %ds"
+msgid "Waiting for configuration to be applied… %ds"
msgstr "設定を適用中です... %d 秒"
msgid "Waiting for device..."
diff --git a/modules/luci-base/po/ko/base.po b/modules/luci-base/po/ko/base.po
index 2d53437dbd..2b709110b3 100644
--- a/modules/luci-base/po/ko/base.po
+++ b/modules/luci-base/po/ko/base.po
@@ -3703,7 +3703,7 @@ msgstr "변경 사항이 적용되기를 기다리는 중입니다..."
msgid "Waiting for command to complete..."
msgstr "실행한 명령이 끝나기를 기다리는 중입니다..."
-msgid "Waiting for configuration to get applied… %ds"
+msgid "Waiting for configuration to be applied… %ds"
msgstr ""
msgid "Waiting for device..."
diff --git a/modules/luci-base/po/ms/base.po b/modules/luci-base/po/ms/base.po
index 891db2e41f..d4cdece558 100644
--- a/modules/luci-base/po/ms/base.po
+++ b/modules/luci-base/po/ms/base.po
@@ -3670,7 +3670,7 @@ msgstr ""
msgid "Waiting for command to complete..."
msgstr ""
-msgid "Waiting for configuration to get applied… %ds"
+msgid "Waiting for configuration to be applied… %ds"
msgstr ""
msgid "Waiting for device..."
diff --git a/modules/luci-base/po/no/base.po b/modules/luci-base/po/no/base.po
index d5c65659e8..3e6dbea726 100644
--- a/modules/luci-base/po/no/base.po
+++ b/modules/luci-base/po/no/base.po
@@ -3775,7 +3775,7 @@ 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"
+msgid "Waiting for configuration to be applied… %ds"
msgstr ""
msgid "Waiting for device..."
diff --git a/modules/luci-base/po/pl/base.po b/modules/luci-base/po/pl/base.po
index 61aee199b7..dcd8af8d57 100644
--- a/modules/luci-base/po/pl/base.po
+++ b/modules/luci-base/po/pl/base.po
@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: LuCI\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-04-20 09:40+0200\n"
-"PO-Revision-Date: 2018-07-21 18:35+0200\n"
+"PO-Revision-Date: 2018-08-05 13:45+0200\n"
"Last-Translator: Rixerx <krystian.kozak20@gmail.com>\n"
"Language-Team: Polish\n"
"Language: pl\n"
@@ -210,11 +210,11 @@ msgid "ATM device number"
msgstr "Numer urządzenia ATM"
msgid "ATU-C System Vendor ID"
-msgstr ""
+msgstr "ID dostawcy systemu ATU-C"
# co to takiego?
msgid "Access Concentrator"
-msgstr "Koncentrator dostępowy ATM"
+msgstr "Koncentrator dostępowy (ATM)"
msgid "Access Point"
msgstr "Punkt dostępowy"
@@ -273,7 +273,7 @@ msgid "Advanced Settings"
msgstr "Ustawienia zaawansowane"
msgid "Aggregate Transmit Power(ACTATP)"
-msgstr ""
+msgstr "Agregacja siły transmisji (ACTATP)"
msgid "Alert"
msgstr "Alarm"
@@ -592,6 +592,8 @@ msgid ""
"Build/distribution specific feed definitions. This file will NOT be "
"preserved in any sysupgrade."
msgstr ""
+"Kompiluj/rozpowszechniaj określone definicje źródeł. Ten plik NIE "
+"zostanie zachowany w procesie sysupgrade"
msgid "CA certificate; if empty it will be saved after the first connection."
msgstr ""
@@ -684,7 +686,7 @@ msgid ""
"Close inactive connection after the given amount of seconds, use 0 to "
"persist connection"
msgstr ""
-"Zamykaj nieaktywne połączenia po określonym czasie podanym w sekundach, "
+"Zamknij nieaktywne połączenia po określonym czasie podanym w sekundach, "
"wpisz 0 aby uzyskać stałe połączenie."
msgid "Close list..."
@@ -782,15 +784,17 @@ msgid "Custom Interface"
msgstr "Interfejs niestandardowy"
msgid "Custom delegated IPv6-prefix"
-msgstr ""
+msgstr "Delegowany niestandardowy prefiks IPv6"
msgid ""
"Custom feed definitions, e.g. private feeds. This file can be preserved in a "
"sysupgrade."
msgstr ""
+"Niestandardowe definicje plików danych, np. prywatne źródła. Ten plik może być "
+"zachowany podczas sysupgrade. "
msgid "Custom feeds"
-msgstr ""
+msgstr "Niestandardowe źródła"
msgid ""
"Custom files (certificates, scripts) may remain on the system. To prevent "
@@ -864,7 +868,7 @@ msgid "DUID"
msgstr "DUID"
msgid "Data Rate"
-msgstr ""
+msgstr "Szybkość przesyłania danych"
msgid "Debug"
msgstr "Debug"
@@ -981,7 +985,7 @@ msgid "Distance to farthest network member in meters."
msgstr "Odległość do najdalej oddalonego członka sieci w metrach."
msgid "Distribution feeds"
-msgstr ""
+msgstr "Dystrybucja źródeł"
# Jak poprzednio trzymam się konwencji
msgid "Diversity"
@@ -1198,7 +1202,7 @@ msgid "Error"
msgstr "Błąd"
msgid "Errored seconds (ES)"
-msgstr ""
+msgstr "Ilość błędów (ES)"
msgid "Ethernet Adapter"
msgstr "Karta Ethernet"
@@ -1302,7 +1306,7 @@ msgid "Firewall Status"
msgstr "Stan firewalla"
msgid "Firmware File"
-msgstr ""
+msgstr "Plik firmware"
msgid "Firmware Version"
msgstr "Wersja firmware"
@@ -1357,7 +1361,7 @@ msgid "Forward DHCP traffic"
msgstr "Przekazuj ruch DHCP"
msgid "Forward Error Correction Seconds (FECS)"
-msgstr ""
+msgstr "Próby korekcji błędów (FECS)"
msgid "Forward broadcast traffic"
msgstr "Przekazuj broadcast`y"
@@ -1407,7 +1411,7 @@ msgid "General Setup"
msgstr "Ustawienia podstawowe"
msgid "General options for opkg"
-msgstr ""
+msgstr "Ogólne opcje dla opkg"
msgid "Generate Config"
msgstr "Wygeneruj konfigurację"
@@ -1457,7 +1461,7 @@ msgid "Hang Up"
msgstr "Rozłącz"
msgid "Header Error Code Errors (HEC)"
-msgstr ""
+msgstr "Błędy kodu nagłówka (HEC)"
msgid ""
"Here you can configure the basic aspects of your device like its hostname or "
@@ -1812,7 +1816,7 @@ msgid "LCP echo failure threshold"
msgstr "Próg błędu echa LCP"
msgid "LCP echo interval"
-msgstr "Częstotliwość echa LCP"
+msgstr "Interwał echa LCP"
msgid "LLC"
msgstr "LLC"
@@ -1845,10 +1849,10 @@ msgid "Leasetime remaining"
msgstr "Pozostały czas dzierżawy"
msgid "Leave empty to autodetect"
-msgstr "Pozostaw niewypełnione dla autodetekcji"
+msgstr "Pozostaw puste, aby automatycznie wykryć"
msgid "Leave empty to use the current WAN address"
-msgstr "Pozostaw niewypełnione aby użyć bieżącego adresu WAN"
+msgstr "Pozostaw puste, aby użyć bieżącego adresu WAN"
msgid "Legend:"
msgstr "Legenda:"
@@ -1864,16 +1868,16 @@ msgid "Limit listening to these interfaces, and loopback."
msgstr "Ogranicz nasłuchiwanie do tych interfesjów, oraz loopbacku."
msgid "Line Attenuation (LATN)"
-msgstr ""
+msgstr "Tłumienie linii (LATN)"
msgid "Line Mode"
-msgstr ""
+msgstr "Tryb linii"
msgid "Line State"
-msgstr ""
+msgstr "Stan linii"
msgid "Line Uptime"
-msgstr ""
+msgstr "Czas działania linii"
msgid "Link On"
msgstr "Połączenie aktywne"
@@ -2000,7 +2004,7 @@ msgid "Logout"
msgstr "Wyloguj"
msgid "Loss of Signal Seconds (LOSS)"
-msgstr ""
+msgstr "Utrata sygnału (LOSS)"
msgid "Lowest leased address as offset from the network address."
msgstr "Najniższy wydzierżawiony adres jako offset dla adresu sieci."
@@ -2049,7 +2053,7 @@ msgid "Manual"
msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
-msgstr ""
+msgstr "Max. Osiągalna przepustowość danych (ATTNDR)"
msgid "Maximum allowed number of active DHCP leases"
msgstr "Maksymalna dozwolona liczba aktywnych dzierżaw DHCP"
@@ -2244,7 +2248,7 @@ msgid "No network name specified"
msgstr "Nie podano nazwy sieci"
msgid "No package lists available"
-msgstr "Brak dostępu do listy pakietów"
+msgstr "Lista pakietów nie jest dostępna"
msgid "No password set!"
msgstr "Nie ustawiono hasła!"
@@ -2268,7 +2272,7 @@ msgid "Noise:"
msgstr "Szum:"
msgid "Non Pre-emtive CRC errors (CRC_P)"
-msgstr ""
+msgstr "Nieprzewidziane błedy CRC (CRC_P)"
msgid "Non-wildcard"
msgstr "Bez symboli wieloznacznych"
@@ -2318,7 +2322,7 @@ msgid "Obfuscated Password"
msgstr ""
msgid "Obtain IPv6-Address"
-msgstr ""
+msgstr "Uzyskaj adres IPv6"
msgid "Off-State Delay"
msgstr "Zwłoka wyłączenia"
@@ -2613,7 +2617,7 @@ msgid "Power Management Mode"
msgstr "Tryb zarządzania energią"
msgid "Pre-emtive CRC errors (CRCP_P)"
-msgstr ""
+msgstr "Przewidziane błedy CRC (CRCP_P)"
msgid "Prefer LTE"
msgstr ""
@@ -2631,8 +2635,8 @@ msgid ""
"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
"ignore failures"
msgstr ""
-"Zakładaj że klient jest martwy po danej ilości błedów odpowiedzi echa LCP, "
-"wpisz 0 aby zignorować błędy"
+"Przypuszczaj że klient może być martwy po zadanej ilości błedów echa LCP, "
+"wpisz 0 aby zignorować te błędy"
msgid "Prevent listening on these interfaces."
msgstr "Zapobiegaj nasłuchiwaniu na tych interfejsach."
@@ -2840,7 +2844,7 @@ msgid "Request IPv6-address"
msgstr "Zażądaj adresu IPv6"
msgid "Request IPv6-prefix of length"
-msgstr ""
+msgstr "Zażądaj długość prefiksu IPv6"
msgid "Required"
msgstr "Wymagany"
@@ -3007,8 +3011,8 @@ msgid ""
"Send LCP echo requests at the given interval in seconds, only effective in "
"conjunction with failure threshold"
msgstr ""
-"Co podany czas (w sekundach) wyślij zapytania LCP echo, to ustawienie działa "
-"tylko gdy ustawiony jest próg błędu LCP echo"
+"Wysyłaj żądania echa LCP w określonym przedziale czasowym, "
+"efektywne tylko wtedy gdy jest ustawiony próg błedu LCP"
msgid "Separate Clients"
msgstr "Rozdziel klientów"
@@ -3046,7 +3050,7 @@ msgid "Setup DHCP Server"
msgstr "Ustawienia serwera DHCP"
msgid "Severely Errored Seconds (SES)"
-msgstr ""
+msgstr "Ilość poważnych błedów (SES)"
msgid "Short GI"
msgstr ""
@@ -3064,7 +3068,7 @@ msgid "Signal"
msgstr "Sygnał"
msgid "Signal Attenuation (SATN)"
-msgstr ""
+msgstr "Tłumienie sygnału (SATN)"
msgid "Signal:"
msgstr "Sygnał:"
@@ -3159,7 +3163,7 @@ msgid "Start priority"
msgstr "Priorytet uruchomienia"
msgid "Starting configuration apply…"
-msgstr ""
+msgstr "Zatwierdzanie konfiguracji…"
msgid "Starting wireless scan..."
msgstr "Rozpoczynanie skanowania..."
@@ -3193,7 +3197,7 @@ msgstr ""
"odpowiednim dzierżawami."
msgid "Status"
-msgstr "Stan"
+msgstr "Status"
msgid "Stop"
msgstr "Stop"
@@ -3365,10 +3369,9 @@ msgid ""
"compare them with the original file to ensure data integrity.<br /> Click "
"\"Proceed\" below to start the flash procedure."
msgstr ""
-"Obraz flash`a został przesłany. Poniżej znajduje się suma kontrolna i "
-"rozmiar obrazu, porównaj je z sumą kontrolną i rozmiarem oryginału, aby "
-"upewnić się, że został przesłany poprawnie.<br /> Wciśnij \"Wykonaj\" aby "
-"kontynuować aktualizację."
+"Obraz flash został przesłany. Poniżej znajduje się suma kontrolna i "
+"rozmiar pliku, porównaj je z orginałem aby zapewnić integralność "
+"danych.<br /> Wciśnij \"Wykonaj\" aby kontynuować aktualizację."
msgid "The following changes have been reverted"
msgstr "Następujące zmiany zostały odrzucone"
@@ -3450,7 +3453,7 @@ msgid "There are no active leases."
msgstr "Brak aktywnych dzierżaw."
msgid "There are no changes to apply."
-msgstr "Nie ma żadnych zmian do zastosowania."
+msgstr "Brak zmian do zastosowania."
msgid "There are no pending changes to revert!"
msgstr "Brak oczekujących zmian do przywrócenia!"
@@ -3569,7 +3572,7 @@ msgstr ""
"\"Wykonaj reset\" (możliwe tylko w przypadku obrazu squashfs)."
msgid "Tone"
-msgstr ""
+msgstr "Ton"
msgid "Total Available"
msgstr "Całkowicie dostępna"
@@ -3656,7 +3659,7 @@ msgid "Unable to resolve peer host name"
msgstr "Nie można rozpoznać nazwy peera"
msgid "Unavailable Seconds (UAS)"
-msgstr ""
+msgstr "Czas niedostępnośći (UAS)"
msgid "Unknown"
msgstr "Nieznany"
@@ -3861,7 +3864,7 @@ msgstr "Trwa wprowadzenie zmian..."
msgid "Waiting for command to complete..."
msgstr "Trwa wykonanie polecenia..."
-msgid "Waiting for configuration to get applied… %ds"
+msgid "Waiting for configuration to be applied… %ds"
msgstr "Oczekiwanie na zastosowanie konfiguracji… %ds"
msgid "Waiting for device..."
diff --git a/modules/luci-base/po/pt-br/base.po b/modules/luci-base/po/pt-br/base.po
index 63a8b2f340..1065865d4b 100644
--- a/modules/luci-base/po/pt-br/base.po
+++ b/modules/luci-base/po/pt-br/base.po
@@ -3950,7 +3950,7 @@ 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"
+msgid "Waiting for configuration to be applied… %ds"
msgstr ""
msgid "Waiting for device..."
diff --git a/modules/luci-base/po/pt/base.po b/modules/luci-base/po/pt/base.po
index d548b7c8d5..a871405cf5 100644
--- a/modules/luci-base/po/pt/base.po
+++ b/modules/luci-base/po/pt/base.po
@@ -3769,7 +3769,7 @@ 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"
+msgid "Waiting for configuration to be applied… %ds"
msgstr ""
msgid "Waiting for device..."
diff --git a/modules/luci-base/po/ro/base.po b/modules/luci-base/po/ro/base.po
index a28235bbd7..a7c4cf03ae 100644
--- a/modules/luci-base/po/ro/base.po
+++ b/modules/luci-base/po/ro/base.po
@@ -3646,7 +3646,7 @@ msgstr ""
msgid "Waiting for command to complete..."
msgstr ""
-msgid "Waiting for configuration to get applied… %ds"
+msgid "Waiting for configuration to be applied… %ds"
msgstr ""
msgid "Waiting for device..."
diff --git a/modules/luci-base/po/ru/base.po b/modules/luci-base/po/ru/base.po
index 8d542e6018..892e838da8 100644
--- a/modules/luci-base/po/ru/base.po
+++ b/modules/luci-base/po/ru/base.po
@@ -3921,7 +3921,7 @@ msgstr "Ожидание применения изменений..."
msgid "Waiting for command to complete..."
msgstr "Ожидание завершения выполнения команды..."
-msgid "Waiting for configuration to get applied… %ds"
+msgid "Waiting for configuration to be applied… %ds"
msgstr "Ожидание применения конфигурации... %d сек."
msgid "Waiting for device..."
diff --git a/modules/luci-base/po/sk/base.po b/modules/luci-base/po/sk/base.po
index 7cf9f6febb..afabaf138e 100644
--- a/modules/luci-base/po/sk/base.po
+++ b/modules/luci-base/po/sk/base.po
@@ -3614,7 +3614,7 @@ msgstr ""
msgid "Waiting for command to complete..."
msgstr ""
-msgid "Waiting for configuration to get applied… %ds"
+msgid "Waiting for configuration to be applied… %ds"
msgstr ""
msgid "Waiting for device..."
diff --git a/modules/luci-base/po/sv/base.po b/modules/luci-base/po/sv/base.po
index 76b5825906..4792474f65 100644
--- a/modules/luci-base/po/sv/base.po
+++ b/modules/luci-base/po/sv/base.po
@@ -3641,7 +3641,7 @@ 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"
+msgid "Waiting for configuration to be applied… %ds"
msgstr ""
msgid "Waiting for device..."
diff --git a/modules/luci-base/po/templates/base.pot b/modules/luci-base/po/templates/base.pot
index 2dacedfe79..7cd1d9d7c9 100644
--- a/modules/luci-base/po/templates/base.pot
+++ b/modules/luci-base/po/templates/base.pot
@@ -3607,7 +3607,7 @@ msgstr ""
msgid "Waiting for command to complete..."
msgstr ""
-msgid "Waiting for configuration to get applied… %ds"
+msgid "Waiting for configuration to be applied… %ds"
msgstr ""
msgid "Waiting for device..."
diff --git a/modules/luci-base/po/tr/base.po b/modules/luci-base/po/tr/base.po
index 383c683068..23dbe531a5 100644
--- a/modules/luci-base/po/tr/base.po
+++ b/modules/luci-base/po/tr/base.po
@@ -3627,7 +3627,7 @@ msgstr ""
msgid "Waiting for command to complete..."
msgstr ""
-msgid "Waiting for configuration to get applied… %ds"
+msgid "Waiting for configuration to be applied… %ds"
msgstr ""
msgid "Waiting for device..."
diff --git a/modules/luci-base/po/uk/base.po b/modules/luci-base/po/uk/base.po
index e4cf1ed0a8..8dbcc8b399 100644
--- a/modules/luci-base/po/uk/base.po
+++ b/modules/luci-base/po/uk/base.po
@@ -3944,7 +3944,7 @@ msgstr "Очікуємо, доки зміни наберуть чинності.
msgid "Waiting for command to complete..."
msgstr "Очікуємо завершення виконання команди..."
-msgid "Waiting for configuration to get applied… %ds"
+msgid "Waiting for configuration to be applied… %ds"
msgstr "Чекаємо на застосування конфігурації… %d c"
msgid "Waiting for device..."
diff --git a/modules/luci-base/po/vi/base.po b/modules/luci-base/po/vi/base.po
index 6451853bb4..f9d0e85981 100644
--- a/modules/luci-base/po/vi/base.po
+++ b/modules/luci-base/po/vi/base.po
@@ -3669,7 +3669,7 @@ msgstr ""
msgid "Waiting for command to complete..."
msgstr ""
-msgid "Waiting for configuration to get applied… %ds"
+msgid "Waiting for configuration to be applied… %ds"
msgstr ""
msgid "Waiting for device..."
diff --git a/modules/luci-base/po/zh-cn/base.po b/modules/luci-base/po/zh-cn/base.po
index d142390e1a..b8734d7e6e 100644
--- a/modules/luci-base/po/zh-cn/base.po
+++ b/modules/luci-base/po/zh-cn/base.po
@@ -1,10 +1,18 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2018.
+#
msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
-"Last-Translator: Hsing-Wang Liao <kuoruan@gmail.com>\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team: <debian-l10n-chinese@lists.debian.org>\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"PO-Revision-Date: 2018-08-07 14:59+0800\n"
+"X-Generator: Gtranslator 2.91.7\n"
msgid "%.1f dB"
-msgstr ""
+msgstr "%.1f dB"
msgid "%s is untagged in multiple VLANs!"
msgstr "%s 在多个 VLAN 中均未标记!"
@@ -40,7 +48,7 @@ msgid "-- match by uuid --"
msgstr "-- 根据 UUID 匹配 --"
msgid "-- please select --"
-msgstr ""
+msgstr "-- 请选择 --"
msgid "1 Minute Load:"
msgstr "1 分钟负载:"
@@ -129,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 "
@@ -258,13 +266,13 @@ msgid "Alert"
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 "
@@ -278,7 +286,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 "仅允许列表外"
@@ -315,6 +323,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"
@@ -395,7 +404,7 @@ msgid "Apply request failed with status <code>%h</code>"
msgstr "应用请求失败,状态 <code>%h</code>"
msgid "Apply unchecked"
-msgstr "应用未选中"
+msgstr "强制应用"
msgid "Architecture"
msgstr "架构"
@@ -508,7 +517,7 @@ msgid "Band"
msgstr "频宽"
msgid "Beacon Interval"
-msgstr ""
+msgstr "Beacon 间隔"
msgid ""
"Below is the determined list of files to backup. It consists of changed "
@@ -566,7 +575,7 @@ msgid "CPU usage (%)"
msgstr "CPU 使用率(%)"
msgid "Call failed"
-msgstr ""
+msgstr "调用失败"
msgid "Cancel"
msgstr "取消"
@@ -578,16 +587,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 "信道"
@@ -646,10 +655,10 @@ msgid ""
msgstr "在给定时间(秒)后关闭非活动链接,0 为保持连接"
msgid "Close list..."
-msgstr "关闭列表..."
+msgstr "关闭列表…"
msgid "Collecting data..."
-msgstr "正在收集数据..."
+msgstr "正在收集数据…"
msgid "Command"
msgstr "命令"
@@ -671,7 +680,7 @@ msgid "Configuration"
msgstr "配置"
msgid "Configuration failed"
-msgstr ""
+msgstr "配置失败"
msgid "Configuration files will be kept."
msgstr "配置文件将被保留。"
@@ -695,7 +704,7 @@ msgid "Connection Limit"
msgstr "连接数限制"
msgid "Connection attempt failed"
-msgstr ""
+msgstr "尝试连接失败"
msgid "Connections"
msgstr "连接"
@@ -705,7 +714,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"
@@ -812,7 +821,7 @@ msgid "DSL line mode"
msgstr "DSL 线路模式"
msgid "DTIM Interval"
-msgstr ""
+msgstr "DTIM 间隔"
msgid "DUID"
msgstr "DUID"
@@ -853,7 +862,7 @@ msgid "Delete this network"
msgstr "删除此网络"
msgid "Delivery Traffic Indication Message Interval"
-msgstr ""
+msgstr "发送流量指示消息间隔"
msgid "Description"
msgstr "描述"
@@ -871,13 +880,13 @@ msgid "Device Configuration"
msgstr "设备配置"
msgid "Device is rebooting..."
-msgstr "设备正在重启..."
+msgstr "设备正在重启…"
msgid "Device unreachable!"
msgstr "无法连接到设备"
msgid "Device unreachable! Still waiting for device..."
-msgstr ""
+msgstr "无法连接到设备!仍旧等待设备…"
msgid "Diagnostics"
msgstr "网络诊断"
@@ -911,16 +920,16 @@ msgid "Disabled"
msgstr "已禁用"
msgid "Disabled (default)"
-msgstr "禁用(默认)"
+msgstr "已禁用(默认)"
msgid "Disassociate On Low Acknowledgement"
-msgstr ""
+msgstr "在低 Ack 应答时断开连接"
msgid "Discard upstream RFC1918 responses"
msgstr "丢弃 RFC1918 上行响应数据"
msgid "Disconnection attempt failed"
-msgstr ""
+msgstr "尝试断开连接失败"
msgid "Dismiss"
msgstr "解除"
@@ -975,7 +984,7 @@ msgstr ""
"不转发没有 <abbr title=\"Domain Name System\">DNS</abbr> 名称的解析请求"
msgid "Down"
-msgstr ""
+msgstr "向下"
msgid "Download and install package"
msgstr "下载并安装软件包"
@@ -1018,7 +1027,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 "
@@ -1026,10 +1035,10 @@ msgid ""
msgstr "编辑上方的原始配置数据来修复错误,点击“保存”按钮以重新载入此页面。"
msgid "Edit this interface"
-msgstr "修改此接口"
+msgstr "编辑此接口"
msgid "Edit this network"
-msgstr "修改此网络"
+msgstr "编辑此网络"
msgid "Emergency"
msgstr "紧急"
@@ -1041,7 +1050,7 @@ msgid ""
"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
"snooping"
msgstr ""
-"启用 <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> 窥探"
+"启用 <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>"
@@ -1092,7 +1101,7 @@ msgid "Enable this mount"
msgstr "启用此挂载点"
msgid "Enable this network"
-msgstr ""
+msgstr "启用此网络"
msgid "Enable this swap"
msgstr "启用此 swap 分区"
@@ -1127,13 +1136,13 @@ msgid "Endpoint Port"
msgstr "端点端口"
msgid "Enter custom value"
-msgstr ""
+msgstr "输入自定义值"
msgid "Enter custom values"
-msgstr ""
+msgstr "输入自定义值"
msgid "Erasing..."
-msgstr "擦除中..."
+msgstr "擦除中…"
msgid "Error"
msgstr "错误"
@@ -1182,16 +1191,16 @@ 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 协议"
msgid "Failed to confirm apply within %ds, waiting for rollback…"
-msgstr "在 %d 秒内确认应用失败,等待回滚..."
+msgstr "在 %d 秒内确认应用失败,等待回滚…"
msgid "File"
msgstr "文件"
@@ -1212,7 +1221,7 @@ msgid "Filter useless"
msgstr "过滤无用包"
msgid "Finalizing failed"
-msgstr ""
+msgstr "最终确认失败"
msgid ""
"Find all currently attached filesystems and swap and replace configuration "
@@ -1253,7 +1262,7 @@ msgid "Flash Firmware"
msgstr "刷新固件"
msgid "Flash image..."
-msgstr "刷写固件..."
+msgstr "刷写固件…"
msgid "Flash new firmware image"
msgstr "刷写新的固件"
@@ -1262,13 +1271,13 @@ msgid "Flash operations"
msgstr "刷新操作"
msgid "Flashing..."
-msgstr "刷写中..."
+msgstr "正在刷写…"
msgid "Force"
msgstr "强制"
msgid "Force 40MHz mode"
-msgstr ""
+msgstr "强制 40MHz 模式"
msgid "Force CCMP (AES)"
msgstr "强制 CCMP(AES)"
@@ -1335,7 +1344,7 @@ msgid "Gateway"
msgstr "网关"
msgid "Gateway address is invalid"
-msgstr ""
+msgstr "网关地址无效"
msgid "Gateway ports"
msgstr "网关端口"
@@ -1371,7 +1380,7 @@ msgid "Global network options"
msgstr "全局网络选项"
msgid "Go to password configuration..."
-msgstr "跳转到密码配置页..."
+msgstr "跳转到密码配置页…"
msgid "Go to relevant configuration page"
msgstr "跳转到相关的配置页面"
@@ -1423,7 +1432,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 "主机名"
@@ -1447,10 +1456,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"
@@ -1622,7 +1631,7 @@ msgid "Info"
msgstr "信息"
msgid "Initialization failure"
-msgstr ""
+msgstr "初始化失败"
msgid "Initscript"
msgstr "启动脚本"
@@ -1640,7 +1649,7 @@ msgid "Install package %q"
msgstr "安装软件包 %q"
msgid "Install protocol extensions..."
-msgstr "安装扩展协议..."
+msgstr "安装扩展协议…"
msgid "Installed packages"
msgstr "已安装软件包"
@@ -1658,7 +1667,7 @@ msgid "Interface Overview"
msgstr "接口总览"
msgid "Interface is reconnecting..."
-msgstr "正在重新连接接口..."
+msgstr "正在重新连接接口…"
msgid "Interface name"
msgstr "接口名称"
@@ -1860,7 +1869,7 @@ msgid "Loading"
msgstr "加载中"
msgid "Local IP address is invalid"
-msgstr ""
+msgstr "本地 IP 地址无效"
msgid "Local IP address to assign"
msgstr "要分配的本地 IP 地址"
@@ -1927,7 +1936,7 @@ msgid "Lowest leased address as offset from the network address."
msgstr "网络地址的起始分配基址。"
msgid "MAC"
-msgstr ""
+msgstr "MAC"
msgid "MAC-Address"
msgstr "MAC 地址"
@@ -1945,7 +1954,7 @@ msgid "MAP / LW4over6"
msgstr "MAP / LW4over6"
msgid "MAP rule is invalid"
-msgstr ""
+msgstr "MAP 规则无效"
msgid "MB/s"
msgstr "MB/s"
@@ -2029,7 +2038,7 @@ msgid "Modem device"
msgstr "调制解调器节点"
msgid "Modem information query failed"
-msgstr ""
+msgstr "调制解调器信息查询失败"
msgid "Modem init timeout"
msgstr "调制解调器初始化超时"
@@ -2127,13 +2136,13 @@ msgid "Network boot image"
msgstr "网络启动镜像"
msgid "Network device is not present"
-msgstr ""
+msgstr "网络设备不存在"
msgid "Network without interfaces."
msgstr "无接口的网络。"
msgid "Next »"
-msgstr "下一步 »"
+msgstr "前进 »"
msgid "No DHCP Server configured for this interface"
msgstr "本接口未配置 DHCP 服务器"
@@ -2151,7 +2160,7 @@ msgid "No information available"
msgstr "无可用信息"
msgid "No matching prefix delegation"
-msgstr ""
+msgstr "无匹配的前缀委托"
msgid "No negative cache"
msgstr "禁用无效信息缓存"
@@ -2172,7 +2181,7 @@ msgid "No rules in this chain"
msgstr "本链没有规则"
msgid "No scan results available yet..."
-msgstr ""
+msgstr "还没有可用的扫描结果…"
msgid "No zone assigned"
msgstr "未指定区域"
@@ -2269,7 +2278,7 @@ msgid "One or more required fields have no value!"
msgstr "一个或多个必选项值为空!"
msgid "Open list..."
-msgstr "打开列表..."
+msgstr "打开列表……"
msgid "OpenConnect (CISCO AnyConnect)"
msgstr "OpenConnect (CISCO AnyConnect)"
@@ -2278,10 +2287,10 @@ msgid "Operating frequency"
msgstr "工作频率"
msgid "Option changed"
-msgstr "修改的选项"
+msgstr "选项已更改"
msgid "Option removed"
-msgstr "移除的选项"
+msgstr "选项已移除"
msgid "Optional"
msgstr "可选"
@@ -2311,7 +2320,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 "
@@ -2394,7 +2403,7 @@ msgid "PIN"
msgstr "PIN"
msgid "PIN code rejected"
-msgstr ""
+msgstr "PIN 码被拒绝"
msgid "PMK R1 Push"
msgstr "R1 推送 PMK"
@@ -2454,7 +2463,7 @@ msgid "Password of inner Private Key"
msgstr "内部私钥的密码"
msgid "Password successfully changed!"
-msgstr "密码修改成功!"
+msgstr "密码更改成功!"
msgid "Password2"
msgstr "密码 2"
@@ -2484,7 +2493,7 @@ msgid "Peer IP address to assign"
msgstr "要分配的 Peer IP 地址"
msgid "Peer address is missing"
-msgstr ""
+msgstr "Peer 地址缺失"
msgid "Peers"
msgstr "Peers"
@@ -2606,6 +2615,7 @@ msgid ""
"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
"servers"
msgstr ""
+"查询所有可用的上游 <abbr title=\"Domain Name System\">DNS</abbr> 服务器"
msgid "R0 Key Lifetime"
msgstr "R0 密钥生存期"
@@ -2644,7 +2654,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 "
@@ -2657,13 +2667,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 "确定要放弃所有更改?"
@@ -2696,7 +2707,7 @@ msgid "Reboot"
msgstr "重启"
msgid "Rebooting..."
-msgstr "重启中..."
+msgstr "正在重启…"
msgid "Reboots the operating system of your device"
msgstr "重启您设备上的系统"
@@ -2806,7 +2817,7 @@ msgid "Restart Firewall"
msgstr "重启防火墙"
msgid "Restart radio interface"
-msgstr ""
+msgstr "重启无线接口"
msgid "Restore"
msgstr "恢复"
@@ -2827,7 +2838,7 @@ msgid "Revert request failed with status <code>%h</code>"
msgstr "恢复请求失败,状态 <code>%h</code>"
msgid "Reverting configuration…"
-msgstr "正在恢复配置..."
+msgstr "正在恢复配置…"
msgid "Root"
msgstr "Root"
@@ -2898,7 +2909,7 @@ msgid "Scan"
msgstr "扫描"
msgid "Scan request failed"
-msgstr ""
+msgstr "扫描请求失败"
msgid "Scheduled Tasks"
msgstr "计划任务"
@@ -2943,10 +2954,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 服务器"
@@ -2958,7 +2969,7 @@ msgid "Short GI"
msgstr "Short GI"
msgid "Short Preamble"
-msgstr ""
+msgstr "Short Preamble"
msgid "Show current backup file list"
msgstr "显示当前备份文件列表"
@@ -3061,10 +3072,10 @@ msgid "Start priority"
msgstr "启动优先级"
msgid "Starting configuration apply…"
-msgstr "开始应用配置..."
+msgstr "开始应用配置…"
msgid "Starting wireless scan..."
-msgstr ""
+msgstr "正在启动无线扫描…"
msgid "Startup"
msgstr "启动项"
@@ -3142,7 +3153,7 @@ msgid "Sync with browser"
msgstr "同步浏览器时间"
msgid "Synchronizing..."
-msgstr "同步中..."
+msgstr "正在同步…"
msgid "System"
msgstr "系统"
@@ -3220,7 +3231,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 "由于以下错误,配置文件无法被加载:"
@@ -3234,9 +3245,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."
@@ -3260,7 +3271,7 @@ msgstr ""
"过程中切勿断电!"
msgid "The following changes have been reverted"
-msgstr "以下更改已放弃"
+msgstr "以下更改已恢复"
msgid "The following rules are currently active on this system."
msgstr "以下规则当前在系统中处于活动状态。"
@@ -3276,10 +3287,10 @@ msgstr "本机的硬件不支持多 SSID,如果继续,现有配置将被替
msgid ""
"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
"addresses."
-msgstr "IPv4 前缀长度(bit),其余的用在 IPv6 地址。"
+msgstr "IPv4 前缀长度(位),其余的用在 IPv6 地址。"
msgid "The length of the IPv6 prefix in bits"
-msgstr "IPv6 前缀长度(bit)"
+msgstr "IPv6 前缀长度(位)"
msgid "The local IPv4 address over which the tunnel is created (optional)."
msgstr "所创建隧道的本地 IPv4 地址(可选)。"
@@ -3314,7 +3325,7 @@ msgid ""
"address of your computer to reach the device again, depending on your "
"settings."
msgstr ""
-"正在刷新系统...<br />切勿关闭电源! DO NOT POWER OFF THE DEVICE!<br />等待数分"
+"正在刷写系统…<br />切勿关闭电源! DO NOT POWER OFF THE DEVICE!<br />等待数分"
"钟后即可尝试重新连接到路由。您可能需要更改计算机的 IP 地址以重新连接。"
msgid ""
@@ -3326,13 +3337,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 "
@@ -3360,7 +3371,7 @@ msgid ""
"include during sysupgrade. Modified files in /etc/config/ and certain other "
"configurations are automatically preserved."
msgstr ""
-"系统升级时要保存的配置文件和目录的清单。目录 /etc/config/ 内修改过的文件以及"
+"系统升级时要保存的配置文件和目录的清单。目录 /etc/config/ 内更改过的文件以及"
"部分其他配置会被自动保存。"
msgid ""
@@ -3494,25 +3505,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)"
@@ -3524,7 +3535,7 @@ msgid "Unknown Error, password not changed!"
msgstr "未知错误,密码未更改!"
msgid "Unknown error (%s)"
-msgstr ""
+msgstr "未知错误(%s)"
msgid "Unmanaged"
msgstr "不配置协议"
@@ -3536,16 +3547,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 "刷新列表"
@@ -3685,7 +3696,7 @@ msgid "Version"
msgstr "版本"
msgid "Virtual dynamic interface"
-msgstr ""
+msgstr "虚拟动态接口"
msgid "WDS"
msgstr "WDS"
@@ -3713,16 +3724,16 @@ msgstr ""
"点 Ad-Hoc 模式)。"
msgid "Waiting for changes to be applied..."
-msgstr "正在应用更改..."
+msgstr "正在应用更改…"
msgid "Waiting for command to complete..."
-msgstr "等待命令执行完成..."
+msgstr "等待命令执行完成…"
-msgid "Waiting for configuration to get applied… %ds"
-msgstr "等待应用配置... %d 秒"
+msgid "Waiting for configuration to be applied… %ds"
+msgstr "等待应用配置… %d 秒"
msgid "Waiting for device..."
-msgstr "等待设备..."
+msgstr "等待设备…"
msgid "Warning"
msgstr "警告"
@@ -3760,10 +3771,10 @@ msgid "Wireless is disabled"
msgstr "无线未开启"
msgid "Wireless is not associated"
-msgstr "无线未未关联"
+msgstr "无线未关联"
msgid "Wireless is restarting..."
-msgstr "无线重启中..."
+msgstr "无线重启中…"
msgid "Wireless network is disabled"
msgstr "无线网络已禁用"
@@ -3795,7 +3806,7 @@ msgid ""
"or Safari."
msgstr ""
"您的 IE 浏览器太老了,无法正常显示这个页面!请更新到 IE7 及以上或使用其他浏览"
-"器,例如:Chrome、Firefox、Opera、Safari。"
+"器,如 Firefox、Opera、Safari。"
msgid "any"
msgstr "任意"
@@ -3810,7 +3821,7 @@ msgid "bridged"
msgstr "桥接的"
msgid "create"
-msgstr ""
+msgstr "创建"
msgid "create:"
msgstr "创建:"
@@ -3871,13 +3882,13 @@ msgid "kbit/s"
msgstr "kbit/s"
msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
-msgstr "本地 <abbr title=\"Domain Name Syste\">DNS</abbr> 解析文件"
+msgstr "本地 <abbr title=\"Domain Name System\">DNS</abbr> 解析文件"
msgid "minutes"
msgstr "分钟"
msgid "mixed WPA/WPA2"
-msgstr ""
+msgstr "混合 WPA/WPA2"
msgid "no"
msgstr "否"
@@ -3901,7 +3912,7 @@ msgid "open"
msgstr "开放式"
msgid "output"
-msgstr ""
+msgstr "输出"
msgid "overlay"
msgstr "覆盖"
@@ -3919,13 +3930,13 @@ msgid "server mode"
msgstr "服务器模式"
msgid "stateful-only"
-msgstr "有状态的"
+msgstr "有状态"
msgid "stateless"
-msgstr "无状态的"
+msgstr "无状态"
msgid "stateless + stateful"
-msgstr "无状态的 + 有状态的"
+msgstr "无状态 + 有状态"
msgid "tagged"
msgstr "已标记"
diff --git a/modules/luci-base/po/zh-tw/base.po b/modules/luci-base/po/zh-tw/base.po
index 579d52656a..be6d86403f 100644
--- a/modules/luci-base/po/zh-tw/base.po
+++ b/modules/luci-base/po/zh-tw/base.po
@@ -3701,7 +3701,7 @@ msgstr "等待修改被啟用..."
msgid "Waiting for command to complete..."
msgstr "等待完整性指令..."
-msgid "Waiting for configuration to get applied… %ds"
+msgid "Waiting for configuration to be applied… %ds"
msgstr ""
msgid "Waiting for device..."
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 9533ff5e6e..1d955dd982 100644
--- a/modules/luci-mod-admin-full/luasrc/controller/admin/uci.lua
+++ b/modules/luci-mod-admin-full/luasrc/controller/admin/uci.lua
@@ -9,7 +9,7 @@ function index()
or table.concat(luci.dispatcher.context.request, "/")
entry({"admin", "uci"}, nil, _("Configuration"))
- entry({"admin", "uci", "changes"}, call("action_changes"), _("Changes"), 40).query = {redir=redir}
+ entry({"admin", "uci", "changes"}, post_on({ trigger_apply = true }, "action_changes"), _("Changes"), 40).query = {redir=redir}
entry({"admin", "uci", "revert"}, post("action_revert"), _("Revert"), 30).query = {redir=redir}
local node
@@ -25,9 +25,9 @@ function index()
node.cors = true
node.sysauth_authenticator = authen
- node = entry({"admin", "uci", "confirm"}, post("action_confirm"), nil)
+ node = entry({"admin", "uci", "confirm"}, call("action_confirm"), nil)
node.cors = true
- node.sysauth_authenticator = authen
+ node.sysauth = false
end
@@ -36,8 +36,9 @@ function action_changes()
local changes = uci:changes()
luci.template.render("admin_uci/changes", {
- changes = next(changes) and changes,
- timeout = timeout
+ changes = next(changes) and changes,
+ timeout = timeout,
+ trigger_apply = luci.http.formvalue("trigger_apply") and true or false
})
end
@@ -52,7 +53,8 @@ function action_revert()
end
luci.template.render("admin_uci/revert", {
- changes = next(changes) and changes
+ changes = next(changes) and changes,
+ trigger_revert = true
})
end
@@ -84,8 +86,13 @@ end
function action_apply_rollback()
local uci = require "luci.model.uci"
- local _, errstr = uci:apply(true)
- ubus_state_to_http(errstr)
+ local token, errstr = uci:apply(true)
+ if token then
+ luci.http.prepare_content("application/json")
+ luci.http.write_json({ token = token })
+ else
+ ubus_state_to_http(errstr)
+ end
end
function action_apply_unchecked()
@@ -96,6 +103,7 @@ end
function action_confirm()
local uci = require "luci.model.uci"
- local _, errstr = uci:confirm()
+ local token = luci.http.formvalue("token")
+ local _, errstr = uci:confirm(token)
ubus_state_to_http(errstr)
end
diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi_overview.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi_overview.lua
index 32bf1965f3..ad20f09187 100644
--- a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi_overview.lua
+++ b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi_overview.lua
@@ -70,7 +70,7 @@ local tpl_radio = tpl.Template(nil, [[
<!-- physical device -->
<div class="tr cbi-rowstyle-2">
<div class="td col-2 center middle">
- <span class="ifacebadge"><img src="<%=resource%>/icons/wifi_toggled.png" id="<%=dev:name()%>-iw-upstate" /> <%=dev:name()%></span>
+ <span class="ifacebadge"><img src="<%=resource%>/icons/wifi_disabled.png" id="<%=dev:name()%>-iw-upstate" /> <%=dev:name()%></span>
</div>
<div class="td col-7 left middle">
<big><strong><%=hw%></strong></big><br />
@@ -115,8 +115,8 @@ local tpl_radio = tpl.Template(nil, [[
</div>
<% end %>
<% else %>
- <div class="tr cbi-rowstyle-2">
- <div class="td left">
+ <div class="tr placeholder">
+ <div class="td">
<em><%:No network configured on this device%></em>
</div>
</div>
diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_network/iface_overview_status.htm b/modules/luci-mod-admin-full/luasrc/view/admin_network/iface_overview_status.htm
index bdf1c083ae..7427154a04 100644
--- a/modules/luci-mod-admin-full/luasrc/view/admin_network/iface_overview_status.htm
+++ b/modules/luci-mod-admin-full/luasrc/view/admin_network/iface_overview_status.htm
@@ -110,7 +110,7 @@
if (!ifc.is_dynamic && !ifc.is_alias)
{
if (ifc.macaddr)
- html += String.format('<strong><%:MAC-Address%>:</strong> %s<br />', ifc.macaddr);
+ html += String.format('<strong><%:MAC%>:</strong> %s<br />', ifc.macaddr);
html += String.format(
'<strong><%:RX%>:</strong> %.2mB (%d <%:Pkts.%>)<br />' +
diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_network/iface_status.htm b/modules/luci-mod-admin-full/luasrc/view/admin_network/iface_status.htm
index 9c5173dae2..34be35dd20 100644
--- a/modules/luci-mod-admin-full/luasrc/view/admin_network/iface_status.htm
+++ b/modules/luci-mod-admin-full/luasrc/view/admin_network/iface_status.htm
@@ -17,7 +17,7 @@
html += String.format('<strong><%:Uptime%>:</strong> %t<br />', ifc.uptime);
if (ifc.macaddr)
- html += String.format('<strong><%:MAC-Address%>:</strong> %s<br />', ifc.macaddr);
+ html += String.format('<strong><%:MAC%>:</strong> %s<br />', ifc.macaddr);
html += String.format(
'<strong><%:RX%></strong>: %.2mB (%d <%:Pkts.%>)<br />' +
diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm b/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm
index db8535086f..29a03f2554 100644
--- a/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm
+++ b/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm
@@ -221,63 +221,36 @@
<% end %>
<% if has_dsl then %>
- var dsl_i = document.getElementById('dsl_i');
- var dsl_s = document.getElementById('dsl_s');
-
- var s = String.format(
- '<strong><%:Status%>: </strong>%s<br />' +
- '<strong><%:Line State%>: </strong>%s [0x%x]<br />' +
- '<strong><%:Line Mode%>: </strong>%s<br />' +
- '<strong><%:Annex%>: </strong>%s<br />' +
- '<strong><%:Profile%>: </strong>%s<br />' +
- '<strong><%:Data Rate%>: </strong>%s/s / %s/s<br />' +
- '<strong><%:Max. Attainable Data Rate (ATTNDR)%>: </strong>%s/s / %s/s<br />' +
- '<strong><%:Latency%>: </strong>%s / %s<br />' +
- '<strong><%:Line Attenuation (LATN)%>: </strong>%s dB / %s dB<br />' +
- '<strong><%:Signal Attenuation (SATN)%>: </strong>%s dB / %s dB<br />' +
- '<strong><%:Noise Margin (SNR)%>: </strong>%s dB / %s dB<br />' +
- '<strong><%:Aggregate Transmit Power(ACTATP)%>: </strong>%s dB / %s dB<br />' +
- '<strong><%:Forward Error Correction Seconds (FECS)%>: </strong>%s / %s<br />' +
- '<strong><%:Errored seconds (ES)%>: </strong>%s / %s<br />' +
- '<strong><%:Severely Errored Seconds (SES)%>: </strong>%s / %s<br />' +
- '<strong><%:Loss of Signal Seconds (LOSS)%>: </strong>%s / %s<br />' +
- '<strong><%:Unavailable Seconds (UAS)%>: </strong>%s / %s<br />' +
- '<strong><%:Header Error Code Errors (HEC)%>: </strong>%s / %s<br />' +
- '<strong><%:Non Pre-emtive CRC errors (CRC_P)%>: </strong>%s / %s<br />' +
- '<strong><%:Pre-emtive CRC errors (CRCP_P)%>: </strong>%s / %s<br />' +
- '<strong><%:Line Uptime%>: </strong>%s<br />' +
- '<strong><%:ATU-C System Vendor ID%>: </strong>%s<br />' +
- '<strong><%:Power Management Mode%>: </strong>%s<br />',
- info.dsl.line_state, info.dsl.line_state_detail,
- info.dsl.line_state_num,
- info.dsl.line_mode_s,
- info.dsl.annex_s,
- info.dsl.profile_s,
- info.dsl.data_rate_down_s, info.dsl.data_rate_up_s,
- info.dsl.max_data_rate_down_s, info.dsl.max_data_rate_up_s,
- info.dsl.latency_num_down, info.dsl.latency_num_up,
- info.dsl.line_attenuation_down, info.dsl.line_attenuation_up,
- info.dsl.signal_attenuation_down, info.dsl.signal_attenuation_up,
- info.dsl.noise_margin_down, info.dsl.noise_margin_up,
- info.dsl.actatp_down, info.dsl.actatp_up,
- info.dsl.errors_fec_near, info.dsl.errors_fec_far,
- info.dsl.errors_es_near, info.dsl.errors_es_far,
- info.dsl.errors_ses_near, info.dsl.errors_ses_far,
- info.dsl.errors_loss_near, info.dsl.errors_loss_far,
- info.dsl.errors_uas_near, info.dsl.errors_uas_far,
- info.dsl.errors_hec_near, info.dsl.errors_hec_far,
- info.dsl.errors_crc_p_near, info.dsl.errors_crc_p_far,
- info.dsl.errors_crcp_p_near, info.dsl.errors_crcp_p_far,
- info.dsl.line_uptime_s,
- info.dsl.atuc_vendor_id,
- info.dsl.power_mode_s
- );
-
- dsl_s.innerHTML = String.format('<small>%s</small>', s);
- dsl_i.innerHTML = String.format(
- '<img src="<%=resource%>/icons/ethernet.png" />' +
- '<br /><small>DSL</small>'
- );
+ var ds = document.getElementById('dsl_status_table');
+
+ while (ds.lastElementChild)
+ ds.removeChild(ds.lastElementChild);
+
+ ds.appendChild(renderBox(
+ '<%:DSL Status%>',
+ (info.dsl.line_state === 'UP'), [ ],
+ '<%:Line State%>', '%s [0x%x]'.format(info.dsl.line_state, info.dsl.line_state_detail),
+ '<%:Line Mode%>', info.dsl.line_mode_s || '-',
+ '<%:Line Uptime%>', info.dsl.line_uptime_s || '-',
+ '<%:Annex%>', info.dsl.annex_s || '-',
+ '<%:Profile%>', info.dsl.profile_s || '-',
+ '<%:Data Rate%>', '%s/s / %s/s'.format(info.dsl.data_rate_down_s, info.dsl.data_rate_up_s),
+ '<%:Max. Attainable Data Rate (ATTNDR)%>', '%s/s / %s/s'.format(info.dsl.max_data_rate_down_s, info.dsl.max_data_rate_up_s),
+ '<%:Latency%>', '%s / %s'.format(info.dsl.latency_num_down, info.dsl.latency_num_up),
+ '<%:Line Attenuation (LATN)%>', '%.1f dB / %.1f dB'.format(info.dsl.line_attenuation_down, info.dsl.line_attenuation_up),
+ '<%:Signal Attenuation (SATN)%>', '%.1f dB / %.1f dB'.format(info.dsl.signal_attenuation_down, info.dsl.signal_attenuation_up),
+ '<%:Noise Margin (SNR)%>', '%.1f dB / %.1f dB'.format(info.dsl.noise_margin_down, info.dsl.noise_margin_up),
+ '<%:Aggregate Transmit Power(ACTATP)%>', '%.1f dB / %.1f dB'.format(info.dsl.actatp_down, info.dsl.actatp_up),
+ '<%:Forward Error Correction Seconds (FECS)%>', '%d / %d'.format(info.dsl.errors_fec_near, info.dsl.errors_fec_far),
+ '<%:Errored seconds (ES)%>', '%d / %d'.format(info.dsl.errors_es_near, info.dsl.errors_es_far),
+ '<%:Severely Errored Seconds (SES)%>', '%d / %d'.format(info.dsl.errors_ses_near, info.dsl.errors_ses_far),
+ '<%:Loss of Signal Seconds (LOSS)%>', '%d / %d'.format(info.dsl.errors_loss_near, info.dsl.errors_loss_far),
+ '<%:Unavailable Seconds (UAS)%>', '%d / %d'.format(info.dsl.errors_uas_near, info.dsl.errors_uas_far),
+ '<%:Header Error Code Errors (HEC)%>', '%d / %d'.format(info.dsl.errors_hec_near, info.dsl.errors_hec_far),
+ '<%:Non Pre-emtive CRC errors (CRC_P)%>', '%d / %d'.format(info.dsl.errors_crc_p_near, info.dsl.errors_crc_p_far),
+ '<%:Pre-emtive CRC errors (CRCP_P)%>', '%d / %d'.format(info.dsl.errors_crcp_p_near, info.dsl.errors_crcp_p_far),
+ '<%:ATU-C System Vendor ID%>', info.dsl.atuc_vendor_id,
+ '<%:Power Management Mode%>', info.dsl.power_mode_s));
<% end %>
<% if has_wifi then %>
@@ -452,18 +425,8 @@
<div class="cbi-section">
<h3><%:DSL%></h3>
- <div class="table" width="100%">
- <div class="tr">
- <div class="td left" width="33%" style="vertical-align:top"><%:DSL Status%></div>
- <div class="td">
- <div class="table">
- <div class="tr">
- <div class="td" id="dsl_i" style="width:16px; text-align:center; padding:3px"><img src="<%=resource%>/icons/ethernet_disabled.png" /><br /><small>?</small></div>
- <div class="td left" id="dsl_s" style="vertical-align:middle; padding: 3px"><em><%:Collecting data...%></em></div>
- </div>
- </div>
- </div>
- </div>
+ <div id="dsl_status_table" class="network-status-table">
+ <p><em><%:Collecting data...%></em></p>
</div>
</div>
<% end %>
diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_system/packages.htm b/modules/luci-mod-admin-full/luasrc/view/admin_system/packages.htm
index 1b959afc54..280eabb8ea 100644
--- a/modules/luci-mod-admin-full/luasrc/view/admin_system/packages.htm
+++ b/modules/luci-mod-admin-full/luasrc/view/admin_system/packages.htm
@@ -102,7 +102,7 @@ end
<div class="cbi-value">
<label class="cbi-value-title"><%:Download and install package%>:</label>
<div class="cbi-value-field">
- <input type="text" name="url" size="30" value="" />
+ <span><input type="text" name="url" size="30" value="" /></span>
<input class="cbi-button cbi-button-save" type="submit" name="go" value="<%:OK%>" />
</div>
</div>
@@ -110,7 +110,7 @@ end
<div class="cbi-value cbi-value-last">
<label class="cbi-value-title"><%:Filter%>:</label>
<div class="cbi-value-field">
- <input type="text" name="query" size="20" value="<%=pcdata(query)%>" />
+ <span><input type="text" name="query" size="20" value="<%=pcdata(query)%>" /></span>
<input type="submit" class="cbi-button cbi-button-action" name="search" value="<%:Find package%>" />
</div>
</div>
diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_uci/changes.htm b/modules/luci-mod-admin-full/luasrc/view/admin_uci/changes.htm
index 6282244757..43bd7c23fb 100644
--- a/modules/luci-mod-admin-full/luasrc/view/admin_uci/changes.htm
+++ b/modules/luci-mod-admin-full/luasrc/view/admin_uci/changes.htm
@@ -8,11 +8,9 @@
<%-
local node, redir_url = luci.dispatcher.lookup(luci.http.formvalue("redir"))
+ export("redirect", redir_url or url("admin/uci/changes"))
- include("cbi/apply_widget")
include("admin_uci/changelog")
-
- cbi_apply_widget(redir_url or url("admin/uci/changes"))
-%>
<h2 name="content"><%:Configuration%> / <%:Changes%></h2>
@@ -32,7 +30,11 @@
</form>
<% end %>
- <input class="cbi-button cbi-button-save" type="button" id="apply_button" value="<%:Save & Apply%>" onclick="uci_apply(true); this.blur()" />
+ <form method="post" action="<%=url("admin/uci/changes")%>">
+ <input type="hidden" name="token" value="<%=token%>" />
+ <input type="hidden" name="redir" value="<%=pcdata(luci.http.formvalue("redir"))%>" />
+ <input class="cbi-button cbi-button-save" type="submit" name="trigger_apply" value="<%:Save & Apply%>" />
+ </form>
<form method="post" action="<%=url("admin/uci/revert")%>">
<input type="hidden" name="token" value="<%=token%>" />
<input type="hidden" name="redir" value="<%=pcdata(luci.http.formvalue("redir"))%>" />
diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_uci/revert.htm b/modules/luci-mod-admin-full/luasrc/view/admin_uci/revert.htm
index ff23d568dc..d8fd3de01e 100644
--- a/modules/luci-mod-admin-full/luasrc/view/admin_uci/revert.htm
+++ b/modules/luci-mod-admin-full/luasrc/view/admin_uci/revert.htm
@@ -8,11 +8,9 @@
<%-
local node, redir_url = luci.dispatcher.lookup(luci.http.formvalue("redir"))
+ export("redirect", redir_url or url("admin/uci/changes"))
- include("cbi/apply_widget")
include("admin_uci/changelog")
-
- cbi_apply_widget(redir_url or url("admin/uci/revert"))
-%>
<h2 name="content"><%:Configuration%> / <%:Revert%></h2>
@@ -24,13 +22,6 @@
<p><strong><%:There are no pending changes to revert!%></strong></p>
<% end %>
-<div class="alert-message" id="cbi_apply_status" style="display:none"></div>
-<script type="text/javascript">
- document.addEventListener("DOMContentLoaded", function() {
- uci_revert();
- });
-</script>
-
<% if redir_url then %>
<div class="cbi-page-actions">
<form class="inline" method="get" action="<%=luci.util.pcdata(redir_url)%>">