summaryrefslogtreecommitdiffhomepage
path: root/applications
diff options
context:
space:
mode:
Diffstat (limited to 'applications')
-rw-r--r--applications/luci-app-adblock/luasrc/controller/adblock.lua6
-rw-r--r--applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua87
-rw-r--r--applications/luci-app-adblock/luasrc/view/adblock/blocklist.htm80
-rw-r--r--applications/luci-app-adblock/luasrc/view/adblock/logread.htm8
-rw-r--r--applications/luci-app-adblock/luasrc/view/adblock/runtime.htm4
-rw-r--r--applications/luci-app-adblock/po/it/adblock.po37
-rw-r--r--applications/luci-app-adblock/po/ja/adblock.po49
-rw-r--r--applications/luci-app-adblock/po/pt-br/adblock.po37
-rw-r--r--applications/luci-app-adblock/po/ru/adblock.po391
-rw-r--r--applications/luci-app-adblock/po/sv/adblock.po37
-rw-r--r--applications/luci-app-adblock/po/templates/adblock.pot37
-rw-r--r--applications/luci-app-adblock/po/zh-cn/adblock.po37
-rw-r--r--applications/luci-app-adblock/po/zh-tw/adblock.po37
-rw-r--r--applications/luci-app-advanced-reboot/Makefile4
-rw-r--r--applications/luci-app-advanced-reboot/README.md13
-rw-r--r--applications/luci-app-advanced-reboot/luasrc/controller/advanced_reboot.lua116
-rw-r--r--applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm8
-rw-r--r--applications/luci-app-advanced-reboot/po/ru/advanced-reboot.po163
-rw-r--r--applications/luci-app-advanced-reboot/po/sv/advanced-reboot.po (renamed from applications/luci-app-advanced-reboot/po/sv/luci-app-advanced-reboot.po)24
-rw-r--r--applications/luci-app-advanced-reboot/po/templates/advanced-reboot.pot (renamed from applications/luci-app-advanced-reboot/po/templates/luci-app-advanced-reboot.pot)24
-rw-r--r--applications/luci-app-aria2/po/ru/aria2.po222
-rw-r--r--applications/luci-app-attendedsysupgrade/luasrc/view/attendedsysupgrade.htm360
-rw-r--r--applications/luci-app-attendedsysupgrade/root/usr/share/rpcd/acl.d/attendedsysupgrade.json6
-rw-r--r--applications/luci-app-attendedsysupgrade/root/www/luci-static/resources/attendedsysupgrade.js402
-rw-r--r--applications/luci-app-bcp38/po/ru/bcp38.po70
-rw-r--r--applications/luci-app-clamav/po/ru/clamav.po133
-rw-r--r--applications/luci-app-commands/po/ru/commands.po54
-rw-r--r--applications/luci-app-ddns/po/ru/ddns.po441
-rw-r--r--applications/luci-app-diag-core/po/ru/diag_core.po32
-rw-r--r--applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua60
-rw-r--r--applications/luci-app-dnscrypt-proxy/po/ru/dnscrypt-proxy.po276
-rw-r--r--applications/luci-app-dynapoint/po/ru/dynapoint.po114
-rw-r--r--applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm11
-rw-r--r--applications/luci-app-firewall/po/ru/firewall.po123
-rw-r--r--applications/luci-app-fwknopd/po/ru/fwknopd.po115
-rw-r--r--applications/luci-app-hd-idle/po/ru/hd_idle.po29
-rw-r--r--applications/luci-app-mjpg-streamer/po/ru/mjpg-streamer.po174
-rw-r--r--applications/luci-app-mwan3/luasrc/model/cbi/mwan/memberconfig.lua4
-rw-r--r--applications/luci-app-mwan3/po/ja/mwan3.po3
-rw-r--r--applications/luci-app-mwan3/po/ru/mwan3.po663
-rw-r--r--applications/luci-app-mwan3/po/templates/mwan3.pot3
-rw-r--r--applications/luci-app-mwan3/po/zh-cn/mwan3.po5
-rw-r--r--applications/luci-app-mwan3/po/zh-tw/mwan3.po5
-rw-r--r--applications/luci-app-privoxy/po/ru/privoxy.po512
-rw-r--r--applications/luci-app-radicale/po/ru/radicale.po448
-rw-r--r--applications/luci-app-samba/po/ru/samba.po47
-rw-r--r--applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instance-details.lua2
-rw-r--r--applications/luci-app-shadowsocks-libev/luasrc/model/shadowsocks-libev.lua5
-rw-r--r--applications/luci-app-shairplay/po/ru/shairplay.po54
-rw-r--r--applications/luci-app-simple-adblock/po/ru/simple-adblock.po94
-rw-r--r--applications/luci-app-splash/po/ru/splash.po126
-rw-r--r--applications/luci-app-statistics/po/ru/rrdtool.po28
-rw-r--r--applications/luci-app-statistics/po/ru/statistics.po378
-rw-r--r--applications/luci-app-tinyproxy/po/ru/tinyproxy.po149
-rw-r--r--applications/luci-app-travelmate/po/ja/travelmate.po93
-rw-r--r--applications/luci-app-travelmate/po/pt-br/travelmate.po76
-rw-r--r--applications/luci-app-travelmate/po/ru/travelmate.po382
-rw-r--r--applications/luci-app-travelmate/po/templates/travelmate.pot76
-rw-r--r--applications/luci-app-uhttpd/po/ru/uhttpd.po214
-rw-r--r--applications/luci-app-upnp/po/ja/upnp.po8
-rw-r--r--applications/luci-app-upnp/po/ru/upnp.po52
-rw-r--r--applications/luci-app-ushare/po/ru/ushare.po22
-rw-r--r--applications/luci-app-vnstat/po/ru/vnstat.po28
-rw-r--r--applications/luci-app-voice-core/po/ru/voice_core.po21
-rw-r--r--applications/luci-app-voice-diag/po/ru/voice_diag.po28
-rw-r--r--applications/luci-app-vpnbypass/po/ru/vpnbypass.po95
-rw-r--r--applications/luci-app-watchcat/po/ru/watchcat.po36
-rw-r--r--applications/luci-app-wifischedule/po/ru/wifischedule.po113
-rw-r--r--applications/luci-app-wireguard/po/ru/wireguard.po77
-rw-r--r--applications/luci-app-wol/po/ru/wol.po38
70 files changed, 6362 insertions, 1344 deletions
diff --git a/applications/luci-app-adblock/luasrc/controller/adblock.lua b/applications/luci-app-adblock/luasrc/controller/adblock.lua
index b74858400..0cfbb5f7f 100644
--- a/applications/luci-app-adblock/luasrc/controller/adblock.lua
+++ b/applications/luci-app-adblock/luasrc/controller/adblock.lua
@@ -1,4 +1,4 @@
--- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
-- This is free software, licensed under the Apache License, Version 2.0
module("luci.controller.adblock", package.seeall)
@@ -27,9 +27,9 @@ function logread()
local logfile
if nixio.fs.access("/var/log/messages") then
- logfile = util.trim(util.exec("cat /var/log/messages | grep 'adblock'"))
+ logfile = util.trim(util.exec("cat /var/log/messages | grep -F 'adblock-'"))
else
- logfile = util.trim(util.exec("logread -e 'adblock'"))
+ logfile = util.trim(util.exec("logread -e 'adblock-'"))
end
templ.render("adblock/logread", {title = i18n.translate("Adblock Logfile"), content = logfile})
end
diff --git a/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua b/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua
index 4bb404c25..476d8ece6 100644
--- a/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua
+++ b/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua
@@ -1,4 +1,4 @@
--- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
-- This is free software, licensed under the Apache License, Version 2.0
local fs = require("nixio.fs")
@@ -74,34 +74,45 @@ end
o2 = s:option(ListValue, "adb_dns", translate("DNS Backend (DNS Directory)"),
translate("List of supported DNS backends with their default list export directory.<br />")
.. translate("To overwrite the default path use the 'DNS Directory' option in the extra section below."))
-o2:value("dnsmasq", "dnsmasq (/tmp/dnsmasq.d)")
+o2:value("dnsmasq", "dnsmasq (/tmp)")
o2:value("unbound", "unbound (/var/lib/unbound)")
o2:value("named", "named (/var/lib/bind)")
o2:value("kresd", "kresd (/etc/kresd)")
o2:value("dnscrypt-proxy","dnscrypt-proxy (/tmp)")
+o2.default = "dnsmasq (/tmp)"
o2.rmempty = false
-o3 = s:option(ListValue, "adb_trigger", translate("Startup Trigger"),
+o3 = s:option(ListValue, "adb_fetchutil", translate("Download Utility"),
+translate("List of supported and fully pre-configured download utilities."))
+o3:value("uclient-fetch")
+o3:value("wget")
+o3:value("curl")
+o3:value("aria2c")
+o3:value("wget-nossl", "wget-nossl (noSSL)")
+o3:value("busybox", "wget-busybox (noSSL)")
+o3.default = "uclient-fetch"
+o3.rmempty = false
+
+o4 = s:option(ListValue, "adb_trigger", translate("Startup Trigger"),
translate("List of available network interfaces. Usually the startup will be triggered by the 'wan' interface.<br />")
.. translate("Choose 'none' to disable automatic startups, 'timed' to use a classic timeout (default 30 sec.) or select another trigger interface."))
-o3:value("none")
-o3:value("timed")
+o4:value("none")
+o4:value("timed")
if dump then
local i, v
for i, v in ipairs(dump.interface) do
if v.interface ~= "loopback" then
- o3:value(v.interface)
+ o4:value(v.interface)
end
end
end
-o3.rmempty = false
+o4.rmempty = false
-- Runtime information
-ds = s:option(DummyValue, "", translate("Runtime Information"))
-ds.template = "cbi/nullsection"
+ds = m:section(NamedSection, "global", "adblock", translate("Runtime Information"))
-dv1 = s:option(DummyValue, "", translate("Adblock Status"))
+dv1 = ds:option(DummyValue, "", translate("Adblock Status"))
dv1.template = "adblock/runtime"
if parse == nil then
dv1.value = translate("n/a")
@@ -112,12 +123,14 @@ else
dv1.value = translate("disabled")
elseif status == "paused" then
dv1.value = translate("paused")
+ elseif status == "running" then
+ dv1.value = translate("running")
else
dv1.value = translate("enabled")
end
end
-dv2 = s:option(DummyValue, "", translate("Adblock Version"))
+dv2 = ds:option(DummyValue, "", translate("Adblock Version"))
dv2.template = "adblock/runtime"
if parse == nil then
dv2.value = translate("n/a")
@@ -125,8 +138,8 @@ else
dv2.value = version
end
-dv3 = s:option(DummyValue, "", translate("Download Utility (SSL Library)"),
- translate("For SSL protected blocklist sources you need a suitable SSL library, e.g. 'libustream-ssl' or the wget 'built-in'."))
+dv3 = ds:option(DummyValue, "", translate("Download Utility (SSL Library)"),
+ translate("For SSL protected blocklist sources you need a suitable SSL library, e.g. 'libustream-ssl' or 'built-in'."))
dv3.template = "adblock/runtime"
if parse == nil then
dv3.value = translate("n/a")
@@ -134,7 +147,7 @@ else
dv3.value = fetch
end
-dv4 = s:option(DummyValue, "", translate("DNS Backend (DNS Directory)"))
+dv4 = ds:option(DummyValue, "", translate("DNS Backend (DNS Directory)"))
dv4.template = "adblock/runtime"
if parse == nil then
dv4.value = translate("n/a")
@@ -142,7 +155,7 @@ else
dv4.value = backend
end
-dv5 = s:option(DummyValue, "", translate("Overall Domains"))
+dv5 = ds:option(DummyValue, "", translate("Overall Domains"))
dv5.template = "adblock/runtime"
if parse == nil then
dv5.value = translate("n/a")
@@ -150,7 +163,7 @@ else
dv5.value = domains
end
-dv6 = s:option(DummyValue, "", translate("Last Run"))
+dv6 = ds:option(DummyValue, "", translate("Last Run"))
dv6.template = "adblock/runtime"
if parse == nil then
dv6.value = translate("n/a")
@@ -163,8 +176,8 @@ end
bl = m:section(TypedSection, "source", translate("Blocklist Sources"),
translate("Available blocklist sources. ")
.. translate("List URLs and Shallalist category selections are configurable in the 'Advanced' section.<br />")
- .. translate("Caution: To prevent OOM exceptions on low memory devices with less than 64 MB free RAM, please do not select too many lists - 5-6 should be sufficient!"))
-bl.template = "cbi/tblsection"
+ .. translate("Caution: To prevent OOM exceptions on low memory devices with less than 64 MB free RAM, please do not select more than five blocklist sources!"))
+bl.template = "adblock/blocklist"
name = bl:option(Flag, "enabled", translate("Enabled"))
name.rmempty = false
@@ -223,20 +236,38 @@ e7 = e:option(Flag, "adb_whitelist_mode", translate("Whitelist Mode"),
e7.default = e7.disabled
e7.rmempty = true
-e8 = e:option(Value, "adb_dnsdir", translate("DNS Directory"),
+e8 = e:option(Flag, "adb_dnsflush", translate("Flush DNS Cache"),
+ translate("Flush DNS Cache after adblock processing."))
+e8.default = e8.disabled
+e8.rmempty = true
+
+e9 = e:option(Flag, "adb_notify", translate("Email Notification"),
+ translate("Send notification emails in case of a processing error or if domain count is &le; 0.<br />")
+ .. translate("Please note: this needs additional 'mstmp' installation and setup (see readme)."))
+e9.default = e9.disabled
+e9.rmempty = true
+
+e10 = e:option(Value, "adb_notifycnt", translate("Email Notification Count"),
+ translate("Raise the minimum email notification count, to get emails if the overall count is less or equal to the given limit (default 0),<br />")
+ .. translate("e.g. to receive an email notification with every adblock update set this value to 150000."))
+e10.default = 0
+e10.datatype = "min(0)"
+e10.optional = true
+
+e11 = e:option(Value, "adb_dnsdir", translate("DNS Directory"),
translate("Target directory for the generated blocklist 'adb_list.overall'."))
-e8.datatype = "directory"
-e8.optional = true
+e11.datatype = "directory"
+e11.optional = true
-e9 = e:option(Value, "adb_whitelist", translate("Whitelist File"),
+e12 = e:option(Value, "adb_whitelist", translate("Whitelist File"),
translate("Full path to the whitelist file."))
-e9.datatype = "file"
-e9.default = "/etc/adblock/adblock.whitelist"
-e9.optional = true
+e12.datatype = "file"
+e12.default = "/etc/adblock/adblock.whitelist"
+e12.optional = true
-e10 = e:option(Value, "adb_triggerdelay", translate("Trigger Delay"),
+e13 = e:option(Value, "adb_triggerdelay", translate("Trigger Delay"),
translate("Additional trigger delay in seconds before adblock processing begins."))
-e10.datatype = "range(1,60)"
-e10.optional = true
+e13.datatype = "range(1,60)"
+e13.optional = true
return m
diff --git a/applications/luci-app-adblock/luasrc/view/adblock/blocklist.htm b/applications/luci-app-adblock/luasrc/view/adblock/blocklist.htm
new file mode 100644
index 000000000..aae64075f
--- /dev/null
+++ b/applications/luci-app-adblock/luasrc/view/adblock/blocklist.htm
@@ -0,0 +1,80 @@
+<%#
+Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
+This is free software, licensed under the Apache License, Version 2.0
+-%>
+
+<%-
+local rowcnt = 1
+function rowstyle()
+ rowcnt = rowcnt + 1
+ return (rowcnt % 2) + 1
+end
+
+function width(o)
+ if o.width then
+ if type(o.width) == 'number' then
+ return ' style="width:%dpx"' % o.width
+ end
+ return ' style="width:%s"' % o.width
+ end
+ return ''
+end
+-%>
+
+<style type="text/css">
+<!--
+.cbi-section-table-cell,
+.cbi-section-table-row
+{
+ text-align:left;
+ margin-right:auto;
+ margin-left:0px;
+}
+-->
+</style>
+
+<fieldset class="cbi-section" id="cbi-<%=self.config%>-<%=self.sectiontype%>">
+ <% if self.title then -%>
+ <legend><%=self.title%></legend>
+ <%- end %>
+ <div class="cbi-section-descr"><%=self.description%></div>
+ <div class="cbi-section-node">
+ <%- local count = 0 -%>
+ <table class="cbi-section-table">
+ <tr class="cbi-section-table-titles">
+ <%- if self.sectionhead then -%>
+ <th class="cbi-section-table-cell"><%=self.sectionhead%></th>
+ <%- else -%>
+ <th>&#160;</th>
+ <%- end -%>
+ <%- for i, k in pairs(self.children) do -%>
+ <th class="cbi-section-table-cell"<%=width(k)%>>
+ <%-=k.title-%>
+ </th>
+ <%- count = count + 1; end; -%>
+ </tr>
+ <%- local isempty = true
+ for i, k in ipairs(self:cfgsections()) do
+ section = k
+ isempty = false
+ scope = { valueheader = "cbi/cell_valueheader", valuefooter = "cbi/cell_valuefooter" }
+ -%>
+ <tr class="cbi-section-table-row" id="cbi-<%=self.config%>-<%=section%>">
+ <th><%=k%></th>
+ <%-
+ for k, node in ipairs(self.children) do
+ if not node.optional then
+ node:render(section, scope or {})
+ end
+ end
+ -%>
+ </tr>
+ <%- end -%>
+ <%- if isempty then -%>
+ <tr class="cbi-section-table-row">
+ <td colspan="<%=count%>"><em><br /><%:This section contains no values yet%></em></td>
+ </tr>
+ <%- end -%>
+ </table>
+ </div>
+</fieldset>
diff --git a/applications/luci-app-adblock/luasrc/view/adblock/logread.htm b/applications/luci-app-adblock/luasrc/view/adblock/logread.htm
index 5e25a549c..082ec806f 100644
--- a/applications/luci-app-adblock/luasrc/view/adblock/logread.htm
+++ b/applications/luci-app-adblock/luasrc/view/adblock/logread.htm
@@ -1,5 +1,5 @@
<%#
-Copyright 2017 Dirk Brenken (dev@brenken.org)
+Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
This is free software, licensed under the Apache License, Version 2.0
-%>
@@ -11,4 +11,10 @@ This is free software, licensed under the Apache License, Version 2.0
<textarea id="logread_id" style="width: 100%; height: 450px; border: 1px solid #cccccc; padding: 5px; font-size: 12px; font-family: monospace; resize: none;" readonly="readonly" wrap="off" rows="<%=content:cmatch("\n")+2%>"><%=content:pcdata()%></textarea>
</fieldset>
</div>
+
+<script type="text/javascript">
+ var textarea = document.getElementById('logread_id');
+ textarea.scrollTop = textarea.scrollHeight;
+</script>
+
<%+footer%>
diff --git a/applications/luci-app-adblock/luasrc/view/adblock/runtime.htm b/applications/luci-app-adblock/luasrc/view/adblock/runtime.htm
index 0221a75ed..e7827b5c3 100644
--- a/applications/luci-app-adblock/luasrc/view/adblock/runtime.htm
+++ b/applications/luci-app-adblock/luasrc/view/adblock/runtime.htm
@@ -1,10 +1,10 @@
<%#
-Copyright 2017 Dirk Brenken (dev@brenken.org)
+Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
This is free software, licensed under the Apache License, Version 2.0
-%>
<%+cbi/valueheader%>
-<input name="runtime" id="runtime" type="text" class="cbi-input-text" style="border:none;box-shadow:none;background:transparent;color:#0069d6;" value="<%=self:cfgvalue(section)%>" disabled="disabled" />
+<input name="runtime" id="runtime" type="text" class="cbi-input-text" style="outline:none;border:none;box-shadow:none;background:transparent;color:#0069d6;font-weight:bold;line-height:30px;height:30px;" value="<%=self:cfgvalue(section)%>" disabled="disabled" />
<%+cbi/valuefooter%>
diff --git a/applications/luci-app-adblock/po/it/adblock.po b/applications/luci-app-adblock/po/it/adblock.po
index af3414c99..6f3b53e4f 100644
--- a/applications/luci-app-adblock/po/it/adblock.po
+++ b/applications/luci-app-adblock/po/it/adblock.po
@@ -51,7 +51,7 @@ msgstr "Fonti lista di Blocco"
msgid ""
"Caution: To prevent OOM exceptions on low memory devices with less than 64 "
-"MB free RAM, please do not select too many lists - 5-6 should be sufficient!"
+"MB free RAM, please do not select more than five blocklist sources!"
msgstr ""
msgid ""
@@ -109,6 +109,12 @@ msgstr "Modifica Configurazione"
msgid "Edit Whitelist"
msgstr "Modifica Lista Bianca"
+msgid "Email Notification"
+msgstr ""
+
+msgid "Email Notification Count"
+msgstr ""
+
msgid "Enable Adblock"
msgstr "Attiva Adblock"
@@ -130,6 +136,12 @@ msgstr "Abilitato"
msgid "Extra Options"
msgstr "Opzioni Extra"
+msgid "Flush DNS Cache"
+msgstr ""
+
+msgid "Flush DNS Cache after adblock processing."
+msgstr ""
+
msgid ""
"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
"'libustream-ssl' or the wget 'built-in'."
@@ -208,6 +220,11 @@ msgid "Please edit this file directly in a terminal session."
msgstr ""
"Per favore modifica questo file direttamente in una sessione al terminale."
+msgid ""
+"Please note: this needs additional 'mstmp' installation and setup (see "
+"readme)."
+msgstr ""
+
msgid "Please update your adblock config file to use this package.<br />"
msgstr ""
@@ -217,6 +234,11 @@ msgstr "Interrogazione"
msgid "Query domains"
msgstr "Interrogazione domini"
+msgid ""
+"Raise the minimum email notification count, to get emails if the overall "
+"count is less or equal to the given limit (default 0),<br />"
+msgstr ""
+
msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
msgstr ""
"Reindirizza tutte le richieste DNS dalla zona 'lan' al risolvitore locale."
@@ -233,6 +255,11 @@ msgstr "Ric. SSL"
msgid "Save"
msgstr "Salva"
+msgid ""
+"Send notification emails in case of a processing error or if domain count is "
+"&le; 0.<br />"
+msgstr ""
+
msgid "Startup Trigger"
msgstr "Innesco d'Avvio"
@@ -290,6 +317,9 @@ msgstr ""
"Questo form mostra l'output del registro, prefiltrato per messaggi relativi "
"solo ad adblock."
+msgid "This section contains no values yet"
+msgstr ""
+
msgid ""
"To overwrite the default path use the 'DNS Directory' option in the extra "
"section below."
@@ -321,6 +351,11 @@ msgstr "Sì"
msgid "disabled"
msgstr "disabilitato"
+msgid ""
+"e.g. to receive an email notification with every adblock update set this "
+"value to 150000."
+msgstr ""
+
msgid "enabled"
msgstr "abilitato"
diff --git a/applications/luci-app-adblock/po/ja/adblock.po b/applications/luci-app-adblock/po/ja/adblock.po
index becef993f..f43aafb6f 100644
--- a/applications/luci-app-adblock/po/ja/adblock.po
+++ b/applications/luci-app-adblock/po/ja/adblock.po
@@ -52,11 +52,8 @@ msgstr "ブロックリスト提供元"
msgid ""
"Caution: To prevent OOM exceptions on low memory devices with less than 64 "
-"MB free RAM, please do not select too many lists - 5-6 should be sufficient!"
+"MB free RAM, please do not select more than five blocklist sources!"
msgstr ""
-"警告: RAM の空き容量が 64MB に満たないメモリー容量の小さいデバイスでは、 "
-"OutOfMemory (OOM) 例外を防ぐために、多くのリストを選択しないようにしてくださ"
-"い。5 - 6個のリストで十分です。"
msgid ""
"Choose 'none' to disable automatic startups, 'timed' to use a classic "
@@ -120,6 +117,12 @@ msgstr "設定の編集"
msgid "Edit Whitelist"
msgstr "ホワイトリストの編集"
+msgid "Email Notification"
+msgstr ""
+
+msgid "Email Notification Count"
+msgstr ""
+
msgid "Enable Adblock"
msgstr "Adblock の有効化"
@@ -143,6 +146,12 @@ msgstr "有効"
msgid "Extra Options"
msgstr "拡張オプション"
+msgid "Flush DNS Cache"
+msgstr ""
+
+msgid "Flush DNS Cache after adblock processing."
+msgstr ""
+
msgid ""
"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
"'libustream-ssl' or the wget 'built-in'."
@@ -223,6 +232,11 @@ msgstr ""
msgid "Please edit this file directly in a terminal session."
msgstr "ターミナル セッションで直接このファイルを編集してください。"
+msgid ""
+"Please note: this needs additional 'mstmp' installation and setup (see "
+"readme)."
+msgstr ""
+
msgid "Please update your adblock config file to use this package.<br />"
msgstr ""
"このパッケージを使用するには、既存の Adblock 設定ファイルを更新してください。"
@@ -234,6 +248,11 @@ msgstr "検索"
msgid "Query domains"
msgstr "ドメインの検索"
+msgid ""
+"Raise the minimum email notification count, to get emails if the overall "
+"count is less or equal to the given limit (default 0),<br />"
+msgstr ""
+
msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
msgstr ""
"'lan' ゾーンからの全 DNS クエリを、ローカル リゾルバにリダイレクトします。"
@@ -250,6 +269,11 @@ msgstr "SSL 必須"
msgid "Save"
msgstr "保存"
+msgid ""
+"Send notification emails in case of a processing error or if domain count is "
+"&le; 0.<br />"
+msgstr ""
+
msgid "Startup Trigger"
msgstr "スタートアップ トリガ"
@@ -309,6 +333,9 @@ msgstr ""
"このフォームには、システムログ内の Adblock に関連するメッセージのみが表示され"
"ます。"
+msgid "This section contains no values yet"
+msgstr ""
+
msgid ""
"To overwrite the default path use the 'DNS Directory' option in the extra "
"section below."
@@ -340,6 +367,11 @@ msgstr "はい"
msgid "disabled"
msgstr "無効"
+msgid ""
+"e.g. to receive an email notification with every adblock update set this "
+"value to 150000."
+msgstr ""
+
msgid "enabled"
msgstr "有効"
@@ -351,3 +383,12 @@ msgstr "利用不可"
msgid "paused"
msgstr "一時停止"
+
+#~ msgid ""
+#~ "Caution: To prevent OOM exceptions on low memory devices with less than "
+#~ "64 MB free RAM, please do not select too many lists - 5-6 should be "
+#~ "sufficient!"
+#~ msgstr ""
+#~ "警告: RAM の空き容量が 64MB に満たないメモリー容量の小さいデバイスでは、 "
+#~ "OutOfMemory (OOM) 例外を防ぐために、多くのリストを選択しないようにしてくだ"
+#~ "さい。5 - 6個のリストで十分です。"
diff --git a/applications/luci-app-adblock/po/pt-br/adblock.po b/applications/luci-app-adblock/po/pt-br/adblock.po
index f51791f48..e08ad6c74 100644
--- a/applications/luci-app-adblock/po/pt-br/adblock.po
+++ b/applications/luci-app-adblock/po/pt-br/adblock.po
@@ -54,7 +54,7 @@ msgstr "Fontes de listas de bloqueio"
msgid ""
"Caution: To prevent OOM exceptions on low memory devices with less than 64 "
-"MB free RAM, please do not select too many lists - 5-6 should be sufficient!"
+"MB free RAM, please do not select more than five blocklist sources!"
msgstr ""
msgid ""
@@ -110,6 +110,12 @@ msgstr "Editar Configuração"
msgid "Edit Whitelist"
msgstr "Editar Lista Permitida"
+msgid "Email Notification"
+msgstr ""
+
+msgid "Email Notification Count"
+msgstr ""
+
msgid "Enable Adblock"
msgstr "Habilitar adblock"
@@ -130,6 +136,12 @@ msgstr "Habilitado"
msgid "Extra Options"
msgstr "Opções adicionais"
+msgid "Flush DNS Cache"
+msgstr ""
+
+msgid "Flush DNS Cache after adblock processing."
+msgstr ""
+
msgid ""
"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
"'libustream-ssl' or the wget 'built-in'."
@@ -201,6 +213,11 @@ msgstr ""
msgid "Please edit this file directly in a terminal session."
msgstr "Por favor edite esse arquivo direto em uma sessão de terminal."
+msgid ""
+"Please note: this needs additional 'mstmp' installation and setup (see "
+"readme)."
+msgstr ""
+
msgid "Please update your adblock config file to use this package.<br />"
msgstr ""
@@ -210,6 +227,11 @@ msgstr "Consulta"
msgid "Query domains"
msgstr "Consulta de domínios"
+msgid ""
+"Raise the minimum email notification count, to get emails if the overall "
+"count is less or equal to the given limit (default 0),<br />"
+msgstr ""
+
msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
msgstr ""
@@ -225,6 +247,11 @@ msgstr "req. de SSL"
msgid "Save"
msgstr "Salvar"
+msgid ""
+"Send notification emails in case of a processing error or if domain count is "
+"&le; 0.<br />"
+msgstr ""
+
msgid "Startup Trigger"
msgstr ""
@@ -281,6 +308,9 @@ msgstr ""
"Esse formulário mostra a saída do syslog, pré-filtrado para mensagens do "
"adblock apenas."
+msgid "This section contains no values yet"
+msgstr ""
+
msgid ""
"To overwrite the default path use the 'DNS Directory' option in the extra "
"section below."
@@ -310,6 +340,11 @@ msgstr "Sim"
msgid "disabled"
msgstr ""
+msgid ""
+"e.g. to receive an email notification with every adblock update set this "
+"value to 150000."
+msgstr ""
+
msgid "enabled"
msgstr ""
diff --git a/applications/luci-app-adblock/po/ru/adblock.po b/applications/luci-app-adblock/po/ru/adblock.po
new file mode 100644
index 000000000..8400c6e14
--- /dev/null
+++ b/applications/luci-app-adblock/po/ru/adblock.po
@@ -0,0 +1,391 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: adblock\n"
+"POT-Creation-Date: 2017-10-22 13:00+0300\n"
+"PO-Revision-Date: 2018-01-06 12:37+0300\n"
+"Language-Team: http://cyber-place.ru\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
+
+msgid "-------"
+msgstr "-------"
+
+msgid "Adblock"
+msgstr "Adblock"
+
+msgid "Adblock Logfile"
+msgstr "Ведение системного журала Adblock-ом"
+
+msgid "Adblock Status"
+msgstr "Состояние Adblock-а"
+
+msgid "Adblock Version"
+msgstr "Версия Adblock-а"
+
+msgid "Additional trigger delay in seconds before adblock processing begins."
+msgstr "Дополнительная задержка в секундах до начала работы Adblock-a."
+
+msgid "Advanced"
+msgstr "Дополнительно"
+
+msgid "Available blocklist sources."
+msgstr "Источники списков блокировки. "
+
+msgid "Backup Directory"
+msgstr "Папка для бэкапа"
+
+msgid "Backup Mode"
+msgstr "Режим сохранения бекапа"
+
+msgid ""
+"Block access to all domains except those explicitly listed in the whitelist "
+"file."
+msgstr ""
+"Блокировать доступ ко всем доменам, кроме тех, которые явно перечислены в "
+"файле Белого списка."
+
+msgid "Blocklist Sources"
+msgstr "Источники списков блокировки"
+
+msgid ""
+"Caution: To prevent OOM exceptions on low memory devices with less than 64 "
+"MB free RAM, please do not select more than five blocklist sources!"
+msgstr ""
+"ВНИМАНИЕ: Для предотвращения возможного программного сбоя и перезагрузки, на "
+"устройствах с объемом оперативной памяти менее 64MB, не выбирайте больше 5 "
+"списков."
+
+msgid ""
+"Choose 'none' to disable automatic startups, 'timed' to use a classic "
+"timeout (default 30 sec.) or select another trigger interface."
+msgstr ""
+"Выберите 'none', чтобы отключить автоматический старт, 'timed', чтобы "
+"использовать дефолтную задержку (по умолчанию 30 сек.) или выберите другой "
+"интерфейс запуска."
+
+msgid "Collecting data..."
+msgstr "Сбор информации..."
+
+msgid ""
+"Configuration of the adblock package to block ad/abuse domains by using DNS."
+msgstr ""
+"Настройка Adblock. Приложения для блокировки ненадежных или добавления "
+"доверенных доменов используя DNS. "
+
+msgid ""
+"Create compressed blocklist backups, they will be used in case of download "
+"errors or during startup in backup mode."
+msgstr ""
+"Создавайте сжатые резервные копии списков блокировки, они будут "
+"использоваться в случае ошибок загрузки или при запуске в ручном режиме."
+
+msgid "DNS Backend (DNS Directory)"
+msgstr "DNS бэкенд (папка DNS)"
+
+msgid "DNS Directory"
+msgstr "Папка DNS"
+
+msgid "Description"
+msgstr "Описание"
+
+msgid ""
+"Do not automatically update blocklists during startup, use blocklist backups "
+"instead."
+msgstr ""
+"Не обновляйте списки блокировок автоматически во время запуска, вместо этого "
+"используйте резервные копии списков блокировок."
+
+msgid "Download Utility (SSL Library)"
+msgstr "Загрузить утилиту (библиотека SSL)"
+
+msgid ""
+"During opkg package installation use the '--force-maintainer' option to "
+"overwrite the pre-existing config file or download a fresh default config "
+"from <a href=\"%s\" target=\"_blank\">here</a>"
+msgstr ""
+"Устанавливая пакет с помощью opkg, используйте '--force-maintainer', чтобы "
+"перезаписать существующий config файл или загрузить новый дефолтный config "
+"файл <a href=\"%s\" target=\"_blank\">здесь</a>"
+
+msgid "Edit Blacklist"
+msgstr "Редактировать Черный список"
+
+msgid "Edit Configuration"
+msgstr "Редактировать config файл"
+
+msgid "Edit Whitelist"
+msgstr "Редактировать Белый список"
+
+msgid "Email Notification"
+msgstr "Уведомление на email"
+
+msgid "Email Notification Count"
+msgstr "Кол-во уведомлений на email"
+
+msgid "Enable Adblock"
+msgstr "Включить Adblock"
+
+msgid "Enable Blocklist Backup"
+msgstr "Включить сохранение списка блокировок"
+
+msgid ""
+"Enable memory intense overall sort / duplicate removal on low memory devices "
+"(&lt; 64 MB free RAM)"
+msgstr ""
+"Включите полную сортировку / удаление дубликатов памяти на устройствах с "
+"низким объемом памяти (&lt; 64 MB свободной оперативной памяти)."
+
+msgid "Enable verbose debug logging in case of any processing error."
+msgstr "Включите подробное ведение журнала отладки в случае ошибки обработки."
+
+msgid "Enabled"
+msgstr "Включено"
+
+msgid "Extra Options"
+msgstr "Дополнительные настройки"
+
+msgid "Flush DNS Cache"
+msgstr "Очистка кэша DNS"
+
+msgid "Flush DNS Cache after adblock processing."
+msgstr "Очистки DNS-кэша после обработки Adblock-ом."
+
+msgid ""
+"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
+"'libustream-ssl' or the wget 'built-in'."
+msgstr ""
+"Для SSL-защищенных источников списков блокировки, вам нужны подходящие SSL "
+"библиотеки, например 'libustream-ssl' или wget 'built-in'."
+
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">check the online "
+"documentation</a>"
+msgstr ""
+"Для получения дополнительной информации <a href=\"%s\" target=\"_blank\"> "
+"смотрите онлайн документацию</a>."
+
+msgid "Force Local DNS"
+msgstr "Назначить локальный DNS"
+
+msgid "Force Overall Sort"
+msgstr "Назначить полную сортировку"
+
+msgid "Full path to the whitelist file."
+msgstr "Полный путь к файлу Белого списка."
+
+msgid "Input file not found, please check your configuration."
+msgstr "Введенный файл не найден, проверьте ваши настройки."
+
+msgid "Invalid domain specified!"
+msgstr "Задан недопустимый домен!"
+
+msgid "Last Run"
+msgstr "Последнее время запуска"
+
+msgid ""
+"List URLs and Shallalist category selections are configurable in the "
+"'Advanced' section.<br />"
+msgstr ""
+"Список URL-адресов и настройка списка использования, настраиваются на "
+"странице 'Дополнительно'.<br />"
+
+msgid ""
+"List of available network interfaces. Usually the startup will be triggered "
+"by the 'wan' interface.<br />"
+msgstr ""
+"Список доступных сетевых интерфейсов. По умолчанию установлен 'wan' "
+"интерфейс.<br />"
+
+msgid ""
+"List of supported DNS backends with their default list export directory.<br /"
+">"
+msgstr ""
+"Список поддерживаемых серверов DNS с дефолтным списком - перемещается в "
+"папку.<br />"
+
+msgid "Loading"
+msgstr "Загрузка"
+
+msgid "No"
+msgstr "Нет"
+
+msgid ""
+"Options for further tweaking in case the defaults are not suitable for you."
+msgstr ""
+"Варианты для дальнейшей обработки, если значения по умолчанию вам не "
+"подходят."
+
+msgid "Overall Domains"
+msgstr "Итоговые домены"
+
+msgid "Overview"
+msgstr "Главное меню"
+
+msgid ""
+"Please add only one domain per line. Comments introduced with '#' are "
+"allowed - ip addresses, wildcards and regex are not."
+msgstr ""
+"Добавляйте только один домен в строке. Комментарии вводятся используя '#' "
+"разрешенные - ip адреса, метасимволы и нерегулярные выражения."
+
+msgid "Please edit this file directly in a terminal session."
+msgstr "Отредактируйте данный файл, строго в терминале."
+
+msgid ""
+"Please note: this needs additional 'mstmp' installation and setup (see "
+"readme)."
+msgstr ""
+"Внимание: для этого требуется дополнительная установка и настройка "
+"'mstmp' (см. readme)."
+
+msgid "Please update your adblock config file to use this package.<br />"
+msgstr "Обновите config файл Adblock, чтобы использовать этот пакет.<br />"
+
+msgid "Query"
+msgstr "Запрос"
+
+msgid "Query domains"
+msgstr "Запрос доменов"
+
+msgid ""
+"Raise the minimum email notification count, to get emails if the overall "
+"count is less or equal to the given limit (default 0),<br />"
+msgstr ""
+"Увеличьте количество уведомлений по email, чтобы получить сообщения, если "
+"общее количество меньше или равно заданному пределу (по умолчанию 0),<br />"
+
+msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
+msgstr ""
+"Перенаправлять все DNS запросы с интерфейса 'lan' на обработку Adblock-ом."
+
+msgid "Resume"
+msgstr "Возобновить"
+
+msgid "Runtime Information"
+msgstr "Текущая информация"
+
+msgid "SSL req."
+msgstr "Запрос SSL"
+
+msgid "Save"
+msgstr "Сохранить"
+
+msgid ""
+"Send notification emails in case of a processing error or if domain count is "
+"&le; 0.<br />"
+msgstr ""
+"Отправлять по электронной почте уведомления в случае ошибки обработки или "
+"если домен &le; 0.<br />"
+
+msgid "Startup Trigger"
+msgstr "Задержка запуска"
+
+msgid "Suspend"
+msgstr "Приостановить"
+
+msgid "Suspend / Resume Adblock"
+msgstr "Приостановить / Возобновить Adblock"
+
+msgid ""
+"Target directory for adblock backups. Please use only non-volatile disks, e."
+"g. an external usb stick."
+msgstr ""
+"Папка для резервного копирования Adblock. Используйте такие накопители, как "
+"usb флешка."
+
+msgid "Target directory for the generated blocklist 'adb_list.overall'."
+msgstr "Целевая папка для создания списка блокировки 'adb_list.overall'."
+
+msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
+msgstr ""
+"Размер файла слишком большой, для онлайн редактирования в LuCI (&gt; 512 KB)."
+
+msgid ""
+"This form allows you to modify the content of the adblock blacklist (%s)."
+"<br />"
+msgstr ""
+"Страница позволяет изменять содержимое Черного списка Adblock (%s).<br />"
+
+msgid ""
+"This form allows you to modify the content of the adblock whitelist (%s)."
+"<br />"
+msgstr ""
+"Страница позволяет изменять содержимое Белого списка Adblock (%s).<br />"
+
+msgid ""
+"This form allows you to modify the content of the main adblock configuration "
+"file (/etc/config/adblock)."
+msgstr ""
+"Страница позволяет изменять содержимое главного config файла Adblock-a (/etc/"
+"config/adblock)."
+
+msgid ""
+"This form allows you to query active block lists for certain domains, e.g. "
+"for whitelisting."
+msgstr ""
+"Страница позволяет запросить домены для конкретных списков, например для "
+"Белого списка."
+
+msgid ""
+"This form shows the syslog output, pre-filtered for adblock related messages "
+"only."
+msgstr "Страница системного журнала. Только сообщения связанные с Adblock."
+
+msgid "This section contains no values yet"
+msgstr "Страница не содержит значений"
+
+msgid ""
+"To overwrite the default path use the 'DNS Directory' option in the extra "
+"section below."
+msgstr ""
+"Чтобы заменить дефолтную, используется 'Папка DNS' расширенный вариант, "
+"раздел ниже."
+
+msgid "Trigger Delay"
+msgstr "Задержка запуска"
+
+msgid "Verbose Debug Logging"
+msgstr "Подробное ведение журнала отладки"
+
+msgid "View Logfile"
+msgstr "Системный журнал"
+
+msgid "Waiting for command to complete..."
+msgstr "Ожидание выполнения команды..."
+
+msgid "Whitelist File"
+msgstr "Файл Белого списка"
+
+msgid "Whitelist Mode"
+msgstr "Режим Белого списка"
+
+msgid "Yes"
+msgstr "Да"
+
+msgid "disabled"
+msgstr "отключено"
+
+msgid ""
+"e.g. to receive an email notification with every adblock update set this "
+"value to 150000."
+msgstr ""
+"например, чтобы получать уведомления по электронной почте при каждом "
+"обновлении Adblock-а установите значение 150000."
+
+msgid "enabled"
+msgstr "включено"
+
+msgid "error"
+msgstr "ошибка"
+
+msgid "n/a"
+msgstr "нет данных"
+
+msgid "paused"
+msgstr "остановлено"
diff --git a/applications/luci-app-adblock/po/sv/adblock.po b/applications/luci-app-adblock/po/sv/adblock.po
index 503c5f6ef..927e8af4f 100644
--- a/applications/luci-app-adblock/po/sv/adblock.po
+++ b/applications/luci-app-adblock/po/sv/adblock.po
@@ -41,7 +41,7 @@ msgstr "Källor för blockeringslistor"
msgid ""
"Caution: To prevent OOM exceptions on low memory devices with less than 64 "
-"MB free RAM, please do not select too many lists - 5-6 should be sufficient!"
+"MB free RAM, please do not select more than five blocklist sources!"
msgstr ""
msgid ""
@@ -100,6 +100,12 @@ msgstr "Redigerar konfigurationen"
msgid "Edit Whitelist"
msgstr "Redigera vitlista"
+msgid "Email Notification"
+msgstr ""
+
+msgid "Email Notification Count"
+msgstr ""
+
msgid "Enable Adblock"
msgstr "Aktivera adblock"
@@ -120,6 +126,12 @@ msgstr "Aktiverad"
msgid "Extra Options"
msgstr "Extra alternativ"
+msgid "Flush DNS Cache"
+msgstr ""
+
+msgid "Flush DNS Cache after adblock processing."
+msgstr ""
+
msgid ""
"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
"'libustream-ssl' or the wget 'built-in'."
@@ -188,6 +200,11 @@ msgstr ""
msgid "Please edit this file directly in a terminal session."
msgstr "Vänligen redigera den här filen direkt i en terminal-session."
+msgid ""
+"Please note: this needs additional 'mstmp' installation and setup (see "
+"readme)."
+msgstr ""
+
msgid "Please update your adblock config file to use this package.<br />"
msgstr ""
@@ -197,6 +214,11 @@ msgstr "Fråga"
msgid "Query domains"
msgstr "Fråga efter domäner"
+msgid ""
+"Raise the minimum email notification count, to get emails if the overall "
+"count is less or equal to the given limit (default 0),<br />"
+msgstr ""
+
msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
msgstr ""
@@ -212,6 +234,11 @@ msgstr "SSL-rek."
msgid "Save"
msgstr "Spara"
+msgid ""
+"Send notification emails in case of a processing error or if domain count is "
+"&le; 0.<br />"
+msgstr ""
+
msgid "Startup Trigger"
msgstr "Uppstartslösare"
@@ -263,6 +290,9 @@ msgid ""
"only."
msgstr ""
+msgid "This section contains no values yet"
+msgstr ""
+
msgid ""
"To overwrite the default path use the 'DNS Directory' option in the extra "
"section below."
@@ -292,6 +322,11 @@ msgstr "Ja"
msgid "disabled"
msgstr "inaktiverad"
+msgid ""
+"e.g. to receive an email notification with every adblock update set this "
+"value to 150000."
+msgstr ""
+
msgid "enabled"
msgstr "aktiverad"
diff --git a/applications/luci-app-adblock/po/templates/adblock.pot b/applications/luci-app-adblock/po/templates/adblock.pot
index 969833351..8fcff0791 100644
--- a/applications/luci-app-adblock/po/templates/adblock.pot
+++ b/applications/luci-app-adblock/po/templates/adblock.pot
@@ -41,7 +41,7 @@ msgstr ""
msgid ""
"Caution: To prevent OOM exceptions on low memory devices with less than 64 "
-"MB free RAM, please do not select too many lists - 5-6 should be sufficient!"
+"MB free RAM, please do not select more than five blocklist sources!"
msgstr ""
msgid ""
@@ -93,6 +93,12 @@ msgstr ""
msgid "Edit Whitelist"
msgstr ""
+msgid "Email Notification"
+msgstr ""
+
+msgid "Email Notification Count"
+msgstr ""
+
msgid "Enable Adblock"
msgstr ""
@@ -113,6 +119,12 @@ msgstr ""
msgid "Extra Options"
msgstr ""
+msgid "Flush DNS Cache"
+msgstr ""
+
+msgid "Flush DNS Cache after adblock processing."
+msgstr ""
+
msgid ""
"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
"'libustream-ssl' or the wget 'built-in'."
@@ -180,6 +192,11 @@ msgstr ""
msgid "Please edit this file directly in a terminal session."
msgstr ""
+msgid ""
+"Please note: this needs additional 'mstmp' installation and setup (see "
+"readme)."
+msgstr ""
+
msgid "Please update your adblock config file to use this package.<br />"
msgstr ""
@@ -189,6 +206,11 @@ msgstr ""
msgid "Query domains"
msgstr ""
+msgid ""
+"Raise the minimum email notification count, to get emails if the overall "
+"count is less or equal to the given limit (default 0),<br />"
+msgstr ""
+
msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
msgstr ""
@@ -204,6 +226,11 @@ msgstr ""
msgid "Save"
msgstr ""
+msgid ""
+"Send notification emails in case of a processing error or if domain count is "
+"&le; 0.<br />"
+msgstr ""
+
msgid "Startup Trigger"
msgstr ""
@@ -249,6 +276,9 @@ msgid ""
"only."
msgstr ""
+msgid "This section contains no values yet"
+msgstr ""
+
msgid ""
"To overwrite the default path use the 'DNS Directory' option in the extra "
"section below."
@@ -278,6 +308,11 @@ msgstr ""
msgid "disabled"
msgstr ""
+msgid ""
+"e.g. to receive an email notification with every adblock update set this "
+"value to 150000."
+msgstr ""
+
msgid "enabled"
msgstr ""
diff --git a/applications/luci-app-adblock/po/zh-cn/adblock.po b/applications/luci-app-adblock/po/zh-cn/adblock.po
index 08032cab0..9e3a0284f 100644
--- a/applications/luci-app-adblock/po/zh-cn/adblock.po
+++ b/applications/luci-app-adblock/po/zh-cn/adblock.po
@@ -55,7 +55,7 @@ msgstr "拦截列表来源"
msgid ""
"Caution: To prevent OOM exceptions on low memory devices with less than 64 "
-"MB free RAM, please do not select too many lists - 5-6 should be sufficient!"
+"MB free RAM, please do not select more than five blocklist sources!"
msgstr ""
msgid ""
@@ -109,6 +109,12 @@ msgstr "编辑设置"
msgid "Edit Whitelist"
msgstr "编辑白名单"
+msgid "Email Notification"
+msgstr ""
+
+msgid "Email Notification Count"
+msgstr ""
+
msgid "Enable Adblock"
msgstr "启用 Adblock"
@@ -129,6 +135,12 @@ msgstr "已启用"
msgid "Extra Options"
msgstr "额外选项"
+msgid "Flush DNS Cache"
+msgstr ""
+
+msgid "Flush DNS Cache after adblock processing."
+msgstr ""
+
msgid ""
"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
"'libustream-ssl' or the wget 'built-in'."
@@ -200,6 +212,11 @@ msgstr ""
msgid "Please edit this file directly in a terminal session."
msgstr "请在终端会话中直接编辑此文件。"
+msgid ""
+"Please note: this needs additional 'mstmp' installation and setup (see "
+"readme)."
+msgstr ""
+
msgid "Please update your adblock config file to use this package.<br />"
msgstr ""
@@ -209,6 +226,11 @@ msgstr "查询"
msgid "Query domains"
msgstr "查询域"
+msgid ""
+"Raise the minimum email notification count, to get emails if the overall "
+"count is less or equal to the given limit (default 0),<br />"
+msgstr ""
+
msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
msgstr "将所有 DNS 查询从“lan”区域重定向到本地解析器。"
@@ -224,6 +246,11 @@ msgstr "SSL 要求"
msgid "Save"
msgstr "保存"
+msgid ""
+"Send notification emails in case of a processing error or if domain count is "
+"&le; 0.<br />"
+msgstr ""
+
msgid "Startup Trigger"
msgstr "启动触发器"
@@ -269,6 +296,9 @@ msgid ""
"only."
msgstr "此表单显示系统日志输出,仅针对 adblock 相关的消息进行了预筛选。"
+msgid "This section contains no values yet"
+msgstr ""
+
msgid ""
"To overwrite the default path use the 'DNS Directory' option in the extra "
"section below."
@@ -298,6 +328,11 @@ msgstr "是"
msgid "disabled"
msgstr "已禁用"
+msgid ""
+"e.g. to receive an email notification with every adblock update set this "
+"value to 150000."
+msgstr ""
+
msgid "enabled"
msgstr "已启用"
diff --git a/applications/luci-app-adblock/po/zh-tw/adblock.po b/applications/luci-app-adblock/po/zh-tw/adblock.po
index f838fa043..d468c96f5 100644
--- a/applications/luci-app-adblock/po/zh-tw/adblock.po
+++ b/applications/luci-app-adblock/po/zh-tw/adblock.po
@@ -55,7 +55,7 @@ msgstr "攔截列表來源"
msgid ""
"Caution: To prevent OOM exceptions on low memory devices with less than 64 "
-"MB free RAM, please do not select too many lists - 5-6 should be sufficient!"
+"MB free RAM, please do not select more than five blocklist sources!"
msgstr ""
msgid ""
@@ -109,6 +109,12 @@ msgstr "編輯設定"
msgid "Edit Whitelist"
msgstr "編輯白名單"
+msgid "Email Notification"
+msgstr ""
+
+msgid "Email Notification Count"
+msgstr ""
+
msgid "Enable Adblock"
msgstr "啟用 Adblock"
@@ -129,6 +135,12 @@ msgstr "已啟用"
msgid "Extra Options"
msgstr "額外選項"
+msgid "Flush DNS Cache"
+msgstr ""
+
+msgid "Flush DNS Cache after adblock processing."
+msgstr ""
+
msgid ""
"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
"'libustream-ssl' or the wget 'built-in'."
@@ -200,6 +212,11 @@ msgstr ""
msgid "Please edit this file directly in a terminal session."
msgstr "請在終端會話中直接編輯此檔案。"
+msgid ""
+"Please note: this needs additional 'mstmp' installation and setup (see "
+"readme)."
+msgstr ""
+
msgid "Please update your adblock config file to use this package.<br />"
msgstr ""
@@ -209,6 +226,11 @@ msgstr "查詢"
msgid "Query domains"
msgstr "查詢域"
+msgid ""
+"Raise the minimum email notification count, to get emails if the overall "
+"count is less or equal to the given limit (default 0),<br />"
+msgstr ""
+
msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
msgstr "將所有 DNS 查詢從“lan”區域重定向到本地解析器。"
@@ -224,6 +246,11 @@ msgstr "SSL 要求"
msgid "Save"
msgstr "儲存"
+msgid ""
+"Send notification emails in case of a processing error or if domain count is "
+"&le; 0.<br />"
+msgstr ""
+
msgid "Startup Trigger"
msgstr "啟動觸發器"
@@ -269,6 +296,9 @@ msgid ""
"only."
msgstr "此表單顯示系統日誌輸出,僅針對 adblock 相關的訊息進行了預篩選。"
+msgid "This section contains no values yet"
+msgstr ""
+
msgid ""
"To overwrite the default path use the 'DNS Directory' option in the extra "
"section below."
@@ -298,6 +328,11 @@ msgstr "是"
msgid "disabled"
msgstr "已禁用"
+msgid ""
+"e.g. to receive an email notification with every adblock update set this "
+"value to 150000."
+msgstr ""
+
msgid "enabled"
msgstr "已啟用"
diff --git a/applications/luci-app-advanced-reboot/Makefile b/applications/luci-app-advanced-reboot/Makefile
index 3a886eb8d..5722b429e 100644
--- a/applications/luci-app-advanced-reboot/Makefile
+++ b/applications/luci-app-advanced-reboot/Makefile
@@ -7,13 +7,13 @@ PKG_LICENSE:=GPL-3.0+
PKG_MAINTAINER:=Stan Grishin <stangri@melmac.net>
LUCI_TITLE:=Advanced Linksys Reboot Web UI
-LUCI_DESCRIPTION:=Provides Web UI (found under System/Advanced Reboot) to reboot supported Linksys routers to\
+LUCI_DESCRIPTION:=Provides Web UI (found under System/Advanced Reboot) to reboot supported Linksys and ZyXEL routers to\
an altnerative partition. Also provides Web UI to shut down (power off) your device. Supported dual-partition\
routers are listed at https://github.com/stangri/openwrt-luci/blob/luci-app-advanced-reboot/applications/luci-app-advanced-reboot/README.md
LUCI_DEPENDS:=+luci
LUCI_PKGARCH:=all
-PKG_RELEASE:=23
+PKG_RELEASE:=25
include ../../luci.mk
diff --git a/applications/luci-app-advanced-reboot/README.md b/applications/luci-app-advanced-reboot/README.md
index ee87a0002..cfee18810 100644
--- a/applications/luci-app-advanced-reboot/README.md
+++ b/applications/luci-app-advanced-reboot/README.md
@@ -5,15 +5,16 @@ This package allows you to reboot to an alternative partition on supported (dual
## Supported Devices
Currently supported dual-partition devices include:
+- Linksys EA3500
+- Linksys E4200v2
+- Linksys EA4500
+- Linksys EA8500
- Linksys WRT1200AC
- Linksys WRT1900AC
- Linksys WRT1900ACv2
- Linksys WRT1900ACS
- Linksys WRT3200ACM
-- Linksys E4200v2
-- Linksys EA4500
-- Linksys EA8500
-
+- ZyXEL NBG6817
If you're interested in having your device supported, please post in [LEDE Project Forum Support Thread](https://forum.lede-project.org/t/web-ui-to-reboot-to-another-partition-dual-partition-routers/3423).
## Screenshot (luci-app-advanced-reboot)
@@ -28,8 +29,8 @@ opkg install luci-app-advanced-reboot
## Notes/Known Issues
- When you reboot to a different partition, your current settings (WiFi SSID/password, etc.) will not apply to a different partition. Different partitions might have completely different settings and even firmware.
-- If you reboot to a partition which doesn't allow you to switch boot partitions (like stock Linksys firmware), you might not be able to boot back to OpenWrt/LEDE Project unless you reflash it, loosing all the settings.
+- If you reboot to a partition which doesn't allow you to switch boot partitions (like stock vendor firmware), you might not be able to boot back to OpenWrt/LEDE Project unless you reflash it, loosing all the settings.
- Some devices allow you to trigger reboot to alternative partition by interrupting boot 3 times in a row (by resetting/switching off the device or pulling power). As these methods might be different for different devices, do your own homework.
## Thanks
-I'd like to thank everyone who helped create, test and troubleshoot this package. Without contributions from [@hnyman](https://github.com/hnyman) and [@jpstyves](https://github.com/jpstyves) it wouldn't have been possible.
+I'd like to thank everyone who helped create, test and troubleshoot this package. Without contributions from [@hnyman](https://github.com/hnyman), [@jpstyves](https://github.com/jpstyves) and [@slh](https://github.com/pkgadd) it wouldn't have been possible.
diff --git a/applications/luci-app-advanced-reboot/luasrc/controller/advanced_reboot.lua b/applications/luci-app-advanced-reboot/luasrc/controller/advanced_reboot.lua
index 2b55217b8..13d1c73cc 100644
--- a/applications/luci-app-advanced-reboot/luasrc/controller/advanced_reboot.lua
+++ b/applications/luci-app-advanced-reboot/luasrc/controller/advanced_reboot.lua
@@ -5,15 +5,18 @@ module("luci.controller.advanced_reboot", package.seeall)
-- device, board_name, part1, part2, offset, env_var_1, value_1_1, value_1_2, env_var_2, value_2_1, value_2_2
devices = {
+ {"Linksys EA3500", "linksys-audi", "mtd3", "mtd5", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
+ {"Linksys E4200v2/EA4500", "linksys-viper", "mtd3", "mtd5", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
+ {"Linksys EA8500", "ea8500", "mtd13", "mtd15", 32, "boot_part", 1, 2},
{"Linksys WRT1200AC", "armada-385-linksys-caiman", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
{"Linksys WRT1900AC", "armada-xp-linksys-mamba", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
{"Linksys WRT1900ACv2", "armada-385-linksys-cobra", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
{"Linksys WRT1900ACS", "armada-385-linksys-shelby", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
{"Linksys WRT3200ACM", "armada-385-linksys-rango", "mtd5", "mtd7", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
- {"Linksys E4200v2/EA4500", "linksys-viper", "mtd3", "mtd5", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
- {"Linksys EA8500", "ea8500", "mtd13", "mtd15", 32, "boot_part", 1, 2}
+ {"ZyXEL NBG6817","nbg6817","mmcblk0p4","mmcblk0p7",32,nil,255,1}
}
+errorMessage = ""
board_name = luci.util.trim(luci.sys.exec("cat /tmp/sysinfo/board_name"))
for i=1, #devices do
if board_name and devices[i][2] == board_name then
@@ -41,14 +44,29 @@ for i=1, #devices do
if string.find(partition_two_label, "LEDE") then partition_two_os = "LEDE" end
if string.find(partition_two_label, "OpenWrt") then partition_two_os = "OpenWrt" end
if string.find(partition_two_label, "Linksys") then partition_two_os = "Linksys" end
+ if device_name and device_name == "ZyXEL NBG6817" then
+ if not partition_one_os then partition_one_os = "ZyXEL" end
+ if not partition_two_os then partition_two_os = "ZyXEL" end
+ end
if not partition_one_os then partition_one_os = "Unknown" end
if not partition_two_os then partition_two_os = "Unknown" end
if partition_one_os and partition_one_version then partition_one_os = partition_one_os .. " (Linux " .. partition_one_version .. ")" end
if partition_two_os and partition_two_version then partition_two_os = partition_two_os .. " (Linux " .. partition_two_version .. ")" end
- if nixio.fs.access("/usr/sbin/fw_printenv") and nixio.fs.access("/usr/sbin/fw_setenv") then
- current_partition = tonumber(luci.util.trim(luci.sys.exec("/usr/sbin/fw_printenv -n " .. boot_envvar1)))
- other_partition = current_partition == boot_envvar1_partition_one and boot_envvar1_partition_two or boot_envvar1_partition_one
+
+ if device_name and device_name == "ZyXEL NBG6817" then
+ if not zyxelFlagPartition then zyxelFlagPartition = luci.util.trim(luci.sys.exec("source /lib/functions.sh; find_mtd_part 0:DUAL_FLAG")) end
+ if not zyxelFlagPartition then
+ errorMessage = errorMessage .. luci.i18n.translate("Unable to find Dual Boot Flag Partition." .. " ")
+ luci.util.perror(luci.i18n.translate("Unable to find Dual Boot Flag Partition."))
+ else
+ current_partition = tonumber(luci.sys.exec("dd if=" .. zyxelFlagPartition .. " bs=1 count=1 2>/dev/null | hexdump -n 1 -e '1/1 \"%d\"'"))
+ end
+ else
+ if nixio.fs.access("/usr/sbin/fw_printenv") and nixio.fs.access("/usr/sbin/fw_setenv") then
+ current_partition = tonumber(luci.util.trim(luci.sys.exec("/usr/sbin/fw_printenv -n " .. boot_envvar1)))
+ end
end
+ other_partition = current_partition == boot_envvar1_partition_two and boot_envvar1_partition_one or boot_envvar1_partition_two
end
end
@@ -70,8 +88,19 @@ function action_reboot()
end
function action_altreboot()
+ local zyxelFlagPartition, zyxelBootFlag, zyxelNewBootFlag, errorCode, curEnvSetting, newEnvSetting
+ errorMessage = ""
+ errorCode = 0
if luci.http.formvalue("cancel") then
luci.http.redirect(luci.dispatcher.build_url('admin/system/advanced_reboot'))
+-- luci.template.render("advanced_reboot/advanced_reboot",{
+-- device_name=device_name,
+-- boot_envvar1_partition_one=boot_envvar1_partition_one,
+-- partition_one_os=partition_one_os,
+-- boot_envvar1_partition_two=boot_envvar1_partition_two,
+-- partition_two_os=partition_two_os,
+-- current_partition=current_partition,
+-- errorMessage = luci.i18n.translate("Alternative reboot cancelled.")})
return
end
local step = tonumber(luci.http.formvalue("step") or 1)
@@ -79,21 +108,72 @@ function action_altreboot()
if device_name and nixio.fs.access("/usr/sbin/fw_printenv") and nixio.fs.access("/usr/sbin/fw_setenv") then
luci.template.render("advanced_reboot/alternative_reboot",{})
else
- luci.template.render("advanced_reboot/advanced_reboot",{})
+ luci.template.render("advanced_reboot/advanced_reboot",{errorMessage = luci.i18n.translate("No access to fw_printenv or fw_printenv!")})
end
elseif step == 2 then
- luci.template.render("admin_system/applyreboot", {
- title = luci.i18n.translate("Rebooting..."),
- msg = luci.i18n.translate("The system is rebooting to an alternative partition now.<br /> DO NOT POWER OFF THE DEVICE!<br /> Wait a few minutes before you try to reconnect. It might be necessary to renew the address of your computer to reach the device again, depending on your settings."),
- addr = luci.ip.new(uci.cursor():get("network", "lan", "ipaddr")) or "192.168.1.1"
- })
- if boot_envvar1 then env1 = tonumber(luci.util.trim(luci.sys.exec("/usr/sbin/fw_printenv -n " .. boot_envvar1))) end
- if boot_envvar2 then env2 = luci.util.trim(luci.sys.exec("/usr/sbin/fw_printenv -n " .. boot_envvar2)) end
- if env1 and env1 == boot_envvar1_partition_one then luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar1 .. " " .. boot_envvar1_partition_two) end
- if env1 and env1 == boot_envvar1_partition_two then luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar1 .. " " .. boot_envvar1_partition_one) end
- if env2 and env2 == boot_envvar2_partition_one then luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar2 .. " '" .. boot_envvar2_partition_two .. "'") end
- if env2 and env2 == boot_envvar2_partition_two then luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar2 .. " '" .. boot_envvar2_partition_one .. "'") end
- luci.sys.reboot()
+ if boot_envvar1 or boot_envvar2 then -- Linksys devices
+ if boot_envvar1 then
+ curEnvSetting = tonumber(luci.util.trim(luci.sys.exec("/usr/sbin/fw_printenv -n " .. boot_envvar1)))
+ if not curEnvSetting then
+ errorMessage = errorMessage .. luci.i18n.translate("Unable to obtain firmware environment variable") .. ": " .. boot_envvar1 .. ". "
+ luci.util.perror(luci.i18n.translate("Unable to obtain firmware environment variable") .. ": " .. boot_envvar1 .. ".")
+ else
+ newEnvSetting = curEnvSetting == boot_envvar1_partition_one and boot_envvar1_partition_two or boot_envvar1_partition_one
+ errorCode = luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar1 .. " " .. newEnvSetting)
+ if errorCode ~= 0 then
+ errorMessage = errorMessage .. luci.i18n.translate("Unable to set firmware environment variable") .. ": " .. boot_envvar1 .. " " .. luci.i18n.translate("to") .. " " .. newEnvSetting .. ". "
+ luci.util.perror(luci.i18n.translate("Unable to set firmware environment variable") .. ": " .. boot_envvar1 .. " " .. luci.i18n.translate("to") .. " " .. newEnvSetting .. ".")
+ end
+ end
+ end
+ if boot_envvar2 then
+ curEnvSetting = luci.util.trim(luci.sys.exec("/usr/sbin/fw_printenv -n " .. boot_envvar2))
+ if not curEnvSetting then
+ errorMessage = errorMessage .. luci.i18n.translate("Unable to obtain firmware environment variable") .. ": " .. boot_envvar2 .. ". "
+ luci.util.perror(luci.i18n.translate("Unable to obtain firmware environment variable") .. ": " .. boot_envvar2 .. ".")
+ else
+ newEnvSetting = curEnvSetting == boot_envvar2_partition_one and boot_envvar2_partition_two or boot_envvar2_partition_one
+ errorCode = luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar2 .. " '" .. newEnvSetting .. "'")
+ if errorCode ~= 0 then
+ errorMessage = errorMessage .. luci.i18n.translate("Unable to set firmware environment variable") .. ": " .. boot_envvar2 .. " " .. luci.i18n.translate("to") .. " " .. newEnvSetting .. ". "
+ luci.util.perror(luci.i18n.translate("Unable to set firmware environment variable") .. ": " .. boot_envvar2 .. " " .. luci.i18n.translate("to") .. " " .. newEnvSetting .. ".")
+ end
+ end
+ end
+ else -- NetGear device
+ if not zyxelFlagPartition then zyxelFlagPartition = luci.util.trim(luci.sys.exec("source /lib/functions.sh; find_mtd_part 0:DUAL_FLAG")) end
+ if not zyxelFlagPartition then
+ errorMessage = errorMessage .. luci.i18n.translate("Unable to find Dual Boot Flag Partition." .. " ")
+ luci.util.perror(luci.i18n.translate("Unable to find Dual Boot Flag Partition."))
+ else
+ zyxelBootFlag = tonumber(luci.sys.exec("dd if=" .. zyxelFlagPartition .. " bs=1 count=1 2>/dev/null | hexdump -n 1 -e '1/1 \"%d\"'"))
+ zyxelNewBootFlag = zyxelBootFlag and zyxelBootFlag == 1 and "\\xff" or "\\x01"
+ if zyxelNewBootFlag then
+ errorCode = luci.sys.call("printf \"" .. zyxelNewBootFlag .. "\" >" .. zyxelFlagPartition )
+ if errorCode ~= 0 then
+ errorMessage = errorMessage .. luci.i18n.translate("Unable to set Dual Boot Flag Partition entry for partition") .. ": " .. zyxelFlagPartition .. ". "
+ luci.util.perror(luci.i18n.translate("Unable to set Dual Boot Flag Partition entry for partition") .. ": " .. zyxelFlagPartition .. ".")
+ end
+ end
+ end
+ end
+ if errorMessage == "" then
+ luci.template.render("admin_system/applyreboot", {
+ title = luci.i18n.translate("Rebooting..."),
+ msg = luci.i18n.translate("The system is rebooting to an alternative partition now.<br /> DO NOT POWER OFF THE DEVICE!<br /> Wait a few minutes before you try to reconnect. It might be necessary to renew the address of your computer to reach the device again, depending on your settings."),
+ addr = luci.ip.new(uci.cursor():get("network", "lan", "ipaddr")) or "192.168.1.1"
+ })
+ luci.sys.reboot()
+ else
+ luci.template.render("advanced_reboot/advanced_reboot",{
+ device_name=device_name,
+ boot_envvar1_partition_one=boot_envvar1_partition_one,
+ partition_one_os=partition_one_os,
+ boot_envvar1_partition_two=boot_envvar1_partition_two,
+ partition_two_os=partition_two_os,
+ current_partition=current_partition,
+ errorMessage = errorMessage})
+ end
end
end
diff --git a/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm b/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm
index 206d25054..0629c84b3 100644
--- a/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm
+++ b/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm
@@ -14,6 +14,10 @@
<p class="alert-message warning"><%:Warning: There are unsaved changes that will get lost on reboot!%></p>
<%- end -%>
+<%- if errorMessage and errorMessage ~= "" then -%>
+ <p class="alert-message warning"><%:ERROR: %><%=errorMessage%></p>
+<%- end -%>
+
<%- if device_name then -%>
<fieldset class="cbi-section">
<legend><%=device_name%><%: Partitions%></legend>
@@ -26,7 +30,7 @@
</tr>
<tr class="cbi-section-table-row">
<td>
- <%=boot_envvar1_partition_one%>
+ <%=string.format("%X", boot_envvar1_partition_one)%>
</td>
<td>
<%- if boot_envvar1_partition_one == current_partition then -%><%:Current%><%- else -%><%:Alternative%><%- end -%>
@@ -50,7 +54,7 @@
</tr>
<tr class="cbi-section-table-row">
<td>
- <%=boot_envvar1_partition_two%>
+ <%=string.format("%X", boot_envvar1_partition_two)%>
</td>
<td>
<%- if boot_envvar1_partition_two == current_partition then -%><%:Current%><%- else -%><%:Alternative%><%- end -%>
diff --git a/applications/luci-app-advanced-reboot/po/ru/advanced-reboot.po b/applications/luci-app-advanced-reboot/po/ru/advanced-reboot.po
new file mode 100644
index 000000000..75d463677
--- /dev/null
+++ b/applications/luci-app-advanced-reboot/po/ru/advanced-reboot.po
@@ -0,0 +1,163 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: advanced-reboot\n"
+"POT-Creation-Date: 2017-11-30 15:20+0300\n"
+"PO-Revision-Date: 2018-01-05 19:53+0300\n"
+"Language-Team: http://cyber-place.ru\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
+
+msgid "Action"
+msgstr "Действие"
+
+msgid "Advanced Reboot"
+msgstr "Дополнительная перезагрузка"
+
+msgid "Alternative"
+msgstr "Альтернатива"
+
+msgid "Alternative reboot cancelled."
+msgstr "Альтернативная перезагрузка отменена."
+
+msgid "Cancel"
+msgstr "Отменить"
+
+msgid "Confirm"
+msgstr "Подтвердить"
+
+msgid "Current"
+msgstr "Текущий"
+
+msgid "ERROR:"
+msgstr "ОШИБКА:"
+
+msgid "Firmware/OS (Kernel)"
+msgstr "Прошивка/ОС (Ядро)"
+
+msgid "No access to fw_printenv or fw_printenv!"
+msgstr "Нет доступа к fw_printenv или fw_printenv!"
+
+msgid "Partition"
+msgstr "Раздел"
+
+msgid "Partitions"
+msgstr "Разделы"
+
+msgid "Perform power off..."
+msgstr "Выполнить отключение..."
+
+msgid "Power Off Device"
+msgstr "Отключить питание устройства"
+
+msgid "Proceed"
+msgstr "Продолжить"
+
+msgid "Reboot Device to an Alternative Partition"
+msgstr "Перезагрузить устройство в альтернативный раздел"
+
+msgid "Reboot to alternative partition..."
+msgstr "Перезагрузить до альтернативного раздела..."
+
+msgid "Reboot to current partition"
+msgstr "Перезагрузка к текущему разделу"
+
+msgid "Rebooting..."
+msgstr "Перезагрузка..."
+
+msgid "Shutting down..."
+msgstr "Отключается..."
+
+msgid "Status"
+msgstr "Состояние"
+
+msgid ""
+"The system is rebooting now.<br /> DO NOT POWER OFF THE DEVICE!<br /> Wait a "
+"few minutes before you try to reconnect. It might be necessary to renew the "
+"address of your computer to reach the device again, depending on your "
+"settings."
+msgstr ""
+"Система перезагружается сейчас.<br /> НЕ ОТКЛЮЧАЙТЕ ПИТАНИЕ УСТРОЙСТВА!<br /"
+"> Подождите несколько минут, прежде чем попытаться установить соединение "
+"снова. Возможно, потребуется обновить адрес компьютера для повторного "
+"доступа к устройству в зависимости от ваших настроек."
+
+msgid ""
+"The system is rebooting to an alternative partition now.<br /> DO NOT POWER "
+"OFF THE DEVICE!<br /> Wait a few minutes before you try to reconnect. It "
+"might be necessary to renew the address of your computer to reach the device "
+"again, depending on your settings."
+msgstr ""
+"Система перезагружается на альтернативный раздел сейчас.<br /> НЕ ОТКЛЮЧАЙТЕ "
+"ПИТАНИЕ УСТРОЙСТВА!<br /> Подождите несколько минут, прежде чем попытаться "
+"установить соединение снова. Возможно, потребуется обновить адрес компьютера "
+"для повторного доступа к устройству в зависимости от ваших настроек."
+
+msgid ""
+"The system is shutting down now.<br /> DO NOT POWER OFF THE DEVICE!<br /> It "
+"might be necessary to renew the address of your computer to reach the device "
+"again, depending on your settings."
+msgstr ""
+"Система сейчас отключается.<br /> НЕ ОТКЛЮЧАЙТЕ ПИТАНИЕ УСТРОЙСТВА!<br /> "
+"Возможно, потребуется обновить адрес компьютера для повторного доступа к "
+"устройству в зависимости от настроек."
+
+msgid "Unable to find Dual Boot Flag Partition."
+msgstr "Невозможно найти Dual Boot раздел."
+
+msgid "Unable to obtain firmware environment variable"
+msgstr "Невозможно получить переменную среды прошивки"
+
+msgid "Unable to set Dual Boot Flag Partition entry for partition"
+msgstr "Невозможно использовать Dual Boot раздел."
+
+msgid "Unable to set firmware environment variable"
+msgstr "Невозможно установить переменную среды прошивки"
+
+msgid ""
+"WARNING: An alternative partition might have its own settings and completely "
+"different firmware.<br /><br /> As your network configuration and WiFi SSID/"
+"password on alternative partition might be different, you might have to "
+"adjust your computer settings to be able to access your device once it "
+"reboots.<br /><br /> Please also be aware that alternative partition "
+"firmware might not provide an easy way to switch active partition and boot "
+"back to the currently active partition.<br /><br /> Click \"Proceed\" below "
+"to reboot device to an alternative partition."
+msgstr ""
+"ВНИМАНИЕ: альтернативный раздел может иметь собственные настройки и "
+"совершенно другую прошивку.<br /><br /> Поскольку ваши настройки сети и WiFi "
+"SSID/пароли на альтернативных разделах могут отличаться, может потребоваться "
+"изменить настройки компьютера, чтобы иметь возможность получить доступ к "
+"устройству после перезагрузки .<br /><br /> Помните также, что "
+"альтернативный раздел с прошивкой может не обеспечить простой способ "
+"переключения активного раздела и загрузки обратно в текущий активный раздел."
+"<br /><br /> Нажмите \"Продолжить\" ниже, чтобы перезагрузить устройство в "
+"альтернативный раздел."
+
+msgid ""
+"WARNING: Power off might result in a reboot on a device which doesn't "
+"support power off.<br /><br /> Click \"Proceed\" below to power off your "
+"device."
+msgstr ""
+"ВНИМАНИЕ: Отключение питания может привести к перезагрузке устройства, "
+"которое не поддерживает выключение питания.<br /><br /> Нажмите \"Продолжить"
+"\" ниже, чтобы выключить устройство."
+
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr ""
+"Внимание: Есть несохраненные изменения, которые будут потеряны при "
+"перезагрузке!"
+
+msgid "Warning: This system does not have two partitions!"
+msgstr "Внимание: Эта система не имеет двух разделов!"
+
+msgid "Warning: This system does not support powering off!"
+msgstr "Внимание: Эта система не поддерживает отключение питания!"
+
+msgid "to"
+msgstr ""
diff --git a/applications/luci-app-advanced-reboot/po/sv/luci-app-advanced-reboot.po b/applications/luci-app-advanced-reboot/po/sv/advanced-reboot.po
index 20d77cbcf..e0e13cfda 100644
--- a/applications/luci-app-advanced-reboot/po/sv/luci-app-advanced-reboot.po
+++ b/applications/luci-app-advanced-reboot/po/sv/advanced-reboot.po
@@ -10,6 +10,9 @@ msgstr "Avancerad omstart"
msgid "Alternative"
msgstr "Alternativ"
+msgid "Alternative reboot cancelled."
+msgstr ""
+
msgid "Cancel"
msgstr "Avbryt"
@@ -19,9 +22,15 @@ msgstr "Bekräfta"
msgid "Current"
msgstr "Nuvarande"
+msgid "ERROR:"
+msgstr ""
+
msgid "Firmware/OS (Kernel)"
msgstr "Inre mjukvara/OS (Kärna)"
+msgid "No access to fw_printenv or fw_printenv!"
+msgstr ""
+
msgid "Partition"
msgstr "Partition"
@@ -78,6 +87,18 @@ msgstr ""
"inställningar så kan det vara nödvändigt att förnya din dators adress för "
"att nå enheten igen."
+msgid "Unable to find Dual Boot Flag Partition."
+msgstr ""
+
+msgid "Unable to obtain firmware environment variable"
+msgstr ""
+
+msgid "Unable to set Dual Boot Flag Partition entry for partition"
+msgstr ""
+
+msgid "Unable to set firmware environment variable"
+msgstr ""
+
msgid ""
"WARNING: An alternative partition might have its own settings and completely "
"different firmware.<br /><br /> As your network configuration and WiFi SSID/"
@@ -107,3 +128,6 @@ msgstr "Varning: Det här systemet har inte två partitioner!"
msgid "Warning: This system does not support powering off!"
msgstr "Varning: Det här systemet har inte stöd för avstängning!"
+
+msgid "to"
+msgstr ""
diff --git a/applications/luci-app-advanced-reboot/po/templates/luci-app-advanced-reboot.pot b/applications/luci-app-advanced-reboot/po/templates/advanced-reboot.pot
index 9c810892c..47a81e1dd 100644
--- a/applications/luci-app-advanced-reboot/po/templates/luci-app-advanced-reboot.pot
+++ b/applications/luci-app-advanced-reboot/po/templates/advanced-reboot.pot
@@ -10,6 +10,9 @@ msgstr ""
msgid "Alternative"
msgstr ""
+msgid "Alternative reboot cancelled."
+msgstr ""
+
msgid "Cancel"
msgstr ""
@@ -19,9 +22,15 @@ msgstr ""
msgid "Current"
msgstr ""
+msgid "ERROR:"
+msgstr ""
+
msgid "Firmware/OS (Kernel)"
msgstr ""
+msgid "No access to fw_printenv or fw_printenv!"
+msgstr ""
+
msgid "Partition"
msgstr ""
@@ -75,6 +84,18 @@ msgid ""
"again, depending on your settings."
msgstr ""
+msgid "Unable to find Dual Boot Flag Partition."
+msgstr ""
+
+msgid "Unable to obtain firmware environment variable"
+msgstr ""
+
+msgid "Unable to set Dual Boot Flag Partition entry for partition"
+msgstr ""
+
+msgid "Unable to set firmware environment variable"
+msgstr ""
+
msgid ""
"WARNING: An alternative partition might have its own settings and completely "
"different firmware.<br /><br /> As your network configuration and WiFi SSID/"
@@ -100,3 +121,6 @@ msgstr ""
msgid "Warning: This system does not support powering off!"
msgstr ""
+
+msgid "to"
+msgstr ""
diff --git a/applications/luci-app-aria2/po/ru/aria2.po b/applications/luci-app-aria2/po/ru/aria2.po
new file mode 100644
index 000000000..48a522d59
--- /dev/null
+++ b/applications/luci-app-aria2/po/ru/aria2.po
@@ -0,0 +1,222 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: aria2\n"
+"POT-Creation-Date: 2017-11-30 23:45+0300\n"
+"PO-Revision-Date: 2018-01-05 21:29+0300\n"
+"Language-Team: http://cyber-place.ru\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
+
+msgid "\"Falloc\" is not available in all cases."
+msgstr "\"Falloc\" возможен не всегда."
+
+msgid "<abbr title=\"Distributed Hash Table\">DHT</abbr> enabled"
+msgstr "<abbr title=\"Распределенная Hash таблица\">DHT</abbr> включена"
+
+msgid "<abbr title=\"Local Peer Discovery\">LPD</abbr> enabled"
+msgstr "<abbr title=\"Обнаружение локальных пиров \">LPD</abbr> включено"
+
+msgid "Additional Bt tracker enabled"
+msgstr "Дополнительный Bt tracker включен"
+
+msgid "Aria2"
+msgstr "Aria2"
+
+msgid "Aria2 Settings"
+msgstr "Aria2 настройки"
+
+msgid "Aria2 Status"
+msgstr "Aria2 состояние"
+
+msgid ""
+"Aria2 is a multi-protocol &amp; multi-source download utility, here you can "
+"configure the settings."
+msgstr ""
+"Aria2 - это мульти-протокольная и мульти-платформенная утилита загрузки, "
+"здесь вы сможете ее настроить."
+
+msgid "Autosave session interval"
+msgstr "Интервал сессии автосохранения"
+
+msgid "BitTorrent Settings"
+msgstr "Настройки BitTorrent-а"
+
+msgid "BitTorrent listen port"
+msgstr "Порт прослушивания BitTorrent-а"
+
+msgid "Collecting data..."
+msgstr "Сбор информации..."
+
+msgid "Config file directory"
+msgstr "Папка расположения сonfig файла"
+
+msgid "Debug"
+msgstr "Отладка"
+
+msgid "Default download directory"
+msgstr "Папка загрузки по умолчанию"
+
+msgid "Disk cache"
+msgstr "Дисковый кэш"
+
+msgid "Enable log"
+msgstr "Включить ведение системного журнала"
+
+msgid "Enabled"
+msgstr "Включено"
+
+msgid "Error"
+msgstr "Ошибка"
+
+msgid "Extra Settings"
+msgstr "Дополнительные настройки"
+
+msgid "Falloc"
+msgstr "Falloc"
+
+msgid "Files and Locations"
+msgstr "Файлы и папки"
+
+msgid "Follow torrent"
+msgstr "Запустить торрент-файл"
+
+msgid "General Settings"
+msgstr "Основные настройки"
+
+msgid "Generate Randomly"
+msgstr "Генерировать случайно"
+
+msgid "Info"
+msgstr "Информация"
+
+msgid "List of additional Bt tracker"
+msgstr "Список дополнительных BT tracker-ов"
+
+msgid "List of extra settings"
+msgstr "Список дополнительных настроек"
+
+msgid "Log file is in the config file dir."
+msgstr "Файл системного журнала находится в папке с config файлом."
+
+msgid "Log level"
+msgstr "Уровень системного журнала"
+
+msgid "Max concurrent downloads"
+msgstr "Максимальное количество одновременных загрузок"
+
+msgid "Max connection per server"
+msgstr "Максимальное подключение на сервер"
+
+msgid "Max number of peers per torrent"
+msgstr "Максимальное число пиров на торрент"
+
+msgid "Max number of split"
+msgstr "Максимальное число разделений"
+
+msgid "Min split size"
+msgstr "Минимальный размер разделений"
+
+msgid "No Authentication"
+msgstr "Без проверки подлинности"
+
+msgid "Notice"
+msgstr "Заметка"
+
+msgid "Off"
+msgstr "Выключено"
+
+msgid "Open WebUI-Aria2"
+msgstr "Открыть WebUI-Aria2"
+
+msgid "Open YAAW"
+msgstr "Открыть YAAW"
+
+msgid "Overall download limit"
+msgstr "Общий лимит загрузки"
+
+msgid "Overall speed limit enabled"
+msgstr "Общий лимит скорости включен"
+
+msgid "Overall upload limit"
+msgstr "Общий лимит скачивания"
+
+msgid "Per task download limit"
+msgstr "Ограничить задачи загрузок"
+
+msgid "Per task speed limit enabled"
+msgstr "Ограничить скорость выполнения каждой задачи"
+
+msgid "Per task upload limit"
+msgstr "Ограничить задачи скачивания"
+
+msgid "Prealloc"
+msgstr "Предварительно"
+
+msgid "Preallocation"
+msgstr "Предварительное размещение"
+
+msgid "Prefix of peer ID"
+msgstr "Префикс ID пира"
+
+msgid "RPC Token"
+msgstr "RPC электронный ключ"
+
+msgid "RPC authentication method"
+msgstr "RPC метод аутентификации"
+
+msgid "RPC password"
+msgstr "RPC пароль"
+
+msgid "RPC port"
+msgstr "RPC порт"
+
+msgid "RPC username"
+msgstr "RPC логин"
+
+msgid "Run daemon as user"
+msgstr "Запуск демона от имени пользователя"
+
+msgid "Sec"
+msgstr "Секунды"
+
+msgid "Task Settings"
+msgstr "Настройки параметров"
+
+msgid "The Aria2 service is not running."
+msgstr "Aria2 сервис не запущен."
+
+msgid "The Aria2 service is running."
+msgstr "Aria2 сервис запущен."
+
+msgid "Token"
+msgstr "Электронный ключ"
+
+msgid "Trunc"
+msgstr "Обрезать"
+
+msgid "Use WebSocket"
+msgstr "Использовать WebSockets"
+
+msgid "User agent value"
+msgstr "Агент пользователя"
+
+msgid "Username & Password"
+msgstr "Имя и пароль"
+
+msgid "View Json-RPC URL"
+msgstr "Показать URL Json-RPC"
+
+msgid "Warn"
+msgstr "Внимание"
+
+msgid "in bytes, You can append K or M."
+msgstr "в байтах. Вы можете добавить суффикс K (кило) или М (мега)."
+
+msgid "in bytes/sec, You can append K or M."
+msgstr "в байтах/секундах. Вы можете добавить суффикс K (кило) или М (мега)."
diff --git a/applications/luci-app-attendedsysupgrade/luasrc/view/attendedsysupgrade.htm b/applications/luci-app-attendedsysupgrade/luasrc/view/attendedsysupgrade.htm
index 847ad5cfb..0a8c65ebd 100644
--- a/applications/luci-app-attendedsysupgrade/luasrc/view/attendedsysupgrade.htm
+++ b/applications/luci-app-attendedsysupgrade/luasrc/view/attendedsysupgrade.htm
@@ -71,15 +71,14 @@
end
apply_acls("/usr/share/rpcd/acl.d/attendedsysupgrade.json", luci.dispatcher.context.authsession)
- apply_acls("/usr/share/rpcd/acl.d/packagelist.json", luci.dispatcher.context.authsession)
%>
<%+header%>
<h2 name="content"><%:Attended Sysupgrade%></h2>
<div class="cbi-map-descr">
- Easily search and install new releases and package upgrades. Sysupgrade images are created on demand based on locally installed packages.
+ Easily search and install new releases and package upgrades. Sysupgrade firmware are created on demand based on locally installed packages.
</div>
-<div style="display: none" id="upgrade_info" class="alert-message info"></div>
-<div style="display: none" id="upgrade_error" class="alert-message danger"></div>
+<div style="display: none" id="info_box" class="alert-message info"></div>
+<div style="display: none" id="error_box" class="alert-message danger"></div>
<div style="display: none" id="packages" class="alert-message success"></div>
<p>
<textarea style="display: none; width: 100%;" id="edit_packages" rows="15"></textarea>
@@ -89,7 +88,7 @@
<div class="cbi-selection-node">
<div class="cbi-value" id="keep_container" style="display: none">
<div class="cbi-section-descr">
- Check "Keep settings" to retain the current configuration (requires a compatible firmware image).
+ Check "Keep settings" to retain the current configuration (requires a compatible firmware).
</div>
<label class="cbi-value-title" for="keep">Keep settings:</label>
<div class="cbi-value-field">
@@ -116,353 +115,10 @@
</form>
</fieldset>
<script type="text/javascript">
-data = {};
-origin = document.location.href.replace(location.pathname, "")
-ubus_url = origin + "/ubus/"
-
-function set_server() {
- data.url = document.getElementById("server").value;
- ubus_call("uci", "set", { "config": "attendedsysupgrade", "section": "server", values: { "url": data.url } })
- ubus_call("uci", "commit", { "config": "attendedsysupgrade" })
- var server = document.getElementById("server")
- server.type = 'button';
- server.className = 'cbi-button cbi-button-edit';
- server.parentElement.removeChild(document.getElementById("button_set"));
- server.onclick = edit_server;
-}
-
-function edit_server() {
- document.getElementById("server").type = 'text';
- document.getElementById("server").onkeydown = function(event) {
- if(event.key === 'Enter') {
- set_server();
- return false;
- }
- }
- document.getElementById("server").className = '';
- document.getElementById("server").onclick = null;
-
- 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-edit';
- button_set.style = 'background-image: url("/luci-static/resources/cbi/save.gif");'
- button_set.onclick = set_server
- document.getElementById("server").parentElement.appendChild(button_set);
-}
-
-function edit_packages() {
- data.edit_packages = true
- document.getElementById("edit_button").style.display = "none";
- document.getElementById("edit_packages").value = data.packages.join("\n");
- document.getElementById("edit_packages").style.display = "block";
-}
-
-// requests to the upgrade server
-function server_request(request_dict, path, callback) {
- request_dict.distro = data.release.distribution;
- request_dict.target = data.release.target.split("\/")[0];
- request_dict.subtarget = data.release.target.split("\/")[1];
- 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) {
- upgrade_error("upgrade server down")
- document.getElementById("server_div").style.display = "block";
- }
- request.addEventListener('load', function(event) {
- callback(request)
- });
-}
-
-// initial setup, get system information
-function setup() {
+ data = {};
data["ubus_rpc_session"] = "<%=luci.dispatcher.context.authsession%>"
- ubus_call("packagelist", "list", {}, "packagelist");
- ubus_call("system", "board", {}, "release");
- ubus_call("system", "board", {}, "board_name");
- ubus_call("system", "board", {}, "model");
- uci_call({ "config": "attendedsysupgrade", "section": "server", "option": "url" })
- uci_call({ "config": "attendedsysupgrade", "section": "client", "option": "upgrade_packages" })
- uci_call({ "config": "attendedsysupgrade", "section": "client", "option": "advanced_mode" })
- uci_call({ "config": "attendedsysupgrade", "section": "client", "option": "auto_search" })
- setup_ready();
-}
-
-function setup_ready() {
- if(ubus_counter != ubus_closed) {
- setTimeout(setup_ready, 300)
- } else {
- if(data.auto_search == 1) {
- upgrade_check();
- } else {
- document.getElementById("upgrade_button").style.display = "block";
- document.getElementById("server_div").style.display = "block";
- document.getElementById("server").value = data.url;
- }
- }
-}
-
-function uci_call(option) {
- ubus_call("uci", "get", option, option["option"])
-}
-
-ubus_counter = 0;
-ubus_closed = 0;
-function ubus_call(command, argument, params, variable) {
- 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 ]
- 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.addEventListener('load', function(event) {
- if(request.status === 200) {
- response = JSON.parse(request.responseText).result
- if(response[0] == 0) {
- if(response.length == 2) {
- if(command === "uci") {
- data[variable] = response[1].value
- } else {
- data[variable] = response[1][variable]
- }
- }
- } else {
- upgrade_error("ubus call faild: " + request_json)
- }
- ubus_closed++;
- }
- });
- request.send(request_json);
-}
-
-// shows notification if upgrade is available
-function upgrade_info(info_output, loading) {
- document.getElementById("upgrade_info").style.display = "block";
- if(loading) {
- loading_image = '<img src="/luci-static/resources/icons/loading.gif" alt="Loading" style="vertical-align:middle">'
- } else {
- loading_image = ''
- }
- document.getElementById("upgrade_info").innerHTML = loading_image + info_output;
-}
-
-function upgrade_error(error_output) {
- document.getElementById("upgrade_error").style.display = "block";
- document.getElementById("upgrade_error").innerHTML = error_output;
- document.getElementById("upgrade_info").style.display = "none";
-}
-
-// asks server for news upgrades, actually only based on relesae not packages
-function upgrade_check() {
- document.getElementById("upgrade_error").style.display = "none";
- document.getElementById("server_div").style.display = "none";
- upgrade_info("Searching for upgrades", true);
- request_dict = {}
- request_dict.version = data.release.version;
- request_dict.packages = data.packagelist;
- // not only search for new release, but for new package versions as well
- request_dict.upgrade_packages = data.upgrade_packages
- server_request(request_dict, "api/upgrade-check", upgrade_check_callback)
-}
-
-// request the image, need merge with upgrade_request
-function upgrade_request() {
- console.log("upgrade_request")
- document.getElementById("upgrade_button").disabled = true;
- document.getElementById("edit_packages").style.display = "none";
- document.getElementById("edit_button").style.display = "none";
- document.getElementById("keep_container").style.display = "none";
- request_dict = {}
- request_dict.version = data.latest_version;
- request_dict.board = data.board_name
-
- if(data.edit_packages == true) {
- request_dict.packages = document.getElementById("edit_packages").value.split("\n")
- } else {
- request_dict.packages = data.packages;
- }
- request_dict.model = data.model
- server_request(request_dict, "api/upgrade-request", upgrade_request_callback)
-}
-
-function upgrade_request_callback(response) {
- if (response.status === 400) {
- response_content = JSON.parse(response.responseText)
- upgrade_error(response_content.error)
- } else if (response.status === 500) {
- response_content = JSON.parse(response.responseText)
- upgrade_error(response_content.error)
- if(response_content.log != undefined) {
- data.log_url = response_content.log
- }
- } else if (response.status === 503) {
- upgrade_error("please wait. server overloaded")
- // handle overload
- setTimeout(upgrade_request, 30000)
- } else if (response.status === 201) {
- response_content = JSON.parse(response.responseText)
- if(response_content.queue != undefined) {
- // in queue
- upgrade_info("please wait. you are in queue position " + response_content.queue, true)
- console.log("queued")
- } else {
- upgrade_info("imagebuilder not ready, please wait", true)
- console.log("setting up imagebuilder")
- }
- setTimeout(upgrade_request, 5000)
- } else if (response.status === 206) {
- // building
- console.log("building")
- upgrade_info("building image", true)
- setTimeout(upgrade_request, 5000)
- } else if (response.status === 200) {
- // ready to download
- response_content = JSON.parse(response.responseText);
- data.sysupgrade_url = response_content.sysupgrade;
-
- info_output = "Image created"
- if(data.advanced_mode == 1) {
- build_log = '</br><a target="_blank" href="' + data.sysupgrade_url + '.log">Build log</a>'
- info_output += build_log
- }
- upgrade_info(info_output);
-
- document.getElementById("keep_container").style.display = "block";
- var upgrade_button = document.getElementById("upgrade_button")
- upgrade_button.disabled = false;
- upgrade_button.style.display = "block";
- upgrade_button.value = "Flash firmware";
- upgrade_button.onclick = download_image;
- }
-}
-
-// uploads received blob data to the server using cgi-io
-function upload_image(blob) {
- var upload_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)
-
- upload_request.addEventListener('load', function(event) {
- // this checksum should be parsed
- upgrade_info("Flashing firmware", true)
- ubus_call("rpc-sys", "upgrade_start", { "keep": document.getElementById("keep").checked }, 'message');
- setTimeout(ping_ubus, 5000)
- console.log(data.message);
- });
-
- upload_request.addEventListener('error', function(event) {
- upgrade_info("uploading failed, please retry")
- });
-
- upload_request.open('POST', origin + '/cgi-bin/cgi-upload');
- upload_request.send(form_data);
-}
-
-function ping_ubus() {
- var request = new XMLHttpRequest();
- request.open("GET", ubus_url, true);
- request.addEventListener('error', function(event) {
- upgrade_info("Rebooting", true);
- setTimeout(ping_ubus, 1000)
- });
- request.addEventListener('load', function(event) {
- upgrade_info("Success! Please reload web interface");
- document.getElementById("upgrade_button").value = "reload page";
- document.getElementById("upgrade_button").style.display = "block";
- document.getElementById("upgrade_button").disabled = false;
- document.getElementById("upgrade_button").onclick = function() { location.reload(); }
- });
- request.send();
-}
-
-// download image from server once the url was received by upgrade_request
-function download_image() {
- console.log("download_image")
- document.getElementById("keep_container").style.display = "none";
- document.getElementById("upgrade_button").style.display = "none";
- var download_request = new XMLHttpRequest();
- download_request.open("GET", data.sysupgrade_url);
- 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)
- }
- };
- upgrade_info("downloading image", true);
- download_request.send();
-}
-
-function upgrade_check_callback(response_object) {
- if (response_object.status === 500) {
- // python crashed
- upgrade_error("internal server error, please try again later")
- console.log("upgrade server issue")
- } else if (response_object.status === 502) {
- // python part offline
- upgrade_error("internal server error, please try again later")
- console.log("upgrade server issue")
- } else if (response_object.status === 503) {
- // handle overload
- upgrade_error("server overloaded, retry in 5 minutes")
- console.log("server overloaded")
- setTimeout(upgrade_request, 300000)
- } else if (response_object.status === 201) {
- upgrade_info("Setting up ImageBuilder", true)
- console.log("setting up imagebuilder")
- setTimeout(upgrade_request, 5000)
- } else if (response_object.status === 204) {
- // no upgrades
- upgrade_info("No upgrades available")
- } else if (response_object.status === 400) {
- // bad request
- console.log(response_object.responseText)
- response_object_content = JSON.parse(response_object.responseText)
- upgrade_error(response_object_content.error)
- } else if (response_object.status === 200) {
- // new release/upgrades
- response_content = JSON.parse(response_object.responseText)
-
- // create simple output to tell user whats going to be upgrade (release/packages)
- info_output = ""
- if(response_content.version != undefined) {
- info_output += "<h3>new upgrade available</h3>"
- info_output += data.release.version + " to " + response_content.version
- data.latest_version = response_content.version;
- }
- if(response_content.upgrades != undefined) {
- info_output += "<h3>package upgrades available</h3>"
- for (upgrade in response_content.upgrades) {
- info_output += "<b>" + upgrade + "</b>: " + response_content.upgrades[upgrade][1] + " to " + response_content.upgrades[upgrade][0] + "</br>"
- }
- }
- data.packages = response_content.packages
- upgrade_info(info_output)
-
- if(data.advanced_mode == 1) {
- document.getElementById("edit_button").style.display = "block";
- }
- var upgrade_button = document.getElementById("upgrade_button")
- upgrade_button.value = "Request image";
- upgrade_button.style.display = "block";
- upgrade_button.disabled = false;
- upgrade_button.onclick = upgrade_request;
- }
-}
-document.onload = setup()
+ origin = document.location.href.replace(location.pathname, "")
+ ubus_url = origin + "/ubus/"
</script>
-
+<script type="text/javascript" src="<%=resource%>/attendedsysupgrade.js"></script>
<%+footer%>
diff --git a/applications/luci-app-attendedsysupgrade/root/usr/share/rpcd/acl.d/attendedsysupgrade.json b/applications/luci-app-attendedsysupgrade/root/usr/share/rpcd/acl.d/attendedsysupgrade.json
index 97aa81492..754931926 100644
--- a/applications/luci-app-attendedsysupgrade/root/usr/share/rpcd/acl.d/attendedsysupgrade.json
+++ b/applications/luci-app-attendedsysupgrade/root/usr/share/rpcd/acl.d/attendedsysupgrade.json
@@ -4,10 +4,12 @@
"read": {
"ubus": {
"rpc-sys": [
- "upgrade_start"
+ "upgrade_start",
+ "packagelist"
],
"system": [
- "board"
+ "board",
+ "info"
],
"uci": [
"get", "set", "commit"
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
new file mode 100644
index 000000000..c2fe81d58
--- /dev/null
+++ b/applications/luci-app-attendedsysupgrade/root/www/luci-static/resources/attendedsysupgrade.js
@@ -0,0 +1,402 @@
+function $(s) {
+ return document.getElementById(s.substring(1));
+}
+
+function show(s) {
+ $(s).style.display = 'block';
+}
+
+function hide(s) {
+ $(s).style.display = 'none';
+}
+
+function set_server() {
+ hide("#error_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;
+
+ 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-edit';
+ button_set.style = 'background-image: url("/luci-static/resources/cbi/save.gif");'
+ 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");
+}
+
+// requests to the upgrade server
+function server_request(request_dict, path, callback) {
+ request_dict.distro = data.release.distribution;
+ request_dict.target = data.release.target.split("\/")[0];
+ request_dict.subtarget = data.release.target.split("\/")[1];
+ 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) {
+ error_box("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();
+}
+
+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;
+ }
+ }
+}
+
+function uci_get(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 ]
+ 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 {
+ error_box("<b>Ubus call faild:</b></br>Request: " + request_json + "</br>Response: " + JSON.stringify(response))
+ }
+ ubus_closed++;
+ }
+ }
+ request.send(request_json);
+}
+
+function info_box(info_output, loading) {
+ // Shows notification if upgrade is available
+ // If loading is true then an "processing" animation is added
+ show("#info_box");
+ var loading_image = '';
+ if(loading) {
+ loading_image = '<img src="/luci-static/resources/icons/loading.gif" alt="Loading" style="vertical-align:middle">';
+ }
+ $("#info_box").innerHTML = loading_image + info_output;
+}
+
+function error_box(error_output) {
+ // Shows erros in red box
+ show("#error_box");
+ $("#error_box").innerHTML = error_output;
+ hide("#info_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("#error_box");
+ hide("#server_div");
+ info_box("Searching for upgrades", true);
+ var request_dict = {}
+ request_dict.version = data.release.version;
+ request_dict.packages = data.packages;
+ request_dict.upgrade_packages = data.upgrade_packages
+ server_request(request_dict, "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 whats 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 (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
+ info_box(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 corrent 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)
+}
+
+function upgrade_request_callback(request) {
+ // ready to download
+ var request_json = JSON.parse(request);
+ data.sysupgrade_url = request_json.sysupgrade;
+
+ var filename_split = data.sysupgrade_url.split("/")
+ data.filename = filename_split[filename_split.length - 1]
+
+ info_output = "Firmware created</br><b>" + data.filename + "</b>"
+ if(data.advanced_mode == 1) {
+ info_output += '</br><a target="_blank" href="' + data.sysupgrade_url + '.log">Build log</a>'
+ }
+ info_box(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;
+}
+
+function flash_image() {
+ // Flash image via rpc-sys upgrade_start
+ info_box("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) {
+ info_box("Rebooting device", true);
+ setTimeout(ping_ubus, 1000)
+ });
+ request.addEventListener('load', function(event) {
+ info_box("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 {
+ error_box("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
+ 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) {
+ info_box("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.sysupgrade_url);
+ 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)
+ }
+ };
+ info_box("Downloading firmware", true);
+ download_request.send();
+}
+
+function server_request(request_dict, path, callback) {
+ request_dict.distro = data.release.distribution;
+ request_dict.target = data.release.target.split("\/")[0];
+ request_dict.subtarget = data.release.target.split("\/")[1];
+ 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) {
+ error_box("Upgrade server down or could not connect")
+ show("#server_div");
+ }
+ request.addEventListener('load', function(event) {
+ 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");
+ info_box("In build queue position " + queue, true)
+ console.log("queued");
+ } else if(imagebuilder === "initialize") {
+ info_box("Setting up ImageBuilder", true)
+ console.log("Setting up imagebuilder");
+ } else if(imagebuilder === "building") {
+ info_box("Building image", true);
+ console.log("building");
+ } else {
+ // fallback if for some reasons the headers are missing e.g. browser blocks access
+ info_box("Processing request", true);
+ console.log(imagebuilder)
+ }
+ setTimeout(function() { server_request(request_dict, path, callback) }, 5000)
+
+ } else if (request.status === 204) {
+ // no upgrades available
+ info_box("No upgrades available")
+
+ } else if (request.status === 400) {
+ // bad request
+ request_json = JSON.parse(request_text)
+ error_box(request_json.error)
+
+ } else if (request.status === 412) {
+ // this is a bit generic
+ error_box("Unsupported device, release, target, subtraget or board")
+
+ } else if (request.status === 413) {
+ error_box("No firmware created due to image size. Try again with less packages selected.")
+
+ } else if (request.status === 422) {
+ error_box("Unknown package in request")
+
+ } else if (request.status === 500) {
+ request_json = JSON.parse(request_text)
+
+ 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
+ }
+ error_box(error_box_content)
+
+ } else if (request.status === 501) {
+ error_box("No sysupgrade file produced, may not supported by modell.")
+
+ } else if (request.status === 502) {
+ // python part offline
+ error_box("Server down for maintenance")
+ setTimeout(function() { server_request(request_dict, path, callback) }, 30000)
+ } else if (request.status === 503) {
+ error_box("Server overloaded")
+ setTimeout(function() { server_request(request_dict, path, callback) }, 30000)
+ }
+ });
+}
+document.onload = setup()
+
diff --git a/applications/luci-app-bcp38/po/ru/bcp38.po b/applications/luci-app-bcp38/po/ru/bcp38.po
new file mode 100644
index 000000000..1c4348884
--- /dev/null
+++ b/applications/luci-app-bcp38/po/ru/bcp38.po
@@ -0,0 +1,70 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: LuCI: bcp38\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-19 19:36+0200\n"
+"PO-Revision-Date: 2017-11-30 21:48+0300\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Language-Team: http://cyber-place.ru\n"
+"Language: ru\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Pootle 2.0.4\n"
+"X-Poedit-SourceCharset: UTF-8\n"
+
+msgid "Allowed IP ranges"
+msgstr "Диапазон разрешенных IP адресов"
+
+msgid ""
+"Attempt to automatically detect if the upstream IP will be blocked by the "
+"configuration, and add an exception if it will. If this does not work "
+"correctly, you can add exceptions manually below."
+msgstr ""
+"Попытается автоматически обнаружить, если будет настроена блокировка раздающего IP, "
+"и добавить событие в исключения. Если автоматичеки не получиться, можно добавить "
+"данное событие в исключения вручную ниже."
+
+msgid "Auto-detect upstream IP"
+msgstr "Автоматическое определение раздающего IP"
+
+msgid "BCP38"
+msgstr "BCP38"
+
+msgid "BCP38 config"
+msgstr "BCP38 config файл"
+
+msgid "Blocked IP ranges"
+msgstr "Диапазон запрещенных IP адресов"
+
+msgid "Enable"
+msgstr "Включить"
+
+msgid "Interface name"
+msgstr "Имя интерфейса"
+
+msgid ""
+"Interface to apply the blocking to (should be the upstream WAN interface)."
+msgstr ""
+"Интерфейс для применения блокировки (должен быть раздающим WAN интерфейсом)."
+
+msgid ""
+"Takes precedence over blocked ranges. Use to whitelist your upstream network "
+"if you're behind a double NAT and the auto-detection doesn't work."
+msgstr ""
+"Приоритет имеет блокировка диапазонов IP. Используйте для белого списка вашей "
+"раздающей сети, если вы за двойным NAT-ом и автоматическое обнаружение не работает."
+
+msgid ""
+"This function blocks packets with private address destinations from going "
+"out onto the internet as per <a href=\"http://tools.ietf.org/html/"
+"bcp38\">BCP 38</a>. For IPv6, only source specific default routes are "
+"installed, so no BCP38 firewall routes are needed."
+msgstr ""
+"Эта функция блокирует пакеты с частными адресами назначения из выхода в "
+"интернет согласно <a href=\"http://tools.ietf.org/html/ bcp38\">BCP 38</a>. "
+"Для IPv6, устанавливаются только специфичные для источника маршруты по умолчанию "
+"поэтому BCP38 не используется фаерволом."
+
diff --git a/applications/luci-app-clamav/po/ru/clamav.po b/applications/luci-app-clamav/po/ru/clamav.po
new file mode 100644
index 000000000..6658693e8
--- /dev/null
+++ b/applications/luci-app-clamav/po/ru/clamav.po
@@ -0,0 +1,133 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: clamav\n"
+"POT-Creation-Date: 2017-10-17 22:00+0300\n"
+"PO-Revision-Date: 2018-01-05 20:13+0300\n"
+"Language-Team: http://cyber-place.ru\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
+
+msgid "10"
+msgstr "10"
+
+msgid "1024"
+msgstr "1024"
+
+msgid "15"
+msgstr "15"
+
+msgid "150M"
+msgstr "150M"
+
+msgid "1M"
+msgstr "1M"
+
+msgid "20"
+msgstr "20"
+
+msgid "2048"
+msgstr "2048"
+
+msgid "2M"
+msgstr "2M"
+
+msgid "50M"
+msgstr "50M"
+
+msgid "512K"
+msgstr "512K"
+
+msgid "600"
+msgstr "600"
+
+msgid "Block encrypted archives"
+msgstr "Блокировать зашифрованные архивы"
+
+msgid "ClamAV"
+msgstr "Антивирус ClamAV"
+
+msgid "Database check every N sec"
+msgstr "Проверка базы данных каждые N сек"
+
+msgid "Detect broken executables"
+msgstr "Обнаружение нерабочих исполняемых файлов"
+
+msgid "Detect possibly unwanted apps"
+msgstr "Обнаружение возможных нежелательных приложений"
+
+msgid "Enable verbose logging"
+msgstr "Включить подробное ведение системного журнала"
+
+msgid "Follow directory symlinks"
+msgstr "Следовать по ссылкам на папки"
+
+msgid "Follow file symlinks"
+msgstr "Следовать по ссылкам на файлы"
+
+msgid "Log"
+msgstr "Системный журнал"
+
+msgid "Log additional infection info"
+msgstr ""
+"Дополнительный файл системного журнала, содержащий информацию о заражении"
+
+msgid "Log time with each message"
+msgstr "Время записи в системный журнал - каждого сообщения"
+
+msgid "Max directory scan depth"
+msgstr "Максимальный размер сканируемой папки"
+
+msgid "Max number of threads"
+msgstr "Максимальное кол-во потоков"
+
+msgid "Max size of log file"
+msgstr "Максимальный размер системного журнала"
+
+msgid "Max size of scanned file"
+msgstr "Максимальный размер сканируемого файла"
+
+msgid "No"
+msgstr "Нет"
+
+msgid "Port range, highest port"
+msgstr "Диапазон портов, максимальный номер порта"
+
+msgid "Port range, lowest port"
+msgstr "Диапазон портов, наименьший номер порта"
+
+msgid "Scan ELF files"
+msgstr "Сканировать elf файлы"
+
+msgid "Scan MS Office and .msi files"
+msgstr "Сканировать MS Office и *.msi файлы"
+
+msgid "Scan RFC1341 messages split over many emails"
+msgstr ""
+"Сканирование сообщений RFC1341, разделенных на множество сообщений "
+"электронной почты"
+
+msgid "Scan archives"
+msgstr "Сканировать архивы"
+
+msgid "Scan emails"
+msgstr "Сканировать е-майлы"
+
+msgid "Scan pdf files"
+msgstr "Сканировать pdf файлы"
+
+msgid "Scan portable executables"
+msgstr "Сканировать портативные исполняемые файлы"
+
+msgid "Scan swf files"
+msgstr "Сканировать swf файлы"
+
+msgid "Settings"
+msgstr "Настройки"
+
+msgid "Yes"
+msgstr "Да"
diff --git a/applications/luci-app-commands/po/ru/commands.po b/applications/luci-app-commands/po/ru/commands.po
index 0c035ab73..30c84df06 100644
--- a/applications/luci-app-commands/po/ru/commands.po
+++ b/applications/luci-app-commands/po/ru/commands.po
@@ -1,38 +1,38 @@
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-10-15 16:48+0200\n"
-"Last-Translator: datasheet <michael.gritsaenko@gmail.com>\n"
-"Language-Team: none\n"
-"Language: ru\n"
-"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: commands\n"
+"POT-Creation-Date: 2013-10-15 16:48+0300\n"
+"PO-Revision-Date: 2018-01-07 21:27+0300\n"
+"Language-Team: http://cyber-place.ru\n"
+"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
msgid "A short textual description of the configured command"
msgstr "Короткое текстовое описание команды"
-#, fuzzy
msgid ""
"Allow executing the command and downloading its output without prior "
"authentication"
msgstr ""
-"Разрешить выполнение команды и загрузку ее вывода без предварительной "
-"аутентификации"
+"Разрешить выполнение команды и загрузку ее выходных данных без ввода пароля "
+"пользователя"
msgid "Allow the user to provide additional command line arguments"
msgstr ""
-"Разрешить пользователям использовать дополнительные аргументы командной "
+"Разрешить пользователю предоставлять дополнительные аргументы командной "
"строки"
msgid "Arguments:"
msgstr "Аргументы:"
msgid "Binary data not displayed, download instead."
-msgstr "Двоичные данные не отображаются, вместо этого - выгружаются"
+msgstr "Двоичные данные не отображаются, вместо этого загружаются."
msgid "Code:"
msgstr "Код:"
@@ -44,13 +44,13 @@ msgid "Command"
msgstr "Команда"
msgid "Command executed successfully."
-msgstr ""
+msgstr "Команда выполнена успешно."
msgid "Command exited with status code"
-msgstr ""
+msgstr "Команда вышла с кодом состояния."
msgid "Command failed"
-msgstr "Команда не выполнена"
+msgstr "Ошибка команды"
msgid "Command line to execute"
msgstr "Командная строка для выполнения"
@@ -62,7 +62,7 @@ msgid "Command:"
msgstr "Команда:"
msgid "Configure"
-msgstr "Настроить"
+msgstr "Настройка панели управления"
msgid "Custom Commands"
msgstr "Пользовательские команды"
@@ -71,7 +71,7 @@ msgid "Custom arguments"
msgstr "Пользовательские аргументы"
msgid "Dashboard"
-msgstr "Информационная панель"
+msgstr "Панель управления"
msgid "Description"
msgstr "Описание"
@@ -80,7 +80,7 @@ msgid "Download"
msgstr "Скачать"
msgid "Download execution result"
-msgstr ""
+msgstr "Результат выполнения загрузки"
msgid "Failed to execute command!"
msgstr "Ошибка выполнения команды!"
@@ -92,7 +92,7 @@ msgid "Loading"
msgstr "Загрузка"
msgid "Or display result"
-msgstr ""
+msgstr "Или отобразить результат"
msgid "Public access"
msgstr "Публичный доступ"
@@ -101,20 +101,18 @@ msgid "Run"
msgstr "Запуск"
msgid "Standard Error"
-msgstr ""
+msgstr "Стандартная ошибка"
msgid "Standard Output"
-msgstr ""
+msgstr "Стандартный вывод"
msgid ""
"This page allows you to configure custom shell commands which can be easily "
"invoked from the web interface."
msgstr ""
-"Эта страница предоставляет возможность настраивать пользовательские "
-"консольные команды, которые могут быть легко вызваны из веб-интерфейса"
+"Страница позволяет настроить выполнение консольных команд пользователя, "
+"которые могут быть легко вызваны из веб-интерфейса по нажатию соответсвующей "
+"кнопки. Здесь вы можете подписать кнопки и указать команды."
msgid "Waiting for command to complete..."
msgstr "Ожидание завершения команды..."
-
-#~ msgid "Access command with"
-#~ msgstr "Доступ к команде через"
diff --git a/applications/luci-app-ddns/po/ru/ddns.po b/applications/luci-app-ddns/po/ru/ddns.po
index a41d1f498..33ab9e775 100644
--- a/applications/luci-app-ddns/po/ru/ddns.po
+++ b/applications/luci-app-ddns/po/ru/ddns.po
@@ -1,183 +1,201 @@
msgid ""
msgstr ""
-"Project-Id-Version: luci-app-ddns 2.4.0-1\n"
-"POT-Creation-Date: 2016-01-30 11:07+0100\n"
-"PO-Revision-Date: 2012-11-01 21:54+0300\n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
-"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: ddns\n"
+"POT-Creation-Date: 2017-10-17 21:00+0300\n"
+"PO-Revision-Date: 2018-01-05 20:37+0300\n"
+"Language-Team: http://cyber-place.ru\n"
+"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Poedit 1.8.4\n"
-"X-Poedit-SourceCharset: UTF-8\n"
+"Language: ru\n"
msgid "&"
-msgstr ""
+msgstr "и"
msgid "-- custom --"
-msgstr ""
+msgstr "-- пользовательский --"
msgid "-- default --"
-msgstr ""
+msgstr "-- по умолчанию --"
msgid "Advanced Settings"
-msgstr ""
+msgstr "Дополнительные настройки"
msgid "Allow non-public IP's"
-msgstr ""
+msgstr "Разрешить не публичные IP адреса"
msgid "Applying changes"
-msgstr ""
+msgstr "Применение изменений"
msgid "Basic Settings"
-msgstr ""
+msgstr "Основные настройки"
msgid ""
"Below a list of configuration tips for your system to run Dynamic DNS "
"updates without limitations"
msgstr ""
+"Советы по настройке для запуска динамических обновлений DNS без ограничений."
msgid ""
"Below is a list of configured DDNS configurations and their current state."
-msgstr ""
+msgstr "Список настроек config файлов DDNS и их текущее состояние."
msgid "Bind Network"
-msgstr ""
+msgstr "Привязать сеть"
msgid "Binding to a specific network not supported"
-msgstr ""
+msgstr "Привязка к определенной сети, не поддерживается."
msgid ""
"BusyBox's nslookup and Wget do not support to specify the IP version to use "
"for communication with DDNS Provider!"
msgstr ""
+"nslookup и Wget BusyBox-а, не поддерживают автоматическое назначение "
+"случайного IP-адресадля связи с DDNS провайдером!"
msgid ""
"BusyBox's nslookup and hostip do not support to specify to use TCP instead "
"of default UDP when requesting DNS server!"
msgstr ""
+"nslookup и hostip BusyBox-а, не поддерживают автоматическое определение "
+"использования TCP (по умолчанию UDP) при запросе сервера DNS! "
msgid ""
"BusyBox's nslookup in the current compiled version does not handle given DNS "
"Servers correctly!"
msgstr ""
+"Благодаря nslookup текущей случайно скомпилированной, BusyBox не "
+"обрабатывает данные Серверы DNS правильно!"
msgid "Casual users should not change this setting"
-msgstr ""
+msgstr "Случайные пользователи, не должны изменять эти настройки"
msgid "Change provider"
-msgstr ""
+msgstr "Сменить провайдера"
msgid "Check Interval"
-msgstr ""
+msgstr "Интервал проверки"
msgid "Collecting data..."
-msgstr ""
+msgstr "Сбор данных"
msgid "Config error"
-msgstr ""
+msgstr "Ошибка config файла"
msgid "Configuration"
-msgstr ""
+msgstr "Настройка config файла"
msgid ""
"Configure here the details for all Dynamic DNS services including this LuCI "
"application."
-msgstr ""
+msgstr "Настройка для всех служб DDNS, включая это приложение LuCI."
msgid "Configure here the details for selected Dynamic DNS service."
-msgstr ""
+msgstr "Тонкая настройка выбранной службы DDNS."
msgid "Current setting"
-msgstr ""
+msgstr "Текущие настройки"
msgid ""
"Currently DDNS updates are not started at boot or on interface events.<br /"
">This is the default if you run DDNS scripts by yourself (i.e. via cron with "
"force_interval set to '0')"
msgstr ""
+"В настоящее время, обновления DDNS не запускаются при загрузке или при "
+"событиях интерфейса.<br />по умолчанию, если вы запускаете DDNS скрипты сами "
+"(т.е. через cron с force_interval set to '0')"
msgid ""
"Currently DDNS updates are not started at boot or on interface events.<br /"
">You can start/stop each configuration here. It will run until next reboot."
msgstr ""
+"В настоящее время, обновления DDNS не запускаются при загрузке или при "
+"событиях интерфейса.<br />.<br />Вы можете запустить/остановить каждый "
+"config здесь. Он будет работать до следующей перезагрузки."
msgid "Custom update script to be used for updating your DDNS Provider."
msgstr ""
+"Пользовательский скрипт обновления, который будет использоваться для вашего "
+"провайдера DDNS."
msgid "Custom update-URL"
msgstr "Пользовательский URL обновления"
msgid "Custom update-script"
-msgstr ""
+msgstr "Пользовательский скрипт обновления"
msgid "DDNS Autostart disabled"
-msgstr ""
+msgstr "Автостарт DDNS отключен"
msgid "DDNS Client Configuration"
-msgstr ""
+msgstr "Настройка клиента DDNS"
msgid "DDNS Client Documentation"
-msgstr ""
+msgstr "Информация клиента DDNS"
msgid "DDNS Service provider"
-msgstr ""
+msgstr "Провайдер службы DDNS"
msgid "DNS requests via TCP not supported"
-msgstr ""
+msgstr "DNS запросы по протоколу TCP не поддерживаются"
msgid "DNS-Server"
-msgstr ""
+msgstr "DNS сервер"
msgid "Date format"
-msgstr ""
+msgstr "Формат даты"
msgid "Defines the Web page to read systems IPv4-Address from"
-msgstr ""
+msgstr "Определяет веб-страницу для чтения IPv4-адреса систем из"
msgid "Defines the Web page to read systems IPv6-Address from"
-msgstr ""
+msgstr "Определяет веб-страницу для чтения IPv6-адреса систем из"
msgid "Defines the interface to read systems IP-Address from"
-msgstr ""
+msgstr "Определяет интерфейс для чтения системных IP-адресов из"
msgid "Defines the network to read systems IPv4-Address from"
-msgstr ""
+msgstr "Определяет сеть для чтения систем IPv4-адреса из"
msgid "Defines the network to read systems IPv6-Address from"
-msgstr ""
+msgstr "Определяет сеть для чтения систем IPv6-адреса из"
msgid ""
"Defines the source to read systems IPv4-Address from, that will be send to "
"the DDNS provider"
msgstr ""
+"Определяет источник для чтения IPv4-адресов систем, которые будут отправлены "
+"DDNS провайдеру."
msgid ""
"Defines the source to read systems IPv6-Address from, that will be send to "
"the DDNS provider"
msgstr ""
+"Определяет источник для чтения IPv6-адресов систем, которые будут отправлены "
+"DDNS провайдеру."
msgid "Defines which IP address 'IPv4/IPv6' is send to the DDNS provider"
-msgstr ""
+msgstr "Определяет, какой IP адрес 'IPv4/IPv6' отправляется провайдеру DDNS."
msgid "Details for"
-msgstr ""
+msgstr "Подробно"
msgid "Directory contains Log files for each running section"
-msgstr ""
+msgstr "Папка содержит файлы системного журнала для каждого запуска."
msgid ""
"Directory contains PID and other status information for each running section"
-msgstr ""
+msgstr "Папка содержит PID и прочую информацию о состояниии каждого запуска."
msgid "Disabled"
-msgstr ""
+msgstr "Отключено"
msgid "Domain"
-msgstr ""
+msgstr "Домен"
msgid "Dynamic DNS"
msgstr "Динамический DNS"
@@ -186,136 +204,159 @@ msgid ""
"Dynamic DNS allows that your router can be reached with a fixed hostname "
"while having a dynamically changing IP address."
msgstr ""
-"Динамический DNS позволяет вашему маршрутизатору иметь постоянное доменное "
-"имя при динамическом IP-адресе."
+"DDNS разрешает вашему роутеру иметь постоянное доменное имя, при динамически "
+"изменяемом IP-адресе."
msgid "Enable secure communication with DDNS provider"
-msgstr ""
+msgstr "Включить безопасное соединение с провайдером DDNS"
msgid "Enabled"
-msgstr ""
+msgstr "Включено"
msgid "Error"
-msgstr ""
+msgstr "Ошибка"
msgid "Error Retry Counter"
-msgstr ""
+msgstr "Ошибка учета попыток повтора"
msgid "Error Retry Interval"
-msgstr ""
+msgstr "Ошибка интервала попытки повтора"
msgid "Event Network"
-msgstr ""
+msgstr "Событие сети"
msgid "File"
-msgstr ""
+msgstr "Файл"
msgid "File not found"
-msgstr ""
+msgstr "Файл не найден"
msgid "File not found or empty"
-msgstr ""
+msgstr "Файл не найден или пустой"
msgid ""
"Follow this link<br />You will find more hints to optimize your system to "
"run DDNS scripts with all options"
msgstr ""
+"Пройдите по этой ссылке<br />там вы найдете больше информации, как настроить "
+"вашу систему с использованием DDNS скриптов с наиболее полным функционалом."
msgid "For detailed information about parameter settings look here."
msgstr ""
+"Здесь вы сможете получить, более подробную информацию о параметрах настройки."
msgid "For supported codes look here"
-msgstr ""
+msgstr "С поддерживаемыми кодами, вы сможете ознакомится здесь."
msgid "Force IP Version"
-msgstr ""
+msgstr "Назначенный случайный IP-адрес"
msgid "Force IP Version not supported"
-msgstr ""
+msgstr "Назначенный случайный IP-адрес, не поддерживается"
msgid "Force Interval"
-msgstr ""
+msgstr "Назначить интервал"
msgid "Force TCP on DNS"
-msgstr ""
+msgstr "Выбрать протокол TCP для DNS"
msgid "Forced IP Version don't matched"
-msgstr ""
+msgstr "Назначенный случайный IP-адрес, не транслируется"
msgid "Format"
-msgstr ""
+msgstr "Значение"
msgid "Format: IP or FQDN"
-msgstr ""
+msgstr "Значение: IP или полное доменное имя"
msgid ""
"GNU Wget will use the IP of given network, cURL will use the physical "
"interface."
msgstr ""
+"GNU wget будет использовать IP присвоенный сетью, cURL будет использовать "
+"физический интерфейс."
msgid "Global Settings"
-msgstr ""
+msgstr "Основные настройки"
msgid "HTTPS not supported"
-msgstr ""
+msgstr "HTTPS не поддерживается"
msgid "Hints"
-msgstr ""
+msgstr "Подсказки"
msgid "Hostname/FQDN to validate, if IP update happen or necessary"
msgstr ""
+"Имя хоста/полное доменное имя для проверки, если обновление IP происходит "
+"или оно необходимо."
msgid "IP address source"
-msgstr ""
+msgstr "IP адрес источника"
msgid "IP address version"
-msgstr ""
+msgstr "Случайный IP-адрес"
msgid "IPv4-Address"
-msgstr ""
+msgstr "IPv4-адрес"
msgid "IPv6 address must be given in square brackets"
-msgstr ""
+msgstr "IPv6 адрес должен быть указан в квадратных скобках"
msgid ""
"IPv6 is currently not (fully) supported by this system<br />Please follow "
"the instructions on OpenWrt's homepage to enable IPv6 support<br />or update "
"your system to the latest OpenWrt Release"
msgstr ""
+"IPv6 не поддерживается вашей прошивкой < br />пожалуйста, следуйте "
+"инструкциям на главной странице OpenWrt, чтобы включить поддержку IPv6<br / "
+"> или обновить прошивку до последнего выпуска OpenWrt с включением поддержки "
+"IPv6."
msgid "IPv6 not supported"
-msgstr ""
+msgstr "IPv6 не поддерживается"
msgid "IPv6-Address"
-msgstr ""
+msgstr "IPv6-адрес"
msgid "If both cURL and GNU Wget are installed, Wget is used by default."
msgstr ""
+"Если установлены cURL и GNU Wget вместе, Wget будет использоваться по "
+"умолчанию."
msgid ""
"If this service section is disabled it could not be started.<br />Neither "
"from LuCI interface nor from console"
msgstr ""
+"Если этот режим службы отключен, его нельзя будет запустить. Не с веб-"
+"интерфейса LuCI, ни с консоли."
msgid "If using secure communication you should verify server certificates!"
msgstr ""
+"Если используется безопасное соединение, необходимо проверить сертификаты "
+"сервера!"
msgid ""
"If you want to send updates for IPv4 and IPv6 you need to define two "
"separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'"
msgstr ""
+"Протоколы IPv4 и IPv6 необходимо настроить раздельно , т. е. 'myddns_ipv4' и "
+"'myddns_ipv6'."
msgid ""
"In some versions cURL/libcurl in OpenWrt is compiled without proxy support."
msgstr ""
+"В некоторых случаях cURL/libcurl, если OpenWrt скомпилирован без поддержки "
+"прокси."
msgid "Info"
-msgstr ""
+msgstr "Информация"
msgid ""
"Install 'ca-certificates' package or needed certificates by hand into /etc/"
"ssl/certs default directory"
msgstr ""
+"Установите 'ca-certificates' или пакет необходимых сертификатов вручную в "
+"папку/etc/ssl/certs"
msgid "Interface"
msgstr "Интерфейс"
@@ -324,408 +365,438 @@ msgid ""
"Interval to check for changed IP<br />Values below 5 minutes == 300 seconds "
"are not supported"
msgstr ""
+"Интервал для проверки измененных IP<br />ниже 5 минут = = 300 секунд не "
+"поддерживаются."
msgid ""
"Interval to force updates send to DDNS Provider<br />Setting this parameter "
"to 0 will force the script to only run once<br />Values lower 'Check "
"Interval' except '0' are not supported"
msgstr ""
+"Интервал для принудительного обновления отправить провайдеру DDNS<br /"
+">Установка этого параметра в 0 заставит сценарий работать только один "
+"раз<br />значения ниже 'Интервал проверки', за исключением '0' не "
+"поддерживаются."
msgid "It is NOT recommended for casual users to change settings on this page."
msgstr ""
+"Не рекомендуется случайным пользователям, изменять настройки на этой "
+"странице."
msgid "Last Update"
-msgstr ""
+msgstr "Последнее обновление"
msgid "Loading"
-msgstr ""
+msgstr "Загрузка"
msgid "Log File Viewer"
-msgstr ""
+msgstr "Просмотр системного журнала"
msgid "Log directory"
-msgstr ""
+msgstr "Папка системного журнала"
msgid "Log length"
-msgstr ""
+msgstr "Длина системного журнала"
msgid "Log to file"
-msgstr ""
+msgstr "Запись в файл"
msgid "Log to syslog"
-msgstr ""
+msgstr "Запись в системный журнал"
msgid "Lookup Hostname"
-msgstr ""
+msgstr "Поиск имени хоста"
msgid "NOT installed"
-msgstr ""
+msgstr "Не установлено"
msgid ""
"Neither GNU Wget with SSL nor cURL installed to select a network to use for "
"communication."
-msgstr ""
+msgstr "Neither GNU Wget с SSL nor cURL установлены для выбора сети для связи."
msgid ""
"Neither GNU Wget with SSL nor cURL installed to support secure updates via "
"HTTPS protocol."
msgstr ""
+"Neither GNU Wget с SSL nor cURL установлены для поддержки безопасных "
+"обновлений по протоколу HTTPS."
msgid "Network"
msgstr "Сеть"
msgid "Network on which the ddns-updater scripts will be started"
-msgstr ""
+msgstr "Сеть, в которой будут запущены скрипты DDNS-updater"
msgid "Never"
-msgstr ""
+msgstr "Никогда"
msgid "Next Update"
-msgstr ""
+msgstr "Следующее обновление"
msgid "No certificates found"
-msgstr ""
+msgstr "Сертификаты не найдены"
msgid "No data"
-msgstr ""
+msgstr "Нет данных"
msgid "No logging"
-msgstr ""
+msgstr "Нет записи в системный журнал"
msgid "Non-public and by default blocked IP's"
-msgstr ""
+msgstr "Непубличные и по умолчанию заблокированные IP-адреса"
msgid "Notice"
-msgstr ""
+msgstr "Заметка"
msgid "Number of last lines stored in log files"
-msgstr ""
+msgstr "Число последних строк, системного журнала."
msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication."
-msgstr ""
+msgstr "Необязательно: Принудительное использование протоколов IPv4/IPv6."
msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests."
msgstr ""
+"Необязательно: Принудительное использование протокола TCP вместо UDP по "
+"умолчанию для DNS-запросов."
msgid "OPTIONAL: Network to use for communication"
-msgstr ""
+msgstr "Необязательно: Сеть для связи"
msgid "OPTIONAL: Proxy-Server for detection and updates."
-msgstr ""
+msgstr "Необязательно: Прокси-сервер для обнаружения и обновления."
msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'."
msgstr ""
+"Необязательно: Использовать по умолчанию DNS-сервер, чтобы обнаружить "
+"'зарегистрирована IP."
msgid "On Error the script will retry the failed action after given time"
msgstr ""
+"При ошибке скрипт повторит неудачное действие, по истечении заданного "
+"времени."
msgid "On Error the script will stop execution after given number of retrys"
msgstr ""
+"При ошибке скрипт прекратит выполнение, после заданного количества повторных "
+"попыток."
msgid "OpenWrt Wiki"
-msgstr ""
+msgstr "OpenWrt Wiki"
msgid "Optional Encoded Parameter"
-msgstr ""
+msgstr "Необязательный кодированный параметр"
msgid "Optional Parameter"
-msgstr ""
+msgstr "Необязательный параметр"
msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)"
-msgstr ""
+msgstr "Дополнительно: заменяет [PARAMENC] в Update-URL-адрес (URL-encoded)"
msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)"
-msgstr ""
+msgstr "Дополнительно: заменяет [PARAMOPT] в Update-URL-адрес (не URL-encoded)"
msgid "Overview"
-msgstr ""
+msgstr "Главное меню"
msgid "PROXY-Server"
-msgstr ""
+msgstr "Прокси сервер"
msgid "PROXY-Server not supported"
-msgstr ""
+msgstr "Прокси сервер не поддерживается"
msgid "Password"
msgstr "Пароль"
msgid "Path to CA-Certificate"
-msgstr ""
+msgstr "Путь к CA-Certificate"
msgid "Please [Save & Apply] your changes first"
-msgstr ""
+msgstr "Нажмите [Сохранить и применить] чтобы сохранить ваши настройки."
msgid "Please press [Read] button"
-msgstr ""
+msgstr "Нажмите кнопку [Читать / Перечитывать системный журнал]"
msgid "Please update to the current version!"
-msgstr ""
+msgstr "Обновите до текущей версии!"
msgid "Process ID"
-msgstr ""
+msgstr "ID процесса"
msgid "Read / Reread log file"
-msgstr ""
+msgstr "Чтение / перечитка системного журнала"
msgid "Really change DDNS provider?"
-msgstr ""
+msgstr "Действительно сменить DDNS провайдера?"
msgid "Registered IP"
-msgstr ""
+msgstr "Зарегистрированный IP"
msgid "Replaces [DOMAIN] in Update-URL"
-msgstr ""
+msgstr "Заменяет [ДОМЕН] в Update-URL"
msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)"
-msgstr ""
+msgstr "Заменяет [ПАРОЛЬ] в Update-URL (URL-encoded)"
msgid "Replaces [USERNAME] in Update-URL (URL-encoded)"
-msgstr ""
+msgstr "Заменяет [ЛОГИН] in Update-URL (URL-encoded)"
msgid "Run once"
-msgstr ""
+msgstr "Запуск один раз"
msgid "Script"
-msgstr ""
+msgstr "Скрипт"
msgid "Show more"
-msgstr ""
+msgstr "Показать больше"
msgid "Software update required"
-msgstr ""
+msgstr "Требуется обновление программного обеспечения."
msgid "Specifying a DNS-Server is not supported"
-msgstr ""
+msgstr "Указанный DNS-сервер не поддерживается"
msgid "Start"
-msgstr ""
+msgstr "Старт"
msgid "Start / Stop"
-msgstr ""
+msgstr "Старт / Стоп"
msgid "Status directory"
-msgstr ""
+msgstr "Папка состояния"
msgid "Stopped"
-msgstr ""
+msgstr "Остановлено"
msgid ""
"The currently installed 'ddns-scripts' package did not support all available "
"settings."
msgstr ""
+"Пакет установленных 'ddns-scripts' не поддерживает все доступные настройки."
msgid "The default setting of '0' will retry infinite."
-msgstr ""
+msgstr "Значение по умолчанию '0' будет повторяться бесконечно."
msgid "There is no service configured."
-msgstr ""
+msgstr "Сервис не настроен."
msgid "Timer Settings"
-msgstr ""
+msgstr "Настройка таймера"
msgid "To change global settings click here"
-msgstr ""
+msgstr "Чтобы изменить основные настройки, нажмите здесь"
msgid "To use cURL activate this option."
-msgstr ""
+msgstr "Для использования cURL активируйте режим."
msgid "URL"
msgstr "URL"
msgid "URL to detect"
-msgstr ""
+msgstr "обнаружен URL"
msgid "Unknown error"
-msgstr ""
+msgstr "Неизвестная ошибка"
msgid ""
"Update URL to be used for updating your DDNS Provider.<br />Follow "
"instructions you will find on their WEB page."
msgstr ""
+"Update URL используется для обновления DDNS-провайдера.<br />Следуйте "
+"инструкциям, вы найдете на их на их веб-странице."
msgid "Update error"
-msgstr ""
+msgstr "Ошибка обновления"
msgid "Use HTTP Secure"
-msgstr ""
+msgstr "Использовать HTTPS"
msgid "Use cURL"
-msgstr ""
+msgstr "Использовать cURL"
msgid "User defined script to read systems IP-Address"
-msgstr ""
+msgstr "Определяемый пользователем скрипт для чтения системного IP-адреса."
msgid "Username"
msgstr "Имя пользователя"
msgid "Using specific DNS Server not supported"
-msgstr ""
+msgstr "Использование определенного DNS-сервера не поддерживается."
msgid "Verify"
-msgstr ""
+msgstr "Проверить"
msgid "Version"
-msgstr ""
+msgstr "Версия"
msgid "Version Information"
-msgstr ""
+msgstr "Случайная информация"
msgid "Waiting for changes to be applied..."
-msgstr ""
+msgstr "Ожидание применения изменений..."
msgid "Warning"
-msgstr ""
+msgstr "Внимание"
msgid ""
"Writes detailed messages to log file. File will be truncated automatically."
msgstr ""
+"Пишет подробные сообщения в системный журнал. Файл будет автоматически "
+"обрезан."
msgid ""
"Writes log messages to syslog. Critical Errors will always be written to "
"syslog."
msgstr ""
+"Ведение логов. Критические ошибки, всегда будут записаны в системный журнал."
msgid ""
"You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' "
"package, if you need to specify a DNS server to detect your registered IP."
msgstr ""
+"Установите 'bind-host' или 'knot-host' или 'drill' или 'hostip' пакеты если "
+"вам нужно указать DNS-сервер для обнаружения вашего зарегистрированного IP-"
+"адреса."
msgid ""
"You should install 'bind-host' or 'knot-host' or 'drill' package for DNS "
"requests."
-msgstr ""
+msgstr "Установите 'bind-host' или 'knot-host' или 'drill' для DNS запросов."
msgid "You should install 'wget' or 'curl' or 'uclient-fetch' package."
-msgstr ""
+msgstr "Установите 'wget' или 'curl' или 'uclient-fetch' пакет."
msgid ""
"You should install 'wget' or 'curl' or 'uclient-fetch' with 'libustream-"
"*ssl' package."
msgstr ""
+"Установите 'wget' или 'curl' или 'uclient-fetch' с 'libustream-*ssl' пакетом."
msgid "You should install 'wget' or 'curl' package."
-msgstr ""
+msgstr "Установите 'wget' или 'curl' пакеты."
msgid ""
"You should install 'wget' or 'uclient-fetch' package or replace libcurl."
msgstr ""
+"Вы должны установить 'wget' или пакет 'uclient-fetch' или заменить libcurl."
msgid "cURL is installed, but libcurl was compiled without proxy support."
-msgstr ""
+msgstr "cURL установлен, но libcurl был скомпилирован без поддержки прокси."
msgid "cURL without Proxy Support"
-msgstr ""
+msgstr "cURL без поддержки прокси"
msgid "can not detect local IP. Please select a different Source combination"
-msgstr ""
+msgstr "не может определить локальный IP-адрес. Выберите другой вариант"
msgid "can not resolve host:"
-msgstr ""
+msgstr "не может разрешить хост:"
msgid "config error"
-msgstr ""
+msgstr "ошибка в config файле"
msgid "days"
-msgstr ""
+msgstr "дни"
msgid "directory or path/file"
-msgstr ""
+msgstr "папка или путь/к файлу"
msgid "either url or script could be set"
-msgstr ""
+msgstr "или url или скрипт смог быть установлен"
msgid "enable here"
-msgstr ""
+msgstr "Включить здесь"
msgid "file or directory not found or not 'IGNORE'"
-msgstr ""
+msgstr "файл или папка не найдена или не 'Игнорировать'"
msgid "help"
-msgstr ""
+msgstr "помощь"
msgid "hours"
-msgstr ""
+msgstr "часы"
msgid "installed"
-msgstr ""
+msgstr "установлено"
msgid "invalid FQDN / required - Sample"
-msgstr ""
+msgstr "недопустимое полное доменное имя / обязательный образец"
msgid "minimum value '0'"
-msgstr ""
+msgstr "минимальное значение '0'"
msgid "minimum value '1'"
-msgstr ""
+msgstr "минимальное значение '1'"
msgid "minimum value 5 minutes == 300 seconds"
-msgstr ""
+msgstr "минимальное значение 5 минут == 300 секунд"
msgid "minutes"
-msgstr ""
+msgstr "минуты"
msgid "missing / required"
-msgstr ""
+msgstr "отсутствует / не требуется"
msgid "must be greater or equal 'Check Interval'"
-msgstr ""
+msgstr "должно быть больше или равно 'Интервал проверки'"
msgid "must start with 'http://'"
-msgstr ""
+msgstr "должны начинаться с 'http://'"
msgid "nc (netcat) can not connect"
-msgstr ""
+msgstr "NC (netcat) не может подключиться"
msgid "never"
-msgstr ""
+msgstr "никогда"
msgid "no data"
-msgstr ""
+msgstr "нет данных"
msgid "not found or not executable - Sample: '/path/to/script.sh'"
msgstr ""
+"не найден или не является исполнительным, например: '/path/to/script.sh'"
msgid "nslookup can not resolve host"
-msgstr ""
+msgstr "nslookup не может разрешить хост"
msgid "or"
-msgstr ""
+msgstr "или"
msgid "or higher"
-msgstr ""
+msgstr "или выше"
msgid "please disable"
-msgstr ""
+msgstr "отключите"
msgid "please remove entry"
-msgstr ""
+msgstr "удалите эту запись"
msgid "please select 'IPv4' address version"
-msgstr ""
+msgstr "выберите случайный 'IPv4' адрес"
msgid "please select 'IPv4' address version in"
-msgstr ""
+msgstr "выберите случайный 'IPv4' адрес в"
msgid "please set to 'default'"
-msgstr ""
+msgstr "установите режим 'по умолчанию'"
msgid "proxy port missing"
-msgstr ""
+msgstr "отсутствует прокси порт"
msgid "required"
-msgstr ""
+msgstr "требовать"
msgid "seconds"
-msgstr ""
+msgstr "секунды"
msgid "to run HTTPS without verification of server certificates (insecure)"
-msgstr ""
+msgstr "использовать HTTPS без проверки сертификатов сервера (небезопасно)"
msgid "unknown error"
-msgstr ""
+msgstr "неизвестная ошибка"
msgid "unspecific error"
-msgstr ""
+msgstr "нетипичная ошибка"
msgid "use hostname, FQDN, IPv4- or IPv6-Address"
-msgstr ""
+msgstr "использовать имя хоста, полное доменное имя, IPv4 или IPv6-адрес"
diff --git a/applications/luci-app-diag-core/po/ru/diag_core.po b/applications/luci-app-diag-core/po/ru/diag_core.po
index 1abaa8c6c..931cc2b23 100644
--- a/applications/luci-app-diag-core/po/ru/diag_core.po
+++ b/applications/luci-app-diag-core/po/ru/diag_core.po
@@ -1,21 +1,20 @@
msgid ""
msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
"Project-Id-Version: LuCI: diag_core\n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: 2012-08-15 11:44+0300\n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"POT-Creation-Date: 2012-08-15 11:44+0300\n"
+"PO-Revision-Date: 2018-01-07 19:47+0300\n"
+"Language-Team: http://cyber-place.ru\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Pootle 2.0.6\n"
-"X-Poedit-SourceCharset: UTF-8\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
msgid "Configure Diagnostics"
-msgstr "Настройки диагностики"
+msgstr "Настройка диагностики"
msgid "Diagnostics"
msgstr "Диагностика"
@@ -24,22 +23,19 @@ msgid ""
"The diagnostics available under this menu depend on what modules you have "
"installed on your device."
msgstr ""
-"Доступные в данном меню виды диагностики зависят от установленных на вашем "
-"устройстве модулей. "
+"Доступные виды диагностики зависят от установленных на вашем устройстве "
+"модулей. "
msgid ""
"The entries in the menu allow you to perform diagnostic tests on your system "
"to aid in troubleshooting."
msgstr ""
-"Записи в меню позволять вам выполнить диагностику системы, чтобы помочь в "
+"Настройки позволять вам выполнить диагностику системы, чтобы помочь в "
"обнаружении проблем."
msgid ""
"With this menu you can configure network diagnostics, such as network device "
"scans and ping tests."
msgstr ""
-"Используя это меню, вы можете настроить диагностику сети, например, "
+"На этой странице вы можете настроить диагностику сети, например, "
"сканирование сетевых устройств или ping-тест."
-
-#~ msgid "l_d_diag"
-#~ msgstr "l_d_diag"
diff --git a/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua b/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua
index 368c6673a..999c81dee 100644
--- a/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua
+++ b/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua
@@ -1,4 +1,4 @@
--- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
-- This is free software, licensed under the Apache License, Version 2.0
local fs = require("nixio.fs")
@@ -6,10 +6,11 @@ local uci = require("luci.model.uci").cursor()
local util = require("luci.util")
local date = require("luci.http.protocol.date")
local res_input = "/usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv"
+local res_dir = fs.dirname(res_input)
local dump = util.ubus("network.interface", "dump", {})
local plug_cnt = tonumber(luci.sys.exec("env -i /usr/sbin/dnscrypt-proxy --version | grep 'Support for plugins: present' | wc -l"))
local res_list = {}
-local url = "https://download.dnscrypt.org/dnscrypt-proxy/dnscrypt-resolvers.csv"
+local url = "https://raw.githubusercontent.com/dyne/dnscrypt-proxy/master/dnscrypt-resolvers.csv"
if not fs.access(res_input) then
if not fs.access("/lib/libustream-ssl.so") then
@@ -29,22 +30,24 @@ if not uci:get_first("dnscrypt-proxy", "global") then
uci:commit("dnscrypt-proxy")
end
-for line in io.lines(res_input) do
- local name,
- location,
- dnssec,
- nolog = line:match("^([^,]+),.-,\".-\",\"*(.-)\"*,.-,[0-9],\"*([yesno]+)\"*,\"*([yesno]+)\"*,.*")
- if name ~= "" and name ~= "Name" then
- if location == "" then
- location = "-"
- end
- if dnssec == "" then
- dnssec = "-"
- end
- if nolog == "" then
- nolog = "-"
+if fs.access(res_input) then
+ for line in io.lines(res_input) or {} do
+ local name,
+ location,
+ dnssec,
+ nolog = line:match("^([^,]+),.-,\".-\",\"*(.-)\"*,.-,[0-9],\"*([yesno]+)\"*,\"*([yesno]+)\"*,.*")
+ if name ~= "" and name ~= "Name" then
+ if location == "" then
+ location = "-"
+ end
+ if dnssec == "" then
+ dnssec = "-"
+ end
+ if nolog == "" then
+ nolog = "-"
+ end
+ res_list[#res_list + 1] = { name = name, location = location, dnssec = dnssec, nolog = nolog }
end
- res_list[#res_list + 1] = { name = name, location = location, dnssec = dnssec, nolog = nolog }
end
end
@@ -60,7 +63,7 @@ function m.on_after_commit(self)
if value == "1" then
uci:commit("dnscrypt-proxy")
uci:set("dhcp", s1, "noresolv", 1)
- if not fs.access("/etc/resolv-crypt.conf") or nixio.fs.stat("/etc/resolv-crypt.conf").size == 0 then
+ if not fs.access("/etc/resolv-crypt.conf") or fs.stat("/etc/resolv-crypt.conf").size == 0 then
uci:set("dhcp", s1, "resolvfile", "/tmp/resolv.conf.auto")
else
uci:set("dhcp", s1, "resolvfile", "/etc/resolv-crypt.conf")
@@ -98,32 +101,43 @@ o1.value = res_input
o2 = s:option(DummyValue, "", translate("File Date"))
o2.template = "dnscrypt-proxy/res_options"
-o2.value = date.to_http(nixio.fs.stat(res_input).mtime)
+if fs.access(res_input) then
+ o2.value = date.to_http(fs.stat(res_input).mtime)
+else
+ o2.value = "-"
+end
o3 = s:option(DummyValue, "", translate("File Checksum"))
o3.template = "dnscrypt-proxy/res_options"
-o3.value = luci.sys.exec("sha256sum " .. res_input .. " | awk '{print $1}'")
+if fs.access(res_input) then
+ o3.value = luci.sys.exec("sha256sum " .. res_input .. " | awk '{print $1}'")
+else
+ o3.value = "-"
+end
if fs.access("/lib/libustream-ssl.so") then
btn1 = s:option(Button, "", translate("Refresh Resolver List"),
- translate("Download the current resolver list from 'download.dnscrypt.org'."))
+ translate("Download the current resolver list from 'github.com/dyne/dnscrypt-proxy'."))
btn1.inputtitle = translate("Refresh List")
btn1.inputstyle = "apply"
btn1.disabled = false
function btn1.write()
+ if not fs.access(res_dir) then
+ fs.mkdir(res_dir)
+ end
luci.sys.call("env -i /bin/uclient-fetch --no-check-certificate -O " .. res_input .. " " .. url .. " >/dev/null 2>&1")
luci.http.redirect(luci.dispatcher.build_url("admin", "services", "dnscrypt-proxy"))
end
else
btn1 = s:option(Button, "", translate("Refresh Resolver List"),
translate("No SSL support available.<br />")
- .. translate("Please install a 'libustream-ssl' library to download the current resolver list from 'download.dnscrypt.org'."))
+ .. translate("Please install a 'libustream-ssl' library to download the current resolver list from 'github.com/dyne/dnscrypt-proxy'."))
btn1.inputtitle = translate("-------")
btn1.inputstyle = "button"
btn1.disabled = true
end
-if not fs.access("/etc/resolv-crypt.conf") or nixio.fs.stat("/etc/resolv-crypt.conf").size == 0 then
+if not fs.access("/etc/resolv-crypt.conf") or fs.stat("/etc/resolv-crypt.conf").size == 0 then
btn2 = s:option(Button, "", translate("Create Custom Config File"),
translate("Create '/etc/resolv-crypt.conf' with 'options timeout:1' to reduce DNS upstream timeouts with multiple DNSCrypt instances.<br />")
.. translatef("For further information "
diff --git a/applications/luci-app-dnscrypt-proxy/po/ru/dnscrypt-proxy.po b/applications/luci-app-dnscrypt-proxy/po/ru/dnscrypt-proxy.po
new file mode 100644
index 000000000..385d81219
--- /dev/null
+++ b/applications/luci-app-dnscrypt-proxy/po/ru/dnscrypt-proxy.po
@@ -0,0 +1,276 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: dnscrypt-proxy\n"
+"POT-Creation-Date: 2017-10-17 14:30+0300\n"
+"PO-Revision-Date: 2018-01-06 14:20+0300\n"
+"Language-Team: http://cyber-place.ru\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
+
+msgid "-------"
+msgstr ""
+
+msgid "Advanced"
+msgstr "Дополнительно"
+
+msgid "Alternate Resolver List"
+msgstr "Альтернативный список разрешенных серверов"
+
+msgid ""
+"Apply DNSCrypt-Proxy specific settings to the Dnsmasq configuration.<br />"
+msgstr ""
+"Применить специальные настройки DNSCrypt-Proxy для Dnsmasq config файла.<br /"
+">"
+
+msgid "Blacklist"
+msgstr "Черный список"
+
+msgid "Block IPv6"
+msgstr "Блокировать IPv6"
+
+msgid ""
+"By default the DNSCrypt-Proxy startup will be triggered by ifup events of "
+"'All' available network interfaces.<br />"
+msgstr ""
+"По дефолту DNSCrypt-Proxy стартует на всех доступных интерфейсах 'All'.<br />"
+
+msgid "Configuration of the DNSCrypt-Proxy package."
+msgstr "Настройка DNSCrypt-Proxy. "
+
+msgid ""
+"Create '/etc/resolv-crypt.conf' with 'options timeout:1' to reduce DNS "
+"upstream timeouts with multiple DNSCrypt instances.<br />"
+msgstr ""
+"Создать конфиг файл '/etc/resolv-crypt.conf' с 'options timeout:1' для "
+"уменьшения восходящих тайм-аутов DNS с многократными DNSCrypt instances.<br /"
+">"
+
+msgid "Create Config File"
+msgstr "Создать сonfig файл"
+
+msgid "Create Custom Config File"
+msgstr "Создать config"
+
+msgid "DNS Query Logfile"
+msgstr "Файл системного журнала запроса DNS"
+
+msgid "DNSCrypt-Proxy"
+msgstr "DNSCrypt-Proxy"
+
+msgid "DNSCrypt-Proxy Logfile"
+msgstr "Файл системного журнала DNSCrypt-Proxy"
+
+msgid "DNSCrypt-Proxy Resolver List"
+msgstr "DNSCrypt-Proxy список разрешенных серверов"
+
+msgid "Default Resolver List"
+msgstr "Дефолтный список разрешенных серверов"
+
+msgid "Disable IPv6 to speed up DNSCrypt-Proxy."
+msgstr "Отключить IPv6 для DNSCrypt-Proxy."
+
+msgid "Dnsmasq Options"
+msgstr "Настройка Dnsmasq"
+
+msgid "Download the current resolver list from 'download.dnscrypt.org'."
+msgstr "Скачать текущий список разрешенных серверов с 'download.dnscrypt.org'."
+
+msgid "Edit DNSCrypt-Proxy Configuration"
+msgstr "Настройка config файла DNSCrypt-Proxy"
+
+msgid "Edit Dnsmasq Configuration"
+msgstr "Настройка config файла Dnsmasq"
+
+msgid "Edit Resolvcrypt Configuration"
+msgstr "Настройка config файла Resolvcrypt"
+
+msgid "Enable Caching to speed up DNSCcrypt-Proxy."
+msgstr "Включить кэширование для ускорения DNSCcrypt-Proxy."
+
+msgid "Ephemeral Keys"
+msgstr "Эфемерные ключи"
+
+msgid "File Checksum"
+msgstr "Контрольная сумма файла"
+
+msgid "File Date"
+msgstr "Дата и время создания файла"
+
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">see the wiki "
+"online</a>"
+msgstr ""
+"Для более подробной информации <a href=\"%s\" target=\"_blank\">обратитесь к "
+"wiki онлайн</a>."
+
+msgid "General Options"
+msgstr "Основные настройки"
+
+msgid "IP Address"
+msgstr "IP адрес"
+
+msgid "Improve privacy by using an ephemeral public key for each query."
+msgstr ""
+"Улучшить безопасность, используя эфемерный открытый ключ для каждого запроса."
+
+msgid "Input file not found, please check your configuration."
+msgstr "Введенный файл не найден, пожалуйста проверьте ваши настройки."
+
+msgid "Instance Options"
+msgstr "Дополнительные настройки"
+
+msgid "Local Cache"
+msgstr "Местный кэш"
+
+msgid ""
+"Local blacklists allow you to block abuse sites by domains or ip addresses."
+msgstr ""
+"Локальные Черные списки, позволяют блокировать сайты по их доменам или IP-"
+"адресам."
+
+msgid ""
+"Log the received DNS queries to a file, so you can watch in real-time what "
+"is happening on the network."
+msgstr ""
+"Записывайте в журнал полученные запросы DNS. Таким образом, Вы сможете "
+"наблюдать в режиме реального времени, что происходит в сети."
+
+msgid ""
+"Name of the remote DNS service for resolving queries incl. Location, DNSSEC- "
+"and NOLOG-Flag."
+msgstr ""
+"Имя удаленного сервера DNS для разрешения запросов к нему. Location, DNSSEC- "
+"и NOLOG-Flag (LOC/SEC/NOLOG)."
+
+msgid "No SSL support available.<br />"
+msgstr "Отсутствует поддержка SSL.<br />"
+
+msgid "No default resolver list and no SSL support available.<br />"
+msgstr "Отсутствует список разрешенных серверов и не поддерживается SSL.<br />"
+
+msgid "Overview"
+msgstr "Главное меню"
+
+msgid "Please edit the file manually in the 'Advanced' section."
+msgstr "Пожалуйста, отредактируйте файл вручную в разделе 'Дополнительно'."
+
+msgid ""
+"Please install a 'libustream-ssl' library to download the current resolver "
+"list from 'download.dnscrypt.org'."
+msgstr ""
+"Пожалуйста установите 'libustream-openssl' для загрузки текущего списка "
+"разрешенных серверов с 'download.dnscrypt.org'."
+
+msgid ""
+"Please install a resolver list to '/usr/share/dnscrypt-proxy/dnscrypt-"
+"resolvers.csv' to use this package."
+msgstr ""
+"Пожалуйста установите список разрешенных серверов в '/usr/share/dnscrypt-"
+"proxy/dnscrypt-resolvers.csv' для использования данного сервиса."
+
+msgid ""
+"Please note: This may change the values for 'noresolv', 'resolvfile', "
+"'allservers' and the list 'server' settings."
+msgstr ""
+"Примечание: Этот режим, может изменить значения для 'noresolv', "
+"'resolvfile', 'allservers' и параметры настройки списка 'серверов'."
+
+msgid "Port"
+msgstr "Порт"
+
+msgid "Refresh List"
+msgstr "Обновить список"
+
+msgid "Refresh Resolver List"
+msgstr "Обновить список разрешенных серверов"
+
+msgid "Resolver (LOC/SEC/NOLOG)"
+msgstr "Разрешено(LOC/SEC/NOLOG)"
+
+msgid "Save"
+msgstr "Сохранить"
+
+msgid "Specify a non-default Resolver List."
+msgstr "Специальный недефолтный список разрешенных серверов."
+
+msgid "Startup Trigger"
+msgstr "Выберите интерфейс"
+
+msgid "The config file '/etc/resolv-crypt.conf' already exist.<br />"
+msgstr "Config файл '/etc/resolv-crypt.conf' уже существует.<br />"
+
+msgid "The listening port for DNS queries."
+msgstr "Прослушивание порта для DNS запросов."
+
+msgid ""
+"The local IPv4 or IPv6 address. The latter one should be specified within "
+"brackets, e.g. '[::1]'."
+msgstr ""
+"Локальные IPv4 или IPv6 адреса. Заключить в скобки, как образец '[::1]'."
+
+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 ""
+"Описание свойств значения - тип Черного списка и путь к файлу как образец "
+"'domains:/path/to/dbl.txt' или 'ips:/path/to/ipbl.txt'."
+
+msgid ""
+"This form allows you to modify the content of the main DNSCrypt-Proxy "
+"configuration file (/etc/config/dnscrypt-proxy)."
+msgstr ""
+"Страница позволяет изменять содержимое config файла DNSCrypt-Proxy (/etc/"
+"config/dnscrypt-proxy)."
+
+msgid ""
+"This form allows you to modify the content of the main Dnsmasq configuration "
+"file (/etc/config/dhcp)."
+msgstr ""
+"Страница позволяет изменять содержимое config файла Dnsmasq (/etc/config/"
+"dhcp)."
+
+msgid ""
+"This form allows you to modify the content of the resolv-crypt configuration "
+"file (/etc/resolv-crypt.conf)."
+msgstr ""
+"Страница позволяет изменять содержимое config файла resolv-crypt (/etc/"
+"resolv-crypt.conf)."
+
+msgid "This form shows the content of the current DNSCrypt Resolver List."
+msgstr ""
+"Страница демонстрирует содержимое DNSCrypt списка разрешенных серверов."
+
+msgid ""
+"This form shows the syslog output, pre-filtered for DNSCrypt-Proxy related "
+"messages only."
+msgstr ""
+"Страница показывает вывод системного журнала, предварительно фильтруемый "
+"только для DNSCrypt-Proxy."
+
+msgid ""
+"This option requires extra CPU cycles and is useless with most DNSCrypt "
+"server."
+msgstr ""
+"Этот режим нагружает CPU и большинством DNSCrypt серверов не поддерживается."
+
+msgid ""
+"To restrict the trigger, select only the relevant network interface. Usually "
+"the 'wan' interface should work for most users."
+msgstr ""
+"Выберите только соответствующий сетевой интерфейс. Обычно интерфейса 'wan', "
+"достаточно для большинства пользователей."
+
+msgid "Transfer Options To Dnsmasq"
+msgstr "Режим передачи Dnsmasq-у"
+
+msgid "View Logfile"
+msgstr "Системный журнал"
+
+msgid "View Resolver List"
+msgstr "Список разрешенных серверов"
diff --git a/applications/luci-app-dynapoint/po/ru/dynapoint.po b/applications/luci-app-dynapoint/po/ru/dynapoint.po
new file mode 100644
index 000000000..844eedb9a
--- /dev/null
+++ b/applications/luci-app-dynapoint/po/ru/dynapoint.po
@@ -0,0 +1,114 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: dynapoint\n"
+"POT-Creation-Date: 2017-12-01 16:15+0300\n"
+"PO-Revision-Date: 2018-01-05 22:11+0300\n"
+"Language-Team: http://cyber-place.ru\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
+
+msgid "Activate this wVIF if status is:"
+msgstr "Применение DynaPoint-а"
+
+msgid "Append hostname to ssid"
+msgstr "Изменить SSID"
+
+msgid "Append the router's hostname to the SSID when connectivity check fails"
+msgstr ""
+"Добавление имени хоста роутера к SSID, если подключение к интернету "
+"отсутствует."
+
+msgid "Check Internet connectivity via HTTP header download"
+msgstr "Проверка подключения к интернету, с помощью получения HTTP-ответа."
+
+msgid "Configuration"
+msgstr "Настройка config файла"
+
+msgid "Curl is currently not installed."
+msgstr "Curl в настоящее время не установлен."
+
+msgid "Device"
+msgstr "Устройство"
+
+msgid "Disabled"
+msgstr "Отключено"
+
+msgid "DynaPoint"
+msgstr "DynaPoint"
+
+msgid "Dynamic Access Point Manager"
+msgstr "Диспетчер динамических точек доступа."
+
+msgid "Enabled"
+msgstr "Включено"
+
+msgid ""
+"Failure counter after how many failed download attempts, the state is "
+"considered as offline"
+msgstr ""
+"Кол-во попыток получить HTTP-ответ, после чего подключение к интернету будет "
+"считаться разорванным."
+
+msgid "List of Wireless Virtual Interfaces (wVIF)"
+msgstr "Список беспроводных сетей (точек доступа):"
+
+msgid "List of host addresses"
+msgstr "HTTP-адреса"
+
+msgid ""
+"List of host addresses (url or IP) to track and request http headers from"
+msgstr ""
+"Список HTTP-адресов (ссылка или IP-адрес) для проверки подключения к "
+"интернету."
+
+msgid "Mode"
+msgstr "Режим"
+
+msgid "Not used by DynaPoint"
+msgstr "Не используется DynaPoint"
+
+msgid "Offline"
+msgstr "Отключен"
+
+msgid "Online"
+msgstr "Включен"
+
+msgid "SSID"
+msgstr "SSID"
+
+msgid "Switch_to_offline threshold"
+msgstr "Кол-во попыток"
+
+msgid "Test-run interval"
+msgstr "Интервал"
+
+msgid "Time interval in seconds to re-start a new test run"
+msgstr ""
+"Временной интервал в секундах, для повторного запуска проверки подключения к "
+"интернету."
+
+msgid "Use curl"
+msgstr "Использовать curl"
+
+msgid "Use curl instead of wget"
+msgstr "Curl вместо wget"
+
+msgid "Use curl instead of wget for testing the connectivity."
+msgstr "Используйте curl вместо команды wget для тестирования подключения."
+
+msgid "Used interface"
+msgstr "Используемый интерфейс"
+
+msgid "Which interface should curl use. (Use ifconfig to find out)"
+msgstr ""
+"Какой интерфейс должен использовать curl. (Использовать команду ifconfig, "
+"чтобы узнать)."
+
+msgid "WiFi Status"
+msgstr "Состояние"
diff --git a/applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm b/applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm
index 463b2e05f..58121c420 100644
--- a/applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm
+++ b/applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm
@@ -5,7 +5,7 @@
%>
<div class="cbi-section-create cbi-tblsection-create">
- <% if wz and lz then %>
+ <% if wz then %>
<br />
<table class="cbi-section-table" style="margin-left:5px">
<tr class="cbi-section-table-titles">
@@ -37,7 +37,8 @@
</td>
</tr>
</table>
-
+ <% end %>
+ <% if wz and lz then %>
<table class="cbi-section-table" style="margin-left:5px">
<tr class="cbi-section-table-titles">
<th class="cbi-section-table-cell left" colspan="6"><br /><%:New forward rule%>:</th>
@@ -71,7 +72,11 @@
</td>
</tr>
</table>
+ <% else %>
+ <input type="submit" class="cbi-button cbi-button-add" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" value="<%:Add%>" />
+ <% end %>
+ <% if wz then %>
<script type="text/javascript">//<![CDATA[
cbi_validate_field('_newopen.extport', true, 'list(neg(portrange))');
cbi_bind(document.getElementById('_newopen.extport'), 'blur',
@@ -106,7 +111,5 @@
cbi_validate_field('cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>', true, 'uciname');
//]]></script>
- <% else %>
- <input type="submit" class="cbi-button cbi-button-add" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" value="<%:Add%>" />
<% end %>
</div>
diff --git a/applications/luci-app-firewall/po/ru/firewall.po b/applications/luci-app-firewall/po/ru/firewall.po
index be16fece8..3657d742e 100644
--- a/applications/luci-app-firewall/po/ru/firewall.po
+++ b/applications/luci-app-firewall/po/ru/firewall.po
@@ -1,19 +1,17 @@
msgid ""
msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
"Project-Id-Version: LuCI: firewall\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-03-30 17:00+0200\n"
-"PO-Revision-Date: 2013-09-05 16:02+0200\n"
-"Last-Translator: datasheet <michael.gritsaenko@gmail.com>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"POT-Creation-Date: 2013-09-05 16:02+0200\n"
+"PO-Revision-Date: 2018-01-07 20:55+0300\n"
+"Language-Team: http://cyber-place.ru\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Pootle 2.0.6\n"
-"X-Poedit-SourceCharset: UTF-8\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
msgid "%s in %s"
msgstr "%s в %s"
@@ -55,10 +53,10 @@ msgid "Advanced Settings"
msgstr "Расширенные настройки"
msgid "Allow forward from <em>source zones</em>:"
-msgstr "Разрешить перенаправление из <em>зон-источников</em>:"
+msgstr "Разрешить перенаправление из <em>'зон-источников'</em>:"
msgid "Allow forward to <em>destination zones</em>:"
-msgstr "Разрешить перенаправление в <em>зоны назначения</em>:"
+msgstr "Разрешить перенаправление в <em>'зоны назначения'</em>:"
msgid "Any"
msgstr "Любой"
@@ -75,9 +73,8 @@ msgid ""
"each firewall restart, right after the default ruleset has been loaded."
msgstr ""
"Пользовательские правила позволяют выполнять произвольные команды iptables, "
-"которые так или иначе не покрываются данным фреймворком межсетевого экрана. "
-"Команды выполняются при каждом перезапуске межсетевого экрана, сразу после "
-"того, как загружен набор правил по умолчанию."
+"которые не охвачены рамками брандмауэра. Команды выполняются после каждой "
+"перезагрузки брандмауэра сразу после загрузки набора правил по умолчанию."
msgid "Destination IP address"
msgstr "IP-адрес назначения"
@@ -100,7 +97,6 @@ msgstr "Не пропускать некорректные пакеты"
msgid "Enable"
msgstr "Включить"
-#, fuzzy
msgid "Enable NAT Loopback"
msgstr "Включить NAT Loopback"
@@ -147,7 +143,7 @@ msgid "Forward to"
msgstr "Перенаправлять в"
msgid "Friday"
-msgstr ""
+msgstr "Пятница"
msgid "From %s in %s"
msgstr "Из %s в %s"
@@ -200,37 +196,36 @@ msgstr "Ограничение MSS"
msgid "Masquerading"
msgstr "Маскарадинг"
-#, fuzzy
msgid "Match"
-msgstr "Выбирать"
+msgstr "Проверка"
msgid "Match ICMP type"
msgstr "Соответствовать ICMP типу"
msgid "Match forwarded traffic to the given destination port or port range."
msgstr ""
-"Перенаправить соответствующий трафик на определённый порт или диапазон "
-"портов. "
+"Проверять перенаправленный трафик с заданным портом назначения или "
+"диапазоном портов. "
msgid ""
"Match incoming traffic directed at the given destination port or port range "
"on this host"
msgstr ""
-"Выбирать входящий трафик, направленный на порт или диапазон портов данного "
-"хоста"
+"Проверять входящий трафик, направленный на порт или диапазон портов данного "
+"хоста. "
msgid ""
"Match incoming traffic originating from the given source port or port range "
"on the client host."
msgstr ""
-"Выбирать входящий трафик, исходящий из порта или диапазона портов "
-"клиентского хоста."
+"Проверять входящий трафик, исходящий от заданного исходного порта или "
+"диапазона портов на клиентского хоста. "
msgid "Monday"
-msgstr ""
+msgstr "Понедельник"
msgid "Month Days"
-msgstr ""
+msgstr "Дни Месяца"
msgid "Name"
msgstr "Имя"
@@ -301,7 +296,7 @@ msgid "Redirect matched incoming traffic to the specified internal host"
msgstr "Перенаправить входящий трафик на указанный хост внутренней сети"
msgid "Restart Firewall"
-msgstr ""
+msgstr "Перезапуск межсетевой экрана"
msgid "Restrict Masquerading to given destination subnets"
msgstr "Использовать маскарадинг только для указанных подсетей-получателей"
@@ -335,29 +330,8 @@ msgid "SNAT port"
msgstr "Порт SNAT"
msgid "Saturday"
-msgstr ""
+msgstr "Суббота"
-# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
-# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/rrule.lua #
-# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
-# msgid "Traffic Redirection"
-# msgstr ""
-# msgid ""
-# "Traffic redirection allows you to change the destination address of "
-# "forwarded packets."
-# msgstr ""
-# msgid "Overview"
-# msgstr ""
-# msgid "Name"
-# msgstr ""
-# msgid "Source zone"
-# msgstr ""
-# msgid "Source MAC-address"
-# msgstr ""
-# msgid "Source port"
-# msgstr ""
-# msgid "Protocol"
-# msgstr ""
msgid "Source IP address"
msgstr "IP-адрес источника"
@@ -387,19 +361,19 @@ msgid "Source zone"
msgstr "Зона-источник"
msgid "Start Date (yyyy-mm-dd)"
-msgstr ""
+msgstr "Дата начала (yyyy-mm-dd)"
msgid "Start Time (hh:mm:ss)"
-msgstr ""
+msgstr "Время начала (hh:mm:ss)"
msgid "Stop Date (yyyy-mm-dd)"
-msgstr ""
+msgstr "Дата остановки (yyyy-mm-dd)"
msgid "Stop Time (hh:mm:ss)"
-msgstr ""
+msgstr "Время остановки (hh:mm:ss)"
msgid "Sunday"
-msgstr ""
+msgstr "Воскресенье"
msgid ""
"The firewall creates zones over your network interfaces to control network "
@@ -415,11 +389,11 @@ msgid ""
"<em>not</em> imply a permission to forward from wan to lan as well."
msgstr ""
"Данные настройки управляют перенаправлением между этой (%s) и другими "
-"зонами. Трафиком <em>зон-получателей</em> является трафик <strong>исходящий "
-"из %q</strong>. Трафиком <em>зон-источников</em> является трафик "
-"<strong>направленый в %q</strong>. Перенаправление является "
-"<em>однонаправленным</em>, то есть перанаправление из lan в wan <em>не</em> "
-"допускает перенаправление трафика из wan в lan."
+"зонами. Трафиком <em>'зон-получателей'</em> является трафик "
+"<strong>'исходящий из %q'</strong>. Трафиком <em>'зон-источников'</em> "
+"является трафик <strong>'направленый в %q'</strong>. Перенаправление "
+"является <em>'однонаправленным'</em>, то есть перенаправление из lan в wan "
+"<em>'не'</em> допускает перенаправление трафика из wan в lan."
msgid ""
"This page allows you to change advanced properties of the port forwarding "
@@ -435,7 +409,6 @@ msgstr ""
"На этой странице можно изменить расширенные настройки правил для трафика. В "
"большинстве случаев нет необходимости изменять эти параметры."
-#, fuzzy
msgid ""
"This section defines common properties of %q. The <em>input</em> and "
"<em>output</em> options set the default policies for traffic entering and "
@@ -443,18 +416,18 @@ msgid ""
"forwarded traffic between different networks within the zone. <em>Covered "
"networks</em> specifies which available networks are members of this zone."
msgstr ""
-"Данная секция позволяет изменять общие настройки %q. Опции <em>входящий</em> "
-"и <em>исходящий</em> устанавливают политику по умолчанию для входящего и "
-"исходящего трафика. Опция <em>перенаправление</em> позволяет установить "
-"политику для трафика, который перенаправляется через несколько сетей в зоне. "
-"Пункт <em>использовать сети</em> позволяет указать, какие сети являются "
-"частью данной зоны."
+"Страница содержит общие свойства %q. Режимы <em>'Входящий'</em> и "
+"<em>'Исходящий'</em> устанавливают политики по умолчанию для трафика, "
+"поступающего и покидающего эту зону, в то время как режим "
+"<em>'Перенаправление'</em> описывает политику пересылки трафика между "
+"различными сетями внутри зоны. <em>'Использовать сети'</em> указывает, какие "
+"доступные сети являются членами этой зоны."
msgid "Thursday"
-msgstr ""
+msgstr "Четверг"
msgid "Time in UTC"
-msgstr ""
+msgstr "Время UTC"
msgid "To %s at %s on <var>this device</var>"
msgstr "К %s, порту %s на <var>этом устройстве</var>"
@@ -487,7 +460,7 @@ msgstr ""
"портов маршрутизатора."
msgid "Tuesday"
-msgstr ""
+msgstr "Вторник"
msgid "Via %s"
msgstr "Через %s"
@@ -496,16 +469,16 @@ msgid "Via %s at %s"
msgstr "Через %s, порт %s"
msgid "Wednesday"
-msgstr ""
+msgstr "Среда"
msgid "Week Days"
-msgstr ""
+msgstr "Дни недели"
msgid ""
"You may specify multiple by selecting \"-- custom --\" and then entering "
"protocols separated by space."
msgstr ""
-"Вы можете указать несколько, выбрав \"-- пользовательский --\" и перечислив "
+"Вы можете указать несколько, выбрав '-- пользовательский --' и перечислив "
"через пробел названия протоколов."
msgid "Zone %q"
@@ -542,4 +515,4 @@ msgid "reject"
msgstr "отвергать"
msgid "traffic"
-msgstr ""
+msgstr "трафик"
diff --git a/applications/luci-app-fwknopd/po/ru/fwknopd.po b/applications/luci-app-fwknopd/po/ru/fwknopd.po
new file mode 100644
index 000000000..2e67e0d07
--- /dev/null
+++ b/applications/luci-app-fwknopd/po/ru/fwknopd.po
@@ -0,0 +1,115 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: fwknopd\n"
+"POT-Creation-Date: 2017-12-01 12:15+0300\n"
+"PO-Revision-Date: 2018-01-06 12:55+0300\n"
+"Language-Team: http://cyber-place.ru\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
+
+msgid ""
+"Allow SPA clients to request access to services through an iptables firewall "
+"instead of just to it."
+msgstr ""
+"Разрешить SPA клиентам запрашивать доступ к сервисам через файрвол iptables, "
+"а не напрямую."
+
+msgid "Allow SPA clients to request forwarding destination by DNS name."
+msgstr ""
+"Разрешить SPA клиентам запрашивать проброс назначения используя DNS имена."
+
+msgid "Base 64 key"
+msgstr "64-битный ключ"
+
+msgid ""
+"Define a set of ports and protocols (tcp or udp) that will be opened if a "
+"valid knock sequence is seen. If this entry is not set, fwknopd will attempt "
+"to honor any proto/port request specified in the SPA data (unless of it "
+"matches any “RESTRICT_PORTS” entries). Multiple entries are comma-separated."
+msgstr ""
+"Определите порты и протоколы (TCP или UDP), которые будут открыты, если "
+"отображается допустимая последовательность защищенного постукивания. Если "
+"этот параметр не задан, fwknopd постарается исполнить любой прото/порт "
+"запрос, указанный в SPA данных (если он соответствует любой “RESTRICT_PORTS” "
+"записи). Последовательность данных, разделенных запятыми."
+
+msgid ""
+"Define the length of time access will be granted by fwknopd through the "
+"firewall after a valid knock sequence from a source IP address. If "
+"“FW_ACCESS_TIMEOUT” is not set then the default timeout of 30 seconds will "
+"automatically be set."
+msgstr ""
+"Определите, какой срок доступа будет предоставлен fwknopd через файрвол, "
+"после допустимой последовательности защищенного постукивания из исходящего "
+"IP-адреса. Если параметр “FW_ACCESS_TIMEOUT” не установлен, то автоматически "
+"устанавливается тайм-аут по умолчанию в 30 секунд."
+
+msgid ""
+"Define the symmetric key used for decrypting an incoming SPA packet that is "
+"encrypted by the fwknop client with Rijndael."
+msgstr ""
+"Определите симметричный ключ, используемый для расшифровки входящего SPA "
+"пакета зашифрованного fwknop клиентом с помощью Rijndael."
+
+msgid "Enable Uci/Luci control"
+msgstr "Включить управление в Uci/Luci"
+
+msgid "Enable config overwrite"
+msgstr "Включить перезапись config файла"
+
+msgid "Firewall Knock Daemon"
+msgstr "Firewall Knock Daemon"
+
+msgid "Firewall Knock Operator"
+msgstr "Настройка защищенного постукивания файрвола"
+
+msgid ""
+"Force all SPA packets to contain a real IP address within the encrypted "
+"data. This makes it impossible to use the -s command line argument on the "
+"fwknop client command line, so either -R has to be used to automatically "
+"resolve the external address (if the client behind a NAT) or the client must "
+"know the external IP and set it via the -a argument."
+msgstr ""
+"Обязать все SPA пакеты содержать реальный IP-адрес в зашифрованных данных. "
+"Это делает невозможным использование аргумента командной строки -s в "
+"командной строке fwknop клиента, поэтому либо -R должен использоваться для "
+"автоматического разрешения внешнего адреса (если клиент за NAT), либо клиент "
+"должен знать внешний IP и установить его используя аргумент -a."
+
+msgid ""
+"Maximum age in seconds that an SPA packet will be accepted. defaults to 120 "
+"seconds"
+msgstr ""
+"Максимальное время в секундах, в течение которых будет принят SPA пакет, по "
+"умолчанию 120 секунд."
+
+msgid "Normal Key"
+msgstr "Нормальный ключ"
+
+msgid "Specify the ethernet interface on which fwknopd will sniff packets."
+msgstr "Укажите ethernet интерфейс, пакеты которого fwknopd будет снифить."
+
+msgid "The base64 hmac key"
+msgstr "Основной 64-битный hmac ключ."
+
+msgid "Use ANY for any source ip"
+msgstr "Использовать ЛЮБОЙ, для любого исходящего IP."
+
+msgid ""
+"When unchecked, the config files in /etc/fwknopd will be used as is, "
+"ignoring any settings here."
+msgstr ""
+"Если эта галочка не установлена, config файл /etc/fwknopd будет "
+"использоваться как есть, игнорируя любые изменения настроек fwknopd здесь. "
+
+msgid "access.conf stanzas"
+msgstr "Код доступа access.conf"
+
+msgid "fwknopd.conf config options"
+msgstr "Настройка config файла - fwknopd.conf"
diff --git a/applications/luci-app-hd-idle/po/ru/hd_idle.po b/applications/luci-app-hd-idle/po/ru/hd_idle.po
index e58a32f1d..e776760f0 100644
--- a/applications/luci-app-hd-idle/po/ru/hd_idle.po
+++ b/applications/luci-app-hd-idle/po/ru/hd_idle.po
@@ -1,19 +1,17 @@
msgid ""
msgstr ""
-"Project-Id-Version: LuCI: hd_idle\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-04-14 10:33+0200\n"
-"PO-Revision-Date: 2012-08-15 11:24+0300\n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
-"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: hd_idle\n"
+"POT-Creation-Date: 2012-08-15 11:24+0300\n"
+"PO-Revision-Date: 2018-01-07 19:56+0300\n"
+"Language-Team: http://cyber-place.ru\n"
+"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Pootle 2.0.6\n"
-"X-Poedit-SourceCharset: UTF-8\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 "
+"&& n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
msgid "Disk"
msgstr "Диск"
@@ -38,15 +36,10 @@ msgid "Idle time unit"
msgstr "Единицы времени бездействия"
msgid "Settings"
-msgstr "Настройки"
+msgstr "Настройка"
-# Hours
msgid "h"
msgstr "ч"
-# Minutes (not minimum)
msgid "min"
msgstr "мин"
-
-#~ msgid "Enable debug"
-#~ msgstr "Включить отладку"
diff --git a/applications/luci-app-mjpg-streamer/po/ru/mjpg-streamer.po b/applications/luci-app-mjpg-streamer/po/ru/mjpg-streamer.po
new file mode 100644
index 000000000..55de0ad89
--- /dev/null
+++ b/applications/luci-app-mjpg-streamer/po/ru/mjpg-streamer.po
@@ -0,0 +1,174 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: mjpg-streamer\n"
+"POT-Creation-Date: 2017-10-17 14:30+0300\n"
+"PO-Revision-Date: 2018-01-05 19:39+0300\n"
+"Language-Team: http://cyber-place.ru\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
+
+msgid "Allow ringbuffer to exceed limit by this amount"
+msgstr ""
+"Позволить кольцевому буферу превысить ограничение, установив данное значение."
+
+msgid "Ask for username and password on connect"
+msgstr "Задать доступ по имени и паролю."
+
+msgid "Authentication required"
+msgstr "Логин и пароль"
+
+msgid "Auto"
+msgstr "Автоматически"
+
+msgid "Automatic disabling of MJPEG mode"
+msgstr "Автоматически отключится MJPEG."
+
+msgid "Blink"
+msgstr "Мигает"
+
+msgid "Check to save the stream to an mjpeg file"
+msgstr "Проверка сохранения потока в mjpeg файл."
+
+msgid "Command to run"
+msgstr "Введите команду"
+
+msgid "Device"
+msgstr "Устройство"
+
+msgid "Do not initalize dynctrls of Linux-UVC driver"
+msgstr "Не задействует dynctrls драйвера Linux-UVC."
+
+msgid "Don't initalize dynctrls"
+msgstr "Отключить dynctrls"
+
+msgid "Drop frames smaller then this limit"
+msgstr "Ограничить кол-во кадров"
+
+msgid "Enable MJPG-streamer"
+msgstr "Включить MJPG-streamer"
+
+msgid "Enable YUYV format"
+msgstr "Включить YUYV формат"
+
+msgid "Enabled"
+msgstr "Включить"
+
+msgid "Exceed"
+msgstr "Превышение"
+
+msgid ""
+"Execute command after saving picture. Mjpg-streamer parse the filename as "
+"first parameter to your script."
+msgstr ""
+"Выполнить команду после сохранения изображения. Mjpg-streamer задаст имя "
+"файла в качестве первого параметра вашего скрипта."
+
+msgid "File input"
+msgstr "Файл ввода"
+
+msgid "File output"
+msgstr "Вывод в файл"
+
+msgid "Folder"
+msgstr "Папка"
+
+msgid "Folder that contains webpages"
+msgstr "Содержимое вебстраницы, находится в этой папке."
+
+msgid "Frames per second"
+msgstr "Кадров в секунду"
+
+msgid "General"
+msgstr "Основные настройки"
+
+msgid "HTTP output"
+msgstr "HTTP вывод"
+
+msgid "Input plugin"
+msgstr "Плагин ввода"
+
+msgid "Interval between saving pictures"
+msgstr "Интервал между снимками"
+
+msgid "JPEG compression quality"
+msgstr "Качество JPEG"
+
+msgid "Led control"
+msgstr "Управление светодиодным индикатором вебкамеры"
+
+msgid "MJPG-streamer"
+msgstr "MJPG-streamer"
+
+msgid "Max. number of pictures to hold"
+msgstr "Размер кольцевого буфера."
+
+msgid "Mjpeg output"
+msgstr "Mjpeg вывод"
+
+msgid "Off"
+msgstr "Выключить"
+
+msgid "On"
+msgstr "Включить"
+
+msgid "Output plugin"
+msgstr "Плагин вывода"
+
+msgid "Password"
+msgstr "Пароль"
+
+msgid "Plugin settings"
+msgstr "Настроить плагины"
+
+msgid "Port"
+msgstr "Порт"
+
+msgid "Resolution"
+msgstr "Разрешение"
+
+msgid "Ring buffer size"
+msgstr "Задать размер буфера"
+
+msgid "Set folder to save pictures"
+msgstr "Задать папку для сохранения снимков."
+
+msgid "Set the inteval in millisecond"
+msgstr "Задать интервал в миллисекундах."
+
+msgid ""
+"Set the minimum size if the webcam produces small-sized garbage frames. May "
+"happen under low light conditions"
+msgstr ""
+"Задайте минимальное значение, если вебкамера не справляется при плохом "
+"освещении."
+
+msgid ""
+"Set the quality in percent. This setting activates YUYV format, disables "
+"MJPEG"
+msgstr ""
+"Задать качество в процентах. Данная настройка активирует YUYV формат "
+"отключая MJPEG."
+
+msgid "TCP port for this HTTP server"
+msgstr "Задать TCP порт для HTTP сервера."
+
+msgid "UVC input"
+msgstr "UVC ввод"
+
+msgid "Username"
+msgstr "Логин"
+
+msgid "WWW folder"
+msgstr "WWW папка"
+
+msgid ""
+"mjpg streamer is a streaming application for Linux-UVC compatible webcams"
+msgstr ""
+"Приложение для трансляции потокового видео, для Linux-UVC совместимых веб-"
+"камер. Просмотр http://192.168.1.1:8080/?action=stream"
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/memberconfig.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/memberconfig.lua
index eb6f417af..dc2e0da44 100644
--- a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/memberconfig.lua
+++ b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/memberconfig.lua
@@ -27,8 +27,8 @@ interface = mwan_member:option(Value, "interface", translate("Interface"))
cbi_add_interface(interface)
metric = mwan_member:option(Value, "metric", translate("Metric"),
- translate("Acceptable values: 1-1000. Defaults to 1 if not set"))
- metric.datatype = "range(1, 1000)"
+ translate("Acceptable values: 1-256. Defaults to 1 if not set"))
+ metric.datatype = "range(1, 256)"
weight = mwan_member:option(Value, "weight", translate("Weight"),
translate("Acceptable values: 1-1000. Defaults to 1 if not set"))
diff --git a/applications/luci-app-mwan3/po/ja/mwan3.po b/applications/luci-app-mwan3/po/ja/mwan3.po
index 34a9f1f3b..841a5e701 100644
--- a/applications/luci-app-mwan3/po/ja/mwan3.po
+++ b/applications/luci-app-mwan3/po/ja/mwan3.po
@@ -37,6 +37,9 @@ msgstr ""
msgid "Acceptable values: 1-1000. Defaults to 1 if not set"
msgstr "利用可能な値: 1-1000。空欄の場合のデフォルトは1です。"
+msgid "Acceptable values: 1-256. Defaults to 1 if not set"
+msgstr "利用可能な値: 1-256。空欄の場合のデフォルトは1です。"
+
msgid "Advanced"
msgstr "詳細設定"
diff --git a/applications/luci-app-mwan3/po/ru/mwan3.po b/applications/luci-app-mwan3/po/ru/mwan3.po
new file mode 100644
index 000000000..f3f7a551d
--- /dev/null
+++ b/applications/luci-app-mwan3/po/ru/mwan3.po
@@ -0,0 +1,663 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: mwan3\n"
+"POT-Creation-Date: 2017-09-14 16:00+0300\n"
+"PO-Revision-Date: 2018-01-05 17:54+0300\n"
+"Language-Team: http://cyber-place.ru\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
+
+msgid "%d hour"
+msgstr "%d час"
+
+msgid "%d minute"
+msgstr "%d минута"
+
+msgid "%d minutes"
+msgstr "%d минуты"
+
+msgid "%d second"
+msgstr "%d секунда"
+
+msgid "%d seconds"
+msgstr "%d секунды"
+
+msgid ""
+"Acceptable values: 1-100. This many Tracking IP addresses must respond for "
+"the link to be deemed up"
+msgstr ""
+"Допустимые значения: 1-100. Установите количество ответов IP-адресов. "
+"Сколько раз они должны ответить, чтобы соединение было признано активным."
+
+msgid "Acceptable values: 1-1000. Defaults to 1 if not set"
+msgstr "Допустимые значения: 1-1000. По умолчанию 1, если значение не задано."
+
+msgid "Acceptable values: 1-256. Defaults to 1 if not set"
+msgstr "Допустимые значения: 1-256 По умолчанию 1, если значение не задано."
+
+msgid "Advanced"
+msgstr "Дополнительно"
+
+msgid "Check IP rules"
+msgstr "Проверить правила IP"
+
+msgid "Check routing table"
+msgstr "Проверить таблицу маршрутизации"
+
+msgid "Collecting data..."
+msgstr "Сбор информации..."
+
+msgid "Configuration"
+msgstr "Настройка config файла"
+
+msgid "Currently Configured Interfaces"
+msgstr "Настроенные интерфейсы"
+
+msgid "Currently Configured Members"
+msgstr "Настроенные узлы"
+
+msgid "Currently Configured Policies"
+msgstr "Настроенных политики"
+
+msgid "Destination address"
+msgstr "Адрес назначения"
+
+msgid "Destination port"
+msgstr "Порт назначения"
+
+msgid "Detailed Status"
+msgstr "Подробная Информация"
+
+msgid "Diagnostic Results"
+msgstr "Результаты диагностики"
+
+msgid "Diagnostics"
+msgstr "Диагностика"
+
+msgid "Disabled"
+msgstr "Отключено"
+
+msgid ""
+"Downed interface will be deemed up after this many successful ping tests"
+msgstr "Интерфейс будет считаться отключенным, после продолжительного пинга."
+
+msgid "Enabled"
+msgstr "Включено"
+
+msgid "Enter value in hex, starting with <code>0x</code>"
+msgstr "Введите значение в шестнадцатеричной форме, начиная с <code>0x</code>."
+
+msgid "Error collecting troubleshooting information"
+msgstr "Сбор сведений об устранении неполадок."
+
+msgid "Errors"
+msgstr "Ошибки"
+
+msgid "Expect interface state on up event"
+msgstr "Ожидание "
+
+msgid "Failure interval"
+msgstr "Интервал отказа"
+
+msgid "Firewall mask"
+msgstr "Маска межсетевого экрана"
+
+msgid "Flush conntrack table"
+msgstr "Сбросьте conntrack таблицу"
+
+msgid "Flush global firewall conntrack table on interface events"
+msgstr ""
+"Сбросьте глобальные настройки межсетевого экрана conntrack таблицы по "
+"истории интерфейса."
+
+msgid "Globals"
+msgstr "Общие"
+
+msgid "Globals mwan3 options"
+msgstr "Общие mwan3 настройки"
+
+msgid "Hotplug Script"
+msgstr "Скрипт Hotplug"
+
+msgid "Hotplug ifdown"
+msgstr "Hotplug ifdown"
+
+msgid "Hotplug ifup"
+msgstr "Hotplug ifup"
+
+msgid "IPset"
+msgstr "IPset"
+
+msgid "IPv4"
+msgstr "IPv4"
+
+msgid "IPv6"
+msgstr "IPv6"
+
+msgid "Initial state"
+msgstr "Исходное состояние"
+
+msgid "Interface"
+msgstr "Интерфейс"
+
+msgid "Interface Status"
+msgstr "Состояние интерфейса"
+
+msgid "Interface down"
+msgstr "Интерфейс отключить"
+
+msgid "Interface up"
+msgstr "Интерфейс включить"
+
+msgid "Interface will be deemed down after this many failed ping tests"
+msgstr "Интерфейс будут считать отключенным, после данного количества пингов."
+
+msgid "Interfaces"
+msgstr "Интерфейсы"
+
+msgid "Internet Protocol"
+msgstr "Протокол интернета"
+
+msgid "Keep failure interval"
+msgstr "Сохранить интервал сбоя"
+
+msgid "Keep ping failure interval during failure state"
+msgstr "Сохранить интервал сбоя ping-а, во время состояния сбоя"
+
+msgid "Last 50 MWAN systemlog entries. Newest entries sorted at the top :"
+msgstr ""
+"Последние 50 systemlog записей MWAN . Новые записи расположены сверху :"
+
+msgid "Last resort"
+msgstr "Последнее средство"
+
+msgid "Load Balancing"
+msgstr "Балансировка нагрузки"
+
+msgid "Loading"
+msgstr "Загрузка"
+
+msgid "Local source interface"
+msgstr "Локальный исходящий интефейс"
+
+msgid "MWAN Config"
+msgstr "MWAN config файл"
+
+msgid "MWAN Detailed Status"
+msgstr "Состояние MWAN"
+
+msgid "MWAN Interface Configuration"
+msgstr "Настройка интерфейса MWAN"
+
+msgid "MWAN Interface Configuration - %s"
+msgstr "Настройка интерфейса MWAN - %s"
+
+msgid "MWAN Interface Diagnostics"
+msgstr "Диагностика интерфейса MWAN"
+
+msgid "MWAN Interface Live Status"
+msgstr "Состояние интерфейса MWAN"
+
+msgid "MWAN Interface Systemlog"
+msgstr "Systemlog MWAN интерфейса "
+
+msgid "MWAN Member Configuration"
+msgstr "MWAN настройка узла"
+
+msgid "MWAN Member Configuration - %s"
+msgstr "MWAN настройка узла - %s"
+
+msgid "MWAN Policy Configuration"
+msgstr "MWAN настройка политики"
+
+msgid "MWAN Policy Configuration - %s"
+msgstr "MWAN настройка политики - %s"
+
+msgid "MWAN Rule Configuration"
+msgstr "MWAN настройка правила"
+
+msgid "MWAN Rule Configuration - %s"
+msgstr "MWAN настройка правила - %s"
+
+msgid "MWAN Service Control"
+msgstr "Управление службой MWAN"
+
+msgid ""
+"MWAN supports up to 250 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 (see advanced tab)<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 поддерживает до 250 физических и / или логических интерфейсов<br />MWAN "
+"требует, чтобы все интерфейсы имели уникальную метрику, сконфигурированную "
+"в /etc/config/network<br />Имена должны соответствовать имени интерфейса, "
+"найденному в /etc/config/network (см. соответствующую страницу)<br />Имена "
+"могут содержать символы A-Z, a-z, 0-9, _ и пробелы<br />Интерфейсы могут не "
+"совпадать с тем же именем, что и для настроенных узлов, политик или правил."
+
+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 ""
+"Может быть введено как один или несколько портов (например, \"22\" или "
+"\"80,443\") или как диапазон портов (например, \"1024:2048\") без кавычек."
+
+msgid "Member"
+msgstr "Узел"
+
+msgid "Member used"
+msgstr "Используемый узел"
+
+msgid "Members"
+msgstr "Узлы"
+
+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 ""
+"Узлы имеют профили, содержащие метрику и вес к интерфейсу MWAN<br />Имена "
+"могут содержать символы A-Z, a-z, 0-9, _ и пробелы<br />Узлы могут не иметь "
+"то же имя, что и настроенные интерфейсы, политики или правила."
+
+msgid "Members assigned"
+msgstr "Назначенные узлы"
+
+msgid "Metric"
+msgstr "Metric"
+
+msgid ""
+"Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/"
+"youtube.com/youtube\")"
+msgstr ""
+"Имя IPset правила. Требуется правило IPset в /etc/dnsmasq.conf (eg \"ipset=/"
+"youtube.com/youtube\")."
+
+msgid "Network Config"
+msgstr "Config файл сети"
+
+msgid "No"
+msgstr "Нет"
+
+msgid "No MWAN interfaces found"
+msgstr "Интерфейсы MWAN не найдены"
+
+msgid "No MWAN systemlog history found"
+msgstr "Не найдено истории - systemlog MWAN"
+
+msgid "No detailed status information available"
+msgstr "Подробная информация о состоянии отсутствует"
+
+msgid "No diagnostic results returned"
+msgstr "Результаты диагностики не возвращаются"
+
+msgid "No protocol specified"
+msgstr "Протокол не указан"
+
+msgid "Offline"
+msgstr "Отключен"
+
+msgid "Online"
+msgstr "Включен"
+
+msgid "Online (tracking active)"
+msgstr "Включен (отслеживание активно)"
+
+msgid "Online (tracking off)"
+msgstr "Включен (отслеживание отключено)"
+
+msgid "Overview"
+msgstr "Главное меню"
+
+msgid "Ping count"
+msgstr "Кол-во пингов"
+
+msgid "Ping default gateway"
+msgstr "Пинг шлюза по умолчанию"
+
+msgid "Ping interval"
+msgstr "Интервал пинга"
+
+msgid "Ping interval during failure detection"
+msgstr "Интервал пинга во время обнаружения отказов"
+
+msgid "Ping interval during failure recovering"
+msgstr "Интервал пинга во время восстановления отказа"
+
+msgid "Ping size"
+msgstr "Размер пинга"
+
+msgid "Ping timeout"
+msgstr "Таймаут пинга"
+
+msgid "Ping tracking IP"
+msgstr "Пинг отслеживания IP"
+
+msgid "Policies"
+msgstr "Политики"
+
+msgid ""
+"Policies are profiles grouping one or more members controlling how MWAN "
+"distributes traffic<br />Member interfaces with lower metrics are used "
+"first. Interfaces with the same metric load-balance<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. Names must be "
+"15 characters or less<br />Policies may not share the same name as "
+"configured interfaces, members or rules"
+msgstr ""
+"Политики-это профили, группирующие один или несколько узлов, контролирующие "
+"распределение трафика MWAN<br />Интерфейсы узлов с более низкими метриками "
+"используются сначала. Интерфейсы с тем же метрическим балансом загрузки<br /"
+">Интерфейсы элементов с балансировкой нагрузки распределяют больше трафика с "
+"более высокими значениями<br />Имена могут содержать символы A-Z, a-z, 0-9, "
+"_ и пробелы. Имена должны быть не более 15 символов<br />Политики могут не "
+"иметь то же имя, что и настроенные интерфейсы, узлы или правила."
+
+msgid "Policy"
+msgstr "Политика"
+
+msgid "Policy assigned"
+msgstr "Назначенная политика"
+
+msgid "Protocol"
+msgstr "Протокол"
+
+msgid "Recovery interval"
+msgstr "Интервал восстановления"
+
+msgid "Restart MWAN"
+msgstr "Рестарт MWAN."
+
+msgid "Rule"
+msgstr "Правило"
+
+msgid "Rules"
+msgstr "Правила"
+
+msgid ""
+"Rules specify which traffic will use a particular MWAN policy based on IP "
+"address, port or protocol<br />Rules are matched from top to bottom. Rules "
+"below a matching rule are ignored. 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. 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 ""
+"Правила определяют, какой трафик будет использовать определенную политику "
+"MWAN на основе IP-адреса, порта и протокола<br />Список правил используется "
+"сверху вниз. Правила ниже правила сопоставления игнорируются. Трафик, не "
+"соответствующий никакому правилу, маршрутизируется с помощью главной таблицы "
+"маршрутизации<br />трафик, предназначенный для известных (кроме сети по "
+"умолчанию), обрабатывается основной таблицей маршрутизации. Трафик "
+"соответствует правилам, но все интерфейсы WAN для этой политики будут "
+"заблокированы<br />Имена могут содержать символы A-Z, a-z, 0-9, _ , пробелы "
+"запрещены<br />Правила не могут совместно использовать то же имя, что и "
+"настроенные интерфейсы, члены или политики."
+
+msgid "Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set"
+msgstr ""
+"Секунды. Допустимые значения: 1-1000000. По умолчанию 600, если значение не "
+"установлено."
+
+msgid "Source address"
+msgstr "Исходящий адрес"
+
+msgid "Source port"
+msgstr "Исходящий порт"
+
+msgid "Start MWAN"
+msgstr "Старт MWAN."
+
+msgid "Sticky"
+msgstr "Липкий"
+
+msgid "Sticky timeout"
+msgstr "Липкое значение таймаута"
+
+msgid "Stop MWAN"
+msgstr "Стоп MWAN."
+
+msgid "Supports CIDR notation (eg \"192.168.100.0/24\") without quotes"
+msgstr "Поддерживает CIDR нотацию (например \"192.168.100.0/24\") без кавычек."
+
+msgid "There are currently %d of 250 supported interfaces configured"
+msgstr "В настоящее время настроен %d из 250 поддерживаемых интерфейсов."
+
+msgid ""
+"This displays the metric assigned to this interface in /etc/config/network"
+msgstr ""
+"Страница отображает метрики назначения этого интерфейса в /etc/config/"
+"network."
+
+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 ""
+"Это имя хоста или IP-адрес для пинга, чтобы определить активно ли соединение "
+"или нет. Оставьте пустым, чтобы предположить, что интерфейс всегда находится "
+"в сети."
+
+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 "
+"Either \"ifup\" or \"ifdown\"<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 ""
+"Страница позволяет изменять содержимое \"/etc/mwan3.user\".<br />Файл также "
+"сохраняется во время sysupgrade.<br /><br />Примечание:<br />Этот файл "
+"интерпретируется как shell скрипт.<br />Первая строка скрипта должна быть "
+"&#34;#!/bin/sh&#34; без кавычек.<br />Строки начинающиеся с #, являются "
+"комментариями и не исполняются.<br />Поместите свои пользовательские "
+"действия mwan3 здесь, они будут<br />выполняться с каждым событием netifd "
+"hotplug интерфейса<br />на интерфейсах, для которых включен mwan3.<br /><br /"
+">В этот сценарий передаются три основные переменные среды.<br /><br />"
+"$ACTION либо \"ifup\" или \"ifdown\"<br />$INTERFACE - имя интерфейса, "
+"который включили или отключили (например, \"wan\" или \"wwan\") <br />"
+"$DEVICE - имя физического устройства, чей интерфейс включили или отключили "
+"(например, \"wan\" или \"wwan\")<br /><br />."
+
+msgid "This section allows you to modify the contents of /etc/config/mwan3"
+msgstr "Страница позволяет изменять содержимое config файла /etc/config/mwan3."
+
+msgid "This section allows you to modify the contents of /etc/config/network"
+msgstr ""
+"Страница позволяет изменять содержимое config файла /etc/config/network."
+
+msgid "This section allows you to modify the contents of /etc/config/wireless"
+msgstr ""
+"Страница позволяет изменять содержимое config файла /etc/config/wireless."
+
+msgid "Tracking IP"
+msgstr "Отслеживание IP"
+
+msgid "Tracking hostname or IP address"
+msgstr "Отслеживание имени хоста или IP-адреса"
+
+msgid "Tracking method"
+msgstr "Метод отслеживания"
+
+msgid "Tracking reliability"
+msgstr "Надежность отслеживания"
+
+msgid "Traffic Rules"
+msgstr "Правила трафика"
+
+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 ""
+"Трафик с того же IP-адреса источника, который ранее соответствовал этому "
+"правилу в период тайм-аута sticky, будет использовать тот же интерфейс WAN."
+
+msgid "Troubleshooting"
+msgstr "Устранение неполадок"
+
+msgid "Troubleshooting Data"
+msgstr "Устранение неполадок данных"
+
+msgid ""
+"Use the IP address of this interface as source IP address for traffic "
+"initiated by the router itself"
+msgstr ""
+"Используйте IP-адрес этого интерфейса в качестве IP-адреса источника для "
+"трафика, инициированного самим роутером."
+
+msgid "View the contents of /etc/protocols for protocol descriptions"
+msgstr "Просмотреть содержимое файла /etc/protocols для описания протокола."
+
+msgid "WARNING: %d interfaces are configured exceeding the maximum of 250!"
+msgstr "ВНИМАНИЕ: интерфейсы %d настроены, превышая максимум 250!"
+
+msgid ""
+"WARNING: Some interfaces are configured incorrectly or not at all in /etc/"
+"config/network!"
+msgstr ""
+"ВНИМАНИЕ: Некоторые интерфейсы настроены неправильно или вовсе не в /etc/"
+"config/network!"
+
+msgid ""
+"WARNING: Some interfaces have a higher reliability requirement than there "
+"are tracking IP addresses!"
+msgstr ""
+"ВНИМАНИЕ: Некоторые интерфейсы имеют более высокое требование к надежности "
+"чем отслеживая IP-адреса!"
+
+msgid ""
+"WARNING: Some interfaces have duplicate metrics configured in /etc/config/"
+"network!"
+msgstr ""
+"ВНИМАНИЕ: Некоторые интерфейсы имеют повторяющиеся метрики, настроенные в /"
+"etc/config/network!"
+
+msgid ""
+"WARNING: Some interfaces have no default route in the main routing table!"
+msgstr ""
+"ВНИМАНИЕ: Некоторые интерфейсы не имеют маршрута по умолчанию в основной "
+"таблице маршрутизации!"
+
+msgid ""
+"WARNING: Some interfaces have no metric configured in /etc/config/network!"
+msgstr ""
+"ВНИМАНИЕ: Некоторые интерфейсы не имеют метрики, настроенной в /etc/config/"
+"network!"
+
+msgid ""
+"WARNING: Some policies have names exceeding the maximum of 15 characters!"
+msgstr ""
+"ВНИМАНИЕ: Некоторые политики имеют имена, превышающие максимум 15 символов!"
+
+msgid ""
+"WARNING: Some rules have a port configured with no or improper protocol "
+"specified! Please configure a specific protocol!"
+msgstr ""
+"ВНИМАНИЕ: некоторые правила имеют порт, настроенный без или неправильный "
+"протокол указан! Пожалуйста, настройте конкретный протокол!"
+
+msgid ""
+"WARNING: This and other interfaces have duplicate metrics configured in /etc/"
+"config/network!"
+msgstr ""
+"ВНИМАНИЕ: этот и другие интерфейсы имеют повторяющиеся метрики, настроенные "
+"в /etc/config/network!"
+
+msgid ""
+"WARNING: This interface has a higher reliability requirement than there are "
+"tracking IP addresses!"
+msgstr ""
+"ВНИМАНИЕ: этот интерфейс имеет более высокое требование к надежности, чем "
+"есть отслеживание IP-адресов!"
+
+msgid "WARNING: This interface has no default route in the main routing table!"
+msgstr ""
+"ВНИМАНИЕ: этот интерфейс не имеет маршрута по умолчанию в основной таблице "
+"маршрутизации!"
+
+msgid ""
+"WARNING: This interface has no metric configured in /etc/config/network!"
+msgstr ""
+"ВНИМАНИЕ: этот интерфейс не имеет метрики, настроенной в /etc/config/network!"
+
+msgid ""
+"WARNING: This interface is configured incorrectly or not at all in /etc/"
+"config/network!"
+msgstr ""
+"ВНИМАНИЕ: этот интерфейс настроен неправильно или его вообще нет в /etc/"
+"config/network!"
+
+msgid ""
+"WARNING: This policy's name is %d characters exceeding the maximum of 15!"
+msgstr "ВНИМАНИЕ: имя этой политики- % D символов, превышающих максимум 15!"
+
+msgid ""
+"WARNING: This rule is incorrectly configured with no or improper protocol "
+"specified! Please configure a specific protocol!"
+msgstr ""
+"ВНИМАНИЕ: это правило неправильно настроено или неправильно указан протокол! "
+"Пожалуйста, настройте конкретный протокол!"
+
+msgid "Waiting for MWAN to %s..."
+msgstr "Ожидание MWAN до %s..."
+
+msgid "Waiting for diagnostic results..."
+msgstr "Ожидание результатов диагностики..."
+
+msgid "Weight"
+msgstr "Вес"
+
+msgid ""
+"When all policy members are offline use this behavior for matched traffic"
+msgstr ""
+"Когда все члены политики находятся в автономном режиме, используйте это "
+"поведение для сопоставленного трафика."
+
+msgid "Wireless Config"
+msgstr "Настройка беспроводного соединения"
+
+msgid "Yes"
+msgstr "Да"
+
+msgid "always"
+msgstr "всегда"
+
+msgid "blackhole (drop)"
+msgstr "blackhole (drop)"
+
+msgid "default (use main routing table)"
+msgstr "по умолчанию (использовать основную таблицу маршрутизации)"
+
+msgid "ifdown"
+msgstr "ifdown"
+
+msgid "ifup"
+msgstr "ifup"
+
+msgid "never"
+msgstr "никогда"
+
+msgid "restart"
+msgstr "рестарт"
+
+msgid "start"
+msgstr "cтарт"
+
+msgid "stop"
+msgstr "стоп"
+
+msgid "unreachable (reject)"
+msgstr "недоступен (отклонить)"
diff --git a/applications/luci-app-mwan3/po/templates/mwan3.pot b/applications/luci-app-mwan3/po/templates/mwan3.pot
index ed9fdb131..a993a81b6 100644
--- a/applications/luci-app-mwan3/po/templates/mwan3.pot
+++ b/applications/luci-app-mwan3/po/templates/mwan3.pot
@@ -24,6 +24,9 @@ msgstr ""
msgid "Acceptable values: 1-1000. Defaults to 1 if not set"
msgstr ""
+msgid "Acceptable values: 1-256. Defaults to 1 if not set"
+msgstr ""
+
msgid "Advanced"
msgstr ""
diff --git a/applications/luci-app-mwan3/po/zh-cn/mwan3.po b/applications/luci-app-mwan3/po/zh-cn/mwan3.po
index d0b92a6df..966f53c71 100644
--- a/applications/luci-app-mwan3/po/zh-cn/mwan3.po
+++ b/applications/luci-app-mwan3/po/zh-cn/mwan3.po
@@ -33,7 +33,10 @@ msgstr ""
"取值范围:1-100。这个设置项指定了当多少个 IP 地址能够连通时接口会被认为在线"
msgid "Acceptable values: 1-1000. Defaults to 1 if not set"
-msgstr "取值范围:1-100。如果不填写,默认值为 1"
+msgstr "取值范围:1-1000。如果不填写,默认值为 1"
+
+msgid "Acceptable values: 1-256. Defaults to 1 if not set"
+msgstr "取值范围:1-256。如果不填写,默认值为 1"
msgid "Advanced"
msgstr "高级"
diff --git a/applications/luci-app-mwan3/po/zh-tw/mwan3.po b/applications/luci-app-mwan3/po/zh-tw/mwan3.po
index 04711ac3d..d4a652a5d 100644
--- a/applications/luci-app-mwan3/po/zh-tw/mwan3.po
+++ b/applications/luci-app-mwan3/po/zh-tw/mwan3.po
@@ -33,7 +33,10 @@ msgstr ""
"取值範圍:1-100。這個設定項指定了當多少個 IP 位址能夠連通時介面會被認為線上"
msgid "Acceptable values: 1-1000. Defaults to 1 if not set"
-msgstr "取值範圍:1-100。如果不填寫,預設值為 1"
+msgstr "取值範圍:1-1000。如果不填寫,預設值為 1"
+
+msgid "Acceptable values: 1-256. Defaults to 1 if not set"
+msgstr "取值範圍:1-256。如果不填寫,預設值為 1"
msgid "Advanced"
msgstr "高階"
diff --git a/applications/luci-app-privoxy/po/ru/privoxy.po b/applications/luci-app-privoxy/po/ru/privoxy.po
new file mode 100644
index 000000000..76fd9f6fd
--- /dev/null
+++ b/applications/luci-app-privoxy/po/ru/privoxy.po
@@ -0,0 +1,512 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: privoxy\n"
+"POT-Creation-Date: 2017-12-14 16:00+0300\n"
+"PO-Revision-Date: 2018-01-05 17:40+0300\n"
+"Language-Team: http://cyber-place.ru\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
+
+msgid ""
+"A URL to be displayed in the error page that users will see if access to an "
+"untrusted page is denied."
+msgstr ""
+"URL-адрес, отображаемый на странице ошибки, который пользователи будут "
+"видеть, если доступ к ненадежной странице запрещен."
+
+msgid ""
+"A URL to documentation about the local Privoxy setup, configuration or "
+"policies."
+msgstr ""
+"URL-адрес к документации о локальной настройке, конфигурации или политиках "
+"Privoxy."
+
+msgid "A directory where Privoxy can create temporary files."
+msgstr "Папка в которой Privoxy может создавать временные файлы."
+
+msgid "Access Control"
+msgstr "Контроль доступа"
+
+msgid "Actions that are applied to all sites and maybe overruled later on."
+msgstr ""
+"Действия, которые применяются ко всем сайтам и могут быть отменены позже."
+
+msgid "An alternative directory where the templates are loaded from."
+msgstr "Альтернативный каталог, из которого загружаются шаблоны."
+
+msgid "An email address to reach the Privoxy administrator."
+msgstr "Адрес электронной почты, чтобы связаться с администратором Privoxy."
+
+msgid ""
+"Assumed server-side keep-alive timeout (in seconds) if not specified by the "
+"server."
+msgstr ""
+"Взятый на стороне сервера keep-alive тайм-аут (в секундах), если не указан "
+"сервер."
+
+msgid "Boot delay"
+msgstr "Задержка загрузки"
+
+msgid "CGI user interface"
+msgstr "Пользовательский интерфейс CGI."
+
+msgid "Common Log Format"
+msgstr "Типичный формат системного журнала."
+
+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 ""
+"Страница настройки маршрутизации HTTP-запросов через цепочку из нескольких "
+"прокси-серверов. Обратите внимание, что родительские прокси могут "
+"значительно снизить уровень конфиденциальности. Здесь же настройка SOCKS "
+"прокси."
+
+msgid "Debug GIF de-animation"
+msgstr "Отладка GIF де-анимации."
+
+msgid "Debug force feature"
+msgstr "Отладка функции назначения."
+
+msgid "Debug redirects"
+msgstr "Отладка пере направлений."
+
+msgid "Debug regular expression filters"
+msgstr "Отладка фильтров регулярных выражений."
+
+msgid "Delay (in seconds) during system boot before Privoxy start"
+msgstr "Задержка (в секундах) во время загрузки системы до запуска Privoxy."
+
+msgid "Directory does not exist!"
+msgstr "Папка не существует!"
+
+msgid "Disabled == Transparent Proxy Mode"
+msgstr "Отключен == Прозрачный Режим Прокси-Сервера."
+
+msgid "Documentation"
+msgstr "Информация"
+
+msgid "During delay ifup-events are not monitored !"
+msgstr "Во время задержки ifup-events не отслеживаются!"
+
+msgid "Enable proxy authentication forwarding"
+msgstr "Включить проверку подлинности прокси-сервера пере адресации."
+
+msgid ""
+"Enable/Disable autostart of Privoxy on system startup and interface events"
+msgstr ""
+"Включить / Выключить авто запуск Privoxy, при старте системы и событиях "
+"интерфейса."
+
+msgid "Enable/Disable filtering when Privoxy starts."
+msgstr "Включить / Выключить фильтрацию при запуске Privoxy."
+
+msgid "Enabled"
+msgstr "Включено"
+
+msgid ""
+"Enabling this option is NOT recommended if there is no parent proxy that "
+"requires authentication!"
+msgstr ""
+"Включение этой опции не рекомендуется, если отсутствует родительский прокси, "
+"который требует аутентификации!"
+
+msgid "File '%s' not found inside Configuration Directory"
+msgstr "Файл \"%S \" не найден в папке с config файлами"
+
+msgid "File not found or empty"
+msgstr "Файл не найден или пустой"
+
+msgid "Files and Directories"
+msgstr "Файлы и папки"
+
+msgid "For help use link at the relevant option"
+msgstr "Для помощи используйте ссылку по соответствующей опции."
+
+msgid "Forwarding"
+msgstr "Маршрутизация"
+
+msgid ""
+"If enabled, Privoxy hides the 'go there anyway' link. The user obviously "
+"should not be able to bypass any blocks."
+msgstr ""
+"Если включено, Privoxy скрывает \"идти туда в любом случае\". Пользователь "
+"не сможет обойти блокировку."
+
+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 ""
+"Если вы используете Privoxy, вы сможете сообщить большому количеству "
+"пользователей, как связаться с вами, что вы блокируете и почему вы это "
+"делаете, ваши политики и т.д."
+
+msgid "Invalid email address"
+msgstr "Неверный email адрес"
+
+msgid "It is NOT recommended for the casual user."
+msgstr "Нельзя использовать случайному пользователю."
+
+msgid "Location of the Privoxy User Manual."
+msgstr "Расположение руководства пользователя Privoxy."
+
+msgid "Log File Viewer"
+msgstr "Просмотр системного журнала"
+
+msgid "Log all data read from the network"
+msgstr "Записывать в системный журнал все данные, считываемые сетью."
+
+msgid "Log all data written to the network"
+msgstr "Записывать в системный журнал все данные, отправленные в сеть."
+
+msgid "Log the applying actions"
+msgstr "Записывать в системный журнал все действия."
+
+msgid ""
+"Log the destination for each request Privoxy let through. See also 'Debug "
+"1024'."
+msgstr ""
+"Записывать в системный журнал места назначения для каждого запроса, который "
+"передает Privoxy. См. также \"Debug 1024\"."
+
+msgid ""
+"Log the destination for requests Privoxy didn't let through, and the reason "
+"why."
+msgstr "Записывать в системный журнал неудачные попытки Privoxy и их причины."
+
+msgid "Logging"
+msgstr "Настройка системного журнала"
+
+msgid "Main actions file"
+msgstr "Дефолтные действия."
+
+msgid "Mandatory Input: No Data given!"
+msgstr "Обязательный ввод: не указаны данные!"
+
+msgid "Mandatory Input: No Directory given!"
+msgstr "Обязательный ввод: не указана папка!"
+
+msgid "Mandatory Input: No File given!"
+msgstr "Обязательный ввод: не указан файл!"
+
+msgid "Mandatory Input: No Port given!"
+msgstr "Обязательный ввод: Не указан порт!"
+
+msgid "Mandatory Input: No files given!"
+msgstr "Обязательный ввод: не указаны файлы!"
+
+msgid "Mandatory Input: No valid IPv4 address or host given!"
+msgstr "Обязательный ввод: Не указан действительный IPv4 адрес или хост!"
+
+msgid "Mandatory Input: No valid IPv6 address given!"
+msgstr "Обязательный ввод: Не указан действительный IPv6 адрес!"
+
+msgid "Mandatory Input: No valid Port given!"
+msgstr "Обязательный ввод: Не указан действительный порт!"
+
+msgid "Maximum number of client connections that will be served."
+msgstr "Максимальное число обслуживаемых клиентских подключений."
+
+msgid "Maximum size (in KB) of the buffer for content filtering."
+msgstr "Максимальный размер буфера для фильтрации содержимого (в KB)."
+
+msgid "Miscellaneous"
+msgstr "Дополнительно"
+
+msgid "NOT installed"
+msgstr "Не установлена"
+
+msgid "No trailing '/', please."
+msgstr "Не используйте символ '/'."
+
+msgid "Non-fatal errors - *we highly recommended enabling this*"
+msgstr ""
+"Отсутствуют неустранимые ошибки - *мы настоятельно рекомендуем включить эту "
+"функцию*."
+
+msgid ""
+"Number of seconds after which a socket times out if no data is received."
+msgstr ""
+"Количество секунд по истечении которых, время сокета истекает, если данные "
+"не получены."
+
+msgid ""
+"Number of seconds after which an open connection will no longer be reused."
+msgstr ""
+"Количество секунд по истечении которых, соединение не будет использоваться "
+"повторно."
+
+msgid ""
+"Only when using 'external filters', Privoxy has to create temporary files."
+msgstr ""
+"Только когда используются 'сторонние фильтры', Privoxy должен создавать "
+"временные файлы."
+
+msgid "Please install current version !"
+msgstr "Установите текущую версию !"
+
+msgid "Please press [Read] button"
+msgstr "Нажмите кнопку [Читать / Перечитывать системный журнал]"
+
+msgid "Please read Privoxy manual for details!"
+msgstr "Ознакомьтесь с руководством Privoxy!"
+
+msgid "Please update to the current version!"
+msgstr "Обновите до текущей версии!"
+
+msgid "Privoxy WEB proxy"
+msgstr "Privoxy WEB proxy"
+
+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. Privoxy - "
+"использует ряд других файлов для дополнительной настройки, оказания помощи и "
+"ведения системного журнала. "
+
+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 - это свободный веб-прокси с расширенными возможностями фильтрации "
+"интернет-контента для защиты конфиденциальности (приватности) пользователей "
+"сети Интернет. Изменения содержания веб-страниц, управления cookies, "
+"ограничения доступа к некоторым сайтам и удаления рекламы, баннеров, "
+"всплывающих окон, а также любого другого нежелательного контента («интернет-"
+"мусора»)."
+
+msgid "Read / Reread log file"
+msgstr "Читать / Перечитывать системный журнал"
+
+msgid "Show I/O status"
+msgstr "Показать статус ввода-вывода."
+
+msgid "Show each connection status"
+msgstr "Показать состояние каждого соединения."
+
+msgid "Show header parsing"
+msgstr "Показать анализ заголовка."
+
+msgid "Software package '%s' is not installed."
+msgstr "Пакет программного обеспечения '%s' не установлен."
+
+msgid "Software package '%s' is outdated."
+msgstr "Пакет программного обеспечения '%s' устарел."
+
+msgid "Start"
+msgstr "Старт"
+
+msgid "Start / Stop"
+msgstr "Старт / Стоп"
+
+msgid "Start/Stop Privoxy WEB Proxy"
+msgstr "Старт / Стоп Privoxy WEB proxy."
+
+msgid "Startup banner and warnings."
+msgstr "Баннер запуска и предупреждения."
+
+msgid "Syntax:"
+msgstr "Синтаксис:"
+
+msgid "Syntax: Client header names delimited by spaces."
+msgstr "Синтаксис: имя заголовка клиента, разделенное пробелами."
+
+msgid "Syntax: target_pattern http_parent[:port]"
+msgstr "Синтаксис: target_pattern http_parent[:port]"
+
+msgid "Syntax: target_pattern socks_proxy[:port] http_parent[:port]"
+msgstr "Синтаксис: target_pattern socks_proxy[:port] http_parent[:port]"
+
+msgid "System"
+msgstr "Система"
+
+msgid ""
+"The actions file(s) to use. Multiple actionsfile lines are permitted, and "
+"are in fact recommended!"
+msgstr ""
+"Файл (или файлы) действий для использования. Желательно использовать "
+"несколько строк 'Action Files'."
+
+msgid ""
+"The address and TCP port on which Privoxy will listen for client requests."
+msgstr ""
+"Адрес и TCP-порт, на котором Privoxy будет прослушивать запросы клиентов."
+
+msgid ""
+"The compression level that is passed to the zlib library when compressing "
+"buffered content."
+msgstr ""
+"Уровень сжатия, который передается в библиотеку zlib при сжатии содержимого "
+"буфера."
+
+msgid ""
+"The directory where all logging takes place (i.e. where the logfile is "
+"located)."
+msgstr "Папка в которой находится системный журнал (т. е. его файл)."
+
+msgid "The directory where the other configuration files are located."
+msgstr "Папка, в которой находятся другие config файлы."
+
+msgid ""
+"The filter files contain content modification rules that use regular "
+"expressions."
+msgstr ""
+"Файлы фильтров содержат правила изменения содержимого, использующие "
+"регулярные выражения."
+
+msgid "The hostname shown on the CGI pages."
+msgstr "Имя хоста, показанное на страницах CGI."
+
+msgid "The log file to use. File name, relative to log directory."
+msgstr ""
+"Используемый файл системного журнала. Имя файла относительно папки системных "
+"журналов."
+
+msgid "The order in which client headers are sorted before forwarding them."
+msgstr "Порядок сортировки заголовков клиентов перед их пересылкой."
+
+msgid ""
+"The status code Privoxy returns for pages blocked with +handle-as-empty-"
+"document."
+msgstr ""
+"Код статуса заблокированных Privoxy страниц с пометкой +handle-as-empty-"
+"document."
+
+msgid ""
+"The trust mechanism is an experimental feature for building white-lists and "
+"should be used with care."
+msgstr ""
+"Механизм доверия, является экспериментальной функцией для построения Белых "
+"списков и должен использоваться с осторожностью."
+
+msgid ""
+"The value of this option only matters if the experimental trust mechanism "
+"has been activated."
+msgstr ""
+"Этот параметр будет задействован, только если активирован экспериментальный "
+"механизм доверия."
+
+msgid ""
+"This option is only there for debugging purposes. It will drastically reduce "
+"performance."
+msgstr ""
+"Этот режим доступен только для отладки. Он существенно снизит "
+"производительность."
+
+msgid ""
+"This option will be removed in future releases as it has been obsoleted by "
+"the more general header taggers."
+msgstr ""
+"Этот параметр будет удален в будущих выпусках, поскольку он устарел "
+"благодаря введению основных меток заголовков."
+
+msgid ""
+"This tab controls the security-relevant aspects of Privoxy's configuration."
+msgstr "Страница контролирует безопасность, важные аспекты настройки Privoxy."
+
+msgid ""
+"Through which SOCKS proxy (and optionally to which parent HTTP proxy) "
+"specific requests should be routed."
+msgstr ""
+"Через какой SOCKS прокси (как вариант, с каким из родительских http-прокси) "
+"конкретные запросы должны быть направлены."
+
+msgid "To which parent HTTP proxy specific requests should be routed."
+msgstr ""
+"На какой родительский прокси HTTP должны быть направлены определенные "
+"запросы."
+
+msgid "User customizations"
+msgstr "Пользовательские действия."
+
+msgid "Value is not a number"
+msgstr "Значение не является числом"
+
+msgid "Value not between 0 and 300"
+msgstr "Значение не от 0 до 300"
+
+msgid "Value not between 0 and 9"
+msgstr "Значение не от 0 до 9"
+
+msgid "Value not between 1 and 4096"
+msgstr "Значения не от 1 до 4096"
+
+msgid "Value not greater 0 or empty"
+msgstr "Значение не больше 0 или пустое"
+
+msgid "Value range 1 to 4096, no entry defaults to 4096"
+msgstr "Диапазон значений от 1 до 4096, значение по умолчанию 4096."
+
+msgid "Version"
+msgstr "Версия"
+
+msgid "Version Information"
+msgstr "Информация о версии"
+
+msgid "Whether intercepted requests should be treated as valid."
+msgstr "Следует ли рассматривать перехваченные запросы как действительные."
+
+msgid ""
+"Whether or not Privoxy recognizes special HTTP headers to change toggle "
+"state."
+msgstr ""
+"Распознает ли Privoxy специальные заголовки HTTP для изменения состояния "
+"переключения."
+
+msgid "Whether or not buffered content is compressed before delivery."
+msgstr "Сжатие буферизованного содержимого перед доставкой."
+
+msgid ""
+"Whether or not outgoing connections that have been kept alive should be "
+"shared between different incoming connections."
+msgstr ""
+"Должны ли исходящие соединения, сохраненные в действующих, совместно "
+"использоваться различными входящими соединениями."
+
+msgid "Whether or not pipelined requests should be served."
+msgstr "Могут или нет подаваться pipelined запросы."
+
+msgid "Whether or not proxy authentication through Privoxy should work."
+msgstr "Должена ли работать прокси-аутентификация через Privoxy."
+
+msgid "Whether or not the web-based actions file editor may be used."
+msgstr "Может ли использоваться редактор файлов веб-действий."
+
+msgid "Whether or not the web-based toggle feature may be used."
+msgstr "Может ли использоваться веб-функция переключения."
+
+msgid "Whether requests to Privoxy's CGI pages can be blocked or redirected."
+msgstr ""
+"Могут ли запросы на CGI-страницы Privoxy быть заблокированы или "
+"перенаправлены."
+
+msgid ""
+"Whether the CGI interface should stay compatible with broken HTTP clients."
+msgstr ""
+"Должен ли CGI интерфейс оставаться совместимым со сломанными http-клиентами."
+
+msgid "Whether to run only one server thread."
+msgstr "Должен ли выполняться только один серверный поток."
+
+msgid "Who can access what."
+msgstr "Кто имеет доступ."
+
+msgid "installed"
+msgstr "установлено"
+
+msgid "or higher"
+msgstr "или выше"
+
+msgid "required"
+msgstr "требовать"
diff --git a/applications/luci-app-radicale/po/ru/radicale.po b/applications/luci-app-radicale/po/ru/radicale.po
new file mode 100644
index 000000000..85f010e7f
--- /dev/null
+++ b/applications/luci-app-radicale/po/ru/radicale.po
@@ -0,0 +1,448 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: radicale\n"
+"POT-Creation-Date: 2018-01-08 23:00+0300\n"
+"PO-Revision-Date: 2018-01-09 01:11+0300\n"
+"Language-Team: http://cyber-place.ru\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
+
+msgid ""
+"'AUTO' selects the highest protocol version that client and server support."
+msgstr ""
+"'АВТО' выбирает самую высокую версию протокола, которую поддерживают клиент "
+"и сервер."
+
+msgid ""
+"'Hostname:Port' or 'IPv4:Port' or '[IPv6]:Port' Radicale should listen on"
+msgstr ""
+"Задайте 'Имя_хоста:порт' или 'адрес IPv4:порт' или 'адрес IPv6:порт' - адрес "
+"и порт работы сервера Radicale."
+
+msgid "AUTO"
+msgstr "АВТО"
+
+msgid "Access-Control-Allow-Headers"
+msgstr "Доступ-Контроль-Разрешить-Заголовки"
+
+msgid "Access-Control-Allow-Methods"
+msgstr "Доступ-Контроль-Разрешить-Методы"
+
+msgid "Access-Control-Allow-Origin"
+msgstr "Доступ-Контроль-Разрешить-Источник"
+
+msgid "Access-Control-Expose-Headers"
+msgstr "Доступ-Контроль-Подвергать-Заголовки"
+
+msgid "Additional HTTP headers"
+msgstr "Дополнительные заголовки HTTP"
+
+msgid "Address:Port"
+msgstr "Адрес:Порт"
+
+msgid "Authentication"
+msgstr "Аутентификация"
+
+msgid ""
+"Authentication login is matched against the 'user' key, and collection's "
+"path is matched against the 'collection' key."
+msgstr ""
+"Имя входа для проверки подлинности сопоставляется с ключом 'пользователь', и "
+"пути коллекции сопоставляется с ключом 'коллекция'."
+
+msgid "Authentication method"
+msgstr "Метод аутентификации"
+
+msgid "Authentication method to allow access to Radicale server."
+msgstr "Методы аутентификации для разрешения доступа к серверу Radicale."
+
+msgid "Auto-start"
+msgstr "Авто-старт"
+
+msgid "Boot delay"
+msgstr "Задержка загрузки"
+
+msgid "CalDAV/CardDAV"
+msgstr "CalDAV/CardDAV"
+
+msgid ""
+"Calendars and address books are available for both local and remote access, "
+"possibly limited through authentication policies."
+msgstr ""
+"Календари и адресные книги доступны как для локального, так и для удаленного "
+"доступа, возможно ограниченного с помощью политик проверки подлинности."
+
+msgid "Certificate file"
+msgstr "Файл сертификата"
+
+msgid ""
+"Change here the encoding Radicale will use instead of 'UTF-8' for responses "
+"to the client and/or to store data inside collections."
+msgstr ""
+"Выбранный здесь стандарт кодирования текстов, будет использоваться вместо "
+"'UTF-8' для ответов клиенту и/или для хранения данных внутри коллекций."
+
+msgid "Ciphers"
+msgstr "Протоколы шифрования"
+
+msgid "Console Log level"
+msgstr "Уровень журнала консоли"
+
+msgid "Control the access to data collections."
+msgstr "Управляйте доступом к сбору данных коллекций."
+
+msgid "Critical"
+msgstr "Критический"
+
+msgid ""
+"Cross-origin resource sharing (CORS) is a mechanism that allows restricted "
+"resources (e.g. fonts, JavaScript, etc.) on a web page to be requested from "
+"another domain outside the domain from which the resource originated."
+msgstr ""
+"Cross-Origin Resource Sharing (CORS) - это механизм совместного "
+"использования ресурсов между разными источниками, позволяющий использовать "
+"ограниченные ресурсы (например, шрифты, JavaScript и т.д.) на веб-странице, "
+"запрашиваемой из другого домена, за пределами домена, из которого был создан "
+"ресурс."
+
+msgid "Custom"
+msgstr "Пользовательский"
+
+msgid "Database"
+msgstr "База данных"
+
+msgid "Debug"
+msgstr "Отладка"
+
+msgid "Delay (in seconds) during system boot before Radicale start"
+msgstr ""
+"Задержка (в секундах) во время загрузки системы перед стартом Radicale."
+
+msgid "Directory"
+msgstr "Папка"
+
+msgid "Directory not exists/found !"
+msgstr "Папка не существует / не найдена !"
+
+msgid "Directory required !"
+msgstr "Папка требуется !"
+
+msgid "Directory where the rotating log-files are stored"
+msgstr "Папка в которой хранятся перезаписываемые файлы системного журнала."
+
+msgid "During delay ifup-events are not monitored !"
+msgstr "Во время задержки ifup-события не отслеживаются!"
+
+msgid "Enable HTTPS"
+msgstr "Включить HTTPS"
+
+msgid ""
+"Enable/Disable auto-start of Radicale on system start-up and interface events"
+msgstr "Авто-старт Radicale сервера при запуске прошивки устройства."
+
+msgid "Encoding"
+msgstr "Кодировка"
+
+msgid "Encoding for responding requests."
+msgstr "Кодировка для ответов на запросы."
+
+msgid "Encoding for storing local collections."
+msgstr "Кодировка для хранения локальных данных коллекций."
+
+msgid "Encryption method"
+msgstr "Метод шифрования"
+
+msgid "Error"
+msgstr "Ошибка"
+
+msgid "File '%s' not found !"
+msgstr "Файл '%s' не найден !"
+
+msgid "File Log level"
+msgstr "Уровень лог файла"
+
+msgid "File not found !"
+msgstr "Файл не найден !"
+
+msgid "File-system"
+msgstr "Файловая система"
+
+msgid ""
+"For example, for the 'user' key, '.+' means 'authenticated user' and '.*' "
+"means 'anybody' (including anonymous users)."
+msgstr ""
+"Например для ключа 'пользователь', '+' означает 'аутентифицированный "
+"пользователь' и '.*' означает 'кто угодно' (включая анонимных пользователей)."
+
+msgid "Full access for Owner only"
+msgstr "Полный доступ только для владельца"
+
+msgid "Full access for authenticated Users"
+msgstr "Полный доступ для авторизованных пользователей"
+
+msgid "Full access for everybody (including anonymous)"
+msgstr "Полный доступ для всех (включая анонимных)"
+
+msgid "Full path and file name of certificate"
+msgstr "Полный путь и имя файла сертификата"
+
+msgid "Full path and file name of private key"
+msgstr "Полный путь и имя файла личного ключа"
+
+msgid "Info"
+msgstr "Информация"
+
+msgid "Keep in mind to use the correct hashing algorithm !"
+msgstr "Используйте только правильный алгоритм хэширования!"
+
+msgid "Leading or ending slashes are trimmed from collection's path."
+msgstr "Начальные или конечные '/' - удаляются при указании пути."
+
+msgid "Log-backup Count"
+msgstr "Количество резервных копий журнала"
+
+msgid "Log-file Viewer"
+msgstr "Показ файла системного журнала"
+
+msgid "Log-file directory"
+msgstr "Папка файла журналов"
+
+msgid "Log-file size"
+msgstr "Размер файла журнала"
+
+msgid "Logging"
+msgstr "Журналирование"
+
+msgid "Logon message"
+msgstr "Сообщение входа в систему"
+
+msgid "Maximum size of each rotation log-file."
+msgstr "Максимальный размер каждой перезаписи файла журнала."
+
+msgid "Message displayed in the client when a password is needed."
+msgstr "Отображаемое сообщение клиенту, когда требуется пароль."
+
+msgid "NOT installed"
+msgstr "Не установлена"
+
+msgid "None"
+msgstr "Нет"
+
+msgid "Number of backup files of log to create."
+msgstr "Количество резервных копий журнала."
+
+msgid "OPTIONAL: See python's ssl module for available ciphers"
+msgstr ""
+"Необязательно: используйте SSL Python плагин для доступных протоколов "
+"шифрования."
+
+msgid "One or more missing/invalid fields on tab"
+msgstr "Одно или несколько отсутствующих/недопустимых полей на странице."
+
+msgid "Owner allow write, authenticated users allow read"
+msgstr ""
+"Владелец разрешает запись, прошедшие проверку пользователи разрешают чтение"
+
+msgid "Path/File required !"
+msgstr "Путь/файл требуется!"
+
+msgid ""
+"Place here the 'user:password' pairs for your users which should have access "
+"to Radicale."
+msgstr ""
+"Разместите здесь пары 'логин:пароль' для ваших пользователей, которые должны "
+"иметь доступ к Radicale."
+
+msgid "Please install current version !"
+msgstr "Установите текущую версию!"
+
+msgid "Please press [Reload] button below to reread the file."
+msgstr "Нажмите кнопку [Перезагрузить], чтобы перечитать файл."
+
+msgid "Please update to current version !"
+msgstr "Обновите текущую версию!"
+
+msgid "Port numbers below 1024 (Privileged ports) are not supported"
+msgstr "Номера портов менее 1024 (привилегированные порты) не поддерживаются."
+
+msgid "Private key file"
+msgstr "Файл Личного Ключа"
+
+msgid "Radicale CalDAV/CardDAV Server"
+msgstr "Radicale CalDAV/CardDAV сервер"
+
+msgid "Radicale uses '/etc/radicale/rights' as regexp-based file."
+msgstr ""
+"Radicale использует '/etc/radicale/rights' в качестве файла на основе "
+"регулярного выражения (RegExp)."
+
+msgid "Radicale uses '/etc/radicale/users' as htpasswd file."
+msgstr "Radicale использует '/etc/radicale/users' как htpasswd файл."
+
+msgid "Read only!"
+msgstr "Только для чтения!"
+
+msgid "RegExp file"
+msgstr "Файл регулярного выражения (RegExp)"
+
+msgid "Reload"
+msgstr "Перезагрузить"
+
+msgid "Response Encoding"
+msgstr "Кодировка ответов"
+
+msgid "Rights"
+msgstr "Права"
+
+msgid "Rights are based on a regexp-based file"
+msgstr "Права основаны на файле, основанном на регулярных выражениях"
+
+msgid "Rights backend"
+msgstr "Права доступа"
+
+msgid "SHA-1"
+msgstr "SHA-1"
+
+msgid "SSL Protocol"
+msgstr "SSL протокол"
+
+msgid "Save"
+msgstr "Сохранить"
+
+msgid "Section names are only used for naming the rule."
+msgstr "Имена строк используются только для переименования правила."
+
+msgid "Server"
+msgstr "Сервер"
+
+msgid "Setting this parameter to '0' will disable rotation of log-file."
+msgstr ""
+"Установка этого параметра в значение '0' приведет к отключению перезаписи "
+"файла журнала."
+
+msgid "Software package '%s' is not installed."
+msgstr "Программный пакет '%s' не установлен."
+
+msgid "Software package '%s' is outdated."
+msgstr "Программный пакет '%s' устарел."
+
+msgid "Software update required"
+msgstr "Требуется обновление программного обеспечения"
+
+msgid "Start"
+msgstr "Старт"
+
+msgid "Start / Stop"
+msgstr "Старт / Стоп"
+
+msgid "Start/Stop Radicale server"
+msgstr "Запуск и остановка сервера Radicale."
+
+msgid "Storage"
+msgstr "Хранилище"
+
+msgid "Storage Encoding"
+msgstr "Кодировка хранилища"
+
+msgid "Storage backend"
+msgstr "Сервер хранения"
+
+msgid "Syslog Log level"
+msgstr "Уровень системного журнала"
+
+msgid "System"
+msgstr "Система"
+
+msgid ""
+"The Radicale Project is a complete CalDAV (calendar) and CardDAV (contact) "
+"server solution."
+msgstr ""
+"Radicale - это сервер, объединяющий в себе CalDAV (календарь) и CardDAV "
+"(контакты)."
+
+msgid ""
+"They can be viewed and edited by calendar and contact clients on mobile "
+"phones or computers."
+msgstr ""
+"Их можно просматривать и редактировать по календарю и связываться с "
+"клиентами на мобильных телефонах или компьютерах."
+
+msgid "To edit the file follow this link!"
+msgstr "Чтобы отредактировать файл, следуйте по этой ссылке!"
+
+msgid "To view latest log file follow this link!"
+msgstr "Для просмотра последних записей в журнале, следуйте по этой ссылке!"
+
+msgid "Value is not a number"
+msgstr "Значение не является числом"
+
+msgid "Value is not an Integer >= 0 !"
+msgstr "Значение не является целым числом > = 0!"
+
+msgid "Value not between 0 and 300"
+msgstr "Значение не между 0 и 300"
+
+msgid "Value required ! Integer >= 0 !"
+msgstr "Требуемое значение ! Целое число >= 0 !"
+
+msgid "Version"
+msgstr "Версия"
+
+msgid "Version Information"
+msgstr "Информация о версии"
+
+msgid ""
+"WARNING: Only 'File-system' is documented and tested by Radicale development"
+msgstr ""
+"ВНИМАНИЕ: только 'Файловая система' документирована и протестирована "
+"сообществом Radicale."
+
+msgid "Warning"
+msgstr "Внимание"
+
+msgid ""
+"You can also get groups from the user regex in the collection with {0}, {1}, "
+"etc."
+msgstr ""
+"Можно также получить группы из пользовательского regex вместе с {0}, {1} и т."
+"д."
+
+msgid ""
+"You can use Python's ConfigParser interpolation values %(login)s and "
+"%(path)s."
+msgstr ""
+"Вы можете использовать ConfigParser интерполяции Python значений %(логин)ы и "
+"%(путь)и."
+
+msgid "crypt"
+msgstr "crypt"
+
+msgid "custom"
+msgstr "пользовательский"
+
+msgid "htpasswd file"
+msgstr "htpasswd файл"
+
+msgid "installed"
+msgstr "установлено"
+
+msgid "no valid path given!"
+msgstr "не указан допустимый путь!"
+
+msgid "or higher"
+msgstr "или выше"
+
+msgid "plain"
+msgstr "простой"
+
+msgid "required"
+msgstr "требовать"
+
+msgid "salted SHA-1"
+msgstr "salted SHA-1"
diff --git a/applications/luci-app-samba/po/ru/samba.po b/applications/luci-app-samba/po/ru/samba.po
index 534770f5f..9e6d1341d 100644
--- a/applications/luci-app-samba/po/ru/samba.po
+++ b/applications/luci-app-samba/po/ru/samba.po
@@ -1,32 +1,31 @@
msgid ""
msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
"Project-Id-Version: LuCI: samba\n"
-"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-05-19 19:36+0200\n"
-"PO-Revision-Date: 2012-08-15 13:48+0300\n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"PO-Revision-Date: 2018-01-05 19:07+0300\n"
+"Language-Team: http://cyber-place.ru\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Pootle 2.0.4\n"
-"X-Poedit-SourceCharset: UTF-8\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
msgid "Allow guests"
msgstr "Разрешить гостевой вход"
msgid "Allow system users to reach their home directories via network shares"
msgstr ""
-"Разрешить пользователям получать доступ к их домашним директориям через сеть"
+"Разрешить пользователям получать доступ к их домашним папкам, через "
+"локальную сеть."
msgid "Allowed users"
-msgstr "Разрешённые пользователи"
+msgstr "Разрешенные пользователи"
msgid "Browseable"
-msgstr ""
+msgstr "Виден в списке доступных ресурсов"
msgid "Create mask"
msgstr "Создать маску"
@@ -35,22 +34,22 @@ msgid "Description"
msgstr "Описание"
msgid "Directory mask"
-msgstr "Маска директории"
+msgstr "Маска папок"
msgid "Edit Template"
-msgstr "Редактировать шаблон"
+msgstr "Настройка config файла"
msgid "Edit the template that is used for generating the samba configuration."
-msgstr "Редактировать шаблон, используемый для генерации конфигурации samba."
+msgstr "Настройка config файла samba."
msgid "General Settings"
-msgstr "Общие настройки"
+msgstr "Основные настройки"
msgid "Hostname"
msgstr "Имя хоста"
msgid "Mask for new directories"
-msgstr "Маска для новых директорий"
+msgstr "Маска для новых папок"
msgid "Mask for new files"
msgstr "Маска для новых файлов"
@@ -68,15 +67,17 @@ msgid ""
"Please add directories to share. Each directory refers to a folder on a "
"mounted device."
msgstr ""
+"Добавьте папки для совместного доступа. Каждая папка - соответствует разделу "
+"на подключенном устройстве."
msgid "Read-only"
msgstr "Только для чтения"
msgid "Share home-directories"
-msgstr "Совместно использовать домашние директории"
+msgstr "Совместно использовать домашние папки"
msgid "Shared Directories"
-msgstr "Совместно используемые директории"
+msgstr "Совместно используемые папки"
msgid ""
"This is the content of the file '/etc/samba/smb.conf.template' from which "
@@ -85,9 +86,9 @@ msgid ""
"Settings' tab."
msgstr ""
"Это содержимое файла '/etc/samba/smb.conf.template', из которого "
-"генерируется конфигурация samba. Значения, заключённые в символы \"|\", не "
-"должны быть изменены. Они будут автоматически заменены на значения из "
-"вкладки 'Общие настройки'."
+"генерируется config файл - samba. Значения, заключенные в символы ('|'), не "
+"должны быть изменены. Они будут автоматически заменены на значения со "
+"страницы 'Основные настройки'."
msgid "Workgroup"
msgstr "Рабочая группа"
diff --git a/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instance-details.lua b/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instance-details.lua
index 22f3106d0..19f5ddc31 100644
--- a/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instance-details.lua
+++ b/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instance-details.lua
@@ -34,8 +34,6 @@ if stype == "ss_server" then
o.datatype = "ipaddr"
o.placeholder = "0.0.0.0"
ss.values_ipaddr(o)
- o = s:taboption("general", Value, "manager_address", translate("Manager address"))
- o.datatype = "hostport"
else
ss.options_client(s, "general")
if stype == "ss_tunnel" then
diff --git a/applications/luci-app-shadowsocks-libev/luasrc/model/shadowsocks-libev.lua b/applications/luci-app-shadowsocks-libev/luasrc/model/shadowsocks-libev.lua
index 7ba6b40c5..fc51dcd46 100644
--- a/applications/luci-app-shadowsocks-libev/luasrc/model/shadowsocks-libev.lua
+++ b/applications/luci-app-shadowsocks-libev/luasrc/model/shadowsocks-libev.lua
@@ -42,7 +42,8 @@ function values_serverlist(o)
local server = sdata["server"]
local server_port = sdata["server_port"]
if server and server_port then
- local desc = "%s - %s:%s" % {sname, sdata["server"], sdata["server_port"]}
+ local disabled = ucival_to_bool(sdata[".disabled"]) and " - disabled" or ""
+ local desc = "%s - %s:%s%s" % {sname, server, server_port, disabled}
o:value(sname, desc)
end
end)
@@ -121,6 +122,7 @@ function options_common(s, tab)
s:taboption(tab, Flag, "verbose", translate("Verbose"))
s:taboption(tab, Flag, "ipv6_first", translate("IPv6 First"), translate("Prefer IPv6 addresses when resolving names"))
s:taboption(tab, Flag, "fast_open", translate("Enable TCP Fast Open"))
+ s:taboption(tab, Flag, "no_delay", translate("Enable TCP_NODELAY"))
s:taboption(tab, Flag, "reuse_port", translate("Enable SO_REUSEPORT"))
end
@@ -137,7 +139,6 @@ function cfgvalue_overview(sdata)
cfgvalue_overview_(sdata, lines, names_options_common)
cfgvalue_overview_(sdata, lines, {
"bind_address",
- "manager_address",
})
elseif stype == "ss_local" or stype == "ss_redir" or stype == "ss_tunnel" then
cfgvalue_overview_(sdata, lines, names_options_client)
diff --git a/applications/luci-app-shairplay/po/ru/shairplay.po b/applications/luci-app-shairplay/po/ru/shairplay.po
new file mode 100644
index 000000000..da06322e8
--- /dev/null
+++ b/applications/luci-app-shairplay/po/ru/shairplay.po
@@ -0,0 +1,54 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: shairplay\n"
+"POT-Creation-Date: 2017-12-06 11:15+0300\n"
+"PO-Revision-Date: 2018-01-05 22:43+0300\n"
+"Language-Team: http://cyber-place.ru\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
+
+msgid "AO Device ID"
+msgstr "AO ID устройства"
+
+msgid "AO Device Name"
+msgstr "AO имя устройства"
+
+msgid "AO Driver"
+msgstr "AO драйвер"
+
+msgid "Airport Name"
+msgstr "Имя Air-порта"
+
+msgid "Default"
+msgstr "По умолчанию"
+
+msgid "Enabled"
+msgstr "Включено"
+
+msgid "HW Address"
+msgstr "HW адрес"
+
+msgid "Password"
+msgstr "Пароль"
+
+msgid "Port"
+msgstr "Порт"
+
+msgid "Respawn"
+msgstr "Перерождение"
+
+msgid "Shairplay"
+msgstr "Shairplay"
+
+msgid ""
+"Shairplay is a simple AirPlay server implementation, here you can configure "
+"the settings."
+msgstr ""
+"Shairplay является простой реализацией сервера AirPlay, здесь вы можете его "
+"настроить."
diff --git a/applications/luci-app-simple-adblock/po/ru/simple-adblock.po b/applications/luci-app-simple-adblock/po/ru/simple-adblock.po
new file mode 100644
index 000000000..51e56b3d1
--- /dev/null
+++ b/applications/luci-app-simple-adblock/po/ru/simple-adblock.po
@@ -0,0 +1,94 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: simple-adblock\n"
+"POT-Creation-Date: 2017-12-07 14:00+0300\n"
+"PO-Revision-Date: 2018-01-06 13:04+0300\n"
+"Language-Team: http://cyber-place.ru\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
+
+msgid "Blacklisted Domain URLs"
+msgstr "Черный список доменных URL адресов"
+
+msgid "Blacklisted Domains"
+msgstr "Черный список доменов"
+
+msgid "Blacklisted Hosts URLs"
+msgstr "Черный список хостов URL адресов"
+
+msgid "Controls system log and console output verbosity"
+msgstr "Проверка системного журнала и уровень детализации вывода консоли."
+
+msgid "Enable/start service"
+msgstr "Включение / Запуск утилиты"
+
+msgid "Force Router DNS"
+msgstr "Назначить DNS роутера"
+
+msgid "Force Router DNS server to all local devices"
+msgstr "Назначить DNS роутера всем локальным устройствам"
+
+msgid "Forces Router DNS use on local devices, also known as DNS Hijacking"
+msgstr ""
+"Назначить DNS роутера всем локальным устройствам, методом DNS Hijacking."
+
+msgid "Individual domains to be blacklisted"
+msgstr "Домены добавленные пользователем в Черный список."
+
+msgid "Individual domains to be whitelisted"
+msgstr "Домены добавленные пользователем в Белый список."
+
+msgid "LED to indicate status"
+msgstr "LED индикация состояния"
+
+msgid "Let local devices use their own DNS servers if set"
+msgstr ""
+"Разрешить локальным устройствам использовать собственные DNS, если они "
+"прописаны в настройках сети устройства"
+
+msgid "Output Verbosity Setting"
+msgstr "Настройка детализации вывода"
+
+msgid "Pick the LED not already used in"
+msgstr "Выберите LED не используется в "
+
+msgid "Simple AdBlock"
+msgstr "Simple AdBlock"
+
+msgid "Simple AdBlock Settings"
+msgstr "Simple AdBlock настройки"
+
+msgid "Some output"
+msgstr "Неполный вывод"
+
+msgid "Suppress output"
+msgstr "Подавить вывод"
+
+msgid "System LED Configuration"
+msgstr "Настройка LED индикации системы."
+
+msgid "URLs to lists of domains to be blacklisted"
+msgstr "URL адреса доменов для Черного списка."
+
+msgid "URLs to lists of domains to be whitelisted"
+msgstr "URL адреса доменов для Белого списка."
+
+msgid "URLs to lists of hosts to be blacklisted"
+msgstr "URL адреса хостов для Черного списка."
+
+msgid "Verbose output"
+msgstr "Подробный вывод"
+
+msgid "Whitelisted Domain URLs"
+msgstr "URLs доменов Белого списка"
+
+msgid "Whitelisted Domains"
+msgstr "Белый список доменов"
+
+msgid "none"
+msgstr "Нет"
diff --git a/applications/luci-app-splash/po/ru/splash.po b/applications/luci-app-splash/po/ru/splash.po
index 3f470dba0..bfee7ef59 100644
--- a/applications/luci-app-splash/po/ru/splash.po
+++ b/applications/luci-app-splash/po/ru/splash.po
@@ -1,19 +1,17 @@
msgid ""
msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
"Project-Id-Version: LuCI: splash\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-26 15:10+0200\n"
-"PO-Revision-Date: 2013-11-13 18:52+0200\n"
-"Last-Translator: Роман <x.wserfer@gmail.com>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"POT-Creation-Date: 2013-11-13 18:52+0200\n"
+"PO-Revision-Date: 2018-01-08 19:21+0300\n"
+"Language-Team: http://cyber-place.ru\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Pootle 2.0.6\n"
-"X-Poedit-SourceCharset: UTF-8\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
msgid "Accept"
msgstr "Принять"
@@ -35,17 +33,23 @@ msgid ""
"without notice for any reason, for certain devices, and/or may be blocked "
"for certain users."
msgstr ""
+"Доступ к сети не гарантируется. Он может быть прерван в любое время без "
+"предварительного уведомления по любой причине, для определенных устройств, и/"
+"или может быть заблокирован для определенных пользователей."
msgid "Active Clients"
msgstr "Активные клиенты"
msgid "Allowed hosts/subnets"
-msgstr "Разрешённые хосты/подсети"
+msgstr "Разрешенные хосты/подсети"
msgid ""
"As an alternative to editing the complete splash text you can also just "
"include some custom text in the default splash page by entering it here."
msgstr ""
+"В качестве альтернативы редактированию полного текста заставки, можно также "
+"просто включить некоторый пользовательский текст на странице заставки по "
+"умолчанию, введя его здесь."
msgid ""
"Bandwidth limit for clients is only activated when both up- and download "
@@ -53,14 +57,14 @@ msgid ""
"Whitelisted clients are not limited."
msgstr ""
"Ограничение полосы для клиентов активируется только при указанных лимитах "
-"нисходящего и восходящего каналов. Значение 0 полностью отключает "
-"ограничение. Клиенты из \"белого\" списка не имеют ограничений."
+"нисходящего и восходящего каналов. Значение '0' полностью отключает "
+"ограничение. Клиенты из Белого списка не имеют ограничений."
msgid ""
"Become an active member of this community and help by operating your own node"
msgstr ""
"Станьте активным участником данного сообщества и окажите содействие, "
-"запустив свой узел сети"
+"запустив свой узел сети."
msgid "Blacklist"
msgstr "Чёрный список"
@@ -72,24 +76,29 @@ msgid ""
"By accepting these rules you can use this network for %s hour(s). After this "
"time you need to accept these rules again."
msgstr ""
+"Приняв эти правила, вы можете использовать эту сеть для %s час (ы). По "
+"истечении этого времени вам необходимо снова принять эти правила."
msgid "Clearance time"
msgstr "Разрешённое время"
msgid "Client-Splash"
-msgstr "Client-Splash"
+msgstr "Splash-Клиент"
msgid ""
"Client-Splash is a hotspot authentification system for wireless mesh "
"networks."
msgstr ""
-"Client-Splash - это система аутентификации точек доступа для беспроводных "
+"Splash-Клиент - это система аутентификации точек доступа для беспроводных "
"ячеистых сетей."
msgid ""
"Clients are redirected to this page after they have accepted the splash. If "
"this is left empty they are redirected to the page they had requested."
msgstr ""
+"Клиенты перенаправляются на эту страницу после того, как они вступили в "
+"Splash. Если эта страница пуста, они перенаправляются на запрашиваемую "
+"страницу."
msgid "Clients download speed is limited to this value (kbyte/s)"
msgstr ""
@@ -99,7 +108,7 @@ msgid ""
"Clients that have accepted the splash are allowed to use the network for "
"that many hours."
msgstr ""
-"Клиенты, принявшие приглашение splash-экрана, могут использовать сеть данное "
+"Клиенты, принявшие приглашение Splash-экрана, могут использовать сеть данное "
"количество часов."
msgid "Clients upload speed is limited to this value (kbyte/s)"
@@ -116,6 +125,8 @@ msgid ""
"Destination hosts and networks that are excluded from splashing, i.e. they "
"are always allowed."
msgstr ""
+"Назначенные хосты и сети, которые исключены из Splash, т.е. они всегда "
+"разрешены."
msgid "Donate some money to help us keep this project alive."
msgstr "Пожертвовать деньги на поддержку этого проекта."
@@ -124,7 +135,7 @@ msgid "Download limit"
msgstr "Лимит загрузки"
msgid "Edit the complete splash text"
-msgstr ""
+msgstr "Изменение полного текста заставки"
msgid "Fair Use Policy"
msgstr "Политика добровольного использования"
@@ -136,7 +147,7 @@ msgid "General"
msgstr "Общие"
msgid "Get in %s with the operator of this access point."
-msgstr ""
+msgstr "Получить в% s с оператором этой точки доступа."
msgid "Hostname"
msgstr "Имя хоста"
@@ -154,7 +165,7 @@ msgid "If you use this network on a regular basis we ask for your support:"
msgstr "Если вы используете эту сеть регулярно, мы просим вашей поддержки:"
msgid "Include your own text in the default splash"
-msgstr ""
+msgstr "Включить собственный текст в заставку по умолчанию"
msgid "Intercept client traffic on this Interface"
msgstr "Перехватывать клиентский трафик на этом интерфейсе"
@@ -173,7 +184,7 @@ msgstr ""
"участии в этом проекте."
msgid "Legally Prohibited Activities"
-msgstr ""
+msgstr "Запрещенные законом виды деятельности"
msgid "Legally Prohibited content"
msgstr "Юридически запрещенный контент"
@@ -188,8 +199,8 @@ msgid ""
"MAC addresses of whitelisted clients. These do not need to accept the splash "
"and are not bandwidth limited."
msgstr ""
-"MAC-адреса клиентов из \"белого\" списка. Данные клиенты не имеют "
-"ограничений пропускной способности."
+"MAC-адреса клиентов из Белого списка. Данных клиентов не нужно принимать в "
+"Splash и они не имеют ограничений по пропускной способности."
msgid "Netmask"
msgstr "Маска сети"
@@ -204,14 +215,14 @@ msgid ""
"Please note that we are not an internet service provider but an experimental "
"community network."
msgstr ""
-"Пожалуйста, обратите внимание, что мы не интернет-провайдер, а "
-"экспериментальная сеть сообщества."
+"Обратите внимание, что мы не интернет-провайдер, а сообщество "
+"экспериментальной сети ."
msgid "Policy"
msgstr "Политика"
msgid "Redirect target"
-msgstr ""
+msgstr "Назначение перенаправления"
msgid "Safety"
msgstr "Безопасный"
@@ -223,44 +234,59 @@ msgid "Splash rules are integrated in this firewall zone"
msgstr "Правила Splash интегрированы в зону этого межсетевого экрана"
msgid "Splashtext"
-msgstr "Текст splash-экрана"
+msgstr "Текст Splash-экрана"
msgid ""
"The network, like the Internet, is unencrypted and open. Each participant is "
"responsible for the safety of their own connections and devices."
msgstr ""
+"Сеть, как и Интернет, не зашифрована и открыта. Каждый участник несет "
+"ответственность за безопасность своих собственных подключений и устройств."
msgid ""
"The open and free wireless network of volunteers (\"Operators\") provides "
"the necessary equipment and Internet connections (\"Infrastructure\") at "
"their own expense."
msgstr ""
+"Открытая и бесплатная беспроводная сеть волонтеров 'операторы' обеспечивает "
+"необходимое оборудование и подключение к Интернету 'инфраструктура' за свой "
+"счет."
msgid ""
"The operator claims no liability for loss of data, unauthorized access/"
"damage to devices, or financial losses that participants may suffer from the "
"use of the network."
msgstr ""
+"Оператор не несет ответственности за потерю данных, несанкционированного "
+"доступа/повреждения устройств или финансовых потерь, которые участники могут "
+"пострадать от использования сети."
msgid ""
"The participant agrees to not perform any action and refrain from acts which "
"may violate the law or infringe upon the rights of third parties."
msgstr ""
+"Участник соглашается не предпринимать никаких действий и воздерживаться от "
+"действий, которые могут нарушать закон или нарушать права третьих лиц."
msgid ""
"The participant agrees to not transfer content over the network which "
"violates the law."
-msgstr ""
+msgstr "Участник соглашается не передавать контент по сети, нарушающей закон."
msgid ""
"The participant agrees to not use the network in any way which will harm the "
"infrastructure, the network itself, its operators or other participants."
msgstr ""
+"Участник соглашается не использовать сеть любым способом, который нанесет "
+"ущерб инфраструктуре, самой сети, ее операторам или другим участникам."
msgid ""
"These Terms of Use govern the use of the network by its participants' "
"computer, PDA, or similar device (\"Devices\") within the network."
msgstr ""
+"Настоящие условия использования регулируют использование сети компьютером "
+"участников, КПК, смартфоном или аналогичным устройством 'устройствами' в "
+"сети."
msgid "Time remaining"
msgstr "Оставшееся время"
@@ -276,29 +302,28 @@ msgid "Traffic in/out"
msgstr "Трафик вх/исх"
msgid "Upload limit"
-msgstr "Лимит отдачи"
+msgstr "Предел загрузки"
msgid "Usage Agreement"
-msgstr ""
+msgstr "Соглашение об использовании"
msgid "Welcome"
msgstr "Добро пожаловать"
msgid "Whitelist"
-msgstr "\"Белый\" список"
+msgstr "Белый список"
msgid "You are now connected to the free wireless mesh network"
-msgstr "Теперь вы подключены к бесплатной беспроводной ячеистой сети"
+msgstr "Теперь вы подключены к свободной беспроводной сети Mesh."
msgid ""
"You can enter your own text that is displayed to clients here.<br />It is "
"possible to use the following markers: ###COMMUNITY###, ###COMMUNITY_URL###, "
"###CONTACTURL###, ###LEASETIME###, ###LIMIT### and ###ACCEPT###."
msgstr ""
-"Здесь вы можете указать свой текст, который будет отображаться клиентам.<br /"
-">Возможно использовать следующие маркеры: ###COMMUNITY###, "
-"###COMMUNITY_URL###, ###CONTACTURL###, ###LEASETIME###, ###LIMIT### and "
-"###ACCEPT###."
+"Здесь можно ввести собственный текст, отображаемый для клиентов.<br />Можно "
+"использовать следующие маркеры: ###COMMUNITY###, ###COMMUNITY_URL###, "
+"###CONTACTURL###, ###LEASETIME###, ###LIMIT### и ###ACCEPT###."
msgid ""
"Your access to this network has been blocked, most likely because you did "
@@ -311,7 +336,7 @@ msgid "Your bandwidth is limited to"
msgstr "Ваша полоса пропускания ограничена значением"
msgid "blacklisted"
-msgstr "в \"чёрном\" списке"
+msgstr "в Черном списке"
msgid "expired"
msgstr "истёк"
@@ -323,7 +348,7 @@ msgid "perform any kind of illegal activities"
msgstr "выполнять любые незаконные действия"
msgid "splashed"
-msgstr "уже в splash"
+msgstr "вы в Splash"
msgid "temporarily blocked"
msgstr "временно заблокирован"
@@ -338,25 +363,4 @@ msgid "waste bandwidth with unneccesary downloads or streams"
msgstr "тратить пропускную способность на ненужные загрузки или потоки"
msgid "whitelisted"
-msgstr "в \"белом\" списке"
-
-#~ msgid ""
-#~ "Hosts and Networks that are listed here are excluded from splashing, i.e. "
-#~ "they are always allowed."
-#~ msgstr ""
-#~ "Перечисленные хосты и сети не получают приглашения splash-экрана, т.е. они "
-#~ "всегда разрешены."
-
-#~ msgid "By accepting these rules you can use this network for"
-#~ msgstr "Принимая эти правила, вы можете использовать данную сеть для"
-
-#~ msgid "Edit Splash text"
-#~ msgstr "Редактировать текст splash-экрана"
-
-#~ msgid "hour(s). After this time you need to accept these rules again."
-#~ msgstr ""
-#~ "час(ы). После указанного времени Вы должны вновь принять эти правила."
-
-# Здесь наверняка нужно склонить в другом падеже, надо смотреть по контексту
-#~ msgid "the owner of this access point."
-#~ msgstr "с владельцем этой точки доступа."
+msgstr "в Белом списке"
diff --git a/applications/luci-app-statistics/po/ru/rrdtool.po b/applications/luci-app-statistics/po/ru/rrdtool.po
index a63a85080..098ed4ced 100644
--- a/applications/luci-app-statistics/po/ru/rrdtool.po
+++ b/applications/luci-app-statistics/po/ru/rrdtool.po
@@ -1,18 +1,18 @@
+# rrdtool.pot
+# generated from ./applications/luci-statistics/luasrc/i18n/rrdtool.en.lua
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-05-19 19:36+0200\n"
-"PO-Revision-Date: 2012-03-26 15:36+0200\n"
-"Last-Translator: Anonymous Pootle User\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: ru\n"
-"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: rrdtool\n"
+"POT-Creation-Date: 2017-10-17 22:00+0300\n"
+"PO-Revision-Date: 2018-01-06 01:05+0300\n"
+"Language-Team: http://cyber-place.ru\n"
+"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Pootle 2.0.4\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
#. %H: Wireless - Signal Noise Ratio
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:1
@@ -187,7 +187,7 @@ msgstr "%di"
#. %H: Process %pi - used cpu time
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:35
msgid "stat_dg_title_processes__ps_cputime"
-msgstr "%H: Процесс %pi - время ЦП"
+msgstr "%H: Процесс %pi - время CPU"
#. Jiffies
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36
@@ -197,12 +197,12 @@ msgstr "Jiffies"
#. system
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:37
msgid "stat_ds_ps_cputime__syst"
-msgstr "система"
+msgstr "Система"
#. user
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:38
msgid "stat_ds_ps_cputime__user"
-msgstr "пользователь"
+msgstr "Пользователь"
#. %H: Process %pi - threads and processes
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39
diff --git a/applications/luci-app-statistics/po/ru/statistics.po b/applications/luci-app-statistics/po/ru/statistics.po
index 9d0ff9fdf..702dbe7f8 100644
--- a/applications/luci-app-statistics/po/ru/statistics.po
+++ b/applications/luci-app-statistics/po/ru/statistics.po
@@ -1,25 +1,23 @@
msgid ""
msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
"Project-Id-Version: LuCI: statistics\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-05-19 19:36+0200\n"
-"PO-Revision-Date: 2013-12-05 17:11+0200\n"
-"Last-Translator: Dmitri <4glitch@gmail.com>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"POT-Creation-Date: 2017-10-17 22:00+0300\n"
+"PO-Revision-Date: 2018-01-06 13:32+0300\n"
+"Language-Team: http://cyber-place.ru\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Pootle 2.0.6\n"
-"X-Poedit-SourceCharset: UTF-8\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
msgid "APC UPS"
-msgstr ""
+msgstr "APC ИБП"
msgid "APCUPS Plugin Configuration"
-msgstr ""
+msgstr "Настройка плагина APCUPS"
msgid "Action (target)"
msgstr "Действие (цель)"
@@ -37,34 +35,34 @@ msgid "Add notification command"
msgstr "Добавить команду уведомления"
msgid "Aggregate number of connected users"
-msgstr ""
+msgstr "Общее число подключенных пользователей"
msgid "Base Directory"
-msgstr "Базовая директория"
+msgstr "Основная папка приложения"
msgid "Basic monitoring"
msgstr "Базовая статистика"
msgid "CPU Context Switches Plugin Configuration"
-msgstr ""
+msgstr "Настройка плагина контекстных переключателей CPU"
msgid "CPU Frequency"
-msgstr ""
+msgstr "Частота CPU"
msgid "CPU Frequency Plugin Configuration"
-msgstr ""
+msgstr "Настройка плагина частоты CPU"
msgid "CPU Plugin Configuration"
-msgstr "Конфигурация модуля CPU"
+msgstr "Настройка плагина 'CPU'"
msgid "CSV Output"
-msgstr "Вывод в CSV"
+msgstr "CSV вывод"
msgid "CSV Plugin Configuration"
-msgstr "Конфигурация модуля CSV"
+msgstr "Настройка плагина CSV"
msgid "Cache collected data for"
-msgstr "Кэшировать собранную статистику в течение"
+msgstr "Кэшировать собранную статистику в течении"
msgid "Cache flush interval"
msgstr "Интервал сброса кэша"
@@ -89,8 +87,8 @@ msgid ""
"different plugins. On this page you can change general settings for the "
"collectd daemon."
msgstr ""
-"Collectd - это сервис для сбора данных с разных модулей. На этой странице вы "
-"можете изменить настройки Сollectd."
+"Collectd - это сервис для сбора данных с разных плагинов. На этой странице "
+"вы можете изменить настройки Сollectd."
msgid "Conntrack"
msgstr "Отслеживание подключения (Conntrack)"
@@ -99,16 +97,16 @@ msgid "Conntrack Plugin Configuration"
msgstr "Настройка плагина Conntrack"
msgid "Context Switches"
-msgstr ""
+msgstr "Переключатели контекста"
msgid "DF Plugin Configuration"
-msgstr "Конфигурация модуля DF"
+msgstr "Настройка плагина DF"
msgid "DNS"
msgstr "DNS"
msgid "DNS Plugin Configuration"
-msgstr "Конфигурация модуля DNS"
+msgstr "Настройка плагина DNS"
msgid "Data collection interval"
msgstr "Интервал сбора данных"
@@ -120,56 +118,55 @@ msgid "Destination ip range"
msgstr "Диапазон IP-адресов назначения"
msgid "Directory for collectd plugins"
-msgstr "Директория с модулями collectd"
+msgstr "Папка с плагинами collectd"
msgid "Directory for sub-configurations"
-msgstr "Директория конфигураций"
+msgstr "Папка с config файлом"
msgid "Disk Plugin Configuration"
-msgstr "Конфигурация модуля Disk"
+msgstr "Настройка плагина Disk"
msgid "Disk Space Usage"
-msgstr "Использование диска"
+msgstr "Использовано места на диске"
msgid "Disk Usage"
msgstr "Использование диска"
msgid "Display Host »"
-msgstr "Показать узел »"
+msgstr "Показать хост »"
msgid "Display timespan »"
msgstr "Показать за промежуток »"
msgid "E-Mail Plugin Configuration"
-msgstr "Конфигурация модуля E-Mail"
+msgstr "Настройка плагина E-Mail"
msgid "Email"
msgstr "E-mail"
msgid "Empty value = monitor all"
-msgstr ""
+msgstr "Если пусто = monitor all"
msgid "Enable this plugin"
-msgstr "Включить этот модуль"
+msgstr "Включить этот плагин"
msgid "Entropy"
-msgstr ""
+msgstr "Entropy"
msgid "Entropy Plugin Configuration"
-msgstr ""
+msgstr "Настройка плагина Entropy"
msgid "Exec"
msgstr "Exec"
msgid "Exec Plugin Configuration"
-msgstr "Конфигурация модуля Exec"
+msgstr "Настройка плагина Exec"
-#, fuzzy
msgid "Filter class monitoring"
-msgstr "Мониторинг классов фильтров"
+msgstr "Мониторинг класса фильтров"
msgid "Firewall"
-msgstr "Firewall"
+msgstr "Фаервол"
msgid "Flush cache after"
msgstr "Сбросить кэш после"
@@ -178,13 +175,13 @@ msgid "Forwarding between listen and server addresses"
msgstr "Перенаправление между локальным адресом и адресом сервера"
msgid "Gather compression statistics"
-msgstr ""
+msgstr "Сбор статистики сжатия"
msgid "General plugins"
-msgstr ""
+msgstr "Основные плагины"
msgid "Generate a separate graph for each logged user"
-msgstr ""
+msgstr "Создать отдельный график для каждого пользователя"
msgid "Graphs"
msgstr "Графики"
@@ -196,27 +193,30 @@ msgid ""
"Here you can define external commands which will be started by collectd in "
"order to read certain values. The values will be read from stdout."
msgstr ""
-"Здесь вы можете определить внешние команды, которые будут выполнены для "
-"чтения определённых значений. Значения будут считаны со стандартного вывода."
+"На странице вы можете определить внешние команды, которые будут выполнены "
+"для чтения определенных значений. Значения будут считаны со стандартного "
+"вывода."
msgid ""
"Here you can define external commands which will be started by collectd when "
"certain threshold values have been reached. The values leading to invokation "
"will be feeded to the the called programs stdin."
msgstr ""
-"Здесь вы можете определить внешние команды, которые будут выполнены, когда "
-"значения достигнут определённого порога. Значения будут переданы на "
+"На странице вы можете определить внешние команды, которые будут выполнены, "
+"когда значения достигнут определенного порога. Значения будут переданы на "
"стандартный ввод вызванным программам."
msgid ""
"Here you can define various criteria by which the monitored iptables rules "
"are selected."
msgstr ""
-"Здесь вы можете указать различные критерии, по которым будут выбраны правила "
-"для сбора статистики."
+"На странице вы можете указать различные критерии, по которым будут выбраны "
+"правила для сбора статистики."
msgid "Hold Ctrl to select multiple items or to deselect entries."
msgstr ""
+"Удерживая нажатой клавишу Ctrl, выберите несколько элементов или отмените "
+"выбор записей."
msgid "Host"
msgstr "Хост"
@@ -228,16 +228,16 @@ msgid "IP or hostname where to get the txtinfo output from"
msgstr "IP-адрес или имя хоста, с которых получать текстовый вывод"
msgid "IRQ Plugin Configuration"
-msgstr "Конфигурация модуля IRQ"
+msgstr "Настройка плагина IRQ"
msgid "Ignore source addresses"
-msgstr "Игнорировать адреса-источники"
+msgstr "Игнорировать исходящие адреса"
msgid "Incoming interface"
msgstr "Входящий интерфейс"
msgid "Interface Plugin Configuration"
-msgstr "Конфигурация модуля Interface"
+msgstr "Настройка плагина 'Интерфейсы'"
msgid "Interfaces"
msgstr "Интерфейсы"
@@ -249,7 +249,7 @@ msgid "Interval for pings"
msgstr "Интервал для ping-запросов"
msgid "Iptables Plugin Configuration"
-msgstr "Конфигурация модуля Iptables"
+msgstr "Настройка плагина Iptables"
msgid "Leave unselected to automatically determine interfaces to monitor."
msgstr ""
@@ -257,30 +257,32 @@ msgstr ""
"мониторинга."
msgid "Listen host"
-msgstr "Хост"
+msgstr "Слушать хост"
msgid "Listen port"
-msgstr "Порт"
+msgstr "Слушать порт"
msgid "Listener interfaces"
-msgstr "Использовать интерфейсы"
+msgstr "Прослушивать интерфейсы"
msgid "Load Plugin Configuration"
-msgstr "Конфигурация модуля Load"
+msgstr "Настройка плагина 'Загрузка системы'"
msgid ""
"Max values for a period can be used instead of averages when not using 'only "
"average RRAs'"
msgstr ""
+"Максимальные значения для периода, могут использоваться вместо средних "
+"значений, когда не используется 'only average RRAs'"
msgid "Maximum allowed connections"
-msgstr "Максимальное число соединений"
+msgstr "Максимум разрешенных соединений"
msgid "Memory"
msgstr "Память"
msgid "Memory Plugin Configuration"
-msgstr "Конфигурация модуля Memory"
+msgstr "Настройка плагина 'Память'"
msgid "Monitor all except specified"
msgstr "Собирать статистику со всех, кроме указанных"
@@ -289,61 +291,61 @@ msgid "Monitor all local listen ports"
msgstr "Собирать статистику со всех портов, ожидающих соединения"
msgid "Monitor all sensors"
-msgstr ""
+msgstr "Мониторить все сенсоры"
msgid "Monitor device(s) / thermal zone(s)"
-msgstr ""
+msgstr "Мониторить устройство(а) / зону(ы) нагрева"
msgid "Monitor devices"
-msgstr "Собирать статистику с устройств"
+msgstr "Мониторить устройства"
msgid "Monitor disks and partitions"
-msgstr "Собирать статистику с дисков и разделов"
+msgstr "Мониторить диски и разделы"
msgid "Monitor filesystem types"
-msgstr "Собирать статистику с файловых систем"
+msgstr "Монитоить типы файловых систем"
msgid "Monitor host"
-msgstr ""
+msgstr "Мониторить хост"
msgid "Monitor hosts"
-msgstr "Собирать статистику с хостов"
+msgstr "Мониторить хосты"
msgid "Monitor interfaces"
-msgstr "Собирать статистику с интерфейсов"
+msgstr "Мониторить интерфейсы"
msgid "Monitor interrupts"
-msgstr "Собирать статистику по прерываниям"
+msgstr "Мониторить прерывания"
msgid "Monitor local ports"
-msgstr "Собирать статистику с локальных портов"
+msgstr "Мониторить локальные порты"
msgid "Monitor mount points"
-msgstr "Собирать статистику с точек монтирования"
+msgstr "Мониторить точки монтирования"
msgid "Monitor processes"
-msgstr "Собирать статистику с процессов"
+msgstr "Мониторить процессы"
msgid "Monitor remote ports"
-msgstr "Собирать статистику с удалённых портов"
+msgstr "Мониторить удаленные порты"
msgid "Name of the rule"
-msgstr "Название правила"
+msgstr "Имя правила"
msgid "Netlink"
msgstr "Netlink"
msgid "Netlink Plugin Configuration"
-msgstr "Конфигурация модуля Netlink"
+msgstr "Настройка плагина 'Netlink'"
msgid "Network"
msgstr "Network"
msgid "Network Plugin Configuration"
-msgstr "Конфигурация модуля Network"
+msgstr "Настройка плагина 'Сеть'"
msgid "Network plugins"
-msgstr "Сетевые модули"
+msgstr "Сетевые плагины"
msgid "Network protocol"
msgstr "Сетевой протокол"
@@ -352,6 +354,8 @@ msgid ""
"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
"directory and all its parent directories need to be world readable."
msgstr ""
+"Внимание: все операции осуществляются под пользователем 'nobody', "
+"соответственно все файлы *.rrd и папки будут доступны любому пользователю."
msgid "Number of threads for data collection"
msgstr "Количество потоков сбора данных"
@@ -366,69 +370,67 @@ msgid "Only create average RRAs"
msgstr "Создавать только средние RRA"
msgid "OpenVPN"
-msgstr ""
+msgstr "OpenVPN"
msgid "OpenVPN Plugin Configuration"
-msgstr ""
+msgstr "Настройка плагина OpenVPN"
msgid "OpenVPN status files"
-msgstr ""
+msgstr "Состояние файлов OpenVPN"
msgid "Options"
-msgstr "Опции"
+msgstr "Настройки"
msgid "Outgoing interface"
msgstr "Исходящий интерфейс"
msgid "Output plugins"
-msgstr "Модули вывода"
+msgstr "Плагины вывода"
msgid "Ping"
msgstr "Ping"
msgid "Ping Plugin Configuration"
-msgstr "Конфигурация модуля Ping"
+msgstr "Настройка плагина Ping"
msgid "Port"
msgstr "Порт"
msgid "Port for apcupsd communication"
-msgstr ""
+msgstr "Порт для связи apcupsd"
msgid "Processes"
msgstr "Процессы"
msgid "Processes Plugin Configuration"
-msgstr "Конфигурация модуля Processes"
+msgstr "Настройка плагина Processes"
msgid "Processes to monitor separated by space"
msgstr "Процессы для мониторинга (разделённые пробелом)"
msgid "Processor"
-msgstr "Processor"
+msgstr "CPU"
msgid "Qdisc monitoring"
msgstr "Мониторинг Qdisc"
-#, fuzzy
msgid "RRD XFiles Factor"
-msgstr "Фактор XFiles RRD"
+msgstr "RRD XFiles Factor"
-#, fuzzy
msgid "RRD heart beat interval"
-msgstr "Интервал heartbeat RRD"
+msgstr "RRD heartbeat interval"
msgid "RRD step interval"
-msgstr "Интервал шага RRD"
+msgstr "RRD step interval"
msgid "RRDTool"
msgstr "RRDTool"
msgid "RRDTool Plugin Configuration"
-msgstr "Конфигурация модуля RRDTool"
+msgstr "Настройка плагина 'RRDTool'"
msgid "Rows per RRA"
-msgstr "Количество строк в RRA"
+msgstr "Rows per RRA"
msgid "Script"
msgstr "Скрипт"
@@ -437,13 +439,13 @@ msgid "Seconds"
msgstr "Секунды"
msgid "Sensor list"
-msgstr ""
+msgstr "Список сенсоров"
msgid "Sensors"
-msgstr ""
+msgstr "Сенсоры"
msgid "Sensors Plugin Configuration"
-msgstr ""
+msgstr "Настройка плагина сенсоров"
msgid "Server host"
msgstr "Хост сервера"
@@ -452,13 +454,13 @@ msgid "Server port"
msgstr "Порт сервера"
msgid "Setup"
-msgstr ""
+msgstr "Настройка"
msgid "Shaping class monitoring"
-msgstr "Мониторинг классов шейпинга"
+msgstr "Мониторинг классов Shaping"
msgid "Show max values instead of averages"
-msgstr ""
+msgstr "Показывают максимальные значения, а не средние"
msgid "Socket file"
msgstr "Файл сокета"
@@ -482,19 +484,19 @@ msgid "Specifies what information to collect about the global topology."
msgstr "Указывает, какую информацию собирать о глобальной топологии."
msgid "Splash Leases"
-msgstr ""
+msgstr "Splash Leases"
msgid "Splash Leases Plugin Configuration"
-msgstr ""
+msgstr "Настройка плагина Splash Leases"
msgid "Statistics"
msgstr "Статистика"
msgid "Storage directory"
-msgstr "Директория с данными"
+msgstr "Папка с данными"
msgid "Storage directory for the csv files"
-msgstr "Директория для CSV-файлов"
+msgstr "Папка для CSV-файлов"
msgid "Store data values as rates instead of absolute values"
msgstr "Хранить данные в виде коэффициентов вместо абсолютных значений"
@@ -509,7 +511,7 @@ msgid "TCP Connections"
msgstr "TCPConns"
msgid "TCPConns Plugin Configuration"
-msgstr "Конфигурация модуля TCPConns"
+msgstr "Настройка плагина TCPConns"
msgid "TTL for network packets"
msgstr "TTL для сетевых пакетов"
@@ -521,56 +523,58 @@ msgid "Table"
msgstr "Таблица"
msgid "The APCUPS plugin collects statistics about the APC UPS."
-msgstr ""
+msgstr "Плагин 'APCUPS' собирает статистику об ИБП APC."
msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
msgstr ""
+"Плагин 'NUT' считывает информацию об источниках бесперебойного питания."
msgid ""
"The OLSRd plugin reads information about meshed networks from the txtinfo "
"plugin of OLSRd."
msgstr ""
-"Модуль OLSRd считывает информацию о узловых сетях с модуля txtinfo OLSRd."
+"Плагин 'OLSRd' считывает информацию о узловых сетях с плагина txtinfo OLSRd."
msgid ""
"The OpenVPN plugin gathers information about the current vpn connection "
"status."
msgstr ""
+"Плагин 'OpenVPN' собирает информацию о текущем состоянии VPN подключения."
msgid ""
"The conntrack plugin collects statistics about the number of tracked "
"connections."
msgstr ""
-"Модуль Conntrack собирает статистику о количестве отслеживаемых соединений."
+"Плагин 'Conntrack' собирает статистику о количестве отслеживаемых соединений."
msgid "The cpu plugin collects basic statistics about the processor usage."
-msgstr "Модуль CPU собирает статистику по использованию процессора."
+msgstr "Плагин 'CPU' собирает статистику об использовании процессора."
msgid ""
"The csv plugin stores collected data in csv file format for further "
"processing by external programs."
msgstr ""
-"Модуль CSV позволяет сохранить статистику в формате CSV для последующей "
+"Плагин 'CSV' позволяет сохранить статистику в формате CSV для последующей "
"обработки."
msgid ""
"The df plugin collects statistics about the disk space usage on different "
"devices, mount points or filesystem types."
msgstr ""
-"Модуль DF собирает статистику о доступном пространстве на различных "
+"Плагин 'DF' собирает статистику о доступном пространстве на различных "
"устройствах, точках монтирования или файловых системах."
msgid ""
"The disk plugin collects detailled usage statistics for selected partitions "
"or whole disks."
msgstr ""
-"Модуль Disk собирает подробную статистику для выбранных разделов или дисков."
+"Плагин 'Disk' собирает подробную статистику по выбранным разделам или дискам."
msgid ""
"The dns plugin collects detailled statistics about dns related traffic on "
"selected interfaces."
msgstr ""
-"Модуль DNS собирает подробную статистику о DNS-трафике на выбранных "
+"Плагин 'DNS' собирает подробную статистику о DNS трафике на выбранных "
"интерфейсах."
msgid ""
@@ -579,55 +583,58 @@ msgid ""
"to be used in conjunction with Mail::SpamAssasin::Plugin::Collectd but can "
"be used in other ways as well."
msgstr ""
-"Модуль E-mail создает Unix-сокет, который может быть использован для "
-"передачи статистики эл. почты работающему сервису collectd. В основном, этот "
-"модуль предназначен для использования вместе с Mail::SpamAssasin::Plugin::"
+"Плагин 'E-mail' создает Unix-сокет, который может быть использован для "
+"передачи статистики email работающему сервису collectd. В основном, этот "
+"плагин предназначен для использования вместе с Mail::SpamAssasin::Plugin::"
"Collectd."
msgid "The entropy plugin collects statistics about the available entropy."
-msgstr ""
+msgstr "Плагин 'Entropy' собирает статистику о доступной энтропии."
msgid ""
"The exec plugin starts external commands to read values from or to notify "
"external processes when certain threshold values have been reached."
msgstr ""
-"Модуль Exec выполняет внешнюю команду в случае, когда определённые значения "
-"достигают заданного порога."
+"Плагин 'Exec' выполняет внешнюю команду в случае, когда определенные "
+"значения достигают заданного порога."
msgid ""
"The interface plugin collects traffic statistics on selected interfaces."
-msgstr "Модуль Interface собирает статистику на выбранных сетевых интерфейсах."
+msgstr ""
+"Плагин 'Интерфейсы' собирает статистику на выбранных сетевых интерфейсах."
msgid ""
"The iptables plugin will monitor selected firewall rules and collect "
"informations about processed bytes and packets per rule."
msgstr ""
-"Модуль Iptables собирает статистику с определённых правил межсетевого экрана."
+"Плагин 'Iptables' собирает статистику с определенных правил межсетевого "
+"экрана."
msgid ""
"The irq plugin will monitor the rate of issues per second for each selected "
"interrupt. If no interrupt is selected then all interrupts are monitored."
msgstr ""
-"Модуль IRQ собирает статистику по выбранным прерываниям. Если ни одно "
+"Плагин 'IRQ' собирает статистику по выбранным прерываниям. Если ни одно "
"прерывание не выбрано, сбор статистики будет проводиться по всем прерываниям."
msgid ""
"The iwinfo plugin collects statistics about wireless signal strength, noise "
"and quality."
msgstr ""
-"Модуль Iwinfo собирает статистику о беспроводном сигнале, шуме и качестве."
+"Плагин 'Беспроводные соединения' собирает статистику о беспроводном сигнале, "
+"шуме и качестве."
msgid "The load plugin collects statistics about the general system load."
-msgstr "Модуль Load собирает статистику о загрузке системы."
+msgstr "Плагин 'Загрузка системы' собирает статистику о загрузке системы."
msgid "The memory plugin collects statistics about the memory usage."
-msgstr "Модуль Memory собирает статистику об использовании памяти."
+msgstr "Плагин 'Память' собирает статистику об использовании памяти."
msgid ""
"The netlink plugin collects extended informations like qdisc-, class- and "
"filter-statistics for selected interfaces."
msgstr ""
-"Модуль Netlink собирает расширенную статистику с выбранных интерфейсов."
+"Плагин 'Netlink' собирает расширенную статистику с выбранных интерфейсов."
msgid ""
"The network plugin provides network based communication between different "
@@ -635,23 +642,24 @@ msgid ""
"client mode locally collected data is transferred to a collectd server "
"instance, in server mode the local instance receives data from other hosts."
msgstr ""
-"Модуль Network предоставляет возможность сетевого обмена данными между "
+"Плагин 'Сеть' предоставляет возможность сетевого обмена данными между "
"разными сервисами collectd. Collectd может работать в режиме сервера или "
"клиента. В режиме клиента, локальная статистика передается collectd-серверу, "
-"в режиме сервера collectd собирает статистику с удалённых хостов."
+"в режиме сервера collectd собирает статистику с удаленных хостов."
msgid ""
"The ping plugin will send icmp echo replies to selected hosts and measure "
"the roundtrip time for each host."
msgstr ""
-"Модуль Ping посылает ICMP-запросы выбранным хостам и измеряет время отклика."
+"Плагин 'Ping' посылает ICMP-запросы выбранным хостам и измеряет время "
+"отклика."
msgid ""
"The processes plugin collects informations like cpu time, page faults and "
"memory usage of selected processes."
msgstr ""
-"Модуль Processes собирает статистику для выбранных процессов об "
-"использовании ЦП, ошибках обращения к страницам памяти, использовании памяти."
+"Плагин 'Processes' собирает информацию, такую как время CPU, ошибки страницы "
+"и использование памяти выбранных процессов."
msgid ""
"The rrdtool plugin stores the collected data in rrd database files, the "
@@ -659,61 +667,70 @@ msgid ""
"values will result in a very high memory consumption in the temporary "
"directory. This can render the device unusable!</strong>"
msgstr ""
-"Модуль Rrdtool сохраняет статистику в формате rrd для последующего "
+"Плагин 'Rrdtool' сохраняет статистику в формате rrd для последующего "
"построения диаграмм.<br /><br /><strong>Внимание: установка неверных "
-"параметров может привезти к высокому потреблению памяти во временной "
-"директории. Это, в свою очередь, может привести к отказу устройства!</strong>"
+"параметров может привезти к высокому потреблению памяти при считывании "
+"данных из temp. Что в свою очередь, может привести к зависанию устройства!</"
+"strong>"
msgid ""
"The sensors plugin uses the Linux Sensors framework to gather environmental "
"statistics."
msgstr ""
+"Плагин 'Sensors' использует сенсоры Linux, чтобы собрать статистику "
+"состояния устройства."
msgid ""
"The splash leases plugin uses libuci to collect statistics about splash "
"leases."
-msgstr ""
+msgstr "Плагин 'Splash' использует libuci для сбора статистики работы splash."
msgid ""
"The statistics package uses <a href=\"https://collectd.org/\">Collectd</a> "
"to gather data and <a href=\"http://oss.oetiker.ch/rrdtool/\">RRDtool</a> to "
"render diagram images."
msgstr ""
+"Страница 'Статистика' использует <a href=\"https://collectd.org/\">Collectd</"
+"a> для сбора данных и <a href=\"http://oss.oetiker.ch/rrdtool/\">RRDtool</a> "
+"для от рисовки графиков."
msgid ""
"The tcpconns plugin collects informations about open tcp connections on "
"selected ports."
msgstr ""
-"Модуль TCPConns собирает информацию об открытых TCP-соединениях на выбранных "
-"портах."
+"Плагин 'TCPConns' собирает информацию об открытых TCP соединениях на "
+"выбранных портах."
msgid ""
"The thermal plugin will monitor temperature of the system. Data is typically "
"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be "
"read, e.g. thermal_zone1 )"
msgstr ""
+"Плагин 'Thermal', будет контролировать температурные сенсоры. Данные будут "
+"считываются из /sys/class/thermal/*/temp ( '*' обозначает сенсор "
+"устройства , как-то thermal_zone1 )"
msgid ""
"The unixsock plugin creates a unix socket which can be used to read "
"collected data from a running collectd instance."
msgstr ""
-"Модуль UnixSock создает Unix-сокет, который может быть использован для "
+"Плагин 'UnixSock' создает Unix-сокет, который может быть использован для "
"получения статистики от работающего сервиса collectd."
msgid "The uptime plugin collects statistics about the uptime of the system."
-msgstr ""
+msgstr "Плагин 'Uptime' собирает статистику о времени работы системы."
msgid "Thermal"
-msgstr ""
+msgstr "Thermal"
msgid "Thermal Plugin Configuration"
-msgstr ""
+msgstr "Настройка плагина Thermal"
msgid "This plugin collects statistics about the processor context switches."
-msgstr ""
+msgstr "Данный плагин собирает статистику о переключение контекста процессора."
msgid "This plugin collects statistics about the processor frequency scaling."
-msgstr ""
+msgstr "Этот плагин собирает статистику о частоте процессора масштабирования."
msgid ""
"This section defines on which interfaces collectd will wait for incoming "
@@ -735,26 +752,25 @@ msgid "UPS"
msgstr "ИБП"
msgid "UPS Plugin Configuration"
-msgstr "Настройка плагина ИБП"
+msgstr "Настройка плагина UPS"
-#, fuzzy
msgid "UPS name in NUT ups@host format"
-msgstr "Имя ИБП в ups@host NUT-формате"
+msgstr "Имя ИБП в формате NUT ups@host"
msgid "UnixSock"
msgstr "UnixSock"
msgid "Unixsock Plugin Configuration"
-msgstr "Конфигурация модуля UnixSock"
+msgstr "Настройка плагина UnixSock"
msgid "Uptime"
-msgstr ""
+msgstr "Uptime"
msgid "Uptime Plugin Configuration"
-msgstr ""
+msgstr "Настройка плагина Uptime"
msgid "Use improved naming schema"
-msgstr ""
+msgstr "Используйте улучшенную схему наименования"
msgid "Used PID file"
msgstr "Используемый PID-файл"
@@ -766,14 +782,16 @@ msgid "Verbose monitoring"
msgstr "Расширенная статистика"
msgid "Wireless"
-msgstr "Wireless"
+msgstr "Беспроводные соединения"
msgid "Wireless iwinfo Plugin Configuration"
-msgstr "Конфигурация модуля Iwinfo"
+msgstr "Настройка плагина 'Беспроводные соединения'"
msgid ""
"You can install additional collectd-mod-* plugins to enable more statistics."
msgstr ""
+"Вы можете установить плагины collectd-mod-* для включения дополнительной "
+"статистики."
msgid "e.g. br-ff"
msgstr "напр. br-ff"
@@ -790,64 +808,8 @@ msgstr "не более 16 символов"
msgid "reduces rrd size"
msgstr "уменьшает размер rrd"
-#, fuzzy
msgid "seconds; multiple separated by space"
-msgstr "секунды; разделяются пробелом"
+msgstr "секунд; значения разделенные пробелом"
msgid "server interfaces"
msgstr "интерфейсы сервера"
-
-#~ msgid "Collectd"
-#~ msgstr "Collectd"
-
-#~ msgid "System plugins"
-#~ msgstr "Системные модули"
-
-#~ msgid ""
-#~ "The statistics package is based on <a href=\"http://collectd.org/index."
-#~ "shtml\">Collectd</a> and uses <a href=\"http://oss.oetiker.ch/rrdtool/"
-#~ "\">RRD Tool</a> to render diagram images from collected data."
-#~ msgstr ""
-#~ "Данная статистика основана на программе <a href=\"http://collectd.org/"
-#~ "index.shtml\">Collectd</a> и использует <a href=\"http://oss.oetiker.ch/"
-#~ "rrdtool/\">RRD Tool</a> для построения диаграмм."
-
-#~ msgid "Installed network plugins:"
-#~ msgstr "Установленные сетевые модули:"
-
-#~ msgid "Installed output plugins:"
-#~ msgstr "Установленные модули вывода:"
-
-#~ msgid ""
-#~ "Network plugins are used to collect information about open tcp "
-#~ "connections, interface traffic, iptables rules etc."
-#~ msgstr ""
-#~ "Сетевые модули используются для сбора информации об открытых TCP-"
-#~ "соединениях, трафике, правилах iptables и т.п."
-
-#~ msgid ""
-#~ "Output plugins provide different possibilities to store collected data. "
-#~ "It is possible to enable multiple plugin at one, for example to store "
-#~ "collected data in rrd databases and to transmit the data over the network "
-#~ "to other collectd instances."
-#~ msgstr ""
-#~ "Модули вывода обеспечивают различные варианты сохранения собранных "
-#~ "данных. Можно включить несколько модулей, например, чтобы сохранить "
-#~ "собранные данные в базе данных RRD и передать их по сети другим "
-#~ "инстанциям collectd."
-
-#~ msgid ""
-#~ "System plugins collecting values about system state and ressource usage "
-#~ "on the device.:"
-#~ msgstr ""
-#~ "Системные модули, собирающие данные о состоянии системы и использовании "
-#~ "ресурсов устройства:"
-
-#~ msgid ""
-#~ "The wireless plugin collects statistics about wireless signal strength, "
-#~ "noise and quality."
-#~ msgstr ""
-#~ "Модуль Wireless собирает статистику о силе, шуме и качестве сигнала."
-
-#~ msgid "Wireless Plugin Configuration"
-#~ msgstr "Конфигурация модуля Wireless"
diff --git a/applications/luci-app-tinyproxy/po/ru/tinyproxy.po b/applications/luci-app-tinyproxy/po/ru/tinyproxy.po
index f9a3c23d1..1e177f7c9 100644
--- a/applications/luci-app-tinyproxy/po/ru/tinyproxy.po
+++ b/applications/luci-app-tinyproxy/po/ru/tinyproxy.po
@@ -1,82 +1,80 @@
msgid ""
msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
"Project-Id-Version: LuCI: tinyproxy\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-05-19 19:36+0200\n"
-"PO-Revision-Date: 2012-08-15 20:24+0300\n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"POT-Creation-Date: 2012-08-15 20:24+0300\n"
+"PO-Revision-Date: 2018-01-08 17:50+0300\n"
+"Language-Team: http://cyber-place.ru\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Pootle 2.0.4\n"
-"X-Poedit-SourceCharset: UTF-8\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
msgid ""
"<em>Via proxy</em> routes requests to the given target via the specifed "
"upstream proxy, <em>Reject access</em> disables any upstream proxy for the "
"target"
msgstr ""
-"<em>Через прокси</em> перенаправляет запросы на заданные узлы через "
-"указанный прокси, <em>Отклонять доступ</em> отключает использование прокси "
-"для всех узлов"
+"<em>'Через прокси'</em> перенаправляет запросы на заданные узлы через "
+"указанный восходящий прокси-сервер, <em>'Отклонять доступ'</em> отключает "
+"использование прокси-сервер для всех узлов."
msgid ""
"Adds an \"X-Tinyproxy\" HTTP header with the client IP address to forwarded "
"requests"
msgstr ""
-"Добавляет HTTP-заголовок \"X-Tinyproxy\" с IP-адресом клиента ко всем "
-"перенаправленным запросам"
+"Добавляет HTTP-заголовок 'X-Tinyproxy' с IP-адресом клиента ко всем "
+"перенаправленным запросам."
msgid "Allowed clients"
-msgstr "Разрешённые клиенты"
+msgstr "Разрешенные клиенты"
msgid "Allowed connect ports"
-msgstr "Разрешённые порты подключения"
+msgstr "Разрешенные порты подключения"
msgid "Bind address"
-msgstr "Адрес привязки"
+msgstr "Привязка адреса"
msgid ""
"By default, basic POSIX expressions are used for filtering. Enable this to "
"activate extended regular expressions"
msgstr ""
-"Разрешить использование расширенных регулярных выражений для фильтрации. По "
-"умолчанию, используются базовые POSIX-выражения"
+"По умолчанию для фильтрации используются базовые POSIX-выражения. Включить "
+"эту функцию для активации расширенных регулярных выражений."
msgid ""
"By default, filter strings are treated as case-insensitive. Enable this to "
"make the matching case-sensitive"
msgstr ""
-"По умолчанию, строки фильтрации регистро-независимы. Включите эту опцию, "
-"чтобы сделать сравнение регистро-зависимым"
+"По умолчанию строки фильтрации регистро-независимы. Включите эту опцию, "
+"чтобы сделать сравнение регистро-зависимым."
msgid ""
"By default, filtering is done based on domain names. Enable this to match "
"against URLs instead"
msgstr ""
-"По умолчанию, фильтрация выполняется на основе имени домена. Включите эту "
-"опцию, чтобы фильтровать при помощи URL"
+"По умолчанию фильтрация выполняется на основе доменных имен. Включите это "
+"для сопоставления с URL-адресами."
msgid ""
"By default, the filter rules act as blacklist. Enable this option to only "
"allow matched URLs or domain names"
msgstr ""
-"По умолчанию, фильтрация работает в режиме чёрного списка. Включите эту "
-"опцию, чтобы разрешить только опредёленные URL или доменные имена"
+"По умолчанию правила фильтрации действуют как Черный список. Включите эту "
+"опцию, чтобы разрешить только совпадающие URL-адреса или имена доменов."
msgid ""
"Can be either an IP address or range, a domain name or \".\" for any host "
"without domain"
msgstr ""
-"Может быть IP-адресом, диапазоном, именем домена или \".\" для любого хоста "
+"Может быть IP-адресом, диапазоном, именем домена или '.' для любого хоста "
"без домена"
msgid "Configuration"
-msgstr "Конфигурация"
+msgstr "Настройка"
msgid "Connection timeout"
msgstr "Таймаут соединения"
@@ -91,34 +89,34 @@ msgid "Error page"
msgstr "Страница ошибки"
msgid "Failed to retrieve statistics from url:"
-msgstr "Ошибка получения статистики по URL:"
+msgstr "Не удалось получить статистику по URL-адресу:"
msgid "Filter by RegExp"
-msgstr "Фильтровать при помощи регулярных выражений"
+msgstr "Фильтровать по регулярным выражениям (RegExp)"
msgid "Filter by URLs"
-msgstr "Фильтровать по URL"
+msgstr "Фильтровать по URL-адресам"
msgid "Filter case-sensitive"
-msgstr "Фильтровать с учётом регистра"
+msgstr "Фильтровать с учетом регистра"
msgid "Filter file"
msgstr "Файл фильтрации"
msgid "Filtering and ACLs"
-msgstr "Фильтрация и ACL"
+msgstr "Фильтрация и ACL-ы"
msgid "General settings"
-msgstr "Общие настройки"
+msgstr "Основные настройки"
msgid "Group"
msgstr "Группа"
msgid "HTML template file to serve for stat host requests"
-msgstr "HTML-шаблон для статистики хостов"
+msgstr "HTML-файл шаблона для вывода статистики хостов."
msgid "HTML template file to serve when HTTP errors occur"
-msgstr "HTML-шаблон для вывода ошибок HTTP"
+msgstr "HTML-файл шаблона для вывода ошибок HTTP."
msgid "Header whitelist"
msgstr "Белый список заголовков"
@@ -126,32 +124,32 @@ msgstr "Белый список заголовков"
msgid ""
"List of IP addresses or ranges which are allowed to use the proxy server"
msgstr ""
-"Список или диапазон IP-адресов, которым разрешено использовать прокси-сервер"
+"Список или диапазон IP-адресов, которым разрешено использовать прокси-сервер."
msgid ""
"List of allowed ports for the CONNECT method. A single value \"0\" allows "
"all ports"
msgstr ""
-"Список разрешённых портов для метода CONNECT. Значение \"0\" разрешает все "
-"порты"
+"Список разрешенных портов для опции 'CONNECT'. Значение '0' разрешает все "
+"порты."
msgid "Listen address"
-msgstr "Адрес"
+msgstr "Слушать адрес"
msgid "Listen port"
-msgstr "Порт"
+msgstr "Слушать порт"
msgid "Log file"
-msgstr "Файл журналирования"
+msgstr "Файл системного журнала"
msgid "Log file to use for dumping messages"
-msgstr "Файл для записи сообщений"
+msgstr "Файл системного журнала, используемый для сброса сообщений"
msgid "Log level"
-msgstr "Уровень журналирования"
+msgstr "Настройка журналирования"
msgid "Logging verbosity of the Tinyproxy process"
-msgstr "Уровень подробности журналирования процесса Tinyproxy"
+msgstr "Настройка подробного журналирования процессов Tinyproxy."
msgid "Max. clients"
msgstr "Макс. кол-во клиентов"
@@ -163,34 +161,37 @@ msgid "Max. spare servers"
msgstr "Макс. кол-во серверов ожидания"
msgid "Maximum allowed number of concurrently connected clients"
-msgstr "Максимально допустимое количество одновременно подключенных клиентов"
+msgstr "Максимально допустимое число параллельно подключенных клиентов."
msgid ""
"Maximum allowed number of requests per process. If it is exeeded, the "
"process is restarted. Zero means unlimited."
msgstr ""
-"Максимально допустимое количество запросов на процесс. Если превышено, "
-"процесс будет перезапущен. Ноль отключает данное ограничение."
+"Максимальное допустимое число запросов для каждого процесса. Если превышено, "
+"процесс будет перезапущен. Ноль означает неограниченное."
msgid "Maximum number of prepared idle processes"
-msgstr "Максимальное количество готовых к обработке процессов"
+msgstr "Максимальное количество подготовленных бездействующих процессов"
msgid "Maximum number of seconds an inactive connection is held open"
msgstr ""
"Максимальное количество секунд, в течение которых неактивное соединение "
-"остаётся открытым"
+"удерживается открытым."
msgid "Min. spare servers"
-msgstr "Мин. кол-во серверов ожидания"
+msgstr "Мин. количество серверов ожидания"
msgid "Minimum number of prepared idle processes"
-msgstr "Минимальное количество готовых к обработке процессов"
+msgstr "Минимальное количество подготовленных бездействующих процессов"
msgid "Number of idle processes to start when launching Tinyproxy"
-msgstr "Количество готовых к обработке процессов при старте Tinyproxy"
+msgstr ""
+"Количество бездействующих процессов, запускаемых при запуске Tinyproxy."
msgid "Plaintext file with URLs or domains to filter. One entry per line"
-msgstr "Файл с URL или доменами для фильтрации. Одна запись на строку"
+msgstr ""
+"Текстовый файл с URL-адресами или доменами для фильтрации. Одна запись - "
+"одна строка."
msgid "Policy"
msgstr "Политика"
@@ -211,25 +212,25 @@ msgid ""
"Specifies HTTP header names which are allowed to pass-through, all others "
"are discarded. Leave empty to disable header filtering"
msgstr ""
-"Определяет HTTP-заголовки, которым разрешено проходить через прокси. "
-"Оставьте пустым, чтобы не фильтровать заголовки"
+"Определяет имена HTTP-заголовков, которые разрешено передавать, все "
+"остальные отбрасываются. Оставьте пустым, чтобы отключить фильтрацию "
+"заголовков."
msgid "Specifies the HTTP port Tinyproxy is listening on for requests"
-msgstr "Определяет порт HTTP, на котором Tinyproxy ожидает запросы"
+msgstr "Указывает HTTP-порт Tinyproxy, который прослушивает запросы"
msgid "Specifies the Tinyproxy hostname to use in the Via HTTP header"
msgstr ""
-"Определяет имя хоста Tinyproxy, которое будет использовано в HTTP-заголовке "
-"Via"
+"Определяет имя хоста Tinyproxy, которое будет использовано в HTTP-заголовке."
msgid ""
"Specifies the address Tinyproxy binds to for outbound forwarded requests"
msgstr ""
-"Определяет адрес, к которому привязывается Tinyproxy для отправки исходящих "
-"запросов"
+"Определяет адрес, к которому привязывается Tinyproxy для отправки "
+"перенаправленных исходящих запросов."
msgid "Specifies the addresses Tinyproxy is listening on for requests"
-msgstr "Определяет адрес, на котором Tinyproxy ожидает запросы"
+msgstr "Определяет адрес, на котором Tinyproxy ожидает запросы."
msgid "Specifies the group name the Tinyproxy process is running as"
msgstr "Определяет имя группы, в которой работает Tinyproxy"
@@ -238,14 +239,14 @@ msgid ""
"Specifies the upstream proxy to use for accessing the target host. Format is "
"<code>address:port</code>"
msgstr ""
-"Определяет прокси восходящего канала для доступа к хосту в формате "
-"<code>адрес:порт</code>"
+"Определяет восходящий прокси-сервер, используемый для доступа к хосту "
+"назначения. Формат <code>'адрес:порт'</code>."
msgid "Specifies the user name the Tinyproxy process is running as"
-msgstr "Определяет пользователя, от имени которого работает Tinyproxy"
+msgstr "Задать пользователя, от имени которого работает Tinyproxy"
msgid "Start spare servers"
-msgstr "Запустить указанное количество готовых к обработке процессов"
+msgstr "Запустить запасные серверы"
msgid "Statistics page"
msgstr "Страница статистики"
@@ -263,7 +264,7 @@ msgid "Tinyproxy Status"
msgstr "Состояние Tinyproxy"
msgid "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy"
-msgstr "Tinyproxy - быстрый HTTP(S)-прокси, не использующий кэш"
+msgstr "Tinyproxy - небольшой и быстрый HTTP(S)-прокси, не использующий кэш."
msgid "Upstream Proxies"
msgstr "Прокси для исходящего трафика"
@@ -272,23 +273,25 @@ msgid ""
"Upstream proxy rules define proxy servers to use when accessing certain IP "
"addresses or domains."
msgstr ""
-"Прокси для исходящего трафика при обращении к определённым IP-адресам или "
-"доменам."
+"Правила исходящего трафика прокси-серверов для использования при доступе к "
+"определенным IP-адресам или доменам."
msgid "Use syslog"
-msgstr "Использовать системный журнал"
+msgstr "Системный журнал"
msgid "User"
msgstr "Пользователь"
msgid "Via hostname"
-msgstr "Имя хоста Via"
+msgstr "Через имя хоста"
msgid "Via proxy"
msgstr "Через прокси"
msgid "Writes log messages to syslog instead of a log file"
-msgstr "Записывать сообщения журнала в системный журнал вместо файла"
+msgstr ""
+"Записывать сообщения журнала в общий системный журнал, вместо файла "
+"отдельного файла Tinyproxy."
msgid "X-Tinyproxy header"
msgstr "Заголовок X-Tinyproxy"
diff --git a/applications/luci-app-travelmate/po/ja/travelmate.po b/applications/luci-app-travelmate/po/ja/travelmate.po
index febdbd583..0e497c1ca 100644
--- a/applications/luci-app-travelmate/po/ja/travelmate.po
+++ b/applications/luci-app-travelmate/po/ja/travelmate.po
@@ -7,7 +7,7 @@ msgstr ""
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.0.3\n"
+"X-Generator: Poedit 2.0.5\n"
"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"Language: ja\n"
@@ -31,9 +31,21 @@ msgstr "Travelmate の処理が開始されるまでの、追加の遅延時間
msgid "Advanced"
msgstr "詳細設定"
+msgid "Authentication"
+msgstr "認証"
+
+msgid "Automatic"
+msgstr "自動"
+
+msgid "BSSID"
+msgstr "BSSID"
+
msgid "Back to overview"
msgstr "概要へ戻る"
+msgid "Cipher"
+msgstr "暗号化方式"
+
msgid ""
"Configuration of the travelmate package to to enable travel router "
"functionality."
@@ -61,6 +73,9 @@ msgstr "このアップリンクを削除"
msgid "Device"
msgstr "デバイス"
+msgid "EAP-Method"
+msgstr "EAP メソッド"
+
msgid "Edit"
msgstr "編集"
@@ -107,6 +122,19 @@ msgstr ""
"詳細な情報は <a href=\"%s\" target=\"_blank\">オンライン ドキュメント</a> を"
"確認してください。"
+msgid "Force CCMP (AES)"
+msgstr "CCMP (AES)"
+
+msgid "Force TKIP"
+msgstr "TKIP"
+
+msgid "Force TKIP and CCMP (AES)"
+msgstr "TKIP と CCMP (AES)"
+
+msgid "Force a manual uplink rescan / reconnect in 'trigger' mode."
+msgstr ""
+"'trigger' モード時に、手動でアップリンクの再スキャンと再接続を行います。"
+
msgid "How long should travelmate wait for a successful wlan interface reload."
msgstr ""
"無線LAN インターフェースのリロードが成功するまでの、Travelmate の待機時間で"
@@ -115,6 +143,12 @@ msgstr ""
msgid "How many times should travelmate try to connect to an Uplink."
msgstr "Travelmate がアップリンクへの接続を試行する回数です。"
+msgid "Identity"
+msgstr "ID"
+
+msgid "Ignore BSSID"
+msgstr ""
+
msgid "Input file not found, please check your configuration."
msgstr "入力ファイルが見つかりません。設定を確認してください。"
@@ -143,12 +177,8 @@ msgstr "下へ"
msgid "Move up"
msgstr "上へ"
-msgid ""
-"Name of the uplink interface that triggers travelmate processing in 'manual' "
-"mode."
-msgstr ""
-"'manual' モード時に Travelmate の処理のトリガーとなる、アップリンク インター"
-"フェースの名前です。"
+msgid "Name of the used uplink interface."
+msgstr "使用されるアップリンク インターフェースの名前です。"
msgid "Online Status"
msgstr "オンライン ステータス"
@@ -166,8 +196,23 @@ msgstr "実行間隔"
msgid "Overview"
msgstr "概要"
-msgid "Passphrase (%s)"
-msgstr "暗号フレーズ (%s)"
+msgid "Passphrase"
+msgstr "パスフレーズ"
+
+msgid "Password"
+msgstr "パスワード"
+
+msgid "Password of Private Key"
+msgstr "秘密鍵のパスワード"
+
+msgid "Path to CA-Certificate"
+msgstr "CA 証明書へのパス"
+
+msgid "Path to Client-Certificate"
+msgstr "クライアント証明書へのパス"
+
+msgid "Path to Private Key"
+msgstr "秘密鍵へのパス"
msgid ""
"Provides an overview of all configured uplinks for the travelmate interface "
@@ -191,7 +236,7 @@ msgstr "再スキャン"
msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'."
msgstr "Travelmate が指定された無線に接続するよう制御します。(例: 'radio0')"
-msgid "Runtime information"
+msgid "Runtime Information"
msgstr "実行情報"
msgid "SSID"
@@ -209,8 +254,8 @@ msgstr "スキャン:"
msgid "Signal strength"
msgstr "信号強度"
-msgid "Specify the secret encryption key here."
-msgstr "暗号キーを設定します。"
+msgid "Station ID (SSID/BSSID)"
+msgstr "ステーション ID (SSID / BSSID)"
msgid "Station Interface"
msgstr "ステーション インターフェース"
@@ -218,9 +263,6 @@ msgstr "ステーション インターフェース"
msgid "Station Radio"
msgstr "ステーション電波"
-msgid "Station SSID"
-msgstr "ステーション SSID"
-
msgid ""
"This form allows you to modify the content of the main firewall "
"configuration file (/etc/config/firewall)."
@@ -281,6 +323,9 @@ msgstr "不明"
msgid "Uplink / Trigger interface"
msgstr "アップリンク / トリガー インターフェース"
+msgid "Uplink BSSID"
+msgstr "アップリンク BSSID"
+
msgid "Uplink SSID"
msgstr "アップリンク SSID"
@@ -293,14 +338,20 @@ msgstr "ログファイルの確認"
msgid "WEP"
msgstr "WEP"
-msgid "WEP passphrase"
-msgstr "WEP 暗号キー"
+msgid "WEP-Passphrase"
+msgstr "WEP パスフレーズ"
+
+msgid "WPA"
+msgstr "WPA"
+
+msgid "WPA-Passphrase"
+msgstr "WPA パスフレーズ"
-msgid "WPA / WPA2"
-msgstr "WPA / WPA2"
+msgid "WPA/WPA2"
+msgstr "WPA/WPA2"
-msgid "WPA passphrase"
-msgstr "WPA 暗号キー"
+msgid "WPA2"
+msgstr "WPA2"
msgid "Wireless Scan"
msgstr "無線スキャン"
diff --git a/applications/luci-app-travelmate/po/pt-br/travelmate.po b/applications/luci-app-travelmate/po/pt-br/travelmate.po
index 41fab7014..c4e9b9852 100644
--- a/applications/luci-app-travelmate/po/pt-br/travelmate.po
+++ b/applications/luci-app-travelmate/po/pt-br/travelmate.po
@@ -31,9 +31,21 @@ msgstr ""
msgid "Advanced"
msgstr ""
+msgid "Authentication"
+msgstr ""
+
+msgid "Automatic"
+msgstr ""
+
+msgid "BSSID"
+msgstr ""
+
msgid "Back to overview"
msgstr ""
+msgid "Cipher"
+msgstr ""
+
msgid ""
"Configuration of the travelmate package to to enable travel router "
"functionality."
@@ -58,6 +70,9 @@ msgstr ""
msgid "Device"
msgstr ""
+msgid "EAP-Method"
+msgstr ""
+
msgid "Edit"
msgstr ""
@@ -102,12 +117,30 @@ msgid ""
"documentation</a>"
msgstr ""
+msgid "Force CCMP (AES)"
+msgstr ""
+
+msgid "Force TKIP"
+msgstr ""
+
+msgid "Force TKIP and CCMP (AES)"
+msgstr ""
+
+msgid "Force a manual uplink rescan / reconnect in 'trigger' mode."
+msgstr ""
+
msgid "How long should travelmate wait for a successful wlan interface reload."
msgstr ""
msgid "How many times should travelmate try to connect to an Uplink."
msgstr ""
+msgid "Identity"
+msgstr ""
+
+msgid "Ignore BSSID"
+msgstr ""
+
msgid "Input file not found, please check your configuration."
msgstr ""
@@ -134,9 +167,7 @@ msgstr ""
msgid "Move up"
msgstr ""
-msgid ""
-"Name of the uplink interface that triggers travelmate processing in 'manual' "
-"mode."
+msgid "Name of the used uplink interface."
msgstr ""
msgid "Online Status"
@@ -155,7 +186,22 @@ msgstr ""
msgid "Overview"
msgstr ""
-msgid "Passphrase (%s)"
+msgid "Passphrase"
+msgstr ""
+
+msgid "Password"
+msgstr ""
+
+msgid "Password of Private Key"
+msgstr ""
+
+msgid "Path to CA-Certificate"
+msgstr ""
+
+msgid "Path to Client-Certificate"
+msgstr ""
+
+msgid "Path to Private Key"
msgstr ""
msgid ""
@@ -176,7 +222,7 @@ msgstr ""
msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'."
msgstr ""
-msgid "Runtime information"
+msgid "Runtime Information"
msgstr ""
msgid "SSID"
@@ -194,7 +240,7 @@ msgstr ""
msgid "Signal strength"
msgstr ""
-msgid "Specify the secret encryption key here."
+msgid "Station ID (SSID/BSSID)"
msgstr ""
msgid "Station Interface"
@@ -203,9 +249,6 @@ msgstr ""
msgid "Station Radio"
msgstr ""
-msgid "Station SSID"
-msgstr ""
-
msgid ""
"This form allows you to modify the content of the main firewall "
"configuration file (/etc/config/firewall)."
@@ -255,6 +298,9 @@ msgstr ""
msgid "Uplink / Trigger interface"
msgstr ""
+msgid "Uplink BSSID"
+msgstr ""
+
msgid "Uplink SSID"
msgstr ""
@@ -267,13 +313,19 @@ msgstr ""
msgid "WEP"
msgstr ""
-msgid "WEP passphrase"
+msgid "WEP-Passphrase"
+msgstr ""
+
+msgid "WPA"
+msgstr ""
+
+msgid "WPA-Passphrase"
msgstr ""
-msgid "WPA / WPA2"
+msgid "WPA/WPA2"
msgstr ""
-msgid "WPA passphrase"
+msgid "WPA2"
msgstr ""
msgid "Wireless Scan"
diff --git a/applications/luci-app-travelmate/po/ru/travelmate.po b/applications/luci-app-travelmate/po/ru/travelmate.po
new file mode 100644
index 000000000..3e8429c5b
--- /dev/null
+++ b/applications/luci-app-travelmate/po/ru/travelmate.po
@@ -0,0 +1,382 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: travelmate\n"
+"POT-Creation-Date: 2017-12-07 21:00+0300\n"
+"PO-Revision-Date: 2018-01-07 19:15+0300\n"
+"Language-Team: http://cyber-place.ru\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
+
+msgid "Actions"
+msgstr "Действия"
+
+msgid "Add Interface"
+msgstr "Добавить интерфейс"
+
+msgid "Add Uplink"
+msgstr "Подключение к сети"
+
+msgid "Add Wireless Uplink Configuration"
+msgstr "Добавить настройку беспроводной сети"
+
+msgid ""
+"Additional trigger delay in seconds before travelmate processing begins."
+msgstr "Дополнительная задержка в секундах до запуска TravelMate."
+
+msgid "Advanced"
+msgstr "Дополнительно"
+
+msgid "Authentication"
+msgstr "Аутентификация"
+
+msgid "Automatic"
+msgstr "Автоматически"
+
+msgid "BSSID"
+msgstr "BSSID"
+
+msgid "Back to overview"
+msgstr "Вернуться в главное меню"
+
+msgid "Cipher"
+msgstr "Шифрование"
+
+msgid ""
+"Configuration of the travelmate package to to enable travel router "
+"functionality."
+msgstr "Настройка утилиты TravelMate - помощника путешественника. "
+
+msgid "Connection Limit"
+msgstr "Ограничение соединений"
+
+msgid "Create Uplink Interface"
+msgstr "Создать интерфейс сети"
+
+msgid ""
+"Create a new wireless wan uplink interface, configure it to use dhcp and"
+msgstr ""
+"Создать новый wwan интерфейс беспроводной сети, настроить его на "
+"использование с DHCP и"
+
+msgid "Delete"
+msgstr "Удалить"
+
+msgid "Delete this Uplink"
+msgstr "Удалить сеть"
+
+msgid "Device"
+msgstr "Устройство"
+
+msgid "EAP-Method"
+msgstr "Метод EAP"
+
+msgid "Edit"
+msgstr "Редактировать"
+
+msgid "Edit Firewall Configuration"
+msgstr "Редактировать настройки фаервола"
+
+msgid "Edit Network Configuration"
+msgstr "Редактировать настройки сети"
+
+msgid "Edit Travelmate Configuration"
+msgstr "Редактировать настройки Travelmate"
+
+msgid "Edit Wireless Configuration"
+msgstr "Редактировать настройки беспроводного соединения"
+
+msgid "Edit Wireless Uplink Configuration"
+msgstr "Редактировать настройки беспроводной сети"
+
+msgid "Edit this Uplink"
+msgstr "Редактировать настройки сети"
+
+msgid "Enable 'automatic' mode"
+msgstr "Включить режим 'автоматически'"
+
+msgid "Enable travelmate"
+msgstr "Включить Travelmate"
+
+msgid "Enable verbose debug logging"
+msgstr "Включить подробное ведение журнала отладки"
+
+msgid "Encryption"
+msgstr "Шифрование"
+
+msgid "Extra options"
+msgstr "Дополнительные настройки"
+
+msgid "Find and join network on"
+msgstr "Найти сеть и подключится к ней"
+
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">see online "
+"documentation</a>"
+msgstr ""
+"Для получения дополнительной информации <a href=\"%s\" target=\"_blank\"> "
+"смотрите онлайн документацию</a>."
+
+msgid "Force CCMP (AES)"
+msgstr "Назначить CCMP (AES)"
+
+msgid "Force TKIP"
+msgstr "Назначить TKIP"
+
+msgid "Force TKIP and CCMP (AES)"
+msgstr "Назначить TKIP и CCMP (AES)"
+
+msgid "Force a manual uplink rescan / reconnect in 'trigger' mode."
+msgstr ""
+"Назначить ручное повторное сканирование / повторное подключение в режиме "
+"'ручной'."
+
+msgid "How long should travelmate wait for a successful wlan interface reload."
+msgstr ""
+"Временная задержка TravelMate неоходимая для полной перезагрузки wlan "
+"интерфейса."
+
+msgid "How many times should travelmate try to connect to an Uplink."
+msgstr "Сколько раз TravelMate должен пытаться подключиться к сети. "
+
+msgid "Identity"
+msgstr "Идентификация EAP"
+
+msgid "Ignore BSSID"
+msgstr "Игнорировать BSSID"
+
+msgid "Input file not found, please check your configuration."
+msgstr "Входной файл не найден, проверьте настройки."
+
+msgid "Interface Timeout"
+msgstr "Временная задержка интерфейса"
+
+msgid "Interface Wizard"
+msgstr "Помощник настройки интерфейса"
+
+msgid ""
+"Keep travelmate in an active state. Check every n seconds the connection "
+"status, i.e. the uplink availability."
+msgstr ""
+"Поддержка TravelMate в активном состоянии. Проверка состояния соединения "
+"каждые n секунд, т.е. доступность сети."
+
+msgid "Last rundate"
+msgstr "Дата последнего запуска"
+
+msgid "Manual Rescan"
+msgstr "Пересканировать вручную"
+
+msgid "Move down"
+msgstr "Двигаться вниз"
+
+msgid "Move up"
+msgstr "Двигаться вверх"
+
+msgid "Name of the used uplink interface."
+msgstr "Имя используемого интерфейса сети."
+
+msgid "Online Status"
+msgstr "Онлайн состояние"
+
+msgid "Open"
+msgstr "Открыть"
+
+msgid ""
+"Options for further tweaking in case the defaults are not suitable for you."
+msgstr ""
+"Возможные варианты детальной настройки, если значения по умолчанию не "
+"подходят для вас."
+
+msgid "Overall Timeout"
+msgstr "Общее время ожидания"
+
+msgid "Overview"
+msgstr "Главное меню"
+
+msgid "Passphrase"
+msgstr "Парольная фраза"
+
+msgid "Password"
+msgstr "Пароль"
+
+msgid "Password of Private Key"
+msgstr "Пароль к Личному Ключу"
+
+msgid "Path to CA-Certificate"
+msgstr "Путь к CA-Сертификатам"
+
+msgid "Path to Client-Certificate"
+msgstr "Путь к Client-Сертификатам"
+
+msgid "Path to Private Key"
+msgstr "Путь к личному ключу"
+
+msgid ""
+"Provides an overview of all configured uplinks for the travelmate interface "
+"(%s). You can edit, delete or re-order existing uplinks or scan for a new "
+"one. The currently used uplink is emphasized in blue."
+msgstr ""
+"Общие сведения обо всех настроенных сетевых соединениях интерфейса "
+"TravelMate (%s). Вы можете редактировать, удалять или переупорядочивать "
+"существующие сети или сканировать их. Используемое сетевое соединение "
+"подчеркнуто синим цветом."
+
+msgid "Radio selection"
+msgstr "Выбор Wi-Fi устройства"
+
+msgid "Repeat scan"
+msgstr "Повторить сканирование"
+
+msgid "Rescan"
+msgstr "Пересканировать"
+
+msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'."
+msgstr "Выделить TravelMate-у конкретное Wi-Fi устройство, например 'radio0'."
+
+msgid "Runtime Information"
+msgstr "Информация о состоянии"
+
+msgid "SSID"
+msgstr "SSID"
+
+msgid "SSID (hidden)"
+msgstr "SSID (скрытый)"
+
+msgid "Save"
+msgstr "Сохранить"
+
+msgid "Scan"
+msgstr "Сканировать"
+
+msgid "Signal strength"
+msgstr "Мощность сигнала"
+
+msgid "Station ID (SSID/BSSID)"
+msgstr "ID (SSID/BSSID) клиента"
+
+msgid "Station Interface"
+msgstr "Интерфейс клиента"
+
+msgid "Station Radio"
+msgstr "Wi-Fi устройство клиента"
+
+msgid ""
+"This form allows you to modify the content of the main firewall "
+"configuration file (/etc/config/firewall)."
+msgstr ""
+"Страница настройки фаервола, изменение содержимого config файла настройки "
+"фаервола (/etc/config/firewall)."
+
+msgid ""
+"This form allows you to modify the content of the main network configuration "
+"file (/etc/config/network)."
+msgstr ""
+"Страница настройки сети, изменение содержимого config файла настройки сети (/"
+"etc/config/network)."
+
+msgid ""
+"This form allows you to modify the content of the main travelmate "
+"configuration file (/etc/config/travelmate)."
+msgstr ""
+"Страница настройки Travelmate, изменение содержимого config файла настройки "
+"Travelmate (/etc/config/travelmate)."
+
+msgid ""
+"This form allows you to modify the content of the main wireless "
+"configuration file (/etc/config/wireless)."
+msgstr ""
+"Страница настройки беспроводных соединений, изменение содержимого config "
+"файла настройки беспроводных сетей (/etc/config/wireless)."
+
+msgid ""
+"This form shows the syslog output, pre-filtered for travelmate related "
+"messages only."
+msgstr ""
+"Страница просмотра системного журнала, показаны только события связанные с "
+"работой утилиты TravelMate."
+
+msgid "Timeout in seconds between retries in 'automatic' mode."
+msgstr ""
+"Время ожидания в секундах между повторными попытками соединения в режиме "
+"'автоматически'."
+
+msgid "To disable this feature set it to '0' which means unlimited retries."
+msgstr ""
+"Чтобы отключить эту функцию, установите значение '0', что означает "
+"неограниченное количество попыток."
+
+msgid "Travelmate"
+msgstr "TravelMate"
+
+msgid "Travelmate Logfile"
+msgstr "Системный журнал TravelMate"
+
+msgid "Travelmate version"
+msgstr "Версия TravelMate"
+
+msgid "Trigger delay"
+msgstr "Задержка запуска"
+
+msgid "Unknown"
+msgstr "Неизвестно"
+
+msgid "Uplink / Trigger interface"
+msgstr "Сеть / Включить интерфейс"
+
+msgid "Uplink BSSID"
+msgstr "BSSID сети"
+
+msgid "Uplink SSID"
+msgstr "SSID сети"
+
+msgid "Uplink interface"
+msgstr "Интерфейс сети"
+
+msgid "View Logfile"
+msgstr "Просмотр системного журнала"
+
+msgid "WEP"
+msgstr "WEP"
+
+msgid "WEP-Passphrase"
+msgstr "Пароль WEP"
+
+msgid "WPA"
+msgstr "WPA"
+
+msgid "WPA-Passphrase"
+msgstr "Пароль WPA"
+
+msgid "WPA/WPA2"
+msgstr "WPA/WPA2"
+
+msgid "WPA2"
+msgstr "WPA2"
+
+msgid "Wireless Scan"
+msgstr "Сканирование беспроводных сетей"
+
+msgid "Wireless Stations"
+msgstr "Клиенты беспроводной сети"
+
+msgid ""
+"add it to the wan zone of the firewall. This step has only to be done once."
+msgstr "добавить в wan зону фаервола. Можно сделать только один раз."
+
+msgid "connected"
+msgstr "подключен"
+
+msgid "hidden"
+msgstr "скрытый"
+
+msgid "n/a"
+msgstr "нет данных"
+
+msgid "not connected"
+msgstr "не подключено"
diff --git a/applications/luci-app-travelmate/po/templates/travelmate.pot b/applications/luci-app-travelmate/po/templates/travelmate.pot
index a9ceafe23..13e10dee8 100644
--- a/applications/luci-app-travelmate/po/templates/travelmate.pot
+++ b/applications/luci-app-travelmate/po/templates/travelmate.pot
@@ -20,9 +20,21 @@ msgstr ""
msgid "Advanced"
msgstr ""
+msgid "Authentication"
+msgstr ""
+
+msgid "Automatic"
+msgstr ""
+
+msgid "BSSID"
+msgstr ""
+
msgid "Back to overview"
msgstr ""
+msgid "Cipher"
+msgstr ""
+
msgid ""
"Configuration of the travelmate package to to enable travel router "
"functionality."
@@ -47,6 +59,9 @@ msgstr ""
msgid "Device"
msgstr ""
+msgid "EAP-Method"
+msgstr ""
+
msgid "Edit"
msgstr ""
@@ -91,12 +106,30 @@ msgid ""
"documentation</a>"
msgstr ""
+msgid "Force CCMP (AES)"
+msgstr ""
+
+msgid "Force TKIP"
+msgstr ""
+
+msgid "Force TKIP and CCMP (AES)"
+msgstr ""
+
+msgid "Force a manual uplink rescan / reconnect in 'trigger' mode."
+msgstr ""
+
msgid "How long should travelmate wait for a successful wlan interface reload."
msgstr ""
msgid "How many times should travelmate try to connect to an Uplink."
msgstr ""
+msgid "Identity"
+msgstr ""
+
+msgid "Ignore BSSID"
+msgstr ""
+
msgid "Input file not found, please check your configuration."
msgstr ""
@@ -123,9 +156,7 @@ msgstr ""
msgid "Move up"
msgstr ""
-msgid ""
-"Name of the uplink interface that triggers travelmate processing in 'manual' "
-"mode."
+msgid "Name of the used uplink interface."
msgstr ""
msgid "Online Status"
@@ -144,7 +175,22 @@ msgstr ""
msgid "Overview"
msgstr ""
-msgid "Passphrase (%s)"
+msgid "Passphrase"
+msgstr ""
+
+msgid "Password"
+msgstr ""
+
+msgid "Password of Private Key"
+msgstr ""
+
+msgid "Path to CA-Certificate"
+msgstr ""
+
+msgid "Path to Client-Certificate"
+msgstr ""
+
+msgid "Path to Private Key"
msgstr ""
msgid ""
@@ -165,7 +211,7 @@ msgstr ""
msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'."
msgstr ""
-msgid "Runtime information"
+msgid "Runtime Information"
msgstr ""
msgid "SSID"
@@ -183,7 +229,7 @@ msgstr ""
msgid "Signal strength"
msgstr ""
-msgid "Specify the secret encryption key here."
+msgid "Station ID (SSID/BSSID)"
msgstr ""
msgid "Station Interface"
@@ -192,9 +238,6 @@ msgstr ""
msgid "Station Radio"
msgstr ""
-msgid "Station SSID"
-msgstr ""
-
msgid ""
"This form allows you to modify the content of the main firewall "
"configuration file (/etc/config/firewall)."
@@ -244,6 +287,9 @@ msgstr ""
msgid "Uplink / Trigger interface"
msgstr ""
+msgid "Uplink BSSID"
+msgstr ""
+
msgid "Uplink SSID"
msgstr ""
@@ -256,13 +302,19 @@ msgstr ""
msgid "WEP"
msgstr ""
-msgid "WEP passphrase"
+msgid "WEP-Passphrase"
+msgstr ""
+
+msgid "WPA"
+msgstr ""
+
+msgid "WPA-Passphrase"
msgstr ""
-msgid "WPA / WPA2"
+msgid "WPA/WPA2"
msgstr ""
-msgid "WPA passphrase"
+msgid "WPA2"
msgstr ""
msgid "Wireless Scan"
diff --git a/applications/luci-app-uhttpd/po/ru/uhttpd.po b/applications/luci-app-uhttpd/po/ru/uhttpd.po
new file mode 100644
index 000000000..cf9bc57ec
--- /dev/null
+++ b/applications/luci-app-uhttpd/po/ru/uhttpd.po
@@ -0,0 +1,214 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: uhttpd\n"
+"POT-Creation-Date: 2017-12-06 22:30+0300\n"
+"PO-Revision-Date: 2018-01-07 19:05+0300\n"
+"Language-Team: http://cyber-place.ru\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
+
+msgid ""
+"(/old/path=/new/path) or (just /old/path which becomes /cgi-prefix/old/path)"
+msgstr ""
+"(/старый/путь=/новый/путь) или (просто /старый/путь становится /cgi-prefix/"
+"старый/путь)."
+
+msgid "404 Error"
+msgstr "Ошибка 404"
+
+msgid "A lightweight single-threaded HTTP(S) server"
+msgstr "Легкий однопоточный HTTP(S) сервер."
+
+msgid "Advanced Settings"
+msgstr "Дополнительные настройки"
+
+msgid "Aliases"
+msgstr "Псевдонимы (Aliases)"
+
+msgid "Base directory for files to be served"
+msgstr "Основная папка для файлов, которые будут обслуживаться сервером."
+
+msgid "Bind to specific interface:port (by specifying interface address"
+msgstr "Привязка к конкретному интерфейсу:порту."
+
+msgid "CGI filetype handler"
+msgstr "Интерпретатор файла CGI"
+
+msgid "CGI is disabled if not present."
+msgstr "CGI отключается, если он отсутствует."
+
+msgid "Config file (e.g. for credentials for Basic Auth)"
+msgstr "Config файл"
+
+msgid "Connection reuse"
+msgstr "Повторное использование соединения"
+
+msgid "Country"
+msgstr "Страна"
+
+msgid "Disable JSON-RPC authorization via ubus session API"
+msgstr "Отключение авторизации JSON-RPC через API в систему ubus"
+
+msgid "Do not follow symlinks outside document root"
+msgstr ""
+"Не следовать по символическим ссылкам вне корневого каталога документов"
+
+msgid "Do not generate directory listings."
+msgstr "Не создавать списки папок"
+
+msgid "Document root"
+msgstr "Основная папка"
+
+msgid "E.g specify with index.html and index.php when using PHP"
+msgstr "Например, укажите index.html и index.php если использовуется PHP."
+
+msgid "Embedded Lua interpreter is disabled if not present."
+msgstr "Встроенный интерпретатор Lua отключается, если скрипт отсутствует."
+
+msgid "Enable JSON-RPC Cross-Origin Resource Support"
+msgstr "Включение поддержки JSON-RPC разных источников"
+
+msgid "For settings primarily geared to serving more than the web UI"
+msgstr ""
+"Страница предназначена для настройки обслуживания, а не веб-интерфейса."
+
+msgid "Full Web Server Settings"
+msgstr "Полные настройки web сервера"
+
+msgid "Full real path to handler for Lua scripts"
+msgstr "Полный путь к интерпретатору скриптов Lua"
+
+msgid "General Settings"
+msgstr "Основные настройки"
+
+msgid "HTTP listeners (address:port)"
+msgstr "Слушать HTTP (адрес:порт)"
+
+msgid "HTTPS Certificate (DER Encoded)"
+msgstr "HTTPS сертификат (кодировка DER)"
+
+msgid "HTTPS Private Key (DER Encoded)"
+msgstr "HTTPS частный ключ (кодировка DER)"
+
+msgid "HTTPS listener (address:port)"
+msgstr "Слушать HTTPS (адрес:порт)"
+
+msgid "Ignore private IPs on public interface"
+msgstr "Игнорировать частный IPS на публичном интерфейсе"
+
+msgid "Index page(s)"
+msgstr "Страница(ы) индекса"
+
+msgid ""
+"Interpreter to associate with file endings ('suffix=handler', e.g. '.php=/"
+"usr/bin/php-cgi')"
+msgstr ""
+"Интерпретатор для сопоставления расширений файлов ('суффикс=обработчик', "
+"например: '.php=/usr/bin/php-cgi')."
+
+msgid "Length of key in bits"
+msgstr "Длина ключа в битах"
+
+msgid "Location"
+msgstr "Расположение"
+
+msgid "Maximum number of connections"
+msgstr "Максимальное количество соединений"
+
+msgid "Maximum number of script requests"
+msgstr "Максимальное количество запросов скрипта"
+
+msgid "Maximum wait time for Lua, CGI, or ubus execution"
+msgstr "Максимальное время ожидания для Lua, CGI, или выполнение ubus"
+
+msgid "Maximum wait time for network activity"
+msgstr "Максимальное время ожидания сетевой активности"
+
+msgid "Override path for ubus socket"
+msgstr "Переопределить путь для сокета ubus"
+
+msgid "Path prefix for CGI scripts"
+msgstr "Префикс пути для CGI скриптов"
+
+msgid ""
+"Prevent access from private (RFC1918) IPs on an interface if it has an "
+"public IP address"
+msgstr ""
+"Запретить доступ к частному интерфейсу IPS (RFC1918), если он имеет "
+"общедоступный IP-адрес."
+
+msgid "Realm for Basic Auth"
+msgstr "Хост для аутентификации"
+
+msgid "Redirect all HTTP to HTTPS"
+msgstr "Перенаправление всех HTTP на HTTPS"
+
+msgid "Remove configuration for certificate and key"
+msgstr "Удалить настройки для сертификата и ключа"
+
+msgid "Remove old certificate and key"
+msgstr "Удалить старый сертификат и ключ"
+
+msgid "Server Hostname"
+msgstr "Имя хоста"
+
+msgid ""
+"Settings which are either rarely needed or which affect serving the WebUI"
+msgstr ""
+"Страница содержит параметры, которые редко используются или влияют на "
+"обслуживание веб-интерфейса."
+
+msgid "State"
+msgstr "Указывать"
+
+msgid "TCP Keepalive"
+msgstr "TCP активность"
+
+msgid "This permanently deletes the cert, key, and configuration to use same."
+msgstr "Полное удаление сертификата, ключа и настроек вкладки меню внизу."
+
+msgid "Valid for # of Days"
+msgstr "Действителен в течение указанного кол-ва дней"
+
+msgid ""
+"Virtual URL or CGI script to display on status '404 Not Found'. Must begin "
+"with '/'"
+msgstr ""
+"Виртуальный URL-адрес или CGI скрипт для отображения статуса '404 не "
+"найдено'. Надо начинать с '/'."
+
+msgid "Virtual path prefix for Lua scripts"
+msgstr "Виртуальный путь префикса для скриптов Lua"
+
+msgid "Virtual path prefix for ubus via JSON-RPC integration"
+msgstr "Виртуальный префикс пути для ubus через для JSON-RPC интеграции"
+
+msgid "Will not use HTTP authentication if not present"
+msgstr ""
+"Например, учетные данные для основной авторизации. Не будет использоваться "
+"проверка подлинности HTTP, если она отсутствует."
+
+msgid "a.k.a CommonName"
+msgstr "Имя хоста сервера, так называемое - 'CommonName'."
+
+msgid "uHTTPd"
+msgstr "uHTTPd"
+
+msgid "uHTTPd Self-signed Certificate Parameters"
+msgstr "Параметры самозаверяющего сертификата uHTTPd"
+
+msgid ""
+"uHTTPd will generate a new self-signed certificate using the configuration "
+"shown below."
+msgstr ""
+"uHTTPd создаст самозаверяющий сертификат используя вкладку расположенную "
+"ниже."
+
+msgid "ubus integration is disabled if not present"
+msgstr "Интеграция с ubus будет отключена, если она отсутствует."
diff --git a/applications/luci-app-upnp/po/ja/upnp.po b/applications/luci-app-upnp/po/ja/upnp.po
index b9dae4f8d..fe2dd6456 100644
--- a/applications/luci-app-upnp/po/ja/upnp.po
+++ b/applications/luci-app-upnp/po/ja/upnp.po
@@ -17,8 +17,8 @@ msgid ""
"ACLs specify which external ports may be redirected to which internal "
"addresses and ports"
msgstr ""
-"アクセス制御リスト(ACL) は、どの外部ポートからどの内部アドレス及びポートへ"
-"リダイレクトするかを設定します。"
+"アクセス制御リスト(ACL) は、どの外部ポートからどの内部アドレス及びポートへリ"
+"ダイレクトするかを設定します。"
msgid "Action"
msgstr "動作"
@@ -132,8 +132,8 @@ msgid ""
"UPnP allows clients in the local network to automatically configure the "
"router."
msgstr ""
-"UPnPを使用することで、ローカルネットワーク内のクライアントが自動的にルータ"
-"を構成することができます。"
+"UPnPを使用することで、ローカルネットワーク内のクライアントが自動的にルータを"
+"構成することができます。"
msgid "UPnP lease file"
msgstr "UPnP リースファイル"
diff --git a/applications/luci-app-upnp/po/ru/upnp.po b/applications/luci-app-upnp/po/ru/upnp.po
index 0c195ad85..6800a1ab7 100644
--- a/applications/luci-app-upnp/po/ru/upnp.po
+++ b/applications/luci-app-upnp/po/ru/upnp.po
@@ -1,26 +1,24 @@
msgid ""
msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
"Project-Id-Version: LuCI: upnp\n"
-"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-05-19 19:36+0200\n"
-"PO-Revision-Date: 2012-08-15 15:20+0300\n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"PO-Revision-Date: 2018-01-07 18:46+0300\n"
+"Language-Team: http://cyber-place.ru\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Pootle 2.0.6\n"
-"X-Poedit-SourceCharset: UTF-8\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
msgid ""
"ACLs specify which external ports may be redirected to which internal "
"addresses and ports"
msgstr ""
"Список доступа определяет, какие внешние порты могут быть перенаправлены на "
-"внутренние адреса и порты"
+"внутренние адреса и порты."
msgid "Action"
msgstr "Действие"
@@ -29,10 +27,10 @@ msgid "Active UPnP Redirects"
msgstr "Активные UPnP-переадресации"
msgid "Advanced Settings"
-msgstr "Расширенные настройки"
+msgstr "Дополнительные настройки"
msgid "Allow adding forwards only to requesting ip addresses"
-msgstr "Разрешить перенаправление только для запрашивающих IP-адресов"
+msgstr "Разрешить перенаправление только для запрашивающих IP-адресов."
msgid "Announced model number"
msgstr "Номер модели"
@@ -53,22 +51,22 @@ msgid "Client Port"
msgstr "Порт клиента"
msgid "Collecting data..."
-msgstr "Сбор данных..."
+msgstr "Сбор информации..."
msgid "Comment"
msgstr "Комментарий"
msgid "Delete"
-msgstr ""
+msgstr "Удалить"
msgid "Description"
-msgstr ""
+msgstr "Описание"
msgid "Device UUID"
msgstr "UUID устройства"
msgid "Downlink"
-msgstr "Нисходящий канал"
+msgstr "Входящее соединение"
msgid "Enable NAT-PMP functionality"
msgstr "Включить NAT-PMP"
@@ -89,7 +87,7 @@ msgid "External ports"
msgstr "Внешние порты"
msgid "General Settings"
-msgstr "Общие настройки"
+msgstr "Основные настройки"
msgid "Internal addresses"
msgstr "Внутренние адреса"
@@ -116,7 +114,7 @@ msgid "Protocol"
msgstr "Протокол"
msgid "Puts extra debugging information into the system log"
-msgstr "Добавлять дополнительную отладочную информацию в системный журнал"
+msgstr "Добавлять дополнительную отладочную информацию в системный журнал."
msgid "Report system instead of daemon uptime"
msgstr "Сообщать время работы системы вместо сервиса"
@@ -144,21 +142,7 @@ msgid "Universal Plug & Play"
msgstr "Universal Plug & Play"
msgid "Uplink"
-msgstr "Восходящий канал"
+msgstr "Исходящее соединение"
msgid "Value in KByte/s, informational only"
msgstr "Значение в КБ/с, только для информации"
-
-#~ msgid "Delete Redirect"
-#~ msgstr "Удалить переадресацию"
-
-# Used in upnpmini.lua, which is marked broken, thus can be removed
-#~ msgid ""
-#~ "UPNP allows clients in the local network to automatically configure the "
-#~ "router."
-#~ msgstr ""
-#~ "UPnP позволяет клиентам в локальной сети автоматически настраивать "
-#~ "маршрутизатор."
-
-#~ msgid "enable"
-#~ msgstr "включить"
diff --git a/applications/luci-app-ushare/po/ru/ushare.po b/applications/luci-app-ushare/po/ru/ushare.po
index ac08e946d..42b16fbe1 100644
--- a/applications/luci-app-ushare/po/ru/ushare.po
+++ b/applications/luci-app-ushare/po/ru/ushare.po
@@ -1,22 +1,20 @@
msgid ""
msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
"Project-Id-Version: LuCI: ushare\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-05-19 19:36+0200\n"
-"PO-Revision-Date: 2012-08-15 11:29+0300\n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"POT-Creation-Date: 2012-08-15 11:29+0300\n"
+"PO-Revision-Date: 2018-01-08 00:25+0300\n"
+"Language-Team: http://cyber-place.ru\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Pootle 2.0.6\n"
-"X-Poedit-SourceCharset: UTF-8\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
msgid "Content directories"
-msgstr "Директории с содержимым"
+msgstr "Папки с содержимым"
msgid "Disable telnet console"
msgstr "Выключить telnet-консоль"
diff --git a/applications/luci-app-vnstat/po/ru/vnstat.po b/applications/luci-app-vnstat/po/ru/vnstat.po
index 5254ca1ee..78f3a24b7 100644
--- a/applications/luci-app-vnstat/po/ru/vnstat.po
+++ b/applications/luci-app-vnstat/po/ru/vnstat.po
@@ -1,21 +1,20 @@
msgid ""
msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
"Project-Id-Version: LuCI: vnstat\n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: 2012-08-15 11:48+0300\n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"POT-Creation-Date: 2012-08-15 11:48+0300\n"
+"PO-Revision-Date: 2018-01-07 17:38+0300\n"
+"Language-Team: http://cyber-place.ru\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Pootle 2.0.4\n"
-"X-Poedit-SourceCharset: UTF-8\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
msgid "Configuration"
-msgstr "Конфигурация"
+msgstr "Настройка"
msgid "Daily traffic"
msgstr "Трафик за день"
@@ -36,8 +35,8 @@ msgid ""
"No database has been set up yet. Go to the VnStat configuration and enable "
"monitoring for one or more interfaces."
msgstr ""
-"База данных не настроена. Перейдите в конфигурацию и укажите интерфейсы для "
-"сбора статистики."
+"База данных не настроена. Выполните настройки и укажите интерфейсы для сбора "
+"статистики."
msgid "Restart VnStat"
msgstr "Перезапустить VnStat"
@@ -66,6 +65,3 @@ msgid ""
msgstr ""
"VnStat - монитор сетевого трафика для Linux, собирающий статистику по "
"выбранным интерфейсам."
-
-#~ msgid "The VnStat service has been restarted."
-#~ msgstr "VnStat сервис перезапущен."
diff --git a/applications/luci-app-voice-core/po/ru/voice_core.po b/applications/luci-app-voice-core/po/ru/voice_core.po
index b6631dfc0..4b89c6222 100644
--- a/applications/luci-app-voice-core/po/ru/voice_core.po
+++ b/applications/luci-app-voice-core/po/ru/voice_core.po
@@ -1,24 +1,19 @@
msgid ""
msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
"Project-Id-Version: LuCI: voice_core\n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: 2012-08-15 11:23+0300\n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"POT-Creation-Date: 2012-08-15 11:23+0300\n"
+"PO-Revision-Date: 2018-01-08 00:20+0300\n"
+"Language-Team: http://cyber-place.ru\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Pootle 2.0.6\n"
-"X-Poedit-SourceCharset: UTF-8\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
msgid "Phones"
msgstr "Телефоны"
msgid "Voice"
msgstr "Голос"
-
-#~ msgid "l_v_adminphones"
-#~ msgstr "l_v_adminphones"
diff --git a/applications/luci-app-voice-diag/po/ru/voice_diag.po b/applications/luci-app-voice-diag/po/ru/voice_diag.po
index 5c98de015..2b8b808db 100644
--- a/applications/luci-app-voice-diag/po/ru/voice_diag.po
+++ b/applications/luci-app-voice-diag/po/ru/voice_diag.po
@@ -1,18 +1,17 @@
msgid ""
msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
"Project-Id-Version: LuCI: voice_diag\n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: 2012-08-15 11:22+0300\n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"POT-Creation-Date: 2012-08-15 11:22+0300\n"
+"PO-Revision-Date: 2018-01-08 00:17+0300\n"
+"Language-Team: http://cyber-place.ru\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Pootle 2.0.4\n"
-"X-Poedit-SourceCharset: UTF-8\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
msgid "Diagnostics"
msgstr "Диагностика"
@@ -20,14 +19,11 @@ msgstr "Диагностика"
msgid ""
"The diagnostics available on your device depend on the modules that you have "
"installed."
-msgstr "Доступные виды диагностики зависят от установленных модулей."
+msgstr "Доступные виды диагностики зависят от установленных плагинов."
msgid ""
"Under this menu are options that allow you to configure and perform tests on "
"the voice operations of your system. These are known as diagnostics."
msgstr ""
-"В данном меню содержатся опции, которые позволяют вам протестировать "
-"голосовые службы вашей системы. Это известно как \"диагностика\"."
-
-#~ msgid "l_v_d_admindiag"
-#~ msgstr "l_v_d_admindiag"
+"Утилита Диагностика, позволит вам протестировать голосовые службы вашей "
+"системы."
diff --git a/applications/luci-app-vpnbypass/po/ru/vpnbypass.po b/applications/luci-app-vpnbypass/po/ru/vpnbypass.po
new file mode 100644
index 000000000..a50ea8b9f
--- /dev/null
+++ b/applications/luci-app-vpnbypass/po/ru/vpnbypass.po
@@ -0,0 +1,95 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: vpnbypass\n"
+"POT-Creation-Date: 2017-09-14 16:00+0300\n"
+"PO-Revision-Date: 2017-10-17 21:00+0300\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Language-Team: http://cyber-place.ru\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 2.0.4\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
+
+msgid "Domains to Bypass"
+msgstr "Домены, для обхода блокировки"
+
+msgid "Domains to be accessed directly (outside of the VPN tunnel), see"
+msgstr "Домены должны быть доступны напрямую (вне VPN-туннеля), см."
+
+msgid "Enable/start service"
+msgstr "Включить/запустить сервис"
+
+msgid "Local IP Addresses to Bypass"
+msgstr "Локальный IP адрес обхода VPN"
+
+msgid ""
+"Local IP addresses or subnets with direct internet access (outside of the "
+"VPN tunnel)"
+msgstr ""
+"Локальные IP адреса или подсети с прямым доступом в интернет (вне VPN-"
+"туннеля)."
+
+msgid "Local Ports to Bypass"
+msgstr "Локальные порты для обхода VPN"
+
+msgid "Local ports to trigger VPN Bypass"
+msgstr "Локальные порты для запуска обхода VPN"
+
+msgid "README"
+msgstr "Описание"
+
+msgid "Remote IP Addresses to Bypass"
+msgstr "Удаленные IP адреса обхода VPN"
+
+msgid ""
+"Remote IP addresses or subnets which will be accessed directly (outside of "
+"the VPN tunnel)"
+msgstr ""
+"Удаленные IP-адреса или подсети, которые будут доступны напрямую (вне "
+"туннеля VPN)."
+
+msgid "Remote Ports to Bypass"
+msgstr "Удаленные порты для обхода VPN"
+
+msgid "Remote ports to trigger VPN Bypass"
+msgstr "Удаленные порты для запуска обхода VPN"
+
+msgid "VPN Bypass"
+msgstr "Обход VPN"
+
+msgid "VPN Bypass Settings"
+msgstr "Настройки обхода VPN"
+
+msgid "for syntax"
+msgstr "для синтаксиса"
+
+#~ msgid "Enable VPN Bypass"
+#~ msgstr "Habilitar o VPN Bypass"
+
+#~ msgid "Configuration of VPN Bypass Settings"
+#~ msgstr "Configurações do VPN Bypass"
+
+#~ msgid "Domains which will be accessed directly (outside of the VPN tunnel)"
+#~ msgstr "Domínios que serão acessados diretamente (fora do túnel VPN)"
+
+#~ msgid "Local IP Subnets to Bypass"
+#~ msgstr "Subredes IP locais para evitar a VPN"
+
+#~ msgid ""
+#~ "Local IP ranges with direct internet access (outside of the VPN tunnel)"
+#~ msgstr ""
+#~ "Faixa de endereços IP locais que terão acesso internet direto (fora do "
+#~ "túnel VPN)"
+
+#~ msgid "Remote IP Subnets to Bypass"
+#~ msgstr "Subredes IP remotas para evitar a VPN"
+
+#~ msgid ""
+#~ "Remote IP ranges which will be accessed directly (outside of the VPN "
+#~ "tunnel)"
+#~ msgstr ""
+#~ "Faixa de endereços IP remotos que serão acessados diretamente (fora do "
+#~ "túnel VPN)"
diff --git a/applications/luci-app-watchcat/po/ru/watchcat.po b/applications/luci-app-watchcat/po/ru/watchcat.po
index 83b95e201..5616baf42 100644
--- a/applications/luci-app-watchcat/po/ru/watchcat.po
+++ b/applications/luci-app-watchcat/po/ru/watchcat.po
@@ -1,17 +1,17 @@
msgid ""
msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
"Project-Id-Version: LuCI: watchcat\n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: \n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"POT-Creation-Date: 2013-10-06 11:15+0300\n"
+"PO-Revision-Date: 2018-01-07 22:46+0300\n"
+"Language-Team: http://cyber-place.ru\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Poedit-SourceCharset: UTF-8\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
msgid "Forced reboot delay"
msgstr "Задержка принудительной перезагрузки"
@@ -25,7 +25,7 @@ msgid ""
msgstr ""
"Как часто проверять интернет-соединение. По умолчанию значение в секундах, "
"вы можете использовать суффикс 'm' для указания минут, 'h' - часов, 'd' - "
-"дней"
+"дней."
msgid ""
"In periodic mode, it defines the reboot period. In internet mode, it defines "
@@ -37,7 +37,7 @@ msgstr ""
"интернет-режиме, данная настройка определяет максимальный период времени без "
"доступа в интернет, после которого устройство перезагружается. По умолчанию "
"значение в секундах, вы можете использовать суффикс 'm' для указания минут, "
-"'h' - часов, 'd' - дней"
+"'h' - часов, 'd' - дней."
msgid "Operating mode"
msgstr "Режим работы"
@@ -54,21 +54,19 @@ msgstr "Период опроса"
msgid "Watchcat"
msgstr "Watchcat"
-#, fuzzy
msgid ""
"Watchcat allows configuring a periodic reboot when the Internet connection "
"has been lost for a certain period of time."
msgstr ""
-"Watchcat позволяет настроить периодическую перезагрузку устройства и/или "
-"перезагрузку при потере интернет-соединения на определённое время."
+"Watchcat позволяет настроить периодическую перезагрузку, при потере Интернет "
+"соединения на определенное время."
-#, fuzzy
msgid ""
"When rebooting the system, the watchcat will trigger a soft reboot. Entering "
"a non zero value here will trigger a delayed hard reboot if the soft reboot "
"fails. Enter a number of seconds to enable, use 0 to disable"
msgstr ""
-"При необходимости перезагрузке системы, watchcat вызовет программную "
-"перезагрузку. При установке ненулевого значения, будет выполнена отложенная "
-"аппаратная перезагрузка при неудачной программной. Установите количество "
-"секунд для отложенной аппаратной перезагрузки или значение 0 для программной."
+"При перезагрузке системы, watchcat вызовет программную перезагрузку. Ввод "
+"ненулевого значения здесь, вызовет отложенную аппаратную перезагрузку, если "
+"программная перезагрузка не удастся. Введите количество секунд, чтобы "
+"включить, используйте '0', чтобы отключить."
diff --git a/applications/luci-app-wifischedule/po/ru/wifischedule.po b/applications/luci-app-wifischedule/po/ru/wifischedule.po
new file mode 100644
index 000000000..a5fd3ed40
--- /dev/null
+++ b/applications/luci-app-wifischedule/po/ru/wifischedule.po
@@ -0,0 +1,113 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: wifischedule\n"
+"POT-Creation-Date: 2017-11-30 15:30+0300\n"
+"PO-Revision-Date: 2018-01-07 17:52+0300\n"
+"Language-Team: http://cyber-place.ru\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
+
+msgid "Activate wifi"
+msgstr "Включить Wi-Fi"
+
+msgid "Could not find required /usr/bin/wifi_schedule.sh or /sbin/wifi"
+msgstr "Не удалось найти файл /usr/bin/wifi_schedule.sh или /sbin/wifi"
+
+msgid "Could not find required programm /usr/bin/iwinfo"
+msgstr "Не удалось найти требуемую программу /usr/bin/iwinfo"
+
+msgid "Cron Jobs"
+msgstr "Cron задания"
+
+msgid "Day(s) of Week"
+msgstr "День (дни) недели"
+
+msgid "Defines a schedule when to turn on and off wifi."
+msgstr "Определяет расписание включения и выключения Wi-Fi."
+
+msgid "Determine Modules Automatically"
+msgstr "Автоматическое определение модулей"
+
+msgid "Disable wifi gracefully"
+msgstr "Отключить Wi-Fi корректно"
+
+msgid "Disabled wifi forced"
+msgstr "Отключить Wi-Fi принудительно"
+
+msgid "Enable"
+msgstr "Включить"
+
+msgid "Enable Wifi Schedule"
+msgstr "Включить Wi-Fi планировщик"
+
+msgid "Enable logging"
+msgstr "Включить ведение системного журнала"
+
+msgid "Force disabling wifi even if stations associated"
+msgstr "Принудительно отключить Wi-Fi даже если имеются подключенные клиенты"
+
+msgid "Friday"
+msgstr "Пятница"
+
+msgid "Global Settings"
+msgstr "Основные настройки"
+
+msgid "Monday"
+msgstr "Понедельник"
+
+msgid "Saturday"
+msgstr "Суббота"
+
+msgid "Schedule"
+msgstr "Планировщик"
+
+msgid "Schedule events"
+msgstr "Планировщик событий"
+
+msgid "Start Time"
+msgstr "Время начала"
+
+msgid "Start WiFi"
+msgstr "Время включения Wi-Fi"
+
+msgid "Stop Time"
+msgstr "Время окончания"
+
+msgid "Stop WiFi"
+msgstr "Время отключения Wi-Fi"
+
+msgid "Sunday"
+msgstr "Воскресенье"
+
+msgid "The value %s is invalid"
+msgstr "Значение %s является недействительным"
+
+msgid "Thursday"
+msgstr "Четверг"
+
+msgid "Tuesday"
+msgstr "Вторник"
+
+msgid "Unload Modules (experimental; saves more power)"
+msgstr ""
+"Плагины не загружаются (экспериментальная опция; экономит больше энергии)"
+
+msgid "View Cron Jobs"
+msgstr "Показать сron задания"
+
+msgid "View Logfile"
+msgstr "Показать системный журнал"
+
+msgid "Wednesday"
+msgstr "Среда"
+
+msgid "Wifi Schedule"
+msgstr "Wi-Fi планировщик"
+
+msgid "Wifi Schedule Logfile"
+msgstr "Системный журнал Wi-Fi планировщика"
diff --git a/applications/luci-app-wireguard/po/ru/wireguard.po b/applications/luci-app-wireguard/po/ru/wireguard.po
new file mode 100644
index 000000000..0cbc8bb75
--- /dev/null
+++ b/applications/luci-app-wireguard/po/ru/wireguard.po
@@ -0,0 +1,77 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: LuCI: wireguard\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-19 19:36+0200\n"
+"PO-Revision-Date: 2017-11-30 21:48+0300\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Language-Team: http://cyber-place.ru\n"
+"Language: ru\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Pootle 2.0.4\n"
+"X-Poedit-SourceCharset: UTF-8\n"
+
+msgid "Allowed IPs"
+msgstr "Разрешенные IP адреса"
+
+msgid "Collecting data..."
+msgstr "Сбор информации..."
+
+msgid "Configuration"
+msgstr "Настройка config файла"
+
+msgid "Data Received"
+msgstr "Полученные данные"
+
+msgid "Data Transmitted"
+msgstr "Переданные данные"
+
+msgid "Endpoint"
+msgstr "Конечная точка"
+
+msgid "Firewall Mark"
+msgstr "Метка фаервола"
+
+msgid "Interface"
+msgstr "Интерфейс"
+
+msgid "Interface does not have a public key!"
+msgstr "Интерфейс не имеет Публичного Ключа!"
+
+msgid "Latest Handshake"
+msgstr "Последний хендшейк"
+
+msgid "Listen Port"
+msgstr "Слушать порт"
+
+msgid "Never"
+msgstr "Никогда"
+
+msgid "Peer"
+msgstr "Пир"
+
+msgid "Persistent Keepalive"
+msgstr "Постоянные Проверки Активности"
+
+msgid "Public Key"
+msgstr "Публичный ключ"
+
+msgid "WireGuard Status"
+msgstr "Состояние WireGuard"
+
+msgid "h ago"
+msgstr "час назад"
+
+msgid "m ago"
+msgstr "минуту назад"
+
+msgid "over a day ago"
+msgstr "более суток назад"
+
+msgid "s ago"
+msgstr "секунду назад"
+
diff --git a/applications/luci-app-wol/po/ru/wol.po b/applications/luci-app-wol/po/ru/wol.po
index 9d3e08d56..b454a133a 100644
--- a/applications/luci-app-wol/po/ru/wol.po
+++ b/applications/luci-app-wol/po/ru/wol.po
@@ -1,46 +1,42 @@
-# Generated from applications/luci-wol/luasrc/model/cbi/wol.lua
-#
msgid ""
msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
"Project-Id-Version: LuCI: wol\n"
-"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-04-19 00:29+0200\n"
-"PO-Revision-Date: 2012-08-15 12:07+0300\n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"PO-Revision-Date: 2018-01-07 18:00+0300\n"
+"Language-Team: http://cyber-place.ru\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Pootle 2.0.4\n"
-"X-Poedit-SourceCharset: UTF-8\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
msgid "Broadcast on all interfaces"
msgstr "Использовать широковещательную передачу на все интерфейсы"
msgid "Choose the host to wake up or enter a custom MAC address to use"
-msgstr "Выберите хост, который необходимо разбудить, или введите его MAC-адрес"
+msgstr ""
+"Задать хост, который необходимо разбудить. Можно использовать MAC-адрес или "
+"имя хоста."
msgid "Host to wake up"
-msgstr "Хост, который необходимо разбудить"
+msgstr "Выбрать хост"
msgid "Network interface to use"
-msgstr "Используемый сетевой интерфейс"
+msgstr "Выбрать интерфейс"
msgid "Send to broadcast address"
-msgstr ""
+msgstr "Отправить на широковещательный адрес"
-#, fuzzy
msgid ""
"Sometimes only one of the two tools works. If one fails, try the other one"
msgstr ""
-"Иногда только одна из двух утилит работает. В случае ошибки, попробуйте "
-"использовать другую"
+"Иногда работает только один из двух инструментов. Если один терпит неудачу, "
+"попробуйте другой."
msgid "Specifies the interface the WoL packet is sent on"
-msgstr "Определяет интерфейс, по которому будут посланы пакеты WoL"
+msgstr "Задать сетевой интерфейс, по которому будут посланы пакеты WoL."
msgid "Starting WoL utility:"
msgstr "Запуск WoL утилиты:"
@@ -59,4 +55,4 @@ msgid "Wake up host"
msgstr "Разбудить хост"
msgid "WoL program"
-msgstr "Программа WoL"
+msgstr "Утилита WoL"