Merge pull request #1516 from dibdot/dnscrypt-proxy
authorTed Hess <thess@kitschensync.net>
Tue, 9 Jan 2018 14:06:59 +0000 (09:06 -0500)
committerGitHub <noreply@github.com>
Tue, 9 Jan 2018 14:06:59 +0000 (09:06 -0500)
luci-app-dnscrypt-proxy: Updates for new repository/maintainer

120 files changed:
applications/luci-app-adblock/luasrc/controller/adblock.lua
applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua
applications/luci-app-adblock/luasrc/view/adblock/blocklist.htm [new file with mode: 0644]
applications/luci-app-adblock/luasrc/view/adblock/logread.htm
applications/luci-app-adblock/po/it/adblock.po
applications/luci-app-adblock/po/ja/adblock.po
applications/luci-app-adblock/po/pt-br/adblock.po
applications/luci-app-adblock/po/ru/adblock.po [new file with mode: 0644]
applications/luci-app-adblock/po/sv/adblock.po
applications/luci-app-adblock/po/templates/adblock.pot
applications/luci-app-adblock/po/zh-cn/adblock.po
applications/luci-app-adblock/po/zh-tw/adblock.po
applications/luci-app-advanced-reboot/Makefile
applications/luci-app-advanced-reboot/README.md
applications/luci-app-advanced-reboot/luasrc/controller/advanced_reboot.lua
applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm
applications/luci-app-advanced-reboot/po/ru/advanced-reboot.po [new file with mode: 0644]
applications/luci-app-advanced-reboot/po/sv/advanced-reboot.po [new file with mode: 0644]
applications/luci-app-advanced-reboot/po/sv/luci-app-advanced-reboot.po [deleted file]
applications/luci-app-advanced-reboot/po/templates/advanced-reboot.pot [new file with mode: 0644]
applications/luci-app-advanced-reboot/po/templates/luci-app-advanced-reboot.pot [deleted file]
applications/luci-app-aria2/po/ru/aria2.po [new file with mode: 0644]
applications/luci-app-attendedsysupgrade/luasrc/view/attendedsysupgrade.htm
applications/luci-app-attendedsysupgrade/root/usr/share/rpcd/acl.d/attendedsysupgrade.json
applications/luci-app-attendedsysupgrade/root/www/luci-static/resources/attendedsysupgrade.js [new file with mode: 0644]
applications/luci-app-bcp38/po/ru/bcp38.po [new file with mode: 0644]
applications/luci-app-clamav/po/ru/clamav.po [new file with mode: 0644]
applications/luci-app-commands/po/ru/commands.po
applications/luci-app-ddns/po/ru/ddns.po
applications/luci-app-diag-core/po/ru/diag_core.po
applications/luci-app-dnscrypt-proxy/po/ru/dnscrypt-proxy.po [new file with mode: 0644]
applications/luci-app-dynapoint/po/ru/dynapoint.po [new file with mode: 0644]
applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm
applications/luci-app-firewall/po/ru/firewall.po
applications/luci-app-fwknopd/po/ru/fwknopd.po [new file with mode: 0644]
applications/luci-app-hd-idle/po/ru/hd_idle.po
applications/luci-app-mjpg-streamer/po/ru/mjpg-streamer.po [new file with mode: 0644]
applications/luci-app-mwan3/luasrc/model/cbi/mwan/memberconfig.lua
applications/luci-app-mwan3/po/ja/mwan3.po
applications/luci-app-mwan3/po/ru/mwan3.po [new file with mode: 0644]
applications/luci-app-mwan3/po/templates/mwan3.pot
applications/luci-app-mwan3/po/zh-cn/mwan3.po
applications/luci-app-mwan3/po/zh-tw/mwan3.po
applications/luci-app-privoxy/po/ru/privoxy.po [new file with mode: 0644]
applications/luci-app-radicale/po/ru/radicale.po [new file with mode: 0644]
applications/luci-app-samba/po/ru/samba.po
applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instance-details.lua
applications/luci-app-shadowsocks-libev/luasrc/model/shadowsocks-libev.lua
applications/luci-app-shairplay/po/ru/shairplay.po [new file with mode: 0644]
applications/luci-app-simple-adblock/po/ru/simple-adblock.po [new file with mode: 0644]
applications/luci-app-splash/po/ru/splash.po
applications/luci-app-statistics/po/ru/rrdtool.po
applications/luci-app-statistics/po/ru/statistics.po
applications/luci-app-tinyproxy/po/ru/tinyproxy.po
applications/luci-app-travelmate/luasrc/controller/travelmate.lua
applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua
applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_add.lua
applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_edit.lua
applications/luci-app-travelmate/luasrc/view/travelmate/config_css.htm
applications/luci-app-travelmate/luasrc/view/travelmate/logread.htm
applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm
applications/luci-app-travelmate/luasrc/view/travelmate/wifi_scan.htm
applications/luci-app-travelmate/po/ja/travelmate.po
applications/luci-app-travelmate/po/pt-br/travelmate.po
applications/luci-app-travelmate/po/ru/travelmate.po [new file with mode: 0644]
applications/luci-app-travelmate/po/templates/travelmate.pot
applications/luci-app-uhttpd/po/ru/uhttpd.po [new file with mode: 0644]
applications/luci-app-upnp/po/ja/upnp.po
applications/luci-app-upnp/po/ru/upnp.po
applications/luci-app-ushare/po/ru/ushare.po
applications/luci-app-vnstat/po/ru/vnstat.po
applications/luci-app-voice-core/po/ru/voice_core.po
applications/luci-app-voice-diag/po/ru/voice_diag.po
applications/luci-app-vpnbypass/po/ru/vpnbypass.po [new file with mode: 0644]
applications/luci-app-watchcat/po/ru/watchcat.po
applications/luci-app-wifischedule/po/ru/wifischedule.po [new file with mode: 0644]
applications/luci-app-wireguard/po/ru/wireguard.po [new file with mode: 0644]
applications/luci-app-wol/po/ru/wol.po
contrib/package/community-profiles/files/etc/config/profile_hannover [deleted file]
documentation/api/modules/nixio.fs.html
libs/luci-lib-nixio/docsrc/nixio.fs.lua
luci.mk
modules/luci-base/Makefile
modules/luci-base/luasrc/model/network.lua
modules/luci-base/luasrc/sys.lua
modules/luci-base/po/ca/base.po
modules/luci-base/po/cs/base.po
modules/luci-base/po/de/base.po
modules/luci-base/po/el/base.po
modules/luci-base/po/en/base.po
modules/luci-base/po/es/base.po
modules/luci-base/po/fr/base.po
modules/luci-base/po/he/base.po
modules/luci-base/po/hu/base.po
modules/luci-base/po/it/base.po
modules/luci-base/po/ja/base.po
modules/luci-base/po/ko/base.po
modules/luci-base/po/ms/base.po
modules/luci-base/po/no/base.po
modules/luci-base/po/pl/base.po
modules/luci-base/po/pt-br/base.po
modules/luci-base/po/pt/base.po
modules/luci-base/po/ro/base.po
modules/luci-base/po/ru/base.po
modules/luci-base/po/sk/base.po
modules/luci-base/po/sv/base.po
modules/luci-base/po/templates/base.pot
modules/luci-base/po/tr/base.po
modules/luci-base/po/uk/base.po
modules/luci-base/po/vi/base.po
modules/luci-base/po/zh-cn/base.po
modules/luci-base/po/zh-tw/base.po
modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua
modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/network.lua
modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua
modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/buttons.lua [deleted file]
modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/fstab.lua
modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/leds.lua
modules/luci-mod-admin-full/luasrc/view/admin_network/lease_status.htm
modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm

index b748584..0cfbb5f 100644 (file)
@@ -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
index 4bb404c..499b8dc 100644 (file)
@@ -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,7 +74,7 @@ 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)")
@@ -98,10 +98,9 @@ o3.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")
@@ -117,7 +116,7 @@ else
        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,7 +124,7 @@ else
        dv2.value = version
 end
 
-dv3 = s:option(DummyValue, "", translate("Download Utility (SSL Library)"),
+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 the wget 'built-in'."))
 dv3.template = "adblock/runtime"
 if parse == nil then
@@ -134,7 +133,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 +141,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 +149,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 +162,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 +222,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 (file)
index 0000000..aae6407
--- /dev/null
@@ -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>
index 5e25a54..082ec80 100644 (file)
@@ -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%>
index af3414c..6f3b53e 100644 (file)
@@ -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"
 
index becef99..f43aafb 100644 (file)
@@ -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個のリストで十分です。"
index f51791f..e08ad6c 100644 (file)
@@ -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 (file)
index 0000000..8400c6e
--- /dev/null
@@ -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 "остановлено"
index 503c5f6..927e8af 100644 (file)
@@ -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"
 
index 9698333..8fcff07 100644 (file)
@@ -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 ""
 
index 08032ca..9e3a028 100644 (file)
@@ -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 "已启用"
 
index f838fa0..d468c96 100644 (file)
@@ -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 "已啟用"
 
index 3a886eb..5722b42 100644 (file)
@@ -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
 
index ee87a00..cfee188 100644 (file)
@@ -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.
index 2b55217..13d1c73 100644 (file)
@@ -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
 
index 206d250..0629c84 100644 (file)
        <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 (file)
index 0000000..75d4636
--- /dev/null
@@ -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/advanced-reboot.po b/applications/luci-app-advanced-reboot/po/sv/advanced-reboot.po
new file mode 100644 (file)
index 0000000..e0e13cf
--- /dev/null
@@ -0,0 +1,133 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8\n"
+
+msgid "Action"
+msgstr "Åtgärd"
+
+msgid "Advanced Reboot"
+msgstr "Avancerad omstart"
+
+msgid "Alternative"
+msgstr "Alternativ"
+
+msgid "Alternative reboot cancelled."
+msgstr ""
+
+msgid "Cancel"
+msgstr "Avbryt"
+
+msgid "Confirm"
+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"
+
+msgid "Partitions"
+msgstr "Partitioner"
+
+msgid "Perform power off..."
+msgstr "Utför avstängning..."
+
+msgid "Power Off Device"
+msgstr "Stäng av enhet"
+
+msgid "Proceed"
+msgstr "Fortsätt"
+
+msgid "Reboot Device to an Alternative Partition"
+msgstr "Starta om enheten till en alternativ partition"
+
+msgid "Reboot to alternative partition..."
+msgstr "Starta om till alternativ partition..."
+
+msgid "Reboot to current partition"
+msgstr "Starta om till nuvarande partition"
+
+msgid "Rebooting..."
+msgstr "Startar om..."
+
+msgid "Shutting down..."
+msgstr "Stänger av..."
+
+msgid "Status"
+msgstr "Status"
+
+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 ""
+
+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 ""
+
+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 ""
+"Systemet stänger ner nu.<br /> STÄNG INTE AV ENHETEN!<br /> Beroende på dina "
+"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/"
+"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 ""
+
+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 ""
+"VARNING: Att stänga av kan resultera i en omstart i en enhet som inte har "
+"stöd för avstängning.<br /><br /> Klicka på \"Fortsätt\" nedanför för att "
+"stänga av din enhet."
+
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr ""
+"Varning: Det finns osparade ändringar som kommer att förloras vid omstart!"
+
+msgid "Warning: This system does not have two partitions!"
+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/sv/luci-app-advanced-reboot.po b/applications/luci-app-advanced-reboot/po/sv/luci-app-advanced-reboot.po
deleted file mode 100644 (file)
index 20d77cb..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-msgid ""
-msgstr "Content-Type: text/plain; charset=UTF-8\n"
-
-msgid "Action"
-msgstr "Åtgärd"
-
-msgid "Advanced Reboot"
-msgstr "Avancerad omstart"
-
-msgid "Alternative"
-msgstr "Alternativ"
-
-msgid "Cancel"
-msgstr "Avbryt"
-
-msgid "Confirm"
-msgstr "Bekräfta"
-
-msgid "Current"
-msgstr "Nuvarande"
-
-msgid "Firmware/OS (Kernel)"
-msgstr "Inre mjukvara/OS (Kärna)"
-
-msgid "Partition"
-msgstr "Partition"
-
-msgid "Partitions"
-msgstr "Partitioner"
-
-msgid "Perform power off..."
-msgstr "Utför avstängning..."
-
-msgid "Power Off Device"
-msgstr "Stäng av enhet"
-
-msgid "Proceed"
-msgstr "Fortsätt"
-
-msgid "Reboot Device to an Alternative Partition"
-msgstr "Starta om enheten till en alternativ partition"
-
-msgid "Reboot to alternative partition..."
-msgstr "Starta om till alternativ partition..."
-
-msgid "Reboot to current partition"
-msgstr "Starta om till nuvarande partition"
-
-msgid "Rebooting..."
-msgstr "Startar om..."
-
-msgid "Shutting down..."
-msgstr "Stänger av..."
-
-msgid "Status"
-msgstr "Status"
-
-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 ""
-
-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 ""
-
-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 ""
-"Systemet stänger ner nu.<br /> STÄNG INTE AV ENHETEN!<br /> Beroende på dina "
-"inställningar så kan det vara nödvändigt att förnya din dators adress för "
-"att nå enheten igen."
-
-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 ""
-
-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 ""
-"VARNING: Att stänga av kan resultera i en omstart i en enhet som inte har "
-"stöd för avstängning.<br /><br /> Klicka på \"Fortsätt\" nedanför för att "
-"stänga av din enhet."
-
-msgid "Warning: There are unsaved changes that will get lost on reboot!"
-msgstr ""
-"Varning: Det finns osparade ändringar som kommer att förloras vid omstart!"
-
-msgid "Warning: This system does not have two partitions!"
-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!"
diff --git a/applications/luci-app-advanced-reboot/po/templates/advanced-reboot.pot b/applications/luci-app-advanced-reboot/po/templates/advanced-reboot.pot
new file mode 100644 (file)
index 0000000..47a81e1
--- /dev/null
@@ -0,0 +1,126 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+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 ""
+
+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 ""
+
+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 ""
+
+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 ""
+
+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/"
+"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 ""
+
+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 ""
+
+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/templates/luci-app-advanced-reboot.pot b/applications/luci-app-advanced-reboot/po/templates/luci-app-advanced-reboot.pot
deleted file mode 100644 (file)
index 9c81089..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-msgid ""
-msgstr "Content-Type: text/plain; charset=UTF-8"
-
-msgid "Action"
-msgstr ""
-
-msgid "Advanced Reboot"
-msgstr ""
-
-msgid "Alternative"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "Confirm"
-msgstr ""
-
-msgid "Current"
-msgstr ""
-
-msgid "Firmware/OS (Kernel)"
-msgstr ""
-
-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 ""
-
-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 ""
-
-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 ""
-
-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 ""
-
-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 ""
-
-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 ""
diff --git a/applications/luci-app-aria2/po/ru/aria2.po b/applications/luci-app-aria2/po/ru/aria2.po
new file mode 100644 (file)
index 0000000..48a522d
--- /dev/null
@@ -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 (кило) или М (мега)."
index 847ad5c..0a8c65e 100644 (file)
     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">
        </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%>
index 97aa814..7549319 100644 (file)
@@ -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 (file)
index 0000000..c2fe81d
--- /dev/null
@@ -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 (file)
index 0000000..1c43488
--- /dev/null
@@ -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 (file)
index 0000000..6658693
--- /dev/null
@@ -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 "Да"
index 0c035ab..30c84df 100644 (file)
@@ -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 ""
-"Разрешить выполнение команды и загрузку ее вывода без предварительной "
-"аÑ\83Ñ\82енÑ\82иÑ\84икаÑ\86ии"
+"Разрешить выполнение команды и загрузку ее выходных данных без ввода пароля "
+"полÑ\8cзоваÑ\82елÑ\8f"
 
 msgid "Allow the user to provide additional command line arguments"
 msgstr ""
-"РазÑ\80еÑ\88иÑ\82Ñ\8c Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8fм Ð¸Ñ\81полÑ\8cзовать дополнительные аргументы командной "
+"РазÑ\80еÑ\88иÑ\82Ñ\8c Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8e Ð¿Ñ\80едоÑ\81Ñ\82авлÑ\8fть дополнительные аргументы командной "
 "строки"
 
 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 "Ð\9aоманда Ð½Ðµ Ð²Ñ\8bполнена"
+msgstr "Ð\9eÑ\88ибка ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ\8b"
 
 msgid "Command line to execute"
 msgstr "Командная строка для выполнения"
@@ -62,7 +62,7 @@ msgid "Command:"
 msgstr "Команда:"
 
 msgid "Configure"
-msgstr "Ð\9dаÑ\81Ñ\82Ñ\80оиÑ\82Ñ\8c"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð°Ð½ÐµÐ»Ð¸ Ñ\83пÑ\80авлениÑ\8f"
 
 msgid "Custom Commands"
 msgstr "Пользовательские команды"
@@ -71,7 +71,7 @@ msgid "Custom arguments"
 msgstr "Пользовательские аргументы"
 
 msgid "Dashboard"
-msgstr "Ð\98нÑ\84оÑ\80маÑ\86ионнаÑ\8f Ð¿Ð°Ð½ÐµÐ»Ñ\8c"
+msgstr "Ð\9fанелÑ\8c Ñ\83пÑ\80авлениÑ\8f"
 
 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 "Доступ к команде через"
index a41d1f4..33ab9e7 100644 (file)
 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 позволяет вашему маршрутизатору иметь постоянное доменное "
-"имÑ\8f Ð¿Ñ\80и Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ\87еÑ\81ком IP-адресе."
+"DDNS разрешает вашему роутеру иметь постоянное доменное имя, при динамически "
+"изменÑ\8fемом 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-адрес"
index 1abaa8c..931cc2b 100644 (file)
@@ -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 "Ð\9dаÑ\81Ñ\82Ñ\80ойки диагностики"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка диагностики"
 
 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 ""
-"Ð\97апиÑ\81и Ð² Ð¼ÐµÐ½Ñ\8e позволять вам выполнить диагностику системы, чтобы помочь в "
+"Ð\9dаÑ\81Ñ\82Ñ\80ойки позволять вам выполнить диагностику системы, чтобы помочь в "
 "обнаружении проблем."
 
 msgid ""
 "With this menu you can configure network diagnostics, such as network device "
 "scans and ping tests."
 msgstr ""
-"Ð\98Ñ\81полÑ\8cзÑ\83Ñ\8f Ñ\8dÑ\82о Ð¼ÐµÐ½Ñ\8e, вы можете настроить диагностику сети, например, "
+"Ð\9dа Ñ\8dÑ\82ой Ñ\81Ñ\82Ñ\80аниÑ\86е вы можете настроить диагностику сети, например, "
 "сканирование сетевых устройств или ping-тест."
-
-#~ msgid "l_d_diag"
-#~ msgstr "l_d_diag"
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 (file)
index 0000000..385d812
--- /dev/null
@@ -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 (file)
index 0000000..844eedb
--- /dev/null
@@ -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 "Состояние"
index 463b2e0..58121c4 100644 (file)
@@ -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>
                                </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',
 
                        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>
index be16fec..3657d74 100644 (file)
@@ -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 "Ð\92Ñ\8bбиÑ\80аÑ\82Ñ\8c"
+msgstr "Ð\9fÑ\80овеÑ\80ка"
 
 msgid "Match ICMP type"
 msgstr "Соответствовать ICMP типу"
 
 msgid "Match forwarded traffic to the given destination port or port range."
 msgstr ""
-"Перенаправить соответствующий трафик на определённый порт или диапазон "
-"портов. "
+"Проверять перенаправленный трафик с заданным портом назначения или "
+"диапазоном Ð¿Ð¾Ñ\80Ñ\82ов. "
 
 msgid ""
 "Match incoming traffic directed at the given destination port or port range "
 "on this host"
 msgstr ""
-"Ð\92Ñ\8bбиÑ\80ать входящий трафик, направленный на порт или диапазон портов данного "
-"хоста"
+"Ð\9fÑ\80овеÑ\80Ñ\8fть входящий трафик, направленный на порт или диапазон портов данного "
+"хоста"
 
 msgid ""
 "Match incoming traffic originating from the given source port or port range "
 "on the client host."
 msgstr ""
-"Ð\92Ñ\8bбиÑ\80аÑ\82Ñ\8c Ð²Ñ\85одÑ\8fÑ\89ий Ñ\82Ñ\80аÑ\84ик, Ð¸Ñ\81Ñ\85одÑ\8fÑ\89ий Ð¸Ð· Ð¿Ð¾Ñ\80Ñ\82а Ð¸Ð»Ð¸ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° Ð¿Ð¾Ñ\80Ñ\82ов "
-"клиенÑ\82Ñ\81кого Ñ\85оÑ\81Ñ\82а."
+"Ð\9fÑ\80овеÑ\80Ñ\8fÑ\82Ñ\8c Ð²Ñ\85одÑ\8fÑ\89ий Ñ\82Ñ\80аÑ\84ик, Ð¸Ñ\81Ñ\85одÑ\8fÑ\89ий Ð¾Ñ\82 Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ Ð¸Ñ\81Ñ\85одного Ð¿Ð¾Ñ\80Ñ\82а Ð¸Ð»Ð¸ "
+"диапазона Ð¿Ð¾Ñ\80Ñ\82ов Ð½Ð° ÐºÐ»Ð¸ÐµÐ½Ñ\82Ñ\81кого Ñ\85оÑ\81Ñ\82а. "
 
 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 ""
-"Ð\94аннаÑ\8f Ñ\81екÑ\86иÑ\8f Ð¿Ð¾Ð·Ð²Ð¾Ð»Ñ\8fеÑ\82 Ð¸Ð·Ð¼ÐµÐ½Ñ\8fÑ\82Ñ\8c Ð¾Ð±Ñ\89ие Ð½Ð°Ñ\81Ñ\82Ñ\80ойки %q. Ð\9eпÑ\86ии <em>вÑ\85одÑ\8fÑ\89ий</em> "
-"и <em>исходящий</em> устанавливают политику по умолчанию для входящего и "
-"иÑ\81Ñ\85одÑ\8fÑ\89его Ñ\82Ñ\80аÑ\84ика. Ð\9eпÑ\86иÑ\8f <em>пеÑ\80енапÑ\80авление</em> Ð¿Ð¾Ð·Ð²Ð¾Ð»Ñ\8fеÑ\82 Ñ\83Ñ\81Ñ\82ановиÑ\82Ñ\8c "
-"политику для трафика, который перенаправляется через несколько сетей в зоне. "
-"Пункт <em>использовать сети</em> позволяет указать, какие сети являются "
-"частью данной зоны."
+"СÑ\82Ñ\80аниÑ\86а Ñ\81одеÑ\80жиÑ\82 Ð¾Ð±Ñ\89ие Ñ\81войÑ\81Ñ\82ва %q. Ð ÐµÐ¶Ð¸Ð¼Ñ\8b <em>'Ð\92Ñ\85одÑ\8fÑ\89ий'</em> Ð¸ "
+"<em>'Исходящий'</em> устанавливают политики по умолчанию для трафика, "
+"поÑ\81Ñ\82Ñ\83паÑ\8eÑ\89его Ð¸ Ð¿Ð¾ÐºÐ¸Ð´Ð°Ñ\8eÑ\89его Ñ\8dÑ\82Ñ\83 Ð·Ð¾Ð½Ñ\83, Ð² Ñ\82о Ð²Ñ\80емÑ\8f ÐºÐ°Ðº Ñ\80ежим "
+"<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 (file)
index 0000000..2e67e0d
--- /dev/null
@@ -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"
index e58a32f..e776760 100644 (file)
@@ -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 "Ð\9dаÑ\81Ñ\82Ñ\80ойки"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка"
 
-# 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 (file)
index 0000000..55de0ad
--- /dev/null
@@ -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"
index eb6f417..dc2e0da 100644 (file)
@@ -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"))
index 34a9f1f..841a5e7 100644 (file)
@@ -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 (file)
index 0000000..f3f7a55
--- /dev/null
@@ -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 "недоступен (отклонить)"
index ed9fdb1..a993a81 100644 (file)
@@ -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 ""
 
index d0b92a6..966f53c 100644 (file)
@@ -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 "高级"
index 04711ac..d4a652a 100644 (file)
@@ -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 (file)
index 0000000..76fd9f6
--- /dev/null
@@ -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 (file)
index 0000000..85f010e
--- /dev/null
@@ -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"
index 534770f..9e6d134 100644 (file)
@@ -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 "Ð\9cаÑ\81ка Ð´Ð¸Ñ\80екÑ\82оÑ\80ии"
+msgstr "Ð\9cаÑ\81ка Ð¿Ð°Ð¿Ð¾Ðº"
 
 msgid "Edit Template"
-msgstr "РедакÑ\82иÑ\80оваÑ\82Ñ\8c Ñ\88аблон"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка config Ñ\84айла"
 
 msgid "Edit the template that is used for generating the samba configuration."
-msgstr "РедакÑ\82иÑ\80оваÑ\82Ñ\8c Ñ\88аблон, Ð¸Ñ\81полÑ\8cзÑ\83емÑ\8bй Ð´Ð»Ñ\8f Ð³ÐµÐ½ÐµÑ\80аÑ\86ии ÐºÐ¾Ð½Ñ\84игÑ\83Ñ\80аÑ\86ии samba."
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка config Ñ\84айла samba."
 
 msgid "General Settings"
-msgstr "Общие настройки"
+msgstr "Основные настройки"
 
 msgid "Hostname"
 msgstr "Имя хоста"
 
 msgid "Mask for new directories"
-msgstr "Ð\9cаÑ\81ка Ð´Ð»Ñ\8f Ð½Ð¾Ð²Ñ\8bÑ\85 Ð´Ð¸Ñ\80екÑ\82оÑ\80ий"
+msgstr "Ð\9cаÑ\81ка Ð´Ð»Ñ\8f Ð½Ð¾Ð²Ñ\8bÑ\85 Ð¿Ð°Ð¿Ð¾Ðº"
 
 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 "СовмеÑ\81Ñ\82но Ð¸Ñ\81полÑ\8cзоваÑ\82Ñ\8c Ð´Ð¾Ð¼Ð°Ñ\88ние Ð´Ð¸Ñ\80екÑ\82оÑ\80ии"
+msgstr "СовмеÑ\81Ñ\82но Ð¸Ñ\81полÑ\8cзоваÑ\82Ñ\8c Ð´Ð¾Ð¼Ð°Ñ\88ние Ð¿Ð°Ð¿Ðºи"
 
 msgid "Shared Directories"
-msgstr "СовмеÑ\81Ñ\82но Ð¸Ñ\81полÑ\8cзÑ\83емÑ\8bе Ð´Ð¸Ñ\80екÑ\82оÑ\80ии"
+msgstr "СовмеÑ\81Ñ\82но Ð¸Ñ\81полÑ\8cзÑ\83емÑ\8bе Ð¿Ð°Ð¿Ðºи"
 
 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 "Рабочая группа"
index 22f3106..19f5ddc 100644 (file)
@@ -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
index 7ba6b40..fc51dcd 100644 (file)
@@ -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 (file)
index 0000000..da06322
--- /dev/null
@@ -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 (file)
index 0000000..51e56b3
--- /dev/null
@@ -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 "Нет"
index 3f470db..bfee7ef 100644 (file)
@@ -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 ""
-"Ð\9fожалÑ\83йÑ\81Ñ\82а, Ð¾Ð±Ñ\80аÑ\82иÑ\82е Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ðµ, Ñ\87Ñ\82о Ð¼Ñ\8b Ð½Ðµ Ð¸Ð½Ñ\82еÑ\80неÑ\82-пÑ\80овайдеÑ\80, Ð° "
-"Ñ\8dкÑ\81пеÑ\80именÑ\82алÑ\8cнаÑ\8f Ñ\81еÑ\82Ñ\8c Ñ\81ообÑ\89еÑ\81Ñ\82ва."
+"Ð\9eбÑ\80аÑ\82иÑ\82е Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ðµ, Ñ\87Ñ\82о Ð¼Ñ\8b Ð½Ðµ Ð¸Ð½Ñ\82еÑ\80неÑ\82-пÑ\80овайдеÑ\80, Ð° Ñ\81ообÑ\89еÑ\81Ñ\82во "
+"Ñ\8dкÑ\81пеÑ\80именÑ\82алÑ\8cной Ñ\81еÑ\82и ."
 
 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 "Ð\9bимиÑ\82 Ð¾Ñ\82даÑ\87и"
+msgstr "Ð\9fÑ\80едел Ð·Ð°Ð³Ñ\80Ñ\83зки"
 
 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 "в Белом списке"
index a63a850..098ed4c 100644 (file)
@@ -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 "Ð\9fользователь"
 
 #. %H: Process %pi - threads and processes
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39
index 9d0ff9f..702dbe7 100644 (file)
@@ -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 "Ð\91азоваÑ\8f Ð´Ð¸Ñ\80екÑ\82оÑ\80ия"
+msgstr "Ð\9eÑ\81новнаÑ\8f Ð¿Ð°Ð¿ÐºÐ° Ð¿Ñ\80иложения"
 
 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 "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f CPU"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° 'CPU'"
 
 msgid "CSV Output"
-msgstr "Вывод в CSV"
+msgstr "CSV вывод"
 
 msgid "CSV Plugin Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f CSV"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° CSV"
 
 msgid "Cache collected data for"
-msgstr "Ð\9aÑ\8dÑ\88иÑ\80оваÑ\82Ñ\8c Ñ\81обÑ\80аннÑ\83Ñ\8e Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ð² Ñ\82еÑ\87ение"
+msgstr "Ð\9aÑ\8dÑ\88иÑ\80оваÑ\82Ñ\8c Ñ\81обÑ\80аннÑ\83Ñ\8e Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ð² Ñ\82еÑ\87ении"
 
 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 - Ñ\8dÑ\82о Ñ\81еÑ\80виÑ\81 Ð´Ð»Ñ\8f Ñ\81боÑ\80а Ð´Ð°Ð½Ð½Ñ\8bÑ\85 Ñ\81 Ñ\80азнÑ\8bÑ\85 Ð¼Ð¾Ð´Ñ\83лей. Ð\9dа Ñ\8dÑ\82ой Ñ\81Ñ\82Ñ\80аниÑ\86е Ð²Ñ\8b "
-"можете изменить настройки Сollectd."
+"Collectd - Ñ\8dÑ\82о Ñ\81еÑ\80виÑ\81 Ð´Ð»Ñ\8f Ñ\81боÑ\80а Ð´Ð°Ð½Ð½Ñ\8bÑ\85 Ñ\81 Ñ\80азнÑ\8bÑ\85 Ð¿Ð»Ð°Ð³Ð¸Ð½Ð¾Ð². Ð\9dа Ñ\8dÑ\82ой Ñ\81Ñ\82Ñ\80аниÑ\86е "
+"вÑ\8b Ð¼Ð¾Ð¶ÐµÑ\82е Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ\82Ñ\8c Ð½Ð°Ñ\81Ñ\82Ñ\80ойки Ð¡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 "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f DF"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° DF"
 
 msgid "DNS"
 msgstr "DNS"
 
 msgid "DNS Plugin Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f DNS"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° DNS"
 
 msgid "Data collection interval"
 msgstr "Интервал сбора данных"
@@ -120,56 +118,55 @@ msgid "Destination ip range"
 msgstr "Диапазон IP-адресов назначения"
 
 msgid "Directory for collectd plugins"
-msgstr "Ð\94иÑ\80екÑ\82оÑ\80иÑ\8f Ñ\81 Ð¼Ð¾Ð´Ñ\83лÑ\8fми collectd"
+msgstr "Ð\9fапка Ñ\81 Ð¿Ð»Ð°Ð³Ð¸Ð½Ð°ми collectd"
 
 msgid "Directory for sub-configurations"
-msgstr "Ð\94иÑ\80екÑ\82оÑ\80иÑ\8f ÐºÐ¾Ð½Ñ\84игÑ\83Ñ\80аÑ\86ий"
+msgstr "Ð\9fапка Ñ\81 config Ñ\84айлом"
 
 msgid "Disk Plugin Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f Disk"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° Disk"
 
 msgid "Disk Space Usage"
-msgstr "Ð\98Ñ\81полÑ\8cзование Ð´Ð¸Ñ\81ка"
+msgstr "Ð\98Ñ\81полÑ\8cзовано Ð¼ÐµÑ\81Ñ\82а Ð½Ð° Ð´Ð¸Ñ\81ке"
 
 msgid "Disk Usage"
 msgstr "Использование диска"
 
 msgid "Display Host »"
-msgstr "Ð\9fоказаÑ\82Ñ\8c Ñ\83зел »"
+msgstr "Ð\9fоказаÑ\82Ñ\8c Ñ\85оÑ\81Ñ\82 »"
 
 msgid "Display timespan »"
 msgstr "Показать за промежуток »"
 
 msgid "E-Mail Plugin Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f E-Mail"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° E-Mail"
 
 msgid "Email"
 msgstr "E-mail"
 
 msgid "Empty value = monitor all"
-msgstr ""
+msgstr "Если пусто = monitor all"
 
 msgid "Enable this plugin"
-msgstr "Ð\92клÑ\8eÑ\87иÑ\82Ñ\8c Ñ\8dÑ\82оÑ\82 Ð¼Ð¾Ð´Ñ\83лÑ\8c"
+msgstr "Ð\92клÑ\8eÑ\87иÑ\82Ñ\8c Ñ\8dÑ\82оÑ\82 Ð¿Ð»Ð°Ð³Ð¸Ð½"
 
 msgid "Entropy"
-msgstr ""
+msgstr "Entropy"
 
 msgid "Entropy Plugin Configuration"
-msgstr ""
+msgstr "Настройка плагина Entropy"
 
 msgid "Exec"
 msgstr "Exec"
 
 msgid "Exec Plugin Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f Exec"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° Exec"
 
-#, fuzzy
 msgid "Filter class monitoring"
-msgstr "Ð\9cониÑ\82оÑ\80инг ÐºÐ»Ð°Ñ\81Ñ\81ов фильтров"
+msgstr "Ð\9cониÑ\82оÑ\80инг ÐºÐ»Ð°Ñ\81Ñ\81а фильтров"
 
 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 ""
-"Ð\97деÑ\81Ñ\8c Ð²Ñ\8b Ð¼Ð¾Ð¶ÐµÑ\82е Ð¾Ð¿Ñ\80еделиÑ\82Ñ\8c Ð²Ð½ÐµÑ\88ние ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ\8b, ÐºÐ¾Ñ\82оÑ\80Ñ\8bе Ð±Ñ\83дÑ\83Ñ\82 Ð²Ñ\8bполненÑ\8b, ÐºÐ¾Ð³Ð´Ð° "
-"знаÑ\87ениÑ\8f Ð´Ð¾Ñ\81Ñ\82игнÑ\83Ñ\82 Ð¾Ð¿Ñ\80еделÑ\91нного порога. Значения будут переданы на "
+"Ð\9dа Ñ\81Ñ\82Ñ\80аниÑ\86е Ð²Ñ\8b Ð¼Ð¾Ð¶ÐµÑ\82е Ð¾Ð¿Ñ\80еделиÑ\82Ñ\8c  Ð²Ð½ÐµÑ\88ние ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ\8b, ÐºÐ¾Ñ\82оÑ\80Ñ\8bе Ð±Ñ\83дÑ\83Ñ\82 Ð²Ñ\8bполненÑ\8b, "
+"когда Ð·Ð½Ð°Ñ\87ениÑ\8f Ð´Ð¾Ñ\81Ñ\82игнÑ\83Ñ\82 Ð¾Ð¿Ñ\80еделенного порога. Значения будут переданы на "
 "стандартный ввод вызванным программам."
 
 msgid ""
 "Here you can define various criteria by which the monitored iptables rules "
 "are selected."
 msgstr ""
-"Ð\97деÑ\81Ñ\8c Ð²Ñ\8b Ð¼Ð¾Ð¶ÐµÑ\82е Ñ\83казаÑ\82Ñ\8c Ñ\80азлиÑ\87нÑ\8bе ÐºÑ\80иÑ\82еÑ\80ии, Ð¿Ð¾ ÐºÐ¾Ñ\82оÑ\80Ñ\8bм Ð±Ñ\83дÑ\83Ñ\82 Ð²Ñ\8bбÑ\80анÑ\8b Ð¿Ñ\80авила "
-"для сбора статистики."
+"Ð\9dа Ñ\81Ñ\82Ñ\80аниÑ\86е Ð²Ñ\8b Ð¼Ð¾Ð¶ÐµÑ\82е Ñ\83казаÑ\82Ñ\8c Ñ\80азлиÑ\87нÑ\8bе ÐºÑ\80иÑ\82еÑ\80ии, Ð¿Ð¾ ÐºÐ¾Ñ\82оÑ\80Ñ\8bм Ð±Ñ\83дÑ\83Ñ\82 Ð²Ñ\8bбÑ\80анÑ\8b "
+"пÑ\80авила Ð´Ð»Ñ\8f Ñ\81боÑ\80а Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82ики."
 
 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 "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f IRQ"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° IRQ"
 
 msgid "Ignore source addresses"
-msgstr "Ð\98гноÑ\80иÑ\80оваÑ\82Ñ\8c Ð°Ð´Ñ\80еÑ\81а-иÑ\81Ñ\82оÑ\87ники"
+msgstr "Ð\98гноÑ\80иÑ\80оваÑ\82Ñ\8c Ð¸Ñ\81Ñ\85одÑ\8fÑ\89ие Ð°Ð´Ñ\80еÑ\81а"
 
 msgid "Incoming interface"
 msgstr "Входящий интерфейс"
 
 msgid "Interface Plugin Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f Interface"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° 'Ð\98нÑ\82еÑ\80Ñ\84ейÑ\81Ñ\8b'"
 
 msgid "Interfaces"
 msgstr "Интерфейсы"
@@ -249,7 +249,7 @@ msgid "Interval for pings"
 msgstr "Интервал для ping-запросов"
 
 msgid "Iptables Plugin Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f Iptables"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° Iptables"
 
 msgid "Leave unselected to automatically determine interfaces to monitor."
 msgstr ""
@@ -257,30 +257,32 @@ msgstr ""
 "мониторинга."
 
 msgid "Listen host"
-msgstr "Ð¥ост"
+msgstr "СлÑ\83Ñ\88аÑ\82Ñ\8c Ñ\85ост"
 
 msgid "Listen port"
-msgstr "Ð\9fорт"
+msgstr "СлÑ\83Ñ\88аÑ\82Ñ\8c Ð¿орт"
 
 msgid "Listener interfaces"
-msgstr "Ð\98Ñ\81полÑ\8cзовать интерфейсы"
+msgstr "Ð\9fÑ\80оÑ\81лÑ\83Ñ\88ивать интерфейсы"
 
 msgid "Load Plugin Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f Load"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° 'Ð\97агÑ\80Ñ\83зка Ñ\81иÑ\81Ñ\82емÑ\8b'"
 
 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 "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f Memory"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° 'Ð\9fамÑ\8fÑ\82Ñ\8c'"
 
 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 "СобиÑ\80аÑ\82Ñ\8c Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ñ\81 Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82в"
+msgstr "Ð\9cониÑ\82оÑ\80иÑ\82Ñ\8c Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82ва"
 
 msgid "Monitor disks and partitions"
-msgstr "СобиÑ\80аÑ\82Ñ\8c Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ñ\81 Ð´Ð¸Ñ\81ков Ð¸ Ñ\80азделов"
+msgstr "Ð\9cониÑ\82оÑ\80иÑ\82Ñ\8c Ð´Ð¸Ñ\81ки Ð¸ Ñ\80азделÑ\8b"
 
 msgid "Monitor filesystem types"
-msgstr "СобиÑ\80аÑ\82Ñ\8c Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ñ\81 файловых систем"
+msgstr "Ð\9cониÑ\82оиÑ\82Ñ\8c Ñ\82ипÑ\8b файловых систем"
 
 msgid "Monitor host"
-msgstr ""
+msgstr "Мониторить хост"
 
 msgid "Monitor hosts"
-msgstr "СобиÑ\80аÑ\82Ñ\8c Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ñ\81 Ñ\85оÑ\81Ñ\82ов"
+msgstr "Ð\9cониÑ\82оÑ\80иÑ\82Ñ\8c Ñ\85оÑ\81Ñ\82Ñ\8b"
 
 msgid "Monitor interfaces"
-msgstr "СобиÑ\80аÑ\82Ñ\8c Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ñ\81 Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81ов"
+msgstr "Ð\9cониÑ\82оÑ\80иÑ\82Ñ\8c Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81Ñ\8b"
 
 msgid "Monitor interrupts"
-msgstr "СобиÑ\80аÑ\82Ñ\8c Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ð¿Ð¾ Ð¿Ñ\80еÑ\80Ñ\8bваниÑ\8fм"
+msgstr "Ð\9cониÑ\82оÑ\80иÑ\82Ñ\8c Ð¿Ñ\80еÑ\80Ñ\8bваниÑ\8f"
 
 msgid "Monitor local ports"
-msgstr "СобиÑ\80аÑ\82Ñ\8c Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ñ\81 Ð»Ð¾ÐºÐ°Ð»Ñ\8cнÑ\8bÑ\85 Ð¿Ð¾Ñ\80Ñ\82ов"
+msgstr "Ð\9cониÑ\82оÑ\80иÑ\82Ñ\8c Ð»Ð¾ÐºÐ°Ð»Ñ\8cнÑ\8bе Ð¿Ð¾Ñ\80Ñ\82Ñ\8b"
 
 msgid "Monitor mount points"
-msgstr "СобиÑ\80аÑ\82Ñ\8c Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ñ\81 Ñ\82оÑ\87ек монтирования"
+msgstr "Ð\9cониÑ\82оÑ\80иÑ\82Ñ\8c Ñ\82оÑ\87ки монтирования"
 
 msgid "Monitor processes"
-msgstr "СобиÑ\80аÑ\82Ñ\8c Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ñ\81 Ð¿Ñ\80оÑ\86еÑ\81Ñ\81ов"
+msgstr "Ð\9cониÑ\82оÑ\80иÑ\82Ñ\8c Ð¿Ñ\80оÑ\86еÑ\81Ñ\81Ñ\8b"
 
 msgid "Monitor remote ports"
-msgstr "СобиÑ\80аÑ\82Ñ\8c Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ñ\81 Ñ\83далÑ\91ннÑ\8bÑ\85 Ð¿Ð¾Ñ\80Ñ\82ов"
+msgstr "Ð\9cониÑ\82оÑ\80иÑ\82Ñ\8c Ñ\83даленнÑ\8bе Ð¿Ð¾Ñ\80Ñ\82Ñ\8b"
 
 msgid "Name of the rule"
-msgstr "Ð\9dазвание правила"
+msgstr "Ð\98мÑ\8f правила"
 
 msgid "Netlink"
 msgstr "Netlink"
 
 msgid "Netlink Plugin Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f Netlink"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° 'Netlink'"
 
 msgid "Network"
 msgstr "Network"
 
 msgid "Network Plugin Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f Network"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° 'СеÑ\82Ñ\8c'"
 
 msgid "Network plugins"
-msgstr "СеÑ\82евÑ\8bе Ð¼Ð¾Ð´Ñ\83ли"
+msgstr "СеÑ\82евÑ\8bе Ð¿Ð»Ð°Ð³Ð¸Ð½Ñ\8b"
 
 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 "Ð\9eпÑ\86ии"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойки"
 
 msgid "Outgoing interface"
 msgstr "Исходящий интерфейс"
 
 msgid "Output plugins"
-msgstr "Ð\9cодÑ\83ли вывода"
+msgstr "Ð\9fлагинÑ\8b вывода"
 
 msgid "Ping"
 msgstr "Ping"
 
 msgid "Ping Plugin Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f Ping"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° Ping"
 
 msgid "Port"
 msgstr "Порт"
 
 msgid "Port for apcupsd communication"
-msgstr ""
+msgstr "Порт для связи apcupsd"
 
 msgid "Processes"
 msgstr "Процессы"
 
 msgid "Processes Plugin Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f Processes"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° 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 "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f RRDTool"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° '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 "Ð\94иÑ\80екÑ\82оÑ\80иÑ\8f с данными"
+msgstr "Ð\9fапка с данными"
 
 msgid "Storage directory for the csv files"
-msgstr "Ð\94иÑ\80екÑ\82оÑ\80иÑ\8f для CSV-файлов"
+msgstr "Ð\9fапка для 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 "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f TCPConns"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° 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 ""
-"Ð\9cодÑ\83лÑ\8c OLSRd Ñ\81Ñ\87иÑ\82Ñ\8bваеÑ\82 Ð¸Ð½Ñ\84оÑ\80маÑ\86иÑ\8e Ð¾ Ñ\83зловÑ\8bÑ\85 Ñ\81еÑ\82Ñ\8fÑ\85 Ñ\81 Ð¼Ð¾Ð´Ñ\83лÑ\8f txtinfo OLSRd."
+"Ð\9fлагин 'OLSRd' Ñ\81Ñ\87иÑ\82Ñ\8bваеÑ\82 Ð¸Ð½Ñ\84оÑ\80маÑ\86иÑ\8e Ð¾ Ñ\83зловÑ\8bÑ\85 Ñ\81еÑ\82Ñ\8fÑ\85 Ñ\81 Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° 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 ""
-"Ð\9cодÑ\83лÑ\8c Conntrack собирает статистику о количестве отслеживаемых соединений."
+"Ð\9fлагин 'Conntrack' собирает статистику о количестве отслеживаемых соединений."
 
 msgid "The cpu plugin collects basic statistics about the processor usage."
-msgstr "Ð\9cодÑ\83лÑ\8c CPU Ñ\81обиÑ\80аеÑ\82 Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ð¿Ð¾ Ð¸Ñ\81полÑ\8cзованиÑ\8e процессора."
+msgstr "Ð\9fлагин 'CPU' Ñ\81обиÑ\80аеÑ\82 Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ð¾Ð± Ð¸Ñ\81полÑ\8cзовании процессора."
 
 msgid ""
 "The csv plugin stores collected data in csv file format for further "
 "processing by external programs."
 msgstr ""
-"Ð\9cодÑ\83лÑ\8c CSV позволяет сохранить статистику в формате CSV для последующей "
+"Ð\9fлагин 'CSV' позволяет сохранить статистику в формате CSV для последующей "
 "обработки."
 
 msgid ""
 "The df plugin collects statistics about the disk space usage on different "
 "devices, mount points or filesystem types."
 msgstr ""
-"Ð\9cодÑ\83лÑ\8c DF собирает статистику о доступном пространстве на различных "
+"Ð\9fлагин 'DF' собирает статистику о доступном пространстве на различных "
 "устройствах, точках монтирования или файловых системах."
 
 msgid ""
 "The disk plugin collects detailled usage statistics for selected partitions "
 "or whole disks."
 msgstr ""
-"Ð\9cодÑ\83лÑ\8c Disk Ñ\81обиÑ\80аеÑ\82 Ð¿Ð¾Ð´Ñ\80обнÑ\83Ñ\8e Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ð´Ð»Ñ\8f Ð²Ñ\8bбÑ\80аннÑ\8bÑ\85 Ñ\80азделов Ð¸Ð»Ð¸ Ð´Ð¸Ñ\81ков."
+"Ð\9fлагин 'Disk' Ñ\81обиÑ\80аеÑ\82 Ð¿Ð¾Ð´Ñ\80обнÑ\83Ñ\8e Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ð¿Ð¾ Ð²Ñ\8bбÑ\80аннÑ\8bм Ñ\80азделам Ð¸Ð»Ð¸ Ð´Ð¸Ñ\81кам."
 
 msgid ""
 "The dns plugin collects detailled statistics about dns related traffic on "
 "selected interfaces."
 msgstr ""
-"Ð\9cодÑ\83лÑ\8c DNS Ñ\81обиÑ\80аеÑ\82 Ð¿Ð¾Ð´Ñ\80обнÑ\83Ñ\8e Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ð¾ DNS-трафике на выбранных "
+"Ð\9fлагин 'DNS' Ñ\81обиÑ\80аеÑ\82 Ð¿Ð¾Ð´Ñ\80обнÑ\83Ñ\8e Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ð¾ 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 ""
-"Ð\9cодÑ\83лÑ\8c E-mail создает Unix-сокет, который может быть использован для "
-"передачи статистики эл. почты работающему сервису collectd. В основном, этот "
-"модÑ\83лÑ\8c предназначен для использования вместе с Mail::SpamAssasin::Plugin::"
+"Ð\9fлагин '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 ""
-"Ð\9cодÑ\83лÑ\8c Exec Ð²Ñ\8bполнÑ\8fеÑ\82 Ð²Ð½ÐµÑ\88нÑ\8eÑ\8e ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ\83 Ð² Ñ\81лÑ\83Ñ\87ае, ÐºÐ¾Ð³Ð´Ð° Ð¾Ð¿Ñ\80еделÑ\91ннÑ\8bе Ð·Ð½Ð°Ñ\87ениÑ\8f "
-"достигают заданного порога."
+"Ð\9fлагин 'Exec' Ð²Ñ\8bполнÑ\8fеÑ\82 Ð²Ð½ÐµÑ\88нÑ\8eÑ\8e ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ\83 Ð² Ñ\81лÑ\83Ñ\87ае, ÐºÐ¾Ð³Ð´Ð° Ð¾Ð¿Ñ\80еделеннÑ\8bе "
+"знаÑ\87ениÑ\8f Ð´Ð¾Ñ\81Ñ\82игаÑ\8eÑ\82 Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ Ð¿Ð¾Ñ\80ога."
 
 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 ""
-"Ð\9cодÑ\83лÑ\8c IRQ собирает статистику по выбранным прерываниям. Если ни одно "
+"Ð\9fлагин '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 "Ð\9cодÑ\83лÑ\8c Load собирает статистику о загрузке системы."
+msgstr "Ð\9fлагин 'Ð\97агÑ\80Ñ\83зка Ñ\81иÑ\81Ñ\82емÑ\8b' собирает статистику о загрузке системы."
 
 msgid "The memory plugin collects statistics about the memory usage."
-msgstr "Ð\9cодÑ\83лÑ\8c Memory собирает статистику об использовании памяти."
+msgstr "Ð\9fлагин 'Ð\9fамÑ\8fÑ\82Ñ\8c' собирает статистику об использовании памяти."
 
 msgid ""
 "The netlink plugin collects extended informations like qdisc-, class- and "
 "filter-statistics for selected interfaces."
 msgstr ""
-"Ð\9cодÑ\83лÑ\8c Netlink собирает расширенную статистику с выбранных интерфейсов."
+"Ð\9fлагин '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 ""
-"Ð\9cодÑ\83лÑ\8c Network предоставляет возможность сетевого обмена данными между "
+"Ð\9fлагин 'СеÑ\82Ñ\8c' предоставляет возможность сетевого обмена данными между "
 "разными сервисами 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 ""
-"Ð\9cодÑ\83лÑ\8c Processes Ñ\81обиÑ\80аеÑ\82 Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ð´Ð»Ñ\8f Ð²Ñ\8bбÑ\80аннÑ\8bÑ\85 Ð¿Ñ\80оÑ\86еÑ\81Ñ\81ов Ð¾Ð± "
-"использовании ЦП, ошибках обращения к страницам памяти, использовании памяти."
+"Ð\9fлагин 'Processes' Ñ\81обиÑ\80аеÑ\82 Ð¸Ð½Ñ\84оÑ\80маÑ\86иÑ\8e, Ñ\82акÑ\83Ñ\8e ÐºÐ°Ðº Ð²Ñ\80емÑ\8f CPU, Ð¾Ñ\88ибки Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\8b "
+"и использование памяти выбранных процессов."
 
 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 ""
-"Ð\9cодÑ\83лÑ\8c Rrdtool сохраняет статистику в формате rrd для последующего "
+"Ð\9fлагин '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 ""
-"Ð\9cодÑ\83лÑ\8c TCPConns Ñ\81обиÑ\80аеÑ\82 Ð¸Ð½Ñ\84оÑ\80маÑ\86иÑ\8e Ð¾Ð± Ð¾Ñ\82кÑ\80Ñ\8bÑ\82Ñ\8bÑ\85 TCP-Ñ\81оединениÑ\8fÑ\85 Ð½Ð° Ð²Ñ\8bбÑ\80аннÑ\8bÑ\85 "
-"портах."
+"Ð\9fлагин 'TCPConns' Ñ\81обиÑ\80аеÑ\82 Ð¸Ð½Ñ\84оÑ\80маÑ\86иÑ\8e Ð¾Ð± Ð¾Ñ\82кÑ\80Ñ\8bÑ\82Ñ\8bÑ\85 TCP Ñ\81оединениÑ\8fÑ\85 Ð½Ð° "
+"вÑ\8bбÑ\80аннÑ\8bÑ\85 Ð¿Ð¾Ñ\80Ñ\82аÑ\85."
 
 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 ""
-"Ð\9cодÑ\83лÑ\8c UnixSock создает Unix-сокет, который может быть использован для "
+"Ð\9fлагин '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 "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f UnixSock"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° 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 "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f Iwinfo"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° 'Ð\91еÑ\81пÑ\80оводнÑ\8bе Ñ\81оединениÑ\8f'"
 
 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"
index f9a3c23..1e177f7 100644 (file)
@@ -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> перенаправляет запросы на заданные узлы через "
-"Ñ\83казаннÑ\8bй Ð¿Ñ\80окÑ\81и, <em>Ð\9eÑ\82клонÑ\8fÑ\82Ñ\8c Ð´Ð¾Ñ\81Ñ\82Ñ\83п</em> Ð¾Ñ\82клÑ\8eÑ\87аеÑ\82 Ð¸Ñ\81полÑ\8cзование Ð¿Ñ\80окÑ\81и "
-"длÑ\8f Ð²Ñ\81еÑ\85 Ñ\83злов"
+"<em>'Через прокси'</em> перенаправляет запросы на заданные узлы через "
+"Ñ\83казаннÑ\8bй Ð²Ð¾Ñ\81Ñ\85одÑ\8fÑ\89ий Ð¿Ñ\80окÑ\81и-Ñ\81еÑ\80веÑ\80, <em>'Ð\9eÑ\82клонÑ\8fÑ\82Ñ\8c Ð´Ð¾Ñ\81Ñ\82Ñ\83п'</em> Ð¾Ñ\82клÑ\8eÑ\87аеÑ\82 "
+"иÑ\81полÑ\8cзование Ð¿Ñ\80окÑ\81и-Ñ\81еÑ\80веÑ\80 Ð´Ð»Ñ\8f Ð²Ñ\81еÑ\85 Ñ\83злов."
 
 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 "Ð\90дÑ\80еÑ\81 Ð¿Ñ\80ивÑ\8fзки"
+msgstr "Ð\9fÑ\80ивÑ\8fзка Ð°Ð´Ñ\80еÑ\81а"
 
 msgid ""
 "By default, basic POSIX expressions are used for filtering. Enable this to "
 "activate extended regular expressions"
 msgstr ""
-"РазÑ\80еÑ\88иÑ\82Ñ\8c Ð¸Ñ\81полÑ\8cзование Ñ\80аÑ\81Ñ\88иÑ\80еннÑ\8bÑ\85 Ñ\80егÑ\83лÑ\8fÑ\80нÑ\8bÑ\85 Ð²Ñ\8bÑ\80ажений Ð´Ð»Ñ\8f Ñ\84илÑ\8cÑ\82Ñ\80аÑ\86ии. Ð\9fо "
-"Ñ\83молÑ\87аниÑ\8e, Ð¸Ñ\81полÑ\8cзÑ\83Ñ\8eÑ\82Ñ\81Ñ\8f Ð±Ð°Ð·Ð¾Ð²Ñ\8bе POSIX-вÑ\8bÑ\80ажениÑ\8f"
+"Ð\9fо Ñ\83молÑ\87аниÑ\8e Ð´Ð»Ñ\8f Ñ\84илÑ\8cÑ\82Ñ\80аÑ\86ии Ð¸Ñ\81полÑ\8cзÑ\83Ñ\8eÑ\82Ñ\81Ñ\8f Ð±Ð°Ð·Ð¾Ð²Ñ\8bе POSIX-вÑ\8bÑ\80ажениÑ\8f. Ð\92клÑ\8eÑ\87иÑ\82Ñ\8c "
+"Ñ\8dÑ\82Ñ\83 Ñ\84Ñ\83нкÑ\86иÑ\8e Ð´Ð»Ñ\8f Ð°ÐºÑ\82иваÑ\86ии Ñ\80аÑ\81Ñ\88иÑ\80еннÑ\8bÑ\85 Ñ\80егÑ\83лÑ\8fÑ\80нÑ\8bÑ\85 Ð²Ñ\8bÑ\80ажений."
 
 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 ""
-"По умолчанию, фильтрация выполняется на основе имени домена. Включите эту "
-"опÑ\86иÑ\8e, Ñ\87Ñ\82обÑ\8b Ñ\84илÑ\8cÑ\82Ñ\80оваÑ\82Ñ\8c Ð¿Ñ\80и Ð¿Ð¾Ð¼Ð¾Ñ\89и URL"
+"По умолчанию фильтрация выполняется на основе доменных имен. Включите это "
+"длÑ\8f Ñ\81опоÑ\81Ñ\82авлениÑ\8f Ñ\81 URL-адÑ\80еÑ\81ами."
 
 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 "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка"
 
 msgid "Connection timeout"
 msgstr "Таймаут соединения"
@@ -91,34 +89,34 @@ msgid "Error page"
 msgstr "Страница ошибки"
 
 msgid "Failed to retrieve statistics from url:"
-msgstr "Ð\9eÑ\88ибка Ð¿Ð¾Ð»Ñ\83Ñ\87ениÑ\8f Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82ики Ð¿Ð¾ URL:"
+msgstr "Ð\9dе Ñ\83далоÑ\81Ñ\8c Ð¿Ð¾Ð»Ñ\83Ñ\87иÑ\82Ñ\8c Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ð¿Ð¾ URL-адÑ\80еÑ\81Ñ\83:"
 
 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-Ñ\88аблон Ð´Ð»Ñ\8f Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82ики Ñ\85оÑ\81Ñ\82ов"
+msgstr "HTML-Ñ\84айл Ñ\88аблона Ð´Ð»Ñ\8f Ð²Ñ\8bвода Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82ики Ñ\85оÑ\81Ñ\82ов."
 
 msgid "HTML template file to serve when HTTP errors occur"
-msgstr "HTML-Ñ\88аблон Ð´Ð»Ñ\8f Ð²Ñ\8bвода Ð¾Ñ\88ибок HTTP"
+msgstr "HTML-Ñ\84айл Ñ\88аблона Ð´Ð»Ñ\8f Ð²Ñ\8bвода Ð¾Ñ\88ибок 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 "Ð\90дрес"
+msgstr "СлÑ\83Ñ\88аÑ\82Ñ\8c Ð°дрес"
 
 msgid "Listen port"
-msgstr "Ð\9fорт"
+msgstr "СлÑ\83Ñ\88аÑ\82Ñ\8c Ð¿орт"
 
 msgid "Log file"
-msgstr "Файл журналирования"
+msgstr "Файл системного журнала"
 
 msgid "Log file to use for dumping messages"
-msgstr "Файл для записи сообщений"
+msgstr "Файл системного журнала, используемый для сброса сообщений"
 
 msgid "Log level"
-msgstr "УÑ\80овенÑ\8c журналирования"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка журналирования"
 
 msgid "Logging verbosity of the Tinyproxy process"
-msgstr "УÑ\80овенÑ\8c Ð¿Ð¾Ð´Ñ\80обноÑ\81Ñ\82и Ð¶Ñ\83Ñ\80налиÑ\80ованиÑ\8f Ð¿Ñ\80оÑ\86еÑ\81Ñ\81а Tinyproxy"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð¾Ð´Ñ\80обного Ð¶Ñ\83Ñ\80налиÑ\80ованиÑ\8f Ð¿Ñ\80оÑ\86еÑ\81Ñ\81ов 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 "Ð\9cакÑ\81ималÑ\8cное ÐºÐ¾Ð»Ð¸Ñ\87еÑ\81Ñ\82во Ð³Ð¾Ñ\82овÑ\8bÑ\85 Ðº Ð¾Ð±Ñ\80абоÑ\82ке процессов"
+msgstr "Ð\9cакÑ\81ималÑ\8cное ÐºÐ¾Ð»Ð¸Ñ\87еÑ\81Ñ\82во Ð¿Ð¾Ð´Ð³Ð¾Ñ\82овленнÑ\8bÑ\85 Ð±ÐµÐ·Ð´ÐµÐ¹Ñ\81Ñ\82вÑ\83Ñ\8eÑ\89иÑ\85 процессов"
 
 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 "Ð\9cинималÑ\8cное ÐºÐ¾Ð»Ð¸Ñ\87еÑ\81Ñ\82во Ð³Ð¾Ñ\82овÑ\8bÑ\85 Ðº Ð¾Ð±Ñ\80абоÑ\82ке процессов"
+msgstr "Ð\9cинималÑ\8cное ÐºÐ¾Ð»Ð¸Ñ\87еÑ\81Ñ\82во Ð¿Ð¾Ð´Ð³Ð¾Ñ\82овленнÑ\8bÑ\85 Ð±ÐµÐ·Ð´ÐµÐ¹Ñ\81Ñ\82вÑ\83Ñ\8eÑ\89иÑ\85 процессов"
 
 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 "Ð\9eпÑ\80еделÑ\8fеÑ\82 Ð¿Ð¾Ñ\80Ñ\82 HTTP, Ð½Ð° ÐºÐ¾Ñ\82оÑ\80ом Tinyproxy Ð¾Ð¶Ð¸Ð´ает запросы"
+msgstr "УказÑ\8bваеÑ\82 HTTP-поÑ\80Ñ\82 Tinyproxy, ÐºÐ¾Ñ\82оÑ\80Ñ\8bй Ð¿Ñ\80оÑ\81лÑ\83Ñ\88ивает запросы"
 
 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 для отправки исходящих "
-"запÑ\80оÑ\81ов"
+"Определяет адрес, к которому привязывается Tinyproxy для отправки "
+"пеÑ\80енапÑ\80авленнÑ\8bÑ\85 Ð¸Ñ\81Ñ\85одÑ\8fÑ\89иÑ\85 Ð·Ð°Ð¿Ñ\80оÑ\81ов."
 
 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 ""
-"Ð\9eпÑ\80еделÑ\8fеÑ\82 Ð¿Ñ\80окÑ\81и Ð²Ð¾Ñ\81Ñ\85одÑ\8fÑ\89его ÐºÐ°Ð½Ð°Ð»Ð° Ð´Ð»Ñ\8f Ð´Ð¾Ñ\81Ñ\82Ñ\83па Ðº Ñ\85оÑ\81Ñ\82Ñ\83 Ð² Ñ\84оÑ\80маÑ\82е "
-"<code>адрес:порт</code>"
+"Ð\9eпÑ\80еделÑ\8fеÑ\82 Ð²Ð¾Ñ\81Ñ\85одÑ\8fÑ\89ий Ð¿Ñ\80окÑ\81и-Ñ\81еÑ\80веÑ\80, Ð¸Ñ\81полÑ\8cзÑ\83емÑ\8bй Ð´Ð»Ñ\8f Ð´Ð¾Ñ\81Ñ\82Ñ\83па Ðº Ñ\85оÑ\81Ñ\82Ñ\83 "
+"назначения. Формат <code>'адрес:порт'</code>."
 
 msgid "Specifies the user name the Tinyproxy process is running as"
-msgstr "Ð\9eпÑ\80еделÑ\8fеÑ\82 пользователя, от имени которого работает Tinyproxy"
+msgstr "Ð\97адаÑ\82Ñ\8c пользователя, от имени которого работает 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 - Ð±Ñ\8bÑ\81Ñ\82Ñ\80Ñ\8bй HTTP(S)-пÑ\80окÑ\81и, Ð½Ðµ Ð¸Ñ\81полÑ\8cзÑ\83Ñ\8eÑ\89ий ÐºÑ\8dÑ\88"
+msgstr "Tinyproxy - Ð½ÐµÐ±Ð¾Ð»Ñ\8cÑ\88ой Ð¸ Ð±Ñ\8bÑ\81Ñ\82Ñ\80Ñ\8bй HTTP(S)-пÑ\80окÑ\81и, Ð½Ðµ Ð¸Ñ\81полÑ\8cзÑ\83Ñ\8eÑ\89ий ÐºÑ\8dÑ\88."
 
 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 ""
-"Ð\9fÑ\80окÑ\81и Ð´Ð»Ñ\8f Ð¸Ñ\81Ñ\85одÑ\8fÑ\89его Ñ\82Ñ\80аÑ\84ика Ð¿Ñ\80и Ð¾Ð±Ñ\80аÑ\89ении Ðº Ð¾Ð¿Ñ\80еделÑ\91ннÑ\8bм IP-адÑ\80еÑ\81ам Ð¸Ð»Ð¸ "
-"доменам."
+"Ð\9fÑ\80авила Ð¸Ñ\81Ñ\85одÑ\8fÑ\89его Ñ\82Ñ\80аÑ\84ика Ð¿Ñ\80окÑ\81и-Ñ\81еÑ\80веÑ\80ов Ð´Ð»Ñ\8f Ð¸Ñ\81полÑ\8cзованиÑ\8f Ð¿Ñ\80и Ð´Ð¾Ñ\81Ñ\82Ñ\83пе Ðº "
+"опÑ\80еделеннÑ\8bм IP-адÑ\80еÑ\81ам Ð¸Ð»Ð¸ Ð´Ð¾Ð¼ÐµÐ½Ð°Ð¼."
 
 msgid "Use syslog"
-msgstr "Ð\98Ñ\81полÑ\8cзоваÑ\82Ñ\8c Ñ\81истемный журнал"
+msgstr "Системный журнал"
 
 msgid "User"
 msgstr "Пользователь"
 
 msgid "Via hostname"
-msgstr "Ð\98мÑ\8f Ñ\85оÑ\81Ñ\82а Via"
+msgstr "ЧеÑ\80ез Ð¸Ð¼Ñ\8f Ñ\85оÑ\81Ñ\82а"
 
 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"
index a418a8e..ef79c74 100644 (file)
@@ -1,11 +1,11 @@
--- 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.travelmate", package.seeall)
 
-local fs = require("nixio.fs")
-local util = require("luci.util")
-local i18n = require("luci.i18n")
+local fs    = require("nixio.fs")
+local util  = require("luci.util")
+local i18n  = require("luci.i18n")
 local templ = require("luci.template")
 
 function index()
@@ -30,6 +30,12 @@ function index()
 end
 
 function logread()
-       local logfile = util.trim(util.exec("logread -e 'travelmate'"))
+       local logfile
+
+       if nixio.fs.access("/var/log/messages") then
+               logfile = util.trim(util.exec("cat /var/log/messages | grep 'travelmate-'"))
+       else
+               logfile = util.trim(util.exec("logread -e 'travelmate-'"))
+       end
        templ.render("travelmate/logread", {title = i18n.translate("Travelmate Logfile"), content = logfile})
 end
index 27971df..e715a2b 100644 (file)
@@ -1,15 +1,17 @@
 -- Copyright 2017 Dirk Brenken (dev@brenken.org)
 -- This is free software, licensed under the Apache License, Version 2.0
 
-local fs = require("nixio.fs")
-local uci = require("luci.model.uci").cursor()
-local json = require("luci.jsonc")
-local nw = require("luci.model.network").init()
-local fw = require("luci.model.firewall").init()
+local fs       = require("nixio.fs")
+local uci      = require("luci.model.uci").cursor()
+local json     = require("luci.jsonc")
+local util     = require("luci.util")
+local nw       = require("luci.model.network").init()
+local fw       = require("luci.model.firewall").init()
+local dump     = util.ubus("network.interface", "dump", {})
 local trmiface = uci.get("travelmate", "global", "trm_iface") or "trm_wwan"
 local trminput = uci.get("travelmate", "global", "trm_rtfile") or "/tmp/trm_runtime.json"
-local uplink = uci.get("network", trmiface) or ""
-local parse = json.parse(fs.readfile(trminput) or "")
+local uplink   = uci.get("network", trmiface) or ""
+local parse    = json.parse(fs.readfile(trminput) or "")
 
 m = Map("travelmate", translate("Travelmate"),
        translate("Configuration of the travelmate package to to enable travel router functionality. ")
@@ -22,26 +24,24 @@ function m.on_after_commit(self)
        luci.http.redirect(luci.dispatcher.build_url("admin", "services", "travelmate"))
 end
 
-s = m:section(NamedSection, "global", "travelmate")
-
 -- Interface Wizard
 
 if uplink == "" then
-       dv = s:option(DummyValue, "", translate("Interface Wizard"))
-       dv.template = "cbi/nullsection"
+       ds = m:section(NamedSection, "global", "travelmate", translate("Interface Wizard"))
 
-       o = s:option(Value, "", translate("Uplink interface"))
+       o = ds:option(Value, "", translate("Uplink interface"))
        o.datatype = "and(uciname,rangelength(3,15))"
        o.default = trmiface
        o.rmempty = false
 
-       btn = s:option(Button, "trm_iface", translate("Create Uplink Interface"),
+       btn = ds:option(Button, "trm_iface", translate("Create Uplink Interface"),
                translate("Create a new wireless wan uplink interface, configure it to use dhcp and ")
                .. translate("add it to the wan zone of the firewall. This step has only to be done once."))
        btn.inputtitle = translate("Add Interface")
        btn.inputstyle = "apply"
        btn.disabled = false
-       function btn.write(self, section, value)
+
+       function btn.write(self, section)
                local iface = o:formvalue(section)
                if iface then
                        uci:set("travelmate", section, "trm_iface", iface)
@@ -67,6 +67,8 @@ end
 
 -- Main travelmate options
 
+s = m:section(NamedSection, "global", "travelmate")
+
 o1 = s:option(Flag, "trm_enabled", translate("Enable travelmate"))
 o1.default = o1.disabled
 o1.rmempty = false
@@ -76,19 +78,16 @@ o2 = s:option(Flag, "trm_automatic", translate("Enable 'automatic' mode"),
 o2.default = o2.enabled
 o2.rmempty = false
 
-btn = s:option(Button, "", translate("Manual Rescan"))
-btn:depends("trm_automatic", "")
-btn.inputtitle = translate("Rescan")
-btn.inputstyle = "find"
-btn.disabled = false
-function btn.write()
-       luci.sys.call("env -i /etc/init.d/travelmate start >/dev/null 2>&1")
-       luci.http.redirect(luci.dispatcher.build_url("admin", "services", "travelmate"))
+o3 = s:option(ListValue, "trm_iface", translate("Uplink / Trigger interface"),
+       translate("Name of the used uplink interface."))
+if dump then
+       local i, v
+       for i, v in ipairs(dump.interface) do
+               if v.interface ~= "loopback" and v.interface ~= "lan" then
+                       o3:value(v.interface)
+               end
+       end
 end
-
-o3 = s:option(Value, "trm_iface", translate("Uplink / Trigger interface"),
-       translate("Name of the uplink interface that triggers travelmate processing in 'manual' mode."))
-o3.datatype = "and(uciname,rangelength(3,15))"
 o3.default = trmiface
 o3.rmempty = false
 
@@ -98,16 +97,23 @@ o4.default = 2
 o4.datatype = "range(1,90)"
 o4.rmempty = false
 
-o5 = s:option(Flag, "trm_debug", translate("Enable verbose debug logging"))
-o5.default = o5.disabled
-o5.rmempty = false
+btn = s:option(Button, "", translate("Manual Rescan"),
+       translate("Force a manual uplink rescan / reconnect in 'trigger' mode."))
+btn:depends("trm_automatic", "")
+btn.inputtitle = translate("Rescan")
+btn.inputstyle = "find"
+btn.disabled = false
+
+function btn.write()
+       luci.sys.call("env -i /etc/init.d/travelmate start >/dev/null 2>&1")
+       luci.http.redirect(luci.dispatcher.build_url("admin", "services", "travelmate"))
+end
 
 -- Runtime information
 
-ds = s:option(DummyValue, "_dummy", translate("Runtime information"))
-ds.template = "cbi/nullsection"
+ds = m:section(NamedSection, "global", "travelmate", translate("Runtime Information"))
 
-dv1 = s:option(DummyValue, "status", translate("Online Status"))
+dv1 = ds:option(DummyValue, "status", translate("Online Status"))
 dv1.template = "travelmate/runtime"
 if parse == nil then
        dv1.value = translate("n/a")
@@ -117,7 +123,7 @@ else
        dv1.value = translate("not connected")
 end
 
-dv2 = s:option(DummyValue, "travelmate_version", translate("Travelmate version"))
+dv2 = ds:option(DummyValue, "travelmate_version", translate("Travelmate version"))
 dv2.template = "travelmate/runtime"
 if parse ~= nil then
        dv2.value = parse.data.travelmate_version or translate("n/a")
@@ -125,15 +131,15 @@ else
        dv2.value = translate("n/a")
 end
 
-dv3 = s:option(DummyValue, "station_ssid", translate("Station SSID"))
+dv3 = ds:option(DummyValue, "station_id", translate("Station ID (SSID/BSSID)"))
 dv3.template = "travelmate/runtime"
 if parse ~= nil then
-       dv3.value = parse.data.station_ssid or translate("n/a")
+       dv3.value = parse.data.station_id or translate("n/a")
 else
        dv3.value = translate("n/a")
 end
 
-dv4 = s:option(DummyValue, "station_interface", translate("Station Interface"))
+dv4 = ds:option(DummyValue, "station_interface", translate("Station Interface"))
 dv4.template = "travelmate/runtime"
 if parse ~= nil then
        dv4.value = parse.data.station_interface or translate("n/a")
@@ -141,7 +147,7 @@ else
        dv4.value = translate("n/a")
 end
 
-dv5 = s:option(DummyValue, "station_radio", translate("Station Radio"))
+dv5 = ds:option(DummyValue, "station_radio", translate("Station Radio"))
 dv5.template = "travelmate/runtime"
 if parse ~= nil then
        dv5.value = parse.data.station_radio or translate("n/a")
@@ -149,7 +155,7 @@ else
        dv5.value = translate("n/a")
 end
 
-dv6 = s:option(DummyValue, "last_rundate", translate("Last rundate"))
+dv6 = ds:option(DummyValue, "last_rundate", translate("Last rundate"))
 dv6.template = "travelmate/runtime"
 if parse ~= nil then
        dv6.value = parse.data.last_rundate or translate("n/a")
@@ -162,28 +168,32 @@ end
 e = m:section(NamedSection, "global", "travelmate", translate("Extra options"),
 translate("Options for further tweaking in case the defaults are not suitable for you."))
 
-e1 = e:option(Value, "trm_radio", translate("Radio selection"),
+e1 = e:option(Flag, "trm_debug", translate("Enable verbose debug logging"))
+e1.default = e1.disabled
+e1.rmempty = false
+
+e2 = e:option(Value, "trm_radio", translate("Radio selection"),
        translate("Restrict travelmate to a dedicated radio, e.g. 'radio0'."))
-e1.datatype = "and(uciname,rangelength(6,6))"
-e1.rmempty = true
+e2.datatype = "and(uciname,rangelength(6,6))"
+e2.rmempty = true
 
-e2 = e:option(Value, "trm_maxretry", translate("Connection Limit"),
+e3 = e:option(Value, "trm_maxretry", translate("Connection Limit"),
        translate("How many times should travelmate try to connect to an Uplink. ")
        .. translate("To disable this feature set it to '0' which means unlimited retries."))
-e2.default = 3
-e2.datatype = "range(0,30)"
-e2.rmempty = false
+e3.default = 3
+e3.datatype = "range(0,30)"
+e3.rmempty = false
 
-e3 = e:option(Value, "trm_maxwait", translate("Interface Timeout"),
+e4 = e:option(Value, "trm_maxwait", translate("Interface Timeout"),
        translate("How long should travelmate wait for a successful wlan interface reload."))
-e3.default = 30
-e3.datatype = "range(5,60)"
-e3.rmempty = false
+e4.default = 30
+e4.datatype = "range(5,60)"
+e4.rmempty = false
 
-e4 = e:option(Value, "trm_timeout", translate("Overall Timeout"),
+e5 = e:option(Value, "trm_timeout", translate("Overall Timeout"),
        translate("Timeout in seconds between retries in 'automatic' mode."))
-e4.default = 60
-e4.datatype = "range(60,300)"
-e4.rmempty = false
+e5.default = 60
+e5.datatype = "range(60,300)"
+e5.rmempty = false
 
 return m
index dcfa17c..1e8bd7e 100644 (file)
@@ -1,10 +1,12 @@
--- 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")
-local uci = require("luci.model.uci").cursor()
-local http = require("luci.http")
+local fs       = require("nixio.fs")
+local uci      = require("luci.model.uci").cursor()
+local http     = require("luci.http")
 local trmiface = uci.get("travelmate", "global", "trm_iface") or "trm_wwan"
+local encr_psk = {"psk", "psk2", "psk-mixed"}
+local encr_wpa = {"wpa", "wpa2", "wpa-mixed"}
 
 m = SimpleForm("add", translate("Add Wireless Uplink Configuration"))
 m.submit = translate("Save")
@@ -18,6 +20,7 @@ end
 m.hidden = {
        device      = http.formvalue("device"),
        ssid        = http.formvalue("ssid"),
+       bssid       = http.formvalue("bssid"),
        wep         = http.formvalue("wep"),
        wpa_suites  = http.formvalue("wpa_suites"),
        wpa_version = http.formvalue("wpa_version")
@@ -25,23 +28,104 @@ m.hidden = {
 
 if m.hidden.ssid ~= "" then
        wssid = m:field(Value, "ssid", translate("SSID"))
-       wssid.default = m.hidden.ssid
+       wssid.datatype = "rangelength(1,32)"
+       wssid.default = m.hidden.ssid or ""
 else
        wssid = m:field(Value, "ssid", translate("SSID (hidden)"))
 end
 
+nobssid = m:field(Flag, "no_bssid", translate("Ignore BSSID"))
+nobssid.default = nobssid.enabled
+
+bssid = m:field(Value, "bssid", translate("BSSID"))
+bssid:depends("no_bssid", 0)
+bssid.datatype = "macaddr"
+bssid.default = m.hidden.bssid or ""
+
 if (tonumber(m.hidden.wep) or 0) == 1 then
-       wkey = m:field(Value, "key", translate("WEP passphrase"),
-               translate("Specify the secret encryption key here."))
+       encr = m:field(ListValue, "encryption", translate("Encryption"))
+       encr:value("wep", "WEP")
+       encr:value("wep+open", "WEP Open System")
+       encr:value("wep+mixed", "WEP mixed")
+       encr:value("wep+shared", "WEP Shared Key")
+       encr.default = "wep+open"
+
+       wkey = m:field(Value, "key", translate("WEP-Passphrase"))
        wkey.password = true
        wkey.datatype = "wepkey"
-elseif (tonumber(m.hidden.wpa_version) or 0) > 0 and
-       (m.hidden.wpa_suites == "PSK" or m.hidden.wpa_suites == "PSK2")
-then
-       wkey = m:field(Value, "key", translate("WPA passphrase"),
-               translate("Specify the secret encryption key here."))
-       wkey.password = true
-       wkey.datatype = "wpakey"
+elseif (tonumber(m.hidden.wpa_version) or 0) > 0 then
+       if m.hidden.wpa_suites == "PSK" or m.hidden.wpa_suites == "PSK2" then
+               encr = m:field(ListValue, "encryption", translate("Encryption"))
+               encr:value("psk", "WPA PSK")
+               encr:value("psk-mixed", "WPA/WPA2 mixed")
+               encr:value("psk2", "WPA2 PSK")
+               encr.default = encr_psk[tonumber(m.hidden.wpa_version)] or "psk2"
+
+               ciph = m:field(ListValue, "cipher", translate("Cipher"))
+               ciph:value("auto", translate("Automatic"))
+               ciph:value("ccmp", translate("Force CCMP (AES)"))
+               ciph:value("tkip", translate("Force TKIP"))
+               ciph:value("tkip+ccmp", translate("Force TKIP and CCMP (AES)"))
+               ciph.default = "auto"
+
+               wkey = m:field(Value, "key", translate("WPA-Passphrase"))
+               wkey.password = true
+               wkey.datatype = "wpakey"
+       elseif m.hidden.wpa_suites == "802.1X" then
+               encr = m:field(ListValue, "encryption", translate("Encryption"))
+               encr:value("wpa", "WPA Enterprise")
+               encr:value("wpa-mixed", "WPA/WPA2 Enterprise mixed")
+               encr:value("wpa2", "WPA2 Enterprise")
+               encr.default = encr_wpa[tonumber(m.hidden.wpa_version)] or "wpa2"
+
+               ciph = m:field(ListValue, "cipher", translate("Cipher"))
+               ciph:value("auto", translate("Automatic"))
+               ciph:value("ccmp", translate("Force CCMP (AES)"))
+               ciph:value("tkip", translate("Force TKIP"))
+               ciph:value("tkip+ccmp", translate("Force TKIP and CCMP (AES)"))
+               ciph.default = "auto"
+
+               eaptype = m:field(ListValue, "eap_type", translate("EAP-Method"))
+               eaptype:value("tls", "TLS")
+               eaptype:value("ttls", "TTLS")
+               eaptype:value("peap", "PEAP")
+               eaptype:value("fast", "FAST")
+               eaptype.default = "peap"
+
+               authentication = m:field(ListValue, "auth", translate("Authentication"))
+               authentication:value("PAP")
+               authentication:value("CHAP")
+               authentication:value("MSCHAP")
+               authentication:value("MSCHAPV2")
+               authentication:value("EAP-GTC")
+               authentication:value("EAP-MD5")
+               authentication:value("EAP-MSCHAPV2")
+               authentication:value("EAP-TLS")
+               authentication.default = "EAP-MSCHAPV2"
+
+               ident = m:field(Value, "identity", translate("Identity"))
+
+               wkey = m:field(Value, "password", translate("Password"))
+               wkey.password = true
+               wkey.datatype = "wpakey"
+
+               cacert = m:field(Value, "ca_cert", translate("Path to CA-Certificate"))
+               cacert.rmempty = true
+
+               clientcert = m:field(Value, "client_cert", translate("Path to Client-Certificate"))
+               clientcert:depends("eap_type","tls")
+               clientcert.rmempty = true
+
+               privkey = m:field(Value, "priv_key", translate("Path to Private Key"))
+               privkey:depends("eap_type","tls")
+               privkey.rmempty = true
+
+               privkeypwd = m:field(Value, "priv_key_pwd", translate("Password of Private Key"))
+               privkeypwd:depends("eap_type","tls")
+               privkeypwd.datatype = "wpakey"
+               privkeypwd.password = true
+               privkeypwd.rmempty = true
+       end
 end
 
 function wssid.write(self, section, value)
@@ -50,15 +134,36 @@ function wssid.write(self, section, value)
                network  = trmiface,
                device   = m.hidden.device,
                ssid     = wssid:formvalue(section),
+               bssid    = bssid:formvalue(section),
                disabled = "1"
        })
+
        if (tonumber(m.hidden.wep) or 0) == 1 then
-               uci:set("wireless", newsection, "encryption", "wep-open")
-               uci:set("wireless", newsection, "key", "1")
-               uci:set("wireless", newsection, "key1", wkey:formvalue(section))
+               uci:set("wireless", newsection, "encryption", encr:formvalue(section))
+               uci:set("wireless", newsection, "key", wkey:formvalue(section) or "")
        elseif (tonumber(m.hidden.wpa_version) or 0) > 0 then
-               uci:set("wireless", newsection, "encryption", "psk2")
-               uci:set("wireless", newsection, "key", wkey:formvalue(section))
+               if m.hidden.wpa_suites == "PSK" or m.hidden.wpa_suites == "PSK2" then
+                       if ciph:formvalue(section) ~= "auto" then
+                               uci:set("wireless", newsection, "encryption", encr:formvalue(section) .. "+" .. ciph:formvalue(section))
+                       else
+                               uci:set("wireless", newsection, "encryption", encr:formvalue(section))
+                       end
+                       uci:set("wireless", newsection, "key", wkey:formvalue(section) or "")
+               elseif m.hidden.wpa_suites == "802.1X" then
+                       if ciph:formvalue(section) ~= "auto" then
+                               uci:set("wireless", newsection, "encryption", encr:formvalue(section) .. "+" .. ciph:formvalue(section))
+                       else
+                               uci:set("wireless", newsection, "encryption", encr:formvalue(section))
+                       end
+                       uci:set("wireless", newsection, "eap_type", eaptype:formvalue(section))
+                       uci:set("wireless", newsection, "auth", authentication:formvalue(section))
+                       uci:set("wireless", newsection, "identity", ident:formvalue(section) or "")
+                       uci:set("wireless", newsection, "password", wkey:formvalue(section) or "")
+                       uci:set("wireless", newsection, "ca_cert", cacert:formvalue(section) or "")
+                       uci:set("wireless", newsection, "client_cert", clientcert:formvalue(section) or "")
+                       uci:set("wireless", newsection, "priv_key", privkey:formvalue(section) or "")
+                       uci:set("wireless", newsection, "priv_key_pwd", privkeypwd:formvalue(section) or "")
+               end
        else
                uci:set("wireless", newsection, "encryption", "none")
        end
index c60ff22..b8e0f11 100644 (file)
@@ -1,8 +1,8 @@
 -- Copyright 2017 Dirk Brenken (dev@brenken.org)
 -- This is free software, licensed under the Apache License, Version 2.0
 
-local fs = require("nixio.fs")
-local uci = require("luci.model.uci").cursor()
+local fs   = require("nixio.fs")
+local uci  = require("luci.model.uci").cursor()
 local http = require("luci.http")
 
 m = SimpleForm("edit", translate("Edit Wireless Uplink Configuration"))
@@ -21,21 +21,108 @@ m.hidden = {
 local s = uci:get_all("wireless", m.hidden.cfg)
 if s ~= nil then
        wssid = m:field(Value, "ssid", translate("SSID"))
-       wssid.default = s.ssid
        wssid.datatype = "rangelength(1,32)"
-       if s.encryption and s.key then
-               wkey = m:field(Value, "key", translatef("Passphrase (%s)", s.encryption))
-       elseif s.encryption and s.password then
-               wkey = m:field(Value, "password", translatef("Passphrase (%s)", s.encryption))
+       wssid.default = s.ssid or ""
+
+       bssid = m:field(Value, "bssid", translate("BSSID"))
+       bssid.datatype = "macaddr"
+       bssid.default = s.bssid or ""
+
+       s.cipher = "auto"
+       if string.match(s.encryption, '\+') and not string.match(s.encryption, '^wep') then
+               s.pos = string.find(s.encryption, '\+')
+               s.cipher = string.sub(s.encryption, s.pos + 1)
+               s.encryption = string.sub(s.encryption, 0, s.pos - 1)
        end
-       if s.encryption and (s.key or s.password) then
-               wkey.password = true
-               wkey.default = s.key or s.password
-               if s.encryption == "wep" then
+
+       if s.encryption and s.encryption ~= "none" then
+               if string.match(s.encryption, '^wep') then
+                       encr = m:field(ListValue, "encryption", translate("Encryption"))
+                       encr:value("wep", "WEP")
+                       encr:value("wep+open", "WEP Open System")
+                       encr:value("wep+mixed", "WEP mixed")
+                       encr:value("wep+shared", "WEP Shared Key")
+                       encr.default = s.encryption
+
+                       wkey = m:field(Value, "key", translate("Passphrase"))
                        wkey.datatype = "wepkey"
-               else
+               elseif string.match(s.encryption, '^psk') then
+                       encr = m:field(ListValue, "encryption", translate("Encryption"))
+                       encr:value("psk", "WPA PSK")
+                       encr:value("psk-mixed", "WPA/WPA2 mixed")
+                       encr:value("psk2", "WPA2 PSK")
+                       encr.default = s.encryption
+
+                       ciph = m:field(ListValue, "cipher", translate("Cipher"))
+                       ciph:value("auto", translate("Automatic"))
+                       ciph:value("ccmp", translate("Force CCMP (AES)"))
+                       ciph:value("tkip", translate("Force TKIP"))
+                       ciph:value("tkip+ccmp", translate("Force TKIP and CCMP (AES)"))
+                       ciph.default = s.cipher
+
+                       wkey = m:field(Value, "key", translate("Passphrase"))
+                       wkey.datatype = "wpakey"
+               elseif string.match(s.encryption, '^wpa') then
+                       encr = m:field(ListValue, "encryption", translate("Encryption"))
+                       encr:value("wpa", "WPA Enterprise")
+                       encr:value("wpa-mixed", "WPA/WPA2 Enterprise mixed")
+                       encr:value("wpa2", "WPA2 Enterprise")
+                       encr.default = s.encryption
+
+                       ciph = m:field(ListValue, "cipher", translate("Cipher"))
+                       ciph:value("auto", translate("Automatic"))
+                       ciph:value("ccmp", translate("Force CCMP (AES)"))
+                       ciph:value("tkip", translate("Force TKIP"))
+                       ciph:value("tkip+ccmp", translate("Force TKIP and CCMP (AES)"))
+                       ciph.default = s.cipher
+
+                       eaptype = m:field(ListValue, "eap_type", translate("EAP-Method"))
+                       eaptype:value("tls", "TLS")
+                       eaptype:value("ttls", "TTLS")
+                       eaptype:value("peap", "PEAP")
+                       eaptype:value("fast", "FAST")
+                       eaptype.default = s.eap_type or "peap"
+
+                       authentication = m:field(ListValue, "auth", translate("Authentication"))
+                       authentication:value("PAP")
+                       authentication:value("CHAP")
+                       authentication:value("MSCHAP")
+                       authentication:value("MSCHAPV2")
+                       authentication:value("EAP-GTC")
+                       authentication:value("EAP-MD5")
+                       authentication:value("EAP-MSCHAPV2")
+                       authentication:value("EAP-TLS")
+                       authentication.default = s.auth or "EAP-MSCHAPV2"
+
+                       ident = m:field(Value, "identity", translate("Identity"))
+                       ident.default = s.identity or ""
+
+                       wkey = m:field(Value, "password", translate("Passphrase"))
                        wkey.datatype = "wpakey"
+
+                       cacert = m:field(Value, "ca_cert", translate("Path to CA-Certificate"))
+                       cacert.rmempty = true
+                       cacert.default = s.ca_cert or ""
+                       
+                       clientcert = m:field(Value, "client_cert", translate("Path to Client-Certificate"))
+                       clientcert:depends("eap_type","tls")
+                       clientcert.rmempty = true
+                       clientcert.default = s.client_cert or ""
+
+                       privkey = m:field(Value, "priv_key", translate("Path to Private Key"))
+                       privkey:depends("eap_type","tls")
+                       privkey.rmempty = true
+                       privkey.default = s.priv_key or ""
+
+                       privkeypwd = m:field(Value, "priv_key_pwd", translate("Password of Private Key"))
+                       privkeypwd:depends("eap_type","tls")
+                       privkeypwd.datatype = "wpakey"
+                       privkeypwd.password = true
+                       privkeypwd.rmempty = true
+                       privkeypwd.default = s.priv_key_pwd or ""
                end
+               wkey.password = true
+               wkey.default = s.key or s.password
        end
 else
        m.on_cancel()
@@ -43,10 +130,33 @@ end
 
 function wssid.write(self, section, value)
        uci:set("wireless", m.hidden.cfg, "ssid", wssid:formvalue(section))
-       if s.encryption and s.key then
-               uci:set("wireless", m.hidden.cfg, "key", wkey:formvalue(section))
-       elseif s.encryption and s.password then
-               uci:set("wireless", m.hidden.cfg, "password", wkey:formvalue(section))
+       uci:set("wireless", m.hidden.cfg, "bssid", bssid:formvalue(section))
+       if s.encryption and s.encryption ~= "none" then
+               if string.match(s.encryption, '^wep') then
+                       uci:set("wireless", m.hidden.cfg, "encryption", encr:formvalue(section))
+                       uci:set("wireless", m.hidden.cfg, "key", wkey:formvalue(section) or "")
+               elseif string.match(s.encryption, '^psk') then
+                       if ciph:formvalue(section) ~= "auto" then
+                               uci:set("wireless", m.hidden.cfg, "encryption", encr:formvalue(section) .. "+" .. ciph:formvalue(section))
+                       else
+                               uci:set("wireless", m.hidden.cfg, "encryption", encr:formvalue(section))
+                       end
+                       uci:set("wireless", m.hidden.cfg, "key", wkey:formvalue(section) or "")
+               elseif string.match(s.encryption, '^wpa') then
+                       if ciph:formvalue(section) ~= "auto" then
+                               uci:set("wireless", m.hidden.cfg, "encryption", encr:formvalue(section) .. "+" .. ciph:formvalue(section))
+                       else
+                               uci:set("wireless", m.hidden.cfg, "encryption", encr:formvalue(section))
+                       end
+                       uci:set("wireless", m.hidden.cfg, "eap_type", eaptype:formvalue(section))
+                       uci:set("wireless", m.hidden.cfg, "auth", authentication:formvalue(section))
+                       uci:set("wireless", m.hidden.cfg, "identity", ident:formvalue(section) or "")
+                       uci:set("wireless", m.hidden.cfg, "password", wkey:formvalue(section) or "")
+                       uci:set("wireless", m.hidden.cfg, "ca_cert", cacert:formvalue(section) or "")
+                       uci:set("wireless", m.hidden.cfg, "client_cert", clientcert:formvalue(section) or "")
+                       uci:set("wireless", m.hidden.cfg, "priv_key", privkey:formvalue(section) or "")
+                       uci:set("wireless", m.hidden.cfg, "priv_key_pwd", privkeypwd:formvalue(section) or "")
+               end
        end
        uci:save("wireless")
        uci:commit("wireless")
index 53493a1..2233a15 100644 (file)
@@ -6,5 +6,8 @@
                font-size: 12px;
                font-family: monospace;
                resize: none;
+               white-space: pre;
+               overflow-wrap: normal;
+               overflow-x: scroll;
        }
 </style>
index 7f6ff77..6cbeaff 100644 (file)
@@ -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
 -%>
 
@@ -12,4 +12,9 @@ This is free software, licensed under the Apache License, Version 2.0
        </fieldset>
 </div>
 
+<script type="text/javascript">
+       var textarea = document.getElementById('logread_id');
+       textarea.scrollTop = textarea.scrollHeight;
+</script>
+
 <%+footer%>
index cbb6c18..11c36d4 100644 (file)
@@ -4,8 +4,8 @@ This is free software, licensed under the Apache License, Version 2.0
 -%>
 
 <%-
-  local write = io.write
-  local uci = require("luci.model.uci").cursor()
+  local write    = io.write
+  local uci      = require("luci.model.uci").cursor()
   local trmiface = uci:get("travelmate", "global", "trm_iface") or "trm_wwan"
 -%>
 
@@ -22,6 +22,7 @@ This is free software, licensed under the Apache License, Version 2.0
     <tr class="cbi-section-table-titles">
       <th class="cbi-section-table-cell" style="text-align:left"><%:Device%></th>
       <th class="cbi-section-table-cell" style="text-align:left"><%:SSID%></th>
+      <th class="cbi-section-table-cell" style="text-align:left"><%:BSSID%></th>
       <th class="cbi-section-table-cell" style="text-align:left"><%:Encryption%></th>
       <th class="cbi-section-table-cell" style="text-align:center" colspan="2"><%:Actions%></th>
     </tr>
@@ -30,9 +31,10 @@ This is free software, licensed under the Apache License, Version 2.0
     local iface = s.network or ""
     if iface == trmiface then
       local section = s['.name'] or ""
-      local device = s.device or ""
-      local ssid = s.ssid or ""
-      local encryption = s.encryption or ""
+      local device = s.device or "-"
+      local ssid = s.ssid or "-"
+      local bssid = s.bssid or "-"
+      local encryption = s.encryption or "-"
       local disabled = s.disabled or ""
       local style = "color:#000000"
       if disabled == "0" then
@@ -42,14 +44,15 @@ This is free software, licensed under the Apache License, Version 2.0
     <tr class="cbi-section-table-row cbi-rowstyle-1" style="<%=style%>">
       <td style="text-align:left"><%=device%></td>
       <td style="text-align:left"><%=ssid%></td>
+      <td style="text-align:left"><%=bssid%></td>
       <td style="text-align:left"><%=encryption%></td>
       <td class="cbi-value-field" style="width:70px;text-align:right">
-        <input class="cbi-button cbi-button-up" type="button" value="" onclick="location.href='<%=url('admin/services/travelmate/wifiorder')%>?cfg=<%=section%>;dir=up'" alt="<%:Move up%>" title="<%:Move up%>"/>
-        <input class="cbi-button cbi-button-down" type="button" value="" onclick="location.href='<%=url('admin/services/travelmate/wifiorder')%>?cfg=<%=section%>;dir=down'" alt="<%:Move down%>" title="<%:Move down%>"/>
+        <input class="cbi-button cbi-button-up" type="button" value="" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifiorder')%>?cfg=<%=section%>;dir=up'" alt="<%:Move up%>" title="<%:Move up%>"/>
+        <input class="cbi-button cbi-button-down" type="button" value="" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifiorder')%>?cfg=<%=section%>;dir=down'" alt="<%:Move down%>" title="<%:Move down%>"/>
       </td>
       <td class="cbi-value-field" style="width:150px;text-align:right">
-        <input type="button" class="cbi-button cbi-button-edit" onclick="location.href='<%=url('admin/services/travelmate/wifiedit')%>?cfg=<%=section%>'" title="<%:Edit this Uplink%>" value="<%:Edit%>"/>
-        <input type="button" class="cbi-button cbi-button-remove" onclick="location.href='<%=url('admin/services/travelmate/wifidelete')%>?cfg=<%=section%>'" title="<%:Delete this Uplink%>" value="<%:Delete%>"/>
+        <input type="button" class="cbi-button cbi-button-edit" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifiedit')%>?cfg=<%=section%>'" title="<%:Edit this Uplink%>" value="<%:Edit%>"/>
+        <input type="button" class="cbi-button cbi-button-remove" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifidelete')%>?cfg=<%=section%>'" title="<%:Delete this Uplink%>" value="<%:Delete%>"/>
       </td>
     </tr>
 <%
@@ -63,7 +66,7 @@ This is free software, licensed under the Apache License, Version 2.0
   uci:foreach("wireless", "wifi-device", function(s)
     local device = s[".name"]
 %>
-  <form class="inline" action="<%=url('admin/services/travelmate/wifiscan')%>" method="post">
+  <form class="inline" action="<%=luci.dispatcher.build_url('admin/services/travelmate/wifiscan')%>" method="post">
     <input type="hidden" name="device" value="<%=device%>"/>
     <input type="hidden" name="token" value="<%=token%>"/>
     <input type="submit" class="cbi-button cbi-button-find" title="<%:Find and join network on %><%=device%>" value="<%:Scan %><%=device%>"/>
index af90c18..a8f63a1 100644 (file)
@@ -7,7 +7,8 @@ This is free software, licensed under the Apache License, Version 2.0
     local sys = require("luci.sys")
     local utl = require("luci.util")
     local dev = luci.http.formvalue("device")
-    local iw = luci.sys.wifi.getiwinfo(dev)
+    local iw  = luci.sys.wifi.getiwinfo(dev)
+    local wpa_label = {translate("WPA"), translate("WPA2"), translate("WPA/WPA2")}
 
     if not iw then
         luci.http.redirect(luci.dispatcher.build_url("admin/services/travelmate/stations"))
@@ -17,7 +18,7 @@ This is free software, licensed under the Apache License, Version 2.0
         if info.wep == true then
             return translate("WEP")
         elseif info.wpa > 0 then
-            return translate("WPA / WPA2")
+            return "%s (%s/%s)" %{wpa_label[info.wpa], table.concat(info.auth_suites), table.concat(info.group_ciphers)}
         elseif info.enabled then
             return translate("Unknown")
         else
@@ -28,7 +29,7 @@ This is free software, licensed under the Apache License, Version 2.0
     function percent_wifi_signal(info)
         local qc = info.quality or 0
         local qm = info.quality_max or 0
-        if info.ssid and qc > 0 and qm > 0 then
+        if info.bssid and qc > 0 and qm > 0 then
             return math.floor((100 / qm) * qc)
         else
             return 0
@@ -44,13 +45,17 @@ This is free software, licensed under the Apache License, Version 2.0
         <table class="cbi-section-table" style="empty-cells:hide">
             <tr class="cbi-section-table-titles">
                 <th class="cbi-section-table-cell" style="text-align:left"><%:Uplink SSID%></th>
+                <th class="cbi-section-table-cell" style="text-align:left"><%:Uplink BSSID%></th>
                 <th class="cbi-section-table-cell" style="text-align:left"><%:Encryption%></th>
                 <th class="cbi-section-table-cell" style="text-align:left" colspan="2"><%:Signal strength%></th>
             </tr>
             <% for i, net in ipairs(iw.scanlist or { }) do %>
             <tr class="cbi-section-table-row cbi-rowstyle-1">
                 <td class="cbi-value-field" style="text-align:left">
-                    <strong><%=net.ssid and utl.pcdata(net.ssid) or "<em>%s</em>" % translate("hidden")%></strong>
+                    <%=net.ssid and utl.pcdata(net.ssid) or "<em>%s</em>" % translate("hidden")%>
+                </td>
+                <td class="cbi-value-field" style="text-align:left">
+                    <%=net.bssid and utl.pcdata(net.bssid)%>
                 </td>
                 <td class="cbi-value-field" style="text-align:left">
                     <%=format_wifi_encryption(net.encryption)%>
@@ -59,15 +64,16 @@ This is free software, licensed under the Apache License, Version 2.0
                     <%=percent_wifi_signal(net)%> %
                 </td>
                 <td class="cbi-value-field" style="width:100px;text-align:right">
-                    <form class="inline" action="<%=url('admin/services/travelmate/wifiadd')%>" method="post">
+                    <form class="inline" action="<%=luci.dispatcher.build_url('admin/services/travelmate/wifiadd')%>" method="post">
                         <input type="hidden" name="token" value="<%=token%>"/>
                         <input type="hidden" name="device" value="<%=utl.pcdata(dev)%>"/>
                         <input type="hidden" name="ssid" value="<%=utl.pcdata(net.ssid)%>"/>
+                        <input type="hidden" name="bssid" value="<%=utl.pcdata(net.bssid)%>"/>
                         <input type="hidden" name="wep" value="<%=net.encryption.wep and 1 or 0%>"/>
                         <% if net.encryption.wpa then %>
-                        <input type="hidden" name="wpa_version" value="<%=net.encryption.wpa%>"/>
-                        <% for _, v in ipairs(net.encryption.auth_suites) do %><input type="hidden" name="wpa_suites" value="<%=v%>"/>
-                        <% end; end %>
+                            <input type="hidden" name="wpa_version" value="<%=net.encryption.wpa%>"/>
+                            <% for _, v in ipairs(net.encryption.auth_suites) do %><input type="hidden" name="wpa_suites" value="<%=v%>"/><% end %>
+                        <% end %>
                         <input class="cbi-button cbi-button-apply" type="submit" value="<%:Add Uplink%>"/>
                     </form>
                 </td>
@@ -76,12 +82,12 @@ This is free software, licensed under the Apache License, Version 2.0
         </table>
     </fieldset>
 <div class="cbi-page-actions right">
-    <form class="inline" action="<%=url('admin/services/travelmate/wifiscan')%>" method="post">
+    <form class="inline" action="<%=luci.dispatcher.build_url('admin/services/travelmate/wifiscan')%>" method="post">
         <input type="hidden" name="token" value="<%=token%>"/>
         <input type="hidden" name="device" value="<%=utl.pcdata(dev)%>"/>
         <input class="cbi-button cbi-input-find" type="submit" value="<%:Repeat scan%>"/>
     </form>
-    <form class="inline" action="<%=url('admin/services/travelmate/stations')%>" method="post">
+    <form class="inline" action="<%=luci.dispatcher.build_url('admin/services/travelmate/stations')%>" method="post">
         <input class="cbi-button cbi-button-reset" type="submit" value="<%:Back to overview%>"/>
     </form>
 </div>
index febdbd5..0e497c1 100644 (file)
@@ -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 "無線スキャン"
index 41fab70..c4e9b98 100644 (file)
@@ -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 (file)
index 0000000..3e8429c
--- /dev/null
@@ -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 "не подключено"
index a9ceafe..13e10de 100644 (file)
@@ -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 (file)
index 0000000..cf9bc57
--- /dev/null
@@ -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 будет отключена, если она отсутствует."
index b9dae4f..fe2dd64 100644 (file)
@@ -17,8 +17,8 @@ msgid ""
 "ACLs specify which external ports may be redirected to which internal "
 "addresses and ports"
 msgstr ""
-"アクセス制御リスト(ACL) は、どの外部ポートからどの内部アドレス及びポートへ"
-"ã\83ªã\83\80ã\82¤ã\83¬ã\82¯ã\83\88ã\81\99ã\82\8bã\81\8bã\82\92設å®\9aã\81\97ã\81¾ã\81\99ã\80\82"
+"アクセス制御リスト(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 リースファイル"
index 0c195ad..6800a1a 100644 (file)
@@ -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 "РаÑ\81Ñ\88иÑ\80енные настройки"
+msgstr "Ð\94ополниÑ\82елÑ\8cные настройки"
 
 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 "СбоÑ\80 Ð´Ð°Ð½Ð½Ñ\8bÑ\85..."
+msgstr "СбоÑ\80 Ð¸Ð½Ñ\84оÑ\80маÑ\86ии..."
 
 msgid "Comment"
 msgstr "Комментарий"
 
 msgid "Delete"
-msgstr ""
+msgstr "Удалить"
 
 msgid "Description"
-msgstr ""
+msgstr "Описание"
 
 msgid "Device UUID"
 msgstr "UUID устройства"
 
 msgid "Downlink"
-msgstr "Ð\9dиÑ\81Ñ\85одÑ\8fÑ\89ий ÐºÐ°Ð½Ð°Ð»"
+msgstr "Ð\92Ñ\85одÑ\8fÑ\89ее Ñ\81оединение"
 
 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 "Ð\92оÑ\81Ñ\85одÑ\8fÑ\89ий ÐºÐ°Ð½Ð°Ð»"
+msgstr "Ð\98Ñ\81Ñ\85одÑ\8fÑ\89ее Ñ\81оединение"
 
 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 "включить"
index ac08e94..42b16fb 100644 (file)
@@ -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 "Ð\94иÑ\80екÑ\82оÑ\80ии с содержимым"
+msgstr "Ð\9fапки с содержимым"
 
 msgid "Disable telnet console"
 msgstr "Выключить telnet-консоль"
index 5254ca1..78f3a24 100644 (file)
@@ -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 "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка"
 
 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 ""
-"Ð\91аза Ð´Ð°Ð½Ð½Ñ\8bÑ\85 Ð½Ðµ Ð½Ð°Ñ\81Ñ\82Ñ\80оена. Ð\9fеÑ\80ейдиÑ\82е Ð² ÐºÐ¾Ð½Ñ\84игÑ\83Ñ\80аÑ\86иÑ\8e Ð¸ Ñ\83кажиÑ\82е Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81Ñ\8b Ð´Ð»Ñ\8f "
-"сбора статистики."
+"Ð\91аза Ð´Ð°Ð½Ð½Ñ\8bÑ\85 Ð½Ðµ Ð½Ð°Ñ\81Ñ\82Ñ\80оена. Ð\92Ñ\8bполниÑ\82е Ð½Ð°Ñ\81Ñ\82Ñ\80ойки Ð¸ Ñ\83кажиÑ\82е Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81Ñ\8b Ð´Ð»Ñ\8f Ñ\81боÑ\80а "
+"статистики."
 
 msgid "Restart VnStat"
 msgstr "Перезапустить VnStat"
@@ -66,6 +65,3 @@ msgid ""
 msgstr ""
 "VnStat - монитор сетевого трафика для Linux, собирающий статистику по "
 "выбранным интерфейсам."
-
-#~ msgid "The VnStat service has been restarted."
-#~ msgstr "VnStat сервис перезапущен."
index b6631df..4b89c62 100644 (file)
@@ -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"
index 5c98de0..2b8b808 100644 (file)
@@ -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 "Ð\94оÑ\81Ñ\82Ñ\83пнÑ\8bе Ð²Ð¸Ð´Ñ\8b Ð´Ð¸Ð°Ð³Ð½Ð¾Ñ\81Ñ\82ики Ð·Ð°Ð²Ð¸Ñ\81Ñ\8fÑ\82 Ð¾Ñ\82 Ñ\83Ñ\81Ñ\82ановленнÑ\8bÑ\85 Ð¼Ð¾Ð´Ñ\83лей."
+msgstr "Ð\94оÑ\81Ñ\82Ñ\83пнÑ\8bе Ð²Ð¸Ð´Ñ\8b Ð´Ð¸Ð°Ð³Ð½Ð¾Ñ\81Ñ\82ики Ð·Ð°Ð²Ð¸Ñ\81Ñ\8fÑ\82 Ð¾Ñ\82 Ñ\83Ñ\81Ñ\82ановленнÑ\8bÑ\85 Ð¿Ð»Ð°Ð³Ð¸Ð½Ð¾Ð²."
 
 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 (file)
index 0000000..a50ea8b
--- /dev/null
@@ -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)"
index 83b95e2..5616baf 100644 (file)
@@ -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 ""
-"Ð\9fÑ\80и Ð½ÐµÐ¾Ð±Ñ\85одимоÑ\81Ñ\82и Ð¿ÐµÑ\80езагÑ\80Ñ\83зке Ñ\81иÑ\81Ñ\82емÑ\8b, watchcat Ð²Ñ\8bзовеÑ\82 Ð¿Ñ\80огÑ\80аммнÑ\83Ñ\8e "
-"пеÑ\80езагÑ\80Ñ\83зкÑ\83. Ð\9fÑ\80и Ñ\83Ñ\81Ñ\82ановке Ð½ÐµÐ½Ñ\83левого Ð·Ð½Ð°Ñ\87ениÑ\8f, Ð±Ñ\83деÑ\82 Ð²Ñ\8bполнена Ð¾Ñ\82ложеннаÑ\8f "
-"аппаÑ\80аÑ\82наÑ\8f Ð¿ÐµÑ\80езагÑ\80Ñ\83зка Ð¿Ñ\80и Ð½ÐµÑ\83даÑ\87ной Ð¿Ñ\80огÑ\80аммной. Ð£Ñ\81Ñ\82ановиÑ\82е ÐºÐ¾Ð»Ð¸Ñ\87еÑ\81Ñ\82во "
-"секунд для отложенной аппаратной перезагрузки или значение 0 для программной."
+"Ð\9fÑ\80и Ð¿ÐµÑ\80езагÑ\80Ñ\83зке Ñ\81иÑ\81Ñ\82емÑ\8b, watchcat Ð²Ñ\8bзовеÑ\82 Ð¿Ñ\80огÑ\80аммнÑ\83Ñ\8e Ð¿ÐµÑ\80езагÑ\80Ñ\83зкÑ\83. Ð\92вод "
+"ненÑ\83левого Ð·Ð½Ð°Ñ\87ениÑ\8f Ð·Ð´ÐµÑ\81Ñ\8c, Ð²Ñ\8bзовеÑ\82 Ð¾Ñ\82ложеннÑ\83Ñ\8e Ð°Ð¿Ð¿Ð°Ñ\80аÑ\82нÑ\83Ñ\8e Ð¿ÐµÑ\80езагÑ\80Ñ\83зкÑ\83, ÐµÑ\81ли "
+"пÑ\80огÑ\80аммнаÑ\8f Ð¿ÐµÑ\80езагÑ\80Ñ\83зка Ð½Ðµ Ñ\83даÑ\81Ñ\82Ñ\81Ñ\8f. Ð\92ведиÑ\82е ÐºÐ¾Ð»Ð¸Ñ\87еÑ\81Ñ\82во Ñ\81екÑ\83нд, Ñ\87Ñ\82обÑ\8b "
+"включить, используйте '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 (file)
index 0000000..a5fd3ed
--- /dev/null
@@ -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 (file)
index 0000000..0cbc8bb
--- /dev/null
@@ -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 "секунду назад"
+
index 9d3e08d..b454a13 100644 (file)
@@ -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 "ХоÑ\81Ñ\82, ÐºÐ¾Ñ\82оÑ\80Ñ\8bй Ð½ÐµÐ¾Ð±Ñ\85одимо Ñ\80азбÑ\83диÑ\82Ñ\8c"
+msgstr "Ð\92Ñ\8bбÑ\80аÑ\82Ñ\8c Ñ\85оÑ\81Ñ\82"
 
 msgid "Network interface to use"
-msgstr "Ð\98Ñ\81полÑ\8cзÑ\83емÑ\8bй Ñ\81еÑ\82евой интерфейс"
+msgstr "Ð\92Ñ\8bбÑ\80аÑ\82Ñ\8c интерфейс"
 
 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 ""
-"Ð\98ногда Ñ\82олÑ\8cко Ð¾Ð´Ð½Ð° Ð¸Ð· Ð´Ð²Ñ\83Ñ\85 Ñ\83Ñ\82илиÑ\82 Ñ\80абоÑ\82аеÑ\82. Ð\92 Ñ\81лÑ\83Ñ\87ае Ð¾Ñ\88ибки, Ð¿Ð¾Ð¿Ñ\80обÑ\83йÑ\82е "
-"иÑ\81полÑ\8cзоваÑ\82Ñ\8c Ð´Ñ\80Ñ\83гÑ\83Ñ\8e"
+"Ð\98ногда Ñ\80абоÑ\82аеÑ\82 Ñ\82олÑ\8cко Ð¾Ð´Ð¸Ð½ Ð¸Ð· Ð´Ð²Ñ\83Ñ\85 Ð¸Ð½Ñ\81Ñ\82Ñ\80Ñ\83менÑ\82ов. Ð\95Ñ\81ли Ð¾Ð´Ð¸Ð½ Ñ\82еÑ\80пиÑ\82 Ð½ÐµÑ\83даÑ\87Ñ\83, "
+"попÑ\80обÑ\83йÑ\82е Ð´Ñ\80Ñ\83гой."
 
 msgid "Specifies the interface the WoL packet is sent on"
-msgstr "Ð\9eпÑ\80еделÑ\8fеÑ\82 Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81, Ð¿Ð¾ ÐºÐ¾Ñ\82оÑ\80омÑ\83 Ð±Ñ\83дÑ\83Ñ\82 Ð¿Ð¾Ñ\81ланÑ\8b Ð¿Ð°ÐºÐµÑ\82Ñ\8b WoL"
+msgstr "Ð\97адаÑ\82Ñ\8c Ñ\81еÑ\82евой Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81, Ð¿Ð¾ ÐºÐ¾Ñ\82оÑ\80омÑ\83 Ð±Ñ\83дÑ\83Ñ\82 Ð¿Ð¾Ñ\81ланÑ\8b Ð¿Ð°ÐºÐµÑ\82Ñ\8b WoL."
 
 msgid "Starting WoL utility:"
 msgstr "Запуск WoL утилиты:"
@@ -59,4 +55,4 @@ msgid "Wake up host"
 msgstr "Разбудить хост"
 
 msgid "WoL program"
-msgstr "Ð\9fÑ\80огÑ\80амма WoL"
+msgstr "УÑ\82илиÑ\82а WoL"
diff --git a/contrib/package/community-profiles/files/etc/config/profile_hannover b/contrib/package/community-profiles/files/etc/config/profile_hannover
deleted file mode 100644 (file)
index 008b6c7..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-config 'community' 'profile'
-       option 'name' 'Freifunk Hannover'
-       option 'homepage' 'http://hannover.freifunk.net'
-       option 'ssid' 'hannover.freifunk.net'
-       option 'mesh_network' '10.2.0.0/16'
-       option 'splash_network' '10.104.0.0/16'
-       option 'splash_prefix' '27'
-       option 'latitude' '52.38427'
-       option 'longitude' '9.74359'
-
-config 'defaults' 'wifi_iface'
-       option 'bssid' 'CA:FF:EE:CA:FF:EE'
index 40d0a06..476e7fd 100644 (file)
@@ -1274,7 +1274,7 @@ true
 
 
 <h3>Usage:</h3>
-It is normally not possible to rename files across fileystems.
+It is normally not possible to rename files across filesystems.
 
 
 
index 5d08719..5bfd7a6 100644 (file)
@@ -47,7 +47,7 @@ module "nixio.fs"
 -- @name nixio.fs.rename
 -- @param      src     Source path
 -- @param      dest Destination path
--- @usage      It is normally not possible to rename files accross fileystems.
+-- @usage      It is normally not possible to rename files accross filesystems.
 -- @return     true
 
 --- Remove an empty directory.
diff --git a/luci.mk b/luci.mk
index 0b2ec4e..cc39c0f 100644 (file)
--- a/luci.mk
+++ b/luci.mk
@@ -96,6 +96,7 @@ define Package/$(PKG_NAME)
   SUBMENU:=$(if $(LUCI_MENU.$(LUCI_TYPE)),$(LUCI_MENU.$(LUCI_TYPE)),$(LUCI_MENU.app))
   TITLE:=$(if $(LUCI_TITLE),$(LUCI_TITLE),LuCI $(LUCI_NAME) $(LUCI_TYPE))
   DEPENDS:=$(LUCI_DEPENDS)
+  $(if $(LUCI_EXTRA_DEPENDS),EXTRA_DEPENDS:=$(LUCI_EXTRA_DEPENDS))
   $(if $(LUCI_PKGARCH),PKGARCH:=$(LUCI_PKGARCH))
 endef
 
index 6393195..d3039ef 100644 (file)
@@ -13,6 +13,7 @@ LUCI_BASENAME:=base
 
 LUCI_TITLE:=LuCI core libraries
 LUCI_DEPENDS:=+lua +libuci-lua +luci-lib-nixio +luci-lib-ip +rpcd +libubus-lua +luci-lib-jsonc
+LUCI_EXTRA_DEPENDS:=libuci-lua (>= 2018-01-01)
 
 PKG_SOURCE:=LuaSrcDiet-0.12.1.tar.bz2
 PKG_SOURCE_URL:=https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/luasrcdiet
index d9ef408..6f405a1 100644 (file)
@@ -6,14 +6,12 @@ local type, next, pairs, ipairs, loadfile, table, select
 
 local tonumber, tostring, math = tonumber, tostring, math
 
-local require = require
+local pcall, require, setmetatable = pcall, require, setmetatable
 
 local nxo = require "nixio"
 local nfs = require "nixio.fs"
 local ipc = require "luci.ip"
-local sys = require "luci.sys"
 local utl = require "luci.util"
-local dsp = require "luci.dispatcher"
 local uci = require "luci.model.uci"
 local lng = require "luci.i18n"
 local jsc = require "luci.jsonc"
@@ -108,6 +106,58 @@ function _set(c, s, o, v)
        end
 end
 
+local function _wifi_state()
+       if not next(_ubuswificache) then
+               _ubuswificache = utl.ubus("network.wireless", "status", {}) or {}
+       end
+       return _ubuswificache
+end
+
+local function _wifi_state_by_sid(sid)
+       local t1, n1 = _uci:get("wireless", sid)
+       if t1 == "wifi-iface" and n1 ~= nil then
+               local radioname, radiostate
+               for radioname, radiostate in pairs(_wifi_state()) do
+                       if type(radiostate) == "table" and
+                          type(radiostate.interfaces) == "table"
+                       then
+                               local netidx, netstate
+                               for netidx, netstate in ipairs(radiostate.interfaces) do
+                                       if type(netstate) == "table" and
+                                          type(netstate.section) == "string"
+                                       then
+                                               local t2, n2 = _uci:get("wireless", netstate.section)
+                                               if t1 == t2 and n1 == n2 then
+                                                       return radioname, radiostate, netstate
+                                               end
+                                       end
+                               end
+                       end
+               end
+       end
+end
+
+local function _wifi_state_by_ifname(ifname)
+       if type(ifname) == "string" then
+               local radioname, radiostate
+               for radioname, radiostate in pairs(_wifi_state()) do
+                       if type(radiostate) == "table" and
+                          type(radiostate.interfaces) == "table"
+                       then
+                               local netidx, netstate
+                               for netidx, netstate in ipairs(radiostate.interfaces) do
+                                       if type(netstate) == "table" and
+                                          type(netstate.ifname) == "string" and
+                                          netstate.ifname == ifname
+                                       then
+                                               return radioname, radiostate, netstate
+                                       end
+                               end
+                       end
+               end
+       end
+end
+
 function _wifi_iface(x)
        local _, p
        for _, p in ipairs(IFACE_PATTERNS_WIRELESS) do
@@ -118,61 +168,113 @@ function _wifi_iface(x)
        return false
 end
 
-function _wifi_state(key, val, field)
-       local radio, radiostate, ifc, ifcstate
-
-       if not next(_ubuswificache) then
-               _ubuswificache = utl.ubus("network.wireless", "status", {}) or {}
+local function _wifi_iwinfo_by_ifname(ifname, force_phy_only)
+       local stat, iwinfo = pcall(require, "iwinfo")
+       local iwtype = stat and type(ifname) == "string" and iwinfo.type(ifname)
+       local is_nonphy_op = {
+               bitrate     = true,
+               quality     = true,
+               quality_max = true,
+               mode        = true,
+               ssid        = true,
+               bssid       = true,
+               assoclist   = true,
+               encryption  = true
+       }
 
-               -- workaround extended section format
-               for radio, radiostate in pairs(_ubuswificache) do
-                       for ifc, ifcstate in pairs(radiostate.interfaces) do
-                               if ifcstate.section and ifcstate.section:sub(1, 1) == '@' then
-                                       local s = _uci:get_all('wireless.%s' % ifcstate.section)
-                                       if s then
-                                               ifcstate.section = s['.name']
-                                       end
+       if iwtype then
+               -- if we got a type but no real netdev, we're referring to a phy
+               local phy_only = force_phy_only or (ipc.link(ifname).type ~= 1)
+
+               return setmetatable({}, {
+                       __index = function(t, k)
+                               if k == "ifname" then
+                                       return ifname
+                               elseif phy_only and is_nonphy_op[k] then
+                                       return nil
+                               elseif iwinfo[iwtype][k] then
+                                       return iwinfo[iwtype][k](ifname)
                                end
                        end
-               end
+               })
        end
+end
 
-       for radio, radiostate in pairs(_ubuswificache) do
-               for ifc, ifcstate in pairs(radiostate.interfaces) do
-                       if ifcstate[key] == val then
-                               return ifcstate[field]
-                       end
+local function _wifi_sid_by_netid(netid)
+       if type(netid) == "string" then
+               local radioname, netidx = netid:match("^(%w+)%.network(%d+)$")
+               if radioname and netidx then
+                       local i, n = 0, nil
+
+                       netidx = tonumber(netidx)
+                       _uci:foreach("wireless", "wifi-iface",
+                               function(s)
+                                       if s.device == radioname then
+                                               i = i + 1
+                                               if i == netidx then
+                                                       n = s[".name"]
+                                                       return false
+                                               end
+                                       end
+                               end)
+
+                       return n
                end
        end
 end
 
-function _wifi_lookup(ifn)
-       -- got a radio#.network# pseudo iface, locate the corresponding section
-       local radio, ifnidx = ifn:match("^(%w+)%.network(%d+)$")
-       if radio and ifnidx then
-               local sid = nil
-               local num = 0
+function _wifi_sid_by_ifname(ifn)
+       local sid = _wifi_sid_by_netid(ifn)
+       if sid then
+               return sid
+       end
 
-               ifnidx = tonumber(ifnidx)
-               _uci:foreach("wireless", "wifi-iface",
-                       function(s)
-                               if s.device == radio then
-                                       num = num + 1
-                                       if num == ifnidx then
-                                               sid = s['.name']
-                                               return false
-                                       end
-                               end
-                       end)
+       local _, _, netstate = _wifi_state_by_ifname(ifn)
+       if netstate and type(netstate.section) == "string" then
+               return netstate.section
+       end
+end
 
-               return sid
+local function _wifi_netid_by_sid(sid)
+       local t, n = _uci:get("wireless", sid)
+       if t == "wifi-iface" and n ~= nil then
+               local radioname = _uci:get("wireless", n, "device")
+               if type(radioname) == "string" then
+                       local i, netid = 0, nil
+
+                       _uci:foreach("wireless", "wifi-iface",
+                               function(s)
+                                       if s.device == radioname then
+                                               i = i + 1
+                                               if s[".name"] == n then
+                                                       netid = "%s.network%d" %{ radioname, i }
+                                                       return false
+                                               end
+                                       end
+                               end)
 
-       -- looks like wifi, try to locate the section via ubus state
-       elseif _wifi_iface(ifn) then
-               return _wifi_state("ifname", ifn, "section")
+                       return netid, radioname
+               end
        end
 end
 
+local function _wifi_netid_by_netname(name)
+       local netid = nil
+
+       _uci:foreach("wireless", "wifi-iface",
+               function(s)
+                       local net
+                       for net in utl.imatch(s.network) do
+                               if net == name then
+                                       netid = _wifi_netid_by_sid(s[".name"])
+                                       return false
+                               end
+                       end
+               end)
+
+       return netid
+end
+
 function _iface_virtual(x)
        local _, p
        for _, p in ipairs(IFACE_PATTERNS_VIRTUAL) do
@@ -524,20 +626,8 @@ function get_interface(self, i)
        if _interfaces[i] or _wifi_iface(i) then
                return interface(i)
        else
-               local ifc
-               local num = { }
-               _uci:foreach("wireless", "wifi-iface",
-                       function(s)
-                               if s.device then
-                                       num[s.device] = num[s.device] and num[s.device] + 1 or 1
-                                       if s['.name'] == i then
-                                               ifc = interface(
-                                                       "%s.network%d" %{s.device, num[s.device] })
-                                               return false
-                                       end
-                               end
-                       end)
-               return ifc
+               local netid = _wifi_netid_by_netname(i)
+               return netid and interface(netid)
        end
 end
 
@@ -644,7 +734,7 @@ function get_wifidevs(self)
 end
 
 function get_wifinet(self, net)
-       local wnet = _wifi_lookup(net)
+       local wnet = _wifi_sid_by_ifname(net)
        if wnet then
                return wifinet(wnet)
        end
@@ -660,7 +750,7 @@ function add_wifinet(self, net, options)
 end
 
 function del_wifinet(self, net)
-       local wnet = _wifi_lookup(net)
+       local wnet = _wifi_sid_by_ifname(net)
        if wnet then
                _uci:delete("wireless", wnet)
                return true
@@ -784,22 +874,7 @@ function protocol.ifname(self)
                ifname = self:_ubus("device")
        end
        if not ifname then
-               local num = { }
-               _uci:foreach("wireless", "wifi-iface",
-                       function(s)
-                               if s.device then
-                                       num[s.device] = num[s.device]
-                                               and num[s.device] + 1 or 1
-
-                                       local net
-                                       for net in utl.imatch(s.network) do
-                                               if net == self.sid then
-                                                       ifname = "%s.network%d" %{ s.device, num[s.device] }
-                                                       return false
-                                               end
-                                       end
-                               end
-                       end)
+               ifname = _wifi_netid_by_netname(self.sid)
        end
        return ifname
 end
@@ -981,24 +1056,17 @@ function protocol.is_empty(self)
        if self:is_floating() then
                return false
        else
-               local rv = true
+               local empty = true
 
                if (self:_get("ifname") or ""):match("%S+") then
-                       rv = false
+                       empty = false
                end
 
-               _uci:foreach("wireless", "wifi-iface",
-                       function(s)
-                               local n
-                               for n in utl.imatch(s.network) do
-                                       if n == self.sid then
-                                               rv = false
-                                               return false
-                                       end
-                               end
-                       end)
+               if empty and _wifi_netid_by_netname(self.sid) then
+                       empty = false
+               end
 
-               return rv
+               return empty
        end
 end
 
@@ -1006,7 +1074,7 @@ function protocol.add_interface(self, ifname)
        ifname = _M:ifnameof(ifname)
        if ifname and not self:is_floating() then
                -- if its a wifi interface, change its network option
-               local wif = _wifi_lookup(ifname)
+               local wif = _wifi_sid_by_ifname(ifname)
                if wif then
                        _append("wireless", wif, "network", self.sid)
 
@@ -1021,7 +1089,7 @@ function protocol.del_interface(self, ifname)
        ifname = _M:ifnameof(ifname)
        if ifname and not self:is_floating() then
                -- if its a wireless interface, clear its network option
-               local wif = _wifi_lookup(ifname)
+               local wif = _wifi_sid_by_ifname(ifname)
                if wif then _filter("wireless", wif, "network", self.sid) end
 
                -- remove the interface
@@ -1043,21 +1111,7 @@ function protocol.get_interface(self)
                        ifn = ifn:match("^[^:/]+")
                        return ifn and interface(ifn, self)
                end
-               ifn = nil
-               _uci:foreach("wireless", "wifi-iface",
-                       function(s)
-                               if s.device then
-                                       num[s.device] = num[s.device] and num[s.device] + 1 or 1
-
-                                       local net
-                                       for net in utl.imatch(s.network) do
-                                               if net == self.sid then
-                                                       ifn = "%s.network%d" %{ s.device, num[s.device] }
-                                                       return false
-                                               end
-                                       end
-                               end
-                       end)
+               ifn = _wifi_netid_by_netname(self.sid)
                return ifn and interface(ifn, self)
        end
 end
@@ -1077,18 +1131,17 @@ function protocol.get_interfaces(self)
                        ifaces[#ifaces+1] = nfs[ifn]
                end
 
-               local num = { }
                local wfs = { }
                _uci:foreach("wireless", "wifi-iface",
                        function(s)
                                if s.device then
-                                       num[s.device] = num[s.device] and num[s.device] + 1 or 1
-
                                        local net
                                        for net in utl.imatch(s.network) do
                                                if net == self.sid then
-                                                       ifn = "%s.network%d" %{ s.device, num[s.device] }
-                                                       wfs[ifn] = interface(ifn, self)
+                                                       ifn = _wifi_netid_by_sid(s[".name"])
+                                                       if ifn then
+                                                               wfs[ifn] = interface(ifn, self)
+                                                       end
                                                end
                                        end
                                end
@@ -1119,7 +1172,7 @@ function protocol.contains_interface(self, ifname)
                        end
                end
 
-               local wif = _wifi_lookup(ifname)
+               local wif = _wifi_sid_by_ifname(ifname)
                if wif then
                        local n
                        for n in utl.imatch(_uci:get("wireless", wif, "network")) do
@@ -1134,17 +1187,18 @@ function protocol.contains_interface(self, ifname)
 end
 
 function protocol.adminlink(self)
-       return dsp.build_url("admin", "network", "network", self.sid)
+       local stat, dsp = pcall(require, "luci.dispatcher")
+       return stat and dsp.build_url("admin", "network", "network", self.sid)
 end
 
 
 interface = utl.class()
 
 function interface.__init__(self, ifname, network)
-       local wif = _wifi_lookup(ifname)
+       local wif = _wifi_sid_by_ifname(ifname)
        if wif then
                self.wif    = wifinet(wif)
-               self.ifname = _wifi_state("section", wif, "ifname")
+               self.ifname = self.wif:ifname()
        end
 
        self.ifname  = self.ifname or ifname
@@ -1332,9 +1386,14 @@ end
 
 wifidev = utl.class()
 
-function wifidev.__init__(self, dev)
-       self.sid    = dev
-       self.iwinfo = dev and sys.wifi.getiwinfo(dev) or { }
+function wifidev.__init__(self, name)
+       local t, n = _uci:get("wireless", name)
+       if t == "wifi-device" and n ~= nil then
+               self.sid    = n
+               self.iwinfo = _wifi_iwinfo_by_ifname(self.sid, true)
+       end
+       self.sid    = self.sid    or name
+       self.iwinfo = self.iwinfo or { ifname = self.sid }
 end
 
 function wifidev.get(self, opt)
@@ -1387,7 +1446,7 @@ function wifidev.get_wifinet(self, net)
        if _uci:get("wireless", net) == "wifi-iface" then
                return wifinet(net)
        else
-               local wnet = _wifi_lookup(net)
+               local wnet = _wifi_sid_by_ifname(net)
                if wnet then
                        return wifinet(wnet)
                end
@@ -1421,7 +1480,7 @@ function wifidev.del_wifinet(self, net)
        if utl.instanceof(net, wifinet) then
                net = net.sid
        elseif _uci:get("wireless", net) ~= "wifi-iface" then
-               net = _wifi_lookup(net)
+               net = _wifi_sid_by_ifname(net)
        end
 
        if net and _uci:get("wireless", net, "device") == self.sid then
@@ -1435,49 +1494,50 @@ end
 
 wifinet = utl.class()
 
-function wifinet.__init__(self, net, data)
-       self.sid = net
-
-       local n = 0
-       local num = { }
-       local netid, sid
-       _uci:foreach("wireless", "wifi-iface",
-               function(s)
-                       n = n + 1
-                       if s.device then
-                               num[s.device] = num[s.device] and num[s.device] + 1 or 1
-                               if s['.name'] == self.sid then
-                                       sid = "@wifi-iface[%d]" % n
-                                       netid = "%s.network%d" %{ s.device, num[s.device] }
-                                       return false
-                               end
-                       end
-               end)
+function wifinet.__init__(self, name, data)
+       local sid, netid, radioname, radiostate, netstate
 
+       -- lookup state by radio#.network# notation
+       sid = _wifi_sid_by_netid(name)
        if sid then
-               local _, k, r, i
-               for k, r in pairs(_ubuswificache) do
-                       if type(r) == "table" and
-                          type(r.interfaces) == "table"
-                       then
-                               for _, i in ipairs(r.interfaces) do
-                                       if type(i) == "table" and i.section == sid then
-                                               self._ubusdata = {
-                                                       radio = k,
-                                                       dev = r,
-                                                       net = i
-                                               }
-                                       end
+               netid = name
+               radioname, radiostate, netstate = _wifi_state_by_sid(sid)
+       else
+               -- lookup state by ifname (e.g. wlan0)
+               radioname, radiostate, netstate = _wifi_state_by_ifname(name)
+               if radioname and radiostate and netstate then
+                       sid = netstate.section
+                       netid = _wifi_netid_by_sid(sid)
+               else
+                       -- lookup state by uci section id (e.g. cfg053579)
+                       radioname, radiostate, netstate = _wifi_state_by_sid(name)
+                       if radioname and radiostate and netstate then
+                               sid = name
+                               netid = _wifi_netid_by_sid(sid)
+                       else
+                               -- no state available, try to resolve from uci
+                               netid, radioname = _wifi_netid_by_sid(name)
+                               if netid and radioname then
+                                       sid = name
                                end
                        end
                end
        end
 
-       local dev = _wifi_state("section", self.sid, "ifname") or netid
+       local iwinfo =
+               (netstate and _wifi_iwinfo_by_ifname(netstate.ifname)) or
+               (radioname and _wifi_iwinfo_by_ifname(radioname)) or
+               { ifname = (netid or sid or name) }
 
-       self.netid  = netid
-       self.wdev   = dev
-       self.iwinfo = dev and sys.wifi.getiwinfo(dev) or { }
+       self.sid       = sid or name
+       self.wdev      = iwinfo.ifname
+       self.iwinfo    = iwinfo
+       self.netid     = netid
+       self._ubusdata = {
+               radio = radioname,
+               dev   = radiostate,
+               net   = netstate
+       }
 end
 
 function wifinet.ubus(self, ...)
@@ -1664,7 +1724,8 @@ function wifinet.get_i18n(self)
 end
 
 function wifinet.adminlink(self)
-       return dsp.build_url("admin", "network", "wireless", self.netid)
+       local stat, dsp = pcall(require, "luci.dispatcher")
+       return dsp and dsp.build_url("admin", "network", "wireless", self.netid)
 end
 
 function wifinet.get_network(self)
index 115c54d..84c747f 100644 (file)
@@ -7,6 +7,7 @@ local table  = require "table"
 local nixio  = require "nixio"
 local fs     = require "nixio.fs"
 local uci    = require "luci.model.uci"
+local ntm    = require "luci.model.network"
 
 local luci  = {}
 luci.util   = require "luci.util"
@@ -451,37 +452,19 @@ end
 wifi = {}
 
 function wifi.getiwinfo(ifname)
-       local stat, iwinfo = pcall(require, "iwinfo")
-
-       if ifname then
-               local d, n = ifname:match("^(%w+)%.network(%d+)")
-               local wstate = luci.util.ubus("network.wireless", "status") or { }
-
-               d = d or ifname
-               n = n and tonumber(n) or 1
-
-               if type(wstate[d]) == "table" and
-                  type(wstate[d].interfaces) == "table" and
-                  type(wstate[d].interfaces[n]) == "table" and
-                  type(wstate[d].interfaces[n].ifname) == "string"
-               then
-                       ifname = wstate[d].interfaces[n].ifname
-               else
-                       ifname = d
-               end
+       ntm.init()
 
-               local t = stat and iwinfo.type(ifname)
-               local x = t and iwinfo[t] or { }
-               return setmetatable({}, {
-                       __index = function(t, k)
-                               if k == "ifname" then
-                                       return ifname
-                               elseif x[k] then
-                                       return x[k](ifname)
-                               end
-                       end
-               })
+       local wnet = ntm:get_wifinet(ifname)
+       if wnet and wnet.iwinfo then
+               return wnet.iwinfo
        end
+
+       local wdev = ntm:get_wifidev(ifname)
+       if wdev and wdev.iwinfo then
+               return wdev.iwinfo
+       end
+
+       return { ifname = ifname }
 end
 
 
index e69534b..09a8676 100644 (file)
@@ -222,9 +222,6 @@ msgstr "Concentrador d'accés"
 msgid "Access Point"
 msgstr "Punt d'accés"
 
-msgid "Action"
-msgstr "Acció"
-
 msgid "Actions"
 msgstr "Accions"
 
@@ -299,6 +296,9 @@ msgstr ""
 msgid "Allow all except listed"
 msgstr "Permet-les totes menys les llistades"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Permet només les llistades"
 
@@ -572,9 +572,6 @@ msgstr ""
 "Repositoris específics de la distribució/compilació. Aquest fitxer NO es "
 "preservarà durant les actualitzacions del microprogramari del sistema."
 
-msgid "Buttons"
-msgstr "Botons"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -605,7 +602,7 @@ msgstr "Canal"
 msgid "Check"
 msgstr "Comprovació"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -1251,6 +1248,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr "Reenvia el trànsit difós"
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr "Mode de reenviament"
 
@@ -1336,9 +1336,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr ""
-
 msgid "Hang Up"
 msgstr "Penja"
 
@@ -1929,9 +1926,6 @@ msgstr ""
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr ""
 
-msgid "Maximum hold time"
-msgstr ""
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1949,12 +1943,12 @@ msgstr "Memòria"
 msgid "Memory usage (%)"
 msgstr "Ús de Memòria (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Mètrica"
 
-msgid "Minimum hold time"
-msgstr ""
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2399,9 +2393,6 @@ msgstr ""
 msgid "Path to Private Key"
 msgstr "Ruta a la clau privada"
 
-msgid "Path to executable which handles the button event"
-msgstr ""
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2964,9 +2955,6 @@ msgstr "Origen"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr ""
-
 msgid "Specifies the directory the device is attached to"
 msgstr "Especifica el directori a que el dispositiu està adjuntat"
 
@@ -3347,9 +3335,6 @@ msgstr ""
 "Aquesta llista mostra una vista general sobre els processos corrent al "
 "sistema actualment i el seu estat."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr ""
-
 msgid "This page gives an overview over currently active network connections."
 msgstr ""
 "Aquesta pàgina ofereix una vista general de les connexions de xarxa actives "
@@ -3885,6 +3870,12 @@ msgstr "sí"
 msgid "« Back"
 msgstr "« Enrere"
 
+#~ msgid "Action"
+#~ msgstr "Acció"
+
+#~ msgid "Buttons"
+#~ msgstr "Botons"
+
 #~ msgid "Leasetime"
 #~ msgstr "Duració d'arrendament"
 
index bff89c8..91e035f 100644 (file)
@@ -217,9 +217,6 @@ msgstr "Přístupový koncentrátor"
 msgid "Access Point"
 msgstr "Přístupový bod"
 
-msgid "Action"
-msgstr "Akce"
-
 msgid "Actions"
 msgstr "Akce"
 
@@ -295,6 +292,9 @@ msgstr "Povolit <abbr title=\"Secure Shell\">SSH</abbr> autentizaci heslem"
 msgid "Allow all except listed"
 msgstr "Povolit vše mimo uvedené"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Povolit pouze uvedené"
 
@@ -565,9 +565,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr "Tlačítka"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -598,7 +595,7 @@ msgstr "Kanál"
 msgid "Check"
 msgstr "Kontrola"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -1253,6 +1250,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr "Přeposílat broadcasty"
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr "Režim přeposílání"
 
@@ -1336,9 +1336,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr "Handler"
-
 msgid "Hang Up"
 msgstr "Zavěsit"
 
@@ -1937,9 +1934,6 @@ msgstr "Nejvyšší povolená velikost EDNS.0 UDP paketů"
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr "Nejvyšší počet sekund čekání, než bude modem připraven"
 
-msgid "Maximum hold time"
-msgstr "Maximální doba držení"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1957,12 +1951,12 @@ msgstr "Paměť"
 msgid "Memory usage (%)"
 msgstr "Využití paměti (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Metrika"
 
-msgid "Minimum hold time"
-msgstr "Minimální čas zápůjčky"
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2408,9 +2402,6 @@ msgstr "Cesta k certifikátu klienta"
 msgid "Path to Private Key"
 msgstr "Cesta k privátnímu klíči"
 
-msgid "Path to executable which handles the button event"
-msgstr "Cesta ke spustitelnému souboru, který obsluhuje událost tlačítka"
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2993,9 +2984,6 @@ msgstr "Zdroj"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr ""
-
 msgid "Specifies the directory the device is attached to"
 msgstr ""
 
@@ -3389,9 +3377,6 @@ msgstr ""
 "V tomto seznamu vidíte přehled aktuálně běžících systémových procesů a "
 "jejich stavy."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr "Na této stránce si můžete nastavit vlastní události tlačítek"
-
 msgid "This page gives an overview over currently active network connections."
 msgstr "Tato stránka zobrazuje přehled aktivních síťových spojení."
 
@@ -3926,6 +3911,27 @@ msgstr "ano"
 msgid "« Back"
 msgstr "« Zpět"
 
+#~ msgid "Action"
+#~ msgstr "Akce"
+
+#~ msgid "Buttons"
+#~ msgstr "Tlačítka"
+
+#~ msgid "Handler"
+#~ msgstr "Handler"
+
+#~ msgid "Maximum hold time"
+#~ msgstr "Maximální doba držení"
+
+#~ msgid "Minimum hold time"
+#~ msgstr "Minimální čas zápůjčky"
+
+#~ msgid "Path to executable which handles the button event"
+#~ msgstr "Cesta ke spustitelnému souboru, který obsluhuje událost tlačítka"
+
+#~ msgid "This page allows the configuration of custom button actions"
+#~ msgstr "Na této stránce si můžete nastavit vlastní události tlačítek"
+
 #~ msgid "Leasetime"
 #~ msgstr "Doba trvání zápůjčky"
 
index eb9221f..ebf6b76 100644 (file)
@@ -3,21 +3,21 @@ msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-05-26 17:57+0200\n"
-"PO-Revision-Date: 2017-10-17 22:46+0200\n"
+"PO-Revision-Date: 2018-01-09 08:01+0100\n"
 "Last-Translator: JoeSemler <josef.semler@gmail.com>\n"
 "Language: de\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 2.0.4\n"
+"X-Generator: Poedit 1.8.11\n"
 "Language-Team: \n"
 
 msgid "%.1f dB"
 msgstr ""
 
 msgid "%s is untagged in multiple VLANs!"
-msgstr ""
+msgstr "%s darf nicht ohne VLAN-Tag in mehreren VLAN-Gruppen vorkommen!"
 
 msgid "(%d minute window, %d second interval)"
 msgstr "(%d Minuten Abschnitt, %d Sekunden Intervall)"
@@ -68,7 +68,7 @@ msgid "6-octet identifier as a hex string - no colons"
 msgstr "sechstellige hexadezimale ID (ohne Doppelpunkte)"
 
 msgid "802.11r Fast Transition"
-msgstr ""
+msgstr "802.11r: Schnelle Client-Übergabe"
 
 msgid "802.11w Association SA Query maximum timeout"
 msgstr "Maximales Timeout für Quelladressprüfungen (SA Query)"
@@ -160,6 +160,8 @@ msgid ""
 "<br/>Note: you need to manually restart the cron service if the crontab file "
 "was empty before editing."
 msgstr ""
+"<br/>Hinweis: Der Cron-Dienst muss manuell neu gestartet werden wenn die "
+"Crontab-Datei vor der Bearbeitung leer war."
 
 msgid "A43C + J43 + A43"
 msgstr ""
@@ -218,9 +220,6 @@ msgstr "Access Concentrator"
 msgid "Access Point"
 msgstr "Access Point"
 
-msgid "Action"
-msgstr "Aktion"
-
 msgid "Actions"
 msgstr "Aktionen"
 
@@ -258,7 +257,7 @@ msgid "Additional Hosts files"
 msgstr "Zusätzliche Hosts-Dateien"
 
 msgid "Additional servers file"
-msgstr ""
+msgstr "Zusätzliche Nameserver-Datei"
 
 msgid "Address"
 msgstr "Adresse"
@@ -273,7 +272,7 @@ msgid "Advanced Settings"
 msgstr "Erweiterte Einstellungen"
 
 msgid "Aggregate Transmit Power(ACTATP)"
-msgstr ""
+msgstr "Vollständige Sendeleistung (ACTATP)"
 
 msgid "Alert"
 msgstr "Alarm"
@@ -294,6 +293,9 @@ msgstr "Erlaube Anmeldung per Passwort"
 msgid "Allow all except listed"
 msgstr "Alle außer gelistete erlauben"
 
+msgid "Allow legacy 802.11b rates"
+msgstr "Veraltete 802.11b Raten erlauben"
+
 msgid "Allow listed only"
 msgstr "Nur gelistete erlauben"
 
@@ -324,6 +326,8 @@ msgid ""
 "Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison"
 "\">Tunneling Comparison</a> on SIXXS"
 msgstr ""
+"Siehe auch <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison"
+"\">Tunneling Comparison</a> bei SIXXS."
 
 msgid "Always announce default router"
 msgstr "Immer Defaultrouter ankündigen"
@@ -577,9 +581,6 @@ msgstr ""
 "Konfiguriert die distributionsspezifischen Paket-Repositories. Diese "
 "Konfiguration wird bei Upgrades NICHT gesichert."
 
-msgid "Buttons"
-msgstr "Knöpfe"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 "CA-Zertifikat (wird beim ersten Verbindungsaufbau automatisch gespeichert "
@@ -612,7 +613,7 @@ msgstr "Kanal"
 msgid "Check"
 msgstr "Prüfen"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr "Dateisysteme prüfen"
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -789,10 +790,10 @@ msgid "DHCPv6 client"
 msgstr "DHCPv6 Client"
 
 msgid "DHCPv6-Mode"
-msgstr ""
+msgstr "DHCPv6-Modus"
 
 msgid "DHCPv6-Service"
-msgstr ""
+msgstr "DHCPv6-Dienst"
 
 msgid "DNS"
 msgstr "DNS"
@@ -909,7 +910,7 @@ msgid "Disable DNS setup"
 msgstr "DNS-Verarbeitung deaktivieren"
 
 msgid "Disable Encryption"
-msgstr ""
+msgstr "Verschlüsselung deaktivieren"
 
 msgid "Disabled"
 msgstr "Deaktiviert"
@@ -1284,6 +1285,9 @@ msgstr "Fehlerkorrektursekunden (FECS)"
 msgid "Forward broadcast traffic"
 msgstr "Broadcasts weiterleiten"
 
+msgid "Forward mesh peer traffic"
+msgstr "Mesh-Nachbar-Traffic weiterleiten"
+
 msgid "Forwarding mode"
 msgstr "Weiterleitungstyp"
 
@@ -1331,7 +1335,7 @@ msgid "Generate Config"
 msgstr "Konfiguration generieren"
 
 msgid "Generate PMK locally"
-msgstr ""
+msgstr "PMK lokal generieren"
 
 msgid "Generate archive"
 msgstr "Sicherung erstellen"
@@ -1371,9 +1375,6 @@ msgstr "HE.net Benutzername"
 msgid "HT mode (802.11n)"
 msgstr "HT-Modus (802.11n)"
 
-msgid "Handler"
-msgstr "Handler"
-
 msgid "Hang Up"
 msgstr "Auflegen"
 
@@ -1820,6 +1821,12 @@ msgid ""
 "from the R0KH that the STA used during the Initial Mobility Domain "
 "Association."
 msgstr ""
+"Liste von R0KH-Bezeichnern innerhalb der selben Mobilitätsdomäne. <br /"
+">Format: MAC-Adresse,NAS-Identifier,128 Bit Schlüssel in Hex-Notation. <br /"
+">Diese Liste wird verwendet um R0KH-Bezeichner (NAS Identifier) einer Ziel-"
+"MAC-Adresse zuzuordnen damit ein PMK-R1-Schlüssel von der R0KH angefordert "
+"werden kann, mit der sich der Client wärend der anfänglichen "
+"Mobilitätsdomänen-Assoziation verbunden hat."
 
 msgid ""
 "List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
@@ -1828,6 +1835,12 @@ msgid ""
 "R0KH. This is also the list of authorized R1KHs in the MD that can request "
 "PMK-R1 keys."
 msgstr ""
+"Liste von R1KH-Bezeichnern innerhalb der selben Mobilitätsdomäne. <br /"
+">Format: MAC-Adresse,R1KH-ID im MAC-Adress-Format,128 Bit Schlüssel in Hex-"
+"Notation. <br />Diese Liste wird benutzt um einer R1KH-ID eine Ziel-MAC-"
+"Adresse zuzuordnen wenn ein PMK-R1-Schlüssel von einer R0KH-Station "
+"versendet wird. Die Liste dient auch zur Authorisierung von R1KH-IDs, welche "
+"innerhalb der Mobilitätsdomain PMK-R1-Schlüssel anfordern dürfen."
 
 msgid "List of SSH key files for auth"
 msgstr "Liste der SSH Schlüssel zur Authentifikation"
@@ -1983,9 +1996,6 @@ msgstr "Maximal zulässige Größe von EDNS.0 UDP Paketen"
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr "Maximale Zeit die gewartet wird bis das Modem bereit ist (in Sekunden)"
 
-msgid "Maximum hold time"
-msgstr "Maximalzeit zum Halten der Verbindung"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -2006,12 +2016,12 @@ msgstr "Hauptspeicher"
 msgid "Memory usage (%)"
 msgstr "Speichernutzung (%)"
 
+msgid "Mesh Id"
+msgstr "Mesh-ID"
+
 msgid "Metric"
 msgstr "Metrik"
 
-msgid "Minimum hold time"
-msgstr "Minimalzeit zum Halten der Verbindung"
-
 msgid "Mirror monitor port"
 msgstr "Spiegel-Monitor-Port"
 
@@ -2062,7 +2072,7 @@ msgstr ""
 "Laufwerke und Speicher zur Verwendung eingebunden werden."
 
 msgid "Mount filesystems not specifically configured"
-msgstr ""
+msgstr "Nicht explizit konfigurierte Dateisysteme einhängen"
 
 msgid "Mount options"
 msgstr "Mount-Optionen"
@@ -2475,9 +2485,6 @@ msgstr "Pfad zu Client-Zertifikat"
 msgid "Path to Private Key"
 msgstr "Pfad zum Privaten Schlüssel"
 
-msgid "Path to executable which handles the button event"
-msgstr "Ausführbare Datei welche das Schalter-Ereignis verarbeitet"
-
 msgid "Path to inner CA-Certificate"
 msgstr "Pfad zum inneren CA-Zertifikat"
 
@@ -2617,10 +2624,10 @@ msgid "Quality"
 msgstr "Qualität"
 
 msgid "R0 Key Lifetime"
-msgstr ""
+msgstr "R0-Schlüsselgültigkeit"
 
 msgid "R1 Key Holder"
-msgstr ""
+msgstr "R1-Schlüsselinhaber"
 
 msgid "RFC3947 NAT-T mode"
 msgstr ""
@@ -3078,9 +3085,6 @@ msgstr "Quelle"
 msgid "Source routing"
 msgstr "Quell-Routing"
 
-msgid "Specifies the button state to handle"
-msgstr "Gibt den zu behandelnden Tastenstatus an"
-
 msgid "Specifies the directory the device is attached to"
 msgstr "Nennt das Verzeichnis, an welches das Gerät angebunden ist"
 
@@ -3242,7 +3246,7 @@ msgid "Target"
 msgstr "Ziel"
 
 msgid "Target network"
-msgstr ""
+msgstr "Zielnetzwerk"
 
 msgid "Terminate"
 msgstr "Beenden"
@@ -3509,10 +3513,6 @@ msgstr ""
 "Diese Tabelle gibt eine Übersicht über aktuell laufende Systemprozesse und "
 "deren Status."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr ""
-"Diese Seite ermöglicht die Konfiguration benutzerdefinierter Tastenaktionen"
-
 msgid "This page gives an overview over currently active network connections."
 msgstr "Diese Seite gibt eine Übersicht über aktive Netzwerkverbindungen."
 
@@ -3832,6 +3832,8 @@ msgid ""
 "When using a PSK, the PMK can be generated locally without inter AP "
 "communications"
 msgstr ""
+"Wenn PSK in Verwendung ist, können PMK-Schlüssel lokal ohne Inter-Access-"
+"Point-Kommunikation erzeugt werden."
 
 msgid "Whether to create an IPv6 default route over the tunnel"
 msgstr ""
@@ -4056,6 +4058,32 @@ msgstr "ja"
 msgid "« Back"
 msgstr "« Zurück"
 
+#~ msgid "Action"
+#~ msgstr "Aktion"
+
+#~ msgid "Buttons"
+#~ msgstr "Knöpfe"
+
+#~ msgid "Handler"
+#~ msgstr "Handler"
+
+#~ msgid "Maximum hold time"
+#~ msgstr "Maximalzeit zum Halten der Verbindung"
+
+#~ msgid "Minimum hold time"
+#~ msgstr "Minimalzeit zum Halten der Verbindung"
+
+#~ msgid "Path to executable which handles the button event"
+#~ msgstr "Ausführbare Datei welche das Schalter-Ereignis verarbeitet"
+
+#~ msgid "Specifies the button state to handle"
+#~ msgstr "Gibt den zu behandelnden Tastenstatus an"
+
+#~ msgid "This page allows the configuration of custom button actions"
+#~ msgstr ""
+#~ "Diese Seite ermöglicht die Konfiguration benutzerdefinierter "
+#~ "Tastenaktionen"
+
 #~ msgid "Leasetime"
 #~ msgstr "Laufzeit"
 
index ca8240f..f3f27d0 100644 (file)
@@ -220,9 +220,6 @@ msgstr "Συγκεντρωτής Πρόσβασης "
 msgid "Access Point"
 msgstr "Σημείο Πρόσβασης"
 
-msgid "Action"
-msgstr "Ενέργεια"
-
 msgid "Actions"
 msgstr "Ενέργειες"
 
@@ -299,6 +296,9 @@ msgstr ""
 msgid "Allow all except listed"
 msgstr "Να επιτρέπονται όλες, εκτός από αυτές στη λίστα"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Να επιτρέπονται μόνο αυτές στην λίστα"
 
@@ -574,9 +574,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr "Κουμπιά"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -607,7 +604,7 @@ msgstr "Κανάλι"
 msgid "Check"
 msgstr "Έλεγχος"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -1267,6 +1264,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr "Προώθηση κίνησης broadcast"
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr "Μέθοδος προώθησης"
 
@@ -1350,9 +1350,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr ""
-
 msgid "Hang Up"
 msgstr "Κρέμασμα"
 
@@ -1944,9 +1941,6 @@ msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr ""
 "Μέγιστος αριθμός δευτερολέπτων αναμονής ώστε το modem να καταστεί έτοιμο"
 
-msgid "Maximum hold time"
-msgstr "Μέγιστος χρόνος κράτησης"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1964,12 +1958,12 @@ msgstr "Μνήμη"
 msgid "Memory usage (%)"
 msgstr "Χρήση Μνήμης (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Μέτρο"
 
-msgid "Minimum hold time"
-msgstr "Ελάχιστος χρόνος κράτησης"
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2415,9 +2409,6 @@ msgstr "Διαδρομή για Πιστοποιητικό-Πελάτη"
 msgid "Path to Private Key"
 msgstr "Διαδρομή για Ιδιωτικό Κλειδί"
 
-msgid "Path to executable which handles the button event"
-msgstr "Διαδρομή για το εκτελέσιμο που χειρίζεται το γεγονός του κουμπιού"
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2982,9 +2973,6 @@ msgstr "Πηγή"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr ""
-
 msgid "Specifies the directory the device is attached to"
 msgstr ""
 
@@ -3349,9 +3337,6 @@ msgstr ""
 "Αυτή η λίστα δίνει μία εικόνα των τρέχοντων εργασιών συστήματος και της "
 "κατάστασής τους."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr ""
-
 msgid "This page gives an overview over currently active network connections."
 msgstr ""
 "Αυτή η σελίδα δίνει μία εικόνα για τις τρέχουσες ενεργές συνδέσεις δικτύου."
@@ -3878,6 +3863,21 @@ msgstr "ναι"
 msgid "« Back"
 msgstr "« Πίσω"
 
+#~ msgid "Action"
+#~ msgstr "Ενέργεια"
+
+#~ msgid "Buttons"
+#~ msgstr "Κουμπιά"
+
+#~ msgid "Maximum hold time"
+#~ msgstr "Μέγιστος χρόνος κράτησης"
+
+#~ msgid "Minimum hold time"
+#~ msgstr "Ελάχιστος χρόνος κράτησης"
+
+#~ msgid "Path to executable which handles the button event"
+#~ msgstr "Διαδρομή για το εκτελέσιμο που χειρίζεται το γεγονός του κουμπιού"
+
 #~ msgid "Leasetime"
 #~ msgstr "Χρόνος Lease"
 
index 6db22b6..3ea1322 100644 (file)
@@ -220,9 +220,6 @@ msgstr "Access Concentrator"
 msgid "Access Point"
 msgstr "Access Point"
 
-msgid "Action"
-msgstr "Action"
-
 msgid "Actions"
 msgstr "Actions"
 
@@ -294,6 +291,9 @@ msgstr "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
 msgid "Allow all except listed"
 msgstr "Allow all except listed"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Allow listed only"
 
@@ -563,9 +563,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr "Buttons"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -596,7 +593,7 @@ msgstr "Channel"
 msgid "Check"
 msgstr "Check"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -1242,6 +1239,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr ""
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr ""
 
@@ -1325,9 +1325,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr "Handler"
-
 msgid "Hang Up"
 msgstr "Hang Up"
 
@@ -1912,9 +1909,6 @@ msgstr ""
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr ""
 
-msgid "Maximum hold time"
-msgstr "Maximum hold time"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1932,12 +1926,12 @@ msgstr "Memory"
 msgid "Memory usage (%)"
 msgstr "Memory usage (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Metric"
 
-msgid "Minimum hold time"
-msgstr "Minimum hold time"
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2382,9 +2376,6 @@ msgstr ""
 msgid "Path to Private Key"
 msgstr "Path to Private Key"
 
-msgid "Path to executable which handles the button event"
-msgstr ""
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2946,9 +2937,6 @@ msgstr "Source"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr "Specifies the button state to handle"
-
 msgid "Specifies the directory the device is attached to"
 msgstr ""
 
@@ -3307,9 +3295,6 @@ msgstr ""
 "This list gives an overview over currently running system processes and "
 "their status."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr ""
-
 msgid "This page gives an overview over currently active network connections."
 msgstr "This page gives an overview over currently active network connections."
 
@@ -3835,6 +3820,24 @@ msgstr ""
 msgid "« Back"
 msgstr "« Back"
 
+#~ msgid "Action"
+#~ msgstr "Action"
+
+#~ msgid "Buttons"
+#~ msgstr "Buttons"
+
+#~ msgid "Handler"
+#~ msgstr "Handler"
+
+#~ msgid "Maximum hold time"
+#~ msgstr "Maximum hold time"
+
+#~ msgid "Minimum hold time"
+#~ msgstr "Minimum hold time"
+
+#~ msgid "Specifies the button state to handle"
+#~ msgstr "Specifies the button state to handle"
+
 #~ msgid "Leasetime"
 #~ msgstr "Leasetime"
 
index 088bdbd..57e8ea9 100644 (file)
@@ -222,9 +222,6 @@ msgstr "Concentrador de acceso"
 msgid "Access Point"
 msgstr "Punto de Acceso"
 
-msgid "Action"
-msgstr "Acción"
-
 msgid "Actions"
 msgstr "Acciones"
 
@@ -300,6 +297,9 @@ msgstr ""
 msgid "Allow all except listed"
 msgstr "Permitir a todos excepto a los de la lista"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Permitir a los pertenecientes en la lista"
 
@@ -570,9 +570,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr "Botones"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -603,7 +600,7 @@ msgstr "Canal"
 msgid "Check"
 msgstr "Comprobar"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -1260,6 +1257,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr "Retransmitir tráfico de propagación"
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr "Modo de retransmisión"
 
@@ -1346,9 +1346,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr "Manejador"
-
 msgid "Hang Up"
 msgstr "Suspender"
 
@@ -1951,9 +1948,6 @@ msgstr "Tamaño máximo de paquetes EDNS.0 paquetes UDP"
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr "Segundos máximos de espera a que el módem esté activo"
 
-msgid "Maximum hold time"
-msgstr "Pausa máxima de transmisión"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1971,12 +1965,12 @@ msgstr "Memoria"
 msgid "Memory usage (%)"
 msgstr "Uso de memoria (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Métrica"
 
-msgid "Minimum hold time"
-msgstr "Pausa mínima de espera"
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2422,9 +2416,6 @@ msgstr "Camino al certificado de cliente"
 msgid "Path to Private Key"
 msgstr "Ruta a la Clave Privada"
 
-msgid "Path to executable which handles the button event"
-msgstr "Ruta al ejecutable que maneja el evento button"
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -3006,9 +2997,6 @@ msgstr "Origen"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr "Especifica el estado de botón a manejar"
-
 msgid "Specifies the directory the device is attached to"
 msgstr "Especifica el directorio al que está enlazado el dispositivo"
 
@@ -3414,9 +3402,6 @@ msgid ""
 "their status."
 msgstr "Procesos de sistema que se están ejecutando actualmente y su estado."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr "Configuración de acciones personalizadas para los botones"
-
 msgid "This page gives an overview over currently active network connections."
 msgstr "Conexiones de red activas."
 
@@ -3953,6 +3938,30 @@ msgstr "sí"
 msgid "« Back"
 msgstr "« Volver"
 
+#~ msgid "Action"
+#~ msgstr "Acción"
+
+#~ msgid "Buttons"
+#~ msgstr "Botones"
+
+#~ msgid "Handler"
+#~ msgstr "Manejador"
+
+#~ msgid "Maximum hold time"
+#~ msgstr "Pausa máxima de transmisión"
+
+#~ msgid "Minimum hold time"
+#~ msgstr "Pausa mínima de espera"
+
+#~ msgid "Path to executable which handles the button event"
+#~ msgstr "Ruta al ejecutable que maneja el evento button"
+
+#~ msgid "Specifies the button state to handle"
+#~ msgstr "Especifica el estado de botón a manejar"
+
+#~ msgid "This page allows the configuration of custom button actions"
+#~ msgstr "Configuración de acciones personalizadas para los botones"
+
 #~ msgid "Leasetime"
 #~ msgstr "Tiempo de cesión"
 
index a94ffb3..63d359e 100644 (file)
@@ -225,9 +225,6 @@ msgstr "Concentrateur d'accès"
 msgid "Access Point"
 msgstr "Point d'accès"
 
-msgid "Action"
-msgstr "Action"
-
 msgid "Actions"
 msgstr "Actions"
 
@@ -302,6 +299,9 @@ msgstr ""
 msgid "Allow all except listed"
 msgstr "Autoriser tout sauf ce qui est listé"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Autoriser seulement ce qui est listé"
 
@@ -575,9 +575,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr "Boutons"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -608,7 +605,7 @@ msgstr "Canal"
 msgid "Check"
 msgstr "Vérification"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -1272,6 +1269,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr "Transmettre le trafic de diffusion"
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr "Mode de transmission"
 
@@ -1357,9 +1357,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr "Gestionnaire"
-
 msgid "Hang Up"
 msgstr "Signal (HUP)"
 
@@ -1965,9 +1962,6 @@ msgstr "Taille maximum autorisée des paquets UDP EDNS.0"
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr "Délai d'attente maximum que le modem soit prêt"
 
-msgid "Maximum hold time"
-msgstr "Temps de maintien maximum"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1985,12 +1979,12 @@ msgstr "Mémoire"
 msgid "Memory usage (%)"
 msgstr "Utilisation Mémoire (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Metrique"
 
-msgid "Minimum hold time"
-msgstr "Temps de maintien mimimum"
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2435,9 +2429,6 @@ msgstr "Chemin du certificat-client"
 msgid "Path to Private Key"
 msgstr "Chemin de la clé privée"
 
-msgid "Path to executable which handles the button event"
-msgstr "Chemin du programme exécutable gérant les évènements liés au bouton"
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -3021,9 +3012,6 @@ msgstr "Source"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr "Indique l'état du bouton à gérer"
-
 msgid "Specifies the directory the device is attached to"
 msgstr "Indique le répertoire auquel le périphérique est rattaché"
 
@@ -3430,9 +3418,6 @@ msgstr ""
 "Cette liste donne une vue d'ensemble des processus en exécution et leur "
 "statut."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr "Cette page permet la configuration d'actions spécifiques des boutons"
-
 msgid "This page gives an overview over currently active network connections."
 msgstr ""
 "Cette page donne une vue d'ensemble des connexions réseaux actuellement "
@@ -3971,6 +3956,31 @@ msgstr "oui"
 msgid "« Back"
 msgstr "« Retour"
 
+#~ msgid "Action"
+#~ msgstr "Action"
+
+#~ msgid "Buttons"
+#~ msgstr "Boutons"
+
+#~ msgid "Handler"
+#~ msgstr "Gestionnaire"
+
+#~ msgid "Maximum hold time"
+#~ msgstr "Temps de maintien maximum"
+
+#~ msgid "Minimum hold time"
+#~ msgstr "Temps de maintien mimimum"
+
+#~ msgid "Path to executable which handles the button event"
+#~ msgstr "Chemin du programme exécutable gérant les évènements liés au bouton"
+
+#~ msgid "Specifies the button state to handle"
+#~ msgstr "Indique l'état du bouton à gérer"
+
+#~ msgid "This page allows the configuration of custom button actions"
+#~ msgstr ""
+#~ "Cette page permet la configuration d'actions spécifiques des boutons"
+
 #~ msgid "Leasetime"
 #~ msgstr "Durée du bail"
 
index 2997941..75f6cec 100644 (file)
@@ -213,9 +213,6 @@ msgstr "מרכז גישות"
 msgid "Access Point"
 msgstr "נקודת גישה"
 
-msgid "Action"
-msgstr "פעולה"
-
 msgid "Actions"
 msgstr "פעולות"
 
@@ -293,6 +290,9 @@ msgstr ""
 msgid "Allow all except listed"
 msgstr "אפשר הכל חוץ מהרשומים"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "אפשר רשומים בלבד"
 
@@ -565,9 +565,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr "כפתורים"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -598,7 +595,7 @@ msgstr "ערוץ"
 msgid "Check"
 msgstr "לבדוק"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -1227,6 +1224,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr ""
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr ""
 
@@ -1310,9 +1310,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr ""
-
 msgid "Hang Up"
 msgstr ""
 
@@ -1887,9 +1884,6 @@ msgstr ""
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr ""
 
-msgid "Maximum hold time"
-msgstr ""
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1907,10 +1901,10 @@ msgstr ""
 msgid "Memory usage (%)"
 msgstr ""
 
-msgid "Metric"
+msgid "Mesh Id"
 msgstr ""
 
-msgid "Minimum hold time"
+msgid "Metric"
 msgstr ""
 
 msgid "Mirror monitor port"
@@ -2349,9 +2343,6 @@ msgstr ""
 msgid "Path to Private Key"
 msgstr "נתיב למפתח הפרטי"
 
-msgid "Path to executable which handles the button event"
-msgstr ""
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2915,9 +2906,6 @@ msgstr "מקור"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr ""
-
 msgid "Specifies the directory the device is attached to"
 msgstr ""
 
@@ -3264,9 +3252,6 @@ msgid ""
 "their status."
 msgstr "רשימה זו מציגה סקירה של תהליכי המערכת הרצים כרגע ואת מצבם."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr "דף זה מאפשר להגדיר פעולות מיוחדות עבור הלחצנים."
-
 msgid "This page gives an overview over currently active network connections."
 msgstr "דף זה מציג סקירה של חיבורי הרשת הפעילים כרגע."
 
@@ -3786,6 +3771,15 @@ msgstr "כן"
 msgid "« Back"
 msgstr "<< אחורה"
 
+#~ msgid "Action"
+#~ msgstr "פעולה"
+
+#~ msgid "Buttons"
+#~ msgstr "כפתורים"
+
+#~ msgid "This page allows the configuration of custom button actions"
+#~ msgstr "דף זה מאפשר להגדיר פעולות מיוחדות עבור הלחצנים."
+
 #~ msgid "AR Support"
 #~ msgstr "תמיכת AR"
 
index 00b4d77..3d62580 100644 (file)
@@ -218,9 +218,6 @@ msgstr "Elérési központ"
 msgid "Access Point"
 msgstr "Hozzáférési pont"
 
-msgid "Action"
-msgstr "Művelet"
-
 msgid "Actions"
 msgstr "Műveletek"
 
@@ -296,6 +293,9 @@ msgstr ""
 msgid "Allow all except listed"
 msgstr "Összes engedélyezése a felsoroltakon kívül"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Csak a felsoroltak engedélyezése"
 
@@ -569,9 +569,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr "Gombok"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -603,7 +600,7 @@ msgstr "Csatorna"
 msgid "Check"
 msgstr "Ellenőrzés"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -1263,6 +1260,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr "Broadcast forgalom továbbítás"
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr "Továbbítás módja"
 
@@ -1346,9 +1346,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr "Kezelő"
-
 msgid "Hang Up"
 msgstr "Befejezés"
 
@@ -1954,9 +1951,6 @@ msgstr "EDNS.0 UDP csomagok maximális mérete"
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr "Maximális várakozási idő a modem kész állapotára (másodpercben)"
 
-msgid "Maximum hold time"
-msgstr "Maximális tartási idő"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1974,12 +1968,12 @@ msgstr "Memória"
 msgid "Memory usage (%)"
 msgstr "Memória használat (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Metrika"
 
-msgid "Minimum hold time"
-msgstr "Minimális tartási idő"
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2425,9 +2419,6 @@ msgstr "Kliens tanúsítvány elérési útja"
 msgid "Path to Private Key"
 msgstr "A privát kulcs elérési útja"
 
-msgid "Path to executable which handles the button event"
-msgstr "A gomb eseményeit kezelő végrehajtható állomány elérési útja"
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -3011,9 +3002,6 @@ msgstr "Forrás"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr "Meghatározza a gomb kezelendő állapotát"
-
 msgid "Specifies the directory the device is attached to"
 msgstr "Megadja az eszköz csatlakozási könyvtárát."
 
@@ -3419,9 +3407,6 @@ msgstr ""
 "Ez a lista a rendszerben jelenleg futó folyamatokról és azok állapotáról ad "
 "áttekintést."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr "Ez a lap a gombok egyedi működésének beállítását teszi lehetővé"
-
 msgid "This page gives an overview over currently active network connections."
 msgstr ""
 "Ez a lap a rendszerben jelenleg aktív hálózati kapcsolatokról ad áttekintést."
@@ -3960,6 +3945,30 @@ msgstr "igen"
 msgid "« Back"
 msgstr "« Vissza"
 
+#~ msgid "Action"
+#~ msgstr "Művelet"
+
+#~ msgid "Buttons"
+#~ msgstr "Gombok"
+
+#~ msgid "Handler"
+#~ msgstr "Kezelő"
+
+#~ msgid "Maximum hold time"
+#~ msgstr "Maximális tartási idő"
+
+#~ msgid "Minimum hold time"
+#~ msgstr "Minimális tartási idő"
+
+#~ msgid "Path to executable which handles the button event"
+#~ msgstr "A gomb eseményeit kezelő végrehajtható állomány elérési útja"
+
+#~ msgid "Specifies the button state to handle"
+#~ msgstr "Meghatározza a gomb kezelendő állapotát"
+
+#~ msgid "This page allows the configuration of custom button actions"
+#~ msgstr "Ez a lap a gombok egyedi működésének beállítását teszi lehetővé"
+
 #~ msgid "Leasetime"
 #~ msgstr "Bérlet időtartama"
 
index b90ca79..0edcfeb 100644 (file)
@@ -225,9 +225,6 @@ msgstr "Accesso Concentratore"
 msgid "Access Point"
 msgstr "Punto di Accesso"
 
-msgid "Action"
-msgstr "Azione"
-
 msgid "Actions"
 msgstr "Azioni"
 
@@ -306,6 +303,9 @@ msgstr ""
 msgid "Allow all except listed"
 msgstr "Consenti tutti tranne quelli nell'elenco"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Consenti solo quelli nell'elenco"
 
@@ -577,9 +577,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr "Pulsanti"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -610,7 +607,7 @@ msgstr "Canale"
 msgid "Check"
 msgstr "Verifica"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr "Controlla i filesystem prima di montare"
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -1265,6 +1262,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr "Inoltra il traffico broadcast"
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr "Modalità di Inoltro"
 
@@ -1350,9 +1350,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr "Gestore"
-
 msgid "Hang Up"
 msgstr "Hangup"
 
@@ -1954,9 +1951,6 @@ msgstr ""
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr ""
 
-msgid "Maximum hold time"
-msgstr "Tempo massimo di attesa"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1974,12 +1968,12 @@ msgstr "Memoria"
 msgid "Memory usage (%)"
 msgstr "Uso Memoria (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Metrica"
 
-msgid "Minimum hold time"
-msgstr "Velocità minima"
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2425,9 +2419,6 @@ msgstr ""
 msgid "Path to Private Key"
 msgstr "Percorso alla chiave privata"
 
-msgid "Path to executable which handles the button event"
-msgstr ""
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2996,9 +2987,6 @@ msgstr "Origine"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr "Specifica lo stato del pulsante da gestire"
-
 msgid "Specifies the directory the device is attached to"
 msgstr "Specifica la cartella a cui è collegato il dispositivo in"
 
@@ -3377,9 +3365,6 @@ msgstr ""
 "Questa lista da un riassunto dei processi correntemente attivi e del loro "
 "stato."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr ""
-
 msgid "This page gives an overview over currently active network connections."
 msgstr "Questa pagina ti da una riassunto delle connessioni al momento attive."
 
@@ -3922,6 +3907,24 @@ msgstr "Sì"
 msgid "« Back"
 msgstr "« Indietro"
 
+#~ msgid "Action"
+#~ msgstr "Azione"
+
+#~ msgid "Buttons"
+#~ msgstr "Pulsanti"
+
+#~ msgid "Handler"
+#~ msgstr "Gestore"
+
+#~ msgid "Maximum hold time"
+#~ msgstr "Tempo massimo di attesa"
+
+#~ msgid "Minimum hold time"
+#~ msgstr "Velocità minima"
+
+#~ msgid "Specifies the button state to handle"
+#~ msgstr "Specifica lo stato del pulsante da gestire"
+
 #~ msgid "Leasetime"
 #~ msgstr "Tempo di contratto"
 
index 1d321f9..e32848d 100644 (file)
@@ -220,9 +220,6 @@ msgstr "Access Concentrator"
 msgid "Access Point"
 msgstr "アクセスポイント"
 
-msgid "Action"
-msgstr "動作"
-
 msgid "Actions"
 msgstr "動作"
 
@@ -296,6 +293,9 @@ msgstr "<abbr title=\"Secure Shell\">SSH</abbr> パスワード認証を許可
 msgid "Allow all except listed"
 msgstr "リスト内の端末からのアクセスを禁止"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "リスト内の端末からのアクセスを許可"
 
@@ -570,9 +570,6 @@ msgstr ""
 "ビルド / ディストリビューション固有のフィード定義です。このファイルは"
 "sysupgradeの際に引き継がれません。"
 
-msgid "Buttons"
-msgstr "ボタン"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr "CA証明書(空白の場合、初回の接続後に保存されます。)"
 
@@ -603,7 +600,7 @@ msgstr "チャネル"
 msgid "Check"
 msgstr "チェック"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr "マウント前にファイルシステムをチェックする"
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -1268,6 +1265,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr "ブロードキャスト トラフィックを転送する"
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr "転送モード"
 
@@ -1353,9 +1353,6 @@ msgstr "HE.net ユーザー名"
 msgid "HT mode (802.11n)"
 msgstr "HT モード (802.11n)"
 
-msgid "Handler"
-msgstr "ハンドラ"
-
 msgid "Hang Up"
 msgstr "再起動"
 
@@ -1951,9 +1948,6 @@ msgstr "EDNS.0 UDP パケットサイズの許可される最大数"
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr "モデムが準備完了状態になるまでの最大待ち時間"
 
-msgid "Maximum hold time"
-msgstr "最大保持時間"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1973,12 +1967,12 @@ msgstr "メモリー"
 msgid "Memory usage (%)"
 msgstr "メモリ使用率 (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "メトリック"
 
-msgid "Minimum hold time"
-msgstr "最短保持時間"
-
 msgid "Mirror monitor port"
 msgstr "ミラー監視ポート"
 
@@ -2429,9 +2423,6 @@ msgstr "クライアント証明書のパス"
 msgid "Path to Private Key"
 msgstr "秘密鍵のパス"
 
-msgid "Path to executable which handles the button event"
-msgstr "ボタンイベントをハンドルする実行ファイルのパス"
-
 msgid "Path to inner CA-Certificate"
 msgstr "CA 証明書のパス"
 
@@ -3016,9 +3007,6 @@ msgstr "送信元"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr ""
-
 msgid "Specifies the directory the device is attached to"
 msgstr "デバイスが接続するディレクトリを設定します"
 
@@ -3413,9 +3401,6 @@ msgstr ""
 "このリストは現在システムで動作しているプロセスとそのステータスを表示していま"
 "す。"
 
-msgid "This page allows the configuration of custom button actions"
-msgstr "このページでは、ボタンの動作を変更することができます。"
-
 msgid "This page gives an overview over currently active network connections."
 msgstr "このページでは、現在アクティブなネットワーク接続を表示します。"
 
@@ -3955,3 +3940,24 @@ msgstr "はい"
 
 msgid "« Back"
 msgstr "« 戻る"
+
+#~ msgid "Action"
+#~ msgstr "動作"
+
+#~ msgid "Buttons"
+#~ msgstr "ボタン"
+
+#~ msgid "Handler"
+#~ msgstr "ハンドラ"
+
+#~ msgid "Maximum hold time"
+#~ msgstr "最大保持時間"
+
+#~ msgid "Minimum hold time"
+#~ msgstr "最短保持時間"
+
+#~ msgid "Path to executable which handles the button event"
+#~ msgstr "ボタンイベントをハンドルする実行ファイルのパス"
+
+#~ msgid "This page allows the configuration of custom button actions"
+#~ msgstr "このページでは、ボタンの動作を変更することができます。"
index cde3c04..80722fb 100644 (file)
@@ -213,9 +213,6 @@ msgstr ""
 msgid "Access Point"
 msgstr ""
 
-msgid "Action"
-msgstr ""
-
 msgid "Actions"
 msgstr "관리 도구"
 
@@ -289,6 +286,9 @@ msgstr "<abbr title=\"Secure Shell\">SSH</abbr> 암호 인증을 허용합니다
 msgid "Allow all except listed"
 msgstr ""
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr ""
 
@@ -559,9 +559,6 @@ msgstr ""
 "Build/distribution 지정 feed 목록입니다.  이 파일의 내용은 sysupgrade 시 초기"
 "화됩니다."
 
-msgid "Buttons"
-msgstr ""
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -592,7 +589,7 @@ msgstr ""
 msgid "Check"
 msgstr ""
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -1240,6 +1237,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr ""
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr ""
 
@@ -1323,9 +1323,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr ""
-
 msgid "Hang Up"
 msgstr ""
 
@@ -1905,9 +1902,6 @@ msgstr "허용된 최대 EDNS.0 UDP 패킷 크기"
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr ""
 
-msgid "Maximum hold time"
-msgstr ""
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1925,10 +1919,10 @@ msgstr "메모리"
 msgid "Memory usage (%)"
 msgstr "메모리 사용량 (%)"
 
-msgid "Metric"
+msgid "Mesh Id"
 msgstr ""
 
-msgid "Minimum hold time"
+msgid "Metric"
 msgstr ""
 
 msgid "Mirror monitor port"
@@ -2375,9 +2369,6 @@ msgstr ""
 msgid "Path to Private Key"
 msgstr ""
 
-msgid "Path to executable which handles the button event"
-msgstr ""
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2941,9 +2932,6 @@ msgstr ""
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr ""
-
 msgid "Specifies the directory the device is attached to"
 msgstr ""
 
@@ -3307,9 +3295,6 @@ msgid ""
 msgstr ""
 "이 목록은 현재 실행중인 시스템 프로세스와 해당 상태에 대한 개요를 보여줍니다."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr ""
-
 msgid "This page gives an overview over currently active network connections."
 msgstr "이 페이지는 현재 active 상태인 네트워크 연결을 보여줍니다."
 
index 74d3e19..d61ed2d 100644 (file)
@@ -210,9 +210,6 @@ msgstr ""
 msgid "Access Point"
 msgstr "Pusat akses"
 
-msgid "Action"
-msgstr "Aksi"
-
 msgid "Actions"
 msgstr "Aksi"
 
@@ -284,6 +281,9 @@ msgstr "Membenarkan pengesahan kata laluan SSH"
 msgid "Allow all except listed"
 msgstr "Izinkan semua kecualian yang disenaraikan"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Izinkan senarai saja"
 
@@ -549,9 +549,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr "Butang"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -582,7 +579,7 @@ msgstr "Saluran"
 msgid "Check"
 msgstr ""
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -1212,6 +1209,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr ""
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr ""
 
@@ -1295,9 +1295,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr "Kawalan"
-
 msgid "Hang Up"
 msgstr "Menutup"
 
@@ -1883,10 +1880,6 @@ msgstr ""
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr ""
 
-#, fuzzy
-msgid "Maximum hold time"
-msgstr "Memegang masa maksimum"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1904,13 +1897,12 @@ msgstr "Memori"
 msgid "Memory usage (%)"
 msgstr "Penggunaan Memori (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Metrik"
 
-#, fuzzy
-msgid "Minimum hold time"
-msgstr "Memegang masa minimum"
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2354,9 +2346,6 @@ msgstr ""
 msgid "Path to Private Key"
 msgstr "Path ke Kunci Swasta"
 
-msgid "Path to executable which handles the button event"
-msgstr "Path ke eksekusi yang mengendalikan acara butang"
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2917,10 +2906,6 @@ msgstr "Sumber"
 msgid "Source routing"
 msgstr ""
 
-#, fuzzy
-msgid "Specifies the button state to handle"
-msgstr "Menentukan state butang untuk melaku"
-
 msgid "Specifies the directory the device is attached to"
 msgstr ""
 
@@ -3281,9 +3266,6 @@ msgstr ""
 "Senarai ini memberikan gambaran lebih pada proses sistem yang sedang "
 "berjalan dan statusnya."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr "Laman ini membolehkan konfigurasi butang tindakan peribadi"
-
 msgid "This page gives an overview over currently active network connections."
 msgstr ""
 "Laman ini memberikan gambaran lebih dari saat ini sambungan rangkaian yang "
@@ -3806,6 +3788,33 @@ msgstr ""
 msgid "« Back"
 msgstr "« Kembali"
 
+#~ msgid "Action"
+#~ msgstr "Aksi"
+
+#~ msgid "Buttons"
+#~ msgstr "Butang"
+
+#~ msgid "Handler"
+#~ msgstr "Kawalan"
+
+#, fuzzy
+#~ msgid "Maximum hold time"
+#~ msgstr "Memegang masa maksimum"
+
+#, fuzzy
+#~ msgid "Minimum hold time"
+#~ msgstr "Memegang masa minimum"
+
+#~ msgid "Path to executable which handles the button event"
+#~ msgstr "Path ke eksekusi yang mengendalikan acara butang"
+
+#, fuzzy
+#~ msgid "Specifies the button state to handle"
+#~ msgstr "Menentukan state butang untuk melaku"
+
+#~ msgid "This page allows the configuration of custom button actions"
+#~ msgstr "Laman ini membolehkan konfigurasi butang tindakan peribadi"
+
 #~ msgid "Leasetime"
 #~ msgstr "Masa penyewaan"
 
index f1bfec4..3f35647 100644 (file)
@@ -219,9 +219,6 @@ msgstr "Tilgangskonsentrator"
 msgid "Access Point"
 msgstr "Aksesspunkt"
 
-msgid "Action"
-msgstr "Handling"
-
 msgid "Actions"
 msgstr "Handlinger"
 
@@ -293,6 +290,9 @@ msgstr "Tillat <abbr title=\"Secure Shell\">SSH</abbr> passord godkjenning"
 msgid "Allow all except listed"
 msgstr "Tillat alle unntatt oppførte"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Tillat kun oppførte"
 
@@ -561,9 +561,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr "Knapper"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -594,7 +591,7 @@ msgstr "Kanal"
 msgid "Check"
 msgstr "Kontroller"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -1249,6 +1246,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr "Videresend kringkastingstrafikk"
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr "Videresending modus"
 
@@ -1332,9 +1332,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr "Behandler"
-
 msgid "Hang Up"
 msgstr "Slå av"
 
@@ -1928,9 +1925,6 @@ msgstr "Maksimal tillatt størrelse på EDNS.0 UDP-pakker"
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr "Maksimalt antall sekunder å vente på at modemet skal bli klart"
 
-msgid "Maximum hold time"
-msgstr "Maksimal holde tid"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1948,12 +1942,12 @@ msgstr "Minne"
 msgid "Memory usage (%)"
 msgstr "Minne forbruk (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Metrisk"
 
-msgid "Minimum hold time"
-msgstr "Minimum holde tid"
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2400,9 +2394,6 @@ msgstr "Sti til klient-sertifikat"
 msgid "Path to Private Key"
 msgstr "Sti til privatnøkkel"
 
-msgid "Path to executable which handles the button event"
-msgstr "Sti til program som håndterer handling ved bruk av knapp"
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2984,9 +2975,6 @@ msgstr "Kilde"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr "Spesifiserer knappens handlemønster"
-
 msgid "Specifies the directory the device is attached to"
 msgstr "Hvor lagrings enheten blir tilsluttet filsystemet (f.eks. /mnt/sda1)"
 
@@ -3384,10 +3372,6 @@ msgid ""
 "their status."
 msgstr "Denne listen gir en oversikt over kjørende prosesser og deres status."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr ""
-"Denne siden gir mulighet for å definerte egne knappers handlingsmønster"
-
 msgid "This page gives an overview over currently active network connections."
 msgstr ""
 "Denne siden gir en oversikt over gjeldende aktive nettverkstilkoblinger."
@@ -3926,6 +3910,31 @@ msgstr "ja"
 msgid "« Back"
 msgstr "« Tilbake"
 
+#~ msgid "Action"
+#~ msgstr "Handling"
+
+#~ msgid "Buttons"
+#~ msgstr "Knapper"
+
+#~ msgid "Handler"
+#~ msgstr "Behandler"
+
+#~ msgid "Maximum hold time"
+#~ msgstr "Maksimal holde tid"
+
+#~ msgid "Minimum hold time"
+#~ msgstr "Minimum holde tid"
+
+#~ msgid "Path to executable which handles the button event"
+#~ msgstr "Sti til program som håndterer handling ved bruk av knapp"
+
+#~ msgid "Specifies the button state to handle"
+#~ msgstr "Spesifiserer knappens handlemønster"
+
+#~ msgid "This page allows the configuration of custom button actions"
+#~ msgstr ""
+#~ "Denne siden gir mulighet for å definerte egne knappers handlingsmønster"
+
 #~ msgid "Leasetime"
 #~ msgstr "<abbr title=\"Leasetime\">Leietid</abbr>"
 
index 22902c4..7d8e4b8 100644 (file)
@@ -224,9 +224,6 @@ msgstr "Koncentrator dostępowy ATM"
 msgid "Access Point"
 msgstr "Punkt dostępowy"
 
-msgid "Action"
-msgstr "Akcja"
-
 msgid "Actions"
 msgstr "Akcje"
 
@@ -303,6 +300,9 @@ msgstr "Pozwól na logowanie <abbr title=\"Secure Shell\">SSH</abbr>"
 msgid "Allow all except listed"
 msgstr "Pozwól wszystkim oprócz wymienionych"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Pozwól tylko wymienionym"
 
@@ -578,9 +578,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr "Przyciski"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -611,7 +608,7 @@ msgstr "Kanał"
 msgid "Check"
 msgstr "Sprawdź"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -1280,6 +1277,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr "Przekazuj broadcast`y"
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr "Tryb przekazywania"
 
@@ -1365,9 +1365,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr "Uchwyt"
-
 msgid "Hang Up"
 msgstr "Rozłącz"
 
@@ -1973,9 +1970,6 @@ msgstr "Maksymalny dozwolony rozmiar pakietu EDNS.0 UDP"
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr "Maksymalny czas podany w sekundach do pełnej gotowości modemu"
 
-msgid "Maximum hold time"
-msgstr "Maksymalny czas podtrzymania"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1993,12 +1987,12 @@ msgstr "Pamięć"
 msgid "Memory usage (%)"
 msgstr "Użycie pamięci (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Metryka"
 
-msgid "Minimum hold time"
-msgstr "Minimalny czas podtrzymania"
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2444,11 +2438,6 @@ msgstr "Ścieżka do certyfikatu Klienta"
 msgid "Path to Private Key"
 msgstr "Ścieżka do Klucza Prywatnego"
 
-msgid "Path to executable which handles the button event"
-msgstr ""
-"Ścieżka do pliku wykonywalnego, który obsługuje zdarzenie dla danego "
-"przycisku"
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -3034,9 +3023,6 @@ msgstr "Źródło"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr "Określa zachowanie w zależności od stanu przycisku"
-
 msgid "Specifies the directory the device is attached to"
 msgstr "Podaje katalog do którego jest podłączone urządzenie"
 
@@ -3447,10 +3433,6 @@ msgstr ""
 "Poniższa lista przedstawia aktualnie uruchomione procesy systemowe i ich "
 "status."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr ""
-"Poniższa strona umożliwia konfigurację działania niestandardowych przycisków"
-
 msgid "This page gives an overview over currently active network connections."
 msgstr "Poniższa strona przedstawia aktualnie aktywne połączenia sieciowe."
 
@@ -3991,6 +3973,34 @@ msgstr "tak"
 msgid "« Back"
 msgstr "« Wróć"
 
+#~ msgid "Action"
+#~ msgstr "Akcja"
+
+#~ msgid "Buttons"
+#~ msgstr "Przyciski"
+
+#~ msgid "Handler"
+#~ msgstr "Uchwyt"
+
+#~ msgid "Maximum hold time"
+#~ msgstr "Maksymalny czas podtrzymania"
+
+#~ msgid "Minimum hold time"
+#~ msgstr "Minimalny czas podtrzymania"
+
+#~ msgid "Path to executable which handles the button event"
+#~ msgstr ""
+#~ "Ścieżka do pliku wykonywalnego, który obsługuje zdarzenie dla danego "
+#~ "przycisku"
+
+#~ msgid "Specifies the button state to handle"
+#~ msgstr "Określa zachowanie w zależności od stanu przycisku"
+
+#~ msgid "This page allows the configuration of custom button actions"
+#~ msgstr ""
+#~ "Poniższa strona umożliwia konfigurację działania niestandardowych "
+#~ "przycisków"
+
 #~ msgid "Leasetime"
 #~ msgstr "Czas dzierżawy"
 
index eef8eba..9ac3c61 100644 (file)
@@ -241,9 +241,6 @@ msgstr "Concentrador de Acesso"
 msgid "Access Point"
 msgstr "Ponto de Acceso (AP)"
 
-msgid "Action"
-msgstr "Ação"
-
 msgid "Actions"
 msgstr "Ações"
 
@@ -322,6 +319,9 @@ msgstr ""
 msgid "Allow all except listed"
 msgstr "Permitir todos, exceto os listados"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Permitir somente os listados"
 
@@ -609,9 +609,6 @@ msgstr ""
 "Fonte de pacotes específico da compilação/distribuição. Esta NÃO será "
 "preservada em qualquer atualização do sistema."
 
-msgid "Buttons"
-msgstr "Botões"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 "Certificado da CA; se em branco, será salvo depois da primeira conexão."
@@ -643,7 +640,7 @@ msgstr "Canal"
 msgid "Check"
 msgstr "Verificar"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 "Execute a verificação do sistema de arquivos antes da montagem do dispositivo"
 
@@ -1318,6 +1315,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr "Encaminhar tráfego broadcast"
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr "Modo de encaminhamento"
 
@@ -1405,10 +1405,6 @@ msgstr ""
 "Modo <abbr title=\"High Throughput/Alta Taxa de Transferência\">HT</abbr>  "
 "(802.11n)"
 
-# Não sei que contexto isto está sendo usado
-msgid "Handler"
-msgstr "Responsável"
-
 msgid "Hang Up"
 msgstr "Suspender"
 
@@ -2051,10 +2047,6 @@ msgstr "Tamanho máximo permitido dos pacotes UDP EDNS.0"
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr "Tempo máximo, em segundos, para esperar que o modem fique pronto"
 
-# Desconheço o uso
-msgid "Maximum hold time"
-msgstr "Tempo máximo de espera"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -2074,12 +2066,12 @@ msgstr "Memória"
 msgid "Memory usage (%)"
 msgstr "Uso da memória (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Métrica"
 
-msgid "Minimum hold time"
-msgstr "Tempo mínimo de espera"
-
 msgid "Mirror monitor port"
 msgstr "Porta de monitoramento do espelho"
 
@@ -2540,9 +2532,6 @@ msgstr "Caminho para o Certificado do Cliente"
 msgid "Path to Private Key"
 msgstr "Caminho para a Chave Privada"
 
-msgid "Path to executable which handles the button event"
-msgstr "Caminho para o executável que trata o evento do botão"
-
 msgid "Path to inner CA-Certificate"
 msgstr "Caminho para os certificados CA interno"
 
@@ -3140,9 +3129,6 @@ msgstr "Origem"
 msgid "Source routing"
 msgstr "Roteamento pela origem"
 
-msgid "Specifies the button state to handle"
-msgstr "Especifica o estado do botão para ser tratado"
-
 msgid "Specifies the directory the device is attached to"
 msgstr "Especifica o diretório que o dispositivo está conectado"
 
@@ -3566,10 +3552,6 @@ msgid ""
 msgstr ""
 "Esta lista fornece uma visão geral sobre os processos em execução no sistema."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr ""
-"Esta página permite a configuração de ações personalizadas para os botões"
-
 msgid "This page gives an overview over currently active network connections."
 msgstr "Esta página fornece informações sobre as conexões de rede ativas."
 
@@ -4122,6 +4104,33 @@ msgstr "sim"
 msgid "« Back"
 msgstr "« Voltar"
 
+#~ msgid "Action"
+#~ msgstr "Ação"
+
+#~ msgid "Buttons"
+#~ msgstr "Botões"
+
+# Não sei que contexto isto está sendo usado
+#~ msgid "Handler"
+#~ msgstr "Responsável"
+
+# Desconheço o uso
+#~ msgid "Maximum hold time"
+#~ msgstr "Tempo máximo de espera"
+
+#~ msgid "Minimum hold time"
+#~ msgstr "Tempo mínimo de espera"
+
+#~ msgid "Path to executable which handles the button event"
+#~ msgstr "Caminho para o executável que trata o evento do botão"
+
+#~ msgid "Specifies the button state to handle"
+#~ msgstr "Especifica o estado do botão para ser tratado"
+
+#~ msgid "This page allows the configuration of custom button actions"
+#~ msgstr ""
+#~ "Esta página permite a configuração de ações personalizadas para os botões"
+
 #~ msgid "Leasetime"
 #~ msgstr "Tempo de atribuição do DHCP"
 
index aadcccc..ba991ed 100644 (file)
@@ -225,9 +225,6 @@ msgstr "Concentrador de Acesso"
 msgid "Access Point"
 msgstr "Access Point (AP)"
 
-msgid "Action"
-msgstr "Acção"
-
 msgid "Actions"
 msgstr "Acções"
 
@@ -304,6 +301,9 @@ msgstr ""
 msgid "Allow all except listed"
 msgstr "Permitir todos, excepto os listados"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Permitir somente os listados"
 
@@ -574,9 +574,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr "Botões"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -607,7 +604,7 @@ msgstr "Canal"
 msgid "Check"
 msgstr "Verificar"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -1266,6 +1263,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr "Encaminhar trafego de broadcast"
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr "Modo de encaminhamento"
 
@@ -1350,9 +1350,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr "Handler"
-
 msgid "Hang Up"
 msgstr "Suspender"
 
@@ -1952,9 +1949,6 @@ msgstr ""
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr "Número máximo de segundos a esperar pelo modem para ficar pronto"
 
-msgid "Maximum hold time"
-msgstr "Tempo máximo de espera"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1972,12 +1966,12 @@ msgstr "Memória"
 msgid "Memory usage (%)"
 msgstr "Uso de memória (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Métrica"
 
-msgid "Minimum hold time"
-msgstr "Tempo de retenção mínimo"
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2422,9 +2416,6 @@ msgstr "Caminho para o Certificado de Cliente"
 msgid "Path to Private Key"
 msgstr "Caminho da Chave Privada"
 
-msgid "Path to executable which handles the button event"
-msgstr "Caminho do executável que lida com o botão de eventos"
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2999,9 +2990,6 @@ msgstr "Origem"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr ""
-
 msgid "Specifies the directory the device is attached to"
 msgstr ""
 
@@ -3386,10 +3374,6 @@ msgid ""
 msgstr ""
 "Esta lista fornece uma visão geral sobre os processos em execução no sistema."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr ""
-"Esta página permite a configuração de botões para acções personalizadas."
-
 msgid "This page gives an overview over currently active network connections."
 msgstr "Esta página fornece informações sobre as ligações de rede ativas."
 
@@ -3922,6 +3906,28 @@ msgstr "sim"
 msgid "« Back"
 msgstr "« Voltar"
 
+#~ msgid "Action"
+#~ msgstr "Acção"
+
+#~ msgid "Buttons"
+#~ msgstr "Botões"
+
+#~ msgid "Handler"
+#~ msgstr "Handler"
+
+#~ msgid "Maximum hold time"
+#~ msgstr "Tempo máximo de espera"
+
+#~ msgid "Minimum hold time"
+#~ msgstr "Tempo de retenção mínimo"
+
+#~ msgid "Path to executable which handles the button event"
+#~ msgstr "Caminho do executável que lida com o botão de eventos"
+
+#~ msgid "This page allows the configuration of custom button actions"
+#~ msgstr ""
+#~ "Esta página permite a configuração de botões para acções personalizadas."
+
 #~ msgid "Leasetime"
 #~ msgstr "Tempo de concessão"
 
index 029b395..3d01439 100644 (file)
@@ -216,9 +216,6 @@ msgstr "Concentrator de Access "
 msgid "Access Point"
 msgstr "Punct de Acces"
 
-msgid "Action"
-msgstr "Actiune"
-
 msgid "Actions"
 msgstr "Actiune"
 
@@ -291,6 +288,9 @@ msgstr ""
 msgid "Allow all except listed"
 msgstr "Permite toate cu exceptia celor listate"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Permite doar cele listate"
 
@@ -557,9 +557,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr "Butoane"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -590,7 +587,7 @@ msgstr "Canal"
 msgid "Check"
 msgstr "Verificare"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -1219,6 +1216,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr ""
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr ""
 
@@ -1302,9 +1302,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr ""
-
 msgid "Hang Up"
 msgstr ""
 
@@ -1884,9 +1881,6 @@ msgstr ""
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr ""
 
-msgid "Maximum hold time"
-msgstr ""
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1904,12 +1898,12 @@ msgstr "Memorie"
 msgid "Memory usage (%)"
 msgstr "Utilizarea memoriei (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Metrica"
 
-msgid "Minimum hold time"
-msgstr ""
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2346,9 +2340,6 @@ msgstr ""
 msgid "Path to Private Key"
 msgstr "Calea catre cheia privata"
 
-msgid "Path to executable which handles the button event"
-msgstr "Calea catre executabilul care se ocupa de evenimentul butonului"
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2909,9 +2900,6 @@ msgstr "Sursa"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr ""
-
 msgid "Specifies the directory the device is attached to"
 msgstr ""
 
@@ -3256,9 +3244,6 @@ msgid ""
 "their status."
 msgstr ""
 
-msgid "This page allows the configuration of custom button actions"
-msgstr ""
-
 msgid "This page gives an overview over currently active network connections."
 msgstr ""
 
@@ -3779,6 +3764,15 @@ msgstr "da"
 msgid "« Back"
 msgstr "« Inapoi"
 
+#~ msgid "Action"
+#~ msgstr "Actiune"
+
+#~ msgid "Buttons"
+#~ msgstr "Butoane"
+
+#~ msgid "Path to executable which handles the button event"
+#~ msgstr "Calea catre executabilul care se ocupa de evenimentul butonului"
+
 #~ msgid "AR Support"
 #~ msgstr "Suport AR"
 
index 9a3cf43..a14df08 100644 (file)
@@ -1,25 +1,23 @@
 msgid ""
 msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
 "Project-Id-Version: LuCI: base\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-05-19 19:36+0200\n"
-"PO-Revision-Date: 2014-01-31 21:08+0200\n"
-"Last-Translator: Moon_dark <lenayxa@gmail.com>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"POT-Creation-Date: 2010-05-09 01:01+0300\n"
+"PO-Revision-Date: 2018-01-09 04: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 "%.1f dB"
-msgstr ""
+msgstr "%.1f dB"
 
 msgid "%s is untagged in multiple VLANs!"
-msgstr ""
+msgstr "%s is untagged in multiple VLANs!"
 
 msgid "(%d minute window, %d second interval)"
 msgstr "(%d минутное окно, %d секундный интервал)"
@@ -34,130 +32,129 @@ msgid "(no interfaces attached)"
 msgstr "(нет связанных интерфейсов)"
 
 msgid "-- Additional Field --"
-msgstr "-- Дополнительное поле --"
+msgstr "-- Дополнительно --"
 
 msgid "-- Please choose --"
-msgstr "-- Ð\9fожалÑ\83йÑ\81Ñ\82а, Ð²Ñ\8bбеÑ\80иÑ\82е --"
+msgstr "-- Ð¡Ð´ÐµÐ»Ð°Ð¹Ñ\82е Ð²Ñ\8bбоÑ\80 --"
 
 msgid "-- custom --"
 msgstr "-- пользовательский --"
 
 msgid "-- match by device --"
-msgstr ""
+msgstr "-- проверка по устройству --"
 
 msgid "-- match by label --"
-msgstr ""
+msgstr "-- проверка по метке --"
 
 msgid "-- match by uuid --"
-msgstr ""
+msgstr "-- проверка по uuid --"
 
 msgid "1 Minute Load:"
-msgstr "Загрузка за 1 минуту:"
+msgstr "Загрузка 1 минуту:"
 
 msgid "15 Minute Load:"
-msgstr "Загрузка за 15 минут:"
+msgstr "Загрузка 15 минут:"
 
 msgid "4-character hexadecimal ID"
-msgstr ""
+msgstr "4-х значное шестнадцатеричное ID"
 
 msgid "464XLAT (CLAT)"
-msgstr ""
+msgstr "464XLAT (CLAT)"
 
 msgid "5 Minute Load:"
-msgstr "Загрузка за 5 минут:"
+msgstr "Загрузка 5 минут:"
 
 msgid "6-octet identifier as a hex string - no colons"
-msgstr ""
+msgstr "6-октетный идентификатор в виде шестнадцатеричной строки-без двоеточий"
 
 msgid "802.11r Fast Transition"
-msgstr ""
+msgstr "802.11r Быстрый Роуминг"
 
 msgid "802.11w Association SA Query maximum timeout"
-msgstr ""
+msgstr "802.11w Association SA Query максимальный таймаут"
 
 msgid "802.11w Association SA Query retry timeout"
-msgstr ""
+msgstr "802.11w Association SA Query повтор таймаута"
 
 msgid "802.11w Management Frame Protection"
-msgstr ""
+msgstr "802.11w Management Frame Protection"
 
 msgid "802.11w maximum timeout"
-msgstr ""
+msgstr "802.11w максимальный таймаут"
 
 msgid "802.11w retry timeout"
-msgstr ""
+msgstr "802.11w повтор таймаута"
 
 msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
-msgstr "<abbr title=\"Ð\91азовÑ\8bй Ð¸Ð´ÐµÐ½Ñ\82иÑ\84икаÑ\82оÑ\80 Ð¾Ð±Ñ\81лÑ\83живаниÑ\8f\">BSSID</abbr>"
+msgstr "<abbr title=\"Ð\98денÑ\82иÑ\84икаÑ\82оÑ\80 Ð\9dабоÑ\80а Ð\91азовÑ\8bÑ\85 Ð¡ÐµÑ\80виÑ\81ов\">BSSID</abbr>"
 
 msgid "<abbr title=\"Domain Name System\">DNS</abbr> query port"
-msgstr "Порт запроса <abbr title=\"Система доменных имён\">DNS</abbr>"
+msgstr "<abbr title=\"Система доменных имён\">DNS</abbr> порт запроса"
 
 msgid "<abbr title=\"Domain Name System\">DNS</abbr> server port"
-msgstr "Порт <abbr title=\"Система доменных имён\">DNS</abbr>-сервера"
+msgstr "<abbr title=\"Система доменных имен\">DNS</abbr> порт сервера"
 
 msgid ""
 "<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the "
 "order of the resolvfile"
 msgstr ""
-"<abbr title=\"Система доменных имён\">DNS</abbr> серверы будут опрошены в "
-"порядке, определенном в resolvfile файле"
+"<abbr title=\"Система доменных имен\">DNS</abbr> серверы будут опрошены в "
+"порядке, определенном в resolvfile файле."
 
 msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 msgstr "<abbr title=\"Расширенный идентификатор обслуживания\">ESSID</abbr>"
 
 msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"
-msgstr "<abbr title=\"Ð\98нÑ\82еÑ\80неÑ\82 Ð¿Ñ\80оÑ\82окол Ð²ÐµÑ\80Ñ\81ии 4\">IPv4</abbr>-адрес"
+msgstr "<abbr title=\"Ð\98нÑ\82еÑ\80неÑ\82 Ð¿Ñ\80оÑ\82окол Ð²ÐµÑ\80Ñ\81ии 4\">IPv4</abbr>-Ð\90дрес"
 
 msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"
-msgstr "<abbr title=\"Ð\98нÑ\82еÑ\80неÑ\82 Ð¿Ñ\80оÑ\82окол Ð²ÐµÑ\80Ñ\81ии 4\">IPv4</abbr>-адÑ\80еÑ\81 Ñ\88лÑ\8eза"
+msgstr "<abbr title=\"Ð\98нÑ\82еÑ\80неÑ\82 Ð¿Ñ\80оÑ\82окол Ð²ÐµÑ\80Ñ\81ии 4\">IPv4</abbr>-ШлÑ\8eз"
 
 msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"
-msgstr "Маска сети <abbr title=\"Интернет протокол версии 4\">IPv4</abbr>"
+msgstr "<abbr title=\"Интернет протокол версии 4\">IPv4</abbr>-Маска сети"
 
 msgid ""
 "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network "
 "(CIDR)"
 msgstr ""
-"<abbr title=\"Ð\98нÑ\82еÑ\80неÑ\82 Ð¿Ñ\80оÑ\82окол Ð²ÐµÑ\80Ñ\81ии 6\">IPv6</abbr>-адÑ\80еÑ\81 Ð¸Ð»Ð¸ Ñ\81еть (CIDR)"
+"<abbr title=\"Ð\98нÑ\82еÑ\80неÑ\82 Ð¿Ñ\80оÑ\82окол Ð²ÐµÑ\80Ñ\81ии 6\">IPv6</abbr>-Ð\90дÑ\80еÑ\81 Ð¸Ð»Ð¸ Ð¡еть (CIDR)"
 
 msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
-msgstr "<abbr title=\"Ð\98нÑ\82еÑ\80неÑ\82 Ð¿Ñ\80оÑ\82окол Ð²ÐµÑ\80Ñ\81ии 6\">IPv6</abbr>-адÑ\80еÑ\81 Ñ\88лÑ\8eза"
+msgstr "<abbr title=\"Ð\98нÑ\82еÑ\80неÑ\82 Ð¿Ñ\80оÑ\82окол Ð²ÐµÑ\80Ñ\81ии 6\">IPv6</abbr>-ШлÑ\8eз"
 
 msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
-msgstr ""
+msgstr "<abbr title=\"Интернет протокол версии 6\">IPv6</abbr>-Суффикс (hex)"
 
 msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
-msgstr "Настройка <abbr title=\"Светодиод\">LED</abbr>"
+msgstr "<abbr title=\"Светодиод\">LED</abbr> Настройка"
 
 msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
-msgstr "Название <abbr title=\"Светодиод\">LED</abbr>"
+msgstr "<abbr title=\"Светодиод\">LED</abbr> Имя"
 
 msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
-msgstr "<abbr title=\"УпÑ\80авление Ð´Ð¾Ñ\81Ñ\82Ñ\83пом Ðº Ð½Ð¾Ñ\81иÑ\82елÑ\8e\">MAC</abbr>-адрес"
+msgstr "<abbr title=\"УпÑ\80авление Ð´Ð¾Ñ\81Ñ\82Ñ\83пом Ðº Ð½Ð¾Ñ\81иÑ\82елÑ\8e\">MAC</abbr>-Ð\90дрес"
 
 msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
-msgstr ""
+msgstr "<abbr title=\"Уникальный идентификатор DHCP\">DUID</abbr>"
 
 msgid ""
 "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
 "Protocol\">DHCP</abbr> leases"
 msgstr ""
 "<abbr title=\"максимальное\">Макс.</abbr> кол-во аренд <abbr title="
-"\"Ð\9fÑ\80оÑ\82окол Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ\87еÑ\81кой ÐºÐ¾Ð½Ñ\84игÑ\83Ñ\80аÑ\86ии Ñ\83зла\">DHCP</abbr>"
+"\"Ð\9fÑ\80оÑ\82окол Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ\87еÑ\81кой Ð½Ð°Ñ\81Ñ\82Ñ\80ойки Ñ\83зла\">DHCP</abbr> Ð°Ñ\80ендÑ\8b"
 
 msgid ""
 "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for "
 "Domain Name System\">EDNS0</abbr> packet size"
 msgstr ""
-"<abbr title=\"максимальный\">Макс.</abbr> размер пакета <abbr title="
-"\"Extension Mechanisms for Domain Name System\">EDNS0</abbr>"
+"<abbr title=\"максимальный\">Макс.</abbr><abbr title=\"Extension Mechanisms "
+"for Domain Name System\">EDNS0</abbr> размер пакета"
 
 msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
 msgstr ""
 "<abbr title=\"максимальное\">Макс.</abbr> кол-во одновременных запросов"
 
-# Парный шифр используется для одноадресной передачи, а групповой - для широковещательной и мультикаста
 msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 msgstr "<abbr title='Парный: %s / Групповой: %s'>%s - %s</abbr>"
 
@@ -165,21 +162,23 @@ msgid ""
 "<br/>Note: you need to manually restart the cron service if the crontab file "
 "was empty before editing."
 msgstr ""
+"Внимание: вы должны вручную перезапустить службу cron, если этот файл был "
+"пустым перед внесением ваших изменений."
 
 msgid "A43C + J43 + A43"
-msgstr ""
+msgstr "A43C + J43 + A43"
 
 msgid "A43C + J43 + A43 + V43"
-msgstr ""
+msgstr "A43C + J43 + A43 + V43"
 
 msgid "ADSL"
-msgstr ""
+msgstr "ADSL"
 
 msgid "AICCU (SIXXS)"
-msgstr ""
+msgstr "AICCU (SIXXS)"
 
 msgid "ANSI T1.413"
-msgstr ""
+msgstr "ANSI T1.413"
 
 msgid "APN"
 msgstr "APN"
@@ -188,34 +187,34 @@ msgid "ARP retry threshold"
 msgstr "Порог повтора ARP"
 
 msgid "ATM (Asynchronous Transfer Mode)"
-msgstr ""
+msgstr "ATM (Режим Асинхронной Передачи)"
 
 msgid "ATM Bridges"
-msgstr "Мосты ATM"
+msgstr "ATM Мосты"
 
 msgid "ATM Virtual Channel Identifier (VCI)"
-msgstr "Идентификатор виртуального канала ATM (VCI)"
+msgstr "ATM Идентификатор Виртуального Канала (VCI)"
 
 msgid "ATM Virtual Path Identifier (VPI)"
-msgstr "Идентификатор виртуального пути ATM (VPI)"
+msgstr "ATM Идентификатор Виртуального Пути(VPI)"
 
 msgid ""
 "ATM bridges expose encapsulated ethernet in AAL5 connections as virtual "
 "Linux network interfaces which can be used in conjunction with DHCP or PPP "
 "to dial into the provider network."
 msgstr ""
-"ATM-мосты выставляют инкапсулированный Ethernet в соединениях AAL5 в "
-"качестве виртуальных сетевых интерфейсов Linux, которые могут быть "
-"использованы в сочетании с DHCP или PPP для подключения к сети провайдера."
+"Мосты ATM предоставляют собой инкапсулированные ethernet соединения в AAL5, "
+"как виртуальные сетевые интерфейсы Linux, которые могут использоваться "
+"совместно с DHCP или PPP для набора номера в сети провайдера."
 
 msgid "ATM device number"
-msgstr "Номер устройства ATM"
+msgstr "ATM номер устройства"
 
 msgid "ATU-C System Vendor ID"
-msgstr ""
+msgstr "ATU-C System Vendor ID"
 
 msgid "AYIYA"
-msgstr ""
+msgstr "AYIYA"
 
 msgid "Access Concentrator"
 msgstr "Концентратор доступа"
@@ -223,9 +222,6 @@ msgstr "Концентратор доступа"
 msgid "Access Point"
 msgstr "Точка доступа"
 
-msgid "Action"
-msgstr "Действие"
-
 msgid "Actions"
 msgstr "Действия"
 
@@ -233,21 +229,19 @@ msgid "Activate this network"
 msgstr "Активировать эту сеть"
 
 msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
-msgstr ""
-"Активные маршруты <abbr title=\"Интернет протокол версии 4\">IPv4</abbr>"
+msgstr "Active <abbr title=\"Интернет протокол версии 4\">IPv4</abbr>-Маршруты"
 
 msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
-msgstr ""
-"Активные маршруты <abbr title=\"Интернет протокол версии 6\">IPv6</abbr>"
+msgstr "Active <abbr title=\"Интернет протокол версии 6\">IPv6</abbr>-Маршруты"
 
 msgid "Active Connections"
 msgstr "Активные соединения"
 
 msgid "Active DHCP Leases"
-msgstr "Активные аренды DHCP"
+msgstr "Активные DHCP аренды"
 
 msgid "Active DHCPv6 Leases"
-msgstr "Активные аренды DHCPv6"
+msgstr "Активные DHCPv6 аренды"
 
 msgid "Ad-Hoc"
 msgstr "Ad-Hoc"
@@ -256,52 +250,55 @@ msgid "Add"
 msgstr "Добавить"
 
 msgid "Add local domain suffix to names served from hosts files"
-msgstr ""
-"Добавить суффикс локального домена к именам, полученным из файлов hosts"
+msgstr "Добавить локальный суффикс домена для имен из hosts файлов"
 
 msgid "Add new interface..."
-msgstr "Добавить новый интерфейс..."
+msgstr "Добавить новый интерфейс"
 
 msgid "Additional Hosts files"
-msgstr "Дополнительные файлы hosts"
+msgstr "Дополнительные Hosts файлы"
 
 msgid "Additional servers file"
-msgstr ""
+msgstr "Дополнительные файлы серверов"
 
 msgid "Address"
 msgstr "Адрес"
 
 msgid "Address to access local relay bridge"
-msgstr "Ð\90дÑ\80еÑ\81 Ð´Ð»Ñ\8f Ð´Ð¾Ñ\81Ñ\82Ñ\83па Ðº Ð»Ð¾ÐºÐ°Ð»Ñ\8cномÑ\83 Ð¼Ð¾Ñ\81Ñ\82Ñ\83\80еÑ\82Ñ\80анÑ\81лÑ\8fÑ\82оÑ\80Ñ\83"
+msgstr "дрес для доступа к локальному мосту-ретранслятору"
 
 msgid "Administration"
 msgstr "Управление"
 
 msgid "Advanced Settings"
-msgstr "РаÑ\81Ñ\88иÑ\80енные настройки"
+msgstr "Ð\94ополниÑ\82елÑ\8cные настройки"
 
 msgid "Aggregate Transmit Power(ACTATP)"
-msgstr ""
+msgstr "Aggregate Transmit Power(ACTATP)"
 
 msgid "Alert"
-msgstr "ТÑ\80евожнаÑ\8f Ñ\81иÑ\82Ñ\83аÑ\86иÑ\8f"
+msgstr "ТÑ\80евога"
 
 msgid ""
 "Allocate IP addresses sequentially, starting from the lowest available "
 "address"
 msgstr ""
+"Выделять IP адреса последовательно, начинать с меньшего доступного адреса."
 
 msgid "Allocate IP sequentially"
-msgstr ""
+msgstr "IP последовательно"
 
 msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
 msgstr ""
-"Разрешить <abbr title=\"Secure Shell\">SSH</abbr>-аутентификацию с помощью "
-"пароля"
+"Разрешить <abbr title=\"Secure Shell\">SSH</abbr> аутентификацию с помощью "
+"пароля."
 
 msgid "Allow all except listed"
 msgstr "Разрешить все, кроме перечисленных"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Разрешить только перечисленные"
 
@@ -310,93 +307,99 @@ msgstr "Разрешить локальный хост"
 
 msgid "Allow remote hosts to connect to local SSH forwarded ports"
 msgstr ""
-"Разрешить удалённым хостам подключаться к локальным перенаправленным портам "
-"SSH"
+"Разрешить удаленным хостам подключаться к локальным перенаправленным портам "
+"SSH."
 
 msgid "Allow root logins with password"
-msgstr "Разрешить пользователю root вход с помощью пароля"
+msgstr "Разрешить пользователю root вход с помощью пароля."
 
 msgid "Allow the <em>root</em> user to login with password"
 msgstr ""
-"Разрешить пользователю <em>root</em> входить в систему с помощью пароля"
+"Разрешить пользователю <em>root</em> входить в систему с помощью пароля."
 
 msgid ""
 "Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
-msgstr "Разрешить ответы в диапазоне 127.0.0.0/8, например, для RBL-сервисов"
+msgstr ""
+"Разрешить исходные ответы в диапазоне 127.0.0.0/8, например, для RBL-"
+"сервисов."
 
 msgid "Allowed IPs"
-msgstr ""
+msgstr "Разрешенные IP адреса"
 
 msgid ""
 "Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison"
 "\">Tunneling Comparison</a> on SIXXS"
 msgstr ""
+"Также смотрите <a href=\"https://www.sixxs.net/faq/connectivity/?"
+"faq=comparison\">Tunneling Comparison</a> on SIXXS"
 
 msgid "Always announce default router"
-msgstr ""
+msgstr "Объявлять всегда, как дефолтный маршрутизатор"
 
 msgid "Annex"
-msgstr ""
+msgstr "Annex"
 
 msgid "Annex A + L + M (all)"
-msgstr ""
+msgstr "Annex A + L + M (all)"
 
 msgid "Annex A G.992.1"
-msgstr ""
+msgstr "Annex A G.992.1"
 
 msgid "Annex A G.992.2"
-msgstr ""
+msgstr "Annex A G.992.2"
 
 msgid "Annex A G.992.3"
-msgstr ""
+msgstr "Annex A G.992.3"
 
 msgid "Annex A G.992.5"
-msgstr ""
+msgstr "Annex A G.992.5"
 
 msgid "Annex B (all)"
-msgstr ""
+msgstr "Annex B (all)"
 
 msgid "Annex B G.992.1"
-msgstr ""
+msgstr "Annex B G.992.1"
 
 msgid "Annex B G.992.3"
-msgstr ""
+msgstr "Annex B G.992.3"
 
 msgid "Annex B G.992.5"
-msgstr ""
+msgstr "Annex B G.992.5"
 
 msgid "Annex J (all)"
-msgstr ""
+msgstr "Annex J (all)"
 
 msgid "Annex L G.992.3 POTS 1"
-msgstr ""
+msgstr "Annex L G.992.3 POTS 1"
 
 msgid "Annex M (all)"
-msgstr ""
+msgstr "Annex M (all)"
 
 msgid "Annex M G.992.3"
-msgstr ""
+msgstr "Annex M G.992.3"
 
 msgid "Annex M G.992.5"
-msgstr ""
+msgstr "Annex M G.992.5"
 
 msgid "Announce as default router even if no public prefix is available."
 msgstr ""
+"Объявить маршрутизатором по умолчанию, даже если общедоступный префикс "
+"недоступен."
 
 msgid "Announced DNS domains"
-msgstr ""
+msgstr "Объявленные DNS домены"
 
 msgid "Announced DNS servers"
-msgstr ""
+msgstr "Объявленные DNS сервера"
 
 msgid "Anonymous Identity"
-msgstr ""
+msgstr "Анонимная идентификация"
 
 msgid "Anonymous Mount"
-msgstr ""
+msgstr "Неизвестный раздел"
 
 msgid "Anonymous Swap"
-msgstr ""
+msgstr "Неизвестный swap"
 
 msgid "Antenna 1"
 msgstr "Антенна 1"
@@ -405,7 +408,7 @@ msgid "Antenna 2"
 msgstr "Антенна 2"
 
 msgid "Antenna Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f антенн"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка антенн"
 
 msgid "Any zone"
 msgstr "Любая зона"
@@ -419,6 +422,8 @@ msgstr "Применение изменений"
 msgid ""
 "Assign a part of given length of every public IPv6-prefix to this interface"
 msgstr ""
+"Задайте часть данной длины, каждому публичному IPv6-префиксу этого "
+"интерфейса."
 
 msgid "Assign interfaces..."
 msgstr "Назначить интерфейсы..."
@@ -426,48 +431,56 @@ msgstr "Назначить интерфейсы..."
 msgid ""
 "Assign prefix parts using this hexadecimal subprefix ID for this interface."
 msgstr ""
+"Назначьте префикс части, используя этот шестнадцатеричный ID вложенного "
+"исправления для этого интерфейса."
 
 msgid "Associated Stations"
 msgstr "Подключенные клиенты"
 
 msgid "Auth Group"
-msgstr ""
+msgstr "Группа аутентификации"
 
 msgid "Authentication"
 msgstr "Аутентификация"
 
 msgid "Authentication Type"
-msgstr ""
+msgstr "Тип аутентификации"
 
 msgid "Authoritative"
-msgstr "Ð\90вÑ\82оÑ\80иÑ\82еÑ\82нÑ\8bй"
+msgstr "Ð\9eÑ\81новной"
 
 msgid "Authorization Required"
-msgstr "ТÑ\80ебÑ\83еÑ\82Ñ\81Ñ\8f Ð°Ð²Ñ\82оÑ\80изаÑ\86иÑ\8f"
+msgstr "Ð\92Ñ\8bполниÑ\82е Ð°Ñ\83Ñ\82енÑ\82иÑ\84икаÑ\86иÑ\8e"
 
 msgid "Auto Refresh"
 msgstr "Автообновление"
 
 msgid "Automatic"
-msgstr ""
+msgstr "Автоматически"
 
 msgid "Automatic Homenet (HNCP)"
-msgstr ""
+msgstr "Автоматическая Homenet (HNCP)"
 
 msgid "Automatically check filesystem for errors before mounting"
 msgstr ""
+"Автоматическая проверка файловой системы раздела на ошибки, перед "
+"монтированием."
 
 msgid "Automatically mount filesystems on hotplug"
 msgstr ""
+"Автоматическое монтирование раздела, при подключении к системе во время ее "
+"работы, без выключения питания и остановки системы (hotplug)."
 
 msgid "Automatically mount swap on hotplug"
 msgstr ""
+"Автоматическое монтирование swap-а при подключении к системе во время ее "
+"работы без выключения питания и остановки системы (hotplug)."
 
 msgid "Automount Filesystem"
-msgstr ""
+msgstr "Hotplug раздела"
 
 msgid "Automount Swap"
-msgstr ""
+msgstr "Hotplug swap-а"
 
 msgid "Available"
 msgstr "Доступно"
@@ -479,13 +492,13 @@ msgid "Average:"
 msgstr "Средняя:"
 
 msgid "B43 + B43C"
-msgstr ""
+msgstr "B43 + B43C"
 
 msgid "B43 + B43C + V43"
-msgstr ""
+msgstr "B43 + B43C + V43"
 
 msgid "BR / DMR / AFTR"
-msgstr ""
+msgstr "BR / DMR / AFTR"
 
 msgid "BSSID"
 msgstr "BSSID"
@@ -494,19 +507,19 @@ msgid "Back"
 msgstr "Назад"
 
 msgid "Back to Overview"
-msgstr "Ð\9dазад Ðº Ð¾Ð±Ð·Ð¾Ñ\80Ñ\83"
+msgstr "Ð\9dазад Ð² Ð¼ÐµÐ½Ñ\8e"
 
 msgid "Back to configuration"
 msgstr "Назад к настройке"
 
 msgid "Back to overview"
-msgstr "Ð\9dазад Ðº Ð¾Ð±Ð·Ð¾Ñ\80Ñ\83"
+msgstr "назад Ð² Ð¼ÐµÐ½Ñ\8e"
 
 msgid "Back to scan results"
 msgstr "Назад к результатам сканирования"
 
 msgid "Backup / Flash Firmware"
-msgstr "РезеÑ\80внаÑ\8f ÐºÐ¾Ð¿Ð¸Ñ\8f / прошивка"
+msgstr "РезеÑ\80вное ÐºÐ¾Ð¿Ð¸Ñ\80ование / Ð\9fеÑ\80епрошивка"
 
 msgid "Backup / Restore"
 msgstr "Резервное копирование / Восстановление"
@@ -518,10 +531,10 @@ msgid "Bad address specified!"
 msgstr "Указан неправильный адрес!"
 
 msgid "Band"
-msgstr ""
+msgstr "Диапазон"
 
 msgid "Behind NAT"
-msgstr ""
+msgstr "За NAT-ом"
 
 msgid ""
 "Below is the determined list of files to backup. It consists of changed "
@@ -529,18 +542,19 @@ msgid ""
 "defined backup patterns."
 msgstr ""
 "Ниже приводится определённый список файлов для резервного копирования. Он "
-"состоит из изменённых конфигурационных файлов, отмеченных opkg, необходимых "
-"базовых файлов, а также шаблонов резервного копирования, определённых "
-"пользователем."
+"состоит из измененных config файлов, отмеченных opkg, необходимых базовых "
+"файлов, а также шаблонов резервного копирования, определенных пользователем."
 
 msgid "Bind interface"
-msgstr ""
+msgstr "Открытый интерфейс"
 
 msgid "Bind only to specific interfaces rather than wildcard address."
 msgstr ""
+"Соединение только с определенными интерфейсами, не использующими "
+"подстановочные адреса (wildcard)."
 
 msgid "Bind the tunnel to this interface (optional)."
-msgstr ""
+msgstr "Открытый туннель для этого интерфейса (необязательно)."
 
 msgid "Bitrate"
 msgstr "Скорость"
@@ -573,12 +587,12 @@ msgid ""
 "Build/distribution specific feed definitions. This file will NOT be "
 "preserved in any sysupgrade."
 msgstr ""
-
-msgid "Buttons"
-msgstr "Кнопки"
+"Build/distribution оригинальные feed-ы. Изменения в этом файле НЕ сохранятся "
+"при перепрошивке sysupgrade-совместимым образом."
 
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
+"CA сертификат; если отсутствует, будет сохранен после первого соединения."
 
 msgid "CPU usage (%)"
 msgstr "Загрузка ЦП (%)"
@@ -587,7 +601,7 @@ msgid "Cancel"
 msgstr "Отменить"
 
 msgid "Category"
-msgstr ""
+msgstr "Категория"
 
 msgid "Chain"
 msgstr "Цепочка"
@@ -599,7 +613,7 @@ msgid "Changes applied."
 msgstr "Изменения приняты."
 
 msgid "Changes the administrator password for accessing the device"
-msgstr "Изменить пароль администратора для доступа к устройству"
+msgstr "Изменить пароль администратора для доступа к устройству."
 
 msgid "Channel"
 msgstr "Канал"
@@ -607,11 +621,13 @@ msgstr "Канал"
 msgid "Check"
 msgstr "Проверить"
 
-msgid "Check fileystems before mount"
-msgstr ""
+msgid "Check filesystems before mount"
+msgstr "Проверить файловые системы перед монтированием"
 
 msgid "Check this option to delete the existing networks from this radio."
 msgstr ""
+"Проверьте эту опцию, чтобы удалить существующие сети беспроводного "
+"устройства."
 
 msgid "Checksum"
 msgstr "Контрольная сумма"
@@ -623,31 +639,32 @@ msgid ""
 "interface to it."
 msgstr ""
 "Укажите зону, которую вы хотите прикрепить к этому интерфейсу. Выберите "
-"<em>не определено</em>, чтобы удалить этот интерфейс из зоны, или заполните "
-"поле <em>Ñ\81оздаÑ\82Ñ\8c</em>, Ñ\87Ñ\82обÑ\8b Ð¾Ð¿Ñ\80еделиÑ\82Ñ\8c Ð½Ð¾Ð²Ñ\83Ñ\8e Ð·Ð¾Ð½Ñ\83 Ð¸ Ð¿Ñ\80икÑ\80епиÑ\82Ñ\8c Ðº Ð½ÐµÐ¹ Ñ\8dÑ\82оÑ\82 "
-"интерфейс."
+"<em>'не определено'</em>, чтобы удалить этот интерфейс из зоны, или "
+"заполниÑ\82е Ð¿Ð¾Ð»Ðµ <em>'Ñ\81оздаÑ\82Ñ\8c'</em>, Ñ\87Ñ\82обÑ\8b Ð¾Ð¿Ñ\80еделиÑ\82Ñ\8c Ð½Ð¾Ð²Ñ\83Ñ\8e Ð·Ð¾Ð½Ñ\83 Ð¸ Ð¿Ñ\80икÑ\80епиÑ\82Ñ\8c "
+"к Ð½ÐµÐ¹ Ñ\8dÑ\82оÑ\82 Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81."
 
 msgid ""
 "Choose the network(s) you want to attach to this wireless interface or fill "
 "out the <em>create</em> field to define a new network."
 msgstr ""
-"Выберите сеть (сети), которые вы хотите прикрепить к этому беспроводному "
-"интерфейсу, или заполните поле <em>создать</em>, чтобы определить новую сеть."
+"Выберите интерфейс(интерфейсы), который вы хотите прикрепить к этой "
+"беспроводной сети, или заполните поле <em>создать</em>, чтобы создать новый "
+"интерфейс."
 
 msgid "Cipher"
-msgstr "ШиÑ\84Ñ\80ование"
+msgstr "Ð\9fÑ\80оÑ\82окол"
 
 msgid "Cisco UDP encapsulation"
-msgstr ""
+msgstr "формирование пакетов данных Cisco UDP "
 
 msgid ""
 "Click \"Generate archive\" to download a tar archive of the current "
 "configuration files. To reset the firmware to its initial state, click "
 "\"Perform reset\" (only possible with squashfs images)."
 msgstr ""
-"Нажмите \"Создать архив\", чтобы загрузить tar-архив текущих "
-"конÑ\84игÑ\83Ñ\80аÑ\86ионнÑ\8bÑ\85 Ñ\84айлов. Ð\94лÑ\8f Ñ\81бÑ\80оÑ\81а Ð½Ð°Ñ\81Ñ\82Ñ\80оек Ð¿Ñ\80оÑ\88ивки Ðº Ð¸Ñ\81Ñ\85одномÑ\83 Ñ\81оÑ\81Ñ\82оÑ\8fниÑ\8e "
-"нажмите \"Выполнить сброс\" (возможно только для squashfs-образов)."
+"Нажмите 'Создать архив', чтобы загрузить tar-архив текущих config файлов. "
+"Ð\94лÑ\8f Ñ\81бÑ\80оÑ\81а Ð½Ð°Ñ\81Ñ\82Ñ\80оек Ð¿Ñ\80оÑ\88ивки Ðº Ð¸Ñ\81Ñ\85одномÑ\83 Ñ\81оÑ\81Ñ\82оÑ\8fниÑ\8e Ð½Ð°Ð¶Ð¼Ð¸Ñ\82е 'Ð\92Ñ\8bполниÑ\82Ñ\8c "
+"сброс' (возможно только для squashfs-образов)."
 
 msgid "Client"
 msgstr "Клиент"
@@ -660,7 +677,7 @@ msgid ""
 "persist connection"
 msgstr ""
 "Завершать неактивное соединение после заданного интервала (сек.), "
-"используйте значение 0 для удержания неактивного соединения"
+"используйте значение 0 для удержания неактивного соединения."
 
 msgid "Close list..."
 msgstr "Закрыть список..."
@@ -672,7 +689,7 @@ msgid "Command"
 msgstr "Команда"
 
 msgid "Common Configuration"
-msgstr "Ð\9eбÑ\89аÑ\8f ÐºÐ¾Ð½Ñ\84игÑ\83Ñ\80аÑ\86иÑ\8f"
+msgstr "Ð\9eбÑ\89ие Ð½Ð°Ñ\81Ñ\82Ñ\80ойки"
 
 msgid ""
 "Complicates key reinstallation attacks on the client side by disabling "
@@ -680,15 +697,19 @@ msgid ""
 "workaround might cause interoperability issues and reduced robustness of key "
 "negotiation especially in environments with heavy traffic load."
 msgstr ""
+"Усложняет атаки на переустановку ключа на стороне клиента, отключая "
+"ретрансляцию фреймов EAPOL-Key, которые используются для установки ключей. "
+"Этот способ может вызвать проблемы совместимости и снижение надежности "
+"ключевых переговоров, особенно в средах с высокой нагрузкой."
 
 msgid "Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка config Ñ\84айла"
 
 msgid "Configuration applied."
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¿Ñ\80именена."
+msgstr "Ð\98зменение Ð½Ð°Ñ\81Ñ\82Ñ\80оек."
 
 msgid "Configuration files will be kept."
-msgstr "Конфигурационные файлы будут сохранены."
+msgstr "Config файлы будут сохранены."
 
 msgid "Confirmation"
 msgstr "Подтверждение пароля"
@@ -703,7 +724,7 @@ msgid "Connection Limit"
 msgstr "Ограничение соединений"
 
 msgid "Connection to server fails when TLS cannot be used"
-msgstr ""
+msgstr "Связь с сервером прерывается, когда TLS не может быть использован"
 
 msgid "Connections"
 msgstr "Соединения"
@@ -733,21 +754,23 @@ msgid "Critical"
 msgstr "Критическая ситуация"
 
 msgid "Cron Log Level"
-msgstr "УÑ\80овенÑ\8c Ð²Ñ\8bвода Cron"
+msgstr "УÑ\80овенÑ\8c Ð¶Ñ\83Ñ\80нала Cron"
 
 msgid "Custom Interface"
 msgstr "Пользовательский интерфейс"
 
 msgid "Custom delegated IPv6-prefix"
-msgstr ""
+msgstr "Установленный пользователем IPv6-prefix"
 
 msgid ""
 "Custom feed definitions, e.g. private feeds. This file can be preserved in a "
 "sysupgrade."
 msgstr ""
+"Custom-ные feed-ы - это пользовательские feed-ы. Этот файл может быть "
+"сохранен при перепрошивке sysupgrade-совместимым образом."
 
 msgid "Custom feeds"
-msgstr ""
+msgstr "Список custom-ных feed-ов"
 
 msgid ""
 "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
@@ -774,13 +797,13 @@ msgid "DHCPv6 Leases"
 msgstr "Аренды DHCPv6"
 
 msgid "DHCPv6 client"
-msgstr ""
+msgstr "DHCPv6 клиент"
 
 msgid "DHCPv6-Mode"
-msgstr ""
+msgstr "DHCPv6-Режим"
 
 msgid "DHCPv6-Service"
-msgstr ""
+msgstr "DHCPv6-Сервис"
 
 msgid "DNS"
 msgstr "DNS"
@@ -789,34 +812,34 @@ msgid "DNS forwardings"
 msgstr "Перенаправление запросов DNS"
 
 msgid "DNS-Label / FQDN"
-msgstr ""
+msgstr "DNS-Label / FQDN"
 
 msgid "DNSSEC"
-msgstr ""
+msgstr "DNSSEC"
 
 msgid "DNSSEC check unsigned"
-msgstr ""
+msgstr "DNSSEC проверка без знака"
 
 msgid "DPD Idle Timeout"
-msgstr ""
+msgstr "DPD время простоя"
 
 msgid "DS-Lite AFTR address"
-msgstr ""
+msgstr "DS-Lite AFTR-адрес"
 
 msgid "DSL"
-msgstr ""
+msgstr "DSL"
 
 msgid "DSL Status"
-msgstr ""
+msgstr "Состояние DSL"
 
 msgid "DSL line mode"
-msgstr ""
+msgstr "DSL линейный режим"
 
 msgid "DUID"
 msgstr "DUID"
 
 msgid "Data Rate"
-msgstr ""
+msgstr "Скорость передачи данных"
 
 msgid "Debug"
 msgstr "Отладка"
@@ -828,10 +851,10 @@ msgid "Default gateway"
 msgstr "Шлюз по умолчанию"
 
 msgid "Default is stateless + stateful"
-msgstr ""
+msgstr "Значение по умолчанию - 'stateless + stateful'."
 
 msgid "Default route"
-msgstr ""
+msgstr "Маршрут по умолчанию"
 
 msgid "Default state"
 msgstr "Начальное состояние"
@@ -867,22 +890,22 @@ msgid "Device"
 msgstr "Устройство"
 
 msgid "Device Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f устройства"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка устройства"
 
 msgid "Device is rebooting..."
-msgstr ""
+msgstr "Перезагрузка..."
 
 msgid "Device unreachable"
-msgstr ""
+msgstr "Устройство недоступно"
 
 msgid "Diagnostics"
 msgstr "Диагностика"
 
 msgid "Dial number"
-msgstr ""
+msgstr "Dial номер"
 
 msgid "Directory"
-msgstr "Ð\94иÑ\80екÑ\82оÑ\80иÑ\8f"
+msgstr "Ð\9fапка"
 
 msgid "Disable"
 msgstr "Отключить"
@@ -891,23 +914,23 @@ msgid ""
 "Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for "
 "this interface."
 msgstr ""
-"Ð\9eÑ\82клÑ\8eÑ\87иÑ\82Ñ\8c <abbr title=\"Ð\9fÑ\80оÑ\82окол Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ\87еÑ\81кой ÐºÐ¾Ð½Ñ\84игÑ\83Ñ\80аÑ\86ии Ñ\83зла\">DHCP</"
-"abbr> для этого интерфейса."
+"Ð\9eÑ\82клÑ\8eÑ\87иÑ\82Ñ\8c <abbr title=\"Ð\9fÑ\80оÑ\82окол Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ\87еÑ\81кой Ð½Ð°Ñ\81Ñ\82Ñ\80ойки Ñ\83зла\">DHCP</abbr> "
+"для этого интерфейса."
 
 msgid "Disable DNS setup"
-msgstr "Отключить настройку DNS"
+msgstr "Отключить DNS настройки"
 
 msgid "Disable Encryption"
-msgstr ""
+msgstr "Отключить шифрование"
 
 msgid "Disabled"
 msgstr "Отключено"
 
 msgid "Disabled (default)"
-msgstr ""
+msgstr "Отключено (по умолчанию)"
 
 msgid "Discard upstream RFC1918 responses"
-msgstr "Отбрасывать ответы RFC1918"
+msgstr "Отбрасывать ответы RFC1918."
 
 msgid "Displaying only packages containing"
 msgstr "Показываются только пакеты, содержащие"
@@ -919,7 +942,7 @@ msgid "Distance to farthest network member in meters."
 msgstr "Расстояние до самого удалённого сетевого узла в метрах."
 
 msgid "Distribution feeds"
-msgstr ""
+msgstr "Список feed-ов дистрибутива"
 
 msgid "Diversity"
 msgstr "Разновидность антенн"
@@ -930,21 +953,21 @@ msgid ""
 "Forwarder for <abbr title=\"Network Address Translation\">NAT</abbr> "
 "firewalls"
 msgstr ""
-"Dnsmasq Ñ\81одеÑ\80жиÑ\82 Ð² Ñ\81ебе <abbr title=\"Ð\9fÑ\80оÑ\82окол Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ\87еÑ\81кой ÐºÐ¾Ð½Ñ\84игÑ\83Ñ\80аÑ\86ии узла"
+"Dnsmasq Ñ\81одеÑ\80жиÑ\82 Ð² Ñ\81ебе <abbr title=\"Ð\9fÑ\80оÑ\82окол Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ\87еÑ\81кой Ð½Ð°Ñ\81Ñ\82Ñ\80ойки узла"
 "\">DHCP</abbr>-сервер и <abbr title=\"Служба доменных имён\">DNS</abbr>-"
 "прокси для сетевых экранов <abbr title=\"Преобразование сетевых адресов"
 "\">NAT</abbr>"
 
 msgid "Do not cache negative replies, e.g. for not existing domains"
-msgstr "Не кешировать отрицательные ответы, в т.ч. для несуществующих доменов"
+msgstr "Не кешировать отрицательные ответы, в т.ч. для несуществующих доменов."
 
 msgid "Do not forward requests that cannot be answered by public name servers"
 msgstr ""
 "Не перенаправлять запросы, которые не могут быть обработаны публичными DNS-"
-"серверами"
+"серверами."
 
 msgid "Do not forward reverse lookups for local networks"
-msgstr "Не перенаправлять обратные DNS-запросы для локальных сетей"
+msgstr "Не перенаправлять обратные DNS-запросы для локальных сетей."
 
 msgid "Domain required"
 msgstr "Требуется домен"
@@ -953,14 +976,14 @@ msgid "Domain whitelist"
 msgstr "Белый список доменов"
 
 msgid "Don't Fragment"
-msgstr ""
+msgstr "Не фрагментировать"
 
 msgid ""
 "Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
 "<abbr title=\"Domain Name System\">DNS</abbr>-Name"
 msgstr ""
 "Не перенаправлять <abbr title=\"Служба доменных имён\">DNS</abbr>-запросы "
-"без <abbr title=\"Служба доменных имён\">DNS</abbr>-имени"
+"без <abbr title=\"Служба доменных имён\">DNS</abbr>-имени."
 
 msgid "Download and install package"
 msgstr "Загрузить и установить пакет"
@@ -969,25 +992,24 @@ msgid "Download backup"
 msgstr "Загрузить резервную копию"
 
 msgid "Downstream SNR offset"
-msgstr ""
+msgstr "SNR offset исходящего потока"
 
 msgid "Dropbear Instance"
-msgstr "Dropbear"
+msgstr "Исключение Dropbear"
 
 msgid ""
 "Dropbear offers <abbr title=\"Secure Shell\">SSH</abbr> network shell access "
 "and an integrated <abbr title=\"Secure Copy\">SCP</abbr> server"
 msgstr ""
 "Dropbear - это <abbr title=\"Secure Shell\">SSH</abbr>-сервер со встроенным "
-"<abbr title=\"Secure Copy\">SCP</abbr>"
+"<abbr title=\"Secure Copy\">SCP</abbr>."
 
 msgid "Dual-Stack Lite (RFC6333)"
-msgstr ""
+msgstr "Dual-Stack Lite (RFC6333)"
 
 msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
 msgstr ""
-"Динамический <abbr title=\"Протокол динамической конфигурации узла\">DHCP</"
-"abbr>"
+"Динамический <abbr title=\"Протокол динамической настройки узла\">DHCP</abbr>"
 
 msgid "Dynamic tunnel"
 msgstr "Динамический туннель"
@@ -1000,24 +1022,23 @@ msgstr ""
 "обслужены только клиенты с постоянно арендованными адресами."
 
 msgid "EA-bits length"
-msgstr ""
+msgstr "EA-bits длина"
 
 msgid "EAP-Method"
 msgstr "Метод EAP"
 
-# "Редактировать" длинно и не влазит по ширине в кнопку - текст наезжает на иконку
-#, fuzzy
 msgid "Edit"
-msgstr "РедакÑ\82иÑ\80овать"
+msgstr "Ð\98зменить"
 
 msgid ""
 "Edit the raw configuration data above to fix any error and hit \"Save\" to "
 "reload the page."
 msgstr ""
+"Изменить данные конфигурации raw выше, чтобы исправить любую ошибку и "
+"нажмите 'Сохранить', чтобы перезагрузить страницу."
 
-#, fuzzy
 msgid "Edit this interface"
-msgstr "РедакÑ\82иÑ\80овать этот интерфейс"
+msgstr "Ð\98зменить этот интерфейс"
 
 msgid "Edit this network"
 msgstr "Редактировать эту сеть"
@@ -1035,7 +1056,7 @@ msgid "Enable HE.net dynamic endpoint update"
 msgstr "Включить динамическое обновление оконечной точки HE.net"
 
 msgid "Enable IPv6 negotiation"
-msgstr ""
+msgstr "Включить IPv6 negotiation"
 
 msgid "Enable IPv6 negotiation on the PPP link"
 msgstr "Включить IPv6-согласование на PPP-соединении"
@@ -1047,7 +1068,7 @@ msgid "Enable NTP client"
 msgstr "Включить NTP-клиент"
 
 msgid "Enable Single DES"
-msgstr ""
+msgstr "Включить Single DES"
 
 msgid "Enable TFTP server"
 msgstr "Включить TFTP-сервер"
@@ -1056,22 +1077,22 @@ msgid "Enable VLAN functionality"
 msgstr "Включить поддержку VLAN"
 
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
-msgstr ""
+msgstr "Включить WPS при нажатии на кнопку, в режиме WPA(2)-PSK"
 
 msgid "Enable key reinstallation (KRACK) countermeasures"
-msgstr ""
+msgstr "Включить контрмеры переустановки ключей (KRACK)"
 
 msgid "Enable learning and aging"
 msgstr "Включить изучение и устаревание (learning/aging)"
 
 msgid "Enable mirroring of incoming packets"
-msgstr ""
+msgstr "Включить отражение входящих пакетов"
 
 msgid "Enable mirroring of outgoing packets"
-msgstr ""
+msgstr "Включить отражение исходящих пакетов"
 
 msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
-msgstr ""
+msgstr "Включите флаг DF (не Фрагментировать) инкапсулирующих пакетов."
 
 msgid "Enable this mount"
 msgstr "Включить эту точку монтирования"
@@ -1089,9 +1110,11 @@ msgid ""
 "Enables fast roaming among access points that belong to the same Mobility "
 "Domain"
 msgstr ""
+"Включить быстрый роуминг между точками доступа, принадлежащими к тому же "
+"домену мобильности"
 
 msgid "Enables the Spanning Tree Protocol on this bridge"
-msgstr "Включает Spanning Tree Protocol на этом мосту"
+msgstr "Включает Spanning Tree Protocol на этом мосту."
 
 msgid "Encapsulation mode"
 msgstr "Режим инкапсуляции"
@@ -1100,10 +1123,10 @@ msgid "Encryption"
 msgstr "Шифрование"
 
 msgid "Endpoint Host"
-msgstr ""
+msgstr "Конечная точка Хоста"
 
 msgid "Endpoint Port"
-msgstr ""
+msgstr "Конечная точка Порта"
 
 msgid "Erasing..."
 msgstr "Стирание..."
@@ -1112,7 +1135,7 @@ msgid "Error"
 msgstr "Ошибка"
 
 msgid "Errored seconds (ES)"
-msgstr ""
+msgstr "Ошибочные секунды (ES)"
 
 msgid "Ethernet Adapter"
 msgstr "Ethernet-адаптер"
@@ -1121,7 +1144,7 @@ msgid "Ethernet Switch"
 msgstr "Ethernet-коммутатор"
 
 msgid "Exclude interfaces"
-msgstr ""
+msgstr "Исключите интерфейсы"
 
 msgid "Expand hosts"
 msgstr "Расширять имена узлов"
@@ -1129,42 +1152,41 @@ msgstr "Расширять имена узлов"
 msgid "Expires"
 msgstr "Истекает"
 
-#, fuzzy
 msgid ""
 "Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
 msgstr ""
-"Время, через которое истекает аренда адреса, минимум 2 минуты (<code>2m</"
-"code>)."
+"Время истечения срока аренды арендованных адресов, минимум 2 минуты "
+"(<code>2m</code>)."
 
 msgid "External"
-msgstr ""
+msgstr "Внешний"
 
 msgid "External R0 Key Holder List"
-msgstr ""
+msgstr "Внешний R0 Key Holder List"
 
 msgid "External R1 Key Holder List"
-msgstr ""
+msgstr "Внешний R0 Key Holder List"
 
 msgid "External system log server"
-msgstr "Сервер системного журнала"
+msgstr "Ð\92неÑ\88ний Ñ\81ервер системного журнала"
 
 msgid "External system log server port"
-msgstr "Порт сервера системного журнала"
+msgstr "Порт внешнего сервера системного журнала"
 
 msgid "External system log server protocol"
-msgstr ""
+msgstr "Внешний протокол лог-сервера"
 
 msgid "Extra SSH command options"
-msgstr ""
+msgstr "Дополнительные опции команды SSH"
 
 msgid "FT over DS"
-msgstr ""
+msgstr "FT над DS"
 
 msgid "FT over the Air"
-msgstr ""
+msgstr "FT над the Air"
 
 msgid "FT protocol"
-msgstr ""
+msgstr "FT протокол"
 
 msgid "File"
 msgstr "Файл"
@@ -1173,7 +1195,7 @@ msgid "Filename of the boot image advertised to clients"
 msgstr "Имя загрузочного образа, извещаемого клиентам"
 
 msgid "Filesystem"
-msgstr "ФайловаÑ\8f Ñ\81иÑ\81Ñ\82ема"
+msgstr "Раздел"
 
 msgid "Filter"
 msgstr "Фильтр"
@@ -1188,6 +1210,8 @@ msgid ""
 "Find all currently attached filesystems and swap and replace configuration "
 "with defaults based on what was detected"
 msgstr ""
+"Найти все разделы включая swap и изменить config с дефолтными значениями "
+"всех обнаруженных разделов."
 
 msgid "Find and join network"
 msgstr "Найти и присоединиться к сети"
@@ -1202,22 +1226,22 @@ msgid "Firewall"
 msgstr "Межсетевой экран"
 
 msgid "Firewall Mark"
-msgstr ""
+msgstr "Метка межсетевого эрана"
 
 msgid "Firewall Settings"
 msgstr "Настройки межсетевого экрана"
 
 msgid "Firewall Status"
-msgstr "Статус межсетевого экрана"
+msgstr "Состояние межсетевого экрана"
 
 msgid "Firmware File"
-msgstr ""
+msgstr "Файл прошивки"
 
 msgid "Firmware Version"
 msgstr "Версия прошивки"
 
 msgid "Fixed source port for outbound DNS queries"
-msgstr "Фиксированный порт для исходящих DNS-запросов"
+msgstr "Фиксированный порт для исходящих DNS-запросов."
 
 msgid "Flash Firmware"
 msgstr "Установить прошивку"
@@ -1234,40 +1258,42 @@ msgstr "Операции с прошивкой"
 msgid "Flashing..."
 msgstr "Прошивка..."
 
-# Force DHCP on the network
 msgid "Force"
-msgstr "Ð\9fÑ\80инÑ\83диÑ\82елÑ\8cно"
+msgstr "Ð\9dазнаÑ\87иÑ\82Ñ\8c"
 
 msgid "Force CCMP (AES)"
-msgstr "ТÑ\80ебовать CCMP (AES)"
+msgstr "Ð\9dазнаÑ\87ить CCMP (AES)"
 
 msgid "Force DHCP on this network even if another server is detected."
-msgstr "Ð\98Ñ\81полÑ\8cзовать DHCP в этой сети, даже если найден другой сервер."
+msgstr "Ð\9dазнаÑ\87ить DHCP в этой сети, даже если найден другой сервер."
 
 msgid "Force TKIP"
-msgstr "ТÑ\80ебовать TKIP"
+msgstr "Ð\9dазнаÑ\87ить TKIP"
 
 msgid "Force TKIP and CCMP (AES)"
-msgstr "TKIP или CCMP (AES)"
+msgstr "Назначить TKIP и CCMP (AES)"
 
 msgid "Force link"
-msgstr ""
+msgstr "Активировать соединение"
 
 msgid "Force use of NAT-T"
-msgstr ""
+msgstr "Принудительно использовать NAT-T"
 
 msgid "Form token mismatch"
-msgstr ""
+msgstr "Несоответствие маркеров формы"
 
 msgid "Forward DHCP traffic"
 msgstr "Перенаправлять трафик DHCP"
 
 msgid "Forward Error Correction Seconds (FECS)"
-msgstr ""
+msgstr "Секунды прямой коррекции ошибок (FECS)"
 
 msgid "Forward broadcast traffic"
 msgstr "Перенаправлять широковещательный траффик"
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr "Режим перенаправления"
 
@@ -1287,6 +1313,8 @@ msgid ""
 "Further information about WireGuard interfaces and peers at <a href=\"http://"
 "wireguard.io\">wireguard.io</a>."
 msgstr ""
+"Дополнительная информация о интерфейсах и партнерах WireGuard приведена в <a "
+"href=\"http://wireguard.io\">wireguard.io</a>."
 
 msgid "GHz"
 msgstr "ГГц"
@@ -1307,13 +1335,13 @@ msgid "General Setup"
 msgstr "Основные настройки"
 
 msgid "General options for opkg"
-msgstr ""
+msgstr "Основные настройки opkg."
 
 msgid "Generate Config"
-msgstr ""
+msgstr "Создать config"
 
 msgid "Generate PMK locally"
-msgstr ""
+msgstr "Создать PMK локально"
 
 msgid "Generate archive"
 msgstr "Создать архив"
@@ -1325,51 +1353,47 @@ msgid "Given password confirmation did not match, password not changed!"
 msgstr "Введённые пароли не совпадают, пароль не изменён!"
 
 msgid "Global Settings"
-msgstr ""
+msgstr "Основные настройки"
 
 msgid "Global network options"
-msgstr ""
+msgstr "Основные настройки сети"
 
 msgid "Go to password configuration..."
 msgstr "Перейти к настройке пароля..."
 
 msgid "Go to relevant configuration page"
-msgstr "Ð\9fеÑ\80ейÑ\82и Ðº Ñ\81Ñ\82Ñ\80аниÑ\86е ÐºÐ¾Ð½Ñ\84игÑ\83Ñ\80аÑ\86ии"
+msgstr "Ð\9fеÑ\80ейÑ\82и Ðº Ñ\81Ñ\82Ñ\80аниÑ\86е Ð½Ð°Ñ\81Ñ\82Ñ\80ойки"
 
 msgid "Group Password"
-msgstr ""
+msgstr "Групповой пароль"
 
 msgid "Guest"
-msgstr ""
+msgstr "Гость"
 
 msgid "HE.net password"
 msgstr "Пароль HE.net"
 
 msgid "HE.net username"
-msgstr ""
+msgstr "HE.net логин"
 
 msgid "HT mode (802.11n)"
-msgstr ""
-
-msgid "Handler"
-msgstr "Обработчик"
+msgstr "HT режим (802.11n)"
 
-# Вообще, SIGHUP означает, что "пользователь отключился от терминала". Но чаще всего сигнал используется для перезапуска, так что переведу именно так.
 msgid "Hang Up"
 msgstr "Перезапустить"
 
 msgid "Header Error Code Errors (HEC)"
-msgstr ""
+msgstr "Ошибки кода ошибки заголовка (HEC)"
 
 msgid "Heartbeat"
-msgstr ""
+msgstr "Heartbeat"
 
 msgid ""
 "Here you can configure the basic aspects of your device like its hostname or "
 "the timezone."
 msgstr ""
-"Ð\97деÑ\81Ñ\8c Ð²Ñ\8b Ð¼Ð¾Ð¶ÐµÑ\82е Ð½Ð°Ñ\81Ñ\82Ñ\80оиÑ\82Ñ\8c Ð¾Ñ\81новнÑ\8bе Ð¿Ð°Ñ\80амеÑ\82Ñ\80Ñ\8b Ð²Ð°Ñ\88его Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82ва Ñ\82акие ÐºÐ°Ðº Ð¸Ð¼Ñ\8f "
-"хоста или часовой пояс."
+"Ð\9dа Ñ\81Ñ\82Ñ\80аниÑ\86е Ð²Ñ\8b Ð¼Ð¾Ð¶ÐµÑ\82е Ð½Ð°Ñ\81Ñ\82Ñ\80оиÑ\82Ñ\8c Ð¾Ñ\81новнÑ\8bе Ð¿Ð°Ñ\80амеÑ\82Ñ\80Ñ\8b Ð²Ð°Ñ\88его Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82ва, Ñ\82акие "
+"как имя хоста или часовой пояс."
 
 msgid ""
 "Here you can paste public SSH-Keys (one per line) for SSH public-key "
@@ -1385,10 +1409,10 @@ msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 msgstr "Скрыть <abbr title=\"Расширенный идентификатор сети\">ESSID</abbr>"
 
 msgid "Host"
-msgstr ""
+msgstr "Хост"
 
 msgid "Host entries"
-msgstr "Ð\97апиÑ\81и хостов"
+msgstr "СпиÑ\81ок хостов"
 
 msgid "Host expiry timeout"
 msgstr "Таймаут хоста"
@@ -1406,13 +1430,13 @@ msgid "Hostnames"
 msgstr "Имена хостов"
 
 msgid "Hybrid"
-msgstr ""
+msgstr "Гибрид"
 
 msgid "IKE DH Group"
-msgstr ""
+msgstr "IKE DH Group"
 
 msgid "IP Addresses"
-msgstr ""
+msgstr "IP-адреса"
 
 msgid "IP address"
 msgstr "IP-адрес"
@@ -1424,7 +1448,7 @@ msgid "IPv4 Firewall"
 msgstr "Межсетевой экран IPv4"
 
 msgid "IPv4 WAN Status"
-msgstr "Статус IPv4 WAN"
+msgstr "Состояние IPv4 WAN"
 
 msgid "IPv4 address"
 msgstr "IPv4-адрес"
@@ -1433,7 +1457,7 @@ msgid "IPv4 and IPv6"
 msgstr "IPv4 и IPv6"
 
 msgid "IPv4 assignment length"
-msgstr ""
+msgstr "IPv4 assignment length"
 
 msgid "IPv4 broadcast"
 msgstr "Широковещательный IPv4-адрес"
@@ -1448,7 +1472,7 @@ msgid "IPv4 only"
 msgstr "Только IPv4"
 
 msgid "IPv4 prefix"
-msgstr ""
+msgstr "IPv4 префикс"
 
 msgid "IPv4 prefix length"
 msgstr "Длина префикса IPv4"
@@ -1457,7 +1481,7 @@ msgid "IPv4-Address"
 msgstr "IPv4-адрес"
 
 msgid "IPv4-in-IPv4 (RFC2003)"
-msgstr ""
+msgstr "IPv4-in-IPv4 (RFC2003)"
 
 msgid "IPv6"
 msgstr "IPv6"
@@ -1466,28 +1490,29 @@ msgid "IPv6 Firewall"
 msgstr "Межсетевой экран IPv6"
 
 msgid "IPv6 Neighbours"
-msgstr ""
+msgstr "IPv6 Neighbours"
 
 msgid "IPv6 Settings"
-msgstr ""
+msgstr "IPv6 Настройки"
 
 msgid "IPv6 ULA-Prefix"
-msgstr ""
+msgstr "IPv6 ULA-Prefix"
 
 msgid "IPv6 WAN Status"
-msgstr "Статус IPv6 WAN"
+msgstr "Состояние IPv6 WAN"
 
 msgid "IPv6 address"
 msgstr "IPv6-адрес"
 
 msgid "IPv6 address delegated to the local tunnel endpoint (optional)"
 msgstr ""
+"IPv6-адрес, делегированный локальной конечной точке туннеля (необязательно)."
 
 msgid "IPv6 assignment hint"
-msgstr ""
+msgstr "IPv6 подсказка присвоения"
 
 msgid "IPv6 assignment length"
-msgstr ""
+msgstr "IPv6 назначение длины"
 
 msgid "IPv6 gateway"
 msgstr "IPv6-адрес шлюза"
@@ -1502,16 +1527,16 @@ msgid "IPv6 prefix length"
 msgstr "Длина префикса IPv6"
 
 msgid "IPv6 routed prefix"
-msgstr ""
+msgstr "IPv6 направление префикса"
 
 msgid "IPv6 suffix"
-msgstr ""
+msgstr "IPv6 суффикс"
 
 msgid "IPv6-Address"
 msgstr "IPv6-адрес"
 
 msgid "IPv6-PD"
-msgstr ""
+msgstr "IPv6-PD"
 
 msgid "IPv6-in-IPv4 (RFC4213)"
 msgstr "IPv6 в IPv4 (RFC4213)"
@@ -1526,10 +1551,10 @@ msgid "Identity"
 msgstr "Идентификация EAP"
 
 msgid "If checked, 1DES is enabled"
-msgstr ""
+msgstr "Если выбрано, что 1DES включено"
 
 msgid "If checked, encryption is disabled"
-msgstr ""
+msgstr "Если проверено, что шифрование выключено"
 
 msgid ""
 "If specified, mount the device by its UUID instead of a fixed device node"
@@ -1545,10 +1570,10 @@ msgstr ""
 "фиксированного файла устройства"
 
 msgid "If unchecked, no default route is configured"
-msgstr "Если не выбрано, то маршрут по умолчанию не настраивается"
+msgstr "Если не выбрано, то маршрут по умолчанию не настраивается."
 
 msgid "If unchecked, the advertised DNS server addresses are ignored"
-msgstr "Если не выбрано, то извещаемые адреса DNS-серверов игнорируются"
+msgstr "Если не выбрано, то извещаемые адреса DNS-серверов игнорируются."
 
 msgid ""
 "If your physical memory is insufficient unused data can be temporarily "
@@ -1565,7 +1590,7 @@ msgstr ""
 "медленнее, чем <abbr title=\"Random Access Memory\">RAM</abbr>."
 
 msgid "Ignore <code>/etc/hosts</code>"
-msgstr "Ignore <code>/etc/hosts</code>"
+msgstr "Игнорировать <code>/etc/hosts</code>"
 
 msgid "Ignore interface"
 msgstr "Игнорировать интерфейс"
@@ -1583,6 +1608,9 @@ msgid ""
 "In order to prevent unauthorized access to the system, your request has been "
 "blocked. Click \"Continue »\" below to return to the previous page."
 msgstr ""
+"Для предотвращения несанкционированного доступа к системе ваш запрос "
+"заблокирован. Нажмите кнопку 'Продолжить' ниже, чтобы вернуться на "
+"предыдущую страницу."
 
 msgid "Inactivity timeout"
 msgstr "Таймаут бездействия"
@@ -1603,7 +1631,7 @@ msgid "Install"
 msgstr "Установить"
 
 msgid "Install iputils-traceroute6 for IPv6 traceroute"
-msgstr ""
+msgstr "Для IPv6, установите пакет iputils-traceroute6."
 
 msgid "Install package %q"
 msgstr "Установить пакет %q"
@@ -1618,13 +1646,13 @@ msgid "Interface"
 msgstr "Интерфейс"
 
 msgid "Interface %q device auto-migrated from %q to %q."
-msgstr ""
+msgstr "Интерфейс %q устройство авт.перемещается из %q в %q."
 
 msgid "Interface Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81а"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ñ\81еÑ\82и"
 
 msgid "Interface Overview"
-msgstr "Ð\9eбзоÑ\80 Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81а"
+msgstr "СпиÑ\81ок Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81ов"
 
 msgid "Interface is reconnecting..."
 msgstr "Интерфейс переподключается..."
@@ -1633,7 +1661,7 @@ msgid "Interface is shutting down..."
 msgstr "Интерфейс отключается..."
 
 msgid "Interface name"
-msgstr ""
+msgstr "Имя интерфейса"
 
 msgid "Interface not present or not connected yet."
 msgstr "Интерфейс не существует или пока не подключен."
@@ -1648,7 +1676,7 @@ msgid "Interfaces"
 msgstr "Интерфейсы"
 
 msgid "Internal"
-msgstr ""
+msgstr "Внутренний"
 
 msgid "Internal Server Error"
 msgstr "Внутренняя ошибка сервера"
@@ -1665,18 +1693,17 @@ msgid "Invalid VLAN ID given! Only unique IDs are allowed"
 msgstr "Указан неверный VLAN ID! Доступны только уникальные ID"
 
 msgid "Invalid username and/or password! Please try again."
-msgstr "Ð\9dевеÑ\80нÑ\8bй Ð»Ð¾Ð³Ð¸Ð½ Ð¸/или Ð¿Ð°Ñ\80олÑ\8c! Ð\9fожалÑ\83йÑ\81Ñ\82а Ð¿Ð¾Ð¿Ñ\80обÑ\83йÑ\82е Ñ\81нова."
+msgstr "Неверный логин и/или пароль! Попробуйте снова."
 
 msgid "Isolate Clients"
-msgstr ""
+msgstr "Изолировать клиентов"
 
-#, fuzzy
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
 "flash memory, please verify the image file!"
 msgstr ""
-"Ð\92Ñ\8b Ð¿Ñ\8bÑ\82аеÑ\82еÑ\81Ñ\8c Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ\82Ñ\8c Ð¿Ñ\80оÑ\88ивкÑ\83 Ñ\84айлом, ÐºÐ¾Ñ\82оÑ\80Ñ\8bй Ð½Ðµ Ð¿Ð¾Ð¼ÐµÑ\89аеÑ\82Ñ\81Ñ\8f Ð² Ð¿Ð°Ð¼Ñ\8fÑ\82Ñ\8c "
-"устройства! Пожалуйста, проверьте файл образа."
+"Ð\9eказалоÑ\81Ñ\8c, Ñ\87Ñ\82о Ð²Ñ\8b Ð¿Ñ\8bÑ\82аеÑ\82еÑ\81Ñ\8c Ð¿Ñ\80оÑ\88иÑ\82Ñ\8c Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82во Ð¿Ñ\80оÑ\88ивкой, ÐºÐ¾Ñ\82оÑ\80аÑ\8f Ð¿Ð¾ Ñ\80азмеÑ\80Ñ\83 "
+"не помещается в чип флэш-памяти, проверьте ваш файл прошивки!"
 
 msgid "JavaScript required!"
 msgstr "Требуется JavaScript!"
@@ -1685,10 +1712,10 @@ msgid "Join Network"
 msgstr "Подключение к сети"
 
 msgid "Join Network: Wireless Scan"
-msgstr "Ð\9fодклÑ\8eÑ\87ение Ðº Ñ\81еÑ\82и: Ñ\81каниÑ\80ование"
+msgstr "Ð\9dайденнÑ\8bе Ñ\82оÑ\87ки Ð´Ð¾Ñ\81Ñ\82Ñ\83па Wi-Fi"
 
 msgid "Joining Network: %q"
-msgstr ""
+msgstr "Подключение к сети: %q"
 
 msgid "Keep settings"
 msgstr "Сохранить настройки"
@@ -1700,7 +1727,7 @@ msgid "Kernel Version"
 msgstr "Версия ядра"
 
 msgid "Key"
-msgstr "Ð\9aлÑ\8eÑ\87"
+msgstr "Ð\9fаÑ\80олÑ\8c (клÑ\8eÑ\87)"
 
 msgid "Key #%d"
 msgstr "Ключ №%d"
@@ -1733,13 +1760,13 @@ msgid "Language and Style"
 msgstr "Язык и тема"
 
 msgid "Latency"
-msgstr ""
+msgstr "Задержка"
 
 msgid "Leaf"
-msgstr ""
+msgstr "Лист"
 
 msgid "Lease time"
-msgstr ""
+msgstr "Время аренды адреса"
 
 msgid "Lease validity time"
 msgstr "Срок действия аренды"
@@ -1751,34 +1778,34 @@ msgid "Leasetime remaining"
 msgstr "Оставшееся время аренды"
 
 msgid "Leave empty to autodetect"
-msgstr "Оставьте поле пустым для автоопределения"
+msgstr "Оставьте поле пустым для автоопределения."
 
 msgid "Leave empty to use the current WAN address"
 msgstr "Оставьте пустым для использования текущего адреса WAN"
 
 msgid "Legend:"
-msgstr "Ð\9bегенда:"
+msgstr "СобÑ\8bÑ\82иÑ\8f:"
 
 msgid "Limit"
 msgstr "Предел"
 
 msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
-msgstr ""
+msgstr "Ограничение сервиса DNS, для подсетей интерфейса используещего DNS."
 
 msgid "Limit listening to these interfaces, and loopback."
-msgstr ""
+msgstr "Ограничьте прослушивание этих интерфейсов и замыкание на себя."
 
 msgid "Line Attenuation (LATN)"
-msgstr ""
+msgstr "Затухание линии (LATN)"
 
 msgid "Line Mode"
-msgstr ""
+msgstr "Режим линии"
 
 msgid "Line State"
-msgstr ""
+msgstr "Состояние Линии"
 
 msgid "Line Uptime"
-msgstr ""
+msgstr "Время бесперебойной работы линии"
 
 msgid "Link On"
 msgstr "Подключение"
@@ -1788,7 +1815,7 @@ msgid ""
 "requests to"
 msgstr ""
 "Список <abbr title=\"Domain Name System\">DNS</abbr>-серверов для "
-"перенаправления запросов"
+"перенаправления запросов."
 
 msgid ""
 "List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-"
@@ -1797,6 +1824,11 @@ msgid ""
 "from the R0KH that the STA used during the Initial Mobility Domain "
 "Association."
 msgstr ""
+"Список R0KHs в том же мобильном домене. <br />В формате: MAC-адрес,NAS-"
+"идентификатор,128-битный ключ как hex строка. <br />этот список используется "
+"для сопоставления R0KH-ID (NAS идентификатор) с целевым MAC-адресом при "
+"запросе ключа PMK-R1 из R0KH , который использовался STA во время начальной "
+"ассоциации доменов Mobility."
 
 msgid ""
 "List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
@@ -1805,27 +1837,32 @@ msgid ""
 "R0KH. This is also the list of authorized R1KHs in the MD that can request "
 "PMK-R1 keys."
 msgstr ""
+"Список R1KHs в том же домене мобильности. <br />Формат: MAC-адрес,R1KH-ID "
+"как 6 октетов с двоеточиями, 128-битный ключ, как шестнадцатеричная строка. "
+"<br />Этот список используется для сопоставления R1KH-ID с целевым MAC-"
+"адресом при отправке ключа PMK-R1 из R0KH. Это также список авторизованных "
+"R1KHs в MD, которые могут запросить PMK-R1 ключи."
 
 msgid "List of SSH key files for auth"
-msgstr ""
+msgstr "Список файлов ключей SSH для авторизации."
 
 msgid "List of domains to allow RFC1918 responses for"
-msgstr "Список доменов, для которых разрешены ответы RFC1918"
+msgstr "Список доменов, для которых разрешены ответы RFC1918."
 
 msgid "List of hosts that supply bogus NX domain results"
-msgstr "Список хостов, поставляющих поддельные результаты домена NX"
+msgstr "Список хостов, поставляющих поддельные результаты домена NX."
 
 msgid "Listen Interfaces"
-msgstr ""
+msgstr "Слушать интерфейсы"
 
 msgid "Listen Port"
-msgstr ""
+msgstr "Слушать порт"
 
 msgid "Listen only on the given interface or, if unspecified, on all"
-msgstr "Слушать только на данном интерфейсе или, если не определено, на всех"
+msgstr "Слушать только на данном интерфейсе или если не определено на всех."
 
 msgid "Listening port for inbound DNS queries"
-msgstr "Порт для входящих DNS-запросов"
+msgstr "Порт для входящих DNS-запросов."
 
 msgid "Load"
 msgstr "Загрузка"
@@ -1837,7 +1874,7 @@ msgid "Loading"
 msgstr "Загрузка"
 
 msgid "Local IP address to assign"
-msgstr ""
+msgstr "Присвоение локального IP адреса"
 
 msgid "Local IPv4 address"
 msgstr "Локальный IPv4-адрес"
@@ -1846,10 +1883,10 @@ msgid "Local IPv6 address"
 msgstr "Локальный IPv6-адрес"
 
 msgid "Local Service Only"
-msgstr ""
+msgstr "Только локальный DNS"
 
 msgid "Local Startup"
-msgstr "Ð\9bокалÑ\8cнаÑ\8f Ð·Ð°Ð³Ñ\80Ñ\83зка"
+msgstr "Ð\97апÑ\83Ñ\81к Ð¿Ð°ÐºÐµÑ\82ов Ð¸ Ñ\81лÑ\83жб Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8f, Ð¿Ñ\80и Ð²ÐºÐ»Ñ\8eÑ\87ении Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82ва"
 
 msgid "Local Time"
 msgstr "Местное время"
@@ -1857,18 +1894,17 @@ msgstr "Местное время"
 msgid "Local domain"
 msgstr "Локальный домен"
 
-#, fuzzy
 msgid ""
 "Local domain specification. Names matching this domain are never forwarded "
 "and are resolved from DHCP or hosts files only"
 msgstr ""
-"Ð\9eпÑ\80еделение Ð»Ð¾ÐºÐ°Ð»Ñ\8cного Ð´Ð¾Ð¼ÐµÐ½Ð°. Ð\98мена Ð² Ñ\8dÑ\82ом Ð´Ð¾Ð¼ÐµÐ½Ðµ Ð½Ð¸ÐºÐ¾Ð³Ð´Ð° Ð½Ðµ Ð·Ð°Ð¿Ñ\80аÑ\88иваÑ\8eÑ\82Ñ\81Ñ\8f "
-"у DNS-сервера, а разрешаются на основе данных DHCP и файлов hosts"
+"СпеÑ\86иÑ\84икаÑ\86иÑ\8f Ð»Ð¾ÐºÐ°Ð»Ñ\8cного Ð´Ð¾Ð¼ÐµÐ½Ð°. Ð\98мена Ñ\81ооÑ\82веÑ\82Ñ\81Ñ\82вÑ\83Ñ\8eÑ\89ие Ñ\8dÑ\82омÑ\83 Ð´Ð¾Ð¼ÐµÐ½Ñ\83, Ð½Ð¸ÐºÐ¾Ð³Ð´Ð° "
+"не пробрасываются и разрешаются только из файлов DHCP или хостов."
 
 msgid "Local domain suffix appended to DHCP names and hosts file entries"
 msgstr ""
 "Суффикс локального домена, который будет добавлен к DHCP-именам и записям из "
-"файлов hosts"
+"файлов hosts."
 
 msgid "Local server"
 msgstr "Локальный сервер"
@@ -1884,13 +1920,13 @@ msgid "Localise queries"
 msgstr "Локализовывать запросы"
 
 msgid "Locked to channel %s used by: %s"
-msgstr ""
+msgstr "Блокировать канал %s используемый: %s"
 
 msgid "Log output level"
 msgstr "Уровень вывода"
 
 msgid "Log queries"
-msgstr "Ð\97апиÑ\81Ñ\8bваÑ\82Ñ\8c Ð·Ð°Ð¿Ñ\80оÑ\81Ñ\8b Ð² Ð¶Ñ\83Ñ\80нал"
+msgstr "Ð\9bогиÑ\80ование Ð·Ð°Ð¿Ñ\80оÑ\81ов"
 
 msgid "Logging"
 msgstr "Журналирование"
@@ -1902,7 +1938,7 @@ msgid "Logout"
 msgstr "Выйти"
 
 msgid "Loss of Signal Seconds (LOSS)"
-msgstr ""
+msgstr "Loss of Signal Seconds (LOSS)"
 
 msgid "Lowest leased address as offset from the network address."
 msgstr "Минимальный адрес аренды."
@@ -1920,13 +1956,13 @@ msgid "MAC-List"
 msgstr "Список MAC"
 
 msgid "MAP / LW4over6"
-msgstr ""
+msgstr "MAP / LW4over6"
 
 msgid "MB/s"
 msgstr "МБ/с"
 
 msgid "MD5"
-msgstr ""
+msgstr "MD5"
 
 msgid "MHz"
 msgstr "МГц"
@@ -1938,32 +1974,33 @@ msgid ""
 "Make sure to clone the root filesystem using something like the commands "
 "below:"
 msgstr ""
+"Прежде чем перенести корень на внешний носитель, используйте команды "
+"приведенные ниже:"
 
 msgid "Manual"
-msgstr ""
+msgstr "Вручную"
 
 msgid "Max. Attainable Data Rate (ATTNDR)"
-msgstr ""
+msgstr "Max. Attainable Data Rate (ATTNDR)"
 
 msgid "Maximum allowed number of active DHCP leases"
-msgstr "Максимальное количество активных арендованных DHCP-адресов"
+msgstr "Максимальное количество активных арендованных DHCP-адресов."
 
 msgid "Maximum allowed number of concurrent DNS queries"
-msgstr "Максимально допустимое количество одновременных DNS-запросов"
+msgstr "Максимально допустимое количество одновременных DNS-запросов."
 
 msgid "Maximum allowed size of EDNS.0 UDP packets"
-msgstr "Максимально допустимый размер UDP пакетов-EDNS.0"
+msgstr "Максимально допустимый размер UDP пакетов-EDNS.0."
 
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr "Максимальное время ожидания готовности модема (секунды)"
 
-msgid "Maximum hold time"
-msgstr "Максимальное время удержания"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
 msgstr ""
+"Максимальная длина имени составляет 15 символов, включая префикс "
+"автоматического протокола/моста (br-, 6in4-, pppoe- etc.)"
 
 msgid "Maximum number of leased addresses."
 msgstr "Максимальное количество арендованных адресов."
@@ -1977,29 +2014,29 @@ msgstr "Память"
 msgid "Memory usage (%)"
 msgstr "Использование памяти (%)"
 
+msgid "Mesh Id"
+msgstr "Mesh ID"
+
 msgid "Metric"
 msgstr "Метрика"
 
-msgid "Minimum hold time"
-msgstr "Минимальное время удержания"
-
 msgid "Mirror monitor port"
-msgstr ""
+msgstr "Зеркальный порт наблюдения"
 
 msgid "Mirror source port"
-msgstr ""
+msgstr "Зеркальный исходящий порт"
 
 msgid "Missing protocol extension for proto %q"
 msgstr "Отсутствует расширение протокола %q"
 
 msgid "Mobility Domain"
-msgstr ""
+msgstr "Мобильный домен"
 
 msgid "Mode"
 msgstr "Режим"
 
 msgid "Model"
-msgstr ""
+msgstr "Модель"
 
 msgid "Modem device"
 msgstr "Модем"
@@ -2007,34 +2044,33 @@ msgstr "Модем"
 msgid "Modem init timeout"
 msgstr "Таймаут инициализации модема"
 
-# 802.11 monitor mode
 msgid "Monitor"
 msgstr "Монитор"
 
 msgid "Mount Entry"
-msgstr "ТоÑ\87ка Ð¼Ð¾Ð½Ñ\82иÑ\80ованиÑ\8f"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка config Ñ\84айла fstab (/etc/config/fstab)"
 
 msgid "Mount Point"
 msgstr "Точка монтирования"
 
 msgid "Mount Points"
-msgstr "ТоÑ\87ки Ð¼Ð¾Ð½Ñ\82иÑ\80ованиÑ\8f"
+msgstr "Ð\9cонÑ\82иÑ\80ование Ñ\80азделов"
 
 msgid "Mount Points - Mount Entry"
-msgstr "ТоÑ\87ки Ð¼Ð¾Ð½Ñ\82иÑ\80ованиÑ\8f - Ð\97апиÑ\81Ñ\8c"
+msgstr "ТоÑ\87ки Ð¼Ð¾Ð½Ñ\82иÑ\80ованиÑ\8f - Ð½Ð°Ñ\81Ñ\82Ñ\80ойка Ñ\80азделов"
 
 msgid "Mount Points - Swap Entry"
-msgstr "ТоÑ\87ки Ð¼Ð¾Ð½Ñ\82иÑ\80ованиÑ\8f - Ð\97апиÑ\81Ñ\8c Ð¿Ð¾Ð´ÐºÐ°Ñ\87ки"
+msgstr "ТоÑ\87ки Ð¼Ð¾Ð½Ñ\82иÑ\80ованиÑ\8f - Ð½Ð°Ñ\81Ñ\82Ñ\80ойка Swap"
 
 msgid ""
 "Mount Points define at which point a memory device will be attached to the "
 "filesystem"
 msgstr ""
-"Точки монтирования определяют, куда в файловой системе будет прикреплено "
-"запоминающее устройство"
+"Точки монтирования определяют, куда в файловой системе будут смонтированы "
+"разделы запоминающего устройства."
 
 msgid "Mount filesystems not specifically configured"
-msgstr ""
+msgstr "Монтирование не подготовленного раздела."
 
 msgid "Mount options"
 msgstr "Опции монтирования"
@@ -2043,10 +2079,10 @@ msgid "Mount point"
 msgstr "Точка монтирования"
 
 msgid "Mount swap not specifically configured"
-msgstr ""
+msgstr "Монтирование не подготовленного swap-а."
 
 msgid "Mounted file systems"
-msgstr "СмонÑ\82иÑ\80ованнÑ\8bе Ñ\84айловÑ\8bе Ñ\81иÑ\81Ñ\82емы"
+msgstr "СмонÑ\82иÑ\80ованнÑ\8bе Ñ\80азделы"
 
 msgid "Move down"
 msgstr "Переместить вниз"
@@ -2061,25 +2097,25 @@ msgid "NAS ID"
 msgstr "Идентификатор NAS"
 
 msgid "NAT-T Mode"
-msgstr ""
+msgstr "NAT-T режим"
 
 msgid "NAT64 Prefix"
-msgstr ""
+msgstr "NAT64 префикс"
 
 msgid "NCM"
-msgstr ""
+msgstr "NCM"
 
 msgid "NDP-Proxy"
-msgstr ""
+msgstr "NDP-прокси"
 
 msgid "NT Domain"
-msgstr ""
+msgstr "NT домен"
 
 msgid "NTP server candidates"
 msgstr "Список NTP-серверов"
 
 msgid "NTP sync time-out"
-msgstr ""
+msgstr "NTP синхронизация времени ожидания"
 
 msgid "Name"
 msgstr "Имя"
@@ -2115,7 +2151,7 @@ msgid "No DHCP Server configured for this interface"
 msgstr "DHCP-сервер не настроен для этого интерфейса"
 
 msgid "No NAT-T"
-msgstr ""
+msgstr "не NAT-T"
 
 msgid "No chains in this table"
 msgstr "Нет цепочек в этой таблице"
@@ -2151,16 +2187,16 @@ msgid "Noise"
 msgstr "Шум"
 
 msgid "Noise Margin (SNR)"
-msgstr ""
+msgstr "Noise Margin (SNR)"
 
 msgid "Noise:"
 msgstr "Шум:"
 
 msgid "Non Pre-emtive CRC errors (CRC_P)"
-msgstr ""
+msgstr "Non Pre-emtive CRC errors (CRC_P)"
 
 msgid "Non-wildcard"
-msgstr ""
+msgstr "Не использовать wildcard"
 
 msgid "None"
 msgstr "Нет"
@@ -2178,10 +2214,10 @@ msgid "Not connected"
 msgstr "Не подключено"
 
 msgid "Note: Configuration files will be erased."
-msgstr "Примечание: конфигурационные файлы будут стёрты."
+msgstr "Примечание: config файлы будут удалены."
 
 msgid "Note: interface name length"
-msgstr ""
+msgstr "Внимание: длина имени интерфейса"
 
 msgid "Notice"
 msgstr "Заметка"
@@ -2196,10 +2232,10 @@ msgid "OPKG-Configuration"
 msgstr "Настройка OPKG"
 
 msgid "Obfuscated Group Password"
-msgstr ""
+msgstr "Obfuscated Group Password"
 
 msgid "Obfuscated Password"
-msgstr ""
+msgstr "Obfuscated Password"
 
 msgid "Off-State Delay"
 msgstr "Задержка выключенного состояния"
@@ -2213,8 +2249,8 @@ msgid ""
 "<samp>eth0.1</samp>)."
 msgstr ""
 "На этой странице вы можете настроить сетевые интерфейсы. Вы можете "
-"объединить несколько интерфейсов в мост, выбрав опцию \"Объединить в мост\" "
-"и Ð²Ð²ÐµÐ´Ñ\8f Ñ\81пиÑ\81ок Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81ов, Ñ\80азделеннÑ\8bÑ\85 Ð¿Ñ\80обелами. Ð\92Ñ\8b Ñ\82акже Ð¼Ð¾Ð¶ÐµÑ\82е "
+"объединить несколько интерфейсов в мост, выбрав опцию 'Объединить в мост' и "
+"введя список интерфейсов, разделенных пробелами. Вы также можете "
 "использовать <abbr title=\"Виртуальные локальные сети\">VLAN</abbr>-"
 "обозначения вида <samp>ИНТЕРФЕЙС.НОМЕРVLAN</samp> (<abbr title=\"например"
 "\">напр.</abbr>: <samp>eth0.1</samp>)."
@@ -2229,7 +2265,7 @@ msgid "One or more fields contain invalid values!"
 msgstr "Одно или несколько полей содержат недопустимые значения!"
 
 msgid "One or more invalid/required values on tab"
-msgstr ""
+msgstr "Одно или несколько недопустимых / обязательных значений на странице"
 
 msgid "One or more required fields have no value!"
 msgstr "Одно или несколько обязательных полей не заполнены!"
@@ -2238,10 +2274,10 @@ msgid "Open list..."
 msgstr "Открыть список..."
 
 msgid "OpenConnect (CISCO AnyConnect)"
-msgstr ""
+msgstr "OpenConnect (CISCO AnyConnect)"
 
 msgid "Operating frequency"
-msgstr ""
+msgstr "Настройка частоты"
 
 msgid "Option changed"
 msgstr "Опция изменена"
@@ -2250,18 +2286,24 @@ msgid "Option removed"
 msgstr "Опция удалена"
 
 msgid "Optional"
-msgstr ""
+msgstr "Необязательно"
 
 msgid "Optional, specify to override default server (tic.sixxs.net)"
 msgstr ""
+"Необязательно. Укажите, чтобы переопределить дефолтный сервер (tic.sixxs."
+"net)."
 
 msgid "Optional, use when the SIXXS account has more than one tunnel"
 msgstr ""
+"Необязательно. Используется, когда учетная запись SIXXS имеет более одного "
+"туннеля."
 
 msgid ""
 "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
 "starting with <code>0x</code>."
 msgstr ""
+"Необязательно. 32-разрядная метка для исходящих зашифрованных пакетов. "
+"Введите значение в шестнадцатеричной форме, начиная с <code>0x</code>."
 
 msgid ""
 "Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
@@ -2269,36 +2311,46 @@ msgid ""
 "server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
 "for the interface."
 msgstr ""
+"Необязательно. Допустимые значения: 'eui64', 'random', фиксированное "
+"значение например '::1' или '::1:2'. Когда IPv6 префикс такой как - ('a:b:c:"
+"d::'), используйте суффикс на вроде ('::1') для этого IPv6 адреса ('a:b:c:"
+"d::1') для этого интерфейса."
 
 msgid ""
 "Optional. Base64-encoded preshared key. Adds in an additional layer of "
 "symmetric-key cryptography for post-quantum resistance."
 msgstr ""
+"Необязательно. Base64-шифрованный общий ключ. Добавляет дополнительный слой "
+"криптографии с симметричным ключом для пост-квантового сопротивления."
 
 msgid "Optional. Create routes for Allowed IPs for this peer."
 msgstr ""
+"Опционально. Создавать маршруты для разрешенных IP адресов для этого пира."
 
 msgid ""
 "Optional. Host of peer. Names are resolved prior to bringing up the "
 "interface."
-msgstr ""
+msgstr "Опционально. Хост пира. Имена разрешаются до появления интерфейса."
 
 msgid "Optional. Maximum Transmission Unit of tunnel interface."
-msgstr ""
+msgstr "Опционально. Максимальная единица передачи туннельного интерфейса."
 
 msgid "Optional. Port of peer."
-msgstr ""
+msgstr "Опционально. Порт пира."
 
 msgid ""
 "Optional. Seconds between keep alive messages. Default is 0 (disabled). "
 "Recommended value if this device is behind a NAT is 25."
 msgstr ""
+"Опционально. Кол-во секунд между сохранением сообщений. По умолчанию равно 0 "
+"(отключено). Рекомендуемое значение, если это устройство находится за NAT 25."
 
 msgid "Optional. UDP port used for outgoing and incoming packets."
 msgstr ""
+"Необязательно. Udp-порт, используемый для исходящих и входящих пакетов."
 
 msgid "Options"
-msgstr "Ð\9eпÑ\86ии"
+msgstr "Режим"
 
 msgid "Other:"
 msgstr "Другие:"
@@ -2310,7 +2362,7 @@ msgid "Outbound:"
 msgstr "Исходящий:"
 
 msgid "Output Interface"
-msgstr ""
+msgstr "Исходящий интерфейс"
 
 msgid "Override MAC address"
 msgstr "Назначить MAC-адрес"
@@ -2319,13 +2371,13 @@ msgid "Override MTU"
 msgstr "Назначить MTU"
 
 msgid "Override TOS"
-msgstr ""
+msgstr "Отвергать TOS"
 
 msgid "Override TTL"
-msgstr ""
+msgstr "Отвергать TTL"
 
 msgid "Override default interface name"
-msgstr ""
+msgstr "Назначить имя интерфейса по дефолту."
 
 msgid "Override the gateway in DHCP responses"
 msgstr "Назначить шлюз в ответах DHCP"
@@ -2341,7 +2393,7 @@ msgid "Override the table used for internal routes"
 msgstr "Назначить таблицу внутренних маршрутов"
 
 msgid "Overview"
-msgstr "Ð\9eбзоÑ\80"
+msgstr "Ð\93лавное Ð¼ÐµÐ½Ñ\8e"
 
 msgid "Owner"
 msgstr "Владелец"
@@ -2359,7 +2411,7 @@ msgid "PIN"
 msgstr "PIN"
 
 msgid "PMK R1 Push"
-msgstr ""
+msgstr "PMK R1 Push"
 
 msgid "PPP"
 msgstr "PPP"
@@ -2374,19 +2426,19 @@ msgid "PPPoE"
 msgstr "PPPoE"
 
 msgid "PPPoSSH"
-msgstr ""
+msgstr "PPPoSSH"
 
 msgid "PPtP"
-msgstr "PPTP"
+msgstr "PPtP"
 
 msgid "PSID offset"
-msgstr ""
+msgstr "PSID смещение"
 
 msgid "PSID-bits length"
-msgstr ""
+msgstr "PSID длина в битах"
 
 msgid "PTM/EFM (Packet Transfer Mode)"
-msgstr ""
+msgstr "PTM/EFM (Packet Transfer Mode)"
 
 msgid "Package libiwinfo required!"
 msgstr "Требуется пакет libiwinfo!"
@@ -2410,49 +2462,46 @@ msgid "Password authentication"
 msgstr "Аутентификация с помощью пароля"
 
 msgid "Password of Private Key"
-msgstr "Ð\9fаÑ\80олÑ\8c Ð¸Ð»Ð¸ Ð·Ð°ÐºÑ\80Ñ\8bÑ\82Ñ\8bй ÐºÐ»Ñ\8eÑ\87"
+msgstr "Ð\9fаÑ\80олÑ\8c Ðº Ð\9bиÑ\87номÑ\83 Ð\9aлÑ\8eÑ\87Ñ\83"
 
 msgid "Password of inner Private Key"
-msgstr ""
+msgstr "Пароль к внутреннему Личному Ключу"
 
 msgid "Password successfully changed!"
 msgstr "Пароль успешно изменён!"
 
 msgid "Password2"
-msgstr ""
+msgstr "Пароль2"
 
 msgid "Path to CA-Certificate"
-msgstr "Путь к центру сертификации"
+msgstr "Путь к CA-Сертификатам"
 
 msgid "Path to Client-Certificate"
-msgstr "Путь к клиентскому сертификату"
+msgstr "Путь к Client-Сертификатам"
 
 msgid "Path to Private Key"
-msgstr "Путь к личному ключу"
-
-msgid "Path to executable which handles the button event"
-msgstr "Путь к программе, обрабатывающей нажатие кнопки"
+msgstr "Путь к Личному Ключу"
 
 msgid "Path to inner CA-Certificate"
-msgstr ""
+msgstr "Путь к внутренним CA-Сертификатам"
 
 msgid "Path to inner Client-Certificate"
-msgstr ""
+msgstr "Путь к внутренним Client-Сертификатам"
 
 msgid "Path to inner Private Key"
-msgstr ""
+msgstr "Путь к внутреннему Личному Ключу"
 
 msgid "Peak:"
 msgstr "Пиковая:"
 
 msgid "Peer IP address to assign"
-msgstr ""
+msgstr "Пир IP адреса назначения"
 
 msgid "Peers"
-msgstr ""
+msgstr "Пиры"
 
 msgid "Perfect Forward Secrecy"
-msgstr ""
+msgstr "Perfect Forward Secrecy"
 
 msgid "Perform reboot"
 msgstr "Выполнить перезагрузку"
@@ -2461,7 +2510,7 @@ msgid "Perform reset"
 msgstr "Выполнить сброс"
 
 msgid "Persistent Keep Alive"
-msgstr ""
+msgstr "Постоянно держать включенным"
 
 msgid "Phy Rate:"
 msgstr "Скорость:"
@@ -2476,7 +2525,7 @@ msgid "Pkts."
 msgstr "Пакетов."
 
 msgid "Please enter your username and password."
-msgstr "Ð\9fожалÑ\83йÑ\81Ñ\82а, Ð²ведите логин и пароль."
+msgstr "Ð\92ведите логин и пароль."
 
 msgid "Policy"
 msgstr "Политика"
@@ -2488,41 +2537,41 @@ msgid "Port status:"
 msgstr "Состояние порта:"
 
 msgid "Power Management Mode"
-msgstr ""
+msgstr "Режим управления питанием"
 
 msgid "Pre-emtive CRC errors (CRCP_P)"
-msgstr ""
+msgstr "Pre-emtive CRC errors (CRCP_P)"
 
 msgid "Prefer LTE"
-msgstr ""
+msgstr "Предпочитать LTE"
 
 msgid "Prefer UMTS"
-msgstr ""
+msgstr "Предпочитать UMTS"
 
 msgid "Prefix Delegated"
-msgstr ""
+msgstr "Делегированный префикс"
 
 msgid "Preshared Key"
-msgstr ""
+msgstr "Предварительный ключ"
 
 msgid ""
 "Presume peer to be dead after given amount of LCP echo failures, use 0 to "
 "ignore failures"
 msgstr ""
 "Предполагать, что узел недоступен после указанного количества ошибок "
-"получения эхо-пакета LCP, введите 0 для игнорирования ошибок"
+"получения эхо-пакета LCP, введите 0 для игнорирования ошибок."
 
 msgid "Prevent listening on these interfaces."
-msgstr ""
+msgstr "Запретить прослушивание этих интерфейсов."
 
 msgid "Prevents client-to-client communication"
-msgstr "Не позволяет клиентам обмениваться друг с другом информацией"
+msgstr "Не позволяет клиентам обмениваться друг с другом информацией."
 
 msgid "Prism2/2.5/3 802.11b Wireless Controller"
 msgstr "Беспроводной 802.11b контроллер Prism2/2.5/3"
 
 msgid "Private Key"
-msgstr ""
+msgstr "Личный Ключ"
 
 msgid "Proceed"
 msgstr "Продолжить"
@@ -2531,7 +2580,7 @@ msgid "Processes"
 msgstr "Процессы"
 
 msgid "Profile"
-msgstr ""
+msgstr "Профиль"
 
 msgid "Prot."
 msgstr "Прот."
@@ -2558,25 +2607,27 @@ msgid "Pseudo Ad-Hoc (ahdemo)"
 msgstr "Псевдо Ad-Hoc (ahdemo)"
 
 msgid "Public Key"
-msgstr ""
+msgstr "Публичный Ключ"
 
 msgid "Public prefix routed to this device for distribution to clients."
 msgstr ""
+"Публичный префикс, направляемый на это устройство для распространения "
+"клиентам."
 
 msgid "QMI Cellular"
-msgstr ""
+msgstr "QMI сотовый"
 
 msgid "Quality"
 msgstr "Качество"
 
 msgid "R0 Key Lifetime"
-msgstr ""
+msgstr "R0 Key время жизни"
 
 msgid "R1 Key Holder"
-msgstr ""
+msgstr "R1 Key Holder"
 
 msgid "RFC3947 NAT-T mode"
-msgstr ""
+msgstr "RFC3947 NAT-T режим"
 
 msgid "RTS/CTS Threshold"
 msgstr "Порог RTS/CTS"
@@ -2585,7 +2636,7 @@ msgid "RX"
 msgstr "RX"
 
 msgid "RX Rate"
-msgstr "Скорость приёма"
+msgstr "RX скорость"
 
 msgid "RaLink 802.11%s Wireless Controller"
 msgstr "Беспроводной 802.11%s контроллер RaLink"
@@ -2613,7 +2664,7 @@ msgid ""
 "Configuration Protocol\">DHCP</abbr>-Server"
 msgstr ""
 "Читать <code>/etc/ethers</code> для настройки <abbr title=\"Протокол "
-"динамиÑ\87еÑ\81кой ÐºÐ¾Ð½Ñ\84игÑ\83Ñ\80аÑ\86ии Ñ\83зла\">DHCP</abbr>-Ñ\81еÑ\80веÑ\80а"
+"динамиÑ\87еÑ\81кой Ð½Ð°Ñ\81Ñ\82Ñ\80ойки Ñ\83зла\">DHCP</abbr>-Ñ\81еÑ\80веÑ\80а."
 
 msgid ""
 "Really delete this interface? The deletion cannot be undone!\\nYou might "
@@ -2634,13 +2685,12 @@ msgstr ""
 msgid "Really reset all changes?"
 msgstr "Действительно сбросить все изменения?"
 
-#, fuzzy
 msgid ""
 "Really shut down network?\\nYou might lose access to this device if you are "
 "connected via this interface."
 msgstr ""
-"Ð\94ейÑ\81Ñ\82виÑ\82елÑ\8cно Ð²Ñ\8bклÑ\8eÑ\87иÑ\82Ñ\8c Ñ\81еÑ\82Ñ\8c?\\nÐ\92Ñ\8b Ð¼Ð¾Ð¶ÐµÑ\82е Ð¿Ð¾Ñ\82еÑ\80Ñ\8fÑ\82Ñ\8c Ð´Ð¾Ñ\81Ñ\82Ñ\83п Ðº Ñ\8dÑ\82омÑ\83 "
-"устройству, если вы подключены через этот интерфейс."
+"Ð\94ейÑ\81Ñ\82виÑ\82елÑ\8cно Ð¾Ñ\82клÑ\8eÑ\87иÑ\82Ñ\8c Ñ\81еÑ\82Ñ\8c? Ð\92Ñ\8b Ð¼Ð¾Ð¶ÐµÑ\82е Ð¿Ð¾Ñ\82еÑ\80Ñ\8fÑ\82Ñ\8c Ð´Ð¾Ñ\81Ñ\82Ñ\83п Ðº Ñ\8dÑ\82омÑ\83 Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82вÑ\83, "
+"если вы подключены через этот интерфейс."
 
 msgid ""
 "Really shutdown interface \"%s\" ?\\nYou might lose access to this device if "
@@ -2668,7 +2718,7 @@ msgid "Realtime Wireless"
 msgstr "Беспроводная сеть в реальном времени"
 
 msgid "Reassociation Deadline"
-msgstr ""
+msgstr "Срок Реассоциации"
 
 msgid "Rebind protection"
 msgstr "Защита от DNS Rebinding"
@@ -2680,7 +2730,8 @@ msgid "Rebooting..."
 msgstr "Перезагрузка..."
 
 msgid "Reboots the operating system of your device"
-msgstr "Перезагрузить операционную систему вашего устройства"
+msgstr ""
+"Программная перезагрузка вашего устройства (выполнить команду 'reboot')."
 
 msgid "Receive"
 msgstr "Приём"
@@ -2689,7 +2740,7 @@ msgid "Receiver Antenna"
 msgstr "Приёмная антенна"
 
 msgid "Recommended. IP addresses of the WireGuard interface."
-msgstr ""
+msgstr "Рекомендуемый. IP адреса интерфейса WireGuard."
 
 msgid "Reconnect this interface"
 msgstr "Переподключить этот интерфейс"
@@ -2697,7 +2748,6 @@ msgstr "Переподключить этот интерфейс"
 msgid "Reconnecting interface"
 msgstr "Интерфейс переподключается"
 
-# References to firewall chains
 msgid "References"
 msgstr "Ссылки"
 
@@ -2705,7 +2755,7 @@ msgid "Relay"
 msgstr "Ретранслятор"
 
 msgid "Relay Bridge"
-msgstr "Мост-ретранслятор"
+msgstr "Мост-Ретранслятор"
 
 msgid "Relay between networks"
 msgstr "Ретранслятор между сетями"
@@ -2717,7 +2767,7 @@ msgid "Remote IPv4 address"
 msgstr "Удалённый IPv4-адрес"
 
 msgid "Remote IPv4 address or FQDN"
-msgstr ""
+msgstr "Удалённый IPv4-адрес или FQDN"
 
 msgid "Remove"
 msgstr "Удалить"
@@ -2729,44 +2779,51 @@ msgid "Replace entry"
 msgstr "Заменить запись"
 
 msgid "Replace wireless configuration"
-msgstr "Ð\97амениÑ\82Ñ\8c Ð±ÐµÑ\81пÑ\80оводнÑ\83Ñ\8e ÐºÐ¾Ð½Ñ\84игÑ\83Ñ\80аÑ\86иÑ\8e"
+msgstr "Ð\97амениÑ\82Ñ\8c Ð½Ð°Ñ\81Ñ\82Ñ\80ойкÑ\83 Ð±ÐµÑ\81пÑ\80оводного Ñ\81оединениÑ\8f"
 
 msgid "Request IPv6-address"
-msgstr ""
+msgstr "Запрос IPv6 адреса"
 
 msgid "Request IPv6-prefix of length"
-msgstr ""
+msgstr "Запрос IPv6 префикс длины"
 
 msgid "Require TLS"
-msgstr ""
+msgstr "Требовать TLS"
 
 msgid "Required"
-msgstr ""
+msgstr "Требовать"
 
 msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
 msgstr "Требуется для некоторых интернет-провайдеров"
 
 msgid "Required. Base64-encoded private key for this interface."
-msgstr ""
+msgstr "Требовать. Base64-шифрованный Личный Ключ для этого интерфейса."
 
 msgid "Required. Base64-encoded public key of peer."
-msgstr ""
+msgstr "Требовать. Base64-закодированный Публичный Ключ узла."
 
 msgid ""
 "Required. IP addresses and prefixes that this peer is allowed to use inside "
 "the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
 "routes through the tunnel."
 msgstr ""
+"Требовать. IP-адреса и префиксы, которые разрешено использовать этому "
+"одноранговому узлу внутри туннеля. Обычно туннельные IP-адреса однорангового "
+"узла и сети одноранговых маршрутов через туннель."
 
 msgid ""
 "Requires the 'full' version of wpad/hostapd and support from the wifi driver "
 "<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
 msgstr ""
+"Требуется 'полная' версия wpad/hostapd и поддержка со стороны WiFi драйвера  "
+"в  <br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
 
 msgid ""
 "Requires upstream supports DNSSEC; verify unsigned domain responses really "
 "come from unsigned domains"
 msgstr ""
+"Требуется восходящая поддержка DNSSEC; убедитесь, что ответы неподписанного "
+"домена - действительно поступают от неподписанных доменов."
 
 msgid "Reset"
 msgstr "Сбросить"
@@ -2802,22 +2859,22 @@ msgid "Root"
 msgstr "Корень"
 
 msgid "Root directory for files served via TFTP"
-msgstr "Корневая директория для TFTP"
+msgstr "Корневая директория для файлов сервера, вроде TFTP"
 
 msgid "Root preparation"
-msgstr ""
+msgstr "Подготовка корневой директории"
 
 msgid "Route Allowed IPs"
-msgstr ""
+msgstr "Маршрут разрешенный для IP адресов"
 
 msgid "Route type"
-msgstr ""
+msgstr "Тип маршрута"
 
 msgid "Routed IPv6 prefix for downstream interfaces"
-msgstr ""
+msgstr "Префикс маршрутизации IPv6 для нижестоящих интерфейсов"
 
 msgid "Router Advertisement-Service"
-msgstr ""
+msgstr "Доступные режимы работы"
 
 msgid "Router Password"
 msgstr "Пароль маршрутизатора"
@@ -2829,40 +2886,42 @@ msgid ""
 "Routes specify over which interface and gateway a certain host or network "
 "can be reached."
 msgstr ""
-"Маршрутизация служит для определения через какой интерфейс и шлюз можно "
-"доÑ\81Ñ\82иÑ\87Ñ\82Ñ\8c Ð¾Ð¿Ñ\80еделÑ\91нного хоста или сети."
+"Маршрутизация служит для определения через, какой интерфейс и шлюз можно "
+"доÑ\81Ñ\82иÑ\87Ñ\8c Ð¾Ð¿Ñ\80еделенного хоста или сети."
 
 msgid "Run a filesystem check before mounting the device"
-msgstr "Ð\9fÑ\80овеÑ\80Ñ\8fÑ\82Ñ\8c Ñ\84айловÑ\83Ñ\8e Ñ\81иÑ\81Ñ\82емÑ\83 Ð¿ÐµÑ\80ед Ð¼Ð¾Ð½Ñ\82иÑ\80ованием Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82ва"
+msgstr "Ð\9fÑ\80овеÑ\80Ñ\8fÑ\82Ñ\8c Ñ\84айловÑ\83Ñ\8e Ñ\81иÑ\81Ñ\82емÑ\83 Ð¿ÐµÑ\80ед Ð¼Ð¾Ð½Ñ\82иÑ\80ованием Ñ\80аздела"
 
 msgid "Run filesystem check"
-msgstr "Проверять файловую систему"
+msgstr "Проверить"
 
 msgid "SHA256"
-msgstr ""
+msgstr "SHA256"
 
 msgid ""
 "SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) "
 "use 6in4 instead"
 msgstr ""
+"SIXXS поддерживает только TIC,  для статических туннелей с использованием IP-"
+"протокола 41 (RFC4213) используется вместо 6in4."
 
 msgid "SIXXS-handle[/Tunnel-ID]"
-msgstr ""
+msgstr "SIXXS-управление[/Туннель-ID]"
 
 msgid "SNR"
-msgstr ""
+msgstr "SNR"
 
 msgid "SSH Access"
 msgstr "Доступ по SSH"
 
 msgid "SSH server address"
-msgstr ""
+msgstr "Адрес сервера SSH"
 
 msgid "SSH server port"
-msgstr ""
+msgstr "Порт сервера SSH"
 
 msgid "SSH username"
-msgstr ""
+msgstr "SSH логин"
 
 msgid "SSH-Keys"
 msgstr "SSH-ключи"
@@ -2886,10 +2945,10 @@ msgid "Scheduled Tasks"
 msgstr "Запланированные задания"
 
 msgid "Section added"
-msgstr "Секция добавлена"
+msgstr "Строки добавлены"
 
 msgid "Section removed"
-msgstr "Секция удалена"
+msgstr "Строки удалены"
 
 msgid "See \"mount\" manpage for details"
 msgstr "Для подробной информации обратитесь к справке по \"mount\" (man mount)"
@@ -2899,7 +2958,7 @@ msgid ""
 "conjunction with failure threshold"
 msgstr ""
 "Отправлять эхо-пакеты LCP с указанным интервалом (секунды), эффективно "
-"только в сочетании с порогом ошибок"
+"только в сочетании с порогом ошибок."
 
 msgid "Separate Clients"
 msgstr "Разделять клиентов"
@@ -2908,15 +2967,17 @@ msgid "Server Settings"
 msgstr "Настройки сервера"
 
 msgid "Server password"
-msgstr ""
+msgstr "Пароль доступа к серверу"
 
 msgid ""
 "Server password, enter the specific password of the tunnel when the username "
 "contains the tunnel ID"
 msgstr ""
+"Пароль сервера. Введите пароль из тоннеля, когда имя пользователя содержит "
+"ID туннеля."
 
 msgid "Server username"
-msgstr ""
+msgstr "Логин доступа к серверу"
 
 msgid "Service Name"
 msgstr "Имя службы"
@@ -2931,19 +2992,19 @@ msgid ""
 "Set interface properties regardless of the link carrier (If set, carrier "
 "sense events do not invoke hotplug handlers)."
 msgstr ""
+"Автоматически активировать соединение, при подключении в разъем кабеля."
 
-#, fuzzy
 msgid "Set up Time Synchronization"
-msgstr "Ð\9dаÑ\81Ñ\82Ñ\80оиÑ\82Ñ\8c Ñ\81инÑ\85Ñ\80онизаÑ\86иÑ\8e времени"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ñ\81инÑ\85Ñ\80онизаÑ\86ии времени"
 
 msgid "Setup DHCP Server"
 msgstr "Настроить сервер DHCP"
 
 msgid "Severely Errored Seconds (SES)"
-msgstr ""
+msgstr "Секунды с большим числом ошибок (SES)."
 
 msgid "Short GI"
-msgstr ""
+msgstr "Short GI"
 
 msgid "Show current backup file list"
 msgstr "Показать текущий список файлов резервной копии"
@@ -2958,7 +3019,7 @@ msgid "Signal"
 msgstr "Сигнал"
 
 msgid "Signal Attenuation (SATN)"
-msgstr ""
+msgstr "Затухание сигнала (SATN)"
 
 msgid "Signal:"
 msgstr "Сигнал:"
@@ -2967,7 +3028,7 @@ msgid "Size"
 msgstr "Размер"
 
 msgid "Size (.ipk)"
-msgstr ""
+msgstr "Размер (.ipk)"
 
 msgid "Skip"
 msgstr "Пропустить"
@@ -2985,7 +3046,7 @@ msgid "Software"
 msgstr "Программное обеспечение"
 
 msgid "Software VLAN"
-msgstr ""
+msgstr "Программное обеспечение VLAN"
 
 msgid "Some fields are invalid, cannot save values!"
 msgstr "Некоторые значения полей недопустимы, невозможно сохранить информацию!"
@@ -3002,7 +3063,7 @@ msgid ""
 "instructions."
 msgstr ""
 "К сожалению, автоматическое обновление не поддерживается, новая прошивка "
-"должна быть установлена вручную. Обратитесь к вики для получения конкретных "
+"должна быть установлена вручную. Обратитесь к wiki для получения конкретных "
 "инструкций для вашего устройства."
 
 msgid "Sort"
@@ -3012,48 +3073,49 @@ msgid "Source"
 msgstr "Источник"
 
 msgid "Source routing"
-msgstr ""
-
-msgid "Specifies the button state to handle"
-msgstr "Состояние кнопки, которое необходимо обработать"
+msgstr "маршрутизация от источника"
 
 msgid "Specifies the directory the device is attached to"
-msgstr "Ð\94иÑ\80екÑ\82оÑ\80иÑ\8f, Ðº ÐºÐ¾Ñ\82оÑ\80ой Ð¿Ñ\80иÑ\81оединено устройство"
+msgstr "Ð\9fапка, Ðº ÐºÐ¾Ñ\82оÑ\80ой Ð¼Ð¾Ð½Ñ\82иÑ\80Ñ\83еÑ\82Ñ\81Ñ\8f устройство"
 
 msgid "Specifies the listening port of this <em>Dropbear</em> instance"
-msgstr "Порт данного процесса <em>Dropbear</em>"
+msgstr "Порт данного процесса <em>Dropbear</em>."
 
 msgid ""
 "Specifies the maximum amount of failed ARP requests until hosts are presumed "
 "to be dead"
 msgstr ""
 "Максимальное количество неудачных запросов ARP, после которого узлы "
-"считаются отключенными"
+"считаются отключенными."
 
 msgid ""
 "Specifies the maximum amount of seconds after which hosts are presumed to be "
 "dead"
 msgstr ""
-"Максимальное количество секунд, после которого узлы считаются отключенными"
+"Максимальное количество секунд, после которого узлы считаются отключенными."
 
 msgid "Specify a TOS (Type of Service)."
-msgstr ""
+msgstr "Укажите TOS (Тип обслуживания)."
 
 msgid ""
 "Specify a TTL (Time to Live) for the encapsulating packet other than the "
 "default (64)."
 msgstr ""
+"Укажите значение TTL (Время Жизни) для инкапсуляции пакетов, по умолчанию "
+"(64)."
 
 msgid ""
 "Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
 "bytes)."
 msgstr ""
+"Укажите MTU (Максимальный Объем Данных), отличный от стандартного (1280 "
+"байт)."
 
 msgid "Specify the secret encryption key here."
 msgstr "Укажите закрытый ключ."
 
 msgid "Start"
-msgstr "Ð\97апÑ\83Ñ\81Ñ\82иÑ\82Ñ\8c"
+msgstr "СÑ\82аÑ\80Ñ\82"
 
 msgid "Start priority"
 msgstr "Приоритет"
@@ -3086,7 +3148,7 @@ msgstr ""
 "интерфейсов, в которых обслуживаются только клиенты с присвоенными адресами."
 
 msgid "Status"
-msgstr "Статус"
+msgstr "Состояние"
 
 msgid "Stop"
 msgstr "Остановить"
@@ -3098,16 +3160,16 @@ msgid "Submit"
 msgstr "Применить"
 
 msgid "Suppress logging"
-msgstr ""
+msgstr "Подавить логирование"
 
 msgid "Suppress logging of the routine operation of these protocols"
-msgstr ""
+msgstr "Подавить логирование стандартной работы этих протоколов."
 
 msgid "Swap"
-msgstr ""
+msgstr "Раздел подкачки (Swap)"
 
 msgid "Swap Entry"
-msgstr "Раздел Ð¿Ð¾Ð´ÐºÐ°Ñ\87ки"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка config Ñ\84айла fstab (/etc/config/fstab)"
 
 msgid "Switch"
 msgstr "Коммутатор"
@@ -3121,9 +3183,11 @@ msgstr "Коммутатор %q (%s)"
 msgid ""
 "Switch %q has an unknown topology - the VLAN settings might not be accurate."
 msgstr ""
+"Коммутатор %q имеет неизвестную топологию-настройки VLAN не могут быть "
+"точными."
 
 msgid "Switch VLAN"
-msgstr ""
+msgstr "Изменить VLAN"
 
 msgid "Switch protocol"
 msgstr "Изменить протокол"
@@ -3153,7 +3217,7 @@ msgid "TFTP Settings"
 msgstr "Настройки TFTP"
 
 msgid "TFTP server root"
-msgstr "Корень TFTP-сервера"
+msgstr "TFTP сервер root"
 
 msgid "TX"
 msgstr "TX"
@@ -3168,12 +3232,11 @@ msgid "Target"
 msgstr "Цель"
 
 msgid "Target network"
-msgstr ""
+msgstr "Целевая сеть"
 
 msgid "Terminate"
 msgstr "Завершить"
 
-#, fuzzy
 msgid ""
 "The <em>Device Configuration</em> section covers physical settings of the "
 "radio hardware such as channel, transmit power or antenna selection which "
@@ -3181,12 +3244,11 @@ msgid ""
 "multi-SSID capable). Per network settings like encryption or operation mode "
 "are grouped in the <em>Interface Configuration</em>."
 msgstr ""
-"Раздел <em>Конфигурация устройства</em> содержит физические настройки "
-"беспроводного оборудования, такие как канал, мощность передатчика или выбор "
-"антенны, которые являются общими для всех определённых беспроводных сетей "
-"(если оборудование поддерживает несколько SSID). Настройки отдельных сетей, "
-"такие как шифрование или режим работы, сгруппированы в разделе "
-"<em>Конфигурация интерфейса</em>."
+"Страница<em> 'Настройка устройства'</em> содержит физические настройки "
+"радиооборудования, такие как канал, мощность передачи или выбор антенны, "
+"которые совместно используются всеми определенными беспроводными сетями "
+"(если радиооборудование поддерживает несколько SSID). Параметры сети, такие "
+"как шифрование или режим работы, на странице <em>'Настройка сети'</em>."
 
 msgid ""
 "The <em>libiwinfo-lua</em> package is not installed. You must install this "
@@ -3199,10 +3261,12 @@ msgid ""
 "The HE.net endpoint update configuration changed, you must now use the plain "
 "username instead of the user ID!"
 msgstr ""
+"HE.net конфигурация обновления конечной точки изменена, теперь вы должны "
+"использовать простое имя пользователя вместо ID пользователя!"
 
 msgid ""
 "The IPv4 address or the fully-qualified domain name of the remote tunnel end."
-msgstr ""
+msgstr "IPv4-адрес или полное доменное имя удаленного конца туннеля."
 
 msgid ""
 "The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
@@ -3217,7 +3281,7 @@ msgstr ""
 "<code>_</code>"
 
 msgid "The configuration file could not be loaded due to the following error:"
-msgstr ""
+msgstr "Не удалось загрузить config файл из-за следующей ошибки:"
 
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
@@ -3239,29 +3303,28 @@ msgid ""
 "compare them with the original file to ensure data integrity.<br /> Click "
 "\"Proceed\" below to start the flash procedure."
 msgstr ""
-"Ð\9eбÑ\80аз Ð·Ð°Ð³Ñ\80Ñ\83жен. Ð\9fожалÑ\83йÑ\81Ñ\82а, Ñ\81равните размер файла и контрольную сумму, чтобы "
-"удостовериться в целостности данных.<br /> Нажмите \"Продолжить\", чтобы "
+"Ð\9eбÑ\80аз Ð·Ð°Ð³Ñ\80Ñ\83жен. Ð¡равните размер файла и контрольную сумму, чтобы "
+"удостовериться в целостности данных.<br /> Нажмите 'Продолжить', чтобы "
 "начать процедуру обновления прошивки."
 
 msgid "The following changes have been committed"
-msgstr "Ð\94аннÑ\8bе Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ\8f Ð±Ñ\8bли Ð¿Ñ\80имененÑ\8b"
+msgstr "Ð\92аÑ\88и Ð½Ð°Ñ\81Ñ\82Ñ\80ойки Ð±Ñ\8bли Ð¿Ñ\80имененÑ\8b."
 
 msgid "The following changes have been reverted"
-msgstr "Ð\94аннÑ\8bе Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ\8f Ð±Ñ\8bли Ð¾Ñ\82веÑ\80гнÑ\83Ñ\82Ñ\8b"
+msgstr "Ð\92аÑ\88и Ð½Ð°Ñ\81Ñ\82Ñ\80ойки Ð±Ñ\8bли Ð¾Ñ\82веÑ\80гнÑ\83Ñ\82Ñ\8b."
 
 msgid "The following rules are currently active on this system."
 msgstr "На данном устройстве активны следующие правила."
 
 msgid "The given network name is not unique"
-msgstr "Заданное имя сети не является уникальным"
+msgstr "Заданное имя сети не является уникальным."
 
-#, fuzzy
 msgid ""
 "The hardware is not multi-SSID capable and the existing configuration will "
 "be replaced if you proceed."
 msgstr ""
-"Ð\9eбоÑ\80Ñ\83дование Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ\80живаеÑ\82 Ð½ÐµÑ\81колÑ\8cко SSID, Ð¸, ÐµÑ\81ли Ð²Ñ\8b Ð¿Ñ\80одолжиÑ\82е, "
-"существующая конфигурация будет заменена."
+"Ð\90ппаÑ\80аÑ\82ное Ð¾Ð±ÐµÑ\81пеÑ\87ение Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ\80живаеÑ\82 Multi-SSID, Ð¸ Ñ\81Ñ\83Ñ\89еÑ\81Ñ\82вÑ\83Ñ\8eÑ\89ие Ð½Ð°Ñ\81Ñ\82Ñ\80ойки "
+"будут изаменены, если вы продолжите."
 
 msgid ""
 "The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
@@ -3273,7 +3336,7 @@ msgid "The length of the IPv6 prefix in bits"
 msgstr "Длина префикса IPv6 в битах"
 
 msgid "The local IPv4 address over which the tunnel is created (optional)."
-msgstr ""
+msgstr "Локальный адрес IPv4, по которому создается туннель (необязательно)."
 
 msgid ""
 "The network ports on this device can be combined to several <abbr title="
@@ -3285,40 +3348,40 @@ msgid ""
 msgstr ""
 "Сетевые порты этого устройства могут быть объединены в несколько <abbr title="
 "\"Virtual Local Area Network\">VLAN</abbr>ов, в которых компьютеры могут "
-"связываться напрямую между собой. <abbr title=\"Virtual Local Area Network"
+"связываться напрямую между собой. <abbr title=\"Виртуальные локальные сети"
 "\">VLAN</abbr>ы часто используются для разделения нескольких сетевых "
-"Ñ\81егменÑ\82ов. Ð\9eбÑ\8bÑ\87но Ð¿Ð¾ Ñ\83молÑ\87аниÑ\8e Ð¸Ñ\81полÑ\8cзÑ\83еÑ\82Ñ\81Ñ\8f Ð¾Ð´Ð¸Ð½ Ð²Ð¾Ñ\81Ñ\85одÑ\8fÑ\89ий Ð¿Ð¾Ñ\80Ñ\82 Ð´Ð»я "
-"подклÑ\8eÑ\87ениÑ\8f Ðº Ð²Ñ\8bÑ\81Ñ\88ей Ñ\80ангом Ñ\81еÑ\82и, Ð½Ð°Ð¿Ñ\80имеÑ\80 Ðº Ð¸Ð½Ñ\82еÑ\80неÑ\82Ñ\83 Ð¸Ð»Ð¸ Ðº Ð´Ñ\80Ñ\83гим Ð¿Ð¾Ñ\80Ñ\82ам "
-"локальной сети."
+"Ñ\81егменÑ\82ов. Ð\9eбÑ\8bÑ\87но Ð¿Ð¾ Ñ\83молÑ\87аниÑ\8e Ð¸Ñ\81полÑ\8cзÑ\83еÑ\82Ñ\81Ñ\8f Ð¾Ð´Ð¸Ð½ Ð¿Ð¾Ñ\80Ñ\82 Ð¸Ñ\81Ñ\85одÑ\8fÑ\89его Ñ\81оединения "
+"длÑ\8f Ð¿Ð¾Ð´ÐºÐ»Ñ\8eÑ\87ениÑ\8f Ðº Ð²Ñ\8bÑ\81Ñ\88ей Ñ\80ангом Ñ\81еÑ\82и, Ð½Ð°Ð¿Ñ\80имеÑ\80 Ðº Ð¸Ð½Ñ\82еÑ\80неÑ\82Ñ\83 Ð¸Ð»Ð¸ Ðº Ð´Ñ\80Ñ\83гим "
+"поÑ\80Ñ\82ам Ð»Ð¾ÐºÐ°Ð»Ñ\8cной Ñ\81еÑ\82и."
 
 msgid "The selected protocol needs a device assigned"
 msgstr "Для выбранного протокола необходимо задать устройство"
 
 msgid "The submitted security token is invalid or already expired!"
-msgstr ""
+msgstr "Представленный маркер безопасности недействителен или уже истек!"
 
 msgid ""
 "The system is erasing the configuration partition now and will reboot itself "
 "when finished."
-msgstr ""
-"Идёт удаление раздела конфигурации с последующей перезагрузкой сиситемы."
+msgstr "Идёт удаление настроек раздела с последующей перезагрузкой системы."
 
-#, fuzzy
 msgid ""
 "The system is flashing 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 ""
-"СиÑ\81Ñ\82ема Ð¾Ð±Ð½Ð¾Ð²Ð»Ñ\8fеÑ\82Ñ\81Ñ\8f.<br /> Ð\9dÐ\95 Ð\9eТÐ\9aÐ\9bЮЧÐ\90Ð\99ТÐ\95 Ð\9fÐ\98ТÐ\90Ð\9dÐ\98Ð\95 Ð£Ð¡Ð¢Ð Ð\9eÐ\99СТÐ\92Ð\90!<br /> Ð\9fодождиÑ\82е "
-"несколько минут перед тем, как попытаетесь заново соединиться. В зависимости "
-"оÑ\82 Ð²Ð°Ñ\88иÑ\85 Ð½Ð°Ñ\81Ñ\82Ñ\80оек, Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð²Ð°Ð¼ Ð¿Ð¾Ð½Ð°Ð´Ð¾Ð±Ð¸Ñ\82Ñ\81Ñ\8f Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ\82Ñ\8c Ð°Ð´Ñ\80еÑ\81 Ð²Ð°Ñ\88его "
-"компÑ\8cÑ\8eÑ\82еÑ\80а, Ñ\87Ñ\82обÑ\8b Ñ\81нова Ð¿Ð¾Ð»Ñ\83Ñ\87иÑ\82Ñ\8c Ð´Ð¾Ñ\81Ñ\82Ñ\83п Ðº Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82вÑ\83."
+"СейÑ\87аÑ\81 Ñ\81иÑ\81Ñ\82ема Ð¿ÐµÑ\80епÑ\80оÑ\88иваеÑ\82Ñ\81Ñ\8f.<br /> Ð\9dÐ\95 Ð\9eТÐ\9aÐ\9bЮЧÐ\90Ð\99ТÐ\95 Ð\9fÐ\98ТÐ\90Ð\9dÐ\98Ð\95 Ð£Ð¡Ð¢Ð Ð\9eÐ\99СТÐ\92Ð\90!<br /"
+"> Подождите несколько минут, прежде чем попытаться соединится. Возможно, "
+"поÑ\82Ñ\80ебÑ\83еÑ\82Ñ\81Ñ\8f Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ\82Ñ\8c Ð°Ð´Ñ\80еÑ\81 ÐºÐ¾Ð¼Ð¿Ñ\8cÑ\8eÑ\82еÑ\80а, Ñ\87Ñ\82обÑ\8b Ñ\81нова Ð¿Ð¾Ð´ÐºÐ»Ñ\8eÑ\87иÑ\82Ñ\81Ñ\8f Ðº Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82вÑ\83, "
+"в Ð·Ð°Ð²Ð¸Ñ\81имоÑ\81Ñ\82и Ð¾Ñ\82 Ð½Ð°Ñ\81Ñ\82Ñ\80оек."
 
 msgid ""
 "The tunnel end-point is behind NAT, defaults to disabled and only applies to "
 "AYIYA"
 msgstr ""
+"Конечная точка туннеля находится за NAT, по умолчанию отключена и "
+"применяется только к AYIYA."
 
 msgid ""
 "The uploaded image file does not contain a supported format. Make sure that "
@@ -3343,15 +3406,15 @@ msgid ""
 "There is no device assigned yet, please attach a network device in the "
 "\"Physical Settings\" tab"
 msgstr ""
-"УÑ\81Ñ\82Ñ\80ойÑ\81Ñ\82во Ð½Ðµ Ð½Ð°Ð·Ð½Ð°Ñ\87ено. Ð\9fожалÑ\83йÑ\81Ñ\82а, Ð½Ð°Ð·Ð½Ð°Ñ\87Ñ\8cÑ\82е Ñ\81еÑ\82евое Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82во Ð²Ð¾ Ð²ÐºÐ»Ð°Ð´ÐºÐµ "
-"\"Настройки канала\""
+"УÑ\81Ñ\82Ñ\80ойÑ\81Ñ\82во Ð½Ðµ Ð½Ð°Ð·Ð½Ð°Ñ\87ено. Ð\9dазнаÑ\87Ñ\8cÑ\82е Ñ\81еÑ\82евое Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82во Ð½Ð° Ñ\81Ñ\82Ñ\80аниÑ\86е 'Ð\9dаÑ\81Ñ\82Ñ\80ойки "
+"канала'."
 
 msgid ""
 "There is no password set on this router. Please configure a root password to "
 "protect the web interface and enable SSH."
 msgstr ""
-"Ð\9fаÑ\80олÑ\8c Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8f root Ð½Ðµ Ñ\83Ñ\81Ñ\82ановлен. Ð\9fожалÑ\83йÑ\81Ñ\82а, Ñ\83Ñ\81Ñ\82ановиÑ\82е Ð¿Ð°Ñ\80олÑ\8c, Ñ\87Ñ\82обÑ\8b "
-"заÑ\89иÑ\82иÑ\82Ñ\8c Ð²ÐµÐ±-инÑ\82еÑ\80Ñ\84ейÑ\81 Ð¸ Ð²ÐºÐ»Ñ\8eÑ\87иÑ\82Ñ\8c SSH."
+"Ð\9fаÑ\80олÑ\8c Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8f root Ð½Ðµ Ñ\83Ñ\81Ñ\82ановлен. Ð£Ñ\81Ñ\82ановиÑ\82е Ð¿Ð°Ñ\80олÑ\8c, Ñ\87Ñ\82обÑ\8b Ð·Ð°Ñ\89иÑ\82иÑ\82Ñ\8c "
+"веб-интерфейс и включить SSH."
 
 msgid "This IPv4 address of the relay"
 msgstr "IPv4-адрес ретранслятора"
@@ -3361,74 +3424,76 @@ msgid ""
 "'server=1.2.3.4' fordomain-specific or full upstream <abbr title=\"Domain "
 "Name System\">DNS</abbr> servers."
 msgstr ""
+"Этот файл может содержать такие строки, как 'server=/domain/1.2.3.4' или "
+"'server=1.2.3.4' fordomain-specific или полный upstream <abbr title=\"Domain "
+"Name System\">DNS</abbr> servers."
 
 msgid ""
 "This is a list of shell glob patterns for matching files and directories to "
 "include during sysupgrade. Modified files in /etc/config/ and certain other "
 "configurations are automatically preserved."
 msgstr ""
-"Это список шаблонов для соответствия файлов и директорий для сохранения при "
-"использовании sysupgrade. Изменённые файлы в /etc/config и некоторые другие "
-"конфигурации автоматически сохраняются."
+"Настройка данного config файла, позволит пользователю создать резервную "
+"копию своих настроек. Копируются config файлы из папки /etc/config и "
+"некоторые другие. При перепрошивке устройства sysupgrade-совместимым "
+"образом, вы сможете воспользоваться резервной копией своих настроек."
 
 msgid ""
 "This is either the \"Update Key\" configured for the tunnel or the account "
 "password if no update key has been configured"
 msgstr ""
+"Это либо \"Update Key\", настроенный для туннеля, либо пароль учетной "
+"записи, если ключ обновления не был настроен."
 
 msgid ""
 "This is the content of /etc/rc.local. Insert your own commands here (in "
 "front of 'exit 0') to execute them at the end of the boot process."
 msgstr ""
-"Это содержимое /etc/rc.local. Вы можете добавить свои команды (перед 'exit "
-"0'), чтобы выполнить их в конце загрузки."
+"Cодержимое config файла /etc/rc.local. Вы можете добавить свои команды "
+"(перед 'exit 0'), чтобы выполнить их во время загрузки устройства."
 
-# Maybe it usually ends with ::2?
 msgid ""
 "This is the local endpoint address assigned by the tunnel broker, it usually "
 "ends with <code>:2</code>"
 msgstr ""
 "Это локальный адрес, назначенный туннельным брокером, обычно заканчивается "
-"на <code>:2</code>"
+"на <code>:2</code>."
 
 msgid ""
 "This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
 "abbr> in the local network"
 msgstr ""
-"ЭÑ\82о ÐµÐ´Ð¸Ð½Ñ\81Ñ\82веннÑ\8bй <abbr title=\"Ð\9fÑ\80оÑ\82окол Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ\87еÑ\81кой ÐºÐ¾Ð½Ñ\84игÑ\83Ñ\80аÑ\86ии Ñ\83зла"
-"\">DHCP</abbr>-сервер в локальной сети"
+"ЭÑ\82о ÐµÐ´Ð¸Ð½Ñ\81Ñ\82веннÑ\8bй <abbr title=\"Ð\9fÑ\80оÑ\82окол Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ\87еÑ\81кой Ð½Ð°Ñ\81Ñ\82Ñ\80ойки Ñ\83зла\">DHCP</"
+"abbr>-сервер в локальной сети."
 
 msgid "This is the plain username for logging into the account"
-msgstr ""
+msgstr "Это просто имя пользователя, для входа в учетную запись."
 
 msgid ""
 "This is the prefix routed to you by the tunnel broker for use by clients"
 msgstr ""
+"Это префикс, направлен вам брокером туннелей для использования клиентами."
 
 msgid "This is the system crontab in which scheduled tasks can be defined."
 msgstr ""
-"ЭÑ\82о Ñ\82аблиÑ\86а cron (crontab), Ð² ÐºÐ¾Ñ\82оÑ\80ой Ð²Ñ\8b Ð¼Ð¾Ð¶ÐµÑ\82е Ð¾Ð¿Ñ\80еделиÑ\82Ñ\8c Ð·Ð°Ð¿Ð»Ð°Ð½Ð¸Ñ\80ованнÑ\8bе "
-"заданиÑ\8f."
+"Ð\9dа Ñ\81Ñ\82Ñ\80аниÑ\86е Ñ\81одеÑ\80жимое /etc/crontabs/root - Ñ\84айла (заданиÑ\8f crontab), Ð·Ð´ÐµÑ\81Ñ\8c "
+"вÑ\8b Ð¼Ð¾Ð¶ÐµÑ\82е Ð·Ð°Ð¿Ð»Ð°Ð½Ð¸Ñ\80оваÑ\82Ñ\8c Ð²Ð°Ñ\88и Ð·Ð°Ð´Ð°Ð½Ð¸Ñ\8f"
 
 msgid ""
 "This is usually the address of the nearest PoP operated by the tunnel broker"
-msgstr "Это адрес ближайшей точки присутствия туннельного брокера"
+msgstr "Это адрес ближайшей точки присутствия туннельного брокера."
 
 msgid ""
 "This list gives an overview over currently running system processes and "
 "their status."
-msgstr "Данный список содержит работающие процессы и их статус."
-
-msgid "This page allows the configuration of custom button actions"
-msgstr "Данная страница позволяет настроить обработку кнопок"
+msgstr "Страница содержит работающие процессы и их состояние."
 
 msgid "This page gives an overview over currently active network connections."
 msgstr ""
-"Данная страница содержит обзор всех активных на данный момент сетевых "
-"соединений."
+"Страница содержит список всех активных на данный момент сетевых соединений."
 
 msgid "This section contains no values yet"
-msgstr "ЭÑ\82а Ñ\81екÑ\86иÑ\8f Ð¿Ð¾ÐºÐ° Ð½Ðµ Ñ\81одеÑ\80жит значений"
+msgstr "ЭÑ\82и Ñ\81Ñ\82Ñ\80оки Ð½Ðµ Ñ\81одеÑ\80жат значений"
 
 msgid "Time Synchronization"
 msgstr "Синхронизация времени"
@@ -3443,11 +3508,11 @@ msgid ""
 "To restore configuration files, you can upload a previously generated backup "
 "archive here."
 msgstr ""
-"Чтобы восстановить файлы конфигурации, вы можете загрузить ранее созданный "
-"аÑ\80Ñ\85ив Ð·Ð´ÐµÑ\81Ñ\8c."
+"Чтобы восстановить config файлы, вы можете загрузить ранее созданный архив "
+"здесь."
 
 msgid "Tone"
-msgstr ""
+msgstr "Тон"
 
 msgid "Total Available"
 msgstr "Всего доступно"
@@ -3474,7 +3539,7 @@ msgid "Transmitter Antenna"
 msgstr "Передающая антенна"
 
 msgid "Trigger"
-msgstr "ТÑ\80иггеÑ\80"
+msgstr "Ð\9dазнаÑ\87ение"
 
 msgid "Trigger Mode"
 msgstr "Режим срабатывания"
@@ -3486,16 +3551,16 @@ msgid "Tunnel Interface"
 msgstr "Интерфейс туннеля"
 
 msgid "Tunnel Link"
-msgstr ""
+msgstr "Ссылка на туннель"
 
 msgid "Tunnel broker protocol"
-msgstr ""
+msgstr "Протокол посредника туннеля"
 
 msgid "Tunnel setup server"
-msgstr ""
+msgstr "Сервер настройки туннеля"
 
 msgid "Tunnel type"
-msgstr ""
+msgstr "Тип туннеля"
 
 msgid "Tx-Power"
 msgstr "Мощность передатчика"
@@ -3516,7 +3581,7 @@ msgid "USB Device"
 msgstr "USB-устройство"
 
 msgid "USB Ports"
-msgstr ""
+msgstr "USB порты"
 
 msgid "UUID"
 msgstr "UUID"
@@ -3525,7 +3590,7 @@ msgid "Unable to dispatch"
 msgstr "Невозможно обработать запрос для"
 
 msgid "Unavailable Seconds (UAS)"
-msgstr ""
+msgstr "Секунды неготовности (UAS)"
 
 msgid "Unknown"
 msgstr "Неизвестно"
@@ -3537,7 +3602,7 @@ msgid "Unmanaged"
 msgstr "Неуправляемый"
 
 msgid "Unmount"
-msgstr ""
+msgstr "Отмонтирован"
 
 msgid "Unsaved Changes"
 msgstr "Непринятые изменения"
@@ -3554,17 +3619,17 @@ msgid ""
 "compatible firmware image)."
 msgstr ""
 "Загрузите sysupgrade-совместимый образ, чтобы заменить текущую прошивку. "
-"УÑ\81Ñ\82ановиÑ\82е Ñ\84лажок \"СоÑ\85Ñ\80аниÑ\82Ñ\8c Ð½Ð°Ñ\81Ñ\82Ñ\80ойки\", Ñ\87Ñ\82обÑ\8b Ñ\81оÑ\85Ñ\80аниÑ\82Ñ\8c Ñ\82екÑ\83Ñ\89Ñ\83Ñ\8e "
-"конфигурацию (требуется совместимый образ прошивки)."
+"Ð\9fоÑ\81Ñ\82авÑ\8cÑ\82е Ð³Ð°Ð»Ð¾Ñ\87кÑ\83 'СоÑ\85Ñ\80аниÑ\82Ñ\8c Ð½Ð°Ñ\81Ñ\82Ñ\80ойки', Ñ\87Ñ\82обÑ\8b Ñ\81оÑ\85Ñ\80аниÑ\82Ñ\8c Ñ\82екÑ\83Ñ\89ие config "
+"файлы (требуется совместимый образ прошивки)."
 
 msgid "Upload archive..."
-msgstr "Ð\97агÑ\80Ñ\83зиÑ\82Ñ\8c Ð°Ñ\80Ñ\85ив..."
+msgstr "Ð\97агÑ\80Ñ\83зка Ð°Ñ\80Ñ\85ива..."
 
 msgid "Uploaded File"
 msgstr "Загруженный файл"
 
 msgid "Uptime"
-msgstr "Время работы"
+msgstr "Время загрузки"
 
 msgid "Use <code>/etc/ethers</code>"
 msgstr "Использовать <code>/etc/ethers</code>"
@@ -3585,16 +3650,16 @@ msgid "Use TTL on tunnel interface"
 msgstr "Использовать TTL на интерфейсе туннеля"
 
 msgid "Use as external overlay (/overlay)"
-msgstr ""
+msgstr "Использовать как внешний overlay (/overlay)"
 
 msgid "Use as root filesystem (/)"
-msgstr ""
+msgstr "Использовать как корень (/)"
 
 msgid "Use broadcast flag"
 msgstr "Использовать широковещательный флаг"
 
 msgid "Use builtin IPv6-management"
-msgstr ""
+msgstr "Использовать встроенный IPv6-менеджмент"
 
 msgid "Use custom DNS servers"
 msgstr "Использовать собственные DNS-серверы"
@@ -3615,10 +3680,12 @@ msgid ""
 "requesting host. The optional <em>Lease time</em> can be used to set non-"
 "standard host-specific lease time, e.g. 12h, 3d or infinite."
 msgstr ""
-"Нажмите кнопку <em>Добавить</em>, чтобы добавить новую запись аренды. "
-"<em>MAC-адрес</em> идентифицирует хост, <em>IPv4-адрес</em> указывает "
-"фиксированный адрес, а <em>Имя хоста</em> присваивается в качестве "
-"символьного имени для запрашивающего хоста."
+"Нажмите кнопку <em>'Добавить'</em>, чтобы добавить новую запись аренды. "
+"<em>'MAC-адрес'</em> идентифицирует хост, <em>'IPv4-адрес'</em> указывает "
+"фиксированный адрес, а <em>'Имя хоста'</em> присваивается в качестве "
+"символьного имени для запрашивающего хоста. Необязательно <em>'Время аренды "
+"адреса'</em> может быть использовано для того, чтобы установить нештатное, "
+"хозяин-специфическое время аренды, например 12h, 3d или инфинитное."
 
 msgid "Used"
 msgstr "Использовано"
@@ -3630,12 +3697,14 @@ msgid ""
 "Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not "
 "needed with normal WPA(2)-PSK."
 msgstr ""
+"Используется для двух различных целей: RADIUS NAS ID и 802.11r R0KH-ID. Не "
+"используется с обычным WPA(2)-PSK."
 
 msgid "User certificate (PEM encoded)"
-msgstr ""
+msgstr "Сертификат пользователя (PEM encoded)"
 
 msgid "User key (PEM encoded)"
-msgstr ""
+msgstr "Ключ пользователя (PEM encoded)"
 
 msgid "Username"
 msgstr "Имя пользователя"
@@ -3644,7 +3713,7 @@ msgid "VC-Mux"
 msgstr "VC-Mux"
 
 msgid "VDSL"
-msgstr ""
+msgstr "VDSL"
 
 msgid "VLANs on %q"
 msgstr "VLANы на %q"
@@ -3653,35 +3722,35 @@ msgid "VLANs on %q (%s)"
 msgstr "VLANы на %q (%s)"
 
 msgid "VPN Local address"
-msgstr ""
+msgstr "Локальный адрес VPN"
 
 msgid "VPN Local port"
-msgstr ""
+msgstr "Локальный порт VPN"
 
 msgid "VPN Server"
 msgstr "Сервер VPN"
 
 msgid "VPN Server port"
-msgstr ""
+msgstr "Порт VPN сервера"
 
 msgid "VPN Server's certificate SHA1 hash"
-msgstr ""
+msgstr "Сертификат SHA1 hash VPN сервера"
 
 msgid "VPNC (CISCO 3000 (and others) VPN)"
-msgstr ""
+msgstr "VPNC (CISCO 3000 (and others) VPN)"
 
 msgid "Vendor"
-msgstr ""
+msgstr "Производитель (Vendor)"
 
 msgid "Vendor Class to send when requesting DHCP"
 msgstr ""
 "Класс производителя (Vendor class), который отправлять при DHCP-запросах"
 
 msgid "Verbose"
-msgstr ""
+msgstr "Verbose"
 
 msgid "Verbose logging by aiccu daemon"
-msgstr ""
+msgstr "Verbose ведение журнала демоном aiccu"
 
 msgid "Verify"
 msgstr "Проверить"
@@ -3717,6 +3786,8 @@ msgstr ""
 msgid ""
 "Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)"
 msgstr ""
+"Задать время ожидания синхронизации NTP, установка значения - 0, отключает "
+"ожидание (необязательно)."
 
 msgid "Waiting for changes to be applied..."
 msgstr "Ожидание применения изменений..."
@@ -3725,30 +3796,31 @@ msgid "Waiting for command to complete..."
 msgstr "Ожидание завершения выполнения команды..."
 
 msgid "Waiting for device..."
-msgstr ""
+msgstr "Ожидание подключения устройства..."
 
 msgid "Warning"
 msgstr "Внимание"
 
 msgid "Warning: There are unsaved changes that will get lost on reboot!"
 msgstr ""
+"Внимание: изменения не были сохранены и будут утеряны при перезагрузке!"
 
 msgid ""
 "When using a PSK, the PMK can be generated locally without inter AP "
 "communications"
-msgstr ""
+msgstr "При использовании PSK, PMK может быть создан локально, без AP в связи."
 
 msgid "Whether to create an IPv6 default route over the tunnel"
-msgstr ""
+msgstr "Создание маршрута по умолчанию IPv6 через туннель."
 
 msgid "Whether to route only packets from delegated prefixes"
-msgstr ""
+msgstr "Маршрутизация только пакетов из делегированных префиксов."
 
 msgid "Width"
-msgstr ""
+msgstr "Ширина"
 
 msgid "WireGuard VPN"
-msgstr ""
+msgstr "WireGuard VPN"
 
 msgid "Wireless"
 msgstr "Wi-Fi"
@@ -3760,7 +3832,7 @@ msgid "Wireless Network"
 msgstr "Беспроводная сеть"
 
 msgid "Wireless Overview"
-msgstr "Ð\9eбзоÑ\80 беспроводных сетей"
+msgstr "СпиÑ\81ок беспроводных сетей"
 
 msgid "Wireless Security"
 msgstr "Безопасность беспроводной сети"
@@ -3784,10 +3856,10 @@ msgid "Wireless shut down"
 msgstr "Выключение беспроводной сети"
 
 msgid "Write received DNS requests to syslog"
-msgstr "Записывать полученные DNS-запросы в системный журнал"
+msgstr "Записывать полученные DNS-запросы в системный журнал."
 
 msgid "Write system log to file"
-msgstr ""
+msgstr "Писать логи в файл"
 
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
@@ -3810,6 +3882,9 @@ msgid ""
 "upgrade it to at least version 7 or use another browser like Firefox, Opera "
 "or Safari."
 msgstr ""
+"Ваш Internet Explorer слишком стар, чтобы отобразить эту страницу правильно. "
+"Обновите его до версии 7 или используйте другой браузер, например Firefox, "
+"Opera или Safari."
 
 msgid "any"
 msgstr "любой"
@@ -3827,30 +3902,29 @@ msgid "create:"
 msgstr "создать:"
 
 msgid "creates a bridge over specified interface(s)"
-msgstr "создаёт мост для выбранных сетевых интерфейсов"
+msgstr "Создаёт мост для выбранных сетевых интерфейсов."
 
 msgid "dB"
-msgstr "дБ"
+msgstr "dB"
 
 msgid "dBm"
-msgstr "дБм"
+msgstr "dBm"
 
 msgid "disable"
-msgstr "вÑ\8bклÑ\8eÑ\87ено"
+msgstr "вÑ\8bклÑ\8eÑ\87иÑ\82Ñ\8c"
 
 msgid "disabled"
-msgstr ""
+msgstr "выключено"
 
 msgid "expired"
 msgstr "истекло"
 
-# убил бы
 msgid ""
 "file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
 "abbr>-leases will be stored"
 msgstr ""
-"файл, где хранятся арендованные <abbr title=\"Протокол динамической "
-"конÑ\84игÑ\83Ñ\80аÑ\86ии Ñ\83зла\">DHCP</abbr>-адÑ\80еÑ\81а"
+"Файл, где хранятся арендованные <abbr title=\"Протокол динамической "
+"наÑ\81Ñ\82Ñ\80ойки Ñ\83зла\">DHCP</abbr>-адÑ\80еÑ\81а."
 
 msgid "forward"
 msgstr "перенаправить"
@@ -3868,7 +3942,7 @@ msgid "hidden"
 msgstr "скрытый"
 
 msgid "hybrid mode"
-msgstr ""
+msgstr "гибридный режим"
 
 msgid "if target is a network"
 msgstr "если сеть"
@@ -3877,22 +3951,22 @@ msgid "input"
 msgstr "ввод"
 
 msgid "kB"
-msgstr "кБ"
+msgstr "kB"
 
 msgid "kB/s"
-msgstr "кБ/с"
+msgstr "kB/s"
 
 msgid "kbit/s"
-msgstr "кбит/с"
+msgstr "kbit/s"
 
 msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
-msgstr "локалÑ\8cнÑ\8bй <abbr title=\"СлÑ\83жба Ð´Ð¾Ð¼ÐµÐ½Ð½Ñ\8bÑ\85 Ð¸Ð¼Ñ\91н\">DNS</abbr>-Ñ\84айл"
+msgstr "Ð\9bокалÑ\8cнÑ\8bй <abbr title=\"СлÑ\83жба Ð´Ð¾Ð¼ÐµÐ½Ð½Ñ\8bÑ\85 Ð¸Ð¼Ñ\91н\">DNS</abbr>-Ñ\84айл."
 
 msgid "minimum 1280, maximum 1480"
-msgstr ""
+msgstr "минимум 1280, максимум 1480"
 
 msgid "minutes"
-msgstr ""
+msgstr "минуты"
 
 msgid "no"
 msgstr "нет"
@@ -3904,7 +3978,7 @@ msgid "none"
 msgstr "ничего"
 
 msgid "not present"
-msgstr ""
+msgstr "не существует"
 
 msgid "off"
 msgstr "выключено"
@@ -3913,34 +3987,34 @@ msgid "on"
 msgstr "включено"
 
 msgid "open"
-msgstr "открытая"
+msgstr "открыть"
 
 msgid "overlay"
-msgstr ""
+msgstr "overlay"
 
 msgid "relay mode"
-msgstr ""
+msgstr "режим передачи"
 
 msgid "routed"
 msgstr "маршрутизируемый"
 
 msgid "server mode"
-msgstr ""
+msgstr "режим сервера"
 
 msgid "stateful-only"
-msgstr ""
+msgstr "stateful-only"
 
 msgid "stateless"
-msgstr ""
+msgstr "stateless"
 
 msgid "stateless + stateful"
-msgstr ""
+msgstr "stateless + stateful"
 
 msgid "tagged"
 msgstr "с тегом"
 
 msgid "time units (TUs / 1.024 ms) [1000-65535]"
-msgstr ""
+msgstr "единицы измерения времени (TUs / 1.024 ms) [1000-65535]"
 
 msgid "unknown"
 msgstr "неизвестный"
@@ -3962,77 +4036,3 @@ msgstr "да"
 
 msgid "« Back"
 msgstr "« Назад"
-
-#~ msgid "Leasetime"
-#~ msgstr "Время аренды"
-
-#, fuzzy
-#~ msgid "automatic"
-#~ msgstr "статический"
-
-#~ msgid "AR Support"
-#~ msgstr "Поддержка AR"
-
-#~ msgid "Atheros 802.11%s Wireless Controller"
-#~ msgstr "Беспроводной 802.11%s контроллер Atheros"
-
-#~ msgid "Background Scan"
-#~ msgstr "Фоновое сканирование"
-
-#~ msgid "Compression"
-#~ msgstr "Сжатие"
-
-#~ msgid "Disable HW-Beacon timer"
-#~ msgstr "Отключить таймер HW-Beacon"
-
-#~ msgid "Do not send probe responses"
-#~ msgstr "Не посылать тестовые ответы"
-
-#~ msgid "Fast Frames"
-#~ msgstr "Быстрые кадры"
-
-#~ msgid "Maximum Rate"
-#~ msgstr "Максимальная скорость"
-
-#~ msgid "Minimum Rate"
-#~ msgstr "Минимальная скорость"
-
-#~ msgid "Multicast Rate"
-#~ msgstr "Скорость групповой передачи"
-
-#~ msgid "Outdoor Channels"
-#~ msgstr "Внешние каналы"
-
-#~ msgid "Regulatory Domain"
-#~ msgstr "Нормативная зона"
-
-#~ msgid "Separate WDS"
-#~ msgstr "Отдельный WDS"
-
-#~ msgid "Static WDS"
-#~ msgstr "Статический WDS"
-
-#~ msgid "Turbo Mode"
-#~ msgstr "Турбо-режим"
-
-#~ msgid "XR Support"
-#~ msgstr "Поддержка XR"
-
-#~ msgid "An additional network will be created if you leave this unchecked."
-#~ msgstr ""
-#~ "Если вы не выберите эту опцию, то будет создана дополнительная сеть."
-
-#~ msgid "Join Network: Settings"
-#~ msgstr "Подключение к сети: настройки"
-
-#~ msgid "CPU"
-#~ msgstr "ЦП"
-
-#~ msgid "Port %d"
-#~ msgstr "Порт %d"
-
-#~ msgid "Port %d is untagged in multiple VLANs!"
-#~ msgstr "Порт %d нетегирован в нескольких VLANах!"
-
-#~ msgid "VLAN Interface"
-#~ msgstr "Интерфейс VLAN"
index 82fd389..3a530ec 100644 (file)
@@ -204,9 +204,6 @@ msgstr ""
 msgid "Access Point"
 msgstr ""
 
-msgid "Action"
-msgstr ""
-
 msgid "Actions"
 msgstr ""
 
@@ -278,6 +275,9 @@ msgstr ""
 msgid "Allow all except listed"
 msgstr ""
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr ""
 
@@ -543,9 +543,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr ""
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -576,7 +573,7 @@ msgstr ""
 msgid "Check"
 msgstr ""
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -1199,6 +1196,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr ""
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr ""
 
@@ -1282,9 +1282,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr ""
-
 msgid "Hang Up"
 msgstr ""
 
@@ -1859,9 +1856,6 @@ msgstr ""
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr ""
 
-msgid "Maximum hold time"
-msgstr ""
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1879,10 +1873,10 @@ msgstr ""
 msgid "Memory usage (%)"
 msgstr ""
 
-msgid "Metric"
+msgid "Mesh Id"
 msgstr ""
 
-msgid "Minimum hold time"
+msgid "Metric"
 msgstr ""
 
 msgid "Mirror monitor port"
@@ -2321,9 +2315,6 @@ msgstr ""
 msgid "Path to Private Key"
 msgstr ""
 
-msgid "Path to executable which handles the button event"
-msgstr ""
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2881,9 +2872,6 @@ msgstr ""
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr ""
-
 msgid "Specifies the directory the device is attached to"
 msgstr ""
 
@@ -3226,9 +3214,6 @@ msgid ""
 "their status."
 msgstr ""
 
-msgid "This page allows the configuration of custom button actions"
-msgstr ""
-
 msgid "This page gives an overview over currently active network connections."
 msgstr ""
 
index 3360ccb..dd8aa2f 100644 (file)
@@ -212,9 +212,6 @@ msgstr ""
 msgid "Access Point"
 msgstr "Accesspunkt"
 
-msgid "Action"
-msgstr "Åtgärd"
-
 msgid "Actions"
 msgstr "Åtgärder"
 
@@ -287,6 +284,9 @@ msgstr "Tillåt <abbr title=\"Secure Shell\">SSH</abbr> lösenordsautentisering"
 msgid "Allow all except listed"
 msgstr "Tillåt alla utom listade"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Tillåt enbart listade"
 
@@ -554,9 +554,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr "Knappar"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 "CA-certifikat; om tom så kommer den att sparas efter första anslutningen."
@@ -588,7 +585,7 @@ msgstr "Kanal"
 msgid "Check"
 msgstr "Kontrollera"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr "Kontrollera filsystemen innan de monteras"
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -1219,6 +1216,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr ""
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr "Vidarebefordringsläge"
 
@@ -1302,9 +1302,6 @@ msgstr "HE.net-användarnamn"
 msgid "HT mode (802.11n)"
 msgstr "HT-läge (802.11n)"
 
-msgid "Handler"
-msgstr ""
-
 msgid "Hang Up"
 msgstr "Lägg på"
 
@@ -1880,9 +1877,6 @@ msgstr ""
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr ""
 
-msgid "Maximum hold time"
-msgstr ""
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1900,12 +1894,12 @@ msgstr "Minne"
 msgid "Memory usage (%)"
 msgstr "Minnesanvändning (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Metrisk"
 
-msgid "Minimum hold time"
-msgstr ""
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2342,9 +2336,6 @@ msgstr "Genväg till klient-certifikat"
 msgid "Path to Private Key"
 msgstr "Genväg till privat nyckel"
 
-msgid "Path to executable which handles the button event"
-msgstr ""
-
 msgid "Path to inner CA-Certificate"
 msgstr "Genväg till det inre CA-certifikatet"
 
@@ -2904,9 +2895,6 @@ msgstr "Källa"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr ""
-
 msgid "Specifies the directory the device is attached to"
 msgstr ""
 
@@ -3251,9 +3239,6 @@ msgid ""
 "their status."
 msgstr ""
 
-msgid "This page allows the configuration of custom button actions"
-msgstr ""
-
 msgid "This page gives an overview over currently active network connections."
 msgstr ""
 
@@ -3779,3 +3764,9 @@ msgstr "ja"
 
 msgid "« Back"
 msgstr "« Bakåt"
+
+#~ msgid "Action"
+#~ msgstr "Åtgärd"
+
+#~ msgid "Buttons"
+#~ msgstr "Knappar"
index 1c21925..0278ee8 100644 (file)
@@ -197,9 +197,6 @@ msgstr ""
 msgid "Access Point"
 msgstr ""
 
-msgid "Action"
-msgstr ""
-
 msgid "Actions"
 msgstr ""
 
@@ -271,6 +268,9 @@ msgstr ""
 msgid "Allow all except listed"
 msgstr ""
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr ""
 
@@ -536,9 +536,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr ""
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -569,7 +566,7 @@ msgstr ""
 msgid "Check"
 msgstr ""
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -1192,6 +1189,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr ""
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr ""
 
@@ -1275,9 +1275,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr ""
-
 msgid "Hang Up"
 msgstr ""
 
@@ -1852,9 +1849,6 @@ msgstr ""
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr ""
 
-msgid "Maximum hold time"
-msgstr ""
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1872,10 +1866,10 @@ msgstr ""
 msgid "Memory usage (%)"
 msgstr ""
 
-msgid "Metric"
+msgid "Mesh Id"
 msgstr ""
 
-msgid "Minimum hold time"
+msgid "Metric"
 msgstr ""
 
 msgid "Mirror monitor port"
@@ -2314,9 +2308,6 @@ msgstr ""
 msgid "Path to Private Key"
 msgstr ""
 
-msgid "Path to executable which handles the button event"
-msgstr ""
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2874,9 +2865,6 @@ msgstr ""
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr ""
-
 msgid "Specifies the directory the device is attached to"
 msgstr ""
 
@@ -3219,9 +3207,6 @@ msgid ""
 "their status."
 msgstr ""
 
-msgid "This page allows the configuration of custom button actions"
-msgstr ""
-
 msgid "This page gives an overview over currently active network connections."
 msgstr ""
 
index 334ef00..c4612d7 100644 (file)
@@ -213,9 +213,6 @@ msgstr ""
 msgid "Access Point"
 msgstr "Erişim Noktası"
 
-msgid "Action"
-msgstr "Eylem"
-
 msgid "Actions"
 msgstr "Eylemler"
 
@@ -291,6 +288,9 @@ msgstr ""
 msgid "Allow all except listed"
 msgstr "Listelenenlerin haricindekilere izin ver"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Yanlızca listelenenlere izin ver"
 
@@ -556,9 +556,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr ""
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -589,7 +586,7 @@ msgstr ""
 msgid "Check"
 msgstr ""
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -1212,6 +1209,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr ""
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr ""
 
@@ -1295,9 +1295,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr ""
-
 msgid "Hang Up"
 msgstr ""
 
@@ -1872,9 +1869,6 @@ msgstr ""
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr ""
 
-msgid "Maximum hold time"
-msgstr ""
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1892,10 +1886,10 @@ msgstr ""
 msgid "Memory usage (%)"
 msgstr ""
 
-msgid "Metric"
+msgid "Mesh Id"
 msgstr ""
 
-msgid "Minimum hold time"
+msgid "Metric"
 msgstr ""
 
 msgid "Mirror monitor port"
@@ -2334,9 +2328,6 @@ msgstr ""
 msgid "Path to Private Key"
 msgstr ""
 
-msgid "Path to executable which handles the button event"
-msgstr ""
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2894,9 +2885,6 @@ msgstr ""
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr ""
-
 msgid "Specifies the directory the device is attached to"
 msgstr ""
 
@@ -3239,9 +3227,6 @@ msgid ""
 "their status."
 msgstr ""
 
-msgid "This page allows the configuration of custom button actions"
-msgstr ""
-
 msgid "This page gives an overview over currently active network connections."
 msgstr ""
 
@@ -3762,6 +3747,9 @@ msgstr "evet"
 msgid "« Back"
 msgstr "« Geri"
 
+#~ msgid "Action"
+#~ msgstr "Eylem"
+
 #~ msgid "AR Support"
 #~ msgstr "AR Desteği"
 
index de7259b..f77afc6 100644 (file)
@@ -236,9 +236,6 @@ msgstr "Концентратор доступу"
 msgid "Access Point"
 msgstr "Точка доступу"
 
-msgid "Action"
-msgstr "Дія"
-
 msgid "Actions"
 msgstr "Дії"
 
@@ -312,6 +309,9 @@ msgstr ""
 msgid "Allow all except listed"
 msgstr "Дозволити всі, крім зазначених"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Дозволити тільки зазначені"
 
@@ -583,9 +583,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr "Кнопки"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -616,7 +613,7 @@ msgstr "Канал"
 msgid "Check"
 msgstr "Перевірити"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -1275,6 +1272,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr "Спрямовувати широкомовний трафік"
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr "Режим спрямовування"
 
@@ -1358,9 +1358,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr "Обробник"
-
 msgid "Hang Up"
 msgstr "Призупинити"
 
@@ -1966,9 +1963,6 @@ msgstr "Максимально допустимий розмір UDP-пакет
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr "Максимальний час очікування готовності модему (секунд)"
 
-msgid "Maximum hold time"
-msgstr "Максимальний час утримування"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1986,12 +1980,12 @@ msgstr "Пам'ять"
 msgid "Memory usage (%)"
 msgstr "Використання пам'яті, %"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Метрика"
 
-msgid "Minimum hold time"
-msgstr "Мінімальний час утримування"
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2441,9 +2435,6 @@ msgstr "Шлях до сертифікату клієнта"
 msgid "Path to Private Key"
 msgstr "Шлях до закритого ключа"
 
-msgid "Path to executable which handles the button event"
-msgstr "Шлях до програми, яка обробляє натискання кнопки"
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -3027,9 +3018,6 @@ msgstr "Джерело"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr "Визначає стан кнопки для обробки"
-
 msgid "Specifies the directory the device is attached to"
 msgstr "Визначає каталог, до якого приєднаний пристрій"
 
@@ -3437,9 +3425,6 @@ msgstr ""
 "У цьому списку наведені працюючі на даний момент системні процеси та їх "
 "статус."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr "Ця сторінка дозволяє настроїти нетипові дії кнопки"
-
 msgid "This page gives an overview over currently active network connections."
 msgstr "Ця сторінка надає огляд поточних активних мережних підключень."
 
@@ -3979,6 +3964,30 @@ msgstr "так"
 msgid "« Back"
 msgstr "« Назад"
 
+#~ msgid "Action"
+#~ msgstr "Дія"
+
+#~ msgid "Buttons"
+#~ msgstr "Кнопки"
+
+#~ msgid "Handler"
+#~ msgstr "Обробник"
+
+#~ msgid "Maximum hold time"
+#~ msgstr "Максимальний час утримування"
+
+#~ msgid "Minimum hold time"
+#~ msgstr "Мінімальний час утримування"
+
+#~ msgid "Path to executable which handles the button event"
+#~ msgstr "Шлях до програми, яка обробляє натискання кнопки"
+
+#~ msgid "Specifies the button state to handle"
+#~ msgstr "Визначає стан кнопки для обробки"
+
+#~ msgid "This page allows the configuration of custom button actions"
+#~ msgstr "Ця сторінка дозволяє настроїти нетипові дії кнопки"
+
 #~ msgid "Leasetime"
 #~ msgstr "Час оренди"
 
index 48f6b73..b8dd776 100644 (file)
@@ -211,9 +211,6 @@ msgstr ""
 msgid "Access Point"
 msgstr "Điểm truy cập"
 
-msgid "Action"
-msgstr "Action"
-
 msgid "Actions"
 msgstr "Hành động"
 
@@ -285,6 +282,9 @@ msgstr "Cho phép <abbr title=\"Secure Shell\">SSH</abbr> xác thực mật mã"
 msgid "Allow all except listed"
 msgstr "Cho phép tất cả trừ danh sách liệt kê"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Chỉ cho phép danh sách liệt kê"
 
@@ -550,9 +550,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr ""
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -583,7 +580,7 @@ msgstr "Kênh"
 msgid "Check"
 msgstr ""
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -1217,6 +1214,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr ""
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr ""
 
@@ -1300,9 +1300,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr ""
-
 msgid "Hang Up"
 msgstr "Hang Up"
 
@@ -1887,9 +1884,6 @@ msgstr ""
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr ""
 
-msgid "Maximum hold time"
-msgstr "Mức cao nhất"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1907,12 +1901,12 @@ msgstr "Bộ nhớ"
 msgid "Memory usage (%)"
 msgstr "Memory usage (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Metric"
 
-msgid "Minimum hold time"
-msgstr "Mức thấp nhất"
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2357,9 +2351,6 @@ msgstr ""
 msgid "Path to Private Key"
 msgstr "Đường dẫn tới private key"
 
-msgid "Path to executable which handles the button event"
-msgstr ""
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2921,9 +2912,6 @@ msgstr "Nguồn"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr ""
-
 msgid "Specifies the directory the device is attached to"
 msgstr ""
 
@@ -3280,9 +3268,6 @@ msgstr ""
 "List này đưa ra một tầm nhìn tổng quát về xử lý hệ thống đang chạy và tình "
 "trạng của chúng."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr ""
-
 msgid "This page gives an overview over currently active network connections."
 msgstr ""
 "Trang này cung cấp một tổng quan về đang hoạt động kết nối mạng hiện tại."
@@ -3808,6 +3793,15 @@ msgstr ""
 msgid "« Back"
 msgstr ""
 
+#~ msgid "Action"
+#~ msgstr "Action"
+
+#~ msgid "Maximum hold time"
+#~ msgstr "Mức cao nhất"
+
+#~ msgid "Minimum hold time"
+#~ msgstr "Mức thấp nhất"
+
 #~ msgid "Leasetime"
 #~ msgstr "Leasetime"
 
index f516d42..6f7b216 100644 (file)
@@ -209,9 +209,6 @@ msgstr "接入集中器"
 msgid "Access Point"
 msgstr "接入点 AP"
 
-msgid "Action"
-msgstr "动作"
-
 msgid "Actions"
 msgstr "动作"
 
@@ -283,6 +280,9 @@ msgstr "允许 <abbr title=\"Secure Shell\">SSH</abbr> 密码验证"
 msgid "Allow all except listed"
 msgstr "仅允许列表外"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "仅允许列表内"
 
@@ -552,9 +552,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr "由固件指定的软件源。此处的设置在任何系统升级中都不会被保留。"
 
-msgid "Buttons"
-msgstr "按键"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr "CA 证书,如果留空,则证书将在第一次连接后被保存。"
 
@@ -585,7 +582,7 @@ msgstr "信道"
 msgid "Check"
 msgstr "检查"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr "在挂载前检查文件系统"
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -1223,6 +1220,9 @@ msgstr "前向纠错秒数(FECS)"
 msgid "Forward broadcast traffic"
 msgstr "转发广播数据包"
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr "转发模式"
 
@@ -1308,9 +1308,6 @@ msgstr "HE.net 用户名"
 msgid "HT mode (802.11n)"
 msgstr "HT 模式(802.11n)"
 
-msgid "Handler"
-msgstr "处理程序"
-
 msgid "Hang Up"
 msgstr "挂起"
 
@@ -1899,9 +1896,6 @@ msgstr "允许的最大 EDNS.0 UDP 数据包大小"
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr "调制解调器就绪的最大等待时间(秒)"
 
-msgid "Maximum hold time"
-msgstr "最大持续时间"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1921,12 +1915,12 @@ msgstr "内存"
 msgid "Memory usage (%)"
 msgstr "内存使用率(%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "跃点数"
 
-msgid "Minimum hold time"
-msgstr "最低持续时间"
-
 msgid "Mirror monitor port"
 msgstr "数据包镜像监听端口"
 
@@ -2373,9 +2367,6 @@ msgstr "客户端证书路径"
 msgid "Path to Private Key"
 msgstr "私钥路径"
 
-msgid "Path to executable which handles the button event"
-msgstr "处理按键动作的可执行文件路径"
-
 msgid "Path to inner CA-Certificate"
 msgstr "内部 CA 证书的路径"
 
@@ -2950,9 +2941,6 @@ msgstr "源地址"
 msgid "Source routing"
 msgstr "源路由"
 
-msgid "Specifies the button state to handle"
-msgstr "指定要处理的按键状态"
-
 msgid "Specifies the directory the device is attached to"
 msgstr "指定设备的挂载目录"
 
@@ -3318,9 +3306,6 @@ msgid ""
 "their status."
 msgstr "系统中正在运行的进程概况和它们的状态信息。"
 
-msgid "This page allows the configuration of custom button actions"
-msgstr "自定义按键动作。"
-
 msgid "This page gives an overview over currently active network connections."
 msgstr "活跃的网络连接概况。"
 
@@ -3854,6 +3839,30 @@ msgstr "是"
 msgid "« Back"
 msgstr "« 后退"
 
+#~ msgid "Action"
+#~ msgstr "动作"
+
+#~ msgid "Buttons"
+#~ msgstr "按键"
+
+#~ msgid "Handler"
+#~ msgstr "处理程序"
+
+#~ msgid "Maximum hold time"
+#~ msgstr "最大持续时间"
+
+#~ msgid "Minimum hold time"
+#~ msgstr "最低持续时间"
+
+#~ msgid "Path to executable which handles the button event"
+#~ msgstr "处理按键动作的可执行文件路径"
+
+#~ msgid "Specifies the button state to handle"
+#~ msgstr "指定要处理的按键状态"
+
+#~ msgid "This page allows the configuration of custom button actions"
+#~ msgstr "自定义按键动作。"
+
 #~ msgid "Leasetime"
 #~ msgstr "租用时间"
 
index c0abad2..643a958 100644 (file)
@@ -214,9 +214,6 @@ msgstr "接入集線器"
 msgid "Access Point"
 msgstr "存取點 (AP)"
 
-msgid "Action"
-msgstr "動作"
-
 msgid "Actions"
 msgstr "動作"
 
@@ -288,6 +285,9 @@ msgstr "允許 <abbr title=\"Secure Shell\">SSH</abbr> 密碼驗證"
 msgid "Allow all except listed"
 msgstr "僅允許列表外"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "僅允許列表內"
 
@@ -555,9 +555,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr "按鈕"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -588,7 +585,7 @@ msgstr "頻道"
 msgid "Check"
 msgstr "檢查"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -1230,6 +1227,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr "轉發廣播流量"
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr "轉發模式"
 
@@ -1313,9 +1313,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr "多執行緒"
-
 msgid "Hang Up"
 msgstr "斷線"
 
@@ -1896,9 +1893,6 @@ msgstr "允許EDNS.0 協定的UDP封包最大數量"
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr "等待數據機待命的最大秒數"
 
-msgid "Maximum hold time"
-msgstr "可持有最長時間"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1916,12 +1910,12 @@ msgstr "記憶體"
 msgid "Memory usage (%)"
 msgstr "記憶體使用 (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "公測單位"
 
-msgid "Minimum hold time"
-msgstr "可持有的最低時間"
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2362,9 +2356,6 @@ msgstr "用戶端-證書的路徑"
 msgid "Path to Private Key"
 msgstr "私人金鑰的路徑"
 
-msgid "Path to executable which handles the button event"
-msgstr "處理按鍵效果可執行檔路徑"
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2936,9 +2927,6 @@ msgstr "來源"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr "指定這個按鈕狀態以便操作"
-
 msgid "Specifies the directory the device is attached to"
 msgstr "指定這個設備被附掛到那個目錄"
 
@@ -3313,9 +3301,6 @@ msgid ""
 "their status."
 msgstr "這清單提供目前正在執行的系統的執行緒和狀態的預覽."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr "這一頁允許客製化按鍵動作的設定"
-
 msgid "This page gives an overview over currently active network connections."
 msgstr "這一頁提供目前正在活動中網路連線的預覽."
 
@@ -3845,6 +3830,30 @@ msgstr "是的"
 msgid "« Back"
 msgstr "« 倒退"
 
+#~ msgid "Action"
+#~ msgstr "動作"
+
+#~ msgid "Buttons"
+#~ msgstr "按鈕"
+
+#~ msgid "Handler"
+#~ msgstr "多執行緒"
+
+#~ msgid "Maximum hold time"
+#~ msgstr "可持有最長時間"
+
+#~ msgid "Minimum hold time"
+#~ msgstr "可持有的最低時間"
+
+#~ msgid "Path to executable which handles the button event"
+#~ msgstr "處理按鍵效果可執行檔路徑"
+
+#~ msgid "Specifies the button state to handle"
+#~ msgstr "指定這個按鈕狀態以便操作"
+
+#~ msgid "This page allows the configuration of custom button actions"
+#~ msgstr "這一頁允許客製化按鍵動作的設定"
+
 #~ msgid "Leasetime"
 #~ msgstr "租賃時間"
 
index 0c01cef..3ce0bc4 100644 (file)
@@ -297,7 +297,7 @@ time = s:option(Value, "leasetime", translate("Lease time"))
 time.rmempty  = true
 
 duid = s:option(Value, "duid", translate("<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"))
-duid.datatype = "and(rangelength(28,36),hexstring)"
+duid.datatype = "and(rangelength(20,36),hexstring)"
 fp = io.open("/var/hosts/odhcpd")
 if fp then
        for line in fp:lines() do
index 83fdaad..5745118 100644 (file)
@@ -56,9 +56,8 @@ if fs.access("/etc/init.d/dsl_control") then
                line_mode:value("vdsl", translate("VDSL"))
 
                ds_snr = dsl:option(ListValue, "ds_snr_offset", translate("Downstream SNR offset"))
-               ds_snr:depends("line_mode", "adsl")
-               for i = -50, 50, 5 do
-                       ds_snr:value(i, translate("%.1f dB" %{ i / 10} ))
+               for i = -100, 100, 5 do
+                       ds_snr:value(i, translatef("%.1f dB", i / 10))
                end
        end
 
index c642269..c0bb380 100644 (file)
@@ -228,6 +228,10 @@ if hwtype == "mac80211" then
                s:taboption("advanced", Value, "country", translate("Country Code"), translate("Use ISO/IEC 3166 alpha2 country codes."))
        end
 
+       legacyrates = s:taboption("advanced", Flag, "legacy_rates", translate("Allow legacy 802.11b rates"))
+       legacyrates.rmempty = false
+       legacyrates.default = "1"
+
        s:taboption("advanced", Value, "distance", translate("Distance Optimization"),
                translate("Distance to farthest network member in meters."))
 
@@ -347,15 +351,31 @@ s:tab("encryption", translate("Wireless Security"))
 s:tab("macfilter", translate("MAC-Filter"))
 s:tab("advanced", translate("Advanced Settings"))
 
-ssid = s:taboption("general", Value, "ssid", translate("<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"))
-ssid.datatype = "maxlength(32)"
-
 mode = s:taboption("general", ListValue, "mode", translate("Mode"))
 mode.override_values = true
 mode:value("ap", translate("Access Point"))
 mode:value("sta", translate("Client"))
 mode:value("adhoc", translate("Ad-Hoc"))
 
+meshid = s:taboption("general", Value, "mesh_id", translate("Mesh Id"))
+meshid:depends({mode="mesh"})
+
+meshfwd = s:taboption("advanced", Flag, "mesh_fwding", translate("Forward mesh peer traffic"))
+meshfwd.rmempty = false
+meshfwd.default = "1"
+meshfwd:depends({mode="mesh"})
+
+ssid = s:taboption("general", Value, "ssid", translate("<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"))
+ssid.datatype = "maxlength(32)"
+ssid:depends({mode="ap"})
+ssid:depends({mode="sta"})
+ssid:depends({mode="adhoc"})
+ssid:depends({mode="ahdemo"})
+ssid:depends({mode="monitor"})
+ssid:depends({mode="ap-wds"})
+ssid:depends({mode="sta-wds"})
+ssid:depends({mode="wds"})
+
 bssid = s:taboption("general", Value, "bssid", translate("<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"))
 
 network = s:taboption("general", Value, "network", translate("Network"),
diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/buttons.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/buttons.lua
deleted file mode 100644 (file)
index 6a81d71..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
--- Copyright 2008 Steven Barth <steven@midlink.org>
--- Licensed to the public under the Apache License 2.0.
-
-m = Map("system", translate("Buttons"),
-       translate("This page allows the configuration of custom button actions"))
-
-s = m:section(TypedSection, "button", "")
-s.anonymous = true
-s.addremove = true
-
-s:option(Value, "button", translate("Name"))
-
-act = s:option(ListValue, "action",
-       translate("Action"),
-       translate("Specifies the button state to handle"))
-
-act:value("released")
-
-s:option(Value, "handler",
-       translate("Handler"),
-       translate("Path to executable which handles the button event"))
-
-min = s:option(Value, "min", translate("Minimum hold time"))
-min.rmempty = true
-
-max = s:option(Value, "max", translate("Maximum hold time"))
-max.rmempty = true
index fd466d5..3ce5351 100644 (file)
@@ -62,7 +62,7 @@ o = s:option(Flag, "auto_mount", translate("Automount Filesystem"), translate("A
 o.default = o.enabled
 o.rmempty = false
 
-o = s:option(Flag, "check_fs", translate("Check fileystems before mount"), translate("Automatically check filesystem for errors before mounting"))
+o = s:option(Flag, "check_fs", translate("Check filesystems before mount"), translate("Automatically check filesystem for errors before mounting"))
 o.default = o.disabled
 o.rmempty = false
 
index 74e2f1a..2ea044e 100644 (file)
@@ -152,4 +152,7 @@ for p in nixio.fs.glob("/sys/bus/usb/devices/*/usb[0-9]*-port[0-9]*") do
        end
 end
 
+port_mask = s:option(Value, "port_mask", translate ("Switch Port Mask"))
+port_mask:depends("trigger", "switch0")
+
 return m
index b4baedf..28a37dc 100644 (file)
@@ -5,7 +5,7 @@
                        return duid.substr(16).replace(/(..)(?=..)/g, '$1:').toUpperCase();
 
                // DUID-LL / Ethernet
-               if (duid.length === 24 && duid.substr(0, 8) === '00030001')
+               if (duid.length === 20 && duid.substr(0, 8) === '00030001')
                        return duid.substr(8).replace(/(..)(?=..)/g, '$1:').toUpperCase();
 
                return null;
                                                tr.className = 'cbi-section-table-row cbi-rowstyle-' + ((i % 2) + 1);
 
                                        var host = hosts[duid2mac(st[1][i].duid)];
-                                       if (host)
-                                               tr.insertCell(-1).innerHTML = String.format(
-                                                       '<div style="max-width:200px;overflow:hidden;text-overflow:ellipsis">%s</div>',
-                                                       ((host.name && (host.ipv4 || host.ipv6))
-                                                               ? '%h (%s)'.format(host.name, host.ipv4 || host.ipv6)
-                                                               : '%h'.format(host.name || host.ipv4 || host.ipv6)).nobr()
-                                               );
+                                       if (!st[1][i].hostname)
+                                               tr.insertCell(-1).innerHTML =
+                                                       (host && (host.name || host.ipv4 || host.ipv6))
+                                                               ? '<div style="max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap">? (%h)</div>'.format(host.name || host.ipv4 || host.ipv6)
+                                                               : '?';
                                        else
-                                               tr.insertCell(-1).innerHTML = st[1][i].hostname ? st[1][i].hostname : '?';
+                                               tr.insertCell(-1).innerHTML =
+                                                       (host && host.name && st[1][i].hostname != host.name)
+                                                               ? '<div style="max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap">%h (%h)</div>'.format(st[1][i].hostname, host.name)
+                                                               : st[1][i].hostname;
 
                                        tr.insertCell(-1).innerHTML = st[1][i].ip6addr;
                                        tr.insertCell(-1).innerHTML = st[1][i].duid;
index d29a894..ff5e26d 100644 (file)
@@ -38,7 +38,7 @@
                local wan6 = ntm:get_wan6net()
 
                local conn_count = tonumber(
-                       fs.readfile("/proc/sys/net/netfilter/nf_conntrack_count")) or 0
+                       fs.readfile("/proc/sys/net/netfilter/nf_conntrack_count") or "") or 0
 
                local conn_max = tonumber((
                        luci.sys.exec("sysctl net.nf_conntrack_max") or
                        return duid.substr(16).replace(/(..)(?=..)/g, '$1:').toUpperCase();
 
                // DUID-LL / Ethernet
-               if (duid.length === 24 && duid.substr(0, 8) === '00030001')
+               if (duid.length === 20 && duid.substr(0, 8) === '00030001')
                        return duid.substr(8).replace(/(..)(?=..)/g, '$1:').toUpperCase();
 
                return null;
                                                tr.className = 'cbi-section-table-row cbi-rowstyle-' + ((i % 2) + 1);
 
                                        var host = hosts[duid2mac(info.leases6[i].duid)];
-                                       if (host)
-                                               tr.insertCell(-1).innerHTML = String.format(
-                                                       '<div style="max-width:200px;overflow:hidden;text-overflow:ellipsis">%s</div>',
-                                                       ((host.name && (host.ipv4 || host.ipv6))
-                                                               ? '%h (%s)'.format(host.name, host.ipv4 || host.ipv6)
-                                                               : '%h'.format(host.name || host.ipv4 || host.ipv6)).nobr()
-                                               );
+                                       if (!info.leases6[i].hostname)
+                                               tr.insertCell(-1).innerHTML =
+                                                       (host && (host.name || host.ipv4 || host.ipv6))
+                                                               ? '<div style="max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap">? (%h)</div>'.format(host.name || host.ipv4 || host.ipv6)
+                                                               : '?';
                                        else
-                                               tr.insertCell(-1).innerHTML = info.leases6[i].hostname ? info.leases6[i].hostname : '?';
+                                               tr.insertCell(-1).innerHTML =
+                                                       (host && host.name && info.leases6[i].hostname != host.name)
+                                                               ? '<div style="max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap">%h (%h)</div>'.format(info.leases6[i].hostname, host.name)
+                                                               : info.leases6[i].hostname;
 
                                        tr.insertCell(-1).innerHTML = info.leases6[i].ip6addr;
                                        tr.insertCell(-1).innerHTML = info.leases6[i].duid;