summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js10
-rw-r--r--applications/luci-app-https_dns_proxy/Makefile2
-rw-r--r--applications/luci-app-https_dns_proxy/luasrc/model/cbi/https_dns_proxy.lua78
-rw-r--r--applications/luci-app-ltqtapi/po/es/ltqtapi.po92
-rw-r--r--applications/luci-app-nut/po/es/nut.po619
-rw-r--r--applications/luci-app-privoxy/po/es/privoxy.po683
-rw-r--r--libs/luci-lib-nixio/src/address.c6
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/form.js1
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/ui.js10
9 files changed, 1481 insertions, 20 deletions
diff --git a/applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js b/applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js
index ffbfe3ccd..63af69f8a 100644
--- a/applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js
+++ b/applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js
@@ -107,6 +107,16 @@ return L.view.extend({
return uci.get('firewall', section_id, 'name') || _('Unnamed forward');
};
+ s.handleAdd = function(ev) {
+ var config_name = this.uciconfig || this.map.config,
+ section_id = uci.add(config_name, this.sectiontype);
+
+ uci.set(config_name, section_id, 'target', 'DNAT');
+
+ this.addedSection = section_id;
+ this.renderMoreOptionsModal(section_id);
+ };
+
o = s.taboption('general', form.Value, 'name', _('Name'));
o.placeholder = _('Unnamed forward');
o.modalonly = true;
diff --git a/applications/luci-app-https_dns_proxy/Makefile b/applications/luci-app-https_dns_proxy/Makefile
index 2ae2b80f2..afc160723 100644
--- a/applications/luci-app-https_dns_proxy/Makefile
+++ b/applications/luci-app-https_dns_proxy/Makefile
@@ -10,7 +10,7 @@ LUCI_TITLE:=HTTPS DNS Proxy Web UI
LUCI_DESCRIPTION:=Provides Web UI for HTTPS DNS Proxy
LUCI_DEPENDS:=+luci-mod-admin-full +https_dns_proxy
LUCI_PKGARCH:=all
-PKG_RELEASE:=2
+PKG_RELEASE:=3
include ../../luci.mk
diff --git a/applications/luci-app-https_dns_proxy/luasrc/model/cbi/https_dns_proxy.lua b/applications/luci-app-https_dns_proxy/luasrc/model/cbi/https_dns_proxy.lua
index 20d486f37..03a3b4e08 100644
--- a/applications/luci-app-https_dns_proxy/luasrc/model/cbi/https_dns_proxy.lua
+++ b/applications/luci-app-https_dns_proxy/luasrc/model/cbi/https_dns_proxy.lua
@@ -1,4 +1,41 @@
local uci = require("luci.model.uci").cursor()
+function uci_del_list(conf, sect, opt, value)
+ local lval = uci:get(conf, sect, opt)
+ if lval == nil or lval == "" then
+ lval = {}
+ elseif type(lval) ~= "table" then
+ lval = { lval }
+ end
+
+ local i
+ local changed = false
+ for i = #lval, 1 do
+ if lval[i] == value then
+ table.remove(lval, i)
+ changed = true
+ end
+ end
+
+ if changed then
+ if #lval > 0 then
+ uci:set(conf, sect, opt, lval)
+ else
+ uci:delete(conf, sect, opt)
+ end
+ end
+end
+
+function uci_add_list(conf, sect, opt, value)
+ local lval = uci:get(conf, sect, opt)
+ if lval == nil or lval == "" then
+ lval = {}
+ elseif type(lval) ~= "table" then
+ lval = { lval }
+ end
+
+ lval[#lval+1] = value
+ uci:set(conf, sect, opt, lval)
+end
m = Map("https_dns_proxy", translate("HTTPS DNS Proxy Settings"))
m.template="cbi/map"
@@ -9,10 +46,22 @@ s3.sortable = false
s3.anonymous = true
s3.addremove = true
+local n = 0
+uci:foreach("https_dns_proxy", "https_dns_proxy", function(s)
+ if s[".name"] == section then
+ return false
+ end
+ n = n + 1
+end)
+
prov = s3:option(ListValue, "url_prefix", translate("Provider"))
prov:value("https://cloudflare-dns.com/dns-query?ct=application/dns-json&","Cloudflare")
prov:value("https://dns.google.com/resolve?","Google")
prov.write = function(self, section, value)
+ local la_val = la:formvalue(section)
+ local lp_val = lp:formvalue(section)
+ if not la_val then la_val = "127.0.0.1" end
+ if not lp_val then lp_val = n + 5053 end
if value and value:match("cloudflare") then
uci:set("https_dns_proxy", section, "bootstrap_dns", "1.1.1.1,1.0.0.1")
uci:set("https_dns_proxy", section, "url_prefix", "https://cloudflare-dns.com/dns-query?ct=application/dns-json&")
@@ -23,6 +72,12 @@ prov.write = function(self, section, value)
uci:set("https_dns_proxy", section, "user", "nobody")
uci:set("https_dns_proxy", section, "group", "nogroup")
uci:save("https_dns_proxy")
+ if n == 0 then
+ uci:delete("dhcp", "@dnsmasq[0]", "server")
+ end
+ uci_del_list("dhcp", "@dnsmasq[0]", "server", tostring(la_val) .. ":" .. tostring(lp_val))
+ uci_add_list("dhcp", "@dnsmasq[0]", "server", tostring(la_val) .. ":" .. tostring(lp_val))
+ uci:save("dhcp")
end
la = s3:option(Value, "listen_addr", translate("Listen address"))
@@ -31,23 +86,22 @@ la.rmempty = true
lp = s3:option(Value, "listen_port", translate("Listen port"))
lp.datatype = "port"
-lp.placeholder = "5053"
-lp.rmempty = true
-
--- user = s3:option(Value, "user", translate("User name"))
--- user.placeholder = "nobody"
--- user.rmempty = true
-
--- group = s3:option(Value, "group", translate("Group name"))
--- group.placeholder = "nogroup"
--- group.rmempty = true
+lp.value = n + 5053
+lp.write = function(self, section, value)
+ if not value then
+ uci:set("https_dns_proxy", section, "listen_port", n + 5053)
+ else
+ uci:set("https_dns_proxy", section, "listen_port", value)
+ end
+ uci:save("https_dns_proxy")
+end
sa = s3:option(Value, "subnet_addr", translate("Subnet address"))
-sa.datatype = "ip4addr"
+sa.datatype = "ip4prefix"
sa.rmempty = true
ps = s3:option(Value, "proxy_server", translate("Proxy server"))
--- ps.datatype = "or(ipaddr,hostname)"
+ps.datatype = "or(ipaddr,hostname)"
ps.rmempty = true
return m
diff --git a/applications/luci-app-ltqtapi/po/es/ltqtapi.po b/applications/luci-app-ltqtapi/po/es/ltqtapi.po
new file mode 100644
index 000000000..3c844127e
--- /dev/null
+++ b/applications/luci-app-ltqtapi/po/es/ltqtapi.po
@@ -0,0 +1,92 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2019-07-25 18:05-0300\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.2.1\n"
+"Last-Translator: Franco Castillo <castillofrancodamian@gmail.com>\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Language: es\n"
+
+#: applications/luci-app-ltqtapi/luasrc/controller/ltqtapi.lua:16
+#: applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/account.lua:7
+msgid "Account"
+msgstr "Cuenta"
+
+#: applications/luci-app-ltqtapi/luasrc/view/telephony_status.htm:28
+msgid "Collecting data..."
+msgstr "Recolectando datos..."
+
+#: applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/contact.lua:7
+msgid "Contact"
+msgstr "Contacto"
+
+#: applications/luci-app-ltqtapi/luasrc/controller/ltqtapi.lua:17
+msgid "Contacts"
+msgstr "Contactos"
+
+#: applications/luci-app-ltqtapi/luasrc/view/telephony_status.htm:20
+msgid "Current Telephony State"
+msgstr "Estado de telefonía actual"
+
+#: applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/contact.lua:14
+msgid "Dial"
+msgstr "Dial"
+
+#: applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/account.lua:14
+msgid "Disabled"
+msgstr "Deshabilitado"
+
+#: applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/account.lua:7
+msgid "Here You can specify the SIP account that you want to use."
+msgstr "Aquí puede especificar la cuenta SIP que desea utilizar."
+
+#: applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/contact.lua:7
+msgid "Here You can specify the SIP contacts that you want to use."
+msgstr "Aquí puede especificar los contactos SIP que desea utilizar."
+
+#: applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/contact.lua:12
+msgid "Name"
+msgstr "Nombre"
+
+#: applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/account.lua:13
+msgid "Password"
+msgstr "Contraseña"
+
+#: applications/luci-app-ltqtapi/luasrc/view/telephony_status.htm:24
+msgid "Port1"
+msgstr "Puerto1"
+
+#: applications/luci-app-ltqtapi/luasrc/view/telephony_status.htm:25
+msgid "Port2"
+msgstr "Puerto2"
+
+#: applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/account.lua:11
+msgid "Realm"
+msgstr "Reino"
+
+#: applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/contact.lua:13
+msgid "Shortdial"
+msgstr "Dial corto"
+
+#: applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/contact.lua:16
+msgid "Type"
+msgstr "Tipo"
+
+#: applications/luci-app-ltqtapi/luasrc/view/telephony_status.htm:23
+msgid "Uplink"
+msgstr "Enlace ascendente"
+
+#: applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/account.lua:12
+msgid "Username"
+msgstr "Nombre de usuario"
+
+#: applications/luci-app-ltqtapi/luasrc/controller/ltqtapi.lua:13
+#: applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/account.lua:4
+#: applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/contact.lua:4
+msgid "VoIP"
+msgstr "VoIP"
diff --git a/applications/luci-app-nut/po/es/nut.po b/applications/luci-app-nut/po/es/nut.po
new file mode 100644
index 000000000..615da00ca
--- /dev/null
+++ b/applications/luci-app-nut/po/es/nut.po
@@ -0,0 +1,619 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2019-07-25 18:52-0300\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.2.1\n"
+"Last-Translator: Franco Castillo <castillofrancodamian@gmail.com>\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Language: es\n"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:216
+msgid "Additional Shutdown Time(s)"
+msgstr "Tiempo adicional de apagado (s)"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:37
+msgid "Addresses on which to listen"
+msgstr "Direcciones donde escuchar."
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:23
+msgid "Allowed actions"
+msgstr "Acciones permitidas"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_cgi.lua:20
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:188
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:217
+msgid "As configured by NUT"
+msgstr "Según lo configurado por NUT"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:150
+msgid "Bytes to read from interrupt pipe"
+msgstr "Bytes para leer desde tubo de interrupción."
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:174
+msgid "CA Certificate path"
+msgstr "Ruta del certificado de CA"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:73
+msgid "Certificate file (SSL)"
+msgstr "Archivo de certificado (SSL)"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:63
+msgid "Communications lost message"
+msgstr "Comunicaciones por mensaje perdidas"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:60
+msgid "Communications restored message"
+msgstr "Comunicaciones pro mensaje restauradas"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_cgi.lua:35
+msgid "Control UPS via CGI"
+msgstr "Control de UPS a través de CGI"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:43
+msgid "Deadtime"
+msgstr "Tiempo muerto"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:87
+msgid "Default for UPSes without this field."
+msgstr "Predeterminado para UPS sin este campo."
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:177
+msgid "Delay for kill power command"
+msgstr "Retraso para el comando kill power"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:181
+msgid "Delay to power on UPS if power returns after kill power"
+msgstr ""
+"Retraso para encender el UPS si la energía regresa después de apagar la "
+"unidad"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:129
+msgid "Description (Display)"
+msgstr "Descripción (Display)"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_cgi.lua:32
+msgid "Display name"
+msgstr "Nombre para mostrar"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:169
+msgid "Don't lock port when starting driver"
+msgstr "No bloquee el puerto al iniciar el controlador"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:132
+msgid "Driver"
+msgstr "Controlador"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:114
+msgid "Driver Configuration"
+msgstr "Configuración del controlador"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:77
+msgid "Driver Global Settings"
+msgstr "Configuración global del controlador"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:83
+msgid "Driver Path"
+msgstr "Ruta del controlador"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:212
+msgid "Driver Shutdown Order"
+msgstr "Orden de apagado del controlador"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:106
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:244
+msgid "Driver waits for data to be consumed by upsd before publishing more."
+msgstr ""
+"El controlador espera que los datos sean consumidos por upsd antes de "
+"publicar más."
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:59
+msgid "Drop privileges to this user"
+msgstr "Soltar privilegios a este usuario"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_cgi.lua:40
+msgid "Enable"
+msgstr "Habilitar"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:138
+msgid ""
+"Enables a hotplug script that makes all ttyUSB devices (e.g. serial USB) "
+"group read-write as user 'nut'"
+msgstr ""
+"Habilita una secuencia de comandos de conexión en caliente que hace que "
+"todos los dispositivos ttyUSB (por ejemplo, USB serie) sean de lectura y "
+"escritura como usuario 'nut'"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:93
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:102
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:110
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:118
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:126
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:134
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:142
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:150
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:158
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:166
+msgid "Execute notify command"
+msgstr "Ejecutar comando de notificación"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:26
+msgid "Forced Shutdown"
+msgstr "Forzar apagado"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:57
+msgid "Forced shutdown message"
+msgstr "Forzar mensaje de apagado"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:10
+msgid "Global Settings"
+msgstr "Configuración global"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_cgi.lua:13
+msgid "Go to NUT CGI"
+msgstr "Ir a CGI de NUT"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_cgi.lua:16
+msgid "Host"
+msgstr "Host"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_cgi.lua:23
+msgid "Hostname or IP address"
+msgstr "Nombre de host o dirección IP"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:191
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:220
+msgid "Hostname or address of UPS"
+msgstr "Nombre de host o dirección de UPS"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:39
+msgid "Hot Sync"
+msgstr "Sincronización caliente"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:41
+msgid "IP Address"
+msgstr "Dirección IP"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:95
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:104
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:112
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:120
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:128
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:136
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:144
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:152
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:160
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:168
+msgid "Ignore"
+msgstr "Ignorar"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:142
+msgid "Ignore Low Battery"
+msgstr "Ignorar batería baja"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:29
+msgid "Instant commands"
+msgstr "Comandos instantáneos"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:146
+msgid "Interrupt Only"
+msgstr "Sólo Interrumpir"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:150
+msgid "Interrupt Size"
+msgstr "Tamaño de la interrupción"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:54
+msgid "Low battery message"
+msgstr "Mensaje de batería baja"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:163
+msgid "Manufacturer (Display)"
+msgstr "Fabricante (Display)"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:34
+msgid "Master"
+msgstr "Maestro"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:154
+msgid "Max USB HID Length Reported"
+msgstr "Longitud máxima de USB HID informada"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:54
+msgid "Maximum Age of Data"
+msgstr "Edad máxima de los datos"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:87
+msgid "Maximum Start Delay"
+msgstr "Retardo de arranque máximo"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:67
+msgid "Maximum connections"
+msgstr "Conexiones máximas"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:91
+msgid "Maximum number of times to try starting a driver."
+msgstr "Número máximo de veces para intentar iniciar un controlador."
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:101
+msgid "Maximum time in seconds between refresh of UPS status"
+msgstr "Tiempo máximo en segundos para la actualización del estado de UPS"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:91
+msgid "Maxium Retries"
+msgstr "Reintentos máximos"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:158
+msgid "Maxium Start Delay"
+msgstr "Retardo de arranque máximo"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:17
+msgid "Minimum required number or power supplies"
+msgstr "Número mínimo requerido o fuentes de alimentación"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:166
+msgid "Model (Display)"
+msgstr "Modelo (Display)"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_cgi.lua:9
+msgid "NUT CGI Access"
+msgstr "Acceso CGI de NUT"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:12
+msgid "NUT Users"
+msgstr "Usuarios de NUT"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:188
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:217
+msgid "Name of UPS"
+msgstr "Nombre de UPS"
+
+#: applications/luci-app-nut/luasrc/controller/nut.lua:11
+msgid "Network UPS Tools"
+msgstr "Herramientas de red de UPS"
+
+#: applications/luci-app-nut/luasrc/controller/nut.lua:22
+#: applications/luci-app-nut/luasrc/model/cbi/nut_cgi.lua:6
+msgid "Network UPS Tools (CGI)"
+msgstr "Herramientas UPS de red (CGI)"
+
+#: applications/luci-app-nut/luasrc/controller/nut.lua:18
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:7
+msgid "Network UPS Tools (Monitor)"
+msgstr "Herramientas de red de UPS (Monitor)"
+
+#: applications/luci-app-nut/luasrc/controller/nut.lua:14
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:9
+msgid "Network UPS Tools (Server)"
+msgstr "Herramientas de red de UPS (servidor)"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_cgi.lua:7
+msgid "Network UPS Tools CGI Configuration"
+msgstr "Configuración de CGI de herramientas de UPS de red"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:8
+msgid "Network UPS Tools Monitoring Configuration"
+msgstr "Configuración de monitoreo de herramientas UPS de red"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:10
+msgid "Network UPS Tools Server Configuration"
+msgstr "Configuración del servidor de herramientas de red de UPS"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:169
+msgid "No Lock"
+msgstr "Sin bloqueo"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:72
+msgid "No communications message"
+msgstr "No hay mensaje de comunicación"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:173
+msgid "No low/high voltage transfer OIDs"
+msgstr "Sin OID de transferencia de baja/alta tensión"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:75
+msgid "No parent message"
+msgstr "No hay mensaje para los padres"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:90
+msgid "Notification defaults"
+msgstr "Notificación predeterminada"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:26
+msgid "Notify command"
+msgstr "Notificar comando"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:99
+msgid "Notify when back online"
+msgstr "Notificar cuando vuelva a estar en línea"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:163
+msgid "Notify when battery needs replacing"
+msgstr "Notificar cuando la batería necesita ser reemplazada"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:147
+msgid "Notify when communications lost"
+msgstr "Notificar cuando se pierden las comunicaciones."
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:139
+msgid "Notify when communications restored"
+msgstr "Notificar cuando se restauren las comunicaciones."
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:131
+msgid "Notify when force shutdown"
+msgstr "Notificar cuando se fuerce el apagao"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:115
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:123
+msgid "Notify when low battery"
+msgstr "Notificar cuando la batería está baja"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:107
+msgid "Notify when on battery"
+msgstr "Notificar cuando está en la batería"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:155
+msgid "Notify when shutting down"
+msgstr "Notificar cuando se apaga"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:177
+msgid "Off Delay(s)"
+msgstr "Retardo de apagado (s)"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:181
+msgid "On Delay(s)"
+msgstr "Retardo de encendido (s)"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:51
+msgid "On battery message"
+msgstr "En el mensaje de la batería"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:48
+msgid "Online message"
+msgstr "Mensaje en linea"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:208
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:237
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:19
+msgid "Password"
+msgstr "Contraseña"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:174
+msgid "Path containing ca certificates to match against host certificate"
+msgstr ""
+"Ruta que contiene certificados de CA para coincidir con el certificado del "
+"host"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:83
+msgid "Path to drivers (instead of default)"
+msgstr "Ruta a los controladores (en lugar de predeterminado)"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:63
+msgid "Path to state file"
+msgstr "Ruta al archivo de estado"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:54
+msgid "Period after which data is considered stale"
+msgstr "Período después del cual los datos se consideran obsoletos."
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:101
+msgid "Poll Interval"
+msgstr "Intervalo de encuesta"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:29
+msgid "Poll frequency"
+msgstr "Frecuencia de encuesta"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:34
+msgid "Poll frequency alert"
+msgstr "Alerta de frecuencia de sondeo"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:197
+msgid "Polling Frequency(s)"
+msgstr "Frecuencia de sondeo(s)"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_cgi.lua:27
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:195
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:224
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:46
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:202
+msgid "Port"
+msgstr "Puerto"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:200
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:229
+msgid "Power value"
+msgstr "Valor de potencia"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:206
+msgid "Product (regex)"
+msgstr "Producto (regex)"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:69
+msgid "Replace battery message"
+msgstr "Reemplace el mensaje de la batería"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:178
+msgid "Require SSL and make sure server CN matches hostname"
+msgstr ""
+"Requiere SSL y asegúrese de que el servidor CN coincida con el nombre de "
+"host"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:96
+msgid "Retry Delay"
+msgstr "Retraso de reintento"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:32
+msgid "Role"
+msgstr "Rol"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:80
+msgid "Run drivers in a chroot(2) environment"
+msgstr "Ejecutar controladores en un entorno chroot(2)"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:14
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:59
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:110
+msgid "RunAs User"
+msgstr "Ejecutar como usuario"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:125
+msgid "SNMP Community"
+msgstr "Comunidad SNMP"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:222
+msgid "SNMP retries"
+msgstr "Reintentos SNMP"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:226
+msgid "SNMP timeout(s)"
+msgstr "Tiempo de espera de SNMP"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:230
+msgid "SNMP version"
+msgstr "Versión SNMP"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:232
+msgid "SNMPv1"
+msgstr "SNMPv1"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:233
+msgid "SNMPv2c"
+msgstr "SNMPv2c"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:234
+msgid "SNMPv3"
+msgstr "SNMPv3"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:219
+msgid "Serial Number"
+msgstr "Número de serie"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:138
+msgid "Set USB serial port permissions"
+msgstr "Establecer permisos de puerto serie USB"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:25
+msgid "Set variables"
+msgstr "Establecer variables"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:22
+msgid "Shutdown command"
+msgstr "Comando de apagado"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:66
+msgid "Shutdown message"
+msgstr "Mensaje de apagado"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:33
+msgid "Slave"
+msgstr "Esclavo"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:106
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:244
+msgid "Synchronous Communication"
+msgstr "Comunicación sincrónica"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:115
+msgid "The name of this section will be used as UPS name elsewhere"
+msgstr "El nombre de esta sección se usará como nombre de UPS en otra parte"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:96
+msgid "Time in seconds between driver start retry attempts."
+msgstr ""
+"Tiempo en segundos entre los intentos de reintento de inicio del "
+"controlador."
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:158
+msgid "Time in seconds that upsdrvctl will wait for driver to finish starting"
+msgstr ""
+"Tiempo en segundos que upsdrvctl esperará a que el controlador termine de "
+"iniciarse"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:183
+msgid "UPS Master"
+msgstr "UPS Maestro"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:51
+msgid "UPS Server Global Settings"
+msgstr "Configuración global del servidor UPS"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:212
+msgid "UPS Slave"
+msgstr "UPS esclavo"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_cgi.lua:20
+msgid "UPS name"
+msgstr "Nombre de UPS"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:121
+msgid "USB Bus(es) (regex)"
+msgstr "Bus(es) USB (regex)"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:209
+msgid "USB Product Id"
+msgstr "ID de producto USB"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:241
+msgid "USB Vendor Id"
+msgstr "ID de proveedor USB"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:29
+msgid ""
+"Use upscmd -l to see full list which the commands your UPS supports "
+"(requires upscmd package)"
+msgstr ""
+"Use upscmd -l para ver la lista completa de los comandos que soporta su UPS "
+"(requiere el paquete upscmd)"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:110
+msgid ""
+"User as which to execute driver; requires device file accessed by driver to "
+"be read-write for that user."
+msgstr ""
+"Usuario como para ejecutar el controlador; requiere que el archivo de "
+"dispositivo accedido por el controlador sea de lectura y escritura para ese "
+"usuario."
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:205
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:234
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:16
+msgid "Username"
+msgstr "Nombre de usuario"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:238
+msgid "Vendor (regex)"
+msgstr "Proveedor (regex)"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:178
+msgid "Verify all connection with SSL"
+msgstr "Verificar toda la conexión con SSL"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:154
+msgid "Workaround for buggy firmware"
+msgstr "Solución para el firmware de buggy"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:94
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:103
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:111
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:119
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:127
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:135
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:143
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:151
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:159
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:167
+msgid "Write to syslog"
+msgstr "Escribir en syslog"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_server.lua:80
+msgid "chroot"
+msgstr "chroot"
+
+#: applications/luci-app-nut/luasrc/model/cbi/nut_monitor.lua:14
+msgid "upsmon drops privileges to this user"
+msgstr "upsmon le quita privilegios a este usuario"
diff --git a/applications/luci-app-privoxy/po/es/privoxy.po b/applications/luci-app-privoxy/po/es/privoxy.po
new file mode 100644
index 000000000..853d23d7b
--- /dev/null
+++ b/applications/luci-app-privoxy/po/es/privoxy.po
@@ -0,0 +1,683 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2019-07-25 17:45-0300\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.2.1\n"
+"Last-Translator: Franco Castillo <castillofrancodamian@gmail.com>\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Language: es\n"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:236
+msgid ""
+"A URL to be displayed in the error page that users will see if access to an "
+"untrusted page is denied."
+msgstr ""
+"Una URL que se mostrará en la página de error que los usuarios verán si se "
+"deniega el acceso a una página que no es de confianza."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:226
+msgid ""
+"A URL to documentation about the local Privoxy setup, configuration or "
+"policies."
+msgstr ""
+"Una URL para la documentación sobre la configuración, configuración o "
+"políticas locales de Privoxy."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:325
+msgid "A directory where Privoxy can create temporary files."
+msgstr "Un directorio donde Privoxy puede crear archivos temporales."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:84
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:87
+msgid "Access Control"
+msgstr "Control de acceso"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:337
+msgid "Actions that are applied to all sites and maybe overruled later on."
+msgstr ""
+"Las acciones que se aplican a todos los sitios y tal vez se anulan más "
+"adelante."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:308
+msgid "An alternative directory where the templates are loaded from."
+msgstr "Un directorio alternativo desde donde se cargan las plantillas."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:206
+msgid "An email address to reach the Privoxy administrator."
+msgstr ""
+"Una dirección de correo electrónico para llegar al administrador de Privoxy."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:691
+msgid ""
+"Assumed server-side keep-alive timeout (in seconds) if not specified by the "
+"server."
+msgstr ""
+"Supuesto tiempo de espera de mantenimiento del lado del servidor (en "
+"segundos) si no está especificado por el servidor."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:151
+msgid "Boot delay"
+msgstr "Retraso de arranque"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:869
+msgid "CGI user interface"
+msgstr "Interfaz de usuario CGI"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:857
+msgid "Common Log Format"
+msgstr "Formato de registro común"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:92
+msgid ""
+"Configure here the routing of HTTP requests through a chain of multiple "
+"proxies. Note that parent proxies can severely decrease your privacy level. "
+"Also specified here are SOCKS proxies."
+msgstr ""
+"Configure aquí el enrutamiento de solicitudes HTTP a través de una cadena de "
+"múltiples proxies. Tenga en cuenta que los proxies de los padres pueden "
+"disminuir considerablemente su nivel de privacidad. También se especifican "
+"aquí los proxies SOCKS."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:851
+msgid "Debug GIF de-animation"
+msgstr "Depurar GIF desaminación"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:833
+msgid "Debug force feature"
+msgstr "Depurar característica de fuerza"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:845
+msgid "Debug redirects"
+msgstr "Depurar redirecciones"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:839
+msgid "Debug regular expression filters"
+msgstr "Depurar filtros de expresiones regulares"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:152
+msgid "Delay (in seconds) during system boot before Privoxy start"
+msgstr ""
+"Retraso (en segundos) durante el inicio del sistema antes del inicio de "
+"Privoxy"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:261
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:298
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:315
+msgid "Directory does not exist!"
+msgstr "¡El directorio no existe!"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:557
+msgid "Disabled == Transparent Proxy Mode"
+msgstr "Deshabilitado == Modo Proxy Transparente"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:66
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:71
+msgid "Documentation"
+msgstr "Documentación"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:154
+msgid "During delay ifup-events are not monitored !"
+msgstr "Durante la demora, los eventos no son monitoreados!"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:599
+msgid "Enable proxy authentication forwarding"
+msgstr "Habilitar el reenvío de autenticación proxy"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:135
+msgid ""
+"Enable/Disable autostart of Privoxy on system startup and interface events"
+msgstr ""
+"Habilitar/Deshabilitar el inicio automático de Privoxy en el inicio del "
+"sistema y los eventos de interfaz"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:555
+msgid "Enable/Disable filtering when Privoxy starts."
+msgstr "Habilitar/Deshabilitar el filtrado cuando se inicia Privoxy."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:134
+msgid "Enabled"
+msgstr "Habilitado"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:602
+msgid ""
+"Enabling this option is NOT recommended if there is no parent proxy that "
+"requires authentication!"
+msgstr ""
+"Habilitar esta opción NO se recomienda si no hay un proxy principal que "
+"requiera autenticación."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:368
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:404
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:442
+msgid "File '%s' not found inside Configuration Directory"
+msgstr "El archivo '%s' no se encuentra dentro del directorio de configuración"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:915
+#: applications/luci-app-privoxy/luasrc/view/privoxy/detail_logview.htm:12
+msgid "File not found or empty"
+msgstr "Archivo no encontrado o vacío"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:75
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:80
+msgid "Files and Directories"
+msgstr "Archivos y directorios"
+
+#: applications/luci-app-privoxy/luasrc/controller/privoxy.lua:36
+msgid "For help use link at the relevant option"
+msgstr "Para obtener ayuda, utilice el enlace en la opción correspondiente"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:91
+msgid "Forwarding"
+msgstr "Reenvíos"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:589
+msgid ""
+"If enabled, Privoxy hides the 'go there anyway' link. The user obviously "
+"should not be able to bypass any blocks."
+msgstr ""
+"Si está habilitado, Privoxy oculta el enlace 'ir allí de todos modos'. El "
+"usuario, obviamente, no debe ser capaz de eludir ningún bloque."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:67
+msgid ""
+"If you intend to operate Privoxy for more users than just yourself, it might "
+"be a good idea to let them know how to reach you, what you block and why you "
+"do that, your policies, etc."
+msgstr ""
+"Si tiene la intención de operar Privoxy para más usuarios que solo usted, "
+"puede ser una buena idea dejarles saber cómo comunicarse con usted, qué "
+"bloquea y por qué lo hace, sus políticas, etc."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:215
+msgid "Invalid email address"
+msgstr "Dirección de correo electrónico inváida"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:416
+msgid "It is NOT recommended for the casual user."
+msgstr "NO se recomienda para el usuario ocasional."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:194
+msgid "Location of the Privoxy User Manual."
+msgstr "Ubicación del manual de usuario de Privoxy."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:108
+msgid "Log File Viewer"
+msgstr "Visor de archivos de registro"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:895
+msgid "Log all data read from the network"
+msgstr "Registrar todos los datos leídos desde la red"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:827
+msgid "Log all data written to the network"
+msgstr "Registrar todos los datos escritos en la red"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:901
+msgid "Log the applying actions"
+msgstr "Registrar las acciones de aplicación."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:803
+msgid ""
+"Log the destination for each request Privoxy let through. See also 'Debug "
+"1024'."
+msgstr ""
+"Registrar el destino para cada solicitud que Privoxy dejó pasar. Véase "
+"también 'Debug 1024'."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:863
+msgid ""
+"Log the destination for requests Privoxy didn't let through, and the reason "
+"why."
+msgstr ""
+"Registrar el destino para las solicitudes que Privoxy no dejó pasar y la "
+"razón."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:104
+msgid "Logging"
+msgstr "Iniciar sesión"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:339
+msgid "Main actions file"
+msgstr "Archivo de acciones principales"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:461
+msgid "Mandatory Input: No Data given!"
+msgstr "Entrada obligatoria: ¡No se han dado datos!"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:259
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:296
+msgid "Mandatory Input: No Directory given!"
+msgstr "Entrada obligatoria: ¡No hay directorio dado!"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:279
+msgid "Mandatory Input: No File given!"
+msgstr "Entrada obligatoria: ¡No hay archivo dado!"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:479
+msgid "Mandatory Input: No Port given!"
+msgstr "Entrada obligatoria: ¡No hay puerto dado!"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:345
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:381
+msgid "Mandatory Input: No files given!"
+msgstr "Entrada obligatoria: ¡No hay archivos dados!"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:482
+msgid "Mandatory Input: No valid IPv4 address or host given!"
+msgstr ""
+"Entrada obligatoria: ¡No se ha proporcionado una dirección IPv4 válida o un "
+"host!"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:470
+msgid "Mandatory Input: No valid IPv6 address given!"
+msgstr ""
+"Entrada obligatoria: ¡No se ha proporcionado una dirección IPv6 válida!"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:472
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:484
+msgid "Mandatory Input: No valid Port given!"
+msgstr "Entrada obligatoria: ¡No se ha dado un puerto válido!"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:733
+msgid "Maximum number of client connections that will be served."
+msgstr "Número máximo de conexiones de clientes que se atenderán."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:535
+msgid "Maximum size (in KB) of the buffer for content filtering."
+msgstr "Tamaño máximo (en KB) del búfer para el filtrado de contenido."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:97
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:100
+msgid "Miscellaneous"
+msgstr "Varios"
+
+#: applications/luci-app-privoxy/luasrc/controller/privoxy.lua:51
+msgid "NOT installed"
+msgstr "No instalado"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:254
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:291
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:310
+msgid "No trailing '/', please."
+msgstr "No hay '/' al final, por favor."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:881
+msgid "Non-fatal errors - *we highly recommended enabling this*"
+msgstr "Errores no fatales - *recomendamos encarecidamente habilitar esto*"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:714
+msgid ""
+"Number of seconds after which a socket times out if no data is received."
+msgstr ""
+"Número de segundos después de los cuales se agota un socket si no se reciben "
+"datos."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:668
+msgid ""
+"Number of seconds after which an open connection will no longer be reused."
+msgstr ""
+"Número de segundos después de los cuales una conexión abierta ya no se "
+"volverá a utilizar."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:327
+msgid ""
+"Only when using 'external filters', Privoxy has to create temporary files."
+msgstr ""
+"Solo cuando se usan 'filtros externos', Privoxy tiene que crear archivos "
+"temporales."
+
+#: applications/luci-app-privoxy/luasrc/controller/privoxy.lua:81
+msgid "Please install current version !"
+msgstr "Por favor, instale la versión actual!"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:913
+msgid "Please press [Read] button"
+msgstr "Por favor presione el botón [Leer]"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:518
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:527
+msgid "Please read Privoxy manual for details!"
+msgstr "Por favor, lea el manual de Privoxy para más detalles!"
+
+#: applications/luci-app-privoxy/luasrc/controller/privoxy.lua:92
+msgid "Please update to the current version!"
+msgstr "Por favor, actualice a la versión actual!"
+
+#: applications/luci-app-privoxy/luasrc/controller/privoxy.lua:24
+msgid "Privoxy WEB proxy"
+msgstr "Privoxy WEB proxy"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:76
+msgid ""
+"Privoxy can (and normally does) use a number of other files for additional "
+"configuration, help and logging. This section of the configuration file "
+"tells Privoxy where to find those other files."
+msgstr ""
+"Privoxy puede (y normalmente lo hace) usar una cantidad de otros archivos "
+"para configuración adicional, ayuda y registro. Esta sección del archivo de "
+"configuración le dice a Privoxy dónde encontrar esos otros archivos."
+
+#: applications/luci-app-privoxy/luasrc/controller/privoxy.lua:32
+msgid ""
+"Privoxy is a non-caching web proxy with advanced filtering capabilities for "
+"enhancing privacy, modifying web page data and HTTP headers, controlling "
+"access, and removing ads and other obnoxious Internet junk."
+msgstr ""
+"Privoxy es un proxy web sin almacenamiento en caché con funciones avanzadas "
+"de filtrado para mejorar la privacidad, modificar los datos de las páginas "
+"web y los encabezados HTTP, controlar el acceso y eliminar anuncios y otros "
+"datos basura desagradables de Internet."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:908
+msgid "Read / Reread log file"
+msgstr "Leer / releer el archivo de registro"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:815
+msgid "Show I/O status"
+msgstr "Mostrar estado de E/S"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:809
+msgid "Show each connection status"
+msgstr "Mostrar el estado de cada conexión"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:821
+msgid "Show header parsing"
+msgstr "Mostrar encabezado analizando"
+
+#: applications/luci-app-privoxy/luasrc/controller/privoxy.lua:76
+msgid "Software package '%s' is not installed."
+msgstr "El paquete de software '%s' no está instalado."
+
+#: applications/luci-app-privoxy/luasrc/controller/privoxy.lua:85
+msgid "Software package '%s' is outdated."
+msgstr "El paquete de software '%s' está desactualizado."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:125
+#: applications/luci-app-privoxy/luasrc/view/privoxy/detail_startstop.htm:10
+msgid "Start"
+msgstr "Iniciar"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:115
+msgid "Start / Stop"
+msgstr "Iniciar/Detener"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:116
+msgid "Start/Stop Privoxy WEB Proxy"
+msgstr "Iniciar/Detener Privoxy WEB Proxy"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:875
+msgid "Startup banner and warnings."
+msgstr "Banner de inicio y advertencias."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:455
+msgid "Syntax:"
+msgstr "Sintaxis:"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:786
+msgid "Syntax: Client header names delimited by spaces."
+msgstr "Sintaxis: Nombres de encabezado de cliente delimitados por espacios."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:612
+msgid "Syntax: target_pattern http_parent[:port]"
+msgstr "Sintaxis: target_pattern http_parent[:port]"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:620
+msgid "Syntax: target_pattern socks_proxy[:port] http_parent[:port]"
+msgstr "Sintaxis: target_pattern socks_proxy[:port] http_parent[:port]"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:59
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:62
+msgid "System"
+msgstr "Sistema"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:335
+msgid ""
+"The actions file(s) to use. Multiple actionsfile lines are permitted, and "
+"are in fact recommended!"
+msgstr ""
+"Los archivos de acciones a usar. Se permiten varias líneas de archivo de "
+"acciones, ¡y de hecho se recomiendan!"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:453
+msgid ""
+"The address and TCP port on which Privoxy will listen for client requests."
+msgstr ""
+"La dirección y el puerto TCP en el que Privoxy escuchará las solicitudes de "
+"los clientes."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:766
+msgid ""
+"The compression level that is passed to the zlib library when compressing "
+"buffered content."
+msgstr ""
+"El nivel de compresión que se pasa a la biblioteca zlib al comprimir el "
+"contenido almacenado."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:252
+msgid ""
+"The directory where all logging takes place (i.e. where the logfile is "
+"located)."
+msgstr ""
+"El directorio donde se lleva a cabo todo el registro (es decir, donde se "
+"encuentra el archivo de registro)."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:289
+msgid "The directory where the other configuration files are located."
+msgstr "El directorio donde se encuentran los otros archivos de configuración."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:377
+msgid ""
+"The filter files contain content modification rules that use regular "
+"expressions."
+msgstr ""
+"Los archivos de filtro contienen reglas de modificación de contenido que "
+"utilizan expresiones regulares."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:183
+msgid "The hostname shown on the CGI pages."
+msgstr "El nombre de host mostrado en las páginas CGI."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:274
+msgid "The log file to use. File name, relative to log directory."
+msgstr ""
+"El archivo de registro a utilizar. Nombre del archivo, relativo al "
+"directorio de registro."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:784
+msgid "The order in which client headers are sorted before forwarding them."
+msgstr ""
+"El orden en que se clasifican los encabezados de los clientes antes de "
+"reenviarlos."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:751
+msgid ""
+"The status code Privoxy returns for pages blocked with +handle-as-empty-"
+"document."
+msgstr ""
+"El código de estado que Privoxy devuelve para las páginas bloqueadas con "
+"+handle-as-empty-document."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:413
+msgid ""
+"The trust mechanism is an experimental feature for building white-lists and "
+"should be used with care."
+msgstr ""
+"El mecanismo de confianza es una característica experimental para construir "
+"listas blancas y debe usarse con cuidado."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:238
+msgid ""
+"The value of this option only matters if the experimental trust mechanism "
+"has been activated."
+msgstr ""
+"El valor de esta opción solo importa si se ha activado el mecanismo de "
+"confianza experimental."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:796
+msgid ""
+"This option is only there for debugging purposes. It will drastically reduce "
+"performance."
+msgstr ""
+"Esta opción solo está ahí para fines de depuración. Reducirá drásticamente "
+"el rendimiento."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:574
+msgid ""
+"This option will be removed in future releases as it has been obsoleted by "
+"the more general header taggers."
+msgstr ""
+"Esta opción se eliminará en futuras versiones, ya que ha sido obsoleta por "
+"los etiquetadores de encabezado más generales."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:85
+msgid ""
+"This tab controls the security-relevant aspects of Privoxy's configuration."
+msgstr ""
+"Esta pestaña controla los aspectos relevantes para la seguridad de la "
+"configuración de Privoxy."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:618
+msgid ""
+"Through which SOCKS proxy (and optionally to which parent HTTP proxy) "
+"specific requests should be routed."
+msgstr ""
+"A través de qué proxy SOCKS (y, opcionalmente, a qué proxy HTTP principal) "
+"se deben enrutar las solicitudes específicas."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:610
+msgid "To which parent HTTP proxy specific requests should be routed."
+msgstr ""
+"A qué enrutamiento deben dirigirse las solicitudes específicas del proxy "
+"HTTP."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:341
+msgid "User customizations"
+msgstr "Personalizaciones de usuario"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:166
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:543
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:673
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:696
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:720
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:739
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:772
+msgid "Value is not a number"
+msgstr "El valor no es un número"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:168
+msgid "Value not between 0 and 300"
+msgstr "Valor no entre 0 y 300"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:774
+msgid "Value not between 0 and 9"
+msgstr "Valor no entre 0 y 9"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:545
+msgid "Value not between 1 and 4096"
+msgstr "Valor no entre 1 y 4096"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:675
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:698
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:722
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:741
+msgid "Value not greater 0 or empty"
+msgstr "Valor no mayor a 0 o vacío"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:537
+msgid "Value range 1 to 4096, no entry defaults to 4096"
+msgstr "Rango de valores de 1 a 4096, sin entrada por defecto a 4096"
+
+#: applications/luci-app-privoxy/luasrc/controller/privoxy.lua:45
+#: applications/luci-app-privoxy/luasrc/controller/privoxy.lua:47
+#: applications/luci-app-privoxy/luasrc/controller/privoxy.lua:50
+msgid "Version"
+msgstr "Versión"
+
+#: applications/luci-app-privoxy/luasrc/controller/privoxy.lua:43
+msgid "Version Information"
+msgstr "Información de versión"
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:646
+msgid "Whether intercepted requests should be treated as valid."
+msgstr "Si las solicitudes interceptadas deben tratarse como válidas."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:572
+msgid ""
+"Whether or not Privoxy recognizes special HTTP headers to change toggle "
+"state."
+msgstr ""
+"Si Privoxy reconoce o no encabezados HTTP especiales para cambiar el estado "
+"de conmutación."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:758
+msgid "Whether or not buffered content is compressed before delivery."
+msgstr ""
+"Si el contenido almacenado en búfer se comprime o no antes de la entrega."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:706
+msgid ""
+"Whether or not outgoing connections that have been kept alive should be "
+"shared between different incoming connections."
+msgstr ""
+"Si las conexiones salientes que se han mantenido vivas deben compartirse "
+"entre diferentes conexiones entrantes."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:683
+msgid "Whether or not pipelined requests should be served."
+msgstr "Si las solicitudes canalizadas deben ser atendidas o no."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:600
+msgid "Whether or not proxy authentication through Privoxy should work."
+msgstr "Si la autenticación proxy a través de Privoxy debería o no funcionar."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:582
+msgid "Whether or not the web-based actions file editor may be used."
+msgstr ""
+"Si se puede usar o no el editor de archivos de acciones basadas en web."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:565
+msgid "Whether or not the web-based toggle feature may be used."
+msgstr "Si se puede usar o no la función de conmutación basada en la web."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:653
+msgid "Whether requests to Privoxy's CGI pages can be blocked or redirected."
+msgstr ""
+"Si las solicitudes a las páginas CGI de Privoxy se pueden bloquear o "
+"redirigir."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:660
+msgid ""
+"Whether the CGI interface should stay compatible with broken HTTP clients."
+msgstr ""
+"Si la interfaz CGI debe permanecer compatible con los clientes HTTP rotos."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:794
+msgid "Whether to run only one server thread."
+msgstr "Ya sea para ejecutar un solo hilo del servidor."
+
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:516
+#: applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua:525
+msgid "Who can access what."
+msgstr "Quién puede acceder a qué."
+
+#: applications/luci-app-privoxy/luasrc/controller/privoxy.lua:49
+#: applications/luci-app-privoxy/luasrc/controller/privoxy.lua:87
+msgid "installed"
+msgstr "instalado"
+
+#: applications/luci-app-privoxy/luasrc/controller/privoxy.lua:48
+#: applications/luci-app-privoxy/luasrc/controller/privoxy.lua:78
+#: applications/luci-app-privoxy/luasrc/controller/privoxy.lua:89
+msgid "or higher"
+msgstr "o más alto"
+
+#: applications/luci-app-privoxy/luasrc/controller/privoxy.lua:46
+#: applications/luci-app-privoxy/luasrc/controller/privoxy.lua:78
+#: applications/luci-app-privoxy/luasrc/controller/privoxy.lua:89
+msgid "required"
+msgstr "requerido"
diff --git a/libs/luci-lib-nixio/src/address.c b/libs/luci-lib-nixio/src/address.c
index 8ab4fa89c..ed3a4a1c6 100644
--- a/libs/luci-lib-nixio/src/address.c
+++ b/libs/luci-lib-nixio/src/address.c
@@ -24,6 +24,7 @@
#ifdef __linux__
+#include <sys/time.h>
#include <signal.h>
#include <setjmp.h>
#include <unistd.h>
@@ -287,6 +288,7 @@ static int nixio_getnameinfo(lua_State *L) {
const char *family = luaL_optstring(L, 2, NULL);
#ifdef __linux__
+ const struct itimerval t = { {timeout * 1000 * 1000, 0} , {0, 0} };
struct sigaction sa_new, sa_old;
int timeout = luaL_optnumber(L, 3, 0);
if (timeout > 0 && timeout < 1000)
@@ -308,7 +310,7 @@ static int nixio_getnameinfo(lua_State *L) {
return 3;
}
- ualarm(timeout * 1000, 0);
+ setitimer(ITIMER_REAL, &t, NULL);
}
#endif
@@ -339,7 +341,7 @@ static int nixio_getnameinfo(lua_State *L) {
#ifdef __linux__
if (timeout > 0 && timeout < 1000)
{
- ualarm(0, 0);
+ alarm(0);
sigaction(SIGALRM, &sa_old, NULL);
}
#endif
diff --git a/modules/luci-base/htdocs/luci-static/resources/form.js b/modules/luci-base/htdocs/luci-static/resources/form.js
index 508e2c485..58d8f7100 100644
--- a/modules/luci-base/htdocs/luci-static/resources/form.js
+++ b/modules/luci-base/htdocs/luci-static/resources/form.js
@@ -1461,6 +1461,7 @@ var CBIListValue = CBIValue.extend({
size: this.size,
sort: this.keylist,
optional: this.rmempty || this.optional,
+ placeholder: this.placeholder,
validate: L.bind(this.validate, this, section_id)
});
diff --git a/modules/luci-base/htdocs/luci-static/resources/ui.js b/modules/luci-base/htdocs/luci-static/resources/ui.js
index 9c16a9a0d..43afc698f 100644
--- a/modules/luci-base/htdocs/luci-static/resources/ui.js
+++ b/modules/luci-base/htdocs/luci-static/resources/ui.js
@@ -287,8 +287,8 @@ var UISelect = UIElement.extend({
this.node = frameEl;
if (this.options.widget == 'select') {
- this.setUpdateEvents(frameEl, 'change', 'click', 'blur');
- this.setChangeEvents(frameEl, 'change');
+ this.setUpdateEvents(frameEl.firstChild, 'change', 'click', 'blur');
+ this.setChangeEvents(frameEl.firstChild, 'change');
}
else {
var radioEls = frameEl.querySelectorAll('input[type="radio"]');
@@ -879,7 +879,7 @@ var UIDropdown = UIElement.extend({
else
markup = '<li data-value="{{value}}">{{value}}</li>';
- new_item = E(markup.replace(/{{value}}/g, item));
+ new_item = E(markup.replace(/{{value}}/g, '%h'.format(item)));
if (sbox.options.multiple) {
sbox.transformItem(sb, new_item);
@@ -1797,7 +1797,7 @@ return L.Class.extend({
return chg[1];
case 4:
- return "'" + chg[3].replace(/'/g, "'\"'\"'") + "'";
+ return "'%h'".format(chg[3].replace(/'/g, "'\"'\"'"));
default:
return chg[m1-1];
@@ -1929,7 +1929,7 @@ return L.Class.extend({
method: 'post',
timeout: L.env.apply_timeout * 1000,
query: L.ui.changes.confirm_auth
- }).then(call);
+ }).then(call, call);
}, delay);
};