summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--applications/luci-app-acme/po/zh_Hant/acme.po34
-rw-r--r--applications/luci-app-bmx7/po/ru/bmx7.po6
-rw-r--r--applications/luci-app-commands/po/uk/commands.po10
-rw-r--r--applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js454
-rw-r--r--applications/luci-app-dockerman/po/lt/dockerman.po843
-rw-r--r--applications/luci-app-dockerman/po/uk/dockerman.po79
-rw-r--r--applications/luci-app-https-dns-proxy/po/pt/https-dns-proxy.po8
-rw-r--r--applications/luci-app-https-dns-proxy/po/uk/https-dns-proxy.po10
-rw-r--r--applications/luci-app-nlbwmon/po/uk/nlbwmon.po10
-rw-r--r--applications/luci-app-olsr-services/po/ru/olsr-services.po12
-rw-r--r--applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm4
-rw-r--r--applications/luci-app-shadowsocks-libev/po/uk/shadowsocks-libev.po14
-rw-r--r--applications/luci-app-simple-adblock/po/uk/simple-adblock.po16
-rw-r--r--applications/luci-app-transmission/po/zh_Hant/transmission.po14
-rw-r--r--applications/luci-app-ttyd/po/uk/ttyd.po16
-rw-r--r--applications/luci-app-ttyd/root/usr/share/luci/menu.d/luci-app-ttyd.json2
-rw-r--r--applications/luci-app-vpnbypass/po/uk/vpnbypass.po14
-rw-r--r--applications/luci-app-wireguard/po/uk/wireguard.po14
-rw-r--r--applications/luci-app-xinetd/po/de/xinetd.po13
-rw-r--r--applications/luci-app-yggdrasil/po/zh_Hans/yggdrasil.po36
-rw-r--r--libs/luci-lib-ip/src/ip.c6
-rw-r--r--modules/luci-base/po/de/base.po294
-rw-r--r--modules/luci-base/po/ja/base.po22
-rw-r--r--modules/luci-base/po/pt/base.po8
-rw-r--r--modules/luci-base/po/uk/base.po24
-rw-r--r--modules/luci-mod-dashboard/Makefile18
-rw-r--r--modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/css/custom.css285
-rw-r--r--modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/devices.svg132
-rw-r--r--modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/internet.svg46
-rw-r--r--modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/not-internet.svg91
-rw-r--r--modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/router.svg1
-rw-r--r--modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/wireless.svg61
-rw-r--r--modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js322
-rw-r--r--modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js150
-rw-r--r--modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js267
-rw-r--r--modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/index.js110
-rw-r--r--modules/luci-mod-dashboard/root/usr/share/luci/menu.d/luci-mod-dashboard.json13
-rw-r--r--modules/luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json41
-rw-r--r--protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js2
39 files changed, 2971 insertions, 531 deletions
diff --git a/applications/luci-app-acme/po/zh_Hant/acme.po b/applications/luci-app-acme/po/zh_Hant/acme.po
index 6210b9a5e7..eac6ae9e4a 100644
--- a/applications/luci-app-acme/po/zh_Hant/acme.po
+++ b/applications/luci-app-acme/po/zh_Hant/acme.po
@@ -1,69 +1,69 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2020-05-07 07:11+0000\n"
-"Last-Translator: zhanhb <zhanhb88@gmail.com>\n"
+"PO-Revision-Date: 2020-09-07 10:27+0000\n"
+"Last-Translator: tommymaple <godoffrog@gmail.com>\n"
"Language-Team: Chinese (Traditional) <https://hosted.weblate.org/projects/"
"openwrt/luciapplicationsacme/zh_Hant/>\n"
"Language: zh_Hant\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.1-dev\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Weblate 4.3-dev\n"
#: applications/luci-app-acme/htdocs/luci-static/resources/view/acme.js:17
msgid "ACME certificates"
-msgstr ""
+msgstr "ACME 證書"
#: applications/luci-app-acme/root/usr/share/luci/menu.d/luci-app-acme.json:3
msgid "ACME certs"
-msgstr ""
+msgstr "ACME 認證"
#: applications/luci-app-acme/htdocs/luci-static/resources/view/acme.js:26
msgid "ACME global config"
-msgstr ""
+msgstr "ACME 全域設置"
#: applications/luci-app-acme/htdocs/luci-static/resources/view/acme.js:34
msgid "Account email"
-msgstr ""
+msgstr "email 帳號"
#: applications/luci-app-acme/htdocs/luci-static/resources/view/acme.js:42
msgid "Certificate config"
-msgstr ""
+msgstr "證書設定配置"
#: applications/luci-app-acme/htdocs/luci-static/resources/view/acme.js:106
msgid "Challenge Alias"
-msgstr ""
+msgstr "匿名Challenge"
#: applications/luci-app-acme/htdocs/luci-static/resources/view/acme.js:93
msgid "DNS API"
-msgstr ""
+msgstr "DNS API"
#: applications/luci-app-acme/htdocs/luci-static/resources/view/acme.js:100
msgid "DNS API credentials"
-msgstr ""
+msgstr "DNS API 證書"
#: applications/luci-app-acme/htdocs/luci-static/resources/view/acme.js:111
msgid "Domain Alias"
-msgstr ""
+msgstr "匿名網域"
#: applications/luci-app-acme/htdocs/luci-static/resources/view/acme.js:87
msgid "Domain names"
-msgstr ""
+msgstr "網域名稱"
#: applications/luci-app-acme/htdocs/luci-static/resources/view/acme.js:88
msgid ""
"Domain names to include in the certificate. The first name will be the "
"subject name, subsequent names will be alt names. Note that all domain names "
"must point at the router in the global DNS."
-msgstr ""
+msgstr "網域名稱要包含在證書內。第一個名稱將會是標題名稱,隨後的名稱將會是簡稱或代替名稱。請注意,所有網域名稱都必須指向全域DNS中的路由器。"
#: applications/luci-app-acme/htdocs/luci-static/resources/view/acme.js:59
msgid "ECC 256 bits"
-msgstr ""
+msgstr "ECC 256 位元"
#: applications/luci-app-acme/htdocs/luci-static/resources/view/acme.js:60
msgid "ECC 384 bits"
-msgstr ""
+msgstr "ECC 384 位元"
#: applications/luci-app-acme/htdocs/luci-static/resources/view/acme.js:35
msgid "Email address to associate with account key."
diff --git a/applications/luci-app-bmx7/po/ru/bmx7.po b/applications/luci-app-bmx7/po/ru/bmx7.po
index e93f33fefc..fe5e4e311a 100644
--- a/applications/luci-app-bmx7/po/ru/bmx7.po
+++ b/applications/luci-app-bmx7/po/ru/bmx7.po
@@ -1,6 +1,6 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2020-07-17 19:42+0000\n"
+"PO-Revision-Date: 2020-09-07 10:27+0000\n"
"Last-Translator: Artem <KovalevArtem.ru@gmail.com>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsbmx7/ru/>\n"
@@ -9,11 +9,11 @@ msgstr ""
"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: Weblate 4.2-dev\n"
+"X-Generator: Weblate 4.3-dev\n"
#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/tunnels_j.htm:33
msgid "Announcements"
-msgstr ""
+msgstr "Объявления"
#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:27
msgid "BMX7 revision"
diff --git a/applications/luci-app-commands/po/uk/commands.po b/applications/luci-app-commands/po/uk/commands.po
index 90d24a3f64..1a5d87f470 100644
--- a/applications/luci-app-commands/po/uk/commands.po
+++ b/applications/luci-app-commands/po/uk/commands.po
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2020-02-18 11:31+0000\n"
+"PO-Revision-Date: 2020-09-04 13:36+0000\n"
"Last-Translator: Olexandr Nesterenko <olexn@ukr.net>\n"
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationscommands/uk/>\n"
@@ -9,9 +9,9 @@ msgstr ""
"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: Weblate 3.11\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: Weblate 4.3-dev\n"
#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:16
#, fuzzy
@@ -150,7 +150,7 @@ msgstr ""
#: applications/luci-app-commands/luasrc/view/commands.htm:144
msgid "This section contains no values yet"
-msgstr ""
+msgstr "Ця секція поки що не містить значень"
#: applications/luci-app-commands/luasrc/view/commands.htm:54
msgid "Waiting for command to complete..."
diff --git a/applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js b/applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js
index 3fd752beeb..46f33d0923 100644
--- a/applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js
+++ b/applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js
@@ -150,16 +150,17 @@ return view.extend({
m = new form.Map('ddns', _('Dynamic DNS'));
- var is = m.section(form.NamedSection, 'global', 'ddns', _('Information'));
+ s = m.section(form.NamedSection, 'global', 'ddns',);
- s = is;
+ s.tab('info', _('Information'));
+ s.tab('global', _('Global Settings'));
- o = s.option(form.DummyValue, '_version', _('Dynamic DNS Version'));
+ o = s.taboption('info', form.DummyValue, '_version', _('Dynamic DNS Version'));
o.cfgvalue = function() {
return status[this.option];
};
- o = s.option(form.DummyValue, '_enabled', _('State'));
+ o = s.taboption('info', form.DummyValue, '_enabled', _('State'));
o.cfgvalue = function() {
var res = status[this.option];
if (!res) {
@@ -169,7 +170,7 @@ return view.extend({
return res ? _('DDNS Autostart enabled') : _('DDNS Autostart disabled')
};
- o = s.option(form.DummyValue, '_toggle', '&#160;');
+ o = s.taboption('info', form.DummyValue, '_toggle', '&#160;');
o.cfgvalue = function() {
var action = status['_enabled'] ? 'stop' : 'start';
return E([], [
@@ -185,7 +186,7 @@ return view.extend({
}, _(action.toUpperCase() + ' DDns'))]);
};
- o = s.option(form.DummyValue, '_restart', '&#160;');
+ o = s.taboption('info', form.DummyValue, '_restart', '&#160;');
o.cfgvalue = function() {
return E([], [
E('button', {
@@ -199,7 +200,7 @@ return view.extend({
// DDns hints
if (!env['has_ipv6']) {
- o = s.option(form.DummyValue, '_no_ipv6');
+ o = s.taboption('info', form.DummyValue, '_no_ipv6');
o.rawhtml = true;
o.title = '<b>' + _("IPv6 not supported") + '</b>';
o.cfgvalue = function() { return _("IPv6 is currently not (fully) supported by this system") + "<br />" +
@@ -208,7 +209,7 @@ return view.extend({
}
if (!env['has_ssl']) {
- o = s.option(form.DummyValue, '_no_https');
+ o = s.taboption('info', form.DummyValue, '_no_https');
o.titleref = L.url("admin", "system", "opkg")
o.rawhtml = true;
o.title = '<b>' + _("HTTPS not supported") + '</b>';
@@ -220,7 +221,7 @@ return view.extend({
}
if (!env['has_bindnet']) {
- o = s.option(form.DummyValue, '_no_bind_network');
+ o = s.taboption('info', form.DummyValue, '_no_bind_network');
o.titleref = L.url("admin", "system", "opkg")
o.rawhtml = true;
o.title = '<b>' + _("Binding to a specific network not supported") + '</b>';
@@ -234,7 +235,7 @@ return view.extend({
}
if (!env['has_proxy']) {
- o = s.option(form.DummyValue, '_no_proxy');
+ o = s.taboption('info', form.DummyValue, '_no_proxy');
o.titleref = L.url("admin", "system", "opkg")
o.rawhtml = true;
o.title = '<b>' + _("cURL without Proxy Support") + '</b>';
@@ -246,7 +247,7 @@ return view.extend({
}
if (!env['has_forceip']) {
- o = s.option(form.DummyValue, '_no_force_ip');
+ o = s.taboption('info', form.DummyValue, '_no_force_ip');
o.titleref = L.url("admin", "system", "opkg")
o.rawhtml = true;
o.title = '<b>' + _("Force IP Version not supported") + '</b>';
@@ -257,7 +258,7 @@ return view.extend({
}
if (!env['has_bindhost']) {
- o = s.option(form.DummyValue, '_no_dnstcp');
+ o = s.taboption('info', form.DummyValue, '_no_dnstcp');
o.titleref = L.url("admin", "system", "opkg")
o.rawhtml = true;
o.title = '<b>' + _("DNS requests via TCP not supported") + '</b>';
@@ -268,7 +269,7 @@ return view.extend({
}
if (!env['has_dnsserver']) {
- o = s.option(form.DummyValue, '_no_dnsserver');
+ o = s.taboption('info', form.DummyValue, '_no_dnsserver');
o.titleref = L.url("admin", "system", "opkg")
o.rawhtml = true;
o.title = '<b>' + _("Using specific DNS Server not supported") + '</b>';
@@ -280,7 +281,7 @@ return view.extend({
}
if (env['has_ssl'] && !env['has_cacerts']) {
- o = s.option(form.DummyValue, '_no_certs');
+ o = s.taboption('info', form.DummyValue, '_no_certs');
o.titleref = L.url("admin", "system", "opkg")
o.rawhtml = true;
o.title = '<b>' + _("No certificates found") + '</b>';
@@ -290,6 +291,59 @@ return view.extend({
"by hand into /etc/ssl/certs default directory")};
}
+ // Advanced Configuration Section
+
+ o = s.taboption('global', form.Flag, 'upd_privateip', _("Allow non-public IP's"));
+ o.description = _("Non-public and by default blocked IP's") + ':'
+ + '<br /><strong>IPv4: </strong>'
+ + '0/8, 10/8, 100.64/10, 127/8, 169.254/16, 172.16/12, 192.168/16'
+ + '<br /><strong>IPv6: </strong>'
+ + '::/32, f000::/4"';
+ o.default = "0";
+ o.optional = true;
+
+ o = s.taboption('global', form.Value, 'ddns_dateformat', _('Date format'));
+ o.description = '<a href="http://www.cplusplus.com/reference/ctime/strftime/" target="_blank">'
+ + _("For supported codes look here")
+ + '</a><br />' +
+ _('Current setting: ') + '<b>' + status['_curr_dateformat'] + '</b>';
+ o.default = "%F %R"
+ o.optional = true;
+ o.rmempty = true;
+
+ o = s.taboption('global', form.Value, 'ddns_rundir', _('Status directory'));
+ o.description = _('Directory contains PID and other status information for each running section.');
+ o.default = "/var/run/ddns";
+ o.optional = true;
+ o.rmempty = true;
+
+ o = s.taboption('global', form.Value, 'ddns_logdir', _('Log directory'));
+ o.description = _('Directory contains Log files for each running section.');
+ o.default = "/var/log/ddns";
+ o.optional = true;
+ o.rmempty = true;
+ o.validate = function(section_id, formvalue) {
+ if (formvalue.indexOf('../') !== -1)
+ return _('"../" not allowed in path for Security Reason.')
+
+ return true;
+ }
+
+ o = s.taboption('global', form.Value, 'ddns_loglines', _('Log length'));
+ o.description = _('Number of last lines stored in log files');
+ o.datatype = 'min(1)';
+ o.default = '250';
+
+ if (env['has_wget'] && env['has_curl']) {
+
+ o = s.taboption('global', form.Flag, 'use_curl', _('Use cURL'));
+ o.description = _('If Wget and cURL package are installed, Wget is used for communication by default.');
+ o.default = "0";
+ o.optional = true;
+ o.rmempty = true;
+
+ }
+
// DDns services
s = m.section(form.GridSection, 'service', _('Services'));
s.anonymous = true;
@@ -447,51 +501,44 @@ return view.extend({
s.tab('timer', _('Timer Settings'));
s.tab('logview', _('Log File Viewer'));
- // TAB: BASIC
-
- // enabled
- o = s.taboption('basic', form.Flag, 'enabled', _('Enabled'),_("If this service section is disabled it could not be started." + "<br />" +
- "Neither from LuCI interface nor from console"));
+ o = s.taboption('basic', form.Flag, 'enabled',
+ _('Enabled'),
+ _("If this service section is disabled it could not be started.")
+ + "<br />" +
+ _("Neither from LuCI interface nor from console."));
o.modalonly = true;
o.rmempty = false;
o.default = '1';
- // lookup_host
-
- o = s.taboption('basic', form.Value, 'lookup_host', _("Lookup Hostname"),
- _("Hostname/FQDN to validate, if IP update happen or necessary") );
- o.rmempty = false;
+ o = s.taboption('basic', form.Value, 'lookup_host',
+ _("Lookup Hostname"),
+ _("Hostname/FQDN to validate, if IP update happen or necessary"));
+ o.rmempty = false;
o.placeholder = "myhost.example.com";
o.datatype = 'and(minlength(3),hostname("strict"))';
o.modalonly = true;
- // use_ipv6
-
- o = s.taboption('basic', form.ListValue, 'use_ipv6', _("IP address version"),
- _("Defines which IP address 'IPv4/IPv6' is send to the DDNS provider"));
+ o = s.taboption('basic', form.ListValue, 'use_ipv6',
+ _("IP address version"),
+ _("Defines which IP address 'IPv4/IPv6' is send to the DDNS provider"));
o.default = '0';
o.modalonly = true;
o.rmempty = false;
-
o.value("0", _("IPv4-Address"))
- if (env["has_ipv6"])
+ if (env["has_ipv6"]) {
o.value("1", _("IPv6-Address"))
+ }
- // service_name
-
- o = s.taboption('basic', form.ListValue, 'ipv4_service_name', _("DDNS Service provider") + " [IPv4]");
+ o = s.taboption('basic', form.ListValue, 'ipv4_service_name',
+ String.format('%s %s', _("DDNS Service provider"), "[IPv4]"));
o.depends("use_ipv6", "0")
o.modalonly = true;
-
+ o.value('-',"-- " + _("custom") + " --");
for (var i = 0; i < services4.length; i++)
o.value(services4[i]);
-
- o.value('-',"-- " + _("custom") + " --");
-
o.cfgvalue = function(section_id) {
return uci.get('ddns', section_id, 'service_name') || '-';
- }
-
+ };
o.write = function(section_id, formvalue) {
if (formvalue != '-') {
uci.set('ddns', section_id, 'update_url', null);
@@ -501,15 +548,14 @@ return view.extend({
return uci.set('ddns', section_id, 'service_name', null);
};
- o = s.taboption('basic', form.ListValue, 'ipv6_service_name', _("DDNS Service provider") + " [IPv6]");
+ o = s.taboption('basic', form.ListValue, 'ipv6_service_name',
+ String.format('%s %s', _("DDNS Service provider"), "[IPv6]"));
o.depends("use_ipv6", "1")
o.modalonly = true;
-
- for (var i = 0; i < services6.length; i++)
+ o.value('-',"-- " + _("custom") + " --");
+ for (var i = 0; i < services6.length; i++) {
o.value(services6[i]);
-
- o.value('-',"-- " + _("custom") + " --");
-
+ }
o.cfgvalue = function(section_id) {
var service = uci.get('ddns', section_id, 'service_name'),
update_script = uci.get('ddns', section_id, 'update_script'),
@@ -519,8 +565,7 @@ return view.extend({
return "-";
return service;
- }
-
+ };
o.write = function(section_id, formvalue) {
if (formvalue != '-') {
uci.set('ddns', section_id, 'update_url', null);
@@ -530,17 +575,16 @@ return view.extend({
return uci.set('ddns', section_id, 'service_name', null);
};
- // update_url
-
- o = s.taboption('basic', form.Value, 'update_url', _("Custom update-URL"),
- _("Update URL to be used for updating your DDNS Provider." + "<br />" +
- "Follow instructions you will find on their WEB page."));
+ o = s.taboption('basic', form.Value, 'update_url',
+ _("Custom update-URL"),
+ _("Update URL to be used for updating your DDNS Provider.")
+ + "<br />" +
+ _("Follow instructions you will find on their WEB page."));
o.modalonly = true;
- o.rmempty = true;
+ o.rmempty = true;
o.optional = true;
o.depends("ipv6_service_name","-");
o.depends("ipv4_service_name","-");
-
o.validate = function(section_id, value) {
var other = this.section.children.filter(function(o) { return o.option == 'update_script' })[0].formvalue(section_id);
@@ -549,18 +593,16 @@ return view.extend({
}
return true;
- }
-
- // update_script
+ };
- o = s.taboption('basic', form.Value, 'update_script', _("Custom update-script"),
- _("Custom update script to be used for updating your DDNS Provider."));
+ o = s.taboption('basic', form.Value, 'update_script',
+ _("Custom update-script"),
+ _("Custom update script to be used for updating your DDNS Provider."));
o.modalonly = true;
- o.rmempty = true;
+ o.rmempty = true;
o.optional = true;
o.depends("ipv6_service_name","-");
o.depends("ipv4_service_name","-");
-
o.validate = function(section_id, value) {
var other = this.section.children.filter(function(o) { return o.option == 'update_url' })[0].formvalue(section_id);
@@ -569,78 +611,69 @@ return view.extend({
}
return true;
- }
-
- // domain
+ };
- o = s.taboption('basic', form.Value, 'domain', _("Domain"),
- _("Replaces [USERNAME] in Update-URL (URL-encoded)"));
+ o = s.taboption('basic', form.Value, 'domain',
+ _("Domain"),
+ _("Replaces [USERNAME] in Update-URL (URL-encoded)"));
o.modalonly = true;
- o.rmempty = false;
-
- // username
+ o.rmempty = false;
- o = s.taboption('basic', form.Value, 'username', _("Username"),
- _("Replaces [USERNAME] in Update-URL (URL-encoded)"));
+ o = s.taboption('basic', form.Value, 'username',
+ _("Username"),
+ _("Replaces [USERNAME] in Update-URL (URL-encoded)"));
o.modalonly = true;
- o.rmempty = false;
+ o.rmempty = false;
- // password
-
-
- o = s.taboption('basic', form.Value, 'password', _("Password"),
- _("Replaces [PASSWORD] in Update-URL (URL-encoded)"));
+ o = s.taboption('basic', form.Value, 'password',
+ _("Password"),
+ _("Replaces [PASSWORD] in Update-URL (URL-encoded)"));
o.password = true;
o.modalonly = true;
- o.rmempty = false;
-
- // param_enc
+ o.rmempty = false;
- o = s.taboption('basic', form.Value, 'param_enc', _("Optional Encoded Parameter"),
- _("Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)"));
+ o = s.taboption('basic', form.Value, 'param_enc',
+ _("Optional Encoded Parameter"),
+ _("Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)"));
o.optional = true;
o.modalonly = true;
- // param_opt
-
- o = s.taboption('basic', form.Value, 'param_opt', _("Optional Parameter"),
- _("Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)"));
+ o = s.taboption('basic', form.Value, 'param_opt',
+ _("Optional Parameter"),
+ _("Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)"));
o.optional = true;
o.modalonly = true;
- // use_https
-
if (env['has_ssl']) {
- o = s.taboption('basic', form.Flag, 'use_https', _("Use HTTP Secure"),
+ o = s.taboption('basic', form.Flag, 'use_https',
+ _("Use HTTP Secure"),
_("Enable secure communication with DDNS provider"));
o.optional = true;
o.modalonly = true;
o = s.taboption('basic', form.Value, 'cacert',
_("Path to CA-Certificate"),
- _("directory or path/file") + "<br />" +
- _("or") + '<b>' + " IGNORE " + '</b>' +
+ _("directory or path/file")
+ + "<br />" +
+ _("or")
+ + '<b>' + " IGNORE " + '</b>' +
_("to run HTTPS without verification of server certificates (insecure)"));
o.modalonly = true;
o.depends("use_https", "1");
o.placeholder = "/etc/ssl/certs";
- o.rmempty = false;
+ o.rmempty = false;
};
- // TAB Advanced
-
- // ip_source
-
- o = s.taboption('advanced', form.ListValue, 'ip_source', _("IP address source"),
- _("Defines the source to read systems IP-Address from, that will be send to the DDNS provider"));
+ o = s.taboption('advanced', form.ListValue, 'ip_source',
+ _("IP address source"),
+ _("Defines the source to read systems IP-Address from, that will be send to the DDNS provider"));
o.modalonly = true;
o.default = "network";
o.value("network", _("Network"));
o.value("web", _("URL"));
o.value("interface", _("Interface"));
o.value("script", _("Script"));
-
o.write = function(section_id, formvalue) {
switch(formvalue) {
case 'network':
@@ -670,59 +703,51 @@ return view.extend({
return uci.set('ddns', section_id, 'ip_source', formvalue )
};
- // ip_network
-
- o = s.taboption('advanced', widgets.NetworkSelect, 'ip_network', _("Network"),
- _("Defines the network to read systems IP-Address from"));
+ o = s.taboption('advanced', widgets.NetworkSelect, 'ip_network',
+ _("Network"),
+ _("Defines the network to read systems IP-Address from"));
o.depends('ip_source','network');
o.modalonly = true;
o.default = 'wan';
o.multiple = false;
- // ip_url
-
- o = s.taboption('advanced', form.Value, 'ip_url', _("URL to detect"),
- _("Defines the Web page to read systems IP-Address from" + '<br />' +
- _('Example for IPv4' + ': http://checkip.dyndns.com') + '<br />' +
- _('Example for IPv6' + ': http://checkipv6.dyndns.com')));
+ o = s.taboption('advanced', form.Value, 'ip_url',
+ _("URL to detect"),
+ _("Defines the Web page to read systems IP-Address from.")
+ + '<br />' +
+ String.format('%s %s', _('Example for IPv4'), ': http://checkip.dyndns.com')
+ + '<br />' +
+ String.format('%s %s', _('Example for IPv6'), ': http://checkipv6.dyndns.com'));
o.depends("ip_source", "web")
-
o.modalonly = true;
- // ip_interface
-
- o = s.taboption('advanced', widgets.DeviceSelect, 'ip_interface', _("Interface"),
- _("Defines the interface to read systems IP-Address from"));
-
+ o = s.taboption('advanced', widgets.DeviceSelect, 'ip_interface',
+ _("Interface"),
+ _("Defines the interface to read systems IP-Address from"));
o.modalonly = true;
o.depends("ip_source", "interface")
o.multiple = false;
o.default = 'wan';
- // ip_script
-
- o = s.taboption('advanced', form.Value, 'ip_script', _("Script"),
- _("User defined script to read systems IP-Address"));
-
+ o = s.taboption('advanced', form.Value, 'ip_script',
+ _("Script"),
+ _("User defined script to read systems IP-Address"));
o.modalonly = true;
o.depends("ip_source", "script")
o.placeholder = "/path/to/script.sh"
- // interface
-
- o = s.taboption('advanced', widgets.DeviceSelect, 'interface', _("Event Network"),
- _("Network on which the ddns-updater scripts will be started"));
-
+ o = s.taboption('advanced', widgets.DeviceSelect, 'interface',
+ _("Event Network"),
+ _("Network on which the ddns-updater scripts will be started"));
o.modalonly = true;
o.multiple = false;
o.default = 'wan';
o.depends("ip_source", "web");
o.depends("ip_source", "script");
- // interface_show
-
- o = s.taboption('advanced', form.DummyValue, '_interface', _("Event Network"),
- _("Network on which the ddns-updater scripts will be started"));
+ o = s.taboption('advanced', form.DummyValue, '_interface',
+ _("Event Network"),
+ _("Network on which the ddns-updater scripts will be started"));
o.depends("ip_source", "interface");
o.depends("ip_source", "network");
o.forcewrite = true;
@@ -736,11 +761,11 @@ return view.extend({
return uci.set('ddns', section_id, 'interface', val);
};
- // bind_network
-
if (env['has_bindnet']) {
- o = s.taboption('advanced', widgets.ZoneSelect, 'bind_network', _("Bind Network"),
- _('OPTIONAL: Network to use for communication') + '<br />' +
+ o = s.taboption('advanced', widgets.ZoneSelect, 'bind_network',
+ _("Bind Network"),
+ _('OPTIONAL: Network to use for communication')
+ + '<br />' +
_("Network on which the ddns-updater scripts will be started"));
o.depends("ip_source", "web");
o.optional = true;
@@ -748,22 +773,20 @@ return view.extend({
o.modalonly = true;
}
- // force_ipversion
-
if (env['has_forceip']) {
- o = s.taboption('advanced', form.Flag, 'force_ipversion', _("Force IP Version"),
+ o = s.taboption('advanced', form.Flag, 'force_ipversion',
+ _("Force IP Version"),
_('OPTIONAL: Force the usage of pure IPv4/IPv6 only communication.'));
o.optional = true;
o.rmempty = true;
o.modalonly = true;
}
- // dns_server
-
if (env['has_dnsserver']) {
o = s.taboption("advanced", form.Value, "dns_server",
_("DNS-Server"),
- _("OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'.") + "<br />" +
+ _("OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'.")
+ + "<br />" +
_("Format: IP or FQDN"));
o.placeholder = "mydns.lan"
o.optional = true;
@@ -771,8 +794,6 @@ return view.extend({
o.modalonly = true;
}
- // force_dnstcp
-
if (env['has_bindhost']) {
o = s.taboption("advanced", form.Flag, "force_dnstcp",
_("Force TCP on DNS"),
@@ -782,25 +803,24 @@ return view.extend({
o.modalonly = true;
}
- // proxy
-
if (env['has_proxy']) {
- o = s.taboption("advanced", form.Value, "proxy", _("PROXY-Server"),
- _("OPTIONAL: Proxy-Server for detection and updates.") + "<br />" +
- _("Format") + ": " + '<b>' + "[user:password@]proxyhost:port" + '</b>' + "<br />" +
- _("IPv6 address must be given in square brackets") + ": " +
- '<b>' + " [2001:db8::1]:8080" + '</b>');
+ o = s.taboption("advanced", form.Value, "proxy",
+ _("PROXY-Server"),
+ _("OPTIONAL: Proxy-Server for detection and updates.")
+ + "<br />" +
+ String.format('%s: <b>%s</b>', _("Format"), "[user:password@]proxyhost:port")
+ + "<br />" +
+ String.format('%s: <b>%s</b>', _("IPv6 address must be given in square brackets"), "[2001:db8::1]:8080"));
o.optional = true;
o.rmempty = true;
o.modalonly = true;
}
- // use_syslog
-
- o = s.taboption("advanced", form.ListValue, "use_syslog", _("Log to syslog"),
+ o = s.taboption("advanced", form.ListValue, "use_syslog",
+ _("Log to syslog"),
_("Writes log messages to syslog. Critical Errors will always be written to syslog."));
o.modalonly = true;
- o.placeholder = "2"
+ o.default = "2"
o.optional = true;
o.value("0", _("No logging"))
o.value("1", _("Info"))
@@ -808,9 +828,8 @@ return view.extend({
o.value("3", _("Warning"))
o.value("4", _("Error"))
- // use_logfile
-
- o = s.taboption("advanced", form.Flag, "use_logfile", _("Log to file"));
+ o = s.taboption("advanced", form.Flag, "use_logfile",
+ _("Log to file"));
o.default = '1';
o.optional = true;
o.modalonly = true;
@@ -820,14 +839,12 @@ return view.extend({
return uci.get('ddns', section_id, 'use_logfile');
};
- // TAB Timer
- // check_interval
- o = s.taboption("timer", form.Value, "check_interval", _("Check Interval"));
+ o = s.taboption("timer", form.Value, "check_interval",
+ _("Check Interval"));
o.placeholder = "30";
o.modalonly = true;
o.datatype = 'uinteger';
-
o.validate = function(section_id, formvalue) {
var unit = this.section.children.filter(function(o) { return o.option == 'check_unit' })[0].formvalue(section_id),
time_to_sec = time_res[unit || 'minutes'] * formvalue;
@@ -836,28 +853,26 @@ return view.extend({
return _('Values below 5 minutes == 300 seconds are not supported');
return true;
-
};
- // check_interval
- o = s.taboption("timer", form.ListValue, "check_unit",'Check Unit');
- o.description = _("Interval unit to check for changed IP");
+ o = s.taboption("timer", form.ListValue, "check_unit",
+ _('Check Unit'),
+ _("Interval unit to check for changed IP"));
o.modalonly = true;
o.default = "minutes"
o.value("seconds", _("seconds"));
o.value("minutes", _("minutes"));
o.value("hours", _("hours"));
- // force_interval
-
- o = s.taboption("timer", form.Value, "force_interval", _("Force Interval"));
- o.description = _("Interval to force updates send to DDNS Provider" + "<br />" +
- "Setting this parameter to 0 will force the script to only run once");
+ o = s.taboption("timer", form.Value, "force_interval",
+ _("Force Interval"),
+ _("Interval to force updates send to DDNS Provider")
+ + "<br />" +
+ _("Setting this parameter to 0 will force the script to only run once"));
o.placeholder = "72";
o.optional = true;
o.modalonly = true;
o.datatype = 'uinteger';
-
o.validate = function(section_id, formvalue) {
if (!formvalue)
@@ -875,10 +890,9 @@ return view.extend({
return true;
};
- // force_unit
-
- o = s.taboption("timer", form.ListValue, "force_unit",'Force Unit');
- o.description = _("Interval unit to force updates send to DDNS Provider");
+ o = s.taboption("timer", form.ListValue, "force_unit",
+ _('Force Unit'),
+ _("Interval unit to force updates send to DDNS Provider"));
o.modalonly = true;
o.optional = true;
o.default = "minutes"
@@ -886,39 +900,35 @@ return view.extend({
o.value("hours", _("hours"));
o.value("days", _("days"));
- // retry_count
-
- o = s.taboption("timer", form.Value, "retry_count", _("Error Retry Counter"));
- o.description = _("On Error the script will stop execution after given number of retrys")
- + "<br />"
- + _("The default setting of '0' will retry infinite.");
+ o = s.taboption("timer", form.Value, "retry_count",
+ _("Error Retry Counter"),
+ _("On Error the script will stop execution after given number of retrys")
+ + "<br />" +
+ _("The default setting of '0' will retry infinite."));
o.placeholder = "0";
o.optional = true;
o.modalonly = true;
o.datatype = 'uinteger';
- // retry_interval
-
- o = s.taboption("timer", form.Value, "retry_interval", _("Error Retry Interval"));
- o.description = _("On Error the script will stop execution after given number of retrys")
- + "<br />"
- + _("The default setting of '0' will retry infinite.");
+ o = s.taboption("timer", form.Value, "retry_interval",
+ _("Error Retry Interval"),
+ _("On Error the script will stop execution after given number of retrys")
+ + "<br />" +
+ _("The default setting of '0' will retry infinite."));
o.placeholder = "60";
o.optional = true;
o.modalonly = true;
o.datatype = 'uinteger';
- // retry_unit
-
- o = s.taboption("timer", form.ListValue, "retry_unit",'Retry Unit');
- o.description = _("On Error the script will retry the failed action after given time");
+ o = s.taboption("timer", form.ListValue, "retry_unit",
+ _('Retry Unit'),
+ _("On Error the script will retry the failed action after given time"));
o.modalonly = true;
o.optional = true;
o.default = "seconds"
o.value("seconds", _("seconds"));
o.value("minutes", _("minutes"));
- // TAB logview
o = s.taboption("logview", form.DummyValue, '_read_log', '');
o.depends('use_logfile','1');
@@ -949,70 +959,6 @@ return view.extend({
]);
}, o, this)
-
- // Advanced Configuration Section
-
- s = m.section(form.NamedSection, 'global', 'ddns', _('Global Configuration'));
- s.description = _('Configure here the details for all Dynamic DNS services including this LuCI application.')
- + '<br /><strong>'
- + _("It is NOT recommended for casual users to change settings on this page.")
- + '</strong><br />'
- + '<a href="https://openwrt.org/docs/guide-user/base-system/ddns#section_ddns" target="_blank">'
- + _('For detailed information about parameter settings look here.')
- + '</a>';
- s.addremove = false;
-
- o = s.option(form.Flag, 'upd_privateip', _("Allow non-public IP's"));
- o.description = _("Non-public and by default blocked IP's") + ':'
- + '<br /><strong>IPv4: </strong>'
- + '0/8, 10/8, 100.64/10, 127/8, 169.254/16, 172.16/12, 192.168/16'
- + '<br /><strong>IPv6: </strong>'
- + '::/32, f000::/4"';
- o.default = "0";
- o.optional = true;
-
- o = s.option(form.Value, 'ddns_dateformat', _('Date format'));
- o.description = '<a href="http://www.cplusplus.com/reference/ctime/strftime/" target="_blank">'
- + _("For supported codes look here")
- + '</a><br />' +
- _('Current setting: ') + '<b>' + status['_curr_dateformat'] + '</b>';
- o.default = "%F %R"
- o.optional = true;
- o.rmempty = true;
-
- o = s.option(form.Value, 'ddns_rundir', _('Status directory'));
- o.description = _('Directory contains PID and other status information for each running section.');
- o.default = "/var/run/ddns";
- o.optional = true;
- o.rmempty = true;
-
- o = s.option(form.Value, 'ddns_logdir', _('Log directory'));
- o.description = _('Directory contains Log files for each running section.');
- o.default = "/var/log/ddns";
- o.optional = true;
- o.rmempty = true;
- o.validate = function(section_id, formvalue) {
- if (formvalue.indexOf('../') !== -1)
- return _('"../" not allowed in path for Security Reason.')
-
- return true;
- }
-
- o = s.option(form.Value, 'ddns_loglines', _('Log length'));
- o.description = _('Number of last lines stored in log files');
- o.datatype = 'min(1)';
- o.default = '250';
-
- if (env['has_wget'] && env['has_curl']) {
-
- o = s.option(form.Flag, 'use_curl', _('Use cURL'));
- o.description = _('If Wget and cURL package are installed, Wget is used for communication by default.');
- o.default = "0";
- o.optional = true;
- o.rmempty = true;
-
- }
-
return m.render().then(L.bind(function(m, nodes) {
poll.add(L.bind(function() {
return Promise.all([
diff --git a/applications/luci-app-dockerman/po/lt/dockerman.po b/applications/luci-app-dockerman/po/lt/dockerman.po
new file mode 100644
index 0000000000..faab98e1b1
--- /dev/null
+++ b/applications/luci-app-dockerman/po/lt/dockerman.po
@@ -0,0 +1,843 @@
+msgid ""
+msgstr ""
+"PO-Revision-Date: 2020-09-04 13:36+0000\n"
+"Last-Translator: Rokas Kasnauskas <rokas.kasnauskas@gmail.com>\n"
+"Language-Team: Lithuanian <https://hosted.weblate.org/projects/openwrt/"
+"luciapplicationsdockerman/lt/>\n"
+"Language: lt\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 || n % 100 > "
+"19)) ? 0 : ((n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19)) ? "
+"1 : 2);\n"
+"X-Generator: Weblate 4.3-dev\n"
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:604
+msgid "A list of kernel capabilities to add to the container"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua:181
+msgid "Add"
+msgstr "Pridėti"
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:580
+msgid "Add host device to the container"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:556
+msgid "Advance"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:571
+msgid "Allocates an ephemeral host port for all of a container's exposed ports"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:483
+msgid "Always pull image first"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:30
+msgid "Api Version"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:84
+msgid "Auto create macvlan interface in Openwrt"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:67
+msgid "Available"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:39
+msgid "Base device"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:538
+msgid "Bind Mount(-v)"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:539
+msgid "Bind mount a volume"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:586
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:637
+msgid "Block IO Weight"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:638
+msgid ""
+"Block IO weight (relative weight) accepts a weight value between 10 and 1000"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:587
+msgid ""
+"Block IO weight (relative weight) accepts a weight value between 10 and 1000."
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:51
+msgid "Bridge (Support direct communication between MAC VLANs)"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:34
+msgid "Bridge device"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:603
+msgid "CAP-ADD(--cap-add)"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:571
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:620
+msgid "CPU Shares Weight"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:768
+msgid "CPU Useage"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:621
+msgid ""
+"CPU shares relative weight, if 0 is set, the system will ignore the value "
+"and use the default of 1024"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:572
+msgid ""
+"CPU shares relative weight, if 0 is set, the system will ignore the value "
+"and use the default of 1024."
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:563
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:611
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:31
+msgid "CPUs"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/view/dockerman/newcontainer_resolve.htm:91
+msgid "Cancel"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:147
+msgid "Client connection"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:337
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:676
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua:140
+msgid "Command"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/view/dockerman/newcontainer_resolve.htm:100
+msgid "Command line"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/view/dockerman/newcontainer_resolve.htm:72
+msgid "Command line Error"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:125
+msgid "Configure the default bridge network"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:395
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:696
+msgid "Connect"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:393
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:427
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:463
+msgid "Connect Network"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:97
+msgid "Connect to remote endpoint"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/view/dockerman/container.htm:7
+msgid "Console"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:639
+msgid "Container Inspect"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:660
+msgid "Container Logs"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua:123
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:458
+msgid "Container Name"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/images.lua:58
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/volumes.lua:29
+msgid "Container detail"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/controller/dockerman.lua:35
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua:105
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua:107
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/images.lua:137
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/volumes.lua:87
+#: applications/luci-app-dockerman/luasrc/view/dockerman/overview.htm:133
+msgid "Containers"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:84
+msgid "Create macvlan interface"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:302
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/images.lua:142
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/volumes.lua:92
+msgid "Created"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:361
+msgid "DNS"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:124
+msgid "Default bridge"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:353
+msgid "Device"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:579
+msgid "Device(--device)"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:386
+msgid "Disconnect"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua:93
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/images.lua:71
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/networks.lua:50
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:439
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:12
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:21
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/volumes.lua:69
+#: applications/luci-app-dockerman/luasrc/view/dockerman/logs.htm:3
+msgid "Docker"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:198
+msgid "Docker Container"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:474
+msgid "Docker Image"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:33
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:119
+msgid "Docker Root Dir"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:101
+msgid "Docker Socket Path"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:29
+msgid "Docker Version"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/view/dockerman/apply_widget.htm:91
+msgid "Docker actions done."
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:22
+msgid ""
+"DockerMan is a Simple Docker manager client for LuCI, If you have any issue "
+"please visit:"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/view/dockerman/container_file.htm:14
+msgid "Download"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/networks.lua:77
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:32
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/volumes.lua:85
+msgid "Driver"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:261
+msgid "Duplicate/Edit"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:110
+msgid "Enable IPv6"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:341
+msgid "Env"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:531
+msgid "Environmental Variable(-e)"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/controller/dockerman.lua:39
+#: applications/luci-app-dockerman/luasrc/view/dockerman/logs.htm:5
+msgid "Events"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:106
+msgid "Exclude IPs"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:570
+msgid "Exposed All Ports(-P)"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:545
+msgid "Exposed Ports(-p)"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/view/dockerman/container.htm:6
+msgid "File"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:314
+msgid "Finish Time"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/images.lua:211
+msgid "Force Remove"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/networks.lua:83
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:96
+msgid "Gateway"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:25
+msgid "Github"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/view/dockerman/cbi/inlinevalue.htm:4
+msgid "Go to relevant configuration page"
+msgstr ""
+
+#: applications/luci-app-dockerman/root/usr/share/rpcd/acl.d/luci-app-dockerman.json:3
+msgid "Grant UCI access for luci-app-dockerman"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:320
+msgid "Healthy"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:563
+msgid "Host Name"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:290
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua:120
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/images.lua:144
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/networks.lua:73
+msgid "ID"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:36
+msgid "IP VLAN"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:101
+msgid "IP range"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:507
+msgid "IPv4 Address"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:122
+msgid "IPv6 Gateway"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:116
+msgid "IPv6 Subnet"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:294
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua:137
+#: applications/luci-app-dockerman/luasrc/view/dockerman/images_import.htm:54
+msgid "Image"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/controller/dockerman.lua:36
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/images.lua:124
+#: applications/luci-app-dockerman/luasrc/view/dockerman/overview.htm:151
+msgid "Images"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/view/dockerman/images_import.htm:4
+msgid "Import"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/images.lua:119
+msgid "Import Images"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:34
+msgid "Index Server Address"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:404
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:38
+#: applications/luci-app-dockerman/luasrc/view/dockerman/container.htm:3
+msgid "Info"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:64
+msgid "Ingress"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:65
+msgid ""
+"Ingress network is the network which provides the routing-mesh in swarm mode"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/view/dockerman/container.htm:8
+msgid "Inspect"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:462
+msgid "Interactive (-i)"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:76
+msgid "Internal"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:56
+msgid "Ipvlan Mode"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:243
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua:218
+msgid "Kill"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:60
+msgid "L2 bridge"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:61
+msgid "L3 bridge"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:349
+msgid "Links"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:512
+msgid "Links with other containers"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/images.lua:270
+#: applications/luci-app-dockerman/luasrc/view/dockerman/images_load.htm:2
+msgid "Load"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:137
+msgid "Log Level"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:646
+msgid "Log driver options"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/view/dockerman/container.htm:9
+msgid "Logs"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:35
+msgid "MAC VLAN"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:579
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:629
+msgid "Memory"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:772
+msgid "Memory Useage"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:630
+msgid ""
+"Memory limit (format: <number>[<unit>]). Number is a positive integer. Unit "
+"can be one of b, k, m, or g. Minimum is 4M"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:580
+msgid ""
+"Memory limit (format: <number>[<unit>]). Number is a positive integer. Unit "
+"can be one of b, k, m, or g. Minimum is 4M."
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:47
+msgid "Mode"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/volumes.lua:90
+msgid "Mount Point"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:588
+msgid "Mount tmpfs directory"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:333
+msgid "Mount/Volume"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:285
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:409
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/volumes.lua:83
+msgid "Name"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:29
+msgid "Name of the network that can be selected during container creation"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:384
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:518
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua:130
+msgid "Network"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/networks.lua:75
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:28
+msgid "Network Name"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/controller/dockerman.lua:37
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/networks.lua:54
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:503
+#: applications/luci-app-dockerman/luasrc/view/dockerman/overview.htm:169
+msgid "Networks"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/networks.lua:99
+msgid "New"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:450
+msgid "New Container"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:23
+msgid "New Network"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/images.lua:39
+#: applications/luci-app-dockerman/luasrc/view/dockerman/images_import.htm:54
+msgid "New tag"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:612
+msgid "Number of CPUs. Number is a fractional number. 0.000 means no limit"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:564
+msgid "Number of CPUs. Number is a fractional number. 0.000 means no limit."
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:72
+msgid "Options"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:37
+msgid "Overlay network"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/controller/dockerman.lua:15
+msgid "Overview"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/networks.lua:79
+msgid "Parent Interface"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:54
+msgid "Pass-through (Mirror physical device to single MAC VLAN)"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/view/dockerman/container_file.htm:7
+msgid "Path"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/view/dockerman/images_import.htm:54
+msgid "Please input new tag"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/view/dockerman/container_file.htm:62
+msgid "Please input the PATH !"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/view/dockerman/container_file.htm:24
+msgid "Please input the PATH and select the file !"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/view/dockerman/newcontainer_resolve.htm:91
+msgid "Plese input <docker create/run> command line:"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:345
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua:133
+msgid "Ports"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:52
+msgid "Private (Prevent communication between MAC VLANs)"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:489
+msgid "Privileged"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:546
+msgid "Publish container's port(s) to the host"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/images.lua:96
+msgid "Pull"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/images.lua:80
+msgid "Pull Image"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:35
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:132
+msgid "Registry Mirrors"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:96
+msgid "Remote Endpoint"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:107
+msgid "Remote Host"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:112
+msgid "Remote Port"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:270
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua:227
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/images.lua:202
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/networks.lua:109
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/volumes.lua:108
+msgid "Remove"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/images.lua:43
+#: applications/luci-app-dockerman/luasrc/view/dockerman/images_import.htm:82
+msgid "Remove tag"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/images.lua:134
+msgid "RepoTags"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:454
+msgid "Resolve CLI"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/view/dockerman/container.htm:4
+msgid "Resources"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:225
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua:200
+msgid "Restart"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:324
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:417
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:495
+msgid "Restart Policy"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:76
+msgid "Restrict external access to the network"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/view/dockerman/cbi/inlinevalue.htm:31
+msgid "Reveal/hide password"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:551
+msgid "Run command"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/images.lua:220
+msgid "Save"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:518
+msgid "Set custom DNS servers"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:532
+msgid "Set environment variables to inside the container"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:138
+msgid "Set the logging level"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:93
+msgid "Setting"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/images.lua:140
+msgid "Size"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:148
+msgid "Specifies where the Docker daemon will listen for client connections"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:216
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua:191
+msgid "Start"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:309
+msgid "Start Time"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:778
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:779
+#: applications/luci-app-dockerman/luasrc/view/dockerman/container.htm:5
+msgid "Stats"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:298
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua:126
+msgid "Status"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:234
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua:209
+msgid "Stop"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/view/dockerman/newcontainer_resolve.htm:91
+msgid "Submit"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/networks.lua:81
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:91
+msgid "Subnet"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:365
+msgid "Sysctl"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:595
+msgid "Sysctl(--sysctl)"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:596
+msgid "Sysctls (kernel parameters) options"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:781
+msgid "TOP"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:468
+msgid "TTY (-t)"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/view/dockerman/container_stats.htm:56
+msgid "TX/RX"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:564
+msgid "The hostname to use for the container"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:647
+msgid "The logging configuration for this container"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:525
+msgid ""
+"The user that commands are run as inside the container.(format: name|uid[:"
+"group|gid])"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:357
+msgid "Tmpfs"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:587
+msgid "Tmpfs(--tmpfs)"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:32
+msgid "Total Memory"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:686
+msgid "UID"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:287
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:326
+msgid "Update"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:252
+msgid "Upgrade"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/view/dockerman/container_file.htm:2
+#: applications/luci-app-dockerman/luasrc/view/dockerman/container_file.htm:13
+msgid "Upload"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/view/dockerman/container_file.htm:46
+msgid "Upload Error"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/view/dockerman/container_file.htm:43
+msgid "Upload Success"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/view/dockerman/container_stats.htm:48
+msgid "Upload/Download"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:329
+msgid "User"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:524
+msgid "User(-u)"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:53
+msgid "VEPA (Virtual Ethernet Port Aggregator)"
+msgstr ""
+
+#: applications/luci-app-dockerman/luasrc/controller/dockerman.lua:38
+#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/volumes.lua:73
+#: applications/luci-app-dockerman/luasrc/view/dockerman/overview.htm:187
+msgid "Volumes"
+msgstr ""
diff --git a/applications/luci-app-dockerman/po/uk/dockerman.po b/applications/luci-app-dockerman/po/uk/dockerman.po
index 67f477634d..0695cceb95 100644
--- a/applications/luci-app-dockerman/po/uk/dockerman.po
+++ b/applications/luci-app-dockerman/po/uk/dockerman.po
@@ -1,8 +1,15 @@
msgid ""
msgstr ""
+"PO-Revision-Date: 2020-09-04 13:36+0000\n"
+"Last-Translator: Olexandr Nesterenko <olexn@ukr.net>\n"
+"Language-Team: Ukrainian <https://hosted.weblate.org/projects/openwrt/"
+"luciapplicationsdockerman/uk/>\n"
"Language: uk\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: Weblate 4.3-dev\n"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:604
msgid "A list of kernel capabilities to add to the container"
@@ -10,7 +17,7 @@ msgstr ""
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua:181
msgid "Add"
-msgstr ""
+msgstr "Додати"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:580
msgid "Add host device to the container"
@@ -38,7 +45,7 @@ msgstr ""
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:67
msgid "Available"
-msgstr ""
+msgstr "Доступно"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:39
msgid "Base device"
@@ -108,7 +115,7 @@ msgstr ""
#: applications/luci-app-dockerman/luasrc/view/dockerman/newcontainer_resolve.htm:91
msgid "Cancel"
-msgstr ""
+msgstr "Скасувати"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:147
msgid "Client connection"
@@ -118,7 +125,7 @@ msgstr ""
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:676
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua:140
msgid "Command"
-msgstr ""
+msgstr "Команда"
#: applications/luci-app-dockerman/luasrc/view/dockerman/newcontainer_resolve.htm:100
msgid "Command line"
@@ -190,7 +197,7 @@ msgstr ""
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:361
msgid "DNS"
-msgstr ""
+msgstr "DNS"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:124
msgid "Default bridge"
@@ -198,7 +205,7 @@ msgstr ""
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:353
msgid "Device"
-msgstr ""
+msgstr "Пристрій"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:579
msgid "Device(--device)"
@@ -206,7 +213,7 @@ msgstr ""
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:386
msgid "Disconnect"
-msgstr ""
+msgstr "Від'єднати"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua:93
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/images.lua:71
@@ -252,13 +259,13 @@ msgstr ""
#: applications/luci-app-dockerman/luasrc/view/dockerman/container_file.htm:14
msgid "Download"
-msgstr ""
+msgstr "Завантажити"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/networks.lua:77
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:32
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/volumes.lua:85
msgid "Driver"
-msgstr ""
+msgstr "Драйвер"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:261
msgid "Duplicate/Edit"
@@ -295,7 +302,7 @@ msgstr ""
#: applications/luci-app-dockerman/luasrc/view/dockerman/container.htm:6
msgid "File"
-msgstr ""
+msgstr "Файл"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:314
msgid "Finish Time"
@@ -308,7 +315,7 @@ msgstr ""
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/networks.lua:83
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:96
msgid "Gateway"
-msgstr ""
+msgstr "Шлюз"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:25
msgid "Github"
@@ -316,7 +323,7 @@ msgstr ""
#: applications/luci-app-dockerman/luasrc/view/dockerman/cbi/inlinevalue.htm:4
msgid "Go to relevant configuration page"
-msgstr ""
+msgstr "Перейти до відповідної сторінки конфігурування"
#: applications/luci-app-dockerman/root/usr/share/rpcd/acl.d/luci-app-dockerman.json:3
msgid "Grant UCI access for luci-app-dockerman"
@@ -361,7 +368,7 @@ msgstr ""
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua:137
#: applications/luci-app-dockerman/luasrc/view/dockerman/images_import.htm:54
msgid "Image"
-msgstr ""
+msgstr "Образ"
#: applications/luci-app-dockerman/luasrc/controller/dockerman.lua:36
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/images.lua:124
@@ -385,7 +392,7 @@ msgstr ""
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:38
#: applications/luci-app-dockerman/luasrc/view/dockerman/container.htm:3
msgid "Info"
-msgstr ""
+msgstr "Інформація"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:64
msgid "Ingress"
@@ -406,7 +413,7 @@ msgstr ""
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:76
msgid "Internal"
-msgstr ""
+msgstr "Внутрішній"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:56
msgid "Ipvlan Mode"
@@ -457,7 +464,7 @@ msgstr ""
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:579
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:629
msgid "Memory"
-msgstr ""
+msgstr "Пам'ять"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:772
msgid "Memory Useage"
@@ -477,11 +484,11 @@ msgstr ""
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:47
msgid "Mode"
-msgstr ""
+msgstr "Режим"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/volumes.lua:90
msgid "Mount Point"
-msgstr ""
+msgstr "Точка монтування"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:588
msgid "Mount tmpfs directory"
@@ -495,7 +502,7 @@ msgstr ""
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:409
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/volumes.lua:83
msgid "Name"
-msgstr ""
+msgstr "Назва"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:29
msgid "Name of the network that can be selected during container creation"
@@ -505,7 +512,7 @@ msgstr ""
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:518
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua:130
msgid "Network"
-msgstr ""
+msgstr "Мережа"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/networks.lua:75
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:28
@@ -546,7 +553,7 @@ msgstr ""
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:72
msgid "Options"
-msgstr ""
+msgstr "Опції"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:37
msgid "Overlay network"
@@ -554,7 +561,7 @@ msgstr ""
#: applications/luci-app-dockerman/luasrc/controller/dockerman.lua:15
msgid "Overview"
-msgstr ""
+msgstr "Огляд"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/networks.lua:79
msgid "Parent Interface"
@@ -566,7 +573,7 @@ msgstr ""
#: applications/luci-app-dockerman/luasrc/view/dockerman/container_file.htm:7
msgid "Path"
-msgstr ""
+msgstr "Шлях"
#: applications/luci-app-dockerman/luasrc/view/dockerman/images_import.htm:54
msgid "Please input new tag"
@@ -587,7 +594,7 @@ msgstr ""
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:345
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua:133
msgid "Ports"
-msgstr ""
+msgstr "Порти"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:52
msgid "Private (Prevent communication between MAC VLANs)"
@@ -632,7 +639,7 @@ msgstr ""
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/networks.lua:109
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/volumes.lua:108
msgid "Remove"
-msgstr ""
+msgstr "Видалити"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/images.lua:43
#: applications/luci-app-dockerman/luasrc/view/dockerman/images_import.htm:82
@@ -654,7 +661,7 @@ msgstr ""
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:225
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua:200
msgid "Restart"
-msgstr ""
+msgstr "Перезавантажити"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:324
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:417
@@ -668,7 +675,7 @@ msgstr ""
#: applications/luci-app-dockerman/luasrc/view/dockerman/cbi/inlinevalue.htm:31
msgid "Reveal/hide password"
-msgstr ""
+msgstr "Показати/приховати пароль"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:551
msgid "Run command"
@@ -676,7 +683,7 @@ msgstr ""
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/images.lua:220
msgid "Save"
-msgstr ""
+msgstr "Зберегти"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:518
msgid "Set custom DNS servers"
@@ -696,7 +703,7 @@ msgstr ""
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/images.lua:140
msgid "Size"
-msgstr ""
+msgstr "Розмір"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:148
msgid "Specifies where the Docker daemon will listen for client connections"
@@ -705,11 +712,11 @@ msgstr ""
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:216
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua:191
msgid "Start"
-msgstr ""
+msgstr "Запустити"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:309
msgid "Start Time"
-msgstr ""
+msgstr "Час початку"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:778
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:779
@@ -720,16 +727,16 @@ msgstr ""
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:298
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua:126
msgid "Status"
-msgstr ""
+msgstr "Стан"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:234
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua:209
msgid "Stop"
-msgstr ""
+msgstr "Зупинити"
#: applications/luci-app-dockerman/luasrc/view/dockerman/newcontainer_resolve.htm:91
msgid "Submit"
-msgstr ""
+msgstr "Надіслати"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/networks.lua:81
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newnetwork.lua:91
@@ -802,7 +809,7 @@ msgstr ""
#: applications/luci-app-dockerman/luasrc/view/dockerman/container_file.htm:2
#: applications/luci-app-dockerman/luasrc/view/dockerman/container_file.htm:13
msgid "Upload"
-msgstr ""
+msgstr "Відвантажити"
#: applications/luci-app-dockerman/luasrc/view/dockerman/container_file.htm:46
msgid "Upload Error"
@@ -818,7 +825,7 @@ msgstr ""
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:329
msgid "User"
-msgstr ""
+msgstr "Користувач"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/newcontainer.lua:524
msgid "User(-u)"
diff --git a/applications/luci-app-https-dns-proxy/po/pt/https-dns-proxy.po b/applications/luci-app-https-dns-proxy/po/pt/https-dns-proxy.po
index 6a98aa04eb..feb836fb6d 100644
--- a/applications/luci-app-https-dns-proxy/po/pt/https-dns-proxy.po
+++ b/applications/luci-app-https-dns-proxy/po/pt/https-dns-proxy.po
@@ -1,6 +1,6 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2020-08-28 22:08+0000\n"
+"PO-Revision-Date: 2020-09-07 10:27+0000\n"
"Last-Translator: ssantos <ssantos@web.de>\n"
"Language-Team: Portuguese <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationshttps-dns-proxy/pt/>\n"
@@ -8,7 +8,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 4.2.1-dev\n"
+"X-Generator: Weblate 4.3-dev\n"
#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:72
msgid "%s is not installed or not found"
@@ -24,7 +24,7 @@ msgstr "AdGuard (Padrão)"
#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.alidns.dns.lua:3
msgid "AliDNS"
-msgstr ""
+msgstr "AliDNS"
#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/ca.cira.canadianshield.family.lua:3
msgid "CIRA Canadian Shield (Family)"
@@ -76,7 +76,7 @@ msgstr "DNS.SB"
#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/pub.doh.lua:3
msgid "DNSPod.cn Public DNS"
-msgstr ""
+msgstr "DNSPod.cn DNS público"
#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3
msgid "Digitale Gesellschaft"
diff --git a/applications/luci-app-https-dns-proxy/po/uk/https-dns-proxy.po b/applications/luci-app-https-dns-proxy/po/uk/https-dns-proxy.po
index cd0342d27d..878d59cd57 100644
--- a/applications/luci-app-https-dns-proxy/po/uk/https-dns-proxy.po
+++ b/applications/luci-app-https-dns-proxy/po/uk/https-dns-proxy.po
@@ -1,15 +1,15 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2020-03-11 01:51+0000\n"
+"PO-Revision-Date: 2020-09-04 13:36+0000\n"
"Last-Translator: Olexandr Nesterenko <olexn@ukr.net>\n"
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationshttps-dns-proxy/uk/>\n"
"Language: uk\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: Weblate 4.0-dev\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: Weblate 4.3-dev\n"
#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:72
msgid "%s is not installed or not found"
@@ -207,7 +207,7 @@ msgstr "та"
#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:78
msgid "disabled"
-msgstr ""
+msgstr "вимкнено"
#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3
msgid "rubyfish.cn"
diff --git a/applications/luci-app-nlbwmon/po/uk/nlbwmon.po b/applications/luci-app-nlbwmon/po/uk/nlbwmon.po
index 5098dfb75b..94880af3df 100644
--- a/applications/luci-app-nlbwmon/po/uk/nlbwmon.po
+++ b/applications/luci-app-nlbwmon/po/uk/nlbwmon.po
@@ -1,15 +1,15 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2020-02-17 11:51+0000\n"
+"PO-Revision-Date: 2020-09-04 13:36+0000\n"
"Last-Translator: Olexandr Nesterenko <olexn@ukr.net>\n"
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsnlbwmon/uk/>\n"
"Language: uk\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: Weblate 3.11-dev\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: Weblate 4.3-dev\n"
#: applications/luci-app-nlbwmon/htdocs/luci-static/resources/view/nlbw/display.js:550
msgid "%d IPv4-only hosts"
@@ -218,7 +218,7 @@ msgstr ""
#: applications/luci-app-nlbwmon/htdocs/luci-static/resources/view/nlbw/backup.js:24
msgid "Dismiss"
-msgstr ""
+msgstr "Закрити"
#: applications/luci-app-nlbwmon/root/usr/share/luci/menu.d/luci-app-nlbwmon.json:15
msgid "Display"
diff --git a/applications/luci-app-olsr-services/po/ru/olsr-services.po b/applications/luci-app-olsr-services/po/ru/olsr-services.po
index 333c33aba4..d62b026bd9 100644
--- a/applications/luci-app-olsr-services/po/ru/olsr-services.po
+++ b/applications/luci-app-olsr-services/po/ru/olsr-services.po
@@ -1,19 +1,19 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2019-12-26 18:23+0000\n"
-"Last-Translator: Alex Ky <esthomolupus@gmail.com>\n"
+"PO-Revision-Date: 2020-09-07 10:27+0000\n"
+"Last-Translator: Artem <KovalevArtem.ru@gmail.com>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsolsr-services/ru/>\n"
"Language: ru\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: Weblate 3.10\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: Weblate 4.3-dev\n"
#: applications/luci-app-olsr-services/luasrc/view/freifunk-services/services.htm:159
msgid "Internal services"
-msgstr ""
+msgstr "Внутренние службы"
#: applications/luci-app-olsr-services/luasrc/view/freifunk-services/services.htm:56
msgid ""
diff --git a/applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm b/applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm
index 6f3263590c..60f9e8e288 100644
--- a/applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm
+++ b/applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm
@@ -89,7 +89,7 @@
</select>
</div>
<div class="td left">
- <input class="cbi-button cbi-button-add" type="submit" onclick="vpn_add(); return false;" value="<%:Add%>" title="<%:Add template based configuration%>" /><br />
+ <input class="btn cbi-button cbi-button-add" type="submit" onclick="vpn_add(); return false;" value="<%:Add%>" title="<%:Add template based configuration%>" /><br />
</div>
</div>
<h4><%:OVPN configuration file upload%></h4>
@@ -101,7 +101,7 @@
<input type="file" name="ovpn_file" id="ovpn_file" accept="application/x-openvpn-profile,.ovpn" />
</div>
<div class="td left">
- <input class="cbi-button cbi-button-add" type="submit" onclick="vpn_upload(); return false;" value="<%:Upload%>" title="<%:Upload ovpn file%>" />
+ <input class="btn cbi-button cbi-button-add" type="submit" onclick="vpn_upload(); return false;" value="<%:Upload%>" title="<%:Upload ovpn file%>" />
</div>
</div>
</div>
diff --git a/applications/luci-app-shadowsocks-libev/po/uk/shadowsocks-libev.po b/applications/luci-app-shadowsocks-libev/po/uk/shadowsocks-libev.po
index b22962ebf6..a4f95e9133 100644
--- a/applications/luci-app-shadowsocks-libev/po/uk/shadowsocks-libev.po
+++ b/applications/luci-app-shadowsocks-libev/po/uk/shadowsocks-libev.po
@@ -1,15 +1,15 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2020-02-19 13:29+0000\n"
-"Last-Translator: Yurii Petrashko <yuripet@gmail.com>\n"
+"PO-Revision-Date: 2020-09-04 13:36+0000\n"
+"Last-Translator: Olexandr Nesterenko <olexn@ukr.net>\n"
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsshadowsocks-libev/uk/>\n"
"Language: uk\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: Weblate 3.11\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: Weblate 4.3-dev\n"
#: applications/luci-app-shadowsocks-libev/htdocs/luci-static/resources/view/shadowsocks-libev/instances.js:45
msgid "-- instance type --"
@@ -196,11 +196,11 @@ msgstr ""
#: applications/luci-app-shadowsocks-libev/htdocs/luci-static/resources/view/shadowsocks-libev/instances.js:93
msgid "Local IPv4 address"
-msgstr ""
+msgstr "Локальна адреса IPv4"
#: applications/luci-app-shadowsocks-libev/htdocs/luci-static/resources/view/shadowsocks-libev/instances.js:98
msgid "Local IPv6 address"
-msgstr ""
+msgstr "Локальна адреса IPv6"
#: applications/luci-app-shadowsocks-libev/htdocs/luci-static/resources/view/shadowsocks-libev/instances.js:26
#: applications/luci-app-shadowsocks-libev/root/usr/share/luci/menu.d/luci-app-shadowsocks-libev.json:14
diff --git a/applications/luci-app-simple-adblock/po/uk/simple-adblock.po b/applications/luci-app-simple-adblock/po/uk/simple-adblock.po
index e31da769e6..65402404bc 100644
--- a/applications/luci-app-simple-adblock/po/uk/simple-adblock.po
+++ b/applications/luci-app-simple-adblock/po/uk/simple-adblock.po
@@ -1,15 +1,15 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2020-04-02 22:33+0000\n"
-"Last-Translator: Yurii Petrashko <yuripet@gmail.com>\n"
+"PO-Revision-Date: 2020-09-04 13:36+0000\n"
+"Last-Translator: Olexandr Nesterenko <olexn@ukr.net>\n"
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationssimple-adblock/uk/>\n"
"Language: uk\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: Weblate 4.0-dev\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: Weblate 4.3-dev\n"
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:217
msgid "%s Error: %s"
@@ -232,11 +232,11 @@ msgstr ""
#: applications/luci-app-simple-adblock/luasrc/view/simple-adblock/js.htm:51
msgid "Loading"
-msgstr ""
+msgstr "Завантаження"
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:203
msgid "Message"
-msgstr ""
+msgstr "Повідомлення"
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:232
msgid "Output Verbosity Setting"
@@ -314,7 +314,7 @@ msgstr ""
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:132
msgid "Stopped"
-msgstr ""
+msgstr "Зупинено"
#: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:314
msgid "Store compressed cache"
diff --git a/applications/luci-app-transmission/po/zh_Hant/transmission.po b/applications/luci-app-transmission/po/zh_Hant/transmission.po
index b29d88ba6e..9cff8a2d1f 100644
--- a/applications/luci-app-transmission/po/zh_Hant/transmission.po
+++ b/applications/luci-app-transmission/po/zh_Hant/transmission.po
@@ -6,8 +6,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-10-08 14:06+0200\n"
-"PO-Revision-Date: 2020-06-30 13:41+0000\n"
-"Last-Translator: Hulen <shift0106@gmail.com>\n"
+"PO-Revision-Date: 2020-09-07 10:27+0000\n"
+"Last-Translator: tommymaple <godoffrog@gmail.com>\n"
"Language-Team: Chinese (Traditional) <https://hosted.weblate.org/projects/"
"openwrt/luciapplicationstransmission/zh_Hant/>\n"
"Language: zh_Hant\n"
@@ -15,7 +15,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 4.2-dev\n"
+"X-Generator: Weblate 4.3-dev\n"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:65
msgid "Alternative download speed"
@@ -144,7 +144,7 @@ msgstr "全域性設定"
#: applications/luci-app-transmission/root/usr/share/rpcd/acl.d/luci-app-transmission.json:3
msgid "Grant UCI access for luci-app-transmission"
-msgstr ""
+msgstr "授予UCI執行luci-app-transmission"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:289
msgid "Idle seeding limit"
@@ -295,14 +295,12 @@ msgid "RPC enabled"
msgstr "RPC 已啟用"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:249
-#, fuzzy
msgid "RPC host whitelist"
-msgstr "RPC 白名單"
+msgstr "RPC 主機 白名單"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:245
-#, fuzzy
msgid "RPC host whitelist enabled"
-msgstr "RPC 白名單已啟用"
+msgstr "RPC 主機白名單已啟用"
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:266
msgid "RPC password"
diff --git a/applications/luci-app-ttyd/po/uk/ttyd.po b/applications/luci-app-ttyd/po/uk/ttyd.po
index 982f8f06f3..e4c4271bec 100644
--- a/applications/luci-app-ttyd/po/uk/ttyd.po
+++ b/applications/luci-app-ttyd/po/uk/ttyd.po
@@ -1,15 +1,15 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2020-02-18 11:32+0000\n"
+"PO-Revision-Date: 2020-09-04 13:36+0000\n"
"Last-Translator: Olexandr Nesterenko <olexn@ukr.net>\n"
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsttyd/uk/>\n"
"Language: uk\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: Weblate 3.11\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: Weblate 4.3-dev\n"
#: applications/luci-app-ttyd/htdocs/luci-static/resources/view/ttyd/config.js:56
msgid "Accept only one client and exit on disconnection"
@@ -83,7 +83,7 @@ msgstr "Увімкнути SSL"
#: applications/luci-app-ttyd/htdocs/luci-static/resources/view/ttyd/config.js:74
msgid "Error"
-msgstr ""
+msgstr "Помилка"
#: applications/luci-app-ttyd/root/usr/share/rpcd/acl.d/luci-app-ttyd.json:3
msgid "Grant UCI access for luci-app-ttyd"
@@ -107,7 +107,7 @@ msgstr "Індекс"
#: applications/luci-app-ttyd/htdocs/luci-static/resources/view/ttyd/config.js:77
msgid "Info"
-msgstr ""
+msgstr "Інформація"
#: applications/luci-app-ttyd/htdocs/luci-static/resources/view/ttyd/config.js:24
msgid "Interface"
@@ -129,7 +129,7 @@ msgstr ""
#: applications/luci-app-ttyd/htdocs/luci-static/resources/view/ttyd/config.js:76
msgid "Notice"
-msgstr ""
+msgstr "Зауваження"
#: applications/luci-app-ttyd/htdocs/luci-static/resources/view/ttyd/config.js:56
msgid "Once"
@@ -219,7 +219,7 @@ msgstr ""
#: applications/luci-app-ttyd/htdocs/luci-static/resources/view/ttyd/config.js:75
msgid "Warning"
-msgstr ""
+msgstr "Застереження"
#: applications/luci-app-ttyd/root/usr/share/luci/menu.d/luci-app-ttyd.json:3
msgid "ttyd"
diff --git a/applications/luci-app-ttyd/root/usr/share/luci/menu.d/luci-app-ttyd.json b/applications/luci-app-ttyd/root/usr/share/luci/menu.d/luci-app-ttyd.json
index f76f9cfaa2..023117674c 100644
--- a/applications/luci-app-ttyd/root/usr/share/luci/menu.d/luci-app-ttyd.json
+++ b/applications/luci-app-ttyd/root/usr/share/luci/menu.d/luci-app-ttyd.json
@@ -1,6 +1,6 @@
{
"admin/services/ttyd": {
- "title": "ttyd",
+ "title": "Terminal",
"action": {
"type": "firstchild"
},
diff --git a/applications/luci-app-vpnbypass/po/uk/vpnbypass.po b/applications/luci-app-vpnbypass/po/uk/vpnbypass.po
index 4c8169bcb0..4c58e50b71 100644
--- a/applications/luci-app-vpnbypass/po/uk/vpnbypass.po
+++ b/applications/luci-app-vpnbypass/po/uk/vpnbypass.po
@@ -1,15 +1,15 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2020-05-02 19:45+0000\n"
-"Last-Translator: Yurii Petrashko <yuripet@gmail.com>\n"
+"PO-Revision-Date: 2020-09-04 13:36+0000\n"
+"Last-Translator: Olexandr Nesterenko <olexn@ukr.net>\n"
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsvpnbypass/uk/>\n"
"Language: uk\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: Weblate 4.1-dev\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: Weblate 4.3-dev\n"
#: applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua:26
msgid "%s (disabled)"
@@ -107,11 +107,11 @@ msgstr "Зупинити"
#: applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua:24
msgid "Stopped"
-msgstr ""
+msgstr "Зупинено"
#: applications/luci-app-vpnbypass/luasrc/controller/vpnbypass.lua:4
msgid "VPN"
-msgstr ""
+msgstr "VPN"
#: applications/luci-app-vpnbypass/luasrc/controller/vpnbypass.lua:7
msgid "VPN Bypass"
diff --git a/applications/luci-app-wireguard/po/uk/wireguard.po b/applications/luci-app-wireguard/po/uk/wireguard.po
index e4622cc505..4bb17b0534 100644
--- a/applications/luci-app-wireguard/po/uk/wireguard.po
+++ b/applications/luci-app-wireguard/po/uk/wireguard.po
@@ -1,15 +1,15 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2020-04-24 07:21+0000\n"
-"Last-Translator: strixaluco <maddox@i.ua>\n"
+"PO-Revision-Date: 2020-09-04 13:36+0000\n"
+"Last-Translator: Olexandr Nesterenko <olexn@ukr.net>\n"
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationswireguard/uk/>\n"
"Language: uk\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: Weblate 4.0.2-dev\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: Weblate 4.3-dev\n"
#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:149
msgid "Allowed IPs"
@@ -87,11 +87,11 @@ msgstr ""
#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:190
msgid "This section contains no values yet"
-msgstr ""
+msgstr "Ця секція поки що не містить значень"
#: applications/luci-app-wireguard/root/usr/share/luci/menu.d/luci-app-wireguard.json:3
msgid "WireGuard"
-msgstr ""
+msgstr "WireGuard"
#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:182
msgid "WireGuard Status"
diff --git a/applications/luci-app-xinetd/po/de/xinetd.po b/applications/luci-app-xinetd/po/de/xinetd.po
index 090f45e383..b42e9a0ecd 100644
--- a/applications/luci-app-xinetd/po/de/xinetd.po
+++ b/applications/luci-app-xinetd/po/de/xinetd.po
@@ -1,5 +1,14 @@
msgid ""
-msgstr "Content-Type: text/plain; charset=UTF-8\n"
+msgstr ""
+"PO-Revision-Date: 2020-09-04 13:36+0000\n"
+"Last-Translator: Andreas Götz <agoetz@tdt.de>\n"
+"Language-Team: German <https://hosted.weblate.org/projects/openwrt/"
+"luciapplicationsxinetd/de/>\n"
+"Language: de\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 4.3-dev\n"
#: applications/luci-app-xinetd/htdocs/luci-static/resources/view/xinetd/xinetd.js:147
msgid "Access times"
@@ -60,7 +69,7 @@ msgstr "Erwartet 'hh:mm-hh:mm'"
#: applications/luci-app-xinetd/htdocs/luci-static/resources/view/xinetd/xinetd.js:14
msgid "Expecting: non-empty value"
-msgstr "Nicht leerer Wert erforderlich"
+msgstr "Erwartet: nicht leerer Wert"
#: applications/luci-app-xinetd/htdocs/luci-static/resources/view/xinetd/xinetd.js:187
msgid "Failed attempts"
diff --git a/applications/luci-app-yggdrasil/po/zh_Hans/yggdrasil.po b/applications/luci-app-yggdrasil/po/zh_Hans/yggdrasil.po
index 168e024b9b..d0f6cc63b6 100644
--- a/applications/luci-app-yggdrasil/po/zh_Hans/yggdrasil.po
+++ b/applications/luci-app-yggdrasil/po/zh_Hans/yggdrasil.po
@@ -1,22 +1,22 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2020-03-07 21:24+0000\n"
-"Last-Translator: liushuyu011 <liushuyu011@gmail.com>\n"
+"PO-Revision-Date: 2020-09-07 10:27+0000\n"
+"Last-Translator: Dounx <imdounx@gmail.com>\n"
"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
"openwrt/luciapplicationsyggdrasil/zh_Hans/>\n"
"Language: zh_Hans\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 4.0-dev\n"
+"X-Generator: Weblate 4.3-dev\n"
#: applications/luci-app-yggdrasil/htdocs/luci-static/resources/view/yggdrasil/status.js:33
msgid "Active peers"
-msgstr ""
+msgstr "活跃的对等端"
#: applications/luci-app-yggdrasil/htdocs/luci-static/resources/view/yggdrasil/settings.js:56
msgid "Address to listen for incoming connections"
-msgstr ""
+msgstr "侦听传入连接的地址"
#: applications/luci-app-yggdrasil/htdocs/luci-static/resources/view/yggdrasil/session_firewall.js:16
msgid "Allow from direct"
@@ -24,23 +24,24 @@ msgstr "允许直连"
#: applications/luci-app-yggdrasil/htdocs/luci-static/resources/view/yggdrasil/session_firewall.js:18
msgid "Allow from remote"
-msgstr ""
+msgstr "允许远程访问"
#: applications/luci-app-yggdrasil/htdocs/luci-static/resources/view/yggdrasil/session_firewall.js:17
msgid "Allow network traffic from directly connected peers"
-msgstr ""
+msgstr "允许来自直接连接的对等端的网络流量"
#: applications/luci-app-yggdrasil/htdocs/luci-static/resources/view/yggdrasil/session_firewall.js:19
+#, fuzzy
msgid ""
"Allow network traffic from remote nodes on the network that you are not "
"directly peered with"
-msgstr ""
+msgstr "允许来自您未直接与之对等的网络上远程节点的网络流量"
#: applications/luci-app-yggdrasil/htdocs/luci-static/resources/view/yggdrasil/session_firewall.js:21
msgid ""
"Allow outbound network traffic regardless of AllowFromDirect or "
"AllowFromRemote"
-msgstr ""
+msgstr "无论 AllowFromDirect 还是 AllowFromRemote,都允许出站网络流量"
#: applications/luci-app-yggdrasil/htdocs/luci-static/resources/view/yggdrasil/tunnel_routing.js:14
msgid ""
@@ -49,12 +50,15 @@ msgid ""
"similar to a VPN tunnel. Tunnelling works between any two nodes and does not "
"require them to be directly peered."
msgstr ""
+"允许通过 Yggdrasil 隧道传输非 Yggdrasil 流量。这有效地使您可以使用 Yggdrasil 来路由或桥接其他网络,类似于 VPN "
+"隧道。隧道在任何两个节点之间工作,并且不需要直接对等。"
#: applications/luci-app-yggdrasil/htdocs/luci-static/resources/view/yggdrasil/session_firewall.js:21
msgid "Always allow outbound"
msgstr "总是允许出站流量"
#: applications/luci-app-yggdrasil/htdocs/luci-static/resources/view/yggdrasil/session_firewall.js:31
+#, fuzzy
msgid "Blacklisted public keys"
msgstr "已拉黑的公钥"
@@ -66,10 +70,12 @@ msgid ""
"prevents this, so that only items specified in \"NodeInfo\" are sent back if "
"specified."
msgstr ""
+"默认情况下,nodeinfo 包含一些默认值,包括平台,体系结构和 Yggdrasil 版本。这些在调查网络和诊断网络路由问题时会有所帮助。启用 "
+"nodeinfo 隐私选项可防止这种情况,因此,如果启用,则仅发送回在“ NodeInfo”中指定的项目。"
#: applications/luci-app-yggdrasil/htdocs/luci-static/resources/view/yggdrasil/settings.js:22
msgid "Enable NodeInfo privacy"
-msgstr ""
+msgstr "启用 NodeInfo 隐私"
#: applications/luci-app-yggdrasil/htdocs/luci-static/resources/view/yggdrasil/session_firewall.js:14
msgid "Enable session firewall"
@@ -94,7 +100,7 @@ msgstr "常规设置"
#: applications/luci-app-yggdrasil/root/usr/share/rpcd/acl.d/luci-app-yggdrasil.json:3
msgid "Grant access to LuCI app yggdrasil"
-msgstr ""
+msgstr "授予访问LuCI app yggdrasil的权限"
#: applications/luci-app-yggdrasil/htdocs/luci-static/resources/view/yggdrasil/tunnel_routing.js:26
msgid "IPv4 local subnet"
@@ -110,14 +116,16 @@ msgid "IPv4 subnet"
msgstr "IPv4 子网"
#: applications/luci-app-yggdrasil/htdocs/luci-static/resources/view/yggdrasil/tunnel_routing.js:20
+#, fuzzy
msgid "IPv4 subnets belonging to remote nodes, mapped to the node's public"
-msgstr ""
+msgstr "属于远程节点的IPv4子网,映射到该节点的公共节点"
#: applications/luci-app-yggdrasil/htdocs/luci-static/resources/view/yggdrasil/tunnel_routing.js:27
+#, fuzzy
msgid ""
"IPv4 subnets belonging to this node's end of the tunnels. Only traffic from "
"these ranges will be tunnelled."
-msgstr ""
+msgstr "属于隧道的此节点末端的IPv4子网。只有这些范围内的流量将通过隧道传输。"
#: applications/luci-app-yggdrasil/htdocs/luci-static/resources/view/yggdrasil/tunnel_routing.js:40
msgid "IPv6 local subnet"
@@ -134,7 +142,7 @@ msgstr "IPv6 子网"
#: applications/luci-app-yggdrasil/htdocs/luci-static/resources/view/yggdrasil/tunnel_routing.js:34
msgid "IPv6 subnets belonging to remote nodes, mapped to the node's public"
-msgstr ""
+msgstr "属于远程节点的 IPv6 子网,映射到该节点的公共节点"
#: applications/luci-app-yggdrasil/htdocs/luci-static/resources/view/yggdrasil/tunnel_routing.js:41
msgid ""
diff --git a/libs/luci-lib-ip/src/ip.c b/libs/luci-lib-ip/src/ip.c
index 10d11a365b..9b157da265 100644
--- a/libs/luci-lib-ip/src/ip.c
+++ b/libs/luci-lib-ip/src/ip.c
@@ -837,6 +837,12 @@ static int cidr_tolinklocal(lua_State *L)
p2->bits = AF_BITS(AF_INET6);
p2->addr.u8[0] = 0xFE;
p2->addr.u8[1] = 0x80;
+ p2->addr.u8[2] = 0x00;
+ p2->addr.u8[3] = 0x00;
+ p2->addr.u8[4] = 0x00;
+ p2->addr.u8[5] = 0x00;
+ p2->addr.u8[6] = 0x00;
+ p2->addr.u8[7] = 0x00;
p2->addr.u8[8] = p1->addr.u8[0] ^ 0x02;
p2->addr.u8[9] = p1->addr.u8[1];
p2->addr.u8[10] = p1->addr.u8[2];
diff --git a/modules/luci-base/po/de/base.po b/modules/luci-base/po/de/base.po
index 5dfa89cee5..2b9f32a671 100644
--- a/modules/luci-base/po/de/base.po
+++ b/modules/luci-base/po/de/base.po
@@ -3,8 +3,8 @@ msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-05-26 17:57+0200\n"
-"PO-Revision-Date: 2020-08-24 04:29+0000\n"
-"Last-Translator: Andreas Dorfer <adorferen@gmail.com>\n"
+"PO-Revision-Date: 2020-09-04 13:36+0000\n"
+"Last-Translator: Andreas Götz <agoetz@tdt.de>\n"
"Language-Team: German <https://hosted.weblate.org/projects/openwrt/luci/de/>"
"\n"
"Language: de\n"
@@ -12,7 +12,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.2.1-dev\n"
+"X-Generator: Weblate 4.3-dev\n"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:929
msgid "%.1f dB"
@@ -1770,7 +1770,7 @@ msgstr "Verbindungstrennung fehlgeschlagen"
#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:48
msgid "Disconnection attempt failed."
-msgstr ""
+msgstr "Trennungsversuch fehlgeschlagen."
#: modules/luci-base/htdocs/luci-static/resources/form.js:606
#: modules/luci-base/htdocs/luci-static/resources/form.js:2861
@@ -1814,7 +1814,7 @@ msgstr ""
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:81
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:86
msgid "Do not create host route to peer (optional)."
-msgstr ""
+msgstr "Keine Hostroute zum Peer erstellen (optional)."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:219
msgid "Do not forward requests that cannot be answered by public name servers"
@@ -1871,7 +1871,7 @@ msgstr "runter"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:402
msgid "Down Delay"
-msgstr ""
+msgstr "Down Delay"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:366
msgid "Download backup"
@@ -1891,7 +1891,7 @@ msgstr "Ziehen zum Umsortieren"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:341
msgid "Drop Duplicate Frames"
-msgstr ""
+msgstr "Doppelte Frames verwerfen"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/dropbear.js:12
msgid "Dropbear Instance"
@@ -1991,7 +1991,7 @@ msgstr "DNS-Lookups aktivieren"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:292
msgid "Enable Dynamic Shuffling Of Flows"
-msgstr ""
+msgstr "Dynamisches Mischen von Flows aktivieren"
#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:60
msgid "Enable HE.net dynamic endpoint update"
@@ -2060,7 +2060,7 @@ msgstr ""
#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:80
#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:75
msgid "Enable rx checksum"
-msgstr ""
+msgstr "RX-Prüfsumme aktivieren"
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:76
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:81
@@ -2075,7 +2075,7 @@ msgstr "Dieses Netzwerk aktivieren"
#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:84
#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:79
msgid "Enable tx checksum"
-msgstr ""
+msgstr "TX-Prüfsumme aktivieren"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:243
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:352
@@ -2161,11 +2161,11 @@ msgstr "Netzwerk Switch"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:270
msgid "Every 30 seconds (slow, 0)"
-msgstr ""
+msgstr "Alle 30 Sekunden (langsam, 0)"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:271
msgid "Every second (fast, 1)"
-msgstr ""
+msgstr "Jede Sekunde (schnell, 1)"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:399
msgid "Exclude interfaces"
@@ -2193,7 +2193,7 @@ msgstr "Erwarte: %s"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:48
msgid "Expecting: non-empty value"
-msgstr ""
+msgstr "Erwartet: nicht leerer Wert"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:50
msgid "Expires"
@@ -2236,11 +2236,11 @@ msgstr "Zusätzliche SSH-Kommando-Optionen"
#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:83
msgid "Extra pppd options"
-msgstr ""
+msgstr "Zusätzliche pppd-Optionen"
#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:81
msgid "Extra sstpc options"
-msgstr ""
+msgstr "Zusätzliche sstpc-Optionen"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1456
msgid "FT over DS"
@@ -2299,15 +2299,15 @@ msgstr "Windowsanfragen filtern"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:388
msgid "Filtering for all slaves, no validation"
-msgstr ""
+msgstr "Filterung für alle Slaves, keine Validierung"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:389
msgid "Filtering for all slaves, validation only for active slave"
-msgstr ""
+msgstr "Filterung für alle Slaves, Validierung nur für aktiven Slave"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:390
msgid "Filtering for all slaves, validation only for backup slaves"
-msgstr ""
+msgstr "Filterung für alle Slaves, Validierung nur für Backup-Slaves"
#: modules/luci-compat/luasrc/model/network/proto_ncm.lua:65
#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:23
@@ -2467,19 +2467,19 @@ msgstr "Nur GPRS"
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:10
msgid "GRE tunnel over IPv4"
-msgstr ""
+msgstr "GRE-Tunnel über IPv4"
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:10
msgid "GRE tunnel over IPv6"
-msgstr ""
+msgstr "GRE-Tunnel über IPv6"
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:10
msgid "GRETAP tunnel over IPv4"
-msgstr ""
+msgstr "GRETAP-Tunnel über IPv4"
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:10
msgid "GRETAP tunnel over IPv6"
-msgstr ""
+msgstr "GRETAP-Tunnel über IPv6"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:44
msgid "Gateway"
@@ -2519,7 +2519,7 @@ msgstr "Konfiguration generieren"
#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:66
msgid "Generate Key"
-msgstr ""
+msgstr "Key generieren"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1460
msgid "Generate PMK locally"
@@ -2576,7 +2576,7 @@ msgstr "Gewähre Zugriff auf LuCI-OpenConnect-Prozeduren"
#: protocols/luci-proto-wireguard/root/usr/share/rpcd/acl.d/luci-wireguard.json:3
msgid "Grant access to LuCI Wireguard procedures"
-msgstr ""
+msgstr "Zugriff auf LuCI Wireguard-Verfahren gewähren"
#: modules/luci-mod-system/root/usr/share/rpcd/acl.d/luci-mod-system.json:19
msgid "Grant access to SSH configuration"
@@ -2676,7 +2676,7 @@ msgstr "Anzahl Header-Error-Code-Fehler (HEC)"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/heartbeat.js:5
msgid "Heartbeat interval (kernel: heartbeat)"
-msgstr ""
+msgstr "Heartbeat-Intervall (kernel: heartbeat)"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:100
msgid ""
@@ -2744,11 +2744,11 @@ msgstr "Hybrid"
#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:53
#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:48
msgid "ID used to uniquely identify the VXLAN"
-msgstr ""
+msgstr "ID zur eindeutigen Identifizierung des VXLAN"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:206
msgid "IEEE 802.3ad Dynamic link aggregation (802.3ad, 4)"
-msgstr ""
+msgstr "IEEE 802.3ad Dynamic Link Zusammenfassung (802.3ad, 4)"
#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:75
msgid "IKE DH Group"
@@ -2944,7 +2944,7 @@ msgstr "IPv6 Endung"
#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:51
msgid "IPv6 support"
-msgstr ""
+msgstr "IPv6-Unterstützung"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:56
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js:57
@@ -2982,6 +2982,8 @@ msgstr "Aktiviert die Benutzung von 1DES, wenn ausgewählt"
#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:51
msgid "If checked, adds \"+ipv6\" to the pppd options"
msgstr ""
+"Wenn diese Option aktiviert ist, wird den pppd-Optionen \"+ ipv6\" "
+"hinzugefügt"
#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:93
msgid "If checked, encryption is disabled"
@@ -3099,21 +3101,21 @@ msgstr "Eingehend:"
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:92
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:97
msgid "Incoming checksum"
-msgstr ""
+msgstr "Eingehende Prüfsumme"
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:82
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:87
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:84
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:89
msgid "Incoming key"
-msgstr ""
+msgstr "Eingehender Schlüssel"
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:92
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:97
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:94
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:99
msgid "Incoming serialization"
-msgstr ""
+msgstr "Eingehende Serialisierung"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:166
msgid "Info"
@@ -3244,7 +3246,7 @@ msgstr "Interner Serverfehler"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:283
msgid "Interval For Sending Learning Packets"
-msgstr ""
+msgstr "Intervall für das Senden von Lernpaketen"
#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:192
#: modules/luci-compat/luasrc/view/cbi/tsection.htm:42
@@ -3273,6 +3275,8 @@ msgid ""
"Invalid bearer list. Possibly too many bearers created. This protocol "
"supports one and only one bearer."
msgstr ""
+"Ungültige Trägerliste. Möglicherweise wurden zu viele Träger geschaffen. "
+"Dieses Protokoll unterstützt nur einen Träger."
#: modules/luci-base/htdocs/luci-static/resources/rpc.js:405
msgid "Invalid command"
@@ -3292,7 +3296,7 @@ msgstr ""
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:76
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:81
msgid "Invalid value"
-msgstr ""
+msgstr "Ungültiger Wert"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1075
msgid "Isolate Clients"
@@ -3355,14 +3359,14 @@ msgstr "Schlüssel Nr. %d"
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:84
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:89
msgid "Key for incoming packets (optional)."
-msgstr ""
+msgstr "Schlüssel für eingehende Pakete (optional)."
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:86
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:91
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:88
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:93
msgid "Key for outgoing packets (optinal)."
-msgstr ""
+msgstr "Schlüssel für ausgehende Pakete (optional)."
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/processes.js:54
msgid "Kill"
@@ -3379,7 +3383,7 @@ msgstr "L2TP Server"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:267
msgid "LACPDU Packets"
-msgstr ""
+msgstr "LACPDU-Pakete"
#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:131
#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:115
@@ -3493,11 +3497,11 @@ msgstr "Verbindungsdauer"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:123
msgid "Link Aggregation (Channel Bonding)"
-msgstr ""
+msgstr "Link Zusammenfassung (Channel Bonding)"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:348
msgid "Link Monitoring"
-msgstr ""
+msgstr "Linküberwachung"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/netdev.js:23
msgid "Link On"
@@ -3688,11 +3692,15 @@ msgid ""
"Logical network from which to select the local endpoint if local IPv6 "
"address is empty and no WAN IPv6 is available (optional)."
msgstr ""
+"Logisches Netzwerk, aus dem der lokale Endpunkt ausgewählt werden kann, wenn "
+"die lokale IPv6-Adresse leer ist und kein WAN-IPv6 verfügbar ist (optional)."
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:50
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:55
msgid "Logical network to which the tunnel will be added (bridged) (optional)."
msgstr ""
+"Logisches Netzwerk, zu dem der Tunnel hinzugefügt wird (überbrückt) "
+"(optional)."
#: modules/luci-base/luasrc/view/sysauth.htm:38
msgid "Login"
@@ -3717,7 +3725,7 @@ msgstr "MAC"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:251
msgid "MAC Address For The Actor"
-msgstr ""
+msgstr "MAC-Adresse für den Actor"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:38
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2069
@@ -3768,15 +3776,15 @@ msgstr "MHz"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:353
msgid "MII"
-msgstr ""
+msgstr "MII"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:421
msgid "MII / ETHTOOL ioctls"
-msgstr ""
+msgstr "MII / ETHTOOL ioctls"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:394
msgid "MII Interval"
-msgstr ""
+msgstr "MII Intervall"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:54
#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:53
@@ -3880,11 +3888,11 @@ msgstr "Methode nicht gefunden"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:349
msgid "Method of link monitoring"
-msgstr ""
+msgstr "Methode zur Verbindungsüberwachung"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:418
msgid "Method to determine link status"
-msgstr ""
+msgstr "Methode zur Bestimmung des Verbindungsstatus"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:46
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:165
@@ -3895,7 +3903,7 @@ msgstr "Metrik"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:235
msgid "Minimum Number of Links"
-msgstr ""
+msgstr "Mindestanzahl von Links"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:202
msgid "Mirror monitor port"
@@ -3929,13 +3937,15 @@ msgstr "Modell"
#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:43
msgid "Modem bearer teardown in progress."
-msgstr ""
+msgstr "Modemträger Teardown läuft."
#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:42
msgid ""
"Modem connection in progress. Please wait. This process will timeout after 2 "
"minutes."
msgstr ""
+"Modemverbindung läuft. Bitte warten. Dieser Vorgang wird nach 2 Minuten "
+"unterbochen."
#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:72
msgid "Modem default"
@@ -3951,7 +3961,7 @@ msgstr "Modemgerät"
#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:41
msgid "Modem disconnection in progress. Please wait."
-msgstr ""
+msgstr "Modemtrennung läuft. Bitte warten."
#: modules/luci-compat/luasrc/model/network/proto_ncm.lua:66
#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:24
@@ -3966,7 +3976,7 @@ msgstr "Wartezeit für Modeminitialisierung"
#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:44
msgid "Modem is disabled."
-msgstr ""
+msgstr "Modem ist deaktiviert."
#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:52
msgid "ModemManager"
@@ -4110,7 +4120,7 @@ msgstr "Netzwerk-Boot-Image"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/netdev.js:7
msgid "Network device activity (kernel: netdev)"
-msgstr ""
+msgstr "Netzwerkgeräteaktivität (Kernel: netdev)"
#: modules/luci-base/htdocs/luci-static/resources/network.js:15
#: modules/luci-compat/luasrc/model/network.lua:33
@@ -4120,7 +4130,7 @@ msgstr "Netzwerkgerät ist nicht vorhanden"
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:50
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:55
msgid "Network interface"
-msgstr ""
+msgstr "Netzwerkschnittstelle"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:777
msgid "New interface for \"%s\" can not be created: %s"
@@ -4182,7 +4192,7 @@ msgstr "Keine Dateien gefunden"
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:81
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:86
msgid "No host route"
-msgstr ""
+msgstr "Keine Hostroute"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:674
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:142
@@ -4199,11 +4209,12 @@ msgstr "Kein passendes delegiertes Prefix"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:140
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:143
msgid "No more slaves available"
-msgstr ""
+msgstr "Keine Slaves mehr verfügbar"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:187
msgid "No more slaves available, can not save interface"
msgstr ""
+"Keine Slaves mehr verfügbar, Schnittstelle kann nicht gespeichert werden"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:251
msgid "No negative cache"
@@ -4232,7 +4243,7 @@ msgstr "Keine Regeln in dieser Kette."
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:384
msgid "No validation or filtering"
-msgstr ""
+msgstr "Keine Validierung oder Filterung"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:152
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:825
@@ -4311,7 +4322,7 @@ msgstr "DNS-Auflösung"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:332
msgid "Number of IGMP membership reports"
-msgstr ""
+msgstr "Anzahl der IGMP-Mitgliedschaftsberichte"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:355
msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
@@ -4325,7 +4336,7 @@ msgstr "Für Kompression benutze parallele Prozessanzahl"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:309
msgid "Number of peer notifications after failover event"
-msgstr ""
+msgstr "Anzahl der Peer-Benachrichtigungen nach dem Failover-Ereignis"
#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:69
msgid "Obfuscated Group Password"
@@ -4393,6 +4404,8 @@ msgstr "Ein oder mehr benötigte Felder sind nicht ausgefüllt!"
msgid ""
"Only if current active slave fails and the primary slave is up (failure, 2)"
msgstr ""
+"Nur wenn der aktuell aktive Slave ausfällt und der primäre Slave aktiv ist ("
+"Fehler, 2)"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:444
#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:19
@@ -4521,21 +4534,21 @@ msgstr "Ausgehend:"
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:93
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:98
msgid "Outgoing checksum"
-msgstr ""
+msgstr "Ausgehende Prüfsumme"
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:86
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:91
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:88
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:93
msgid "Outgoing key"
-msgstr ""
+msgstr "Ausgehender Schlüssel"
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:93
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:98
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:95
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:100
msgid "Outgoing serialization"
-msgstr ""
+msgstr "Ausgehende Serialisierung"
#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:50
msgid "Output Interface"
@@ -4733,7 +4746,7 @@ msgstr "Pakete"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:275
msgid "Packets To Transmit Before Moving To Next Slave"
-msgstr ""
+msgstr "Zu sendende Pakete, bevor zum nächsten Slave übergegangen wird"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:152
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:825
@@ -4839,7 +4852,7 @@ msgstr "Perfect Forward Secrecy"
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:95
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:100
msgid "Perform outgoing packets serialization (optional)."
-msgstr ""
+msgstr "Serialisierung ausgehender Pakete durchführen (optional)."
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/reboot.js:28
msgid "Perform reboot"
@@ -4951,17 +4964,22 @@ msgstr "Unterbindet Client-Client-Verkehr"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:211
msgid "Primary Slave"
-msgstr ""
+msgstr "Primärer Slave"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:228
msgid ""
"Primary becomes active slave when it comes back up if speed and duplex "
"better than current slave (better, 1)"
msgstr ""
+"Der primäre wird zum aktiven Slave, wenn er wieder hochfährt und wenn "
+"Geschwindigkeit und Duplex zusätzlich besser sind als der aktuelle Slave ("
+"besser, 1)"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:227
msgid "Primary becomes active slave whenever it comes back up (always, 0)"
msgstr ""
+"Der Primäre wird immer dann zum aktiven Slave, wenn er wieder hochfährt ("
+"immer 0)"
#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:61
msgid "Private Key"
@@ -5198,12 +5216,12 @@ msgstr "Entfernte IPv4-Adresse oder Hostname"
#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:40
msgid "Remote IPv6 address"
-msgstr ""
+msgstr "Remote-IPv6-Adresse"
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:42
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:42
msgid "Remote IPv6 address or FQDN"
-msgstr ""
+msgstr "Remote-IPv6-Adresse oder FQDN"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:849
msgid "Remove"
@@ -5230,14 +5248,14 @@ msgstr "Anfrage-Timeout"
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:92
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:97
msgid "Require incoming checksum (optional)."
-msgstr ""
+msgstr "Eingehende Prüfsumme erforderlich (optional)."
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:92
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:97
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:94
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:99
msgid "Require incoming packets serialization (optional)."
-msgstr ""
+msgstr "Serialisierung eingehender Pakete erforderlich (optional)."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1610
msgid "Required"
@@ -5295,7 +5313,7 @@ msgstr "Benötigt \"hostapd\" mit SAE-Support"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1237
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1238
msgid "Requires hostapd with WEP support"
-msgstr ""
+msgstr "Benötigt Hostapd mit WEP-Unterstützung"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1607
msgid ""
@@ -5345,11 +5363,11 @@ msgstr "Benötigt \"wpa-supplicant\" mit SAE-Support"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1251
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1252
msgid "Requires wpa-supplicant with WEP support"
-msgstr ""
+msgstr "Benötigt wpa-Supplicant mit WEP-Unterstützung"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:224
msgid "Reselection policy for primary slave"
-msgstr ""
+msgstr "Neuauswahlrichtlinie für primären Slave"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2203
#: modules/luci-base/luasrc/view/sysauth.htm:39
@@ -5432,7 +5450,7 @@ msgstr "Wurzelverzeichnis erzeugen"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:202
msgid "Round-Robin policy (balance-rr, 0)"
-msgstr ""
+msgstr "Round-Robin-Richtlinie (balance-rr, 0)"
#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:159
msgid "Route Allowed IPs"
@@ -5525,11 +5543,11 @@ msgstr "SSID"
#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:9
msgid "SSTP"
-msgstr ""
+msgstr "SSTP"
#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:41
msgid "SSTP Server"
-msgstr ""
+msgstr "SSTP-Server"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:339
msgid "SWAP"
@@ -5603,6 +5621,8 @@ msgstr "Datei auswählen…"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:318
msgid "Selects the transmit hash policy to use for slave selection"
msgstr ""
+"Wählt die Sende-Hash-Richtlinie aus, die für die Slave-Auswahl verwendet "
+"werden soll"
#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:144
#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:128
@@ -5653,7 +5673,7 @@ msgstr ""
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:300
msgid "Set same MAC Address to all slaves"
-msgstr ""
+msgstr "Für alle Slaves dieselbe MAC-Adresse einstellen"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:642
msgid "Set this interface as master for the dhcpv6 relay."
@@ -5661,11 +5681,13 @@ msgstr "Diese Schnittstelle als DHCPv6-Relay Master festlegen."
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:304
msgid "Set to currently active slave (active, 1)"
-msgstr ""
+msgstr "Auf aktuell aktiven Slave setzen (aktiv, 1)"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:305
msgid "Set to first slave added to the bond (follow, 2)"
msgstr ""
+"Auf den ersten Slave setzen, der der Bindung hinzugefügt wurde (folgen Sie, "
+"2)"
#: modules/luci-compat/luasrc/model/network/proto_modemmanager.lua:55
#: modules/luci-compat/luasrc/model/network/proto_qmi.lua:55
@@ -5762,7 +5784,7 @@ msgstr "Zur Navigation springen"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:178
msgid "Slave Interfaces"
-msgstr ""
+msgstr "Slave-Schnittstellen"
#: modules/luci-base/htdocs/luci-static/resources/network.js:2883
#: modules/luci-compat/luasrc/model/network.lua:1428
@@ -5805,29 +5827,32 @@ msgstr "Quelladresse"
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:50
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:50
msgid "Source interface"
-msgstr ""
+msgstr "Quellschnittstelle"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:342
msgid ""
"Specifies that duplicate frames (received on inactive ports) should be "
"dropped or delivered"
msgstr ""
+"Gibt an, dass doppelte Frames (die an inaktiven Ports empfangen werden) "
+"gelöscht oder zugestellt werden sollen"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:358
msgid "Specifies the ARP link monitoring frequency in milliseconds"
-msgstr ""
+msgstr "Gibt die Häufigkeit der ARP-Verbindungsüberwachung in Millisekunden an"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:366
msgid "Specifies the IP addresses to use for ARP monitoring"
msgstr ""
+"Gibt die IP-Adressen an, die für die ARP-Überwachung verwendet werden sollen"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:395
msgid "Specifies the MII link monitoring frequency in milliseconds"
-msgstr ""
+msgstr "Gibt die Häufigkeit der MII-Verbindungsüberwachung in Millisekunden an"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:259
msgid "Specifies the aggregation selection logic to use"
-msgstr ""
+msgstr "Gibt die zu verwendende Aggregationsauswahllogik an"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:292
msgid "Specifies the directory the device is attached to"
@@ -5838,6 +5863,9 @@ msgid ""
"Specifies the mac-address for the actor in protocol packet exchanges "
"(LACPDUs). If empty, masters' mac address defaults to system default"
msgstr ""
+"Gibt die Mac-Adresse für den Akteur beim Protokollpaketaustausch (LACPDUs) "
+"an. Wenn leer, wird die Mac-Adresse des Masters standardmäßig als Standard "
+"festgelegt"
#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:175
msgid ""
@@ -5870,100 +5898,133 @@ msgid ""
"Specifies the minimum number of links that must be active before asserting "
"carrier"
msgstr ""
+"Gibt die Mindestanzahl von Links an, die aktiv sein müssen, bevor der "
+"Netzbetreiber aktiviert wird"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:200
msgid "Specifies the mode to be used for this bonding interface"
msgstr ""
+"Gibt den Modus an, der für diese Verbindungsschnittstelle verwendet werden "
+"soll"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:333
msgid ""
"Specifies the number of IGMP membership reports to be issued after a "
"failover event in 200ms intervals"
msgstr ""
+"Gibt die Anzahl der IGMP-Mitgliedschaftsberichte an, die nach einem Failover-"
+"Ereignis in Intervallen von 200 ms ausgegeben werden sollen"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:276
msgid ""
"Specifies the number of packets to transmit through a slave before moving to "
"the next one"
msgstr ""
+"Gibt die Anzahl der Pakete an, die über einen Slave übertragen werden "
+"sollen, bevor zum nächsten übergegangen wird"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:310
msgid ""
"Specifies the number of peer notifications (gratuitous ARPs and unsolicited "
"IPv6 Neighbor Advertisements) to be issued after a failover event"
msgstr ""
+"Gibt die Anzahl der Peer-Benachrichtigungen (überflüssige ARPs und "
+"unerwünschte IPv6-Nachbaranzeigen) an, die nach einem Failover-Ereignis "
+"ausgegeben werden sollen"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:284
msgid ""
"Specifies the number of seconds between instances where the bonding driver "
"sends learning packets to each slaves peer switch"
msgstr ""
+"Gibt die Anzahl der Sekunden zwischen Instanzen an, in denen der "
+"Bindungstreiber Lernpakete an jeden Peer-Switch des Slaves sendet"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:374
msgid "Specifies the quantity of ARP IP targets that must be reachable"
-msgstr ""
+msgstr "Gibt die Anzahl der ARP-IP-Ziele an, die erreichbar sein müssen"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:268
msgid ""
"Specifies the rate in which the link partner will be asked to transmit "
"LACPDU packets"
msgstr ""
+"Gibt die Rate an, mit der der Verbindungspartner aufgefordert wird, LACPDU-"
+"Pakete zu übertragen"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:225
msgid ""
"Specifies the reselection policy for the primary slave when failure of the "
"active slave or recovery of the primary slave occurs"
msgstr ""
+"Gibt die Neuauswahlrichtlinie für den primären Slave an, wenn ein Ausfall "
+"des aktiven Slaves oder eine Wiederherstellung des primären Slaves auftritt"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:244
msgid "Specifies the system priority"
-msgstr ""
+msgstr "Gibt die Systempriorität an"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:403
msgid ""
"Specifies the time in milliseconds to wait before disabling a slave after a "
"link failure detection"
msgstr ""
+"Gibt die Zeit in Millisekunden an, die gewartet werden soll, bevor ein Slave "
+"nach einer Verbindungsfehlererkennung deaktiviert wird"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:411
msgid ""
"Specifies the time in milliseconds to wait before enabling a slave after a "
"link recovery detection"
msgstr ""
+"Gibt die Zeit in Millisekunden an, die gewartet werden soll, bevor ein Slave "
+"nach einer Verbindungswiederherstellungserkennung aktiviert wird"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:382
msgid ""
"Specifies whether ARP probes and replies should be validated or non-ARP "
"traffic should be filtered for link monitoring"
msgstr ""
+"Gibt an, ob ARP-Tests und -Antworten validiert werden sollen oder ob Nicht-"
+"ARP-Verkehr für die Verbindungsüberwachung gefiltert werden soll"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:301
msgid ""
"Specifies whether active-backup mode should set all slaves to the same MAC "
"address at enslavement"
msgstr ""
+"Gibt an, ob im aktiven Sicherungsmodus alle Slaves beim Enslavement auf "
+"dieselbe MAC-Adresse gesetzt werden sollen"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:419
msgid ""
"Specifies whether or not miimon should use MII or ETHTOOL ioctls vs. "
"netif_carrier_ok()"
msgstr ""
+"Gibt an, ob miimon MII- oder ETHTOOL-Ioctls vs. netif_carrier_ok () "
+"verwenden soll"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:293
msgid ""
"Specifies whether to shuffle active flows across slaves based on the load"
msgstr ""
+"Gibt an, ob aktive Flows über Slaves basierend auf der Last gemischt werden "
+"sollen"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:179
msgid ""
"Specifies which slave interfaces should be attached to this bonding interface"
msgstr ""
+"Gibt an, welche Slave-Schnittstellen an diese Bonding-Schnittstelle "
+"angeschlossen werden sollen"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:212
msgid ""
"Specifies which slave is the primary device. It will always be the active "
"slave while it is available"
msgstr ""
+"Gibt an, welcher Slave das primäre Gerät ist. Es wird immer der aktive Slave "
+"sein, solange dieser verfügbar ist"
#: protocols/luci-proto-ipip/htdocs/luci-static/resources/protocol/ipip.js:63
#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:72
@@ -5978,6 +6039,9 @@ msgid ""
"outer header inherits the value of the inner header) or an hexadecimal value "
"starting with <code>0x</code> (optional)."
msgstr ""
+"Geben Sie einen Diensttypen (Type of Service) an. Kann entweder <code>erben</"
+"code> (der äußere Header erbt den Wert des inneren Headers) oder ein "
+"hexadezimaler Wert sein, der mit <code>0x</code> beginnt (optional)."
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:62
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:67
@@ -5987,6 +6051,8 @@ msgid ""
"Specify a TTL (Time to Live) for the encapsulating packet other than the "
"default (64) (optional)."
msgstr ""
+"Geben Sie eine andere TTL (Time to Live) für das Kapselungspaket als das "
+"Standardpaket (64) an (optional)."
#: protocols/luci-proto-ipip/htdocs/luci-static/resources/protocol/ipip.js:58
#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:67
@@ -6005,6 +6071,9 @@ msgid ""
"header inherits the value of the inner header) or an hexadecimal value "
"starting with <code>0x</code> (optional)."
msgstr ""
+"Geben Sie eine Traffic-klasse an. Kann entweder <code>erben</code> (der "
+"äußere Header erbt den Wert des inneren Headers) oder ein hexadezimaler Wert "
+"sein, der mit <code>0x</code> beginnt (optional)."
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:57
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:62
@@ -6014,6 +6083,8 @@ msgid ""
"Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
"bytes) (optional)."
msgstr ""
+"Geben Sie eine andere MTU (Maximum Transmission Unit) als die Standard-MTU ("
+"1280 Byte) an (optional)."
#: protocols/luci-proto-ipip/htdocs/luci-static/resources/protocol/ipip.js:53
#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:62
@@ -6192,7 +6263,7 @@ msgstr "Systemprotokoll"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:243
msgid "System Priority"
-msgstr ""
+msgstr "Systempriorität"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:104
msgid "System Properties"
@@ -6260,6 +6331,8 @@ msgstr ""
#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:40
msgid "The IPv4 address or the fully-qualified domain name of the remote end."
msgstr ""
+"Die IPv4-Adresse oder der vollständig qualifizierte Domänenname des Remote-"
+"Ends."
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:42
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:42
@@ -6272,12 +6345,16 @@ msgstr ""
#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:40
msgid "The IPv6 address or the fully-qualified domain name of the remote end."
msgstr ""
+"Die IPv6-Adresse oder der vollständig qualifizierte Domänenname des Remote-"
+"Ends."
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:42
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:42
msgid ""
"The IPv6 address or the fully-qualified domain name of the remote tunnel end."
msgstr ""
+"Die IPv6-Adresse oder der vollständig qualifizierte Domänenname des Remote-"
+"Tunnel-Ends."
#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6rd.js:53
#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:59
@@ -6392,7 +6469,7 @@ msgstr "Länge des IPv6-Präfix in Bits"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:163
msgid "The local IPv4 address"
-msgstr ""
+msgstr "Die lokale IPv4-Adresse"
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:46
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:46
@@ -6403,13 +6480,13 @@ msgstr "Die lokale IPv4-Adresse über die der Tunnel aufgebaut wird (optional)."
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:169
msgid "The local IPv4 netmask"
-msgstr ""
+msgstr "Die lokale IPv4-Netzmaske"
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:46
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:46
#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:44
msgid "The local IPv6 address over which the tunnel is created (optional)."
-msgstr ""
+msgstr "Die lokale IPv6-Adresse, über die der Tunnel erstellt wird (optional)."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1922
msgid "The network name is already used"
@@ -6707,7 +6784,7 @@ msgstr "Traffic"
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:72
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:77
msgid "Traffic Class"
-msgstr ""
+msgstr "Traffic-Klasse"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:385
msgid "Transfer"
@@ -6719,7 +6796,7 @@ msgstr "Senden"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:317
msgid "Transmit Hash Policy"
-msgstr ""
+msgstr "Hash-Richtlinie übertragen"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:74
msgid "Trigger"
@@ -6851,7 +6928,7 @@ msgstr "Unbekannt"
#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:47
msgid "Unknown and unsupported connection method."
-msgstr ""
+msgstr "Unbekannte und nicht unterstützte Verbindungsmethode."
#: modules/luci-base/htdocs/luci-static/resources/network.js:2292
#: modules/luci-compat/luasrc/model/network.lua:1138
@@ -6906,7 +6983,7 @@ msgstr "Hoch"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:410
msgid "Up Delay"
-msgstr ""
+msgstr "Up Delay"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:3860
msgid "Upload"
@@ -7006,17 +7083,20 @@ msgstr "Benutze TTL auf der Tunnelschnittstelle"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:320
msgid "Use XOR of hardware MAC addresses (layer2)"
-msgstr ""
+msgstr "Verwenden Sie XOR der Hardware-MAC-Adressen (Layer2)"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:321
msgid "Use XOR of hardware MAC addresses and IP addresses (layer2+3)"
msgstr ""
+"Verwenden Sie XOR für Hardware-MAC-Adressen und IP-Adressen (Layer2 + 3)"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:323
msgid ""
"Use XOR of hardware MAC addresses and IP addresses, rely on skb_flow_dissect "
"(encap2+3)"
msgstr ""
+"Verwenden Sie XOR von Hardware-MAC-Adressen und IP-Adressen, beziehen Sie "
+"sich auf skb_flow_dissect (encap2 + 3)"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:294
msgid "Use as external overlay (/overlay)"
@@ -7112,12 +7192,14 @@ msgstr ""
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:322
msgid "Use upper layer protocol information (layer3+4)"
-msgstr ""
+msgstr "Protokollinformationen der oberen Schicht verwenden (Schicht 3 + 4)"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:324
msgid ""
"Use upper layer protocol information, rely on skb_flow_dissect (encap3+4)"
msgstr ""
+"Verwenden Sie Protokollinformationen der oberen Schicht und beziehen Sie "
+"sich auf skb_flow_dissect (encap3 + 4)"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/20_memory.js:36
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:194
@@ -7138,7 +7220,7 @@ msgstr ""
#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:105
msgid "User Group"
-msgstr ""
+msgstr "Benutzergruppe"
#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:114
msgid "User certificate (PEM encoded)"
@@ -7199,16 +7281,16 @@ msgstr "VPNC (VPN für CISCO 3000 und Ähnliche)"
#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:10
msgid "VXLAN (RFC7348)"
-msgstr ""
+msgstr "VXLAN (RFC7348)"
#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:53
#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:48
msgid "VXLAN network identifier"
-msgstr ""
+msgstr "VXLAN-Netzwerkkennung"
#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:10
msgid "VXLANv6 (RFC7348)"
-msgstr ""
+msgstr "VXLANv6 (RFC7348)"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1498
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1556
@@ -7221,19 +7303,19 @@ msgstr ""
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:387
msgid "Validation for all slaves"
-msgstr ""
+msgstr "Validierung für alle Slaves"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:385
msgid "Validation only for active slave"
-msgstr ""
+msgstr "Validierung nur für aktiven Slave"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:386
msgid "Validation only for backup slaves"
-msgstr ""
+msgstr "Validierung nur für Backup-Slaves"
#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:154
msgid "Value must not be empty"
-msgstr ""
+msgstr "Der Wert darf nicht leer sein"
#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:73
msgid "Vendor"
@@ -7385,7 +7467,7 @@ msgstr "Systemprotokoll in Datei schreiben"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:204
msgid "XOR policy (balance-xor, 2)"
-msgstr ""
+msgstr "XOR-Richtlinie (balance-xor, 2)"
#: modules/luci-base/htdocs/luci-static/resources/form.js:3643
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:295
@@ -7396,7 +7478,7 @@ msgstr "Ja"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:303
msgid "Yes (none, 0)"
-msgstr ""
+msgstr "Ja (keine, 0)"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:176
msgid ""
@@ -7432,11 +7514,15 @@ msgid ""
"You must select a primary interface which is included in selected slave "
"interfaces!"
msgstr ""
+"Sie müssen eine primäre Schnittstelle auswählen, die in ausgewählten Slave-"
+"Schnittstellen enthalten ist!"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:96
msgid ""
"You must select at least one ARP IP target if ARP monitoring is selected!"
msgstr ""
+"Sie müssen mindestens ein ARP-IP-Ziel auswählen, wenn ARP-Überwachung "
+"ausgewählt ist!"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:192
msgid "ZRam Compression Algorithm"
@@ -7547,11 +7633,11 @@ msgstr "Treiber-Standardwert"
#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:81
msgid "e.g: --proxy 10.10.10.10"
-msgstr ""
+msgstr "Beispiel: --proxy 10.10.10.10"
#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:83
msgid "e.g: dump"
-msgstr ""
+msgstr "z.B.: abwerfen"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:517
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:538
@@ -7632,7 +7718,7 @@ msgstr "Minuten"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:422
msgid "netif_carrier_ok()"
-msgstr ""
+msgstr "netif_carrier_ok()"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:46
msgid "no"
@@ -7712,7 +7798,7 @@ msgstr "Server-Modus"
#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:53
msgid "sstpc Log-level"
-msgstr ""
+msgstr "sstpc Log-Level"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:649
msgid "stateful-only"
diff --git a/modules/luci-base/po/ja/base.po b/modules/luci-base/po/ja/base.po
index 375ab5d360..d1e6cbf52f 100644
--- a/modules/luci-base/po/ja/base.po
+++ b/modules/luci-base/po/ja/base.po
@@ -3,8 +3,8 @@ msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-06-10 03:40+0200\n"
-"PO-Revision-Date: 2020-06-27 14:41+0000\n"
-"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
+"PO-Revision-Date: 2020-09-04 13:36+0000\n"
+"Last-Translator: Satoru Yoshida <ramat@ram.ne.jp>\n"
"Language-Team: Japanese <https://hosted.weblate.org/projects/openwrt/luci/ja/"
">\n"
"Language: ja\n"
@@ -12,7 +12,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 4.2-dev\n"
+"X-Generator: Weblate 4.3-dev\n"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:929
msgid "%.1f dB"
@@ -104,7 +104,7 @@ msgstr "0: RSSI しきい値を使用しない, 1: ドライバのデフォル
#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:55
msgctxt "sstp log level value"
msgid "1"
-msgstr ""
+msgstr "1"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/load.js:231
msgid "1 Minute Load:"
@@ -117,17 +117,17 @@ msgstr "過去15分の負荷:"
#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:56
msgctxt "sstp log level value"
msgid "2"
-msgstr ""
+msgstr "2"
#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:57
msgctxt "sstp log level value"
msgid "3"
-msgstr ""
+msgstr "3"
#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:58
msgctxt "sstp log level value"
msgid "4"
-msgstr ""
+msgstr "4"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1442
msgid "4-character hexadecimal ID"
@@ -6741,7 +6741,7 @@ msgstr "不明"
#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:47
msgid "Unknown and unsupported connection method."
-msgstr ""
+msgstr "不明およびサポートされていない接続メソッドです。"
#: modules/luci-base/htdocs/luci-static/resources/network.js:2292
#: modules/luci-compat/luasrc/model/network.lua:1138
@@ -7086,7 +7086,7 @@ msgstr "VPNC (CISCO 3000 (またはその他の) VPN)"
#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:10
msgid "VXLAN (RFC7348)"
-msgstr ""
+msgstr "VXLAN (RFC7348)"
#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:53
#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:48
@@ -7095,7 +7095,7 @@ msgstr "VXLAN ネットワーク識別子"
#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:10
msgid "VXLANv6 (RFC7348)"
-msgstr ""
+msgstr "VXLANv6 (RFC7348)"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1498
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1556
@@ -7518,7 +7518,7 @@ msgstr "分"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:422
msgid "netif_carrier_ok()"
-msgstr ""
+msgstr "netif_carrier_ok()"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:46
msgid "no"
diff --git a/modules/luci-base/po/pt/base.po b/modules/luci-base/po/pt/base.po
index ee161446eb..40338cff6e 100644
--- a/modules/luci-base/po/pt/base.po
+++ b/modules/luci-base/po/pt/base.po
@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-05-26 19:03+0200\n"
-"PO-Revision-Date: 2020-07-19 09:43+0000\n"
+"PO-Revision-Date: 2020-09-07 10:27+0000\n"
"Last-Translator: ssantos <ssantos@web.de>\n"
"Language-Team: Portuguese <https://hosted.weblate.org/projects/openwrt/luci/"
"pt/>\n"
@@ -12,7 +12,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.2-dev\n"
+"X-Generator: Weblate 4.3-dev\n"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:929
msgid "%.1f dB"
@@ -2524,7 +2524,7 @@ msgstr "Gerar Configuração"
#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:66
msgid "Generate Key"
-msgstr ""
+msgstr "Gerar chave"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1460
msgid "Generate PMK locally"
@@ -2580,7 +2580,7 @@ msgstr "Conceder acesso aos procedimentos do LuCI OpenConnect"
#: protocols/luci-proto-wireguard/root/usr/share/rpcd/acl.d/luci-wireguard.json:3
msgid "Grant access to LuCI Wireguard procedures"
-msgstr ""
+msgstr "Conceder acesso aos procedimentos da LuCI Wireguard"
#: modules/luci-mod-system/root/usr/share/rpcd/acl.d/luci-mod-system.json:19
msgid "Grant access to SSH configuration"
diff --git a/modules/luci-base/po/uk/base.po b/modules/luci-base/po/uk/base.po
index b38bccf747..feb951d440 100644
--- a/modules/luci-base/po/uk/base.po
+++ b/modules/luci-base/po/uk/base.po
@@ -1,17 +1,17 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"PO-Revision-Date: 2020-05-16 13:25+0000\n"
-"Last-Translator: Yurii Petrashko <yuripet@gmail.com>\n"
+"PO-Revision-Date: 2020-09-04 13:36+0000\n"
+"Last-Translator: Olexandr Nesterenko <olexn@ukr.net>\n"
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/openwrt/luci/"
"uk/>\n"
"Language: uk\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: Weblate 4.1-dev\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: Weblate 4.3-dev\n"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:929
msgid "%.1f dB"
@@ -691,7 +691,7 @@ msgstr "Annex"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:891
msgid "Annex A + L + M (all)"
-msgstr "Annex A + L + M (all)"
+msgstr "Annex A + L + M (всі)"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:899
msgid "Annex A G.992.1"
@@ -711,7 +711,7 @@ msgstr "Annex A G.992.5"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:892
msgid "Annex B (all)"
-msgstr "Annex B (all)"
+msgstr "Annex B (всі)"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:895
msgid "Annex B G.992.1"
@@ -727,7 +727,7 @@ msgstr "Annex B G.992.5"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:893
msgid "Annex J (all)"
-msgstr "Annex J (all)"
+msgstr "Annex J (всі)"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:903
msgid "Annex L G.992.3 POTS 1"
@@ -735,7 +735,7 @@ msgstr "Annex L G.992.3 POTS 1"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:894
msgid "Annex M (all)"
-msgstr "Annex M (all)"
+msgstr "Annex M (всі)"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:904
msgid "Annex M G.992.3"
@@ -1654,7 +1654,7 @@ msgstr "Призначення"
#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:48
msgid "Destination port"
-msgstr ""
+msgstr "Порт призначення"
#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:59
#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:165
@@ -5697,8 +5697,8 @@ msgstr "Налаштування DHCP-сервера"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:31
msgid "Severely Errored Seconds (SES)"
msgstr ""
-"Секунди з великою кількістю помилок помилок (<abbr title=\"Severely Errored "
-"Seconds\">SES</abbr>)"
+"Секунди з великою кількістю помилок (<abbr title=\"Severely Errored Seconds\""
+">SES</abbr>)"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:208
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:80
diff --git a/modules/luci-mod-dashboard/Makefile b/modules/luci-mod-dashboard/Makefile
new file mode 100644
index 0000000000..dfaeeb7e26
--- /dev/null
+++ b/modules/luci-mod-dashboard/Makefile
@@ -0,0 +1,18 @@
+#
+# Copyright 2019-2020 ZHANG Zhao <Zhao.Zhang2@etu.univ-grenoble-alpes.fr>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=LuCI Dashboard Pages
+LUCI_DEPENDS:=+luci-base +libiwinfo
+
+PKG_BUILD_DEPENDS:=iwinfo
+PKG_LICENSE:=Apache-2.0
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
+
diff --git a/modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/css/custom.css b/modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/css/custom.css
new file mode 100644
index 0000000000..62ef169fb5
--- /dev/null
+++ b/modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/css/custom.css
@@ -0,0 +1,285 @@
+/**
+ * Dashboard Principals Styles
+**/
+
+.Dashboard {
+ color: #212529!important;
+}
+
+.Dashboard h3 {
+ color:#000;
+}
+
+.Dashboard hr {
+ border: 0;
+ height: 0;
+ overflow: visible;
+ margin: 0;
+ box-sizing: content-box;
+ border-top: 1px solid rgba(0,0,0,.1);
+}
+
+.Dashboard .box-s1 {
+ min-height: 466px;
+}
+
+.Dashboard .internet-status-self .internet-status-info .title {
+ height: 97px;
+}
+
+.Dashboard .dashboard-bg {
+ border-radius: 16px;
+ background-color: #e0e0e0;
+}
+
+.Dashboard .title {
+ text-align: center;
+}
+
+.Dashboard .section-content {
+ display: flex;
+ vertical-align: top;
+ padding: 20px 0 0 0;
+ align-items: flex-start;
+ justify-content: space-between;
+}
+
+.Dashboard .section-content > div {
+ width:100%;
+ padding:1.5em;
+}
+
+.Dashboard .section-content .settings-info {
+ padding-top:1em;
+}
+
+.Dashboard .section-content .internet-status-info .settings-info {
+ display: flex;
+ justify-content: space-around;
+}
+
+.Dashboard .section-content .internet-status-info .settings-info > div > p > i{
+ padding: 0 0 0 5px;
+}
+
+.Dashboard .section-content > div:nth-child(2) {
+ margin-left:20px;
+}
+
+.Dashboard .devices-list .devices-info {
+ margin-bottom: 0;
+}
+
+.Dashboard .devices-list .devices-info .tr .td{
+ padding:0px 0 0 10px;
+}
+
+.Dashboard .devices-list .devices-info .tr .td:first-child {
+ width: 33%;
+ word-break: break-all;
+}
+
+.Dashboard .devices-list hr:nth-child(4) {
+ margin-top: 0;
+ margin-bottom: 8px;
+}
+
+.Dashboard .router-status-lan .devices-list .table-titles .th:first-child {
+ width: 35%;
+}
+
+.Dashboard .router-status-self .router-status-info .settings-info {
+ padding-left:27px;
+}
+
+.Dashboard .router-status-self .router-status-info .title h3 {
+ margin-top:-2px;
+}
+
+.Dashboard .router-status-info svg {
+ width: 70px;
+}
+
+.Dashboard .internet-status-self .settings-info p:first-child span:first-child{
+ font-size: 15px;
+ font-weight: 500;
+}
+
+.Dashboard .internet-status-self .settings-info p:nth-child(2) span:first-child,
+.Dashboard .router-status-wifi .wifi-info .settings-info p:first-child span:first-child,
+.Dashboard .router-status-wifi .wifi-info .settings-info p:nth-child(2) span:first-child{
+ font-weight: 700;
+}
+
+.Dashboard .settings-info p span:first-child {
+ width: 35%;
+ font-size: 12px;
+ text-align: right;
+}
+
+.Dashboard .settings-info p span:nth-child(2){
+ display: inline-block;
+ word-break: break-all;
+ max-width: 150px;
+ overflow: hidden;
+ max-height: 16px;
+ position: relative;
+ top:2px;
+}
+
+.Dashboard .router-status-info .settings-info p span:nth-child(2){
+ max-width: 283px;
+}
+
+.Dashboard .settings-info p span.ssid {
+ max-height: 18px;
+ top: 3px;
+}
+
+.Dashboard .settings-info p span.encryption {
+ max-width: 82px;
+}
+
+.Dashboard .router-status-wifi .wifi-info .settings-info,
+.Dashboard .router-status-lan .lan-info .settings-info
+{
+ display: flex;
+ justify-content: space-around;
+}
+
+.Dashboard .router-status-wifi .wifi-info .devices-info .tr .td {
+ padding: 0 10px 0 10px;
+}
+
+.Dashboard .router-status-wifi .wifi-info .devices-info .tr .td:first-child {
+ width: 30%;
+ word-break: break-all;
+}
+
+.Dashboard .router-status-wifi .wifi-info .devices-info .tr .td:nth-child(2) {
+ width: 21%;
+ overflow: hidden;
+ padding-left:0;
+ word-break: break-all;
+}
+
+.Dashboard .router-status-wifi .wifi-info .settings-info{
+ padding:1em 0 1em 0;
+}
+
+.Dashboard .router-status-wifi .wifi-info .devices-info .tr .td:nth-child(3) {
+ width: 22%;
+ overflow: hidden;
+ position: relative;
+ top: -3px;
+}
+
+.Dashboard .router-status-wifi .wifi-info .devices-info .tr .td:nth-child(5) {
+ width: initial;
+}
+
+.Dashboard .router-status-wifi .wifi-info > hr:last-child {
+ margin-bottom:0;
+}
+
+.Dashboard .router-status-wifi .wifi-info .devices-info .device-info .progress {
+ padding: 0;
+ width: 100%;
+ margin: 0;
+}
+
+.Dashboard .wifi-info .devices-info .table-titles {
+ border-bottom:1px solid rgba(0,0,0,.1);
+}
+
+/**
+ * Responsive
+ **/
+@media screen and (min-width: 200px) and (max-width: 640px) {
+
+ .Dashboard .cbi-section-1 > .section-content {
+ padding-top:10px;
+ }
+
+ .Dashboard .section-content {
+ display:block;
+ }
+
+ .Dashboard .section-content > div{
+ padding: 1em;
+ }
+
+ .Dashboard .section-content > div:first-child {
+ margin-bottom:10px;
+ }
+
+ .Dashboard .section-content > div:nth-child(2) {
+ margin:0;
+ }
+
+ .Dashboard .router-status-self .router-status-info .settings-info {
+ padding:0;
+ }
+
+ .Dashboard .section-content .internet-status-info .settings-info {
+ display:block;
+ }
+
+ .Dashboard .section-content .internet-status-info .settings-info > div:first-child {
+ margin-bottom: 10px;
+ border-bottom: 1px solid rgba(0,0,0,.1);
+ }
+
+ .Dashboard .section-content .router-status-lan .devices-info .table-titles {
+ display:block;
+ }
+
+ .Dashboard .router-status-wifi .wifi-info .settings-info > div{
+ flex:1;
+ }
+
+ .Dashboard .section-content .router-status-lan .devices-info .table-titles .th:last-child{
+ padding-left: 70px;
+ }
+
+ .Dashboard .section-content .router-status-lan .devices-info .td:first-child{
+ flex: 2 2 31%;
+ }
+
+ .Dashboard .section-content .router-status-lan .devices-info .td:nth-child(2){
+ flex: 1 1 24%;
+ padding: 0;
+ }
+
+ .Dashboard .section-content .router-status-lan .devices-info .td:last-child{
+ word-wrap: normal;
+ }
+
+ .Dashboard .router-status-wifi .wifi-info .settings-info > div p:nth-child(6) > span:last-child{
+ display: inline-block;
+ overflow: hidden;
+ height: 14px;
+ width: 52%;
+ word-break: break-word;
+ line-height: 15px;
+ }
+
+ .Dashboard .wifi-info .devices-info .table-titles {
+ padding: 0;
+ margin: 0;
+ display: flex;
+ border-radius: initial;
+ }
+
+ .Dashboard .wifi-info .devices-info .table-titles .th {
+ flex: 2 2 24%;
+ }
+
+ .Dashboard .wifi-info .devices-info .tr .td {
+ flex: 2 2 10%;
+ }
+
+ .Dashboard .wifi-info hr:nth-child(4) {
+ margin-bottom: 0;
+ }
+}
diff --git a/modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/devices.svg b/modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/devices.svg
new file mode 100644
index 0000000000..9fa17f40c5
--- /dev/null
+++ b/modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/devices.svg
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<g>
+ <g>
+ <path d="M196.275,290.129H25.591C11.477,290.129,0,301.615,0,315.721v119.484c0,14.106,11.477,25.591,25.591,25.591h170.684
+ c14.114,0,25.591-11.486,25.591-25.591V315.721C221.867,301.615,210.389,290.129,196.275,290.129z M204.8,435.204
+ c0,4.702-3.823,8.525-8.525,8.525H25.591c-4.702,0-8.525-3.823-8.525-8.525V315.721c0-4.702,3.823-8.525,8.525-8.525h170.684
+ c4.702,0,8.525,3.823,8.525,8.525V435.204z"/>
+ </g>
+</g>
+<g>
+ <g>
+ <path d="M213.333,409.596H8.533c-4.71,0-8.533,3.814-8.533,8.533v17.075c0,14.106,11.477,25.591,25.591,25.591h170.684
+ c14.114,0,25.591-11.486,25.591-25.591v-17.075C221.867,413.41,218.044,409.596,213.333,409.596z M204.8,435.204
+ c0,4.702-3.823,8.525-8.525,8.525H25.591c-4.702,0-8.525-3.823-8.525-8.525v-8.542H204.8V435.204z"/>
+ </g>
+</g>
+<g>
+ <g>
+ <path d="M136.533,443.729h-51.2c-4.71,0-8.533,3.814-8.533,8.533v51.2c0,4.719,3.823,8.533,8.533,8.533h51.2
+ c4.71,0,8.533-3.814,8.533-8.533v-51.2C145.067,447.543,141.244,443.729,136.533,443.729z M128,494.929H93.867v-34.133H128
+ V494.929z"/>
+ </g>
+</g>
+<g>
+ <g>
+ <path d="M162.133,494.929h-102.4c-4.71,0-8.533,3.814-8.533,8.533c0,4.719,3.823,8.533,8.533,8.533h102.4
+ c4.71,0,8.533-3.814,8.533-8.533C170.667,498.743,166.844,494.929,162.133,494.929z"/>
+ </g>
+</g>
+<g>
+ <g>
+ <path d="M486.409,290.129H315.725c-14.114,0-25.591,11.486-25.591,25.591v119.484c0,14.106,11.477,25.591,25.591,25.591h170.684
+ c14.114,0,25.591-11.486,25.591-25.591V315.721C512,301.615,500.523,290.129,486.409,290.129z M494.933,435.204
+ c0,4.702-3.823,8.525-8.525,8.525H315.725c-4.702,0-8.525-3.823-8.525-8.525V315.721c0-4.702,3.823-8.525,8.525-8.525h170.684
+ c4.702,0,8.525,3.823,8.525,8.525V435.204z"/>
+ </g>
+</g>
+<g>
+ <g>
+ <path d="M503.467,409.596h-204.8c-4.71,0-8.533,3.814-8.533,8.533v17.075c0,14.106,11.477,25.591,25.591,25.591h170.684
+ c14.114,0,25.591-11.486,25.591-25.591v-17.075C512,413.41,508.177,409.596,503.467,409.596z M494.933,435.204
+ c0,4.702-3.823,8.525-8.525,8.525H315.725c-4.702,0-8.525-3.823-8.525-8.525v-8.542h187.733V435.204z"/>
+ </g>
+</g>
+<g>
+ <g>
+ <path d="M426.667,443.729h-51.2c-4.71,0-8.533,3.814-8.533,8.533v51.2c0,4.719,3.823,8.533,8.533,8.533h51.2
+ c4.71,0,8.533-3.814,8.533-8.533v-51.2C435.2,447.543,431.377,443.729,426.667,443.729z M418.133,494.929H384v-34.133h34.133
+ V494.929z"/>
+ </g>
+</g>
+<g>
+ <g>
+ <path d="M452.267,494.929h-102.4c-4.71,0-8.533,3.814-8.533,8.533c0,4.719,3.823,8.533,8.533,8.533h102.4
+ c4.71,0,8.533-3.814,8.533-8.533C460.8,498.743,456.977,494.929,452.267,494.929z"/>
+ </g>
+</g>
+<g>
+ <g>
+ <path d="M341.342,0.004H170.658c-14.114,0-25.591,11.486-25.591,25.591v119.475c0,14.106,11.477,25.591,25.591,25.591h170.684
+ c14.114,0,25.591-11.486,25.591-25.591V25.596C366.933,11.49,355.456,0.004,341.342,0.004z M349.867,145.071
+ c0,4.702-3.823,8.525-8.525,8.525H170.658c-4.702,0-8.525-3.823-8.525-8.525V25.596c0-4.702,3.823-8.525,8.525-8.525h170.684
+ c4.702,0,8.525,3.823,8.525,8.525V145.071z"/>
+ </g>
+</g>
+<g>
+ <g>
+ <path d="M358.4,119.462H153.6c-4.71,0-8.533,3.814-8.533,8.533v17.075c0,14.106,11.477,25.591,25.591,25.591h170.684
+ c14.114,0,25.591-11.486,25.591-25.591v-17.075C366.933,123.277,363.11,119.462,358.4,119.462z M349.867,145.071
+ c0,4.702-3.823,8.525-8.525,8.525H170.658c-4.702,0-8.525-3.823-8.525-8.525v-8.542h187.733V145.071z"/>
+ </g>
+</g>
+<g>
+ <g>
+ <path d="M281.6,153.596h-51.2c-4.71,0-8.533,3.814-8.533,8.533v51.2c0,4.719,3.823,8.533,8.533,8.533h51.2
+ c4.71,0,8.533-3.814,8.533-8.533v-51.2C290.133,157.41,286.31,153.596,281.6,153.596z M273.067,204.796h-34.133v-34.133h34.133
+ V204.796z"/>
+ </g>
+</g>
+<g>
+ <g>
+ <path d="M307.2,204.796H204.8c-4.71,0-8.533,3.814-8.533,8.533c0,4.719,3.823,8.533,8.533,8.533h102.4
+ c4.71,0,8.533-3.814,8.533-8.533C315.733,208.61,311.91,204.796,307.2,204.796z"/>
+ </g>
+</g>
+<g>
+ <g>
+ <path d="M401.067,255.996H110.933c-4.71,0-8.533,3.814-8.533,8.533v34.133c0,4.719,3.823,8.533,8.533,8.533
+ s8.533-3.814,8.533-8.533v-25.6h273.067v25.6c0,4.719,3.823,8.533,8.533,8.533s8.533-3.814,8.533-8.533v-34.133
+ C409.6,259.81,405.777,255.996,401.067,255.996z"/>
+ </g>
+</g>
+<g>
+ <g>
+ <path d="M256,230.396c-4.71,0-8.533,3.814-8.533,8.533v25.6c0,4.719,3.823,8.533,8.533,8.533s8.533-3.814,8.533-8.533v-25.6
+ C264.533,234.21,260.71,230.396,256,230.396z"/>
+ </g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/internet.svg b/modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/internet.svg
new file mode 100644
index 0000000000..c6feb0fb99
--- /dev/null
+++ b/modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/internet.svg
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 24.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 479.4 479.4" style="enable-background:new 0 0 479.4 479.4;" xml:space="preserve">
+<style type="text/css">
+ .st0{fill:#5CB85C;}
+</style>
+<g>
+ <g>
+ <path class="st0" d="M239.4,0c-8.6,0-17.2,0.5-25.7,1.4c-7.8,0.8-15.6,2.1-23.2,3.7c-1.5,0.3-3,0.6-4.4,1
+ c-45,10.2-86,33.2-118.3,66.2c-3,3.1-5.9,6.2-8.8,9.5C-28,181.7-17.6,333.3,82.4,420.4c95.7,83.3,239.7,77.8,328.7-12.7
+ c3-3.1,5.9-6.2,8.8-9.5c38.4-43.8,59.6-100,59.6-158.2C479.4,107.5,372,0,239.4,0z M78.5,84.3c1.3-1.3,2.6-2.6,3.9-3.8
+ c1.5-1.5,3-2.9,4.5-4.4c1.3-1.2,2.7-2.4,4.1-3.7c1.5-1.4,3.1-2.7,4.7-4.1c1.4-1.2,2.8-2.3,4.2-3.4c1.6-1.3,3.2-2.6,4.8-3.8
+ c1.5-1.1,2.9-2.2,4.4-3.2c1.7-1.2,3.3-2.4,5-3.5c1.5-1,3-2,4.6-3c1.7-1.1,3.4-2.2,5.2-3.2c1.6-0.9,3.1-1.9,4.7-2.8
+ c1.8-1,3.5-2,5.3-3c1.6-0.9,3.2-1.7,4.8-2.5c1.8-0.9,3.7-1.8,5.5-2.7c1.6-0.8,3.3-1.5,4.9-2.2c1.9-0.8,3.8-1.6,5.7-2.4
+ c1.7-0.7,3.3-1.3,5-2c1.9-0.7,3.9-1.4,5.9-2.1c1.7-0.6,3.3-1.2,5-1.7c2-0.6,4-1.2,6-1.8c1.7-0.5,3.4-1,5.1-1.4
+ c0.6-0.2,1.3-0.3,1.9-0.5c-23.7,23-41.3,51.5-51.1,83c-19-5-37.4-12.1-54.8-21.1C78,84.8,78.3,84.5,78.5,84.3z M67,97.2
+ c19.2,10.4,39.6,18.5,60.7,24.2c-10.4,36-15.8,73.2-16.2,110.7H15.6C17.4,182.6,35.4,135.2,67,97.2z M67,382.9
+ c-31.6-38-49.6-85.5-51.4-134.8h95.9c0.4,37.5,5.8,74.7,16.2,110.7C106.6,364.3,86.2,372.5,67,382.9z M181.7,456.4
+ c-1.6-0.4-3.3-0.9-5-1.4c-2-0.6-4.1-1.2-6.1-1.8c-1.7-0.5-3.4-1.1-5-1.7c-2-0.7-3.9-1.4-5.9-2.1c-1.7-0.6-3.3-1.3-5-2
+ c-1.9-0.8-3.8-1.6-5.7-2.4c-1.6-0.7-3.3-1.5-4.9-2.2c-1.9-0.9-3.7-1.8-5.6-2.7c-1.6-0.8-3.2-1.6-4.8-2.5c-1.8-1-3.6-2-5.4-3
+ c-1.6-0.9-3.1-1.8-4.7-2.7c-1.8-1.1-3.5-2.1-5.2-3.3c-1.5-1-3-2-4.5-3c-1.7-1.2-3.4-2.4-5.1-3.6c-1.5-1-2.9-2.1-4.4-3.2
+ c-1.7-1.2-3.3-2.5-4.9-3.8c-1.4-1.1-2.8-2.2-4.2-3.4c-1.6-1.3-3.1-2.7-4.7-4.1c-1.4-1.2-2.7-2.4-4.1-3.6c-1.5-1.4-3-2.9-4.5-4.4
+ c-1.3-1.3-2.6-2.5-3.9-3.8c-0.2-0.2-0.5-0.5-0.7-0.7c17.4-9,35.8-16.1,54.8-21.1c9.9,31.5,27.4,60,51.1,83
+ C183,456.7,182.4,456.6,181.7,456.4z M231.4,463.4c-34.2-4.9-64.2-40.6-83.1-93.4c27.3-6.1,55.2-9.4,83.1-9.8L231.4,463.4
+ L231.4,463.4z M231.4,344.3c-29.7,0.4-59.2,3.9-88.1,10.5c-10-34.7-15.3-70.6-15.8-106.7h103.9L231.4,344.3L231.4,344.3z
+ M231.4,232H127.6c0.4-36.1,5.7-72,15.8-106.7c28.9,6.6,58.5,10.1,88.1,10.5V232z M231.4,119.8c-28-0.4-55.8-3.7-83.1-9.8
+ c18.9-52.8,48.9-88.5,83.1-93.4L231.4,119.8L231.4,119.8z M411.9,97.2c31.6,38,49.6,85.5,51.4,134.8h-95.9
+ c-0.4-37.5-5.8-74.7-16.2-110.7C372.3,115.7,392.7,107.6,411.9,97.2z M297.1,23.6c1.7,0.4,3.4,0.9,5,1.4c2,0.6,4.1,1.2,6.1,1.8
+ c1.7,0.5,3.4,1.1,5,1.7c2,0.7,3.9,1.4,5.9,2.1c1.7,0.6,3.3,1.3,5,2c1.9,0.8,3.8,1.6,5.7,2.4c1.6,0.7,3.3,1.5,4.9,2.2
+ c1.9,0.9,3.7,1.8,5.6,2.7c1.6,0.8,3.2,1.6,4.8,2.5c1.8,1,3.6,2,5.4,3c1.6,0.9,3.1,1.8,4.7,2.7c1.8,1.1,3.5,2.1,5.2,3.3
+ c1.5,1,3,2,4.5,3c1.7,1.2,3.4,2.3,5.1,3.5c1.5,1,2.9,2.1,4.4,3.2c1.6,1.2,3.3,2.5,4.9,3.8c1.4,1.1,2.8,2.2,4.2,3.4
+ c1.6,1.3,3.1,2.7,4.7,4.1c1.4,1.2,2.7,2.4,4.1,3.6c1.5,1.4,3,2.9,4.5,4.4c1.3,1.3,2.6,2.5,3.9,3.8c0.2,0.2,0.5,0.5,0.7,0.7
+ c-17.4,9-35.8,16.1-54.8,21.1c-9.9-31.5-27.5-60-51.2-83C295.8,23.3,296.5,23.4,297.1,23.6z M247.4,16.7
+ c34.2,4.9,64.2,40.6,83.1,93.4c-27.3,6.1-55.2,9.4-83.1,9.8L247.4,16.7L247.4,16.7z M247.4,135.8c29.7-0.4,59.2-3.9,88.1-10.5
+ c10,34.7,15.3,70.6,15.8,106.7H247.4V135.8z M247.4,248h103.9c-0.4,36.1-5.7,72-15.8,106.7l0,0c-28.9-6.6-58.5-10.1-88.1-10.5V248
+ z M247.4,463.4V360.3c28,0.4,55.8,3.7,83.1,9.8C311.7,422.8,281.7,458.5,247.4,463.4z M400.4,395.7c-1.3,1.3-2.6,2.6-3.9,3.8
+ c-1.5,1.5-3,2.9-4.5,4.4c-1.3,1.2-2.7,2.4-4.1,3.6c-1.6,1.4-3.1,2.8-4.7,4.1c-1.4,1.2-2.8,2.3-4.2,3.4c-1.6,1.3-3.2,2.6-4.8,3.8
+ c-1.5,1.1-2.9,2.2-4.4,3.2c-1.7,1.2-3.3,2.4-5,3.5c-1.5,1-3,2-4.6,3c-1.7,1.1-3.4,2.2-5.2,3.2c-1.6,0.9-3.1,1.8-4.7,2.8
+ c-1.8,1-3.6,2-5.3,3c-1.6,0.9-3.2,1.7-4.8,2.5c-1.8,0.9-3.7,1.8-5.5,2.7c-1.6,0.8-3.3,1.5-4.9,2.2c-1.9,0.8-3.8,1.6-5.7,2.4
+ c-1.7,0.7-3.3,1.3-5,2c-2,0.7-3.9,1.4-5.9,2.1c-1.7,0.6-3.3,1.2-5,1.7c-2,0.6-4,1.2-6,1.8c-1.7,0.5-3.4,1-5,1.4
+ c-0.6,0.2-1.3,0.3-1.9,0.5c23.7-23,41.3-51.5,51.1-83c19,5,37.4,12.1,54.8,21.1C400.9,395.2,400.6,395.5,400.4,395.7z
+ M411.9,382.9c-19.2-10.4-39.6-18.5-60.7-24.2c10.4-36,15.8-73.2,16.2-110.7h95.9C461.5,297.4,443.5,344.8,411.9,382.9z"/>
+ </g>
+</g>
+</svg>
diff --git a/modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/not-internet.svg b/modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/not-internet.svg
new file mode 100644
index 0000000000..f1202fe221
--- /dev/null
+++ b/modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/not-internet.svg
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 479.447 479.447" style="enable-background:new 0 0 479.447 479.447;" xml:space="preserve">
+<g>
+ <g>
+ <path d="M239.446,0.022c-8.594,0-17.182,0.462-25.727,1.383c-7.832,0.8-15.568,2.112-23.2,3.704
+ c-1.477,0.309-2.955,0.635-4.432,0.976C141.12,16.323,100.06,39.314,67.831,72.301c-2.997,3.072-5.931,6.235-8.8,9.488
+ c-87.06,99.948-76.612,251.548,23.337,338.608c95.688,83.349,239.723,77.803,328.719-12.656c3.003-3.072,5.936-6.235,8.8-9.488
+ c38.421-43.754,59.594-100.003,59.56-158.232C479.447,107.472,371.995,0.021,239.446,0.022z M78.495,84.301
+ c1.264-1.312,2.576-2.568,3.864-3.84c1.488-1.464,2.968-2.936,4.488-4.352c1.336-1.248,2.712-2.448,4.08-3.664
+ c1.544-1.368,3.08-2.736,4.664-4.056c1.392-1.176,2.824-2.304,4.248-3.44c1.6-1.28,3.2-2.56,4.848-3.792
+ c1.456-1.096,2.936-2.16,4.424-3.2c1.656-1.184,3.32-2.4,5.008-3.504c1.512-1.024,3.04-2.016,4.576-3
+ c1.712-1.096,3.432-2.176,5.168-3.2c1.563-0.933,3.136-1.851,4.72-2.752c1.771-1.008,3.549-1.992,5.336-2.952
+ c1.6-0.853,3.2-1.688,4.8-2.504c1.824-0.92,3.664-1.808,5.512-2.68c1.6-0.76,3.264-1.52,4.912-2.24c1.88-0.8,3.784-1.6,5.688-2.4
+ c1.656-0.68,3.304-1.344,4.976-1.984c1.936-0.736,3.896-1.424,5.856-2.112c1.672-0.584,3.344-1.168,5.04-1.72
+ c1.992-0.64,4-1.232,6.016-1.816c1.688-0.488,3.36-0.992,5.056-1.448c0.648-0.168,1.296-0.304,1.944-0.472
+ c-23.68,22.993-41.253,51.529-51.128,83.024c-18.988-5.008-37.37-12.082-54.816-21.096C78.039,84.821,78.263,84.541,78.495,84.301
+ z M66.991,97.181c19.217,10.412,39.595,18.522,60.712,24.16c-10.352,35.996-15.786,73.227-16.152,110.68h-95.92
+ C17.374,182.632,35.435,135.214,66.991,97.181z M66.991,382.861c-31.554-38.034-49.615-85.452-51.36-134.84h95.92
+ c0.366,37.453,5.799,74.684,16.152,110.68C106.587,364.341,86.209,372.45,66.991,382.861z M181.727,456.429
+ c-1.616-0.408-3.288-0.936-4.952-1.424c-2.024-0.592-4.056-1.184-6.056-1.832c-1.688-0.544-3.352-1.128-5.016-1.712
+ c-1.968-0.68-3.936-1.376-5.88-2.12c-1.664-0.632-3.304-1.296-4.952-1.968c-1.912-0.8-3.824-1.6-5.72-2.4
+ c-1.632-0.72-3.256-1.461-4.872-2.224c-1.864-0.88-3.72-1.776-5.6-2.704c-1.6-0.8-3.2-1.6-4.8-2.472
+ c-1.808-0.968-3.6-1.96-5.392-2.984c-1.6-0.888-3.12-1.8-4.664-2.728c-1.76-1.056-3.488-2.144-5.216-3.256
+ c-1.52-0.968-3.04-1.952-4.536-2.96c-1.704-1.152-3.392-2.352-5.064-3.552c-1.464-1.048-2.928-2.096-4.368-3.2
+ c-1.656-1.248-3.28-2.536-4.896-3.832c-1.416-1.128-2.824-2.248-4.208-3.408c-1.6-1.328-3.144-2.712-4.696-4.088
+ c-1.36-1.208-2.728-2.4-4.056-3.632c-1.528-1.424-3.008-2.904-4.496-4.368c-1.288-1.272-2.6-2.528-3.864-3.832
+ c-0.232-0.248-0.456-0.504-0.688-0.744c17.445-9.018,35.827-16.095,54.816-21.104c9.877,31.494,27.449,60.029,51.128,83.024
+ C183.031,456.741,182.375,456.605,181.727,456.429z M231.447,463.389c-34.232-4.864-64.24-40.592-83.12-93.352
+ c27.296-6.112,55.151-9.391,83.12-9.784V463.389z M231.447,344.253c-29.67,0.39-59.215,3.914-88.144,10.512
+ c-10.045-34.707-15.344-70.615-15.752-106.744h103.896V344.253z M231.447,232.021H127.551
+ c0.407-36.129,5.706-72.037,15.752-106.744c28.929,6.597,58.475,10.121,88.144,10.512V232.021z M231.447,119.789
+ c-27.97-0.39-55.824-3.669-83.12-9.784c18.88-52.76,48.888-88.488,83.12-93.352V119.789z M411.903,97.181
+ c31.554,38.034,49.615,85.452,51.36,134.84h-95.92c-0.366-37.453-5.799-74.684-16.152-110.68
+ C372.307,115.7,392.685,107.591,411.903,97.181z M297.103,23.605c1.68,0.416,3.352,0.944,5.016,1.432
+ c2.024,0.592,4.056,1.184,6.056,1.832c1.688,0.544,3.352,1.128,5.016,1.712c1.968,0.68,3.936,1.376,5.88,2.12
+ c1.664,0.632,3.304,1.296,4.952,1.968c1.912,0.8,3.824,1.6,5.72,2.4c1.632,0.72,3.256,1.461,4.872,2.224
+ c1.864,0.88,3.72,1.776,5.6,2.704c1.6,0.8,3.2,1.6,4.8,2.472c1.808,0.968,3.6,1.96,5.392,2.984c1.6,0.888,3.12,1.8,4.664,2.728
+ c1.76,1.056,3.488,2.144,5.216,3.256c1.52,0.968,3.04,1.952,4.536,2.96c1.704,1.152,3.384,2.344,5.056,3.544
+ c1.472,1.048,2.936,2.104,4.384,3.2c1.648,1.24,3.264,2.528,4.888,3.824c1.408,1.12,2.824,2.24,4.208,3.408
+ c1.6,1.328,3.144,2.712,4.696,4.088c1.36,1.208,2.728,2.4,4.056,3.632c1.528,1.424,3.008,2.904,4.496,4.368
+ c1.288,1.272,2.6,2.528,3.864,3.832c0.232,0.248,0.456,0.504,0.688,0.744c-17.445,9.018-35.827,16.095-54.816,21.104
+ c-9.896-31.498-27.491-60.031-51.192-83.016C295.799,23.293,296.455,23.429,297.103,23.605z M247.447,16.653
+ c34.232,4.864,64.24,40.592,83.12,93.352c-27.296,6.112-55.151,9.391-83.12,9.784V16.653z M247.447,135.789
+ c29.67-0.39,59.215-3.914,88.144-10.512c10.045,34.707,15.344,70.615,15.752,106.744H247.447V135.789z M247.447,248.021h103.896
+ c-0.407,36.129-5.706,72.037-15.752,106.744h0c-28.929-6.597-58.474-10.121-88.144-10.512V248.021z M247.447,463.389V360.253
+ c27.97,0.39,55.824,3.669,83.12,9.784C311.687,422.797,281.679,458.525,247.447,463.389z M400.399,395.741
+ c-1.264,1.304-2.568,2.56-3.856,3.832c-1.488,1.464-2.976,2.944-4.504,4.368c-1.328,1.24-2.696,2.4-4.056,3.64
+ c-1.552,1.376-3.096,2.752-4.68,4.08c-1.4,1.168-2.824,2.296-4.248,3.432c-1.6,1.28-3.2,2.56-4.848,3.792
+ c-1.456,1.096-2.936,2.16-4.424,3.2c-1.656,1.184-3.32,2.4-5.008,3.504c-1.512,1.024-3.04,2.016-4.576,2.992
+ c-1.712,1.104-3.437,2.171-5.176,3.2c-1.6,0.936-3.128,1.848-4.704,2.752c-1.771,1.008-3.552,1.992-5.344,2.952
+ c-1.6,0.853-3.2,1.688-4.8,2.504c-1.824,0.92-3.664,1.808-5.512,2.68c-1.6,0.76-3.264,1.52-4.912,2.24
+ c-1.88,0.8-3.784,1.6-5.688,2.4c-1.656,0.672-3.304,1.344-4.968,1.976c-1.952,0.744-3.912,1.44-5.88,2.12
+ c-1.664,0.584-3.328,1.168-5.016,1.712c-2,0.648-4,1.24-6.04,1.824c-1.672,0.496-3.352,0.992-5.04,1.448
+ c-0.648,0.168-1.296,0.304-1.944,0.472c23.68-22.993,41.253-51.529,51.128-83.024c18.988,5.008,37.37,12.082,54.816,21.096
+ C400.855,395.221,400.631,395.501,400.399,395.741z M411.903,382.861c-19.217-10.412-39.595-18.522-60.712-24.16
+ c10.352-35.996,15.786-73.227,16.152-110.68h95.92C461.521,297.409,443.459,344.828,411.903,382.861z"/>
+ </g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/router.svg b/modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/router.svg
new file mode 100644
index 0000000000..588504ea86
--- /dev/null
+++ b/modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/router.svg
@@ -0,0 +1 @@
+<svg id="Capa_1" enable-background="new 0 0 512 512" height="512" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg"><g><path d="m484.446 333.955h-31.01l-8.34-252.834c-.381-11.538-9.721-20.575-21.264-20.575-11.544 0-20.885 9.038-21.265 20.575l-8.34 252.834h-54.384c-4.151 0-7.515 3.365-7.515 7.515s3.364 7.515 7.515 7.515h144.602c6.906 0 12.524 5.618 12.524 12.524v62.391c0 6.906-5.618 12.525-12.524 12.525h-315.47c-4.151 0-7.515 3.364-7.515 7.515s3.364 7.515 7.515 7.515h315.472c15.193 0 27.554-12.361 27.554-27.554v-62.391c-.001-15.194-12.362-27.555-27.555-27.555zm-66.857-252.339c.112-3.387 2.854-6.041 6.244-6.041 3.389 0 6.131 2.654 6.243 6.041l8.323 252.339h-29.133z"/><path d="m138.916 436.425h-111.362c-6.906 0-12.524-5.618-12.524-12.525v-62.391c0-6.906 5.618-12.524 12.524-12.524h282.232c4.151 0 7.515-3.364 7.515-7.515 0-4.15-3.364-7.515-7.515-7.515h-192.008l-8.34-252.834c-.381-11.538-9.721-20.575-21.264-20.575-11.544 0-20.885 9.038-21.265 20.575l-3.795 115.049c-.137 4.148 3.115 7.621 7.263 7.758 4.126.106 7.621-3.115 7.758-7.263l3.795-115.049c.112-3.387 2.854-6.041 6.244-6.041 3.389 0 6.131 2.654 6.243 6.041l8.323 252.339h-29.133l3.537-107.254c.137-4.148-3.115-7.621-7.263-7.758-4.143-.131-7.622 3.115-7.758 7.263l-3.554 107.749h-31.015c-15.193 0-27.554 12.361-27.554 27.554v62.391c0 15.193 12.361 27.554 27.554 27.554h111.362c4.151 0 7.515-3.365 7.515-7.515s-3.365-7.514-7.515-7.514z"/><path d="m58.241 401.189c-4.151 0-7.515 3.365-7.515 7.515s3.364 7.515 7.515 7.515h24.006c4.151 0 7.515-3.365 7.515-7.515s-3.364-7.515-7.515-7.515z"/><path d="m138.916 401.189h-24.007c-4.151 0-7.515 3.365-7.515 7.515s3.364 7.515 7.515 7.515h24.007c4.151 0 7.515-3.365 7.515-7.515-.001-4.151-3.365-7.515-7.515-7.515z"/><path d="m171.578 401.189c-4.151 0-7.515 3.365-7.515 7.515s3.364 7.515 7.515 7.515h24.006c4.151 0 7.515-3.365 7.515-7.515s-3.364-7.515-7.515-7.515z"/><path d="m228.248 401.189c-4.151 0-7.515 3.365-7.515 7.515s3.364 7.515 7.515 7.515h24.006c4.151 0 7.515-3.365 7.515-7.515s-3.364-7.515-7.515-7.515z"/><path d="m398.135 416.218c4.151 0 7.515-3.365 7.515-7.515s-3.364-7.515-7.515-7.515h-24.006c-4.151 0-7.515 3.365-7.515 7.515s3.364 7.515 7.515 7.515z"/><path d="m454.032 416.218c4.151 0 7.515-3.365 7.515-7.515s-3.364-7.515-7.515-7.515h-24.006c-4.151 0-7.515 3.365-7.515 7.515s3.364 7.515 7.515 7.515z"/><path d="m164.005 184.136c50.728-50.73 133.271-50.728 183.999 0 1.468 1.467 3.391 2.201 5.314 2.201s3.846-.734 5.314-2.201c2.934-2.934 2.934-7.693 0-10.627-56.589-56.589-148.666-56.59-205.255 0-2.934 2.934-2.934 7.693 0 10.627 2.935 2.935 7.693 2.935 10.628 0z"/><path d="m330.129 212.639c2.934-2.935 2.934-7.693 0-10.627-40.831-40.83-107.242-40.871-148.125-.125-2.328 2.218-3.047 5.775-1.534 8.801 1.316 2.633 3.971 4.156 6.727 4.156 1.129 0 2.276-.255 3.355-.795.75-.375 1.419-.865 1.989-1.444 35.017-34.98 91.959-34.966 126.96.034 2.935 2.934 7.693 2.934 10.628 0z"/><path d="m296.847 242.807c1.923 0 3.846-.734 5.314-2.201 2.934-2.934 2.934-7.693 0-10.627-12.329-12.329-28.721-19.119-46.158-19.119-17.435 0-33.828 6.79-46.158 19.119-2.935 2.934-2.935 7.693 0 10.627 2.934 2.935 7.692 2.935 10.628 0 9.49-9.49 22.109-14.717 35.529-14.717 13.422 0 26.039 5.227 35.529 14.717 1.47 1.468 3.393 2.201 5.316 2.201z"/><path d="m234.347 254.425c-1.422 1.407-2.23 3.33-2.23 5.343-.093 6.659 8.347 10.031 12.872 5.27 2.948-2.927 6.858-4.539 11.015-4.539 4.177 0 8.104 1.627 11.057 4.58 7.28 6.791 17.417-3.354 10.628-10.627-11.949-11.949-31.383-11.957-43.342-.027z"/></g></svg> \ No newline at end of file
diff --git a/modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/wireless.svg b/modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/wireless.svg
new file mode 100644
index 0000000000..06073fa410
--- /dev/null
+++ b/modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/wireless.svg
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 490.584 490.584" style="enable-background:new 0 0 490.584 490.584;" xml:space="preserve">
+<g>
+ <g>
+ <path d="M0,127.994l10.448,12.12c135.299-115.396,334.389-115.396,469.688,0l10.448-12.12C349.265,7.465,141.319,7.465,0,127.994z
+ "/>
+ </g>
+</g>
+<g>
+ <g>
+ <path d="M58.608,226.322l11.312,11.312c96.911-96.697,253.808-96.697,350.72,0l11.312-11.312
+ C328.793,123.379,161.768,123.379,58.608,226.322z"/>
+ </g>
+</g>
+<g>
+ <g>
+ <path d="M137.8,305.514l11.312,11.312c53.148-53.025,139.188-53.025,192.336,0l11.312-11.312
+ C293.36,246.252,197.2,246.252,137.8,305.514z"/>
+ </g>
+</g>
+<g>
+ <g>
+ <path d="M273.568,384.706c-15.636-15.591-40.94-15.591-56.576,0c-15.619,15.623-15.616,40.95,0.007,56.569
+ c15.623,15.619,40.95,15.616,56.569-0.007C289.184,425.647,289.184,400.326,273.568,384.706z M262.256,429.97
+ c-9.376,9.37-24.572,9.365-33.941-0.011c-9.37-9.376-9.365-24.572,0.011-33.941c9.371-9.365,24.559-9.365,33.93,0
+ C271.609,405.403,271.609,420.585,262.256,429.97z"/>
+ </g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js b/modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js
new file mode 100644
index 0000000000..e1ea347d59
--- /dev/null
+++ b/modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js
@@ -0,0 +1,322 @@
+'use strict';
+'require baseclass';
+'require fs';
+'require rpc';
+'require network';
+
+var callSystemBoard = rpc.declare({
+ object: 'system',
+ method: 'board'
+});
+
+var callSystemInfo = rpc.declare({
+ object: 'system',
+ method: 'info'
+});
+
+return baseclass.extend({
+
+ params: [],
+
+ load: function() {
+ return Promise.all([
+ network.getWANNetworks(),
+ network.getWAN6Networks(),
+ L.resolveDefault(callSystemBoard(), {}),
+ L.resolveDefault(callSystemInfo(), {})
+ ]);
+ },
+
+ renderHtml: function(data, type) {
+
+ var icon = type;
+ var title = 'router' == type ? _('System') : _('Internet');
+ var container_wapper = E('div', { 'class': type + '-status-self dashboard-bg box-s1'});
+ var container_box = E('div', { 'class': type + '-status-info'});
+ var container_item = E('div', { 'class': 'settings-info'});
+
+ if ('internet' == type) {
+ icon = (data.v4.connected.value || data.v6.connected.value) ? type : 'not-internet';
+ }
+
+ container_box.appendChild(E('div', { 'class': 'title'}, [
+ E('img', {
+ 'src': L.resource('view/dashboard/icons/' + icon + '.svg'),
+ 'width': 'router' == type ? 64 : 54,
+ 'title': title,
+ 'class': 'middle'
+ }),
+ E('h3', title)
+ ]));
+
+ container_box.appendChild(E('hr'));
+
+ if ('internet' == type) {
+ var container_internet_v4 = E('div');
+ var container_internet_v6 = E('div');
+
+ for(var idx in data) {
+
+ for(var ver in data[idx]) {
+ var classname = ver,
+ suppelements = '',
+ visible = data[idx][ver].visible;
+
+ if('connected' === ver) {
+ classname = data[idx][ver].value ? 'label label-success' : 'label label-danger';
+ data[idx][ver].value = data[idx][ver].value ? _('yes') : _('no');
+ }
+
+ if ('v4' === idx) {
+
+ if ('title' === ver) {
+ container_internet_v4.appendChild(
+ E('p', { 'class': 'mt-2'}, [
+ E('span', {'class': ''}, [ data[idx].title ]),
+ ])
+ );
+ continue;
+ }
+
+ if ('addrsv4' === ver) {
+ var addrs = data[idx][ver].value;
+ if(Array.isArray(addrs) && addrs.length) {
+ for(var ip in addrs) {
+ data[idx][ver].value = addrs[ip].split('/')[0];
+ }
+ }
+ }
+
+ if (visible) {
+ container_internet_v4.appendChild(
+ E('p', { 'class': 'mt-2'}, [
+ E('span', {'class': ''}, [ data[idx][ver].title + ':' ]),
+ E('span', {'class': classname }, [ data[idx][ver].value ]),
+ suppelements
+ ])
+ );
+ }
+
+ } else {
+
+ if ('title' === ver) {
+ container_internet_v6.appendChild(
+ E('p', { 'class': 'mt-2'}, [
+ E('span', {'class': ''}, [ data[idx].title ]),
+ ])
+ );
+ continue;
+ }
+
+ if (visible) {
+ container_internet_v6.appendChild(
+ E('p', {'class': 'mt-2'}, [
+ E('span', {'class': ''}, [data[idx][ver].title + ':']),
+ E('span', {'class': classname}, [data[idx][ver].value]),
+ suppelements
+ ])
+ );
+ }
+ }
+ }
+ }
+
+ container_item.appendChild(container_internet_v4);
+ container_item.appendChild(container_internet_v6);
+ } else {
+ for(var idx in data) {
+ container_item.appendChild(
+ E('p', { 'class': 'mt-2'}, [
+ E('span', {'class': ''}, [ data[idx].title + ':' ]),
+ E('span', {'class': ''}, [ data[idx].value ])
+ ])
+ );
+ }
+ }
+
+ container_box.appendChild(container_item);
+ container_box.appendChild(E('hr'));
+ container_wapper.appendChild(container_box);
+ return container_wapper;
+ },
+
+ renderUpdateWanData: function(data, v6) {
+
+ for (var i = 0; i < data.length; i++) {
+ var ifc = data[i];
+
+ if (v6) {
+ this.params.internet.v6.ipprefixv6.value = ifc.getIP6Prefix() || '-';
+ this.params.internet.v6.gatewayv6.value = ifc.getGateway6Addr() || '-';
+ this.params.internet.v6.protocol.value= ifc.getI18n() || E('em', _('Not connected'));
+ this.params.internet.v6.addrsv6.value = ifc.getIP6Addrs() || [ '-' ];
+ this.params.internet.v6.dnsv6.value = ifc.getDNS6Addrs() || [ '-' ];
+ this.params.internet.v6.connected.value = ifc.isUp();
+ } else {
+ var uptime = ifc.getUptime();
+ this.params.internet.v4.uptime.value = (uptime > 0) ? '%t'.format(uptime) : '-';
+ this.params.internet.v4.protocol.value= ifc.getI18n() || E('em', _('Not connected'));
+ this.params.internet.v4.gatewayv4.value = ifc.getGatewayAddr() || '0.0.0.0';
+ this.params.internet.v4.connected.value = ifc.isUp();
+ this.params.internet.v4.addrsv4.value = ifc.getIPAddrs() || [ '-'];
+ this.params.internet.v4.dnsv4.value = ifc.getDNSAddrs() || [ '-' ];
+ }
+ }
+ },
+
+ renderInternetBox: function(data) {
+
+ this.params.internet = {
+
+ v4: {
+ title: _('IPv4 Internet'),
+
+ connected: {
+ title: _('Connected'),
+ visible: true,
+ value: false
+ },
+
+ uptime: {
+ title: _('Connected since'),
+ visible: true,
+ value: '-'
+ },
+
+ protocol: {
+ title: _('Protocol'),
+ visible: true,
+ value: '-'
+ },
+
+ addrsv4: {
+ title: _('IPv4'),
+ visible: true,
+ value: [ '-' ]
+ },
+
+ gatewayv4: {
+ title: _('GatewayV4'),
+ visible: true,
+ value: '-'
+ },
+
+ dnsv4: {
+ title: _('DNSv4'),
+ visible: true,
+ value: ['-']
+ }
+ },
+
+ v6: {
+ title: _('IPv6 Internet'),
+
+ connected: {
+ title: _('Connected'),
+ visible: true,
+ value: false
+ },
+
+ uptime: {
+ title: _('Connected since'),
+ visible: true,
+ value: '-'
+ },
+
+ protocol: {
+ title: _('Protocol'),
+ visible: true,
+ value: ' - '
+ },
+
+ ipprefixv6 : {
+ title: _('IPv6 prefix'),
+ visible: true,
+ value: ' - '
+ },
+
+ addrsv6: {
+ title: _('IPv6'),
+ visible: false,
+ value: [ '-' ]
+ },
+
+ gatewayv6: {
+ title: _('GatewayV6'),
+ visible: true,
+ value: '-'
+ },
+
+ dnsv6: {
+ title: _('DNSv6'),
+ visible: true,
+ value: [ '-' ]
+ }
+ }
+ };
+
+ this.renderUpdateWanData(data[0], false);
+ this.renderUpdateWanData(data[1], true);
+
+ return this.renderHtml(this.params.internet, 'internet');
+ },
+
+ renderRouterBox: function(data) {
+
+ var boardinfo = data[2],
+ systeminfo = data[3];
+
+ var datestr = null;
+
+ if (systeminfo.localtime) {
+ var date = new Date(systeminfo.localtime * 1000);
+
+ datestr = '%04d-%02d-%02d %02d:%02d:%02d'.format(
+ date.getUTCFullYear(),
+ date.getUTCMonth() + 1,
+ date.getUTCDate(),
+ date.getUTCHours(),
+ date.getUTCMinutes(),
+ date.getUTCSeconds()
+ );
+ }
+
+ this.params.router = {
+ uptime: {
+ title: _('Uptime'),
+ value: systeminfo.uptime ? '%t'.format(systeminfo.uptime) : null,
+ },
+
+ localtime: {
+ title: _('Local Time'),
+ value: datestr
+ },
+
+ kernel: {
+ title: _('Kernel Version'),
+ value: boardinfo.kernel
+ },
+
+ model: {
+ title: _('Model'),
+ value: boardinfo.model
+ },
+
+ system: {
+ title: _('Architecture'),
+ value: boardinfo.system
+ },
+
+ release: {
+ title: _('Firmware Version'),
+ value: boardinfo.release.description
+ }
+ };
+
+ return this.renderHtml(this.params.router, 'router');
+ },
+
+ render: function(data) {
+ return [this.renderInternetBox(data), this.renderRouterBox(data)];
+ }
+});
diff --git a/modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js b/modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js
new file mode 100644
index 0000000000..2d786c8283
--- /dev/null
+++ b/modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js
@@ -0,0 +1,150 @@
+'use strict';
+'require baseclass';
+'require rpc';
+'require network';
+
+var callLuciDHCPLeases = rpc.declare({
+ object: 'luci-rpc',
+ method: 'getDHCPLeases',
+ expect: { '': {} }
+});
+
+return baseclass.extend({
+ title: _('DHCP Devices'),
+
+ params: {},
+
+ load: function() {
+ return Promise.all([
+ callLuciDHCPLeases(),
+ network.getDevices()
+ ]);
+ },
+
+ renderHtml: function() {
+
+ var container_wapper = E('div', { 'class': 'router-status-lan dashboard-bg box-s1' });
+ var container_box = E('div', { 'class': 'lan-info devices-list' });
+ var container_devices = E('div', { 'class': 'table assoclist devices-info' }, [
+ E('div', { 'class': 'tr table-titles dashboard-bg' }, [
+ E('div', { 'class': 'th nowrap' }, _('Hostname')),
+ E('div', { 'class': 'th' }, _('IP Address')),
+ E('div', { 'class': 'th' }, _('MAC')),
+ ])
+ ]);
+
+ var container_deviceslist = E('div', { 'class': 'table assoclist devices-info' });
+
+ container_box.appendChild(E('div', { 'class': 'title'}, [
+ E('img', {
+ 'src': L.resource('view/dashboard/icons/devices.svg'),
+ 'width': 55,
+ 'title': this.title,
+ 'class': 'middle'
+ }),
+ E('h3', this.title)
+ ]));
+
+ for(var idx in this.params.lan.devices) {
+ var deivce = this.params.lan.devices[idx];
+
+ container_deviceslist.appendChild(E('div', { 'class': 'tr cbi-rowstyle-1'}, [
+
+ E('div', { 'class': 'td device-info'}, [
+ E('p', {}, [
+ E('span', { 'class': 'd-inline-block'}, [ deivce.hostname ]),
+ ]),
+ ]),
+
+ E('div', { 'class': 'td device-info'}, [
+ E('p', {}, [
+ E('span', { 'class': 'd-inline-block'}, [ deivce.ipv4 ]),
+ ]),
+ ]),
+
+ E('div', { 'class': 'td device-info'}, [
+ E('p', {}, [
+ E('span', { 'class': 'd-inline-block'}, [ deivce.macaddr ]),
+ ]),
+ ])
+ ]));
+ }
+
+ container_box.appendChild(E('hr'));
+ container_box.appendChild(container_devices);
+ container_box.appendChild(E('hr'));
+ container_box.appendChild(container_deviceslist);
+ container_wapper.appendChild(container_box);
+
+ return container_wapper;
+ },
+
+ renderUpdateData: function(data, leases) {
+
+ for(var item in data) {
+ if (/lan|br-lan/ig.test(data[item].ifname) && (typeof data[item].dev == 'object' && !data[item].dev.wireless)) {
+ var lan_device = data[item];
+ var ipv4addr = lan_device.dev.ipaddrs.toString().split('/');
+
+ this.params.lan.ipv4 = ipv4addr[0] || '?';
+ this.params.lan.ipv6 = ipv4addr[0] || '?';
+ this.params.lan.macaddr = lan_device.dev.macaddr || '00:00:00:00:00:00';
+ this.params.lan.rx_bytes = lan_device.dev.stats.rx_bytes ? '%.2mB'.format(lan_device.dev.stats.rx_bytes) : '-';
+ this.params.lan.tx_bytes = lan_device.dev.stats.tx_bytes ? '%.2mB'.format(lan_device.dev.stats.tx_bytes) : '-';
+ }
+ }
+
+ var devices = [];
+ leases.map(function(lease) {
+ devices[lease.expires] = {
+ hostname: lease.hostname || '?',
+ ipv4: lease.ipaddr || '-',
+ macaddr: lease.macaddr || '00:00:00:00:00:00',
+ };
+ });
+ this.params.lan.devices = devices;
+ },
+
+ renderLeases: function(data) {
+
+ var leases = Array.isArray(data[0].dhcp_leases) ? data[0].dhcp_leases : [];
+
+ this.params.lan = {
+ ipv4: {
+ title: _('IPv4'),
+ value: '?'
+ },
+
+ macaddr: {
+ title: _('Mac'),
+ value: '00:00:00:00:00:00'
+ },
+
+ rx_bytes: {
+ title: _('Upload'),
+ value: '-'
+ },
+
+ tx_bytes: {
+ title: _('Download'),
+ value: '-'
+ },
+
+ devices: {
+ title: _('Devices'),
+ value: []
+ }
+ };
+
+ this.renderUpdateData(data[1], leases);
+
+ return this.renderHtml();
+ },
+
+ render: function(data) {
+ if (L.hasSystemFeature('dnsmasq') || L.hasSystemFeature('odhcpd'))
+ return this.renderLeases(data);
+
+ return E([]);
+ }
+});
diff --git a/modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js b/modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js
new file mode 100644
index 0000000000..03c9ee6060
--- /dev/null
+++ b/modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js
@@ -0,0 +1,267 @@
+'use strict';
+'require baseclass';
+'require dom';
+'require network';
+'require rpc';
+
+return baseclass.extend({
+
+ title: _('Wireless'),
+
+ params: [],
+
+ load: function() {
+ return Promise.all([
+ network.getWifiDevices(),
+ network.getWifiNetworks(),
+ network.getHostHints()
+ ]).then(function(radios_networks_hints) {
+ var tasks = [];
+
+ for (var i = 0; i < radios_networks_hints[1].length; i++)
+ tasks.push(L.resolveDefault(radios_networks_hints[1][i].getAssocList(), []).then(L.bind(function(net, list) {
+ net.assoclist = list.sort(function(a, b) { return a.mac > b.mac });
+ }, this, radios_networks_hints[1][i])));
+
+ return Promise.all(tasks).then(function() {
+ return radios_networks_hints;
+ });
+ });
+ },
+
+ renderHtml: function() {
+
+ var container_wapper = E('div', { 'class': 'router-status-wifi dashboard-bg box-s1' });
+ var container_box = E('div', { 'class': 'wifi-info devices-list' });
+ var container_radio = E('div', { 'class': 'settings-info' });
+ var container_radio_item;
+
+ container_box.appendChild(E('div', { 'class': 'title'}, [
+ E('img', {
+ 'src': L.resource('view/dashboard/icons/wireless.svg'),
+ 'width': 55,
+ 'title': this.title,
+ 'class': 'middle'
+ }),
+ E('h3', this.title)
+ ]));
+
+ container_box.appendChild(E('hr'));
+
+ for (var i =0; i < this.params.wifi.radios.length; i++) {
+
+ container_radio_item = E('div', { 'class': 'radio-info' })
+
+ for(var idx in this.params.wifi.radios[i]) {
+ var classname = idx,
+ radio = this.params.wifi.radios[i];
+
+ if (!radio[idx].visible) {
+ continue;
+ }
+
+ if ('actived' === idx) {
+ classname = radio[idx].value ? 'label label-success' : 'label label-danger';
+ radio[idx].value = radio[idx].value ? _('yes') : _('no');
+ }
+
+ container_radio_item.appendChild(
+ E('p', {}, [
+ E('span', { 'class': ''}, [ radio[idx].title + ':']),
+ E('span', { 'class': classname }, [ radio[idx].value ]),
+ ])
+ );
+ }
+
+ container_radio.appendChild(container_radio_item);
+ }
+
+ container_box.appendChild(container_radio);
+
+ var container_devices = E('div', { 'class': 'table assoclist devices-info' }, [
+ E('div', { 'class': 'tr table-titles dashboard-bg' }, [
+ E('div', { 'class': 'th nowrap' }, _('Hostname')),
+ E('div', { 'class': 'th' }, _('Wireless')),
+ E('div', { 'class': 'th' }, _('Signal')),
+ E('div', { 'class': 'th' }, '%s / %s'.format( _('Up.'), _('Down.')))
+ ])
+ ]);
+
+ var container_devices_item;
+ var container_devices_list = E('div', { 'class': 'table assoclist devices-info' });
+
+ for (var i =0; i < this.params.wifi.devices.length; i++) {
+ container_devices_item = E('div', { 'class': 'tr cbi-rowstyle-1' });
+
+ for(var idx in this.params.wifi.devices[i]) {
+ var device = this.params.wifi.devices[i];
+
+ if (!device[idx].visible) {
+ continue;
+ }
+
+ var container_content;
+
+ if ('progress' == idx) {
+ container_content = E('div', { 'class' : 'td device-info' }, [
+ E('div', { 'class': 'progress' }, [
+ E('div', { 'class': 'progress-bar ' + device[idx].value.style, role: 'progressbar', style: 'width:'+device[idx].value.qualite+'%', 'aria-valuenow': device[idx].value.qualite, 'aria-valuemin': 0, 'aria-valuemax': 100 }),
+ ])
+ ]);
+ } else if ('rate' == idx) {
+ container_content = E('div', { 'class': 'td device-info' }, [
+ E('p', {}, [
+ E('span', { 'class': ''}, [ device[idx].value.rx ]),
+ E('br'),
+ E('span', { 'class': ''}, [ device[idx].value.tx ])
+ ])
+ ]);
+ } else {
+ container_content = E('div', { 'class': 'td device-info'}, [
+ E('p', {}, [
+ E('span', { 'class': ''}, [ device[idx].value ]),
+ ])
+ ]);
+ }
+
+ container_devices_item.appendChild(container_content);
+ }
+
+ container_devices_list.appendChild(container_devices_item);
+ }
+
+ container_devices.appendChild(container_devices_list);
+ container_box.appendChild(E('hr'));
+ container_box.appendChild(container_devices);
+ container_box.appendChild(container_devices_list);
+ container_wapper.appendChild(container_box);
+
+ return container_wapper;
+ },
+
+ renderUpdateData: function(radios, networks, hosthints) {
+
+ for (var i = 0; i < radios.sort(function(a, b) { a.getName() > b.getName() }).length; i++) {
+ var network_items = networks.filter(function(net) { return net.getWifiDeviceName() == radios[i].getName() });
+
+ for (var j = 0; j < network_items.length; j++) {
+ var net = network_items[j],
+ is_assoc = (net.getBSSID() != '00:00:00:00:00:00' && net.getChannel() && !net.isDisabled()),
+ chan = net.getChannel(),
+ freq = net.getFrequency(),
+ rate = net.getBitRate();
+
+ this.params.wifi.radios.push(
+ {
+ ssid : {
+ title: _('SSID'),
+ visible: true,
+ value: net.getActiveSSID() || '?'
+ },
+
+ actived : {
+ title: _('Active'),
+ visible: true,
+ value: !net.isDisabled()
+ },
+
+ chan : {
+ title: _('Channel'),
+ visible: true,
+ value: chan ? '%d (%.3f %s)'.format(chan, freq, _('GHz')) : '-'
+ },
+
+ rate : {
+ title: _('Bitrate'),
+ visible: true,
+ value: rate ? '%d %s'.format(rate, _('Mbit/s')) : '-'
+ },
+
+ bssid : {
+ title: _('BSSID'),
+ visible: true,
+ value: is_assoc ? (net.getActiveBSSID() || '-') : '-'
+ },
+
+ encryption : {
+ title: _('Encryption'),
+ visible: true,
+ value: is_assoc ? net.getActiveEncryption() : '-'
+ },
+
+ associations : {
+ title: _('Devices Connected'),
+ visible: true,
+ value: is_assoc ? (net.assoclist.length || '0') : 0
+ }
+ }
+ );
+ }
+ }
+
+ for (var i = 0; i < networks.length; i++) {
+ for (var k = 0; k < networks[i].assoclist.length; k++) {
+ var bss = networks[i].assoclist[k],
+ name = hosthints.getHostnameByMACAddr(bss.mac);
+
+ var progress_style;
+ var q = Math.min((bss.signal + 110) / 70 * 100, 100);
+
+ if (q == 0 || q < 25)
+ progress_style = 'bg-danger';
+ else if (q < 50)
+ progress_style = 'bg-warning';
+ else if (q < 75)
+ progress_style = 'bg-success';
+ else
+ progress_style = 'bg-success';
+
+ this.params.wifi.devices.push(
+ {
+ hostname : {
+ title: _('Hostname'),
+ visible: true,
+ value: name || '?'
+ },
+
+ ssid : {
+ title: _('SSID'),
+ visible: true,
+ value: networks[i].getActiveSSID()
+ },
+
+ progress : {
+ title: _('Channel'),
+ visible: true,
+ value: {
+ qualite: q,
+ style: progress_style
+ }
+ },
+
+ rate : {
+ title: _('Bitrate'),
+ visible: true,
+ value: {
+ rx: '%s'.format('%.2mB'.format(bss.rx.bytes)),
+ tx: '%s'.format('%.2mB'.format(bss.tx.bytes)),
+ }
+ }
+ }
+ );
+ }
+ }
+ },
+
+ render: function(data) {
+
+ this.params.wifi = {
+ radios: [],
+ devices: []
+ };
+
+ this.renderUpdateData(data[0], data[1], data[2]);
+
+ return this.renderHtml();
+ }
+});
diff --git a/modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/index.js b/modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/index.js
new file mode 100644
index 0000000000..c3e3b70271
--- /dev/null
+++ b/modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/index.js
@@ -0,0 +1,110 @@
+'use strict';
+'require view';
+'require dom';
+'require poll';
+'require fs';
+'require network';
+
+document.querySelector('head').appendChild(E('link', {
+ 'rel': 'stylesheet',
+ 'type': 'text/css',
+ 'href': L.resource('view/dashboard/css/custom.css')
+}));
+
+function invokeIncludesLoad(includes) {
+ var tasks = [], has_load = false;
+
+ for (var i = 0; i < includes.length; i++) {
+ if (typeof(includes[i].load) == 'function') {
+ tasks.push(includes[i].load().catch(L.bind(function() {
+ this.failed = true;
+ }, includes[i])));
+
+ has_load = true;
+ }
+ else {
+ tasks.push(null);
+ }
+ }
+
+ return has_load ? Promise.all(tasks) : Promise.resolve(null);
+}
+
+function startPolling(includes, containers) {
+ var step = function() {
+ return network.flushCache().then(function() {
+ return invokeIncludesLoad(includes);
+ }).then(function(results) {
+ for (var i = 0; i < includes.length; i++) {
+ var content = null;
+
+ if (includes[i].failed)
+ continue;
+
+ if (typeof(includes[i].render) == 'function')
+ content = includes[i].render(results ? results[i] : null);
+ else if (includes[i].content != null)
+ content = includes[i].content;
+
+ if (content != null) {
+
+ if (i > 1) {
+ dom.append(containers[1], content);
+ } else {
+ containers[i].parentNode.style.display = '';
+ containers[i].parentNode.classList.add('fade-in');
+ containers[i].parentNode.classList.add('Dashboard');
+ dom.content(containers[i], content);
+ }
+ }
+ }
+
+ var ssi = document.querySelector('div.includes');
+ if (ssi) {
+ ssi.style.display = '';
+ ssi.classList.add('fade-in');
+ }
+ });
+ };
+
+ return step().then(function() {
+ poll.add(step);
+ });
+}
+
+return view.extend({
+ load: function() {
+ return L.resolveDefault(fs.list('/www' + L.resource('view/dashboard/include')), []).then(function(entries) {
+ return Promise.all(entries.filter(function(e) {
+ return (e.type == 'file' && e.name.match(/\.js$/));
+ }).map(function(e) {
+ return 'view.dashboard.include.' + e.name.replace(/\.js$/, '');
+ }).sort().map(function(n) {
+ return L.require(n);
+ }));
+ });
+ },
+
+ render: function(includes) {
+ var rv = E([]), containers = [];
+
+ for (var i = 0; i < includes.length - 1; i++) {
+
+ var container = E('div', { 'class': 'section-content' });
+
+ rv.appendChild(E('div', { 'class': 'cbi-section-' + i, 'style': 'display:none' }, [
+ container
+ ]));
+
+ containers.push(container);
+ }
+
+ return startPolling(includes, containers).then(function() {
+ return rv;
+ });
+ },
+
+ handleSaveApply: null,
+ handleSave: null,
+ handleReset: null
+});
diff --git a/modules/luci-mod-dashboard/root/usr/share/luci/menu.d/luci-mod-dashboard.json b/modules/luci-mod-dashboard/root/usr/share/luci/menu.d/luci-mod-dashboard.json
new file mode 100644
index 0000000000..555884674d
--- /dev/null
+++ b/modules/luci-mod-dashboard/root/usr/share/luci/menu.d/luci-mod-dashboard.json
@@ -0,0 +1,13 @@
+{
+ "admin/dashboard": {
+ "title": "Dashboard",
+ "order": 1,
+ "action": {
+ "type": "view",
+ "path": "dashboard/index"
+ },
+ "depends": {
+ "acl": [ "luci-mod-dashboard-index" ]
+ }
+ }
+}
diff --git a/modules/luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json b/modules/luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json
new file mode 100644
index 0000000000..1f331e7b4b
--- /dev/null
+++ b/modules/luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json
@@ -0,0 +1,41 @@
+{
+ "luci-mod-dashboard-routes": {
+ "description": "Grant access to the system route status",
+ "read": {
+ "ubus": {
+ "file": [ "exec" ]
+ }
+ }
+ },
+
+ "luci-mod-dashboard-index": {
+ "description": "Grant access to main status display",
+ "read": {
+ "file": {
+ "/www/luci-static/resources/view/status/include": [ "list" ]
+ },
+ "ubus": {
+ "file": [ "list", "read" ],
+ "system": [ "board", "info" ]
+ }
+ }
+ },
+
+ "luci-mod-dashboard-index-dhcp": {
+ "description": "Grant access to DHCP status display",
+ "read": {
+ "ubus": {
+ "luci-rpc": [ "getDHCPLeases" ]
+ }
+ }
+ },
+
+ "luci-mod-dashboard-index-wifi": {
+ "description": "Grant access to wireless status display",
+ "read": {
+ "ubus": {
+ "iwinfo": [ "assoclist" ]
+ }
+ }
+ }
+}
diff --git a/protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js b/protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js
index 2c7f3cfe97..5c292af619 100644
--- a/protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js
+++ b/protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js
@@ -40,7 +40,7 @@ return network.registerProtocol('map', {
renderFormOptions: function(s) {
var o;
- o = s.taboption('general', form.ListValue, 'type', _('Type'));
+ o = s.taboption('general', form.ListValue, 'maptype', _('Type'));
o.value('map-e', 'MAP-E');
o.value('map-t', 'MAP-T');
o.value('lw4o6', 'LW4over6');