summaryrefslogtreecommitdiffhomepage
path: root/applications
diff options
context:
space:
mode:
Diffstat (limited to 'applications')
-rw-r--r--applications/luci-app-attendedsysupgrade/root/www/luci-static/resources/attendedsysupgrade.js691
-rw-r--r--applications/luci-app-dnscrypt-proxy/po/es/dnscrypt-proxy.po358
-rw-r--r--applications/luci-app-firewall/po/es/firewall.po16
-rw-r--r--applications/luci-app-mwan3/po/es/mwan3.po881
-rw-r--r--applications/luci-app-nft-qos/po/es/nft-qos.po241
-rw-r--r--applications/luci-app-noddos/po/es/noddos.po143
-rw-r--r--applications/luci-app-p910nd/po/es/p910nd.po12
-rw-r--r--applications/luci-app-pagekitec/po/es/pagekitec.po73
-rw-r--r--applications/luci-app-simple-adblock/po/ja/simple-adblock.po49
-rw-r--r--applications/luci-app-unbound/po/es/unbound.po775
-rw-r--r--applications/luci-app-vnstat/po/es/vnstat.po13
-rw-r--r--applications/luci-app-vpnbypass/po/es/vpnbypass.po83
-rw-r--r--applications/luci-app-wifischedule/luasrc/model/cbi/wifischedule/wifi_schedule.lua4
13 files changed, 2970 insertions, 369 deletions
diff --git a/applications/luci-app-attendedsysupgrade/root/www/luci-static/resources/attendedsysupgrade.js b/applications/luci-app-attendedsysupgrade/root/www/luci-static/resources/attendedsysupgrade.js
index e23414f705..2cf5cc6e1b 100644
--- a/applications/luci-app-attendedsysupgrade/root/www/luci-static/resources/attendedsysupgrade.js
+++ b/applications/luci-app-attendedsysupgrade/root/www/luci-static/resources/attendedsysupgrade.js
@@ -1,382 +1,427 @@
-function $(s) { return document.getElementById(s.substring(1)); }
+function $(s) {
+ return document.getElementById(s.substring(1));
+}
-function show(s) { $(s).style.display = 'block'; }
+function show(s) {
+ $(s).style.display = 'block';
+}
-function hide(s) { $(s).style.display = 'none'; }
+function hide(s) {
+ $(s).style.display = 'none';
+}
function set_server() {
- hide("#status_box");
- data.url = $("#server").value;
- ubus_call("uci", "set", { "config": "attendedsysupgrade", "section": "server", values: { "url": data.url } })
- ubus_call("uci", "commit", { "config": "attendedsysupgrade" })
- var server_button = $("#server")
- server_button.type = 'button';
- server_button.className = 'cbi-button cbi-button-edit';
- server_button.parentElement.removeChild($("#button_set"));
- server_button.onclick = edit_server;
+ hide("#status_box");
+ data.url = $("#server").value;
+ ubus_call("uci", "set", {
+ "config": "attendedsysupgrade",
+ "section": "server",
+ values: {
+ "url": data.url
+ }
+ })
+ ubus_call("uci", "commit", {
+ "config": "attendedsysupgrade"
+ })
+ var server_button = $("#server")
+ server_button.type = 'button';
+ server_button.className = 'cbi-button cbi-button-edit';
+ server_button.parentElement.removeChild($("#button_set"));
+ server_button.onclick = edit_server;
}
function edit_server() {
- $("#server").type = 'text';
- $("#server").onkeydown = function(event) {
- if(event.key === 'Enter') {
- set_server();
- return false;
- }
- }
- $("#server").className = '';
- $("#server").onclick = null;
-
- var button_set = document.createElement("input");
- button_set.type = "button";
- button_set.value = "Save";
- button_set.name = "button_set";
- button_set.id = "button_set";
- button_set.className = 'cbi-button cbi-button-save';
- button_set.onclick = set_server
- $("#server").parentElement.appendChild(button_set);
+ $("#server").type = 'text';
+ $("#server").onkeydown = function(event) {
+ if (event.key === 'Enter') {
+ set_server();
+ return false;
+ }
+ }
+ $("#server").className = '';
+ $("#server").onclick = null;
+
+ var button_set = document.createElement("input");
+ button_set.type = "button";
+ button_set.value = "Save";
+ button_set.name = "button_set";
+ button_set.id = "button_set";
+ button_set.className = 'cbi-button cbi-button-save';
+ button_set.onclick = set_server
+ $("#server").parentElement.appendChild(button_set);
}
function edit_packages() {
- data.edit_packages = true
- hide("#edit_button");
- $("#edit_packages").value = data.packages.join("\n");
- show("#edit_packages");
+ data.edit_packages = true
+ hide("#edit_button");
+ $("#edit_packages").value = data.packages.join("\n");
+ show("#edit_packages");
}
// requests to the upgrade server
-function server_request(request_dict, path, callback) {
- request_dict.distro = data.release.distribution;
- request_dict.target = data.release.target;
- var request = new XMLHttpRequest();
- request.open("POST", data.url + "/" + path, true);
- request.setRequestHeader("Content-type", "application/json");
- request.send(JSON.stringify(request_dict));
- request.onerror = function(e) {
- set_status("danger", "upgrade server down")
- show("#server_div");
- }
- request.addEventListener('load', function(event) {
- callback(request)
- });
+function server_request(path, callback) {
+ var request = new XMLHttpRequest();
+ request.open("POST", data.url + "/" + path, true);
+ request.setRequestHeader("Content-type", "application/json");
+ request.send(JSON.stringify(request_dict));
+ request.onerror = function(e) {
+ set_status("danger", "upgrade server down")
+ show("#server_div");
+ }
+ request.addEventListener('load', function(event) {
+ callback(request)
+ });
}
// initial setup, get system information
function setup() {
- ubus_call("rpc-sys", "packagelist", {}, "packages");
- ubus_call("system", "board", {}, "release");
- ubus_call("system", "board", {}, "board_name");
- ubus_call("system", "board", {}, "model");
- ubus_call("system", "info", {}, "memory");
- uci_get({ "config": "attendedsysupgrade", "section": "server", "option": "url" })
- uci_get({ "config": "attendedsysupgrade", "section": "client", "option": "upgrade_packages" })
- uci_get({ "config": "attendedsysupgrade", "section": "client", "option": "advanced_mode" })
- uci_get({ "config": "attendedsysupgrade", "section": "client", "option": "auto_search" })
- setup_ready();
+ ubus_call("rpc-sys", "packagelist", {}, "packages");
+ ubus_call("system", "board", {}, "release");
+ ubus_call("system", "board", {}, "board_name");
+ ubus_call("system", "board", {}, "model");
+ ubus_call("system", "info", {}, "memory");
+ uci_get({
+ "config": "attendedsysupgrade",
+ "section": "server",
+ "option": "url"
+ })
+ uci_get({
+ "config": "attendedsysupgrade",
+ "section": "client",
+ "option": "upgrade_packages"
+ })
+ uci_get({
+ "config": "attendedsysupgrade",
+ "section": "client",
+ "option": "advanced_mode"
+ })
+ uci_get({
+ "config": "attendedsysupgrade",
+ "section": "client",
+ "option": "auto_search"
+ })
+ setup_ready();
}
function setup_ready() {
- // checks if a async ubus calls have finished
- if(ubus_counter != ubus_closed) {
- setTimeout(setup_ready, 300)
- } else {
- if(data.auto_search == 1) {
- upgrade_check();
- } else {
- show("#upgrade_button");
- show("#server_div");
- $("#server").value = data.url;
- }
- }
+ // checks if a async ubus calls have finished
+ if (ubus_counter != ubus_closed) {
+ setTimeout(setup_ready, 300)
+ } else {
+ if (data.auto_search == 1) {
+ upgrade_check();
+ } else {
+ show("#upgrade_button");
+ show("#server_div");
+ $("#server").value = data.url;
+ }
+ }
}
function uci_get(option) {
- // simple wrapper to get a uci value store in data.<option>
- ubus_call("uci", "get", option, option["option"])
+ // simple wrapper to get a uci value store in data.<option>
+ ubus_call("uci", "get", option, option["option"])
}
ubus_counter = 0;
ubus_closed = 0;
+
function ubus_call(command, argument, params, variable) {
- var request_data = {};
- request_data.jsonrpc = "2.0";
- request_data.id = ubus_counter;
- request_data.method = "call";
- request_data.params = [ data.ubus_rpc_session, command, argument, params ]
- var request_json = JSON.stringify(request_data)
- ubus_counter++;
- var request = new XMLHttpRequest();
- request.open("POST", ubus_url, true);
- request.setRequestHeader("Content-type", "application/json");
- request.onload = function(event) {
- if(request.status === 200) {
- var response = JSON.parse(request.responseText)
- if(!("error" in response) && "result" in response) {
- if(response.result.length === 2) {
- if(command === "uci") {
- data[variable] = response.result[1].value
- } else {
- data[variable] = response.result[1][variable]
- }
- }
- } else {
- set_status("danger", "<b>Ubus call failed:</b><br />Request: " + request_json + "<br />Response: " + JSON.stringify(response))
- }
- ubus_closed++;
- }
- }
- request.send(request_json);
+ var request_data = {};
+ request_data.jsonrpc = "2.0";
+ request_data.id = ubus_counter;
+ request_data.method = "call";
+ request_data.params = [data.ubus_rpc_session, command, argument, params]
+ var request_json = JSON.stringify(request_data)
+ ubus_counter++;
+ var request = new XMLHttpRequest();
+ request.open("POST", ubus_url, true);
+ request.setRequestHeader("Content-type", "application/json");
+ request.onload = function(event) {
+ if (request.status === 200) {
+ var response = JSON.parse(request.responseText)
+ if (!("error" in response) && "result" in response) {
+ if (response.result.length === 2) {
+ if (command === "uci") {
+ data[variable] = response.result[1].value
+ } else {
+ data[variable] = response.result[1][variable]
+ }
+ }
+ } else {
+ set_status("danger", "<b>Ubus call failed:</b><br />Request: " + request_json + "<br />Response: " + JSON.stringify(response))
+ }
+ ubus_closed++;
+ }
+ }
+ request.send(request_json);
}
-function set_status(type, message, loading) {
- $("#status_box").className = "alert-message " + type;
- var loading_image = '';
- if(loading) {
- loading_image = '<img src="/luci-static/resources/icons/loading.gif" alt="Loading" style="vertical-align:middle"> ';
- }
- $("#status_box").innerHTML = loading_image + message;
- show("#status_box")
+function set_status(type, message, loading, show_log) {
+ $("#status_box").className = "alert-message " + type;
+ var loading_image = '';
+ if (loading) {
+ loading_image = '<img src="/luci-static/resources/icons/loading.gif" alt="Loading" style="vertical-align:middle"> ';
+ }
+ if (show_log && data.log) {
+ message += ' <p><a target="_blank" href="' + data.url + data.log + '">Build log</a></p>'
+ }
+ $("#status_box").innerHTML = loading_image + message;
+ show("#status_box")
}
function upgrade_check() {
- // Asks server for new firmware
- // If data.upgrade_packages is set to true search for new package versions as well
- hide("#status_box");
- hide("#server_div");
- set_status("info", "Searching for upgrades", true);
- var request_dict = {}
- request_dict.version = data.release.version;
- request_dict.revision = data.release.revision;
- request_dict.installed = data.packages;
- request_dict.upgrade_packages = data.upgrade_packages
- server_request(request_dict, "api/upgrade-check", upgrade_check_callback)
+ // Asks server for new firmware
+ // If data.upgrade_packages is set to true search for new package versions as well
+ hide("#status_box");
+ hide("#server_div");
+ set_status("info", "Searching for upgrades", true);
+ request_dict.distro = data.release.distribution;
+ request_dict.version = data.release.version;
+ request_dict.target = data.release.target;
+ request_dict.revision = data.release.revision;
+ request_dict.installed = data.packages;
+ request_dict.upgrade_packages = data.upgrade_packages
+ server_request("api/upgrade-check", upgrade_check_callback)
}
function upgrade_check_callback(request_text) {
- var request_json = JSON.parse(request_text)
-
- // create simple output to tell user what's going to be upgrade (release/packages)
- var info_output = ""
- if(request_json.version != undefined) {
- info_output += "<h3>New firmware release available</h3>"
- info_output += data.release.version + " to " + request_json.version
- data.latest_version = request_json.version;
- }
- if(request_json.upgrades != undefined) {
- info_output += "<h3>Package upgrades available</h3>"
- for (var upgrade in request_json.upgrades) {
- info_output += "<b>" + upgrade + "</b>: " + request_json.upgrades[upgrade][1] + " to " + request_json.upgrades[upgrade][0] + "<br />"
- }
- }
- data.packages = request_json.packages
- set_status("success", info_output)
-
- if(data.advanced_mode == 1) {
- show("#edit_button");
- }
- var upgrade_button = $("#upgrade_button")
- upgrade_button.value = "Request firmware";
- upgrade_button.style.display = "block";
- upgrade_button.disabled = false;
- upgrade_button.onclick = upgrade_request;
-
+ var request_json = JSON.parse(request_text)
+
+ // create simple output to tell user what's going to be upgrade (release/packages)
+ var info_output = ""
+ if (request_json.version) {
+ info_output += "<h3>New release <b>" + request_json.version + "</b> available</h3>"
+ info_output += "Installed version: " + data.release.version
+ request_dict.version = request_json.version;
+ }
+ if (request_json.upgrades) {
+ if (request_json.upgrades != {}) {
+ info_output += "<h3>Package upgrades available</h3>"
+ for (var upgrade in request_json.upgrades) {
+ info_output += "<b>" + upgrade + "</b>: " + request_json.upgrades[upgrade][1] + " to " + request_json.upgrades[upgrade][0] + "<br />"
+ }
+ }
+ }
+ data.packages = request_json.packages
+ set_status("success", info_output)
+
+ if (data.advanced_mode == 1) {
+ show("#edit_button");
+ }
+ var upgrade_button = $("#upgrade_button")
+ upgrade_button.value = "Request firmware";
+ upgrade_button.style.display = "block";
+ upgrade_button.disabled = false;
+ upgrade_button.onclick = upgrade_request;
}
function upgrade_request() {
- // Request the image
- // Needed values
- // version/release
- // board_name or model (server tries to find the correct profile)
- // packages
- // The rest is added by server_request()
- $("#upgrade_button").disabled = true;
- hide("#edit_packages");
- hide("#edit_button");
- hide("#keep_container");
-
- var request_dict = {}
- request_dict.version = data.latest_version;
- request_dict.board = data.board_name
- request_dict.model = data.model
-
- if(data.edit_packages == true) {
- request_dict.packages = $("#edit_packages").value.split("\n")
- } else {
- request_dict.packages = data.packages;
- }
-
- server_request(request_dict, "api/upgrade-request", upgrade_request_callback)
+ // Request firmware using the following parameters
+ // distro, version, target, board_name/model, packages
+ $("#upgrade_button").disabled = true;
+ hide("#edit_packages");
+ hide("#edit_button");
+ hide("#keep_container");
+
+ // remove "installed" entry as unused by build requests
+ delete request_dict.installed
+ // add board info to let server determine profile
+ request_dict.board_name = data.board_name
+ request_dict.board = data.board_name
+ request_dict.model = data.model
+
+ if (data.edit_packages == true) {
+ request_dict.packages = $("#edit_packages").value.split("\n")
+ } else {
+ request_dict.packages = data.packages;
+ }
+ server_request("api/upgrade-request", upgrade_request_callback)
}
function upgrade_request_callback(request) {
- // ready to download
- var request_json = JSON.parse(request);
- data.files = request_json.files;
- data.sysupgrade = request_json.sysupgrade;
-
- var info_output = 'Firmware created: <a href="' + data.url + data.files + data.sysupgrade + '"><b>' + data.sysupgrade+ '</b></a>'
- info_output += ' <a target="_blank" href="' + data.url + request_json.log + '">Build log</a>'
- set_status("info", info_output);
-
- show("#keep_container");
- var upgrade_button = $("#upgrade_button")
- upgrade_button.disabled = false;
- upgrade_button.style.display = "block";
- upgrade_button.value = "Flash firmware";
- upgrade_button.onclick = download_image;
+ // ready to download
+ var request_json = JSON.parse(request)
+ data.files = request_json.files
+ data.sysupgrade = request_json.sysupgrade
+ data.log = request_json.log
+
+ var info_output = '<h3>Firmware created</h3><p>Created file: <a href="' + data.url + data.files + data.sysupgrade + '">' + data.sysupgrade + '</p></a>'
+ set_status("success", info_output, false, true);
+
+ show("#keep_container");
+ var upgrade_button = $("#upgrade_button")
+ upgrade_button.disabled = false;
+ upgrade_button.style.display = "block";
+ upgrade_button.value = "Flash firmware";
+ upgrade_button.onclick = download_image;
}
function flash_image() {
- // Flash image via rpc-sys upgrade_start
- set_status("warning", "Flashing firmware. Don't unpower device", true)
- ubus_call("rpc-sys", "upgrade_start", { "keep": $("#keep").checked }, 'message');
- ping_max = 3600; // in seconds
- setTimeout(ping_ubus, 10000)
+ // Flash image via rpc-sys upgrade_start
+ set_status("warning", "Flashing firmware. Don't unpower device", true)
+ ubus_call("rpc-sys", "upgrade_start", {
+ "keep": $("#keep").checked
+ }, 'message');
+ ping_max = 3600; // in seconds
+ setTimeout(ping_ubus, 10000)
}
function ping_ubus() {
- // Tries to connect to ubus. If the connection fails the device is likely still rebooting.
- // If more time than ping_max passes update may failed
- if(ping_max > 0) {
- ping_max--;
- var request = new XMLHttpRequest();
- request.open("GET", ubus_url, true);
- request.addEventListener('error', function(event) {
- set_status("warning", "Rebooting device - please wait!", true);
- setTimeout(ping_ubus, 5000)
- });
- request.addEventListener('load', function(event) {
- set_status("success", "Success! Please reload web interface");
- $("#upgrade_button").value = "Reload page";
- show("#upgrade_button");
- $("#upgrade_button").disabled = false;
- $("#upgrade_button").onclick = function() { location.reload(); }
- });
- request.send();
- } else {
- set_status("danger", "Web interface could not reconnect to your device. Please reload web interface or check device manually")
- }
+ // Tries to connect to ubus. If the connection fails the device is likely still rebooting.
+ // If more time than ping_max passes update may failed
+ if (ping_max > 0) {
+ ping_max--;
+ var request = new XMLHttpRequest();
+ request.open("GET", ubus_url, true);
+ request.addEventListener('error', function(event) {
+ set_status("warning", "Rebooting device - please wait!", true);
+ setTimeout(ping_ubus, 5000)
+ });
+ request.addEventListener('load', function(event) {
+ set_status("success", "Success! Please reload web interface");
+ $("#upgrade_button").value = "Reload page";
+ show("#upgrade_button");
+ $("#upgrade_button").disabled = false;
+ $("#upgrade_button").onclick = function() {
+ location.reload();
+ }
+ });
+ request.send();
+ } else {
+ set_status("danger", "Web interface could not reconnect to your device. Please reload web interface or check device manually")
+ }
}
function upload_image(blob) {
- // Uploads received blob data to the server using cgi-io
- set_status("info", "Uploading firmware to device", true);
- var request = new XMLHttpRequest();
- var form_data = new FormData();
-
- form_data.append("sessionid", data.ubus_rpc_session)
- form_data.append("filename", "/tmp/firmware.bin")
- form_data.append("filemode", 755) // insecure?
- form_data.append("filedata", blob)
-
- request.addEventListener('load', function(event) {
- request_json = JSON.parse(request.responseText)
- flash_image();
- });
-
- request.addEventListener('error', function(event) {
- set_status("danger", "Upload of firmware failed, please retry by reloading web interface")
- });
-
- request.open('POST', origin + '/cgi-bin/cgi-upload');
- request.send(form_data);
+ // Uploads received blob data to the server using cgi-io
+ set_status("info", "Uploading firmware to device", true);
+ var request = new XMLHttpRequest();
+ var form_data = new FormData();
+
+ form_data.append("sessionid", data.ubus_rpc_session)
+ form_data.append("filename", "/tmp/firmware.bin")
+ form_data.append("filemode", 755) // insecure?
+ form_data.append("filedata", blob)
+
+ request.addEventListener('load', function(event) {
+ request_json = JSON.parse(request.responseText)
+ flash_image();
+ });
+
+ request.addEventListener('error', function(event) {
+ set_status("danger", "Upload of firmware failed, please retry by reloading web interface")
+ });
+
+ request.open('POST', origin + '/cgi-bin/cgi-upload');
+ request.send(form_data);
}
function download_image() {
- // Download image from server once the url was received by upgrade_request
- hide("#keep_container");
- hide("#upgrade_button");
- var download_request = new XMLHttpRequest();
- download_request.open("GET", data.url + data.files + data.sysupgrade);
- download_request.responseType = "arraybuffer";
-
- download_request.onload = function () {
- if (this.status === 200) {
- var blob = new Blob([download_request.response], {type: "application/octet-stream"});
- upload_image(blob)
- }
- };
- set_status("info", "Downloading firmware to web browser memory", true);
- download_request.send();
+ // Download image from server once the url was received by upgrade_request
+ hide("#keep_container");
+ hide("#upgrade_button");
+ var download_request = new XMLHttpRequest();
+ download_request.open("GET", data.url + data.files + data.sysupgrade);
+ download_request.responseType = "arraybuffer";
+
+ download_request.onload = function() {
+ if (this.status === 200) {
+ var blob = new Blob([download_request.response], {
+ type: "application/octet-stream"
+ });
+ upload_image(blob)
+ }
+ };
+ set_status("info", "Downloading firmware to web browser memory", true);
+ download_request.send();
}
-function server_request(request_dict, path, callback) {
- var request_json;
- request_dict.distro = data.release.distribution;
- request_dict.target = data.release.target;
- var request = new XMLHttpRequest();
- request.open("POST", data.url + "/" + path, true);
- request.setRequestHeader("Content-type", "application/json");
- request.send(JSON.stringify(request_dict));
- request.onerror = function(e) {
- set_status("danger", "Upgrade server down or could not connect")
- show("#server_div");
- }
- request.addEventListener('load', function(event) {
- var request_text = request.responseText;
- if (request.status === 200) {
- callback(request_text)
-
- } else if (request.status === 202) {
- var imagebuilder = request.getResponseHeader("X-Imagebuilder-Status");
- if(imagebuilder === "queue") {
- // in queue
- var queue = request.getResponseHeader("X-Build-Queue-Position");
- set_status("info", "In build queue position " + queue, true)
- console.log("queued");
- } else if(imagebuilder === "initialize") {
- set_status("info", "Setting up ImageBuilder", true)
- console.log("Setting up imagebuilder");
- } else if(imagebuilder === "building") {
- set_status("info", "Building image", true);
- console.log("building");
- } else {
- // fallback if for some reasons the headers are missing e.g. browser blocks access
- set_status("info", "Processing request", true);
- console.log(imagebuilder)
- }
- setTimeout(function() { server_request(request_dict, path, callback) }, 5000)
-
- } else if (request.status === 204) {
- // no upgrades available
- set_status("success", "No upgrades available")
-
- } else if (request.status === 400) {
- // bad request
- request_json = JSON.parse(request_text)
- set_status("danger", request_json.error)
-
- } else if (request.status === 412) {
- // this is a bit generic
- set_status("danger", "Unsupported device, release, target, subtraget or board")
-
- } else if (request.status === 413) {
- set_status("danger", "No firmware created due to image size. Try again with less packages selected.")
-
- } else if (request.status === 422) {
- var package_missing = request.getResponseHeader("X-Unknown-Package");
- set_status("danger", "Unknown package in request: <b>" + package_missing + "</b>")
- } else if (request.status === 500) {
- request_json = JSON.parse(request_text)
-
- var error_box_content = "<b>Internal server error</b><br />"
- error_box_content += request_json.error
- if(request_json.log != undefined) {
- data.log_url = request_json.log
- }
- set_status("danger", error_box_content)
-
- } else if (request.status === 501) {
- set_status("danger", "No sysupgrade file produced, may not supported by model.")
- } else if (request.status === 502) {
- // python part offline
- set_status("danger", "Server down for maintenance")
- setTimeout(function() { server_request(request_dict, path, callback) }, 30000)
- } else if (request.status === 503) {
- set_status("danger", "Server overloaded")
- setTimeout(function() { server_request(request_dict, path, callback) }, 30000)
- }
- });
+function server_request(path, callback) {
+ var request_json;
+ var request = new XMLHttpRequest();
+ request.open("POST", data.url + "/" + path, true);
+ request.setRequestHeader("Content-type", "application/json");
+ request.send(JSON.stringify(request_dict));
+ request.onerror = function(e) {
+ set_status("danger", "Upgrade server down or could not connect")
+ show("#server_div");
+ }
+ request.addEventListener('load', function(event) {
+ var request_text = request.responseText;
+ if (request.status === 200) {
+ callback(request_text)
+
+ } else if (request.status === 202) {
+ var imagebuilder = request.getResponseHeader("X-Imagebuilder-Status");
+ if (imagebuilder === "queue") {
+ // in queue
+ var queue = request.getResponseHeader("X-Build-Queue-Position");
+ set_status("info", "In build queue position " + queue, true)
+ console.log("queued");
+ } else if (imagebuilder === "building") {
+ set_status("info", "Building image", true);
+ console.log("building");
+ } else {
+ // fallback if for some reasons the headers are missing e.g. browser blocks access
+ set_status("info", "Processing request", true);
+ console.log(imagebuilder)
+ }
+ setTimeout(function() {
+ server_request(path, callback)
+ }, 5000)
+
+ } else if (request.status === 204) {
+ // no upgrades available
+ set_status("success", "No upgrades available")
+
+ } else if (request.status === 400) {
+ // bad request
+ request_json = JSON.parse(request_text)
+ set_status("danger", request_json.error)
+
+ } else if (request.status === 409) {
+ // bad request
+ request_json = JSON.parse(request_text)
+ data.log = request_json.log
+ set_status("danger", "Incompatible package selection. See build log for details", false, true)
+
+ } else if (request.status === 412) {
+ // this is a bit generic
+ set_status("danger", "Unsupported device, release, target, subtraget or board")
+
+ } else if (request.status === 413) {
+ set_status("danger", "No firmware created due to image size. Try again with less packages selected.")
+
+ } else if (request.status === 422) {
+ var package_missing = request.getResponseHeader("X-Unknown-Package");
+ set_status("danger", "Unknown package in request: <b>" + package_missing + "</b>")
+ } else if (request.status === 500) {
+ request_json = JSON.parse(request_text)
+
+ var error_box_content = "<b>Internal server error</b><br />"
+ error_box_content += request_json.error
+ if (request_json.log != undefined) {
+ data.log = request_json.log
+ }
+ set_status("danger", error_box_content, false, true)
+
+ } else if (request.status === 501) {
+ set_status("danger", "No sysupgrade file produced, may not supported by model.")
+ } else if (request.status === 502) {
+ // python part offline
+ set_status("danger", "Server down for maintenance")
+ setTimeout(function() {
+ server_request(path, callback)
+ }, 30000)
+ } else if (request.status === 503) {
+ set_status("danger", "Server overloaded")
+ setTimeout(function() {
+ server_request(path, callback)
+ }, 30000)
+ }
+ });
}
+request_dict = {}
document.onload = setup()
diff --git a/applications/luci-app-dnscrypt-proxy/po/es/dnscrypt-proxy.po b/applications/luci-app-dnscrypt-proxy/po/es/dnscrypt-proxy.po
new file mode 100644
index 0000000000..0864c2fb50
--- /dev/null
+++ b/applications/luci-app-dnscrypt-proxy/po/es/dnscrypt-proxy.po
@@ -0,0 +1,358 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.2.1\n"
+"Last-Translator: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Language: es\n"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:139
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:161
+msgid "-------"
+msgstr "-------"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:17
+msgid "Advanced"
+msgstr "Avanzado"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:215
+msgid "Alternate Resolver List"
+msgstr "Lista alternativa de resolución"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:258
+msgid ""
+"Apply DNSCrypt-Proxy specific settings to the Dnsmasq configuration.<br />"
+msgstr ""
+"Aplique la configuración específica de DNSCrypt-Proxy a la configuración de "
+"Dnsmasq.<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:228
+msgid "Blacklist"
+msgstr "Lista negra"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:233
+msgid "Block IPv6"
+msgstr "Bloque IPv6"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:169
+msgid ""
+"By default the DNSCrypt-Proxy startup will be triggered by ifup events of "
+"'All' available network interfaces.<br />"
+msgstr ""
+"De forma predeterminada, el inicio de DNSCrypt-Proxy se activará mediante "
+"eventos de actualización de 'Todas' las interfaces de red disponibles.<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:59
+msgid "Configuration of the DNSCrypt-Proxy package."
+msgstr "Configuración del paquete DNSCrypt-Proxy."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:146
+msgid ""
+"Create '/etc/resolv-crypt.conf' with 'options timeout:1' to reduce DNS "
+"upstream timeouts with multiple DNSCrypt instances.<br />"
+msgstr ""
+"Cree '/etc/resolv-crypt.conf' con 'options timeout:1' para reducir los "
+"tiempos de espera ascendentes de DNS con múltiples instancias de DNSCrypt."
+"<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:150
+msgid "Create Config File"
+msgstr "Crear archivo de configuración"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:145
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:158
+msgid "Create Custom Config File"
+msgstr "Crear archivo de configuración personalizado"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:245
+msgid "DNS Query Logfile"
+msgstr "Archivo de registro de consultas DNS"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:14
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:58
+msgid "DNSCrypt-Proxy"
+msgstr "DNSCrypt-Proxy"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:35
+msgid "DNSCrypt-Proxy Logfile"
+msgstr "Archivo de registro de DNSCrypt-Proxy"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:26
+msgid "DNSCrypt-Proxy Resolver List"
+msgstr "Lista de resolución de DNSCrypt-Proxy "
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:102
+msgid "Default Resolver List"
+msgstr "Lista de resolución predeterminada"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:234
+msgid "Disable IPv6 to speed up DNSCrypt-Proxy."
+msgstr "Deshabilite IPv6 para acelerar DNSCrypt-Proxy."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:254
+msgid "Dnsmasq Options"
+msgstr "Opciones de Dnsmasq"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:124
+msgid ""
+"Download the current resolver list from 'github.com/dyne/dnscrypt-proxy'."
+msgstr ""
+"Descargue la lista de resolución actual de 'github.com/dyne/dnscrypt-proxy'."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:18
+msgid "Edit DNSCrypt-Proxy Configuration"
+msgstr "Editar configuración de DNSCrypt-Proxy"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:19
+msgid "Edit Dnsmasq Configuration"
+msgstr "Editar configuración de Dnsmasq"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:20
+msgid "Edit Resolvcrypt Configuration"
+msgstr "Editar configuración de Resolvcrypt"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:240
+msgid "Enable Caching to speed up DNSCcrypt-Proxy."
+msgstr "Habilitar el almacenamiento en caché para acelerar DNSCrypt-Proxy."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:220
+msgid "Ephemeral Keys"
+msgstr "Claves efímeras"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:114
+msgid "File Checksum"
+msgstr "Archivo Checksum"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:106
+msgid "File Date"
+msgstr "Fecha de archivo"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:60
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:147
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">see the wiki "
+"online</a>"
+msgstr ""
+"Para obtener más información <a href=\"%s\" target=\"_blank\">vea la wiki en "
+"línea</a>"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:97
+msgid "General Options"
+msgstr "Opciones generales"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:189
+msgid "IP Address"
+msgstr "Dirección IP"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:221
+msgid "Improve privacy by using an ephemeral public key for each query."
+msgstr ""
+"Mejore la privacidad mediante el uso de una clave pública efímera para cada "
+"consulta."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua:9
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua:9
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua:9
+msgid "Input file not found, please check your configuration."
+msgstr "Archivo de entrada no encontrado, por favor revise su configuración."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:185
+msgid "Instance Options"
+msgstr "Opciones de instancia"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:239
+msgid "Local Cache"
+msgstr "Caché local"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:229
+msgid ""
+"Local blacklists allow you to block abuse sites by domains or ip addresses."
+msgstr ""
+"Las listas negras locales le permiten bloquear sitios de abuso por dominios "
+"o direcciones IP."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:246
+msgid ""
+"Log the received DNS queries to a file, so you can watch in real-time what "
+"is happening on the network."
+msgstr ""
+"Registre las consultas de DNS recibidas en un archivo, para que pueda ver en "
+"tiempo real lo que está sucediendo en la red."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:201
+msgid ""
+"Name of the remote DNS service for resolving queries incl. Location, DNSSEC- "
+"and NOLOG-Flag."
+msgstr ""
+"Nombre del servicio de DNS remoto para resolver consultas incl. Ubicación, "
+"DNSSEC- y NOLOG-Flag."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:137
+msgid "No SSL support available.<br />"
+msgstr "No hay soporte SSL disponible.<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:21
+msgid "No default resolver list and no SSL support available.<br />"
+msgstr ""
+"No hay una lista de resolución predeterminada y no hay soporte SSL "
+"disponible.<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:15
+msgid "Overview"
+msgstr "Vista general"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:160
+msgid "Please edit the file manually in the 'Advanced' section."
+msgstr "Edite el archivo manualmente en la sección 'Avanzado'."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:138
+msgid ""
+"Please install a 'libustream-ssl' library to download the current resolver "
+"list from 'github.com/dyne/dnscrypt-proxy'."
+msgstr ""
+"Instale una biblioteca 'libustream-ssl' para descargar la lista de "
+"resolución actual desde 'github.com/dyne/dnscrypt-proxy'."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:22
+msgid ""
+"Please install a resolver list to '/usr/share/dnscrypt-proxy/dnscrypt-"
+"resolvers.csv' to use this package."
+msgstr ""
+"Instale una lista de resolución en '/usr/share/dnscrypt-proxy/dnscrypt-"
+"resolvers.csv' para usar este paquete."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:259
+msgid ""
+"Please note: This may change the values for 'noresolv', 'resolvfile', "
+"'allservers' and the list 'server' settings."
+msgstr ""
+"Tenga en cuenta: Esto puede cambiar los valores de 'noresolv', 'resolvfile', "
+"'allservers' y la configuración de la lista 'servidor'."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:194
+msgid "Port"
+msgstr "Puerto"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:125
+msgid "Refresh List"
+msgstr "Actualizar lista"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:123
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:136
+msgid "Refresh Resolver List"
+msgstr "Actualizar lista de resolución"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:200
+msgid "Resolver (LOC/SEC/NOLOG)"
+msgstr "Resolver (LOC/SEC/NOLOG)"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua:17
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua:17
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua:17
+msgid "Save"
+msgstr "Guardar"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:216
+msgid "Specify a non-default Resolver List."
+msgstr "Especifique una lista de resolución no predeterminada."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:168
+msgid "Startup Trigger"
+msgstr "Disparador de inicio"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:159
+msgid "The config file '/etc/resolv-crypt.conf' already exist.<br />"
+msgstr "El archivo de configuración '/etc/resolv-crypt.conf' ya existe.<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:195
+msgid "The listening port for DNS queries."
+msgstr "El puerto de escucha para consultas DNS."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:190
+msgid ""
+"The local IPv4 or IPv6 address. The latter one should be specified within "
+"brackets, e.g. '[::1]'."
+msgstr ""
+"La dirección IPv4 o IPv6 local. Este último debe especificarse entre "
+"corchetes, por ejemplo. '[::1]'."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:230
+msgid ""
+"The value for this property is the blocklist type and path to the file, e."
+"g.'domains:/path/to/dbl.txt' or 'ips:/path/to/ipbl.txt'."
+msgstr ""
+"El valor de esta propiedad es el tipo de lista de bloqueo y la ruta al "
+"archivo, por ejemplo, 'domains:/path/to/dbl.txt' o 'ips: /path/to/ipbl.txt'."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua:21
+msgid ""
+"This form allows you to modify the content of the main DNSCrypt-Proxy "
+"configuration file (/etc/config/dnscrypt-proxy)."
+msgstr ""
+"Este formulario le permite modificar el contenido del archivo de "
+"configuración principal de DNSCrypt-Proxy (/etc/config/dnscrypt-proxy)."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua:21
+msgid ""
+"This form allows you to modify the content of the main Dnsmasq configuration "
+"file (/etc/config/dhcp)."
+msgstr ""
+"Este formulario le permite modificar el contenido del archivo de "
+"configuración principal de Dnsmasq (/etc/config/dhcp)."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua:21
+msgid ""
+"This form allows you to modify the content of the resolv-crypt configuration "
+"file (/etc/resolv-crypt.conf)."
+msgstr ""
+"Este formulario le permite modificar el contenido del archivo de "
+"configuración de resolv-crypt (/etc/resolv-crypt.conf)."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/view_reslist.htm:10
+msgid "This form shows the content of the current DNSCrypt Resolver List."
+msgstr ""
+"Este formulario muestra el contenido de la actual Lista de resolución de "
+"DNSCrypt."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/logread.htm:10
+msgid ""
+"This form shows the syslog output, pre-filtered for DNSCrypt-Proxy related "
+"messages only."
+msgstr ""
+"Esta forma muestra la salida de syslog, filtrada previamente solo para los "
+"mensajes relacionados con DNSCrypt-Proxy."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:222
+msgid ""
+"This option requires extra CPU cycles and is useless with most DNSCrypt "
+"server."
+msgstr ""
+"Esta opción requiere ciclos de CPU adicionales y es inútil con la mayoría de "
+"los servidores DNSCrypt."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:170
+msgid ""
+"To restrict the trigger, select only the relevant network interface. Usually "
+"the 'wan' interface should work for most users."
+msgstr ""
+"Para restringir el activador, seleccione solo la interfaz de red relevante. "
+"Por lo general, la interfaz 'wan' debería funcionar para la mayoría de los "
+"usuarios."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:257
+msgid "Transfer Options To Dnsmasq"
+msgstr "Opciones de transferencia a Dnsmasq"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:16
+msgid "View Logfile"
+msgstr "Ver archivo de registro"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:21
+msgid "View Resolver List"
+msgstr "Ver lista de resolución"
diff --git a/applications/luci-app-firewall/po/es/firewall.po b/applications/luci-app-firewall/po/es/firewall.po
index 8e7d1be3b8..67d93ac408 100644
--- a/applications/luci-app-firewall/po/es/firewall.po
+++ b/applications/luci-app-firewall/po/es/firewall.po
@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-03-30 17:00+0200\n"
-"PO-Revision-Date: 2019-03-01 17:36-0300\n"
+"PO-Revision-Date: 2019-03-27 14:22-0300\n"
"Last-Translator: José Vicente <josevteg@gmail.com>\n"
"Language: es\n"
"MIME-Version: 1.0\n"
@@ -438,7 +438,7 @@ msgstr "Nueva regla SNAT"
#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:37
#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:47
msgid "New forward rule"
-msgstr "Nueva regla de traspaso"
+msgstr "Nueva regla de reenvío"
#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:17
msgid "New input rule"
@@ -629,7 +629,7 @@ msgstr "Dirección MAC origen"
#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:194
msgid "Source NAT"
-msgstr "NAT origen"
+msgstr "Origen NAT"
#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:195
msgid ""
@@ -637,7 +637,7 @@ msgid ""
"control over the source IP used for outgoing traffic, for example to map "
"multiple WAN addresses to internal subnets."
msgstr ""
-"NAT origen es una forma específica de enmascaramiento que permite el control "
+"Origen NAT es una forma específica de enmascaramiento que permite el control "
"fino del origen IP que se usa en el tráfico de salida por ejemplo para "
"dirigir múltiples direcciones WAN a las subredes internas."
@@ -673,7 +673,7 @@ msgstr "Fecha de finalización (aaaa-mm-dd)"
#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:355
msgid "Stop Time (hh:mm:ss)"
-msgstr "Tiempo de parada (hh:mm:ss)"
+msgstr "Hora de finalización (hh:mm:ss)"
#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:338
msgid "Sunday"
@@ -841,7 +841,7 @@ msgstr "Zonas"
#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:33
#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:98
msgid "accept"
-msgstr "aceptar"
+msgstr "Aceptar"
#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:66
#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:78
@@ -886,7 +886,7 @@ msgstr "día"
#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:327
msgid "don't track"
-msgstr "no seguir"
+msgstr "No seguir"
#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:324
#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:81
@@ -921,7 +921,7 @@ msgstr "puertos"
#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:31
#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:96
msgid "reject"
-msgstr "rechazar"
+msgstr "Rechazar"
#: applications/luci-app-firewall/luasrc/tools/firewall.lua:183
msgid "second"
diff --git a/applications/luci-app-mwan3/po/es/mwan3.po b/applications/luci-app-mwan3/po/es/mwan3.po
new file mode 100644
index 0000000000..eae5ebc964
--- /dev/null
+++ b/applications/luci-app-mwan3/po/es/mwan3.po
@@ -0,0 +1,881 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.2.1\n"
+"Last-Translator: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Language: es\n"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:171
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:187
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:207
+msgid "%d hour"
+msgstr "%d hora"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:166
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:182
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:202
+msgid "%d minute"
+msgstr "%d minuto"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:167
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:168
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:169
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:170
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:183
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:184
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:185
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:186
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:203
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:204
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:205
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:206
+msgid "%d minutes"
+msgstr "%d minutos"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua:48
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:147
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:160
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:176
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:196
+msgid "%d second"
+msgstr "%d segundo"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua:49
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua:50
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua:51
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua:52
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:148
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:149
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:150
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:151
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:152
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:153
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:154
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:155
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:156
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:161
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:162
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:163
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:164
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:165
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:177
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:178
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:179
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:180
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:181
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:197
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:198
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:199
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:200
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:201
+msgid "%d seconds"
+msgstr "%d segundos"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua:58
+msgid "-- Please choose --"
+msgstr "-- Por favor elija --"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:59
+msgid ""
+"Acceptable values: 1-100. This many Tracking IP addresses must respond for "
+"the link to be deemed up"
+msgstr ""
+"Valores aceptables: 1-100. Esta cantidad de direcciones IP de seguimiento "
+"debe responder para que el enlace se considere activo."
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/memberconfig.lua:30
+msgid "Acceptable values: 1-1000. Defaults to 1 if not set"
+msgstr ""
+"Valores aceptables: 1-1000. El valor predeterminado es 1 si no se establece"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/memberconfig.lua:26
+msgid "Acceptable values: 1-256. Defaults to 1 if not set"
+msgstr ""
+"Valores aceptables: 1-256. El valor predeterminado es 1 si no se establece"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua:32
+msgid "Alert"
+msgstr "Alerta"
+
+#: applications/luci-app-mwan3/luasrc/controller/mwan3.lua:177
+msgid "All required IP rules for interface %s found"
+msgstr "Se encontraron todas las reglas de IP requeridas para la interfaz %s"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua:57
+msgid "Also scan this Routing table for connected networks"
+msgstr "También escanee esta tabla de enrutamiento para redes conectadas"
+
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_diagnostics.htm:73
+msgid "Check IP rules"
+msgstr "Comprobar reglas de IP"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:99
+msgid "Check link quality"
+msgstr "Comprobar calidad del enlace"
+
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_diagnostics.htm:74
+msgid "Check routing table"
+msgstr "Ver tabla de enrutamiento"
+
+#: applications/luci-app-mwan3/luasrc/view/mwan/overview_status_interface.htm:97
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_detail.htm:34
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_troubleshooting.htm:34
+msgid "Collecting data..."
+msgstr "Recolectando datos..."
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua:33
+msgid "Critical"
+msgstr "Crítico"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua:38
+msgid "Debug"
+msgstr "Depurar"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua:81
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua:29
+msgid "Destination address"
+msgstr "Dirección de destino"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua:87
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua:33
+msgid "Destination port"
+msgstr "Puerto de destino"
+
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_detail.htm:11
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_diagnostics.htm:11
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_interface.htm:11
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_troubleshooting.htm:11
+msgid "Detail"
+msgstr "Detalles"
+
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_detail.htm:12
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_diagnostics.htm:12
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_interface.htm:12
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_troubleshooting.htm:12
+msgid "Diagnostics"
+msgstr "Diagnósticos"
+
+#: applications/luci-app-mwan3/luasrc/view/mwan/overview_status_interface.htm:50
+msgid "Disabled"
+msgstr "Deshabilitado"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:224
+msgid ""
+"Downed interface will be deemed up after this many successful ping tests"
+msgstr ""
+"La interfaz inactiva se considerará activa después de tantas pruebas de ping "
+"exitosas"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua:31
+msgid "Emergency"
+msgstr "Emergencia"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua:160
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:22
+msgid "Enabled"
+msgstr "Habilitado"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua:64
+msgid ""
+"Enables firewall rule logging (global mwan3 logging must also be enabled)"
+msgstr ""
+"Habilita el registro de reglas de firewall (el registro global de mwan3 "
+"también debe estar habilitado)"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua:23
+msgid "Enables global firewall logging"
+msgstr "Habilita el registro de firewall global"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua:16
+msgid "Enter value in hex, starting with <code>0x</code>"
+msgstr "Ingrese el valor en hexadecimal, comenzando con <code>0x</code>"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua:34
+msgid "Error"
+msgstr "Error"
+
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_diagnostics.htm:81
+msgid "Execute"
+msgstr "Ejecutar"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:26
+msgid "Expect interface state on up event"
+msgstr "Esperar el estado de la interfaz en el evento"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:173
+msgid "Failure interval"
+msgstr "Intervalo de fracaso"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua:29
+msgid "Firewall loglevel"
+msgstr "Nivel de firewall"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua:15
+msgid "Firewall mask"
+msgstr "Mascara de Firewall"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:237
+msgid "Flush conntrack table"
+msgstr "Purgar mesa de conexión"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:238
+msgid "Flush global firewall conntrack table on interface events"
+msgstr ""
+"Vaciar la tabla de conexiones de firewall global en los eventos de la "
+"interfaz"
+
+#: applications/luci-app-mwan3/luasrc/controller/mwan3.lua:45
+msgid "Globals"
+msgstr "Globales"
+
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_diagnostics.htm:76
+msgid "Hotplug ifdown"
+msgstr "Hotplug ifdown"
+
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_diagnostics.htm:75
+msgid "Hotplug ifup"
+msgstr "Hotplug ifup"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua:45
+msgid "How often should rtmon update the interface routing table"
+msgstr ""
+"¿Con qué frecuencia debe rtmon actualizar la tabla de enrutamiento de la "
+"interfaz?"
+
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_detail.htm:29
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_diagnostics.htm:56
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_troubleshooting.htm:29
+msgid "INFO: MWAN not running"
+msgstr "INFO: MWAN no se está ejecutando"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua:56
+msgid "IPset"
+msgstr "IPset"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:33
+msgid "IPv4"
+msgstr "IPv4"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:34
+msgid "IPv6"
+msgstr "IPv6"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua:37
+msgid "Info"
+msgstr "Info"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:25
+msgid "Initial state"
+msgstr "Estado inicial"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua:150
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/member.lua:27
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/memberconfig.lua:18
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_detail.htm:10
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_diagnostics.htm:10
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_diagnostics.htm:62
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_interface.htm:10
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_troubleshooting.htm:10
+msgid "Interface"
+msgstr "Interfaz"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua:208
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:209
+msgid "Interface down"
+msgstr "Bajar interfaz"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua:219
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:223
+msgid "Interface up"
+msgstr "Levantar interfaz"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:210
+msgid "Interface will be deemed down after this many failed ping tests"
+msgstr ""
+"La interfaz se considerará inactiva después de tantas pruebas de ping "
+"fallidas"
+
+#: applications/luci-app-mwan3/luasrc/controller/mwan3.lua:48
+msgid "Interfaces"
+msgstr "Interfaces"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:31
+msgid "Internet Protocol"
+msgstr "Protocolo de Internet"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:189
+msgid "Keep failure interval"
+msgstr "Mantener el intervalo de falla"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:190
+msgid "Keep ping failure interval during failure state"
+msgstr "Mantener el intervalo de falla de ping durante el estado de falla"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua:75
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/policyconfig.lua:25
+msgid "Last resort"
+msgstr "Último recurso"
+
+#: applications/luci-app-mwan3/luasrc/controller/mwan3.lua:19
+#: applications/luci-app-mwan3/luasrc/controller/mwan3.lua:41
+msgid "Load Balancing"
+msgstr "Balanceo de carga"
+
+#: applications/luci-app-mwan3/luasrc/view/mwan/overview_status_interface.htm:96
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_detail.htm:33
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_diagnostics.htm:36
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_troubleshooting.htm:33
+msgid "Loading"
+msgstr "Cargando"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua:22
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua:63
+msgid "Logging"
+msgstr "Iniciar sesión"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua:28
+msgid "Loglevel"
+msgstr "Nivel de registro"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua:8
+msgid "MWAN - Globals"
+msgstr "MWAN - Globales"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua:139
+msgid "MWAN - Interfaces"
+msgstr "MWAN - Interfaces"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/member.lua:9
+msgid "MWAN - Members"
+msgstr "MWAN - Miembros"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/notify.lua:11
+msgid "MWAN - Notification"
+msgstr "MWAN - Notificación"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua:38
+msgid "MWAN - Policies"
+msgstr "MWAN - Políticas"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua:42
+msgid "MWAN - Rules"
+msgstr "MWAN - Reglas"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:15
+msgid "MWAN Interface Configuration - %s"
+msgstr "Configuración de la interfaz MWAN -%s"
+
+#: applications/luci-app-mwan3/luasrc/view/mwan/overview_status_interface.htm:94
+msgid "MWAN Interfaces"
+msgstr "Interfaces MWAN"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/memberconfig.lua:11
+msgid "MWAN Member Configuration - %s"
+msgstr "Configuración de miembros de MWAN -%s"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/policyconfig.lua:11
+msgid "MWAN Policy Configuration - %s"
+msgstr "Configuración de la política MWAN -%s"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua:15
+msgid "MWAN Rule Configuration - %s"
+msgstr "Configuración de la regla MWAN -%s"
+
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_detail.htm:27
+msgid "MWAN Status - Detail"
+msgstr "Estado de MWAN - Detalle"
+
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_diagnostics.htm:54
+msgid "MWAN Status - Diagnostics"
+msgstr "Estado de MWAN - Diagnóstico"
+
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_troubleshooting.htm:27
+msgid "MWAN Status - Troubleshooting"
+msgstr "Estado de MWAN - Resolución de problemas"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua:143
+msgid ""
+"MWAN supports up to 252 physical and/or logical interfaces<br />MWAN "
+"requires that all interfaces have a unique metric configured in /etc/config/"
+"network<br />Names must match the interface name found in /etc/config/"
+"network<br />Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br /"
+">Interfaces may not share the same name as configured members, policies or "
+"rules"
+msgstr ""
+"MWAN admite hasta 252 interfaces físicas y/o lógicas<br />MWAN requiere que "
+"todas las interfaces tengan una métrica única configurada en /etc/config/"
+"network<br />Los nombres deben coincidir con el nombre de la interfaz que se "
+"encuentra en / etc / config / network <br /> Los nombres pueden contener "
+"caracteres AZ, az, 0-9, _ y sin espacios<br />Las interfaces no pueden "
+"compartir el mismo nombre que los miembros configurados, políticas o reglas"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:87
+msgid "Max TTL"
+msgstr "Máx TTL"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:103
+msgid "Max packet latency [ms]"
+msgstr "Latencia máxima de paquetes [ms]"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:115
+msgid "Max packet loss [%]"
+msgstr "Pérdida máxima de paquetes [%]"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua:27
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua:34
+msgid ""
+"May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or "
+"as a portrange (eg \"1024:2048\") without quotes"
+msgstr ""
+"Puede ingresarse como uno o varios puertos (por ejemplo, \"22\" o "
+"\"80,443\") o como un puerto (por ejemplo, \"1024:2048\") sin comillas"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/member.lua:17
+msgid "Member"
+msgstr "Miembro"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/policyconfig.lua:18
+msgid "Member used"
+msgstr "Miembro utilizado"
+
+#: applications/luci-app-mwan3/luasrc/controller/mwan3.lua:51
+msgid "Members"
+msgstr "Miembros"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/member.lua:12
+msgid ""
+"Members are profiles attaching a metric and weight to an MWAN interface<br /"
+">Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />Members "
+"may not share the same name as configured interfaces, policies or rules"
+msgstr ""
+"Los miembros son perfiles que adjuntan una métrica y peso a una interfaz "
+"MWAN<br />Los nombres pueden contener los caracteres A-Z, a-z, 0-9, _ y sin "
+"espacios<br />Los miembros no pueden compartir el mismo nombre que las "
+"interfaces, políticas o reglas configuradas"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua:61
+msgid "Members assigned"
+msgstr "Miembros asignados"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua:230
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:245
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/member.lua:33
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/memberconfig.lua:25
+msgid "Metric"
+msgstr "Métrica"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:124
+msgid "Min packet latency [ms]"
+msgstr "Latencia mínima de paquetes [ms]"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:136
+msgid "Min packet loss [%]"
+msgstr "Pérdida mínima de paquetes [%]"
+
+#: applications/luci-app-mwan3/luasrc/controller/mwan3.lua:190
+msgid "Missing both IP rules for interface %s"
+msgstr "Faltan ambas reglas de IP para la interfaz %s"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua:57
+msgid ""
+"Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/"
+"youtube.com/youtube\")"
+msgstr ""
+"Nombre de la regla IPset. Requiere la regla de IPset en /etc/dnsmasq.conf "
+"(por ejemplo, \"ipset=/youtube.com/youtube\")"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua:166
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua:50
+msgid "No"
+msgstr "No"
+
+#: applications/luci-app-mwan3/luasrc/view/mwan/overview_status_interface.htm:76
+msgid "No MWAN interfaces found"
+msgstr "No se encontraron interfaces MWAN"
+
+#: applications/luci-app-mwan3/luasrc/controller/mwan3.lua:159
+msgid "No gateway for interface %s found."
+msgstr "No se ha encontrado ninguna puerta de enlace para la interfaz %s."
+
+#: applications/luci-app-mwan3/luasrc/controller/mwan3.lua:168
+msgid "No tracking Hosts for interface %s defined."
+msgstr "No se han definido Hosts de seguimiento para la interfaz %s."
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua:36
+msgid "Notice"
+msgstr "Nota"
+
+#: applications/luci-app-mwan3/luasrc/controller/mwan3.lua:60
+msgid "Notification"
+msgstr "Notificación"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:29
+#: applications/luci-app-mwan3/luasrc/view/mwan/overview_status_interface.htm:42
+msgid "Offline"
+msgstr "Fuera de línea"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:28
+#: applications/luci-app-mwan3/luasrc/view/mwan/overview_status_interface.htm:34
+msgid "Online"
+msgstr "En línea"
+
+#: applications/luci-app-mwan3/luasrc/controller/mwan3.lua:182
+#: applications/luci-app-mwan3/luasrc/controller/mwan3.lua:186
+msgid "Only one IP rules for interface %s found"
+msgstr "Solo se encontró una regla de IP para la interfaz %s"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:63
+msgid "Ping count"
+msgstr "Recuento de ping"
+
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_diagnostics.htm:71
+msgid "Ping default gateway"
+msgstr "Ping a puerta de enlace predeterminada"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua:192
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:158
+msgid "Ping interval"
+msgstr "Intervalo de ping"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:174
+msgid "Ping interval during failure detection"
+msgstr "Intervalo de ping durante la detección de fallos"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:194
+msgid "Ping interval during failure recovering"
+msgstr "Intervalo de ping durante la recuperación de fallos"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:71
+msgid "Ping size"
+msgstr "Tamaño de ping"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:145
+msgid "Ping timeout"
+msgstr "Tiempo de espera de ping"
+
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_diagnostics.htm:72
+msgid "Ping tracking IP"
+msgstr "Ping de seguimiento de IP"
+
+#: applications/luci-app-mwan3/luasrc/controller/mwan3.lua:54
+msgid "Policies"
+msgstr "Políticas"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua:42
+msgid ""
+"Policies are profiles grouping one or more members controlling how MWAN "
+"distributes traffic<br />Member interfaces with lower metrics are used "
+"first<br />Member interfaces with the same metric will be load-balanced<br /"
+">Load-balanced member interfaces distribute more traffic out those with "
+"higher weights<br />Names may contain characters A-Z, a-z, 0-9, _ and no "
+"spaces<br />Names must be 15 characters or less<br />Policies may not share "
+"the same name as configured interfaces, members or rules"
+msgstr ""
+"Las políticas son perfiles que agrupan a uno o más miembros que controlan la "
+"forma en que MWAN distribuye el tráfico<br />Las interfaces de los miembros "
+"con métricas más bajas se utilizan primero<br />Las interfaces de los "
+"miembros con la misma métrica tendrán carga equilibrada. más tráfico para "
+"aquellos con mayor peso<br />Los nombres pueden contener caracteres AZ, az, "
+"0-9, _ y sin espacios<br />Los nombres deben tener 15 caracteres o menos<br /"
+">Las políticas no pueden compartir el mismo nombre que interfaces "
+"configuradas, miembros o reglas"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua:51
+msgid "Policy"
+msgstr "Política"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua:99
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua:66
+msgid "Policy assigned"
+msgstr "Política asignada"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua:93
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua:36
+msgid "Protocol"
+msgstr "Protocolo"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:193
+msgid "Recovery interval"
+msgstr "Intervalo de recuperación"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua:59
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua:60
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua:61
+msgid "Routing table %d"
+msgstr "Tabla de enrutamiento %d"
+
+#: applications/luci-app-mwan3/luasrc/controller/mwan3.lua:196
+msgid "Routing table %s for interface %s found"
+msgstr "Tabla de enrutamiento %s para la interfaz %s encontrada"
+
+#: applications/luci-app-mwan3/luasrc/controller/mwan3.lua:200
+msgid "Routing table %s for interface %s not found"
+msgstr "No se encontró la tabla de enrutamiento %s para la interfaz %s"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua:56
+msgid "Routing table lookup"
+msgstr "Tabla de enrutamiento de búsqueda"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua:59
+msgid "Rule"
+msgstr "Regla"
+
+#: applications/luci-app-mwan3/luasrc/controller/mwan3.lua:57
+msgid "Rules"
+msgstr "Reglas"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua:47
+msgid ""
+"Rules specify which traffic will use a particular MWAN policy<br />Rules are "
+"based on IP address, port or protocol<br />Rules are matched from top to "
+"bottom<br />Rules below a matching rule are ignored<br />Traffic not "
+"matching any rule is routed using the main routing table<br />Traffic "
+"destined for known (other than default) networks is handled by the main "
+"routing table<br />Traffic matching a rule, but all WAN interfaces for that "
+"policy are down will be blackholed<br />Names may contain characters A-Z, a-"
+"z, 0-9, _ and no spaces<br />Rules may not share the same name as configured "
+"interfaces, members or policies"
+msgstr ""
+"Las reglas especifican qué tráfico utilizará una política MWAN "
+"particular<br />Las reglas se basan en la dirección IP, el puerto o el "
+"protocolo<br />Las reglas coinciden de arriba a abajo<br />Las reglas que "
+"están debajo de una regla coincidente se ignoran<br />El tráfico que no "
+"coincide con ninguna regla se enruta mediante la tabla de enrutamiento "
+"principal<br />El tráfico destinado a redes conocidas (distintas de las "
+"predeterminadas) se maneja mediante la tabla de enrutamiento principal<br /"
+">El tráfico coincide con una regla, pero todas las interfaces WAN para esa "
+"política son down se quedará en negrita<br />Los nombres pueden contener "
+"caracteres AZ, az, 0-9, _ y sin espacios<br />Las reglas no pueden compartir "
+"el mismo nombre que las interfaces, miembros o políticas configuradas"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua:53
+msgid "Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set"
+msgstr ""
+"Segundos. Valores aceptables: 1-1000000. El valor predeterminado es 600 si "
+"no se establece"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua:69
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua:22
+msgid "Source address"
+msgstr "Dirección de origen"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua:75
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua:26
+msgid "Source port"
+msgstr "Puerto de origen"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua:46
+msgid "Sticky"
+msgstr "Pegajoso"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua:52
+msgid "Sticky timeout"
+msgstr "Tiempo de espera pegajoso"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua:23
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua:30
+msgid "Supports CIDR notation (eg \"192.168.100.0/24\") without quotes"
+msgstr ""
+"Admite la notación CIDR (por ejemplo, \"192.168.100.0/24\") sin comillas"
+
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_diagnostics.htm:69
+msgid "Task"
+msgstr "Tarea"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua:15
+msgid "There are currently %d of %d supported interfaces configured"
+msgstr "Actualmente hay %d de %d interfaces compatibles configuradas"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:246
+msgid ""
+"This displays the metric assigned to this interface in /etc/config/network"
+msgstr ""
+"Esto muestra la métrica asignada a esta interfaz en /etc/config/network"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:37
+msgid ""
+"This hostname or IP address will be pinged to determine if the link is up or "
+"down. Leave blank to assume interface is always online"
+msgstr ""
+"Se hará un ping a este nombre de host o dirección IP para determinar si el "
+"enlace está activo o inactivo. Deje en blanco para asumir que la interfaz "
+"está siempre en línea"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/notify.lua:14
+msgid ""
+"This section allows you to modify the content of \"/etc/mwan3.user\".<br /"
+">The file is also preserved during sysupgrade.<br /><br />Notes:<br />This "
+"file is interpreted as a shell script.<br />The first line of the script "
+"must be &#34;#!/bin/sh&#34; without quotes.<br />Lines beginning with # are "
+"comments and are not executed.<br />Put your custom mwan3 action here, they "
+"will<br />be executed with each netifd hotplug interface event<br />on "
+"interfaces for which mwan3 is enabled.<br /><br />There are three main "
+"environment variables that are passed to this script.<br /><br />$ACTION "
+"<br />* \"ifup\" Is called by netifd and mwan3track <br />* \"ifdown\" Is "
+"called by netifd and mwan3track <br />* \"connected\" Is only called by "
+"mwan3track if tracking was successful <br />* \"disconnected\" Is only "
+"called by mwan3track if tracking has failed <br />$INTERFACE Name of the "
+"interface which went up or down (e.g. \"wan\" or \"wwan\")<br />$DEVICE "
+"Physical device name which interface went up or down (e.g. \"eth0\" or "
+"\"wwan0\")<br /><br />"
+msgstr ""
+"Esta sección le permite modificar el contenido de \"/etc/mwan3.user\".<br /"
+">El archivo también se conserva durante sysupgrade.<br /><br />Notas:<br /"
+">Este archivo se interpreta como un shell script.<br />La primera línea del "
+"script debe ser &#34;#!/bin/sh&#34; sin comillas.<br />Las líneas que "
+"comienzan con # son comentarios y no se ejecutan.<br />Ponga su acción mwan3 "
+"personalizada aquí, se ejecutarán<br />con cada evento de la interfaz "
+"hotplug de Netifd<br />en las interfaces para las que mwan3 está habilitado."
+"<br /><br />Hay tres variables de entorno principales que se pasan a este "
+"script.<br /><br />$ACTION <br />* \"ifup\" es llamado por netifd y "
+"mwan3track <br />* \"ifdown\" es llamado por netifd y mwan3track <br />* "
+"\"conectado\" Sólo es llamado por mwan3track si el seguimiento fue exitoso "
+"<br />* \"desconectado\" Sólo es llamado por mwan3track si el seguimiento ha "
+"fallado <br />$INTERFAZ Nombre de la interfaz que subió o bajó (por ejemplo, "
+"\"wan\" o \"wwan\")<br />$DISPOSITIVO Nombre del dispositivo físico cuya "
+"interfaz subió o bajó (por ejemplo, \"eth0\" o \"w wan0 \")<br /><br />"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:36
+msgid "Tracking hostname or IP address"
+msgstr "Seguimiento de nombre de host o dirección IP"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua:170
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:40
+msgid "Tracking method"
+msgstr "Método de seguimiento"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua:181
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:58
+msgid "Tracking reliability"
+msgstr "Fiabilidad de seguimiento"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua:47
+msgid ""
+"Traffic from the same source IP address that previously matched this rule "
+"within the sticky timeout period will use the same WAN interface"
+msgstr ""
+"El tráfico de la misma dirección IP de origen que coincidía anteriormente "
+"con esta regla dentro del período de tiempo de espera fijo utilizará la "
+"misma interfaz WAN"
+
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_detail.htm:13
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_diagnostics.htm:13
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_interface.htm:13
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_troubleshooting.htm:13
+msgid "Troubleshooting"
+msgstr "Solución de problemas"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua:44
+msgid "Update interval"
+msgstr "Intervalo de actualización"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua:37
+msgid "View the content of /etc/protocols for protocol description"
+msgstr "Ver el contenido de /etc/protocol para la descripción del protocolo."
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua:19
+msgid "WARNING: %d interfaces are configured exceeding the maximum of %d!"
+msgstr ""
+"ADVERTENCIA: %d interfaces están configuradas excediendo el máximo de %d!"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua:26
+msgid "WARNING: Interface %s are not found in /etc/config/network"
+msgstr "ADVERTENCIA: La interfaz %s no se encuentra en /etc/config/network"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua:45
+msgid "WARNING: Interface %s has a duplicate metric %s configured"
+msgstr "ADVERTENCIA: La interfaz %s tiene una métrica duplicada %s configurada"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua:38
+msgid ""
+"WARNING: Interface %s has a higher reliability requirement than tracking "
+"hosts (%d)"
+msgstr ""
+"ADVERTENCIA: La interfaz %s tiene un requisito de confiabilidad más alto que "
+"los hosts de seguimiento (%d)"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua:32
+msgid "WARNING: Interface %s has no default route in the main routing table"
+msgstr ""
+"ADVERTENCIA: La interfaz %s no tiene una ruta predeterminada en la tabla de "
+"enrutamiento principal"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua:30
+msgid "WARNING: Policy %s has exceeding the maximum name of 15 characters"
+msgstr ""
+"ADVERTENCIA: La política %s excede el número máximo de 15 caracteres en el "
+"nombre"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua:34
+msgid ""
+"WARNING: Rule %s have a port configured with no or improper protocol "
+"specified!"
+msgstr ""
+"ADVERTENCIA: ¡La regla %s tiene un puerto configurado sin protocolo o con "
+"protocolo incorrecto especificado!"
+
+#: applications/luci-app-mwan3/luasrc/view/mwan/status_diagnostics.htm:37
+msgid "Waiting for command to complete..."
+msgstr "Esperando que el comando se complete..."
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua:35
+msgid "Warning"
+msgstr "Advertencia"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/member.lua:39
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/memberconfig.lua:29
+msgid "Weight"
+msgstr "Peso"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/policyconfig.lua:26
+msgid ""
+"When all policy members are offline use this behavior for matched traffic"
+msgstr ""
+"Cuando todos los miembros de la política están fuera de línea, utilice este "
+"comportamiento para el tráfico coincidente"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua:164
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua:49
+msgid "Yes"
+msgstr "Si"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:243
+msgid "always"
+msgstr "siempre"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua:80
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/policyconfig.lua:29
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua:73
+msgid "blackhole (drop)"
+msgstr "agujero negro (caída)"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua:82
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/policyconfig.lua:30
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua:74
+msgid "default (use main routing table)"
+msgstr "predeterminado (usar tabla de enrutamiento principal)"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:241
+msgid "ifdown"
+msgstr "ifdown"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:240
+msgid "ifup"
+msgstr "ifup"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua:242
+msgid "never"
+msgstr "nunca"
+
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua:84
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/policyconfig.lua:28
+#: applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua:72
+msgid "unreachable (reject)"
+msgstr "inalcanzable (rechazar)"
diff --git a/applications/luci-app-nft-qos/po/es/nft-qos.po b/applications/luci-app-nft-qos/po/es/nft-qos.po
new file mode 100644
index 0000000000..2d729e001e
--- /dev/null
+++ b/applications/luci-app-nft-qos/po/es/nft-qos.po
@@ -0,0 +1,241 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.2.1\n"
+"Last-Translator: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Language: es\n"
+
+#: applications/luci-app-nft-qos/luasrc/view/nft-qos/rate.htm:136
+#: applications/luci-app-nft-qos/luasrc/view/nft-qos/rate.htm:155
+msgid "Bytes Total"
+msgstr "Total de bytes"
+
+#: applications/luci-app-nft-qos/luasrc/view/nft-qos/rate.htm:141
+#: applications/luci-app-nft-qos/luasrc/view/nft-qos/rate.htm:160
+msgid "Collecting data..."
+msgstr "Recolectando datos..."
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:224
+msgid "Comment"
+msgstr "Comentario"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:48
+msgid "Default Download Rate"
+msgstr "Velocidad de descarga predeterminada"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:53
+msgid "Default Download Unit"
+msgstr "Unidad de descarga predeterminada"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:107
+msgid "Default Network Interface"
+msgstr "Interfaz de red predeterminada"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:60
+msgid "Default Upload Rate"
+msgstr "Velocidad de carga predeterminada"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:65
+msgid "Default Upload Unit"
+msgstr "Unidad de carga predeterminada"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:53
+msgid "Default unit for download rate"
+msgstr "Unidad predeterminada para la velocidad de descarga"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:65
+msgid "Default unit for upload rate"
+msgstr "Unidad predeterminada para la velocidad de carga"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:75
+msgid "Default value for download bandwidth"
+msgstr "Valor predeterminado para el ancho de banda de descarga"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:48
+msgid "Default value for download rate"
+msgstr "Valor predeterminado para la velocidad de descarga"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:80
+msgid "Default value for upload bandwidth"
+msgstr "Valor predeterminado para el ancho de banda de carga"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:60
+msgid "Default value for upload rate"
+msgstr "Valor predeterminado para la velocidad de carga"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:75
+msgid "Download Bandwidth (Mbps)"
+msgstr "Ancho de banda de descarga (Mbps)"
+
+#: applications/luci-app-nft-qos/luasrc/view/nft-qos/rate.htm:135
+msgid "Download Rate"
+msgstr "Velocidad de descarga"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:38
+msgid "Enable Limit Rate Feature"
+msgstr "Habilitar función de límite de velocidad"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:103
+msgid "Enable Traffic Priority"
+msgstr "Habilitar prioridad de tráfico"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:103
+msgid "Enable this feature"
+msgstr "Habilitar esta característica"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:121
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:158
+msgid "Hostname"
+msgstr "Nombre de host"
+
+#: applications/luci-app-nft-qos/luasrc/view/nft-qos/rate.htm:134
+#: applications/luci-app-nft-qos/luasrc/view/nft-qos/rate.htm:153
+msgid "IP Address"
+msgstr "Dirección IP"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:126
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:163
+msgid "IP Address(V4 / V6)"
+msgstr "Dirección IP (v4/v6)"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:128
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:165
+msgid "IP Address(V4 Only)"
+msgstr "Dirección IP (sólo v4)"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:38
+msgid "Limit Enable"
+msgstr "Habilitar límite"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:42
+msgid "Limit Type"
+msgstr "Tipo de límite"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:135
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:172
+msgid "MAC (optional)"
+msgstr "MAC (opcional)"
+
+#: applications/luci-app-nft-qos/luasrc/view/nft-qos/rate.htm:48
+msgid "MB"
+msgstr "MB"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:28
+msgid "NFT-QoS Settings"
+msgstr "Configuración de NFT-QoS"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:107
+msgid "Network Interface for Traffic Shaping, e.g. br-lan, eth0.1, eth0, etc"
+msgstr "Interfaz de red para configuración de tráfico, por ejemplo, br-lan, eth0.1, eth0, etc."
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:85
+msgid "Network to be apply, e.g. 192.168.1.0/24, 10.2.0.0/16, etc"
+msgstr "Red a aplicar, por ejemplo. 192.168.1.0/24, 10.2.0.0/16, etc."
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:91
+msgid "Network to be apply, e.g. AAAA::BBBB/64, CCCC::1/128, etc"
+msgstr "Red a aplicar, por ejemplo. AAAA::BBBB/64, CCCC::1/128, etc."
+
+#: applications/luci-app-nft-qos/luasrc/view/nft-qos/rate.htm:65
+msgid "No information available"
+msgstr "No hay información disponible"
+
+#: applications/luci-app-nft-qos/luasrc/view/nft-qos/rate.htm:137
+#: applications/luci-app-nft-qos/luasrc/view/nft-qos/rate.htm:156
+msgid "Packets Total"
+msgstr "Paquetes totales"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:207
+msgid "Priority"
+msgstr "Prioridad"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:199
+msgid "Protocol"
+msgstr "Protocolo"
+
+#: applications/luci-app-nft-qos/luasrc/controller/nft-qos.lua:16
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:23
+msgid "Qos over Nftables"
+msgstr "Qos sobre Nftables"
+
+#: applications/luci-app-nft-qos/luasrc/controller/nft-qos.lua:12
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:139
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:176
+msgid "Rate"
+msgstr "Velocidad"
+
+#: applications/luci-app-nft-qos/luasrc/view/nft-qos/rate.htm:130
+msgid "Realtime Download Rate"
+msgstr "Velocidad de descarga en tiempo real"
+
+#: applications/luci-app-nft-qos/luasrc/view/nft-qos/rate.htm:125
+msgid "Realtime Rate"
+msgstr "Velocidad en tiempo real"
+
+#: applications/luci-app-nft-qos/luasrc/view/nft-qos/rate.htm:149
+msgid "Realtime Upload Rate"
+msgstr "Velocidad de carga en tiempo real"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:221
+msgid "Service"
+msgstr "Servicio"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:116
+msgid "Static QoS-Download Rate"
+msgstr "Velocidad de descarga de QoS estática"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:153
+msgid "Static QoS-Upload Rate"
+msgstr "Velocidad de carga de QoS estática"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:85
+msgid "Target Network (IPv4/MASK)"
+msgstr "Red de destino (IPv4 / MASK)"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:91
+msgid "Target Network6 (IPv6/MASK)"
+msgstr "Red de destino 6 (IPv6/MÁSCARA)"
+
+#: applications/luci-app-nft-qos/luasrc/view/nft-qos/rate.htm:127
+msgid "This page gives an overview over currently download/upload rate."
+msgstr "Esta página ofrece una vista general sobre la velocidad de descarga/carga actual."
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:194
+msgid "Traffic Priority Settings"
+msgstr "Ajustes de prioridad de tráfico"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:42
+msgid "Type of Limit Rate"
+msgstr "Tipo de límite de velocidad"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:144
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:181
+msgid "Unit"
+msgstr "Unidad"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:80
+msgid "Upload Bandwidth (Mbps)"
+msgstr "Ancho de banda de carga (Mbps)"
+
+#: applications/luci-app-nft-qos/luasrc/view/nft-qos/rate.htm:154
+msgid "Upload Rate"
+msgstr "Velocidad de carga"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:96
+msgid "White List for Limit Rate"
+msgstr "Lista blanca para el límite de velocidad"
+
+#: applications/luci-app-nft-qos/luasrc/model/cbi/nft-qos/nft-qos.lua:221
+msgid "e.g. https, 23, (separator is comma)"
+msgstr "p.ej. https, 23, (el separador es una coma)"
+
+#: applications/luci-app-nft-qos/luasrc/view/nft-qos/rate.htm:44
+msgid "kB"
+msgstr "kB"
diff --git a/applications/luci-app-noddos/po/es/noddos.po b/applications/luci-app-noddos/po/es/noddos.po
new file mode 100644
index 0000000000..8349548335
--- /dev/null
+++ b/applications/luci-app-noddos/po/es/noddos.po
@@ -0,0 +1,143 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.2.1\n"
+"Last-Translator: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Language: es\n"
+
+#: applications/luci-app-noddos/luasrc/view/noddos/clients.htm:48
+msgid "Class"
+msgstr "Clase"
+
+#: applications/luci-app-noddos/luasrc/model/cbi/noddos.lua:5
+msgid "Client Firewall"
+msgstr "Firewall del cliente"
+
+#: applications/luci-app-noddos/luasrc/view/noddos/clients.htm:35
+msgid "Clients"
+msgstr "Clientes"
+
+#: applications/luci-app-noddos/luasrc/view/noddos/clients.htm:83
+msgid "DhcpHostname"
+msgstr "Nombre de host de Dhcp"
+
+#: applications/luci-app-noddos/luasrc/view/noddos/clients.htm:82
+msgid "DhcpVendor"
+msgstr "Proveedor de Dhcp"
+
+#: applications/luci-app-noddos/luasrc/model/cbi/noddos.lua:25
+msgid "Don't monitor these IPv4 addresses"
+msgstr "No monitoree estas direcciones IPv4"
+
+#: applications/luci-app-noddos/luasrc/model/cbi/noddos.lua:33
+msgid "Don't monitor these IPv6 addresses"
+msgstr "No monitoree estas direcciones IPv6"
+
+#: applications/luci-app-noddos/luasrc/model/cbi/noddos.lua:40
+msgid "Don't monitor these MAC addresses"
+msgstr "No monitoree estas direcciones MAC"
+
+#: applications/luci-app-noddos/luasrc/model/cbi/noddos.lua:24
+msgid "Excluded IPv4 addresses"
+msgstr "Direcciones IPv4 excluidas"
+
+#: applications/luci-app-noddos/luasrc/model/cbi/noddos.lua:32
+msgid "Excluded IPv6 addresses"
+msgstr "Direcciones IPv6 excluidas"
+
+#: applications/luci-app-noddos/luasrc/model/cbi/noddos.lua:39
+msgid "Excluded MAC addresses"
+msgstr "Direcciones MAC excluidas"
+
+#: applications/luci-app-noddos/luasrc/view/noddos/clients.htm:43
+#: applications/luci-app-noddos/luasrc/view/noddos/clients.htm:77
+msgid "Hostname"
+msgstr "Nombre de host"
+
+#: applications/luci-app-noddos/luasrc/view/noddos/clients.htm:44
+#: applications/luci-app-noddos/luasrc/view/noddos/clients.htm:78
+msgid "IPv4"
+msgstr "IPv4"
+
+#: applications/luci-app-noddos/luasrc/view/noddos/clients.htm:45
+#: applications/luci-app-noddos/luasrc/view/noddos/clients.htm:79
+msgid "MAC"
+msgstr "MAC"
+
+#: applications/luci-app-noddos/luasrc/view/noddos/clients.htm:46
+#: applications/luci-app-noddos/luasrc/view/noddos/clients.htm:80
+msgid "Manufacturer"
+msgstr "Fabricante"
+
+#: applications/luci-app-noddos/luasrc/view/noddos/clients.htm:47
+#: applications/luci-app-noddos/luasrc/view/noddos/clients.htm:81
+msgid "Model"
+msgstr "Modelo"
+
+#: applications/luci-app-noddos/luasrc/controller/noddos.lua:8
+msgid "Noddos Client Tracking"
+msgstr "Seguimiento de clientes Noddos"
+
+#: applications/luci-app-noddos/luasrc/controller/noddos.lua:7
+msgid "Noddos Clients"
+msgstr "Clientes Noddos"
+
+#: applications/luci-app-noddos/luasrc/model/cbi/noddos.lua:6
+msgid ""
+"Noddos controls traffic from the clients on your network to the Internet. "
+"This helps protect your network, the bandwidth on your Internet connection "
+"and the Internet"
+msgstr ""
+"Noddos controla el tráfico de los clientes en su red a Internet. Esto ayuda "
+"a proteger su red, el ancho de banda en su conexión a Internet e Internet."
+
+#: applications/luci-app-noddos/luasrc/model/cbi/noddos.lua:15
+msgid "Private networks"
+msgstr "Redes privadas"
+
+#: applications/luci-app-noddos/luasrc/view/noddos/clients.htm:39
+msgid "Recognized Clients"
+msgstr "Clientes reconocidos"
+
+#: applications/luci-app-noddos/luasrc/model/cbi/noddos.lua:16
+msgid ""
+"Report traffic to private networks (10/8, 172.16/12, 192.168/16, "
+"fd75:6b5d:352c:ed05::/64)"
+msgstr ""
+"Informe de tráfico a redes privadas (10/8, 172.16/12, 192.168/16, "
+"fd75:6b5d:352c:ed05::/64)"
+
+#: applications/luci-app-noddos/luasrc/model/cbi/noddos.lua:10
+msgid "Server Settings"
+msgstr "Configuración del servidor"
+
+#: applications/luci-app-noddos/luasrc/view/noddos/clients.htm:36
+msgid ""
+"The following clients have been discovered on the network. The last "
+"discovery was completed at"
+msgstr ""
+"Los siguientes clientes han sido descubiertos en la red. El último "
+"descubrimiento se completó en"
+
+#: applications/luci-app-noddos/luasrc/view/noddos/clients.htm:73
+msgid "Unrecognized Clients"
+msgstr "Clientes no reconocidos"
+
+#: applications/luci-app-noddos/luasrc/model/cbi/noddos.lua:19
+msgid "Upload anonimized traffic stats"
+msgstr "Subir estadísticas de tráfico anonimizadas"
+
+#: applications/luci-app-noddos/luasrc/model/cbi/noddos.lua:20
+msgid ""
+"Uploading your statistics helps improving device recognition and discovering "
+"hacked devices & botnets"
+msgstr ""
+"Cargar sus estadísticas ayuda a mejorar el reconocimiento de dispositivos y "
+"descubrir dispositivos botnets pirateados"
diff --git a/applications/luci-app-p910nd/po/es/p910nd.po b/applications/luci-app-p910nd/po/es/p910nd.po
index 6b3518f9e8..d53a91a3b9 100644
--- a/applications/luci-app-p910nd/po/es/p910nd.po
+++ b/applications/luci-app-p910nd/po/es/p910nd.po
@@ -1,17 +1,17 @@
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-06-10 03:41+0200\n"
-"PO-Revision-Date: 2014-06-15 09:10+0200\n"
+"PO-Revision-Date: 2019-04-02 00:05-0300\n"
"Last-Translator: José Vicente <josevteg@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Poedit 2.2.1\n"
+"Language-Team: \n"
#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:47
msgid "Bidirectional mode"
@@ -43,7 +43,7 @@ msgstr "Configuración"
#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
msgid "Specifies the interface to listen on."
-msgstr "Especifica el interfaz en el que se escucha."
+msgstr "Especifica la interfaz en la que se escucha."
#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
msgid "TCP listener port."
@@ -51,7 +51,7 @@ msgstr "Puerto de escucha TCP."
#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:18
msgid "enable"
-msgstr "activar"
+msgstr "habilitar"
#: applications/luci-app-p910nd/luasrc/controller/p910nd.lua:13
#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:9
diff --git a/applications/luci-app-pagekitec/po/es/pagekitec.po b/applications/luci-app-pagekitec/po/es/pagekitec.po
new file mode 100644
index 0000000000..862ab5eda6
--- /dev/null
+++ b/applications/luci-app-pagekitec/po/es/pagekitec.po
@@ -0,0 +1,73 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.2.1\n"
+"Last-Translator: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Language: es\n"
+
+#: applications/luci-app-pagekitec/luasrc/model/cbi/pagekitec.lua:2
+msgid ""
+"<p/>Note: you need a working PageKite account, or at least, your own running "
+"front end for this form to work. Visit <a href=\"https://pagekite.net/home/"
+"\">your account</a> to set up a name for your router and get a secret key "
+"for the connection. <p/><em>Note: this web configurator only supports some "
+"very very basic uses of pagekite.</em>"
+msgstr ""
+"<p />Nota: necesita una cuenta de PageKite que funcione, o al menos, su "
+"propio front end para que este formulario funcione. Visite <a href=\"https://"
+"pagekite.net/home/\">su cuenta</a> para configurar un nombre para su "
+"enrutador y obtener una clave secreta para la conexión. <p/> <em> Nota: este "
+"configurador web solo admite algunos usos muy básicos de pagekite.</em>"
+
+#: applications/luci-app-pagekitec/luasrc/model/cbi/pagekitec.lua:20
+msgid "Basic HTTP"
+msgstr "HTTP básico"
+
+#: applications/luci-app-pagekitec/luasrc/model/cbi/pagekitec.lua:23
+msgid "Basic SSH"
+msgstr "SSH básico"
+
+#: applications/luci-app-pagekitec/luasrc/model/cbi/pagekitec.lua:21
+msgid ""
+"Enable a tunnel to the local HTTP server (in most cases, this admin site)"
+msgstr ""
+"Habilitar un túnel al servidor HTTP local (en la mayoría de los casos, este "
+"sitio de administración)"
+
+#: applications/luci-app-pagekitec/luasrc/model/cbi/pagekitec.lua:24
+msgid "Enable a tunnel to the local SSH server"
+msgstr "Habilitar un túnel al servidor SSH local"
+
+#: applications/luci-app-pagekitec/luasrc/model/cbi/pagekitec.lua:13
+msgid "Kite Name"
+msgstr "Nombre de Kite"
+
+#: applications/luci-app-pagekitec/luasrc/model/cbi/pagekitec.lua:14
+msgid "Kite Secret"
+msgstr "Kite secreto"
+
+#: applications/luci-app-pagekitec/luasrc/controller/pagekitec.lua:7
+#: applications/luci-app-pagekitec/luasrc/model/cbi/pagekitec.lua:1
+#: applications/luci-app-pagekitec/luasrc/model/cbi/pagekitec.lua:10
+msgid "PageKite"
+msgstr "PageKite"
+
+#: applications/luci-app-pagekitec/luasrc/model/cbi/pagekitec.lua:16
+msgid "Static Setup"
+msgstr "Configuración estática"
+
+#: applications/luci-app-pagekitec/luasrc/model/cbi/pagekitec.lua:17
+msgid ""
+"Static setup, disable FE failover and DDNS updates, set this if you are "
+"running your own frontend without a pagekite.me account"
+msgstr ""
+"Configuración estática, deshabilitar la conmutación por error FE y "
+"actualizaciones de DDNS, configúralo si estás ejecutando tu propia interfaz "
+"sin una cuenta de pagekite.me"
diff --git a/applications/luci-app-simple-adblock/po/ja/simple-adblock.po b/applications/luci-app-simple-adblock/po/ja/simple-adblock.po
index e5eea47615..5b46eb9332 100644
--- a/applications/luci-app-simple-adblock/po/ja/simple-adblock.po
+++ b/applications/luci-app-simple-adblock/po/ja/simple-adblock.po
@@ -7,18 +7,18 @@ msgstr ""
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.8.12\n"
+"X-Generator: Poedit 2.2.1\n"
"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"Language: ja\n"
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:100
msgid "Advanced Configuration"
-msgstr ""
+msgstr "詳細設定"
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:69
msgid "Basic Configuration"
-msgstr ""
+msgstr "基本設定"
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:134
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua:60
@@ -37,7 +37,7 @@ msgstr "hosts ブラックリストのURL"
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:67
msgid "Configuration"
-msgstr ""
+msgstr "設定"
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:71
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua:14
@@ -46,28 +46,28 @@ msgstr "システム ログとコンソール出力の冗長性を設定しま
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:102
msgid "Delay (in seconds) for on-boot start"
-msgstr ""
+msgstr "ブート時遅延実行(秒)"
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:111
msgid "Disable Debugging"
-msgstr ""
+msgstr "デバッグ無効"
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:106
msgid "Download time-out (in seconds)"
-msgstr ""
+msgstr "ダウンロード タイムアウト(秒)"
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:110
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:112
msgid "Enable Debugging"
-msgstr ""
+msgstr "デバッグ有効"
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:26
msgid "Enable/Start"
-msgstr ""
+msgstr "有効化/開始"
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:110
msgid "Enables debug output to /tmp/simple-adblock.log"
-msgstr ""
+msgstr "/tmp/simple-adblock.log へのデバッグ出力を有効にします。"
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:78
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua:21
@@ -83,8 +83,8 @@ msgstr "全ローカル デバイスにルーター DNSサーバーの使用を
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua:21
msgid "Forces Router DNS use on local devices, also known as DNS Hijacking"
msgstr ""
-"ローカル デバイスに対し、ルーター上のDNSサーバーの使用を強制します。これは、"
-"DNS ハイジャックとしても知られています。"
+"ローカル デバイスに対し、ルーター上のDNSサーバーの使用を強制します。これ"
+"は、DNS ハイジャックとしても知られています。"
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:124
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua:50
@@ -118,30 +118,30 @@ msgstr "右の設定で既に使用されていないLEDを選択します"
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:43
msgid "Reload"
-msgstr ""
+msgstr "リロード"
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:102
msgid "Run service after set delay on boot"
-msgstr ""
+msgstr "システムのブート時に、設定された遅延でサービスを開始します。"
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:6
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:19
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:29
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:37
msgid "Service Status"
-msgstr ""
+msgstr "サービス ステータス"
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:25
msgid "Service is disabled/stopped"
-msgstr ""
+msgstr "サービスは無効/停止中"
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:34
msgid "Service is enabled/started"
-msgstr ""
+msgstr "サービスは有効/実行中"
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:42
msgid "Service started with error"
-msgstr ""
+msgstr "サービス開始時にエラーが発生"
#: applications/luci-app-simple-adblock/luasrc/controller/simple-adblock.lua:6
msgid "Simple AdBlock"
@@ -159,15 +159,16 @@ msgstr "軽量出力"
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua:5
msgid "Start Simple Adblock service"
-msgstr ""
+msgstr "Simple Adblock サービスを開始"
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:106
msgid "Stop the download if it is stalled for set number of seconds"
msgstr ""
+"問題等が発生して指定された秒数を超過した場合、ダウンロードを停止します。"
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:35
msgid "Stop/Disable"
-msgstr ""
+msgstr "停止/無効化"
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:72
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua:15
@@ -192,7 +193,8 @@ msgstr "ホワイトリストに登録するドメインのリストのURLです
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:139
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua:65
msgid "URLs to lists of hosts to be blacklisted"
-msgstr "ブラックリストに登録するドメインが列挙された、hostsファイルのURLです。"
+msgstr ""
+"ブラックリストに登録するドメインが列挙された、hostsファイルのURLです。"
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:74
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua:17
@@ -201,7 +203,7 @@ msgstr "詳細出力"
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:117
msgid "Whitelist and Blocklist Management"
-msgstr ""
+msgstr "ホワイトリストとブラックリストの管理"
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:129
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua:55
@@ -217,6 +219,3 @@ msgstr "ホワイトリスト ドメイン"
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua:37
msgid "none"
msgstr "なし"
-
-#~ msgid "Enable/start service"
-#~ msgstr "サービスの有効化/開始"
diff --git a/applications/luci-app-unbound/po/es/unbound.po b/applications/luci-app-unbound/po/es/unbound.po
new file mode 100644
index 0000000000..5ae545b609
--- /dev/null
+++ b/applications/luci-app-unbound/po/es/unbound.po
@@ -0,0 +1,775 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.2.1\n"
+"Last-Translator: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Language: es\n"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zones.lua:96
+msgid "(root)"
+msgstr "(root)"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zones.lua:201
+msgid ", and <var>%s</var> entries"
+msgstr "y <var>%s</var> entradas"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zones.lua:172
+msgid ", and try <var>%s</var>"
+msgstr ", y prueba <var>%s</var>"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zones.lua:78
+msgid "AXFR"
+msgstr "AXFR"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:59
+msgid "Accept queries only from local subnets"
+msgstr "Aceptar consultas solo de subredes locales"
+
+#: applications/luci-app-unbound/luasrc/controller/unbound.lua:214
+msgid "Adblock domain list is too large to display in LuCI."
+msgstr ""
+"La lista de dominios de Adblock es demasiado grande para mostrarla en LuCI."
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:38
+msgid "Advanced"
+msgstr "Avanzado"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:237
+msgid "Aggressive"
+msgstr "Agresivo"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zone-details.lua:34
+msgid "Allow open recursion when record not in zone"
+msgstr "Permitir recursión abierta cuando el registro no está en la zona"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zone-details.lua:38
+msgid "Authoritative (zone file)"
+msgstr "Autoritativo (archivo de zona)"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:33
+msgid "Basic"
+msgstr "Básico"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:242
+msgid "Break down query components for limited added privacy"
+msgstr ""
+"Desglose los componentes de consulta para una privacidad adicional limitada"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:69
+msgid "Break the loop where DNSSEC needs NTP and NTP needs DNS"
+msgstr "Rompa el ciclo donde DNSSEC necesita NTP y NTP necesita DNS"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:75
+msgid "Choose Unbounds listening port"
+msgstr "Escoge el puerto de escucha Unbounds"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:213
+msgid "Chose the IP versions used upstream and downstream"
+msgstr ""
+"Elija las versiones de IP utilizadas en sentido ascendente y descendente"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zone-details.lua:56
+msgid "Connect to servers using TLS"
+msgstr "Conectarse a los servidores utilizando TLS"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:39
+msgid "DHCP"
+msgstr "DHCP"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:131
+msgid "DHCP Link"
+msgstr "Enlace DHCP"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:139
+msgid "DHCPv4 to SLAAC"
+msgstr "DHCPv4 a SLAAC"
+
+#: applications/luci-app-unbound/luasrc/controller/unbound.lua:56
+msgid "DNS Cache"
+msgstr "Caché DNS"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zone-details.lua:55
+msgid "DNS over TLS"
+msgstr "DNS sobre TLS"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:98
+msgid "DNS64 Prefix"
+msgstr "Prefijo DNS64"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:68
+msgid "DNSSEC NTP Fix"
+msgstr "DNSSEC NTP Fix"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:214
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:225
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:235
+msgid "Default"
+msgstr "Predeterminado"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:156
+msgid "Denied (nxdomain)"
+msgstr "Denegado (nxdomain)"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zone-details.lua:22
+msgid "Directed Zone"
+msgstr "Zona dirigida"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zone-details.lua:77
+msgid "Directory only part of URL"
+msgstr "Directorio solo parte de la URL"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:106
+msgid "Domain Insecure"
+msgstr "Dominio inseguro"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zone-details.lua:72
+msgid "Domain name to verify TLS certificate"
+msgstr "Nombre de dominio para verificar el certificado TLS"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:146
+msgid "Domain suffix for this router and DHCP clients"
+msgstr "Sufijo de dominio para este enrutador y clientes DHCP"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:254
+msgid "EDNS Size"
+msgstr "Tamaño EDNS"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/manual.lua:14
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/uciedit.lua:14
+msgid "Edit '"
+msgstr "Editar '"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/server.lua:14
+msgid "Edit 'server:' clause options for 'include:"
+msgstr "Edite 'servidor:' opciones de la cláusula para 'injcluir:"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zone-details.lua:23
+msgid ""
+"Edit a forward, stub, or zone-file-cache zone for Unbound to use instead of "
+"recursion."
+msgstr ""
+"Edite una zona de reenvío, código auxiliar o zona de caché de archivos para "
+"que se pueda usar Unbound en lugar de recursión."
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/extended.lua:14
+msgid "Edit clauses such as 'forward-zone:' for 'include:"
+msgstr "Edite las cláusulas como 'forward-zone:' para 'incluir:"
+
+#: applications/luci-app-unbound/luasrc/controller/unbound.lua:85
+msgid "Edit: Extended"
+msgstr "Edite: Extendido"
+
+#: applications/luci-app-unbound/luasrc/controller/unbound.lua:82
+msgid "Edit: Server"
+msgstr "Edit"
+
+#: applications/luci-app-unbound/luasrc/controller/unbound.lua:70
+msgid "Edit: UCI"
+msgstr "Edite: UCI"
+
+#: applications/luci-app-unbound/luasrc/controller/unbound.lua:77
+msgid "Edit: Unbound"
+msgstr "Edite: Unbound"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zones.lua:39
+msgid "Enable"
+msgstr "Habilitar"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:93
+msgid "Enable DNS64"
+msgstr "Habilitar DNS64"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:63
+msgid "Enable DNSSEC"
+msgstr "Habilitar DNSSEC"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:45
+msgid "Enable Unbound"
+msgstr "Habilitar Unbound"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:203
+msgid "Enable access for unbound-control"
+msgstr "Habilitar el acceso para el control ilimitado"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:94
+msgid "Enable the DNS64 module"
+msgstr "Habilitar el módulo DNS64"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:64
+msgid "Enable the DNSSEC validator module"
+msgstr "Habilitar el módulo validador DNSSEC"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:46
+msgid "Enable the initialization scripts for Unbound"
+msgstr "Habilitar los scripts de inicialización para Unbound"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zone-details.lua:30
+msgid "Enable this directed zone"
+msgstr "Habilitar esta zona dirigida"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zone-details.lua:29
+msgid "Enabled"
+msgstr "Habilitado"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:266
+msgid "Extended Statistics"
+msgstr "Estadisticas extendidas"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:267
+msgid "Extended statistics are printed from unbound-control"
+msgstr "Las estadísticas extendidas se imprimen desde el control independiente"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:188
+msgid "Extra DNS"
+msgstr "DNS extra"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zone-details.lua:33
+msgid "Fall Back"
+msgstr "Retroceder"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zones.lua:36
+msgid "Fallback"
+msgstr "Retroceder"
+
+#: applications/luci-app-unbound/luasrc/controller/unbound.lua:65
+msgid "Files"
+msgstr "Archivos"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:90
+msgid "Filter Entire Subnet"
+msgstr "Filtrar toda la subred"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:81
+msgid "Filter Localhost Rebind"
+msgstr "Filtrar Localhost Rebind"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:89
+msgid "Filter Private Address"
+msgstr "Filtrar dirección privada"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:86
+msgid "Filter Private Rebind"
+msgstr "Filtrar encuadernado privado"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zones.lua:71
+msgid "Forward"
+msgstr "Reenviar"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zone-details.lua:40
+msgid "Forward (simple handoff)"
+msgstr "Reenviar (simple transferencia)"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zones.lua:68
+msgid "Forward TLS"
+msgstr "Reenviar TLS"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zone-details.lua:52
+msgid "Forward to upstream nameservers (ISP)"
+msgstr "Reenviar a servidores de nombres ascendentes (ISP)"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:170
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:182
+msgid "Host FQDN, All Addresses"
+msgstr "FQDN de host, todas las direcciones"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:192
+msgid "Host Records"
+msgstr "Registros de host"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:193
+msgid "Host/MX/SRV RR"
+msgstr "Host/MX/SRV RR"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:194
+msgid "Host/MX/SRV/CNAME RR"
+msgstr "Host/MX/SRV/CNAME RR"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:169
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:181
+msgid "Hostname, All Addresses"
+msgstr "Nombre de host, todas las direcciones"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:168
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:180
+msgid "Hostname, Primary Address"
+msgstr "Nombre de host, dirección principal"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:165
+msgid "How to enter the LAN or local network router in DNS"
+msgstr "Cómo ingresar al enrutador de red local o LAN en DNS"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:154
+msgid "How to treat queries of this local domain"
+msgstr "Como tratar las consultas de este dominio local"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:216
+msgid "IP4 All and IP6 Local"
+msgstr "IP4 Todos y IP6 Local"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:215
+msgid "IP4 Only"
+msgstr "Sólo IP4"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:219
+msgid "IP4 and IP6"
+msgstr "IP4 y IP6"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:217
+msgid "IP6 Only*"
+msgstr "Sólo IP6*"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:218
+msgid "IP6 Preferred"
+msgstr "IP6 preferido"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:191
+msgid "Ignore"
+msgstr "Ignorar"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:171
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:183
+msgid "Interface FQDN, All Addresses"
+msgstr "Interfaz FQDN, todas las direcciones"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:164
+msgid "LAN DNS"
+msgstr "DNS de LAN"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:229
+msgid "Large"
+msgstr "Grande"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:112
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:273
+msgid "Limit days between RFC5011 copies to reduce flash writes"
+msgstr ""
+"Limite los días entre copias RFC5011 para reducir las grabaciones flash"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:255
+msgid "Limit extended DNS packet size"
+msgstr "Limitar el tamaño del paquete DNS extendido"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:132
+msgid "Link to supported programs to load DHCP into DNS"
+msgstr "Enlace a programas compatibles para cargar DHCP en DNS"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:107
+msgid "List domains to bypass checks of DNSSEC"
+msgstr "Lista de dominios para eludir las comprobaciones de DNSSEC"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:74
+msgid "Listening Port"
+msgstr "Puerto de escucha"
+
+#: applications/luci-app-unbound/luasrc/controller/unbound.lua:50
+msgid "Local Data"
+msgstr "Datos locales"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:145
+msgid "Local Domain"
+msgstr "Dominio local"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:153
+msgid "Local Domain Type"
+msgstr "Tipo de dominio local"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:207
+msgid "Local Host, Encrypted"
+msgstr "Host local, encriptado"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:206
+msgid "Local Host, No Encryption"
+msgstr "Host local, sin cifrado"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:58
+msgid "Local Service"
+msgstr "Servicio local"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:208
+msgid "Local Subnet, Encrypted"
+msgstr "Subred local, encriptada"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:209
+msgid "Local Subnet, Static Encryption"
+msgstr "Subred local, cifrado estático"
+
+#: applications/luci-app-unbound/luasrc/controller/unbound.lua:53
+msgid "Local Zones"
+msgstr "Zonas locales"
+
+#: applications/luci-app-unbound/luasrc/controller/unbound.lua:41
+msgid "Log"
+msgstr "Registro"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:49
+msgid "Manual Conf"
+msgstr "Conf. Manual"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:228
+msgid "Medium"
+msgstr "Medio"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:223
+msgid "Memory Resource"
+msgstr "Recurso de memoria"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:122
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:283
+msgid "Networks that may trigger Unbound to reload (avoid wan6)"
+msgstr "Redes que pueden activar Unbound para recargar (evitar wan6)"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:167
+msgid "No Entry"
+msgstr "Sin entrada"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:88
+msgid "No Filter"
+msgstr "Sin filtro"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:133
+msgid "No Link"
+msgstr "Sin enlace"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:205
+msgid "No Remote Control"
+msgstr "Sin control remoto"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zones.lua:45
+msgid ""
+"Note: SSL/TLS library is missing an API. Please review syslog. >> logread ..."
+msgstr ""
+"Nota: a la biblioteca SSL/TLS le falta una API. Por favor revise syslog. >> "
+"logread ..."
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zones.lua:16
+msgid ""
+"Organize directed forward, stub, and authoritative zones <a href=\"%s\" "
+"target=\"_blank\">(help)</a>."
+msgstr ""
+"Organice los reenvios dirigidos, colilla , y zonas autoritarias <a href=\"%s"
+"\" target=\"_blank\">(ayuda)</a>."
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:177
+msgid "Override the WAN side router entry in DNS"
+msgstr "Anular la entrada del enrutador del lado WAN en DNS"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:236
+msgid "Passive"
+msgstr "Pasivo"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zone-details.lua:60
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zone-details.lua:66
+msgid "Port servers will receive queries on"
+msgstr "Los servidores de puertos recibirán consultas en"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:99
+msgid "Prefix for generated DNS64 addresses"
+msgstr "Prefijo para direcciones DNS64 generadas"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:261
+msgid "Prevent excessively short cache periods"
+msgstr "Prevenir períodos de caché excesivamente cortos"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:82
+msgid "Protect against upstream response of 127.0.0.0/8"
+msgstr "Proteger contra la respuesta ascendente de 127.0.0.0/8"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:87
+msgid "Protect against upstream responses within local subnets"
+msgstr "Proteger contra respuestas ascendentes dentro de subredes locales"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:241
+msgid "Query Minimize"
+msgstr "Consulta minimizada"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zones.lua:75
+msgid "Recurse"
+msgstr "Recuento"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:212
+msgid "Recursion Protocol"
+msgstr "Protocolo de recursion"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:233
+msgid "Recursion Strength"
+msgstr "Fuerza de recursión"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:234
+msgid "Recursion activity affects memory growth and CPU load"
+msgstr ""
+"La actividad de recursión afecta el crecimiento de la memoria y la carga de "
+"la CPU"
+
+#: applications/luci-app-unbound/luasrc/controller/unbound.lua:22
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:22
+msgid "Recursive DNS"
+msgstr "DNS recursivo"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:157
+msgid "Refused"
+msgstr "Rechazado"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:40
+msgid "Resource"
+msgstr "Recurso"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:111
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:272
+msgid "Root DSKEY Age"
+msgstr "Root DSKEY Age"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/extended.lua:11
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/manual.lua:11
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/server.lua:11
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/uciedit.lua:11
+msgid "Save"
+msgstr "Guardar"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zone-details.lua:59
+msgid "Server Port"
+msgstr "Puerto del servidor"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zone-details.lua:65
+msgid "Server TLS Port"
+msgstr "Puerto del servidor TLS"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zone-details.lua:47
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zones.lua:33
+msgid "Servers"
+msgstr "Servidores"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zone-details.lua:48
+msgid "Servers for this zone; see README.md for optional form"
+msgstr "Servidores para esta zona; ver README.md para la forma opcional"
+
+#: applications/luci-app-unbound/luasrc/controller/unbound.lua:96
+msgid "Show: Adblock"
+msgstr "Mostrar: Adblock"
+
+#: applications/luci-app-unbound/luasrc/controller/unbound.lua:90
+msgid "Show: DHCP"
+msgstr "Mostrar: DHCP"
+
+#: applications/luci-app-unbound/luasrc/controller/unbound.lua:73
+msgid "Show: Unbound"
+msgstr "Mostrar: Unbound"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:50
+msgid "Skip UCI and use /etc/unbound/unbound.conf"
+msgstr "Omita UCI y use /etc/unbound/unbound.conf"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:227
+msgid "Small"
+msgstr "Pequeño"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:158
+msgid "Static (local only)"
+msgstr "Estático (solo local)"
+
+#: applications/luci-app-unbound/luasrc/controller/unbound.lua:47
+#: applications/luci-app-unbound/luasrc/controller/unbound.lua:59
+msgid "Statistics"
+msgstr "Estadísitcas"
+
+#: applications/luci-app-unbound/luasrc/controller/unbound.lua:38
+msgid "Status"
+msgstr "Estado"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:248
+msgid "Strict Minimize"
+msgstr "Estricto minimizar"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:249
+msgid "Strict version of 'query minimize' but it can break DNS"
+msgstr "Versión estricta de 'consulta minimizada' pero puede romper DNS"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zone-details.lua:39
+msgid "Stub (forced recursion)"
+msgstr "Talón (recursión forzada)"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zone-details.lua:71
+msgid "TLS Name Index"
+msgstr "Índice de nombres TLS"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:260
+msgid "TTL Minimum"
+msgstr "TTL mínimo"
+
+#: applications/luci-app-unbound/luasrc/controller/unbound.lua:103
+msgid "This could display more statistics with the unbound-control package."
+msgstr ""
+"Esto podría mostrar más estadísticas con el paquete de control ilimitado."
+
+#: applications/luci-app-unbound/luasrc/controller/unbound.lua:186
+#: applications/luci-app-unbound/luasrc/controller/unbound.lua:197
+#: applications/luci-app-unbound/luasrc/controller/unbound.lua:222
+msgid "This shows '"
+msgstr "Esta muestra '"
+
+#: applications/luci-app-unbound/luasrc/controller/unbound.lua:173
+msgid ""
+"This shows 'ubound-control dump_cache' for auditing records including DNSSEC."
+msgstr ""
+"Esto muestra 'ubound-control dump_cache' para auditar registros que incluyen "
+"DNSSEC."
+
+#: applications/luci-app-unbound/luasrc/controller/unbound.lua:137
+msgid ""
+"This shows Unbound 'local-data:' entries from default, .conf, or control."
+msgstr ""
+"Esto muestra las entradas de Unbound 'local-data:' de forma predeterminada, ."
+"conf o control."
+
+#: applications/luci-app-unbound/luasrc/controller/unbound.lua:149
+msgid ""
+"This shows Unbound 'local-zone:' entries from default, .conf, or control."
+msgstr ""
+"Esto muestra las entradas de Unbound 'local-zone:' de los valores "
+"predeterminados, .conf o control."
+
+#: applications/luci-app-unbound/luasrc/controller/unbound.lua:125
+msgid "This shows Unbound self reported performance statistics."
+msgstr ""
+"Esto muestra las estadísticas de rendimiento autoinformadas de Unbound."
+
+#: applications/luci-app-unbound/luasrc/controller/unbound.lua:113
+msgid "This shows syslog filtered for events involving Unbound."
+msgstr "Esto muestra syslog filtrado para eventos relacionados con Unbound."
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:226
+msgid "Tiny"
+msgstr "Minúsculo"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:159
+msgid "Transparent (local/global)"
+msgstr "Transparente (local/global)"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:121
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:282
+msgid "Trigger Networks"
+msgstr "Redes de disparo"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zones.lua:27
+msgid "Type"
+msgstr "Tipo"
+
+#: applications/luci-app-unbound/luasrc/controller/unbound.lua:26
+msgid "Unbound"
+msgstr "Unbound"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:23
+msgid ""
+"Unbound <a href=\"%s\" target=\"_blank\">(NLnet Labs)</a> is a validating, "
+"recursive, and caching DNS resolver <a href=\"%s\" target=\"_blank\">(help)</"
+"a>."
+msgstr ""
+"Unbound <a href=\"%s\" target=\"_blank\">(NLnet Labs)</a> es un sistema de "
+"resolución de DNS de validación, recursivo y almacenamiento en caché <a href="
+"\"%s\" target=\"_blank\">(ayuda)</a>."
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:202
+msgid "Unbound Control App"
+msgstr "Aplicación de control de Unbound"
+
+#: applications/luci-app-unbound/luasrc/controller/unbound.lua:166
+msgid "Unbound cache is too large to display in LuCI."
+msgstr "Caché de Unbound es demasiado grande para mostrarla en LuCI."
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zones.lua:81
+msgid "Undefined"
+msgstr "Indefinido"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zone-details.lua:51
+msgid "Use 'resolv.conf.auto'"
+msgstr "Utilice 'resolv.conf.auto'"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:140
+msgid "Use DHCPv4 MAC to discover IP6 hosts SLAAC (EUI64)"
+msgstr "Utilice DHCPv4 MAC para descubrir hosts IPA SLAAC (EUI64)"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:179
+msgid "Use Upstream"
+msgstr "Usar Upstream"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:189
+msgid "Use extra DNS entries found in /etc/config/dhcp"
+msgstr "Use entradas DNS extra que se encuentran en /etc/config/dhcp"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:224
+msgid "Use menu System/Processes to observe any memory growth"
+msgstr ""
+"Usa el menú Sistema/Procesos para observar cualquier crecimiento de memoria."
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:176
+msgid "WAN DNS"
+msgstr "DNS WAN"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zone-details.lua:44
+msgid "Zone (Domain) names included in this zone combination"
+msgstr "Nombres de zona (dominio) incluidos en esta combinación de zona"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zone-details.lua:76
+msgid "Zone Download URL"
+msgstr "URL de descarga de zona"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zone-details.lua:43
+msgid "Zone Names"
+msgstr "Nombres de zona"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zone-details.lua:37
+msgid "Zone Type"
+msgstr "Tipo de zona"
+
+#: applications/luci-app-unbound/luasrc/controller/unbound.lua:32
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zones.lua:30
+msgid "Zones"
+msgstr "Zonas"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zones.lua:112
+msgid "accept upstream results for"
+msgstr "aceptar resultados anteriores para"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:115
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:276
+msgid "default"
+msgstr "predeterminado"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zones.lua:175
+msgid "download from <var>%s</var>"
+msgstr "descargar desde <var>%s</var>"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:118
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua:279
+msgid "never"
+msgstr "nunca"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zones.lua:118
+msgid "prefetch zone files for"
+msgstr "archivos de zona de búsqueda previa para"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zones.lua:115
+msgid "select recursion for"
+msgstr "seleccione recursion para"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zones.lua:121
+msgid "unknown action for"
+msgstr "acción desconocida para"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zones.lua:205
+msgid "use <var>%s</var> nameservers"
+msgstr "usar los nombres de servidores <var>%s</var>"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zones.lua:156
+msgid "use nameservers"
+msgstr "usar servidores de nombres"
+
+#: applications/luci-app-unbound/luasrc/model/cbi/unbound/zones.lua:164
+msgid "with default certificate for <var>%s</var>"
+msgstr "con certificado predeterminado para <var>%s</var>"
diff --git a/applications/luci-app-vnstat/po/es/vnstat.po b/applications/luci-app-vnstat/po/es/vnstat.po
index 70a5b3e378..1530e575bc 100644
--- a/applications/luci-app-vnstat/po/es/vnstat.po
+++ b/applications/luci-app-vnstat/po/es/vnstat.po
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-10-07 15:08+0200\n"
+"Project-Id-Version: \n"
+"PO-Revision-Date: 2019-04-01 23:59-0300\n"
"Last-Translator: José Vicente <josevteg@gmail.com>\n"
"Language-Team: German\n"
"Language: es\n"
@@ -9,7 +9,8 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Poedit 2.2.1\n"
+"POT-Creation-Date: \n"
#: applications/luci-app-vnstat/luasrc/controller/vnstat.lua:6
#: applications/luci-app-vnstat/luasrc/controller/vnstat.lua:10
@@ -31,7 +32,7 @@ msgstr "Tráfico por horas"
#: applications/luci-app-vnstat/luasrc/model/cbi/vnstat.lua:49
msgid "Monitor selected interfaces"
-msgstr "Monitorizar las interfaces seleccionadas"
+msgstr "Monitorear las interfaces seleccionadas"
#: applications/luci-app-vnstat/luasrc/view/vnstat.htm:69
msgid "Monthly traffic"
@@ -47,11 +48,11 @@ msgstr ""
#: applications/luci-app-vnstat/luasrc/model/cbi/vnstat.lua:22
msgid "Restart VnStat"
-msgstr "Rearrancar VnStat"
+msgstr "Reiniciar VnStat"
#: applications/luci-app-vnstat/luasrc/view/vnstat.htm:65
msgid "Summary display"
-msgstr "Mostrar Resumen"
+msgstr "Mostrar resumen"
#: applications/luci-app-vnstat/luasrc/view/vnstat.htm:66
msgid "Top 10 display"
diff --git a/applications/luci-app-vpnbypass/po/es/vpnbypass.po b/applications/luci-app-vpnbypass/po/es/vpnbypass.po
new file mode 100644
index 0000000000..1cc42ee31f
--- /dev/null
+++ b/applications/luci-app-vpnbypass/po/es/vpnbypass.po
@@ -0,0 +1,83 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.2.1\n"
+"Last-Translator: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Language: es\n"
+
+#: applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua:48
+msgid "Domains to Bypass"
+msgstr "Dominios a omitir"
+
+#: applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua:49
+msgid "Domains to be accessed directly (outside of the VPN tunnel), see"
+msgstr ""
+"Dominios a los que se puede acceder directamente (fuera del túnel VPN), "
+"consulte"
+
+#: applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua:31
+msgid "Local IP Addresses to Bypass"
+msgstr "Direcciones IP locales para omitir"
+
+#: applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua:31
+msgid ""
+"Local IP addresses or subnets with direct internet access (outside of the "
+"VPN tunnel)"
+msgstr ""
+"Direcciones IP o subredes locales con acceso directo a Internet (fuera del "
+"túnel VPN)"
+
+#: applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua:17
+msgid "Local Ports to Bypass"
+msgstr "Puertos locales para evitar"
+
+#: applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua:17
+msgid "Local ports to trigger VPN Bypass"
+msgstr "Puertos locales para activar VPN Bypass"
+
+#: applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua:51
+msgid "README"
+msgstr "LÉEME"
+
+#: applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua:38
+msgid "Remote IP Addresses to Bypass"
+msgstr "Direcciones IP remotas para omitir"
+
+#: applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua:38
+msgid ""
+"Remote IP addresses or subnets which will be accessed directly (outside of "
+"the VPN tunnel)"
+msgstr ""
+"Direcciones IP remotas o subredes a las que se accederá directamente "
+"(fuera del túnel VPN)"
+
+#: applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua:24
+msgid "Remote Ports to Bypass"
+msgstr "Puertos remotos para omitir"
+
+#: applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua:24
+msgid "Remote ports to trigger VPN Bypass"
+msgstr "Puertos remotos para activar VPN Bypass"
+
+#: applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua:7
+msgid "Start VPNBypass service"
+msgstr "Iniciar el servicio VPNBypass"
+
+#: applications/luci-app-vpnbypass/luasrc/controller/vpnbypass.lua:6
+msgid "VPN Bypass"
+msgstr "VPN Bypass"
+
+#: applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua:3
+msgid "VPN Bypass Settings"
+msgstr "Configuración de VPN Bypass"
+
+#: applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua:51
+msgid "for syntax"
+msgstr "para la sintaxis"
diff --git a/applications/luci-app-wifischedule/luasrc/model/cbi/wifischedule/wifi_schedule.lua b/applications/luci-app-wifischedule/luasrc/model/cbi/wifischedule/wifi_schedule.lua
index 61a94ca5dc..1644514166 100644
--- a/applications/luci-app-wifischedule/luasrc/model/cbi/wifischedule/wifi_schedule.lua
+++ b/applications/luci-app-wifischedule/luasrc/model/cbi/wifischedule/wifi_schedule.lua
@@ -37,7 +37,9 @@ end
-- BEGIN Map
m = Map("wifi_schedule", translate("Wifi Schedule"), translate("Defines a schedule when to turn on and off wifi."))
-function m.on_commit(self)
+m.apply_on_parse = true
+
+function m.on_apply(self)
sys.exec("/usr/bin/wifi_schedule.sh cron")
end
-- END Map